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 82e9634..d3f9b9d 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 @@ -13,20 +13,26 @@ import com.casic.missiles.modular.register.model.IrisData; import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; +import com.casic.missiles.modular.register.service.IIrisOfflineService; 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 com.mysql.jdbc.util.Base64Decoder; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import sun.misc.BASE64Decoder; +import java.io.ByteArrayInputStream; +import java.io.FileInputStream; import java.io.IOException; import java.util.*; @@ -46,6 +52,10 @@ private IIrisPersonPhotoService personPhotoService; @Autowired private IIrisPersonService iIrisPersonService; + @Autowired + private IIrisOfflineService iIrisOfflineService; + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; @RequestMapping("/dept/listAll") @ResponseBody @@ -60,158 +70,18 @@ @RequestMapping("/person/uploadPerson") @ResponseBody - @Transactional(rollbackFor = Exception.class) public Object uploadPerson(@RequestBody List uploadList) throws IOException { - List personList = new ArrayList<>(); - List irisList = new ArrayList<>(); - List photoList = new ArrayList<>(); - List irisRepeatList = new ArrayList<>(); - List codeRepeatList = new ArrayList<>(); - List deptErrorList = new ArrayList<>(); - List depts = deptService.getDeptByTips(null); - List personCodes = iIrisPersonService.personCodeList(); + Map> res = iIrisOfflineService.uploadPerson(uploadList); + List irisRepeatList = res.get("irisRepeatList"); + List codeRepeatList = res.get("codeRepeatList"); + List deptErrorList = res.get("deptErrorList"); - for (PersonUploadDTO uploadDTO : uploadList) { - byte[] irisL1 = null; - if(ToolUtil.isNotEmpty(uploadDTO.getIrisL1())) { - irisL1 = Base64.getDecoder().decode(uploadDTO.getIrisL1()); - } - - byte[] irisL2 = null; - if(ToolUtil.isNotEmpty(uploadDTO.getIrisL2())) { - irisL2 = Base64.getDecoder().decode(uploadDTO.getIrisL2()); - } - - byte[] irisR1 = null; - if(ToolUtil.isNotEmpty(uploadDTO.getIrisR1())) { - irisR1 = Base64.getDecoder().decode(uploadDTO.getIrisR1()); - } - - byte[] irisR2 = null; - if(ToolUtil.isNotEmpty(uploadDTO.getIrisR2())) { - irisR2 = Base64.getDecoder().decode(uploadDTO.getIrisR2()); - } - - // 1.1 判重 - Long recognize = iIrisDataService.recognize(irisL1,irisL2,irisR1,irisR2); - if(recognize >= 0){ - irisRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); - continue; - } - - // 1.2 验证组织机构,若组织机构不存在,提示不存在并 - boolean deptValid = false; - for (Dept dept : depts) { - 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(); - person.setId(id); - if(ToolUtil.isNotEmpty(uploadDTO.getStaffNo())){ - person.setPersonCode(uploadDTO.getStaffNo()); - }else { - person.setPersonCode(String.valueOf(id)); - } - person.setIdCardNo(uploadDTO.getIdCardNo()); - person.setName(uploadDTO.getName()); - person.setSex(uploadDTO.getSex()); - person.setDeptid(Long.valueOf(uploadDTO.getDeptId())); - person.setNation(uploadDTO.getNation()); - if(ToolUtil.isNotEmpty(uploadDTO.getBirthday())){ - person.setBirthday(DateUtil.parseDate(uploadDTO.getBirthday())); - } - person.setRemarks(uploadDTO.getRemarks()); - // TODO 人员类型没有设。此项目人员类型为1-职员;0-访客; - // TODO 采集类型,目前未保存 - Map mapExt = new HashMap<>(); - mapExt.put("certificationUnit",uploadDTO.getCerAuth()); - mapExt.put("address",uploadDTO.getAddr()); - person.setExt(mapExt); - if(ToolUtil.isNotEmpty(uploadDTO.getPhotoData())){ - String photoPath = fileService.saveFileBase64Image(uploadDTO.getPhotoData()); - person.setPhoto(photoPath); - } - personList.add(person); - - // 3.生成虹膜 - IrisData irisData = new IrisData(); - irisData.setPersonId(id); - irisData.setIdCardNo(uploadDTO.getIdCardNo()); - irisData.setLeftIrisCode1(irisL1); - irisData.setLeftIrisCode2(irisL2); - irisData.setRightIrisCode1(irisR1); - irisData.setRightIrisCode2(irisR2); - String imageL1Path = null; - if(ToolUtil.isNotEmpty(uploadDTO.getImageL1Data())){ - imageL1Path = fileService.saveFileBase64Image(uploadDTO.getImageL1Data()); - } - irisData.setLeftImage1(imageL1Path); - String imageL2Path = null; - if(ToolUtil.isNotEmpty(uploadDTO.getImageL2Data())){ - imageL2Path = fileService.saveFileBase64Image(uploadDTO.getImageL2Data()); - } - irisData.setLeftImage2(imageL2Path); - String imageR1Path = null; - if(ToolUtil.isNotEmpty(uploadDTO.getImageR1Data())){ - imageR1Path = fileService.saveFileBase64Image(uploadDTO.getImageR1Data()); - } - irisData.setRightImage1(imageR1Path); - String imageR2Path = null; - if(ToolUtil.isNotEmpty(uploadDTO.getImageR2Data())){ - imageR2Path = fileService.saveFileBase64Image(uploadDTO.getImageR2Data()); - } - irisData.setRightImage2(imageR2Path); - irisList.add(irisData); - - // 4. 生成照片 - if(ToolUtil.isNotEmpty(uploadDTO.getPhotoData())) { - IrisPersonPhoto irisPersonPhoto = new IrisPersonPhoto(); - irisPersonPhoto.setPersonId(id); - irisPersonPhoto.setPhotoData(uploadDTO.getPhotoData()); - photoList.add(irisPersonPhoto); - } - } - - if(ToolUtil.isNotEmpty(personList)){ - commonPersonService.addPersons(personList); - } - 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); + Map update = iIrisDataService.sendMessage("update"); + if ((boolean)update.get("success")){ + logger.info("虹膜数据更新成功"); + }else{ + logger.error("虹膜数据更新失败"); } if(!ToolUtil.isAllEmpty(irisRepeatList,codeRepeatList,deptErrorList)){ 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 82e9634..d3f9b9d 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 @@ -13,20 +13,26 @@ import com.casic.missiles.modular.register.model.IrisData; import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; +import com.casic.missiles.modular.register.service.IIrisOfflineService; 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 com.mysql.jdbc.util.Base64Decoder; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import sun.misc.BASE64Decoder; +import java.io.ByteArrayInputStream; +import java.io.FileInputStream; import java.io.IOException; import java.util.*; @@ -46,6 +52,10 @@ private IIrisPersonPhotoService personPhotoService; @Autowired private IIrisPersonService iIrisPersonService; + @Autowired + private IIrisOfflineService iIrisOfflineService; + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; @RequestMapping("/dept/listAll") @ResponseBody @@ -60,158 +70,18 @@ @RequestMapping("/person/uploadPerson") @ResponseBody - @Transactional(rollbackFor = Exception.class) public Object uploadPerson(@RequestBody List uploadList) throws IOException { - List personList = new ArrayList<>(); - List irisList = new ArrayList<>(); - List photoList = new ArrayList<>(); - List irisRepeatList = new ArrayList<>(); - List codeRepeatList = new ArrayList<>(); - List deptErrorList = new ArrayList<>(); - List depts = deptService.getDeptByTips(null); - List personCodes = iIrisPersonService.personCodeList(); + Map> res = iIrisOfflineService.uploadPerson(uploadList); + List irisRepeatList = res.get("irisRepeatList"); + List codeRepeatList = res.get("codeRepeatList"); + List deptErrorList = res.get("deptErrorList"); - for (PersonUploadDTO uploadDTO : uploadList) { - byte[] irisL1 = null; - if(ToolUtil.isNotEmpty(uploadDTO.getIrisL1())) { - irisL1 = Base64.getDecoder().decode(uploadDTO.getIrisL1()); - } - - byte[] irisL2 = null; - if(ToolUtil.isNotEmpty(uploadDTO.getIrisL2())) { - irisL2 = Base64.getDecoder().decode(uploadDTO.getIrisL2()); - } - - byte[] irisR1 = null; - if(ToolUtil.isNotEmpty(uploadDTO.getIrisR1())) { - irisR1 = Base64.getDecoder().decode(uploadDTO.getIrisR1()); - } - - byte[] irisR2 = null; - if(ToolUtil.isNotEmpty(uploadDTO.getIrisR2())) { - irisR2 = Base64.getDecoder().decode(uploadDTO.getIrisR2()); - } - - // 1.1 判重 - Long recognize = iIrisDataService.recognize(irisL1,irisL2,irisR1,irisR2); - if(recognize >= 0){ - irisRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); - continue; - } - - // 1.2 验证组织机构,若组织机构不存在,提示不存在并 - boolean deptValid = false; - for (Dept dept : depts) { - 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(); - person.setId(id); - if(ToolUtil.isNotEmpty(uploadDTO.getStaffNo())){ - person.setPersonCode(uploadDTO.getStaffNo()); - }else { - person.setPersonCode(String.valueOf(id)); - } - person.setIdCardNo(uploadDTO.getIdCardNo()); - person.setName(uploadDTO.getName()); - person.setSex(uploadDTO.getSex()); - person.setDeptid(Long.valueOf(uploadDTO.getDeptId())); - person.setNation(uploadDTO.getNation()); - if(ToolUtil.isNotEmpty(uploadDTO.getBirthday())){ - person.setBirthday(DateUtil.parseDate(uploadDTO.getBirthday())); - } - person.setRemarks(uploadDTO.getRemarks()); - // TODO 人员类型没有设。此项目人员类型为1-职员;0-访客; - // TODO 采集类型,目前未保存 - Map mapExt = new HashMap<>(); - mapExt.put("certificationUnit",uploadDTO.getCerAuth()); - mapExt.put("address",uploadDTO.getAddr()); - person.setExt(mapExt); - if(ToolUtil.isNotEmpty(uploadDTO.getPhotoData())){ - String photoPath = fileService.saveFileBase64Image(uploadDTO.getPhotoData()); - person.setPhoto(photoPath); - } - personList.add(person); - - // 3.生成虹膜 - IrisData irisData = new IrisData(); - irisData.setPersonId(id); - irisData.setIdCardNo(uploadDTO.getIdCardNo()); - irisData.setLeftIrisCode1(irisL1); - irisData.setLeftIrisCode2(irisL2); - irisData.setRightIrisCode1(irisR1); - irisData.setRightIrisCode2(irisR2); - String imageL1Path = null; - if(ToolUtil.isNotEmpty(uploadDTO.getImageL1Data())){ - imageL1Path = fileService.saveFileBase64Image(uploadDTO.getImageL1Data()); - } - irisData.setLeftImage1(imageL1Path); - String imageL2Path = null; - if(ToolUtil.isNotEmpty(uploadDTO.getImageL2Data())){ - imageL2Path = fileService.saveFileBase64Image(uploadDTO.getImageL2Data()); - } - irisData.setLeftImage2(imageL2Path); - String imageR1Path = null; - if(ToolUtil.isNotEmpty(uploadDTO.getImageR1Data())){ - imageR1Path = fileService.saveFileBase64Image(uploadDTO.getImageR1Data()); - } - irisData.setRightImage1(imageR1Path); - String imageR2Path = null; - if(ToolUtil.isNotEmpty(uploadDTO.getImageR2Data())){ - imageR2Path = fileService.saveFileBase64Image(uploadDTO.getImageR2Data()); - } - irisData.setRightImage2(imageR2Path); - irisList.add(irisData); - - // 4. 生成照片 - if(ToolUtil.isNotEmpty(uploadDTO.getPhotoData())) { - IrisPersonPhoto irisPersonPhoto = new IrisPersonPhoto(); - irisPersonPhoto.setPersonId(id); - irisPersonPhoto.setPhotoData(uploadDTO.getPhotoData()); - photoList.add(irisPersonPhoto); - } - } - - if(ToolUtil.isNotEmpty(personList)){ - commonPersonService.addPersons(personList); - } - 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); + Map update = iIrisDataService.sendMessage("update"); + if ((boolean)update.get("success")){ + logger.info("虹膜数据更新成功"); + }else{ + logger.error("虹膜数据更新失败"); } if(!ToolUtil.isAllEmpty(irisRepeatList,codeRepeatList,deptErrorList)){ diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisOfflineService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisOfflineService.java new file mode 100644 index 0000000..14ac474 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisOfflineService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.dto.PersonErrorDTO; +import com.casic.missiles.modular.register.dto.PersonUploadDTO; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +public interface IIrisOfflineService { + Map> uploadPerson(List uploadList) throws IOException; +} 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 82e9634..d3f9b9d 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 @@ -13,20 +13,26 @@ import com.casic.missiles.modular.register.model.IrisData; import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; +import com.casic.missiles.modular.register.service.IIrisOfflineService; 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 com.mysql.jdbc.util.Base64Decoder; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import sun.misc.BASE64Decoder; +import java.io.ByteArrayInputStream; +import java.io.FileInputStream; import java.io.IOException; import java.util.*; @@ -46,6 +52,10 @@ private IIrisPersonPhotoService personPhotoService; @Autowired private IIrisPersonService iIrisPersonService; + @Autowired + private IIrisOfflineService iIrisOfflineService; + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; @RequestMapping("/dept/listAll") @ResponseBody @@ -60,158 +70,18 @@ @RequestMapping("/person/uploadPerson") @ResponseBody - @Transactional(rollbackFor = Exception.class) public Object uploadPerson(@RequestBody List uploadList) throws IOException { - List personList = new ArrayList<>(); - List irisList = new ArrayList<>(); - List photoList = new ArrayList<>(); - List irisRepeatList = new ArrayList<>(); - List codeRepeatList = new ArrayList<>(); - List deptErrorList = new ArrayList<>(); - List depts = deptService.getDeptByTips(null); - List personCodes = iIrisPersonService.personCodeList(); + Map> res = iIrisOfflineService.uploadPerson(uploadList); + List irisRepeatList = res.get("irisRepeatList"); + List codeRepeatList = res.get("codeRepeatList"); + List deptErrorList = res.get("deptErrorList"); - for (PersonUploadDTO uploadDTO : uploadList) { - byte[] irisL1 = null; - if(ToolUtil.isNotEmpty(uploadDTO.getIrisL1())) { - irisL1 = Base64.getDecoder().decode(uploadDTO.getIrisL1()); - } - - byte[] irisL2 = null; - if(ToolUtil.isNotEmpty(uploadDTO.getIrisL2())) { - irisL2 = Base64.getDecoder().decode(uploadDTO.getIrisL2()); - } - - byte[] irisR1 = null; - if(ToolUtil.isNotEmpty(uploadDTO.getIrisR1())) { - irisR1 = Base64.getDecoder().decode(uploadDTO.getIrisR1()); - } - - byte[] irisR2 = null; - if(ToolUtil.isNotEmpty(uploadDTO.getIrisR2())) { - irisR2 = Base64.getDecoder().decode(uploadDTO.getIrisR2()); - } - - // 1.1 判重 - Long recognize = iIrisDataService.recognize(irisL1,irisL2,irisR1,irisR2); - if(recognize >= 0){ - irisRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); - continue; - } - - // 1.2 验证组织机构,若组织机构不存在,提示不存在并 - boolean deptValid = false; - for (Dept dept : depts) { - 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(); - person.setId(id); - if(ToolUtil.isNotEmpty(uploadDTO.getStaffNo())){ - person.setPersonCode(uploadDTO.getStaffNo()); - }else { - person.setPersonCode(String.valueOf(id)); - } - person.setIdCardNo(uploadDTO.getIdCardNo()); - person.setName(uploadDTO.getName()); - person.setSex(uploadDTO.getSex()); - person.setDeptid(Long.valueOf(uploadDTO.getDeptId())); - person.setNation(uploadDTO.getNation()); - if(ToolUtil.isNotEmpty(uploadDTO.getBirthday())){ - person.setBirthday(DateUtil.parseDate(uploadDTO.getBirthday())); - } - person.setRemarks(uploadDTO.getRemarks()); - // TODO 人员类型没有设。此项目人员类型为1-职员;0-访客; - // TODO 采集类型,目前未保存 - Map mapExt = new HashMap<>(); - mapExt.put("certificationUnit",uploadDTO.getCerAuth()); - mapExt.put("address",uploadDTO.getAddr()); - person.setExt(mapExt); - if(ToolUtil.isNotEmpty(uploadDTO.getPhotoData())){ - String photoPath = fileService.saveFileBase64Image(uploadDTO.getPhotoData()); - person.setPhoto(photoPath); - } - personList.add(person); - - // 3.生成虹膜 - IrisData irisData = new IrisData(); - irisData.setPersonId(id); - irisData.setIdCardNo(uploadDTO.getIdCardNo()); - irisData.setLeftIrisCode1(irisL1); - irisData.setLeftIrisCode2(irisL2); - irisData.setRightIrisCode1(irisR1); - irisData.setRightIrisCode2(irisR2); - String imageL1Path = null; - if(ToolUtil.isNotEmpty(uploadDTO.getImageL1Data())){ - imageL1Path = fileService.saveFileBase64Image(uploadDTO.getImageL1Data()); - } - irisData.setLeftImage1(imageL1Path); - String imageL2Path = null; - if(ToolUtil.isNotEmpty(uploadDTO.getImageL2Data())){ - imageL2Path = fileService.saveFileBase64Image(uploadDTO.getImageL2Data()); - } - irisData.setLeftImage2(imageL2Path); - String imageR1Path = null; - if(ToolUtil.isNotEmpty(uploadDTO.getImageR1Data())){ - imageR1Path = fileService.saveFileBase64Image(uploadDTO.getImageR1Data()); - } - irisData.setRightImage1(imageR1Path); - String imageR2Path = null; - if(ToolUtil.isNotEmpty(uploadDTO.getImageR2Data())){ - imageR2Path = fileService.saveFileBase64Image(uploadDTO.getImageR2Data()); - } - irisData.setRightImage2(imageR2Path); - irisList.add(irisData); - - // 4. 生成照片 - if(ToolUtil.isNotEmpty(uploadDTO.getPhotoData())) { - IrisPersonPhoto irisPersonPhoto = new IrisPersonPhoto(); - irisPersonPhoto.setPersonId(id); - irisPersonPhoto.setPhotoData(uploadDTO.getPhotoData()); - photoList.add(irisPersonPhoto); - } - } - - if(ToolUtil.isNotEmpty(personList)){ - commonPersonService.addPersons(personList); - } - 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); + Map update = iIrisDataService.sendMessage("update"); + if ((boolean)update.get("success")){ + logger.info("虹膜数据更新成功"); + }else{ + logger.error("虹膜数据更新失败"); } if(!ToolUtil.isAllEmpty(irisRepeatList,codeRepeatList,deptErrorList)){ diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisOfflineService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisOfflineService.java new file mode 100644 index 0000000..14ac474 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisOfflineService.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.dto.PersonErrorDTO; +import com.casic.missiles.modular.register.dto.PersonUploadDTO; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +public interface IIrisOfflineService { + Map> uploadPerson(List uploadList) throws IOException; +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisOfflineServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisOfflineServiceImpl.java new file mode 100644 index 0000000..ace7d17 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisOfflineServiceImpl.java @@ -0,0 +1,215 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.baomidou.mybatisplus.toolkit.IdWorker; +import com.casic.missiles.core.common.service.ICommonDeptService; +import com.casic.missiles.core.common.service.ICommonFileService; +import com.casic.missiles.core.common.service.ICommonPersonService; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.register.controller.IrisOfflineController; +import com.casic.missiles.modular.register.dto.PersonErrorDTO; +import com.casic.missiles.modular.register.dto.PersonUploadDTO; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.model.IrisPersonPhoto; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.casic.missiles.modular.register.service.IIrisOfflineService; +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.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.*; + +@Service +public class IrisOfflineServiceImpl implements IIrisOfflineService { + private static final Logger logger = LoggerFactory.getLogger(IrisOfflineServiceImpl.class); + + + @Autowired + private ICommonDeptService deptService; + @Autowired + private IIrisDataService iIrisDataService; + @Autowired + private ICommonFileService fileService; + @Autowired + private ICommonPersonService commonPersonService; + @Autowired + private IIrisPersonPhotoService personPhotoService; + @Autowired + private IIrisPersonService iIrisPersonService; + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Override + @Transactional(rollbackFor = Exception.class) + public Map> uploadPerson(List uploadList) throws IOException { + List personList = new ArrayList<>(); + List irisList = new ArrayList<>(); + List photoList = 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; + if(ToolUtil.isNotEmpty(uploadDTO.getIrisL1())) { + irisL1 = Base64.getDecoder().decode(uploadDTO.getIrisL1()); + } +// if(ToolUtil.isNotEmpty(uploadDTO.getImageL1Data())){ +// String path = fileService.saveFileBase64Image(uploadDTO.getImageL1Data()); +// irisL1 = iIrisDataService.getIrisCode(new FileInputStream(this.filePath + path)); +// System.out.println(irisL1); +// System.out.println(Base64.getDecoder().decode(uploadDTO.getIrisL1())); +// } + + byte[] irisL2 = null; + if(ToolUtil.isNotEmpty(uploadDTO.getIrisL2())) { + irisL2 = Base64.getDecoder().decode(uploadDTO.getIrisL2()); + } + + byte[] irisR1 = null; + if(ToolUtil.isNotEmpty(uploadDTO.getIrisR1())) { + irisR1 = Base64.getDecoder().decode(uploadDTO.getIrisR1()); + } + + byte[] irisR2 = null; + if(ToolUtil.isNotEmpty(uploadDTO.getIrisR2())) { + irisR2 = Base64.getDecoder().decode(uploadDTO.getIrisR2()); + } + + // 1.1 判重 + Long recognize = iIrisDataService.recognize(irisL1,irisL2,irisR1,irisR2); + if(recognize >= 0){ + irisRepeatList.add(new PersonErrorDTO(uploadDTO.getDeptId(),uploadDTO.getName())); + continue; + } + + // 1.2 验证组织机构,若组织机构不存在,提示不存在并 + boolean deptValid = false; + for (Dept dept : depts) { + 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(); + person.setId(id); + if(ToolUtil.isNotEmpty(uploadDTO.getStaffNo())){ + person.setPersonCode(uploadDTO.getStaffNo()); + }else { + person.setPersonCode(String.valueOf(id)); + } + if(ToolUtil.isNotEmpty(uploadDTO.getIdCardNo())){ + person.setIdCardNo(uploadDTO.getIdCardNo()); + } + person.setName(uploadDTO.getName()); + person.setSex(uploadDTO.getSex()); + person.setDeptid(Long.valueOf(uploadDTO.getDeptId())); + person.setNation(uploadDTO.getNation()); + if(ToolUtil.isNotEmpty(uploadDTO.getBirthday())){ + person.setBirthday(DateUtil.parseDate(uploadDTO.getBirthday())); + } + person.setRemarks(uploadDTO.getRemarks()); + // TODO 人员类型没有设。此项目人员类型为1-职员;0-访客; + // TODO 采集类型,目前未保存 + Map mapExt = new HashMap<>(); + mapExt.put("certificationUnit",uploadDTO.getCerAuth()); + mapExt.put("address",uploadDTO.getAddr()); + person.setExt(mapExt); + if(ToolUtil.isNotEmpty(uploadDTO.getPhotoData())){ + String photoPath = fileService.saveFileBase64Image(uploadDTO.getPhotoData()); + person.setPhoto(photoPath); + } + personList.add(person); + + // 3.生成虹膜 + IrisData irisData = new IrisData(); + irisData.setPersonId(id); + irisData.setIdCardNo(uploadDTO.getIdCardNo()); + irisData.setLeftIrisCode1(irisL1); + irisData.setLeftIrisCode2(irisL2); + irisData.setRightIrisCode1(irisR1); + irisData.setRightIrisCode2(irisR2); + String imageL1Path = null; + if(ToolUtil.isNotEmpty(uploadDTO.getImageL1Data())){ + imageL1Path = fileService.saveFileBase64Image(uploadDTO.getImageL1Data()); + } + irisData.setLeftImage1(imageL1Path); + String imageL2Path = null; + if(ToolUtil.isNotEmpty(uploadDTO.getImageL2Data())){ + imageL2Path = fileService.saveFileBase64Image(uploadDTO.getImageL2Data()); + } + irisData.setLeftImage2(imageL2Path); + String imageR1Path = null; + if(ToolUtil.isNotEmpty(uploadDTO.getImageR1Data())){ + imageR1Path = fileService.saveFileBase64Image(uploadDTO.getImageR1Data()); + } + irisData.setRightImage1(imageR1Path); + String imageR2Path = null; + if(ToolUtil.isNotEmpty(uploadDTO.getImageR2Data())){ + imageR2Path = fileService.saveFileBase64Image(uploadDTO.getImageR2Data()); + } + irisData.setRightImage2(imageR2Path); + irisList.add(irisData); + + // 4. 生成照片 + if(ToolUtil.isNotEmpty(uploadDTO.getPhotoData())) { + IrisPersonPhoto irisPersonPhoto = new IrisPersonPhoto(); + irisPersonPhoto.setPersonId(id); + irisPersonPhoto.setPhotoData(uploadDTO.getPhotoData()); + photoList.add(irisPersonPhoto); + } + } + + if(ToolUtil.isNotEmpty(personList)){ + commonPersonService.addPersons(personList); + } + if(ToolUtil.isNotEmpty(irisList)){ + iIrisDataService.insertBatch(irisList); + + } + if(ToolUtil.isNotEmpty(photoList)) { + personPhotoService.insertBatch(photoList); + } + + Map> res = new HashMap<>(); + res.put("irisRepeatList",irisRepeatList); + res.put("codeRepeatList",codeRepeatList); + res.put("deptErrorList",deptErrorList); + return res; + } +}