diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java index bb379bc..82e9634 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java @@ -14,9 +14,12 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; +import com.casic.missiles.modular.register.service.IIrisPersonService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Person; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; @@ -29,6 +32,8 @@ @Controller public class IrisOfflineController { + private static final Logger logger = LoggerFactory.getLogger(IrisOfflineController.class); + @Autowired private ICommonDeptService deptService; @Autowired @@ -39,6 +44,8 @@ private ICommonPersonService commonPersonService; @Autowired private IIrisPersonPhotoService personPhotoService; + @Autowired + private IIrisPersonService iIrisPersonService; @RequestMapping("/dept/listAll") @ResponseBody @@ -58,10 +65,12 @@ List personList = new ArrayList<>(); List irisList = new ArrayList<>(); List photoList = new ArrayList<>(); - List repeatList = new ArrayList<>(); + List irisRepeatList = new ArrayList<>(); + List codeRepeatList = new ArrayList<>(); List deptErrorList = new ArrayList<>(); List depts = deptService.getDeptByTips(null); + List personCodes = iIrisPersonService.personCodeList(); for (PersonUploadDTO uploadDTO : uploadList) { byte[] irisL1 = null; @@ -87,22 +96,39 @@ // 1.1 判重 Long recognize = iIrisDataService.recognize(irisL1,irisL2,irisR1,irisR2); if(recognize >= 0){ - repeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + irisRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); continue; } - // 1.2 验证组织机构 + // 1.2 验证组织机构,若组织机构不存在,提示不存在并 boolean deptValid = false; for (Dept dept : depts) { - if(dept.getId().equals(uploadDTO.getDeptId())){ + if(dept.getId().equals(Long.valueOf(uploadDTO.getDeptId()))){ deptValid = true; break; } } if(!deptValid){ deptErrorList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; } + // 1.3 验证人员编号 + if(ToolUtil.isNotEmpty(uploadDTO.getStaffNo())){ + boolean codeRepeat = false; + for (String personCode : personCodes) { + if(uploadDTO.getStaffNo().equals(personCode)){ + codeRepeat = true; + break; + } + } + if(codeRepeat){ + codeRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; + } + } + + // 2. 生成人员 Person person = new Person(); Long id = IdWorker.getId(); @@ -115,14 +141,14 @@ person.setIdCardNo(uploadDTO.getIdCardNo()); person.setName(uploadDTO.getName()); person.setSex(uploadDTO.getSex()); - // TODO 验证组织机构 person.setDeptid(Long.valueOf(uploadDTO.getDeptId())); - person.setNation(uploadDTO.getNationCode()); + person.setNation(uploadDTO.getNation()); if(ToolUtil.isNotEmpty(uploadDTO.getBirthday())){ person.setBirthday(DateUtil.parseDate(uploadDTO.getBirthday())); } person.setRemarks(uploadDTO.getRemarks()); - // TODO 采集类型 + // TODO 人员类型没有设。此项目人员类型为1-职员;0-访客; + // TODO 采集类型,目前未保存 Map mapExt = new HashMap<>(); mapExt.put("certificationUnit",uploadDTO.getCerAuth()); mapExt.put("address",uploadDTO.getAddr()); @@ -177,16 +203,23 @@ } if(ToolUtil.isNotEmpty(irisList)){ iIrisDataService.insertBatch(irisList); + Map res = iIrisDataService.sendMessage("update"); + if ((boolean)res.get("success")){ + logger.info("虹膜数据更新成功"); + }else{ + logger.error("虹膜数据更新失败"); + } } if(ToolUtil.isNotEmpty(photoList)) { personPhotoService.insertBatch(photoList); } - if(!ToolUtil.isAllEmpty(repeatList,deptErrorList)){ + if(!ToolUtil.isAllEmpty(irisRepeatList,codeRepeatList,deptErrorList)){ int code = 501; String msg = "上传失败"; Map data = new HashMap<>(); - data.put("repeatList",repeatList); + data.put("irisRepeatList",irisRepeatList); + data.put("codeRepeatList",codeRepeatList); data.put("deptErrorList",deptErrorList); return ResponseData.error(code,msg,data); }else{ diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java index bb379bc..82e9634 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java @@ -14,9 +14,12 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; +import com.casic.missiles.modular.register.service.IIrisPersonService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Person; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; @@ -29,6 +32,8 @@ @Controller public class IrisOfflineController { + private static final Logger logger = LoggerFactory.getLogger(IrisOfflineController.class); + @Autowired private ICommonDeptService deptService; @Autowired @@ -39,6 +44,8 @@ private ICommonPersonService commonPersonService; @Autowired private IIrisPersonPhotoService personPhotoService; + @Autowired + private IIrisPersonService iIrisPersonService; @RequestMapping("/dept/listAll") @ResponseBody @@ -58,10 +65,12 @@ List personList = new ArrayList<>(); List irisList = new ArrayList<>(); List photoList = new ArrayList<>(); - List repeatList = new ArrayList<>(); + List irisRepeatList = new ArrayList<>(); + List codeRepeatList = new ArrayList<>(); List deptErrorList = new ArrayList<>(); List depts = deptService.getDeptByTips(null); + List personCodes = iIrisPersonService.personCodeList(); for (PersonUploadDTO uploadDTO : uploadList) { byte[] irisL1 = null; @@ -87,22 +96,39 @@ // 1.1 判重 Long recognize = iIrisDataService.recognize(irisL1,irisL2,irisR1,irisR2); if(recognize >= 0){ - repeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + irisRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); continue; } - // 1.2 验证组织机构 + // 1.2 验证组织机构,若组织机构不存在,提示不存在并 boolean deptValid = false; for (Dept dept : depts) { - if(dept.getId().equals(uploadDTO.getDeptId())){ + if(dept.getId().equals(Long.valueOf(uploadDTO.getDeptId()))){ deptValid = true; break; } } if(!deptValid){ deptErrorList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; } + // 1.3 验证人员编号 + if(ToolUtil.isNotEmpty(uploadDTO.getStaffNo())){ + boolean codeRepeat = false; + for (String personCode : personCodes) { + if(uploadDTO.getStaffNo().equals(personCode)){ + codeRepeat = true; + break; + } + } + if(codeRepeat){ + codeRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; + } + } + + // 2. 生成人员 Person person = new Person(); Long id = IdWorker.getId(); @@ -115,14 +141,14 @@ person.setIdCardNo(uploadDTO.getIdCardNo()); person.setName(uploadDTO.getName()); person.setSex(uploadDTO.getSex()); - // TODO 验证组织机构 person.setDeptid(Long.valueOf(uploadDTO.getDeptId())); - person.setNation(uploadDTO.getNationCode()); + person.setNation(uploadDTO.getNation()); if(ToolUtil.isNotEmpty(uploadDTO.getBirthday())){ person.setBirthday(DateUtil.parseDate(uploadDTO.getBirthday())); } person.setRemarks(uploadDTO.getRemarks()); - // TODO 采集类型 + // TODO 人员类型没有设。此项目人员类型为1-职员;0-访客; + // TODO 采集类型,目前未保存 Map mapExt = new HashMap<>(); mapExt.put("certificationUnit",uploadDTO.getCerAuth()); mapExt.put("address",uploadDTO.getAddr()); @@ -177,16 +203,23 @@ } if(ToolUtil.isNotEmpty(irisList)){ iIrisDataService.insertBatch(irisList); + Map res = iIrisDataService.sendMessage("update"); + if ((boolean)res.get("success")){ + logger.info("虹膜数据更新成功"); + }else{ + logger.error("虹膜数据更新失败"); + } } if(ToolUtil.isNotEmpty(photoList)) { personPhotoService.insertBatch(photoList); } - if(!ToolUtil.isAllEmpty(repeatList,deptErrorList)){ + if(!ToolUtil.isAllEmpty(irisRepeatList,codeRepeatList,deptErrorList)){ int code = 501; String msg = "上传失败"; Map data = new HashMap<>(); - data.put("repeatList",repeatList); + data.put("irisRepeatList",irisRepeatList); + data.put("codeRepeatList",codeRepeatList); data.put("deptErrorList",deptErrorList); return ResponseData.error(code,msg,data); }else{ diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java new file mode 100644 index 0000000..9db5b1c --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface IrisPersonMapper { + + @Select("select person_code from sys_person where person_code is not null") + List personCodeList(); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java index bb379bc..82e9634 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java @@ -14,9 +14,12 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; +import com.casic.missiles.modular.register.service.IIrisPersonService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Person; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; @@ -29,6 +32,8 @@ @Controller public class IrisOfflineController { + private static final Logger logger = LoggerFactory.getLogger(IrisOfflineController.class); + @Autowired private ICommonDeptService deptService; @Autowired @@ -39,6 +44,8 @@ private ICommonPersonService commonPersonService; @Autowired private IIrisPersonPhotoService personPhotoService; + @Autowired + private IIrisPersonService iIrisPersonService; @RequestMapping("/dept/listAll") @ResponseBody @@ -58,10 +65,12 @@ List personList = new ArrayList<>(); List irisList = new ArrayList<>(); List photoList = new ArrayList<>(); - List repeatList = new ArrayList<>(); + List irisRepeatList = new ArrayList<>(); + List codeRepeatList = new ArrayList<>(); List deptErrorList = new ArrayList<>(); List depts = deptService.getDeptByTips(null); + List personCodes = iIrisPersonService.personCodeList(); for (PersonUploadDTO uploadDTO : uploadList) { byte[] irisL1 = null; @@ -87,22 +96,39 @@ // 1.1 判重 Long recognize = iIrisDataService.recognize(irisL1,irisL2,irisR1,irisR2); if(recognize >= 0){ - repeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + irisRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); continue; } - // 1.2 验证组织机构 + // 1.2 验证组织机构,若组织机构不存在,提示不存在并 boolean deptValid = false; for (Dept dept : depts) { - if(dept.getId().equals(uploadDTO.getDeptId())){ + if(dept.getId().equals(Long.valueOf(uploadDTO.getDeptId()))){ deptValid = true; break; } } if(!deptValid){ deptErrorList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; } + // 1.3 验证人员编号 + if(ToolUtil.isNotEmpty(uploadDTO.getStaffNo())){ + boolean codeRepeat = false; + for (String personCode : personCodes) { + if(uploadDTO.getStaffNo().equals(personCode)){ + codeRepeat = true; + break; + } + } + if(codeRepeat){ + codeRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; + } + } + + // 2. 生成人员 Person person = new Person(); Long id = IdWorker.getId(); @@ -115,14 +141,14 @@ person.setIdCardNo(uploadDTO.getIdCardNo()); person.setName(uploadDTO.getName()); person.setSex(uploadDTO.getSex()); - // TODO 验证组织机构 person.setDeptid(Long.valueOf(uploadDTO.getDeptId())); - person.setNation(uploadDTO.getNationCode()); + person.setNation(uploadDTO.getNation()); if(ToolUtil.isNotEmpty(uploadDTO.getBirthday())){ person.setBirthday(DateUtil.parseDate(uploadDTO.getBirthday())); } person.setRemarks(uploadDTO.getRemarks()); - // TODO 采集类型 + // TODO 人员类型没有设。此项目人员类型为1-职员;0-访客; + // TODO 采集类型,目前未保存 Map mapExt = new HashMap<>(); mapExt.put("certificationUnit",uploadDTO.getCerAuth()); mapExt.put("address",uploadDTO.getAddr()); @@ -177,16 +203,23 @@ } if(ToolUtil.isNotEmpty(irisList)){ iIrisDataService.insertBatch(irisList); + Map res = iIrisDataService.sendMessage("update"); + if ((boolean)res.get("success")){ + logger.info("虹膜数据更新成功"); + }else{ + logger.error("虹膜数据更新失败"); + } } if(ToolUtil.isNotEmpty(photoList)) { personPhotoService.insertBatch(photoList); } - if(!ToolUtil.isAllEmpty(repeatList,deptErrorList)){ + if(!ToolUtil.isAllEmpty(irisRepeatList,codeRepeatList,deptErrorList)){ int code = 501; String msg = "上传失败"; Map data = new HashMap<>(); - data.put("repeatList",repeatList); + data.put("irisRepeatList",irisRepeatList); + data.put("codeRepeatList",codeRepeatList); data.put("deptErrorList",deptErrorList); return ResponseData.error(code,msg,data); }else{ diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java new file mode 100644 index 0000000..9db5b1c --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface IrisPersonMapper { + + @Select("select person_code from sys_person where person_code is not null") + List personCodeList(); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java index 3275065..d449f5d 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java @@ -9,7 +9,7 @@ private String name; private String sex; private String deptId; - private String nationCode; + private String nation; private String birthday; private String cerAuth; private String addr; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java index bb379bc..82e9634 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java @@ -14,9 +14,12 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; +import com.casic.missiles.modular.register.service.IIrisPersonService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Person; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; @@ -29,6 +32,8 @@ @Controller public class IrisOfflineController { + private static final Logger logger = LoggerFactory.getLogger(IrisOfflineController.class); + @Autowired private ICommonDeptService deptService; @Autowired @@ -39,6 +44,8 @@ private ICommonPersonService commonPersonService; @Autowired private IIrisPersonPhotoService personPhotoService; + @Autowired + private IIrisPersonService iIrisPersonService; @RequestMapping("/dept/listAll") @ResponseBody @@ -58,10 +65,12 @@ List personList = new ArrayList<>(); List irisList = new ArrayList<>(); List photoList = new ArrayList<>(); - List repeatList = new ArrayList<>(); + List irisRepeatList = new ArrayList<>(); + List codeRepeatList = new ArrayList<>(); List deptErrorList = new ArrayList<>(); List depts = deptService.getDeptByTips(null); + List personCodes = iIrisPersonService.personCodeList(); for (PersonUploadDTO uploadDTO : uploadList) { byte[] irisL1 = null; @@ -87,22 +96,39 @@ // 1.1 判重 Long recognize = iIrisDataService.recognize(irisL1,irisL2,irisR1,irisR2); if(recognize >= 0){ - repeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + irisRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); continue; } - // 1.2 验证组织机构 + // 1.2 验证组织机构,若组织机构不存在,提示不存在并 boolean deptValid = false; for (Dept dept : depts) { - if(dept.getId().equals(uploadDTO.getDeptId())){ + if(dept.getId().equals(Long.valueOf(uploadDTO.getDeptId()))){ deptValid = true; break; } } if(!deptValid){ deptErrorList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; } + // 1.3 验证人员编号 + if(ToolUtil.isNotEmpty(uploadDTO.getStaffNo())){ + boolean codeRepeat = false; + for (String personCode : personCodes) { + if(uploadDTO.getStaffNo().equals(personCode)){ + codeRepeat = true; + break; + } + } + if(codeRepeat){ + codeRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; + } + } + + // 2. 生成人员 Person person = new Person(); Long id = IdWorker.getId(); @@ -115,14 +141,14 @@ person.setIdCardNo(uploadDTO.getIdCardNo()); person.setName(uploadDTO.getName()); person.setSex(uploadDTO.getSex()); - // TODO 验证组织机构 person.setDeptid(Long.valueOf(uploadDTO.getDeptId())); - person.setNation(uploadDTO.getNationCode()); + person.setNation(uploadDTO.getNation()); if(ToolUtil.isNotEmpty(uploadDTO.getBirthday())){ person.setBirthday(DateUtil.parseDate(uploadDTO.getBirthday())); } person.setRemarks(uploadDTO.getRemarks()); - // TODO 采集类型 + // TODO 人员类型没有设。此项目人员类型为1-职员;0-访客; + // TODO 采集类型,目前未保存 Map mapExt = new HashMap<>(); mapExt.put("certificationUnit",uploadDTO.getCerAuth()); mapExt.put("address",uploadDTO.getAddr()); @@ -177,16 +203,23 @@ } if(ToolUtil.isNotEmpty(irisList)){ iIrisDataService.insertBatch(irisList); + Map res = iIrisDataService.sendMessage("update"); + if ((boolean)res.get("success")){ + logger.info("虹膜数据更新成功"); + }else{ + logger.error("虹膜数据更新失败"); + } } if(ToolUtil.isNotEmpty(photoList)) { personPhotoService.insertBatch(photoList); } - if(!ToolUtil.isAllEmpty(repeatList,deptErrorList)){ + if(!ToolUtil.isAllEmpty(irisRepeatList,codeRepeatList,deptErrorList)){ int code = 501; String msg = "上传失败"; Map data = new HashMap<>(); - data.put("repeatList",repeatList); + data.put("irisRepeatList",irisRepeatList); + data.put("codeRepeatList",codeRepeatList); data.put("deptErrorList",deptErrorList); return ResponseData.error(code,msg,data); }else{ diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java new file mode 100644 index 0000000..9db5b1c --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface IrisPersonMapper { + + @Select("select person_code from sys_person where person_code is not null") + List personCodeList(); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java index 3275065..d449f5d 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java @@ -9,7 +9,7 @@ private String name; private String sex; private String deptId; - private String nationCode; + private String nation; private String birthday; private String cerAuth; private String addr; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index e384542..330fc7a 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -22,4 +22,6 @@ String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; Long recognize(byte[] irisL1,byte[] irisL2,byte[] irisR1,byte[] irisR2) throws IOException; + + Map sendMessage(String msg); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java index bb379bc..82e9634 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java @@ -14,9 +14,12 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; +import com.casic.missiles.modular.register.service.IIrisPersonService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Person; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; @@ -29,6 +32,8 @@ @Controller public class IrisOfflineController { + private static final Logger logger = LoggerFactory.getLogger(IrisOfflineController.class); + @Autowired private ICommonDeptService deptService; @Autowired @@ -39,6 +44,8 @@ private ICommonPersonService commonPersonService; @Autowired private IIrisPersonPhotoService personPhotoService; + @Autowired + private IIrisPersonService iIrisPersonService; @RequestMapping("/dept/listAll") @ResponseBody @@ -58,10 +65,12 @@ List personList = new ArrayList<>(); List irisList = new ArrayList<>(); List photoList = new ArrayList<>(); - List repeatList = new ArrayList<>(); + List irisRepeatList = new ArrayList<>(); + List codeRepeatList = new ArrayList<>(); List deptErrorList = new ArrayList<>(); List depts = deptService.getDeptByTips(null); + List personCodes = iIrisPersonService.personCodeList(); for (PersonUploadDTO uploadDTO : uploadList) { byte[] irisL1 = null; @@ -87,22 +96,39 @@ // 1.1 判重 Long recognize = iIrisDataService.recognize(irisL1,irisL2,irisR1,irisR2); if(recognize >= 0){ - repeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + irisRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); continue; } - // 1.2 验证组织机构 + // 1.2 验证组织机构,若组织机构不存在,提示不存在并 boolean deptValid = false; for (Dept dept : depts) { - if(dept.getId().equals(uploadDTO.getDeptId())){ + if(dept.getId().equals(Long.valueOf(uploadDTO.getDeptId()))){ deptValid = true; break; } } if(!deptValid){ deptErrorList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; } + // 1.3 验证人员编号 + if(ToolUtil.isNotEmpty(uploadDTO.getStaffNo())){ + boolean codeRepeat = false; + for (String personCode : personCodes) { + if(uploadDTO.getStaffNo().equals(personCode)){ + codeRepeat = true; + break; + } + } + if(codeRepeat){ + codeRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; + } + } + + // 2. 生成人员 Person person = new Person(); Long id = IdWorker.getId(); @@ -115,14 +141,14 @@ person.setIdCardNo(uploadDTO.getIdCardNo()); person.setName(uploadDTO.getName()); person.setSex(uploadDTO.getSex()); - // TODO 验证组织机构 person.setDeptid(Long.valueOf(uploadDTO.getDeptId())); - person.setNation(uploadDTO.getNationCode()); + person.setNation(uploadDTO.getNation()); if(ToolUtil.isNotEmpty(uploadDTO.getBirthday())){ person.setBirthday(DateUtil.parseDate(uploadDTO.getBirthday())); } person.setRemarks(uploadDTO.getRemarks()); - // TODO 采集类型 + // TODO 人员类型没有设。此项目人员类型为1-职员;0-访客; + // TODO 采集类型,目前未保存 Map mapExt = new HashMap<>(); mapExt.put("certificationUnit",uploadDTO.getCerAuth()); mapExt.put("address",uploadDTO.getAddr()); @@ -177,16 +203,23 @@ } if(ToolUtil.isNotEmpty(irisList)){ iIrisDataService.insertBatch(irisList); + Map res = iIrisDataService.sendMessage("update"); + if ((boolean)res.get("success")){ + logger.info("虹膜数据更新成功"); + }else{ + logger.error("虹膜数据更新失败"); + } } if(ToolUtil.isNotEmpty(photoList)) { personPhotoService.insertBatch(photoList); } - if(!ToolUtil.isAllEmpty(repeatList,deptErrorList)){ + if(!ToolUtil.isAllEmpty(irisRepeatList,codeRepeatList,deptErrorList)){ int code = 501; String msg = "上传失败"; Map data = new HashMap<>(); - data.put("repeatList",repeatList); + data.put("irisRepeatList",irisRepeatList); + data.put("codeRepeatList",codeRepeatList); data.put("deptErrorList",deptErrorList); return ResponseData.error(code,msg,data); }else{ diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java new file mode 100644 index 0000000..9db5b1c --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface IrisPersonMapper { + + @Select("select person_code from sys_person where person_code is not null") + List personCodeList(); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java index 3275065..d449f5d 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java @@ -9,7 +9,7 @@ private String name; private String sex; private String deptId; - private String nationCode; + private String nation; private String birthday; private String cerAuth; private String addr; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index e384542..330fc7a 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -22,4 +22,6 @@ String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; Long recognize(byte[] irisL1,byte[] irisL2,byte[] irisR1,byte[] irisR2) throws IOException; + + Map sendMessage(String msg); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java index 1c9226b..901773f 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java @@ -46,4 +46,6 @@ * @return 特殊考勤日集合 */ ResponseData parseSourceFile(MultipartFile file) throws Exception; + + List personCodeList(); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java index bb379bc..82e9634 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java @@ -14,9 +14,12 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; +import com.casic.missiles.modular.register.service.IIrisPersonService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Person; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; @@ -29,6 +32,8 @@ @Controller public class IrisOfflineController { + private static final Logger logger = LoggerFactory.getLogger(IrisOfflineController.class); + @Autowired private ICommonDeptService deptService; @Autowired @@ -39,6 +44,8 @@ private ICommonPersonService commonPersonService; @Autowired private IIrisPersonPhotoService personPhotoService; + @Autowired + private IIrisPersonService iIrisPersonService; @RequestMapping("/dept/listAll") @ResponseBody @@ -58,10 +65,12 @@ List personList = new ArrayList<>(); List irisList = new ArrayList<>(); List photoList = new ArrayList<>(); - List repeatList = new ArrayList<>(); + List irisRepeatList = new ArrayList<>(); + List codeRepeatList = new ArrayList<>(); List deptErrorList = new ArrayList<>(); List depts = deptService.getDeptByTips(null); + List personCodes = iIrisPersonService.personCodeList(); for (PersonUploadDTO uploadDTO : uploadList) { byte[] irisL1 = null; @@ -87,22 +96,39 @@ // 1.1 判重 Long recognize = iIrisDataService.recognize(irisL1,irisL2,irisR1,irisR2); if(recognize >= 0){ - repeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + irisRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); continue; } - // 1.2 验证组织机构 + // 1.2 验证组织机构,若组织机构不存在,提示不存在并 boolean deptValid = false; for (Dept dept : depts) { - if(dept.getId().equals(uploadDTO.getDeptId())){ + if(dept.getId().equals(Long.valueOf(uploadDTO.getDeptId()))){ deptValid = true; break; } } if(!deptValid){ deptErrorList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; } + // 1.3 验证人员编号 + if(ToolUtil.isNotEmpty(uploadDTO.getStaffNo())){ + boolean codeRepeat = false; + for (String personCode : personCodes) { + if(uploadDTO.getStaffNo().equals(personCode)){ + codeRepeat = true; + break; + } + } + if(codeRepeat){ + codeRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; + } + } + + // 2. 生成人员 Person person = new Person(); Long id = IdWorker.getId(); @@ -115,14 +141,14 @@ person.setIdCardNo(uploadDTO.getIdCardNo()); person.setName(uploadDTO.getName()); person.setSex(uploadDTO.getSex()); - // TODO 验证组织机构 person.setDeptid(Long.valueOf(uploadDTO.getDeptId())); - person.setNation(uploadDTO.getNationCode()); + person.setNation(uploadDTO.getNation()); if(ToolUtil.isNotEmpty(uploadDTO.getBirthday())){ person.setBirthday(DateUtil.parseDate(uploadDTO.getBirthday())); } person.setRemarks(uploadDTO.getRemarks()); - // TODO 采集类型 + // TODO 人员类型没有设。此项目人员类型为1-职员;0-访客; + // TODO 采集类型,目前未保存 Map mapExt = new HashMap<>(); mapExt.put("certificationUnit",uploadDTO.getCerAuth()); mapExt.put("address",uploadDTO.getAddr()); @@ -177,16 +203,23 @@ } if(ToolUtil.isNotEmpty(irisList)){ iIrisDataService.insertBatch(irisList); + Map res = iIrisDataService.sendMessage("update"); + if ((boolean)res.get("success")){ + logger.info("虹膜数据更新成功"); + }else{ + logger.error("虹膜数据更新失败"); + } } if(ToolUtil.isNotEmpty(photoList)) { personPhotoService.insertBatch(photoList); } - if(!ToolUtil.isAllEmpty(repeatList,deptErrorList)){ + if(!ToolUtil.isAllEmpty(irisRepeatList,codeRepeatList,deptErrorList)){ int code = 501; String msg = "上传失败"; Map data = new HashMap<>(); - data.put("repeatList",repeatList); + data.put("irisRepeatList",irisRepeatList); + data.put("codeRepeatList",codeRepeatList); data.put("deptErrorList",deptErrorList); return ResponseData.error(code,msg,data); }else{ diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java new file mode 100644 index 0000000..9db5b1c --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface IrisPersonMapper { + + @Select("select person_code from sys_person where person_code is not null") + List personCodeList(); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java index 3275065..d449f5d 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java @@ -9,7 +9,7 @@ private String name; private String sex; private String deptId; - private String nationCode; + private String nation; private String birthday; private String cerAuth; private String addr; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index e384542..330fc7a 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -22,4 +22,6 @@ String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; Long recognize(byte[] irisL1,byte[] irisL2,byte[] irisR1,byte[] irisR2) throws IOException; + + Map sendMessage(String msg); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java index 1c9226b..901773f 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java @@ -46,4 +46,6 @@ * @return 特殊考勤日集合 */ ResponseData parseSourceFile(MultipartFile file) throws Exception; + + List personCodeList(); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java index 71ba6a8..f32db37 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -116,6 +116,39 @@ return -1L; } + @Override + public Map sendMessage(String msg){ + Map res = new HashMap<>(); + try{ + Socket socket = new Socket(recServiceHost, recServicePort); + // 向服务端发送数据 + OutputStream out = socket.getOutputStream(); + out.write(msg.getBytes("utf-8")); + out.flush(); + socket.shutdownOutput(); + // 读取服务端返回数据 + InputStream in = socket.getInputStream(); + byte[] data = new byte[1024]; + int count = in.read(data); + if(count>0){ + String serverData = new String(data,0,count,"utf-8"); + System.out.println(serverData); + res.put("success",true); + res.put("message","请求成功"); + }else { + res.put("success",false); + res.put("message","没有响应"); + } + in.close(); + out.close(); + socket.close(); + }catch (Exception e){ + res.put("success",false); + res.put("message","连接失败"); + } + return res; + } + //与c#的服务通信,获取虹膜编码 public byte[] getIrisCode(InputStream fis) throws IOException { byte[] irisCode = new byte[1024]; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java index bb379bc..82e9634 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java @@ -14,9 +14,12 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; +import com.casic.missiles.modular.register.service.IIrisPersonService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Person; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; @@ -29,6 +32,8 @@ @Controller public class IrisOfflineController { + private static final Logger logger = LoggerFactory.getLogger(IrisOfflineController.class); + @Autowired private ICommonDeptService deptService; @Autowired @@ -39,6 +44,8 @@ private ICommonPersonService commonPersonService; @Autowired private IIrisPersonPhotoService personPhotoService; + @Autowired + private IIrisPersonService iIrisPersonService; @RequestMapping("/dept/listAll") @ResponseBody @@ -58,10 +65,12 @@ List personList = new ArrayList<>(); List irisList = new ArrayList<>(); List photoList = new ArrayList<>(); - List repeatList = new ArrayList<>(); + List irisRepeatList = new ArrayList<>(); + List codeRepeatList = new ArrayList<>(); List deptErrorList = new ArrayList<>(); List depts = deptService.getDeptByTips(null); + List personCodes = iIrisPersonService.personCodeList(); for (PersonUploadDTO uploadDTO : uploadList) { byte[] irisL1 = null; @@ -87,22 +96,39 @@ // 1.1 判重 Long recognize = iIrisDataService.recognize(irisL1,irisL2,irisR1,irisR2); if(recognize >= 0){ - repeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + irisRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); continue; } - // 1.2 验证组织机构 + // 1.2 验证组织机构,若组织机构不存在,提示不存在并 boolean deptValid = false; for (Dept dept : depts) { - if(dept.getId().equals(uploadDTO.getDeptId())){ + if(dept.getId().equals(Long.valueOf(uploadDTO.getDeptId()))){ deptValid = true; break; } } if(!deptValid){ deptErrorList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; } + // 1.3 验证人员编号 + if(ToolUtil.isNotEmpty(uploadDTO.getStaffNo())){ + boolean codeRepeat = false; + for (String personCode : personCodes) { + if(uploadDTO.getStaffNo().equals(personCode)){ + codeRepeat = true; + break; + } + } + if(codeRepeat){ + codeRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; + } + } + + // 2. 生成人员 Person person = new Person(); Long id = IdWorker.getId(); @@ -115,14 +141,14 @@ person.setIdCardNo(uploadDTO.getIdCardNo()); person.setName(uploadDTO.getName()); person.setSex(uploadDTO.getSex()); - // TODO 验证组织机构 person.setDeptid(Long.valueOf(uploadDTO.getDeptId())); - person.setNation(uploadDTO.getNationCode()); + person.setNation(uploadDTO.getNation()); if(ToolUtil.isNotEmpty(uploadDTO.getBirthday())){ person.setBirthday(DateUtil.parseDate(uploadDTO.getBirthday())); } person.setRemarks(uploadDTO.getRemarks()); - // TODO 采集类型 + // TODO 人员类型没有设。此项目人员类型为1-职员;0-访客; + // TODO 采集类型,目前未保存 Map mapExt = new HashMap<>(); mapExt.put("certificationUnit",uploadDTO.getCerAuth()); mapExt.put("address",uploadDTO.getAddr()); @@ -177,16 +203,23 @@ } if(ToolUtil.isNotEmpty(irisList)){ iIrisDataService.insertBatch(irisList); + Map res = iIrisDataService.sendMessage("update"); + if ((boolean)res.get("success")){ + logger.info("虹膜数据更新成功"); + }else{ + logger.error("虹膜数据更新失败"); + } } if(ToolUtil.isNotEmpty(photoList)) { personPhotoService.insertBatch(photoList); } - if(!ToolUtil.isAllEmpty(repeatList,deptErrorList)){ + if(!ToolUtil.isAllEmpty(irisRepeatList,codeRepeatList,deptErrorList)){ int code = 501; String msg = "上传失败"; Map data = new HashMap<>(); - data.put("repeatList",repeatList); + data.put("irisRepeatList",irisRepeatList); + data.put("codeRepeatList",codeRepeatList); data.put("deptErrorList",deptErrorList); return ResponseData.error(code,msg,data); }else{ diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java new file mode 100644 index 0000000..9db5b1c --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface IrisPersonMapper { + + @Select("select person_code from sys_person where person_code is not null") + List personCodeList(); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java index 3275065..d449f5d 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java @@ -9,7 +9,7 @@ private String name; private String sex; private String deptId; - private String nationCode; + private String nation; private String birthday; private String cerAuth; private String addr; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index e384542..330fc7a 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -22,4 +22,6 @@ String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; Long recognize(byte[] irisL1,byte[] irisL2,byte[] irisR1,byte[] irisR2) throws IOException; + + Map sendMessage(String msg); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java index 1c9226b..901773f 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java @@ -46,4 +46,6 @@ * @return 特殊考勤日集合 */ ResponseData parseSourceFile(MultipartFile file) throws Exception; + + List personCodeList(); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java index 71ba6a8..f32db37 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -116,6 +116,39 @@ return -1L; } + @Override + public Map sendMessage(String msg){ + Map res = new HashMap<>(); + try{ + Socket socket = new Socket(recServiceHost, recServicePort); + // 向服务端发送数据 + OutputStream out = socket.getOutputStream(); + out.write(msg.getBytes("utf-8")); + out.flush(); + socket.shutdownOutput(); + // 读取服务端返回数据 + InputStream in = socket.getInputStream(); + byte[] data = new byte[1024]; + int count = in.read(data); + if(count>0){ + String serverData = new String(data,0,count,"utf-8"); + System.out.println(serverData); + res.put("success",true); + res.put("message","请求成功"); + }else { + res.put("success",false); + res.put("message","没有响应"); + } + in.close(); + out.close(); + socket.close(); + }catch (Exception e){ + res.put("success",false); + res.put("message","连接失败"); + } + return res; + } + //与c#的服务通信,获取虹膜编码 public byte[] getIrisCode(InputStream fis) throws IOException { byte[] irisCode = new byte[1024]; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java index f896e50..3abf923 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.metadata.service.IMetadataSupportService; import com.casic.missiles.modular.register.constant.IrisPersonConst; import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.dao.IrisPersonMapper; import com.casic.missiles.modular.register.dto.PersonAtdDTO; import com.casic.missiles.modular.register.enums.PersonTypeEnums; import com.casic.missiles.modular.register.service.IIrisDataService; @@ -36,6 +37,7 @@ import org.springframework.web.multipart.MultipartFile; import org.hswebframework.expands.office.excel.ExcelIO; +import javax.annotation.Resource; import java.io.InputStream; import java.io.Serializable; import java.sql.Date; @@ -74,6 +76,8 @@ private IIrisPersonService irisPersonService; @Autowired private ICommonDeptService commonDeptService; + @Resource + private IrisPersonMapper irisPersonMapper; @Transactional(rollbackFor = Exception.class) @@ -280,4 +284,9 @@ } map.put(IrisPersonConst.PERSON_CREATETIME_KEY, DateUtil.format((Timestamp) map.get(IrisPersonConst.PERSON_CREATETIME_KEY), "yyyy-MM-dd HH:mm:ss")); } + + @Override + public List personCodeList() { + return irisPersonMapper.personCodeList(); + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java index bb379bc..82e9634 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisOfflineController.java @@ -14,9 +14,12 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; +import com.casic.missiles.modular.register.service.IIrisPersonService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Person; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; @@ -29,6 +32,8 @@ @Controller public class IrisOfflineController { + private static final Logger logger = LoggerFactory.getLogger(IrisOfflineController.class); + @Autowired private ICommonDeptService deptService; @Autowired @@ -39,6 +44,8 @@ private ICommonPersonService commonPersonService; @Autowired private IIrisPersonPhotoService personPhotoService; + @Autowired + private IIrisPersonService iIrisPersonService; @RequestMapping("/dept/listAll") @ResponseBody @@ -58,10 +65,12 @@ List personList = new ArrayList<>(); List irisList = new ArrayList<>(); List photoList = new ArrayList<>(); - List repeatList = new ArrayList<>(); + List irisRepeatList = new ArrayList<>(); + List codeRepeatList = new ArrayList<>(); List deptErrorList = new ArrayList<>(); List depts = deptService.getDeptByTips(null); + List personCodes = iIrisPersonService.personCodeList(); for (PersonUploadDTO uploadDTO : uploadList) { byte[] irisL1 = null; @@ -87,22 +96,39 @@ // 1.1 判重 Long recognize = iIrisDataService.recognize(irisL1,irisL2,irisR1,irisR2); if(recognize >= 0){ - repeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + irisRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); continue; } - // 1.2 验证组织机构 + // 1.2 验证组织机构,若组织机构不存在,提示不存在并 boolean deptValid = false; for (Dept dept : depts) { - if(dept.getId().equals(uploadDTO.getDeptId())){ + if(dept.getId().equals(Long.valueOf(uploadDTO.getDeptId()))){ deptValid = true; break; } } if(!deptValid){ deptErrorList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; } + // 1.3 验证人员编号 + if(ToolUtil.isNotEmpty(uploadDTO.getStaffNo())){ + boolean codeRepeat = false; + for (String personCode : personCodes) { + if(uploadDTO.getStaffNo().equals(personCode)){ + codeRepeat = true; + break; + } + } + if(codeRepeat){ + codeRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; + } + } + + // 2. 生成人员 Person person = new Person(); Long id = IdWorker.getId(); @@ -115,14 +141,14 @@ person.setIdCardNo(uploadDTO.getIdCardNo()); person.setName(uploadDTO.getName()); person.setSex(uploadDTO.getSex()); - // TODO 验证组织机构 person.setDeptid(Long.valueOf(uploadDTO.getDeptId())); - person.setNation(uploadDTO.getNationCode()); + person.setNation(uploadDTO.getNation()); if(ToolUtil.isNotEmpty(uploadDTO.getBirthday())){ person.setBirthday(DateUtil.parseDate(uploadDTO.getBirthday())); } person.setRemarks(uploadDTO.getRemarks()); - // TODO 采集类型 + // TODO 人员类型没有设。此项目人员类型为1-职员;0-访客; + // TODO 采集类型,目前未保存 Map mapExt = new HashMap<>(); mapExt.put("certificationUnit",uploadDTO.getCerAuth()); mapExt.put("address",uploadDTO.getAddr()); @@ -177,16 +203,23 @@ } if(ToolUtil.isNotEmpty(irisList)){ iIrisDataService.insertBatch(irisList); + Map res = iIrisDataService.sendMessage("update"); + if ((boolean)res.get("success")){ + logger.info("虹膜数据更新成功"); + }else{ + logger.error("虹膜数据更新失败"); + } } if(ToolUtil.isNotEmpty(photoList)) { personPhotoService.insertBatch(photoList); } - if(!ToolUtil.isAllEmpty(repeatList,deptErrorList)){ + if(!ToolUtil.isAllEmpty(irisRepeatList,codeRepeatList,deptErrorList)){ int code = 501; String msg = "上传失败"; Map data = new HashMap<>(); - data.put("repeatList",repeatList); + data.put("irisRepeatList",irisRepeatList); + data.put("codeRepeatList",codeRepeatList); data.put("deptErrorList",deptErrorList); return ResponseData.error(code,msg,data); }else{ diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java new file mode 100644 index 0000000..9db5b1c --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisPersonMapper.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface IrisPersonMapper { + + @Select("select person_code from sys_person where person_code is not null") + List personCodeList(); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java index 3275065..d449f5d 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dto/PersonUploadDTO.java @@ -9,7 +9,7 @@ private String name; private String sex; private String deptId; - private String nationCode; + private String nation; private String birthday; private String cerAuth; private String addr; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index e384542..330fc7a 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -22,4 +22,6 @@ String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; Long recognize(byte[] irisL1,byte[] irisL2,byte[] irisR1,byte[] irisR2) throws IOException; + + Map sendMessage(String msg); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java index 1c9226b..901773f 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java @@ -46,4 +46,6 @@ * @return 特殊考勤日集合 */ ResponseData parseSourceFile(MultipartFile file) throws Exception; + + List personCodeList(); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java index 71ba6a8..f32db37 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -116,6 +116,39 @@ return -1L; } + @Override + public Map sendMessage(String msg){ + Map res = new HashMap<>(); + try{ + Socket socket = new Socket(recServiceHost, recServicePort); + // 向服务端发送数据 + OutputStream out = socket.getOutputStream(); + out.write(msg.getBytes("utf-8")); + out.flush(); + socket.shutdownOutput(); + // 读取服务端返回数据 + InputStream in = socket.getInputStream(); + byte[] data = new byte[1024]; + int count = in.read(data); + if(count>0){ + String serverData = new String(data,0,count,"utf-8"); + System.out.println(serverData); + res.put("success",true); + res.put("message","请求成功"); + }else { + res.put("success",false); + res.put("message","没有响应"); + } + in.close(); + out.close(); + socket.close(); + }catch (Exception e){ + res.put("success",false); + res.put("message","连接失败"); + } + return res; + } + //与c#的服务通信,获取虹膜编码 public byte[] getIrisCode(InputStream fis) throws IOException { byte[] irisCode = new byte[1024]; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java index f896e50..3abf923 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.metadata.service.IMetadataSupportService; import com.casic.missiles.modular.register.constant.IrisPersonConst; import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.dao.IrisPersonMapper; import com.casic.missiles.modular.register.dto.PersonAtdDTO; import com.casic.missiles.modular.register.enums.PersonTypeEnums; import com.casic.missiles.modular.register.service.IIrisDataService; @@ -36,6 +37,7 @@ import org.springframework.web.multipart.MultipartFile; import org.hswebframework.expands.office.excel.ExcelIO; +import javax.annotation.Resource; import java.io.InputStream; import java.io.Serializable; import java.sql.Date; @@ -74,6 +76,8 @@ private IIrisPersonService irisPersonService; @Autowired private ICommonDeptService commonDeptService; + @Resource + private IrisPersonMapper irisPersonMapper; @Transactional(rollbackFor = Exception.class) @@ -280,4 +284,9 @@ } map.put(IrisPersonConst.PERSON_CREATETIME_KEY, DateUtil.format((Timestamp) map.get(IrisPersonConst.PERSON_CREATETIME_KEY), "yyyy-MM-dd HH:mm:ss")); } + + @Override + public List personCodeList() { + return irisPersonMapper.personCodeList(); + } } diff --git a/casic-web/src/main/resources/config/application-prod.yml b/casic-web/src/main/resources/config/application-prod.yml index 3feb877..971b0cf 100644 --- a/casic-web/src/main/resources/config/application-prod.yml +++ b/casic-web/src/main/resources/config/application-prod.yml @@ -11,7 +11,7 @@ #flowable数据源和多数据源配置 casic: kaptcha-open: false #是否开启登录时验证码 (true/false) - nologin-urls: /user/login,/user/appLogin,/kaptcha,/config/baseConfig,/route/mockToken,/process/processDiagram,/dept/listAll,/device/receiveMsg + nologin-urls: /user/login,/user/appLogin,/kaptcha,/config/baseConfig,/route/mockToken,/process/processDiagram,/dept/listAll,/device/receiveMsg,/person/uploadPerson export-temp-path: D:\java\boot\casic-web-1.0.0-SNAPSHOT\export\ iris: recServiceHost: localhost