diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..45d1421 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version}
- + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..45d1421 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..32d211a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + ,LEFT_IMAGE1 as leftImage1,LEFT_IMAGE2 as leftImage2,LEFT_IMAGE3 as leftImage3,RIGHT_IMAGE1 as rightImage1,RIGHT_IMAGE2 as rightImage2,RIGHT_IMAGE3 as rightImage3 + + + + + + diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version}
- + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..45d1421 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..32d211a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + ,LEFT_IMAGE1 as leftImage1,LEFT_IMAGE2 as leftImage2,LEFT_IMAGE3 as leftImage3,RIGHT_IMAGE1 as rightImage1,RIGHT_IMAGE2 as rightImage2,RIGHT_IMAGE3 as rightImage3 + + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..d7f9d3a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,114 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; +import java.util.Arrays; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + @TableField("LEFT_IMAGE1") + private String leftImage1; + @TableField("LEFT_IMAGE2") + private String leftImage2; + @TableField("LEFT_IMAGE3") + private String leftImage3; + @TableField("RIGHT_IMAGE1") + private String rightImage1; + @TableField("RIGHT_IMAGE2") + private String rightImage2; + @TableField("RIGHT_IMAGE3") + private String rightImage3; + + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo='" + idCardNo + '\'' + + ", leftIrisCode1=" + Arrays.toString(leftIrisCode1) + + ", leftIrisCode2=" + Arrays.toString(leftIrisCode2) + + ", leftIrisCode3=" + Arrays.toString(leftIrisCode3) + + ", rightIrisCode1=" + Arrays.toString(rightIrisCode1) + + ", rightIrisCode2=" + Arrays.toString(rightIrisCode2) + + ", rightIrisCode3=" + Arrays.toString(rightIrisCode3) + + ", leftImage1='" + leftImage1 + '\'' + + ", leftImage2='" + leftImage2 + '\'' + + ", leftImage3='" + leftImage3 + '\'' + + ", rightImage1='" + rightImage1 + '\'' + + ", rightImage2='" + rightImage2 + '\'' + + ", rightImage3='" + rightImage3 + '\'' + + '}'; + } +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version}
- + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..45d1421 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..32d211a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + ,LEFT_IMAGE1 as leftImage1,LEFT_IMAGE2 as leftImage2,LEFT_IMAGE3 as leftImage3,RIGHT_IMAGE1 as rightImage1,RIGHT_IMAGE2 as rightImage2,RIGHT_IMAGE3 as rightImage3 + + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..d7f9d3a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,114 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; +import java.util.Arrays; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + @TableField("LEFT_IMAGE1") + private String leftImage1; + @TableField("LEFT_IMAGE2") + private String leftImage2; + @TableField("LEFT_IMAGE3") + private String leftImage3; + @TableField("RIGHT_IMAGE1") + private String rightImage1; + @TableField("RIGHT_IMAGE2") + private String rightImage2; + @TableField("RIGHT_IMAGE3") + private String rightImage3; + + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo='" + idCardNo + '\'' + + ", leftIrisCode1=" + Arrays.toString(leftIrisCode1) + + ", leftIrisCode2=" + Arrays.toString(leftIrisCode2) + + ", leftIrisCode3=" + Arrays.toString(leftIrisCode3) + + ", rightIrisCode1=" + Arrays.toString(rightIrisCode1) + + ", rightIrisCode2=" + Arrays.toString(rightIrisCode2) + + ", rightIrisCode3=" + Arrays.toString(rightIrisCode3) + + ", leftImage1='" + leftImage1 + '\'' + + ", leftImage2='" + leftImage2 + '\'' + + ", leftImage3='" + leftImage3 + '\'' + + ", rightImage1='" + rightImage1 + '\'' + + ", rightImage2='" + rightImage2 + '\'' + + ", rightImage3='" + rightImage3 + '\'' + + '}'; + } +} 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 new file mode 100644 index 0000000..64b5120 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version}
- + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..45d1421 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..32d211a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + ,LEFT_IMAGE1 as leftImage1,LEFT_IMAGE2 as leftImage2,LEFT_IMAGE3 as leftImage3,RIGHT_IMAGE1 as rightImage1,RIGHT_IMAGE2 as rightImage2,RIGHT_IMAGE3 as rightImage3 + + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..d7f9d3a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,114 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; +import java.util.Arrays; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + @TableField("LEFT_IMAGE1") + private String leftImage1; + @TableField("LEFT_IMAGE2") + private String leftImage2; + @TableField("LEFT_IMAGE3") + private String leftImage3; + @TableField("RIGHT_IMAGE1") + private String rightImage1; + @TableField("RIGHT_IMAGE2") + private String rightImage2; + @TableField("RIGHT_IMAGE3") + private String rightImage3; + + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo='" + idCardNo + '\'' + + ", leftIrisCode1=" + Arrays.toString(leftIrisCode1) + + ", leftIrisCode2=" + Arrays.toString(leftIrisCode2) + + ", leftIrisCode3=" + Arrays.toString(leftIrisCode3) + + ", rightIrisCode1=" + Arrays.toString(rightIrisCode1) + + ", rightIrisCode2=" + Arrays.toString(rightIrisCode2) + + ", rightIrisCode3=" + Arrays.toString(rightIrisCode3) + + ", leftImage1='" + leftImage1 + '\'' + + ", leftImage2='" + leftImage2 + '\'' + + ", leftImage3='" + leftImage3 + '\'' + + ", rightImage1='" + rightImage1 + '\'' + + ", rightImage2='" + rightImage2 + '\'' + + ", rightImage3='" + rightImage3 + '\'' + + '}'; + } +} 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 new file mode 100644 index 0000000..64b5120 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + Map selectByPersonId(@Param("personId") String personId); +} 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 new file mode 100644 index 0000000..38fe2b1 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Service +public class IrisDataServiceImpl extends ServiceImpl implements IIrisDataService { + @Override + public Map selectByPersonId(String personId){ + return this.baseMapper.selectByPersonId(personId); + } +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version}
- + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..45d1421 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..32d211a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + ,LEFT_IMAGE1 as leftImage1,LEFT_IMAGE2 as leftImage2,LEFT_IMAGE3 as leftImage3,RIGHT_IMAGE1 as rightImage1,RIGHT_IMAGE2 as rightImage2,RIGHT_IMAGE3 as rightImage3 + + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..d7f9d3a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,114 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; +import java.util.Arrays; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + @TableField("LEFT_IMAGE1") + private String leftImage1; + @TableField("LEFT_IMAGE2") + private String leftImage2; + @TableField("LEFT_IMAGE3") + private String leftImage3; + @TableField("RIGHT_IMAGE1") + private String rightImage1; + @TableField("RIGHT_IMAGE2") + private String rightImage2; + @TableField("RIGHT_IMAGE3") + private String rightImage3; + + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo='" + idCardNo + '\'' + + ", leftIrisCode1=" + Arrays.toString(leftIrisCode1) + + ", leftIrisCode2=" + Arrays.toString(leftIrisCode2) + + ", leftIrisCode3=" + Arrays.toString(leftIrisCode3) + + ", rightIrisCode1=" + Arrays.toString(rightIrisCode1) + + ", rightIrisCode2=" + Arrays.toString(rightIrisCode2) + + ", rightIrisCode3=" + Arrays.toString(rightIrisCode3) + + ", leftImage1='" + leftImage1 + '\'' + + ", leftImage2='" + leftImage2 + '\'' + + ", leftImage3='" + leftImage3 + '\'' + + ", rightImage1='" + rightImage1 + '\'' + + ", rightImage2='" + rightImage2 + '\'' + + ", rightImage3='" + rightImage3 + '\'' + + '}'; + } +} 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 new file mode 100644 index 0000000..64b5120 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + Map selectByPersonId(@Param("personId") String personId); +} 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 new file mode 100644 index 0000000..38fe2b1 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Service +public class IrisDataServiceImpl extends ServiceImpl implements IIrisDataService { + @Override + public Map selectByPersonId(String personId){ + return this.baseMapper.selectByPersonId(personId); + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java new file mode 100644 index 0000000..5e9403d --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.register.warpper; + + +import com.casic.missiles.core.base.warpper.BaseControllerWarpper; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import org.springframework.beans.factory.annotation.Value; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * 虹膜数据的包装类 + * + * @date 2019年12月5日10:59:02 + */ +public class IrisDataWarpper extends BaseControllerWarpper { + + @Value("${casic.file.uploadPath:D://tmp//}") + private String filePath; + + public IrisDataWarpper(Object list) { + super(list); + } + ICommonPermissionService service = SpringContextHolder.getBean(ICommonPermissionService.class); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Override + public void warpTheMap(Map map) { + + //解密身份证号 + if (!ToolUtil.isEmpty(map.get("idCardNo"))) { + String idCardNo = formatter.format(map.get("createTime")); + map.put("idCardNo",idCardNo); + } + //眼部图片加路径 + if (!ToolUtil.isEmpty(map.get("leftImage1"))) { + String leftImage1 = filePath + String.valueOf(map.get("leftImage1")); + map.put("leftImage1",leftImage1); + } + if (!ToolUtil.isEmpty(map.get("leftImage2"))) { + String leftImage2 = filePath + String.valueOf(map.get("leftImage2")); + map.put("leftImage2",leftImage2); + } + if (!ToolUtil.isEmpty(map.get("rightImage1"))) { + String rightImage1 = filePath + String.valueOf(map.get("rightImage1")); + map.put("rightImage1",rightImage1); + } + if (!ToolUtil.isEmpty(map.get("rightImage2"))) { + String rightImage2 = filePath + String.valueOf(map.get("rightImage2")); + map.put("rightImage2",rightImage2); + } + + + } + +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version}
- + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..45d1421 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..32d211a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + ,LEFT_IMAGE1 as leftImage1,LEFT_IMAGE2 as leftImage2,LEFT_IMAGE3 as leftImage3,RIGHT_IMAGE1 as rightImage1,RIGHT_IMAGE2 as rightImage2,RIGHT_IMAGE3 as rightImage3 + + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..d7f9d3a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,114 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; +import java.util.Arrays; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + @TableField("LEFT_IMAGE1") + private String leftImage1; + @TableField("LEFT_IMAGE2") + private String leftImage2; + @TableField("LEFT_IMAGE3") + private String leftImage3; + @TableField("RIGHT_IMAGE1") + private String rightImage1; + @TableField("RIGHT_IMAGE2") + private String rightImage2; + @TableField("RIGHT_IMAGE3") + private String rightImage3; + + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo='" + idCardNo + '\'' + + ", leftIrisCode1=" + Arrays.toString(leftIrisCode1) + + ", leftIrisCode2=" + Arrays.toString(leftIrisCode2) + + ", leftIrisCode3=" + Arrays.toString(leftIrisCode3) + + ", rightIrisCode1=" + Arrays.toString(rightIrisCode1) + + ", rightIrisCode2=" + Arrays.toString(rightIrisCode2) + + ", rightIrisCode3=" + Arrays.toString(rightIrisCode3) + + ", leftImage1='" + leftImage1 + '\'' + + ", leftImage2='" + leftImage2 + '\'' + + ", leftImage3='" + leftImage3 + '\'' + + ", rightImage1='" + rightImage1 + '\'' + + ", rightImage2='" + rightImage2 + '\'' + + ", rightImage3='" + rightImage3 + '\'' + + '}'; + } +} 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 new file mode 100644 index 0000000..64b5120 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + Map selectByPersonId(@Param("personId") String personId); +} 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 new file mode 100644 index 0000000..38fe2b1 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Service +public class IrisDataServiceImpl extends ServiceImpl implements IIrisDataService { + @Override + public Map selectByPersonId(String personId){ + return this.baseMapper.selectByPersonId(personId); + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java new file mode 100644 index 0000000..5e9403d --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.register.warpper; + + +import com.casic.missiles.core.base.warpper.BaseControllerWarpper; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import org.springframework.beans.factory.annotation.Value; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * 虹膜数据的包装类 + * + * @date 2019年12月5日10:59:02 + */ +public class IrisDataWarpper extends BaseControllerWarpper { + + @Value("${casic.file.uploadPath:D://tmp//}") + private String filePath; + + public IrisDataWarpper(Object list) { + super(list); + } + ICommonPermissionService service = SpringContextHolder.getBean(ICommonPermissionService.class); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Override + public void warpTheMap(Map map) { + + //解密身份证号 + if (!ToolUtil.isEmpty(map.get("idCardNo"))) { + String idCardNo = formatter.format(map.get("createTime")); + map.put("idCardNo",idCardNo); + } + //眼部图片加路径 + if (!ToolUtil.isEmpty(map.get("leftImage1"))) { + String leftImage1 = filePath + String.valueOf(map.get("leftImage1")); + map.put("leftImage1",leftImage1); + } + if (!ToolUtil.isEmpty(map.get("leftImage2"))) { + String leftImage2 = filePath + String.valueOf(map.get("leftImage2")); + map.put("leftImage2",leftImage2); + } + if (!ToolUtil.isEmpty(map.get("rightImage1"))) { + String rightImage1 = filePath + String.valueOf(map.get("rightImage1")); + map.put("rightImage1",rightImage1); + } + if (!ToolUtil.isEmpty(map.get("rightImage2"))) { + String rightImage2 = filePath + String.valueOf(map.get("rightImage2")); + map.put("rightImage2",rightImage2); + } + + + } + +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index afde795..9d289a4 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.casic - casic-smartcity-dcms + casic-iris-parent ../pom.xml 1.0.0-SNAPSHOT @@ -202,9 +202,11 @@ groovy-all true
+ + org.apache.maven.plugins @@ -282,7 +284,10 @@ + + + src/main/webapp diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..45d1421 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..32d211a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + ,LEFT_IMAGE1 as leftImage1,LEFT_IMAGE2 as leftImage2,LEFT_IMAGE3 as leftImage3,RIGHT_IMAGE1 as rightImage1,RIGHT_IMAGE2 as rightImage2,RIGHT_IMAGE3 as rightImage3 + + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..d7f9d3a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,114 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; +import java.util.Arrays; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + @TableField("LEFT_IMAGE1") + private String leftImage1; + @TableField("LEFT_IMAGE2") + private String leftImage2; + @TableField("LEFT_IMAGE3") + private String leftImage3; + @TableField("RIGHT_IMAGE1") + private String rightImage1; + @TableField("RIGHT_IMAGE2") + private String rightImage2; + @TableField("RIGHT_IMAGE3") + private String rightImage3; + + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo='" + idCardNo + '\'' + + ", leftIrisCode1=" + Arrays.toString(leftIrisCode1) + + ", leftIrisCode2=" + Arrays.toString(leftIrisCode2) + + ", leftIrisCode3=" + Arrays.toString(leftIrisCode3) + + ", rightIrisCode1=" + Arrays.toString(rightIrisCode1) + + ", rightIrisCode2=" + Arrays.toString(rightIrisCode2) + + ", rightIrisCode3=" + Arrays.toString(rightIrisCode3) + + ", leftImage1='" + leftImage1 + '\'' + + ", leftImage2='" + leftImage2 + '\'' + + ", leftImage3='" + leftImage3 + '\'' + + ", rightImage1='" + rightImage1 + '\'' + + ", rightImage2='" + rightImage2 + '\'' + + ", rightImage3='" + rightImage3 + '\'' + + '}'; + } +} 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 new file mode 100644 index 0000000..64b5120 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + Map selectByPersonId(@Param("personId") String personId); +} 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 new file mode 100644 index 0000000..38fe2b1 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Service +public class IrisDataServiceImpl extends ServiceImpl implements IIrisDataService { + @Override + public Map selectByPersonId(String personId){ + return this.baseMapper.selectByPersonId(personId); + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java new file mode 100644 index 0000000..5e9403d --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.register.warpper; + + +import com.casic.missiles.core.base.warpper.BaseControllerWarpper; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import org.springframework.beans.factory.annotation.Value; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * 虹膜数据的包装类 + * + * @date 2019年12月5日10:59:02 + */ +public class IrisDataWarpper extends BaseControllerWarpper { + + @Value("${casic.file.uploadPath:D://tmp//}") + private String filePath; + + public IrisDataWarpper(Object list) { + super(list); + } + ICommonPermissionService service = SpringContextHolder.getBean(ICommonPermissionService.class); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Override + public void warpTheMap(Map map) { + + //解密身份证号 + if (!ToolUtil.isEmpty(map.get("idCardNo"))) { + String idCardNo = formatter.format(map.get("createTime")); + map.put("idCardNo",idCardNo); + } + //眼部图片加路径 + if (!ToolUtil.isEmpty(map.get("leftImage1"))) { + String leftImage1 = filePath + String.valueOf(map.get("leftImage1")); + map.put("leftImage1",leftImage1); + } + if (!ToolUtil.isEmpty(map.get("leftImage2"))) { + String leftImage2 = filePath + String.valueOf(map.get("leftImage2")); + map.put("leftImage2",leftImage2); + } + if (!ToolUtil.isEmpty(map.get("rightImage1"))) { + String rightImage1 = filePath + String.valueOf(map.get("rightImage1")); + map.put("rightImage1",rightImage1); + } + if (!ToolUtil.isEmpty(map.get("rightImage2"))) { + String rightImage2 = filePath + String.valueOf(map.get("rightImage2")); + map.put("rightImage2",rightImage2); + } + + + } + +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index afde795..9d289a4 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.casic - casic-smartcity-dcms + casic-iris-parent ../pom.xml 1.0.0-SNAPSHOT @@ -202,9 +202,11 @@ groovy-all true
+ + org.apache.maven.plugins @@ -282,7 +284,10 @@ + + + src/main/webapp diff --git "a/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" "b/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" index 9656df2..0b03730 100644 --- "a/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" +++ "b/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" @@ -1,4 +1,4 @@ @echo off -title 智慧城管 -java -jar guns-web-1.0.0-SNAPSHOT.jar +title �ǻ۳ǹ� +java -jar casic-web-1.0.0-SNAPSHOT.jar @pause diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..45d1421 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..32d211a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + ,LEFT_IMAGE1 as leftImage1,LEFT_IMAGE2 as leftImage2,LEFT_IMAGE3 as leftImage3,RIGHT_IMAGE1 as rightImage1,RIGHT_IMAGE2 as rightImage2,RIGHT_IMAGE3 as rightImage3 + + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..d7f9d3a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,114 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; +import java.util.Arrays; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + @TableField("LEFT_IMAGE1") + private String leftImage1; + @TableField("LEFT_IMAGE2") + private String leftImage2; + @TableField("LEFT_IMAGE3") + private String leftImage3; + @TableField("RIGHT_IMAGE1") + private String rightImage1; + @TableField("RIGHT_IMAGE2") + private String rightImage2; + @TableField("RIGHT_IMAGE3") + private String rightImage3; + + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo='" + idCardNo + '\'' + + ", leftIrisCode1=" + Arrays.toString(leftIrisCode1) + + ", leftIrisCode2=" + Arrays.toString(leftIrisCode2) + + ", leftIrisCode3=" + Arrays.toString(leftIrisCode3) + + ", rightIrisCode1=" + Arrays.toString(rightIrisCode1) + + ", rightIrisCode2=" + Arrays.toString(rightIrisCode2) + + ", rightIrisCode3=" + Arrays.toString(rightIrisCode3) + + ", leftImage1='" + leftImage1 + '\'' + + ", leftImage2='" + leftImage2 + '\'' + + ", leftImage3='" + leftImage3 + '\'' + + ", rightImage1='" + rightImage1 + '\'' + + ", rightImage2='" + rightImage2 + '\'' + + ", rightImage3='" + rightImage3 + '\'' + + '}'; + } +} 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 new file mode 100644 index 0000000..64b5120 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + Map selectByPersonId(@Param("personId") String personId); +} 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 new file mode 100644 index 0000000..38fe2b1 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Service +public class IrisDataServiceImpl extends ServiceImpl implements IIrisDataService { + @Override + public Map selectByPersonId(String personId){ + return this.baseMapper.selectByPersonId(personId); + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java new file mode 100644 index 0000000..5e9403d --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.register.warpper; + + +import com.casic.missiles.core.base.warpper.BaseControllerWarpper; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import org.springframework.beans.factory.annotation.Value; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * 虹膜数据的包装类 + * + * @date 2019年12月5日10:59:02 + */ +public class IrisDataWarpper extends BaseControllerWarpper { + + @Value("${casic.file.uploadPath:D://tmp//}") + private String filePath; + + public IrisDataWarpper(Object list) { + super(list); + } + ICommonPermissionService service = SpringContextHolder.getBean(ICommonPermissionService.class); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Override + public void warpTheMap(Map map) { + + //解密身份证号 + if (!ToolUtil.isEmpty(map.get("idCardNo"))) { + String idCardNo = formatter.format(map.get("createTime")); + map.put("idCardNo",idCardNo); + } + //眼部图片加路径 + if (!ToolUtil.isEmpty(map.get("leftImage1"))) { + String leftImage1 = filePath + String.valueOf(map.get("leftImage1")); + map.put("leftImage1",leftImage1); + } + if (!ToolUtil.isEmpty(map.get("leftImage2"))) { + String leftImage2 = filePath + String.valueOf(map.get("leftImage2")); + map.put("leftImage2",leftImage2); + } + if (!ToolUtil.isEmpty(map.get("rightImage1"))) { + String rightImage1 = filePath + String.valueOf(map.get("rightImage1")); + map.put("rightImage1",rightImage1); + } + if (!ToolUtil.isEmpty(map.get("rightImage2"))) { + String rightImage2 = filePath + String.valueOf(map.get("rightImage2")); + map.put("rightImage2",rightImage2); + } + + + } + +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index afde795..9d289a4 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.casic - casic-smartcity-dcms + casic-iris-parent ../pom.xml 1.0.0-SNAPSHOT @@ -202,9 +202,11 @@ groovy-all true
+ + org.apache.maven.plugins @@ -282,7 +284,10 @@ + + + src/main/webapp diff --git "a/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" "b/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" index 9656df2..0b03730 100644 --- "a/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" +++ "b/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" @@ -1,4 +1,4 @@ @echo off -title 智慧城管 -java -jar guns-web-1.0.0-SNAPSHOT.jar +title �ǻ۳ǹ� +java -jar casic-web-1.0.0-SNAPSHOT.jar @pause diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 48d4599..5fa55b1 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; + import java.io.FileNotFoundException; /** diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..45d1421 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..32d211a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + ,LEFT_IMAGE1 as leftImage1,LEFT_IMAGE2 as leftImage2,LEFT_IMAGE3 as leftImage3,RIGHT_IMAGE1 as rightImage1,RIGHT_IMAGE2 as rightImage2,RIGHT_IMAGE3 as rightImage3 + + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..d7f9d3a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,114 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; +import java.util.Arrays; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + @TableField("LEFT_IMAGE1") + private String leftImage1; + @TableField("LEFT_IMAGE2") + private String leftImage2; + @TableField("LEFT_IMAGE3") + private String leftImage3; + @TableField("RIGHT_IMAGE1") + private String rightImage1; + @TableField("RIGHT_IMAGE2") + private String rightImage2; + @TableField("RIGHT_IMAGE3") + private String rightImage3; + + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo='" + idCardNo + '\'' + + ", leftIrisCode1=" + Arrays.toString(leftIrisCode1) + + ", leftIrisCode2=" + Arrays.toString(leftIrisCode2) + + ", leftIrisCode3=" + Arrays.toString(leftIrisCode3) + + ", rightIrisCode1=" + Arrays.toString(rightIrisCode1) + + ", rightIrisCode2=" + Arrays.toString(rightIrisCode2) + + ", rightIrisCode3=" + Arrays.toString(rightIrisCode3) + + ", leftImage1='" + leftImage1 + '\'' + + ", leftImage2='" + leftImage2 + '\'' + + ", leftImage3='" + leftImage3 + '\'' + + ", rightImage1='" + rightImage1 + '\'' + + ", rightImage2='" + rightImage2 + '\'' + + ", rightImage3='" + rightImage3 + '\'' + + '}'; + } +} 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 new file mode 100644 index 0000000..64b5120 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + Map selectByPersonId(@Param("personId") String personId); +} 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 new file mode 100644 index 0000000..38fe2b1 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Service +public class IrisDataServiceImpl extends ServiceImpl implements IIrisDataService { + @Override + public Map selectByPersonId(String personId){ + return this.baseMapper.selectByPersonId(personId); + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java new file mode 100644 index 0000000..5e9403d --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.register.warpper; + + +import com.casic.missiles.core.base.warpper.BaseControllerWarpper; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import org.springframework.beans.factory.annotation.Value; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * 虹膜数据的包装类 + * + * @date 2019年12月5日10:59:02 + */ +public class IrisDataWarpper extends BaseControllerWarpper { + + @Value("${casic.file.uploadPath:D://tmp//}") + private String filePath; + + public IrisDataWarpper(Object list) { + super(list); + } + ICommonPermissionService service = SpringContextHolder.getBean(ICommonPermissionService.class); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Override + public void warpTheMap(Map map) { + + //解密身份证号 + if (!ToolUtil.isEmpty(map.get("idCardNo"))) { + String idCardNo = formatter.format(map.get("createTime")); + map.put("idCardNo",idCardNo); + } + //眼部图片加路径 + if (!ToolUtil.isEmpty(map.get("leftImage1"))) { + String leftImage1 = filePath + String.valueOf(map.get("leftImage1")); + map.put("leftImage1",leftImage1); + } + if (!ToolUtil.isEmpty(map.get("leftImage2"))) { + String leftImage2 = filePath + String.valueOf(map.get("leftImage2")); + map.put("leftImage2",leftImage2); + } + if (!ToolUtil.isEmpty(map.get("rightImage1"))) { + String rightImage1 = filePath + String.valueOf(map.get("rightImage1")); + map.put("rightImage1",rightImage1); + } + if (!ToolUtil.isEmpty(map.get("rightImage2"))) { + String rightImage2 = filePath + String.valueOf(map.get("rightImage2")); + map.put("rightImage2",rightImage2); + } + + + } + +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index afde795..9d289a4 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.casic - casic-smartcity-dcms + casic-iris-parent ../pom.xml 1.0.0-SNAPSHOT @@ -202,9 +202,11 @@ groovy-all true
+ + org.apache.maven.plugins @@ -282,7 +284,10 @@ + + + src/main/webapp diff --git "a/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" "b/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" index 9656df2..0b03730 100644 --- "a/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" +++ "b/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" @@ -1,4 +1,4 @@ @echo off -title 智慧城管 -java -jar guns-web-1.0.0-SNAPSHOT.jar +title �ǻ۳ǹ� +java -jar casic-web-1.0.0-SNAPSHOT.jar @pause diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 48d4599..5fa55b1 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; + import java.io.FileNotFoundException; /** diff --git a/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java index 274647f..6689124 100644 --- a/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java +++ b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java @@ -1,8 +1,19 @@ package com.casic.missiles.controller; +import com.baomidou.mybatisplus.toolkit.IdWorker; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.modular.metadata.service.IMetadataCommonService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Map; /** * 仅为mock登录使用 @@ -10,14 +21,12 @@ @Controller @RequestMapping("/test") public class TableTestController extends BaseController { - /* private static final Logger logger = LoggerFactory.getLogger(TableTestController.class); + private static final Logger logger = LoggerFactory.getLogger(TableTestController.class); @Autowired private IMetadataCommonService metadataCommonService; - *//** - * 获取mockToken - *//* + @PostMapping("/add") @ResponseBody public Object add(@RequestParam Map map) { @@ -39,6 +48,6 @@ @ResponseBody public Object detail(Long id) { return ResponseData.success(metadataCommonService.selectOneMetaData("SysPersonExt", id)); - }*/ + } } diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..45d1421 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..32d211a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + ,LEFT_IMAGE1 as leftImage1,LEFT_IMAGE2 as leftImage2,LEFT_IMAGE3 as leftImage3,RIGHT_IMAGE1 as rightImage1,RIGHT_IMAGE2 as rightImage2,RIGHT_IMAGE3 as rightImage3 + + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..d7f9d3a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,114 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; +import java.util.Arrays; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + @TableField("LEFT_IMAGE1") + private String leftImage1; + @TableField("LEFT_IMAGE2") + private String leftImage2; + @TableField("LEFT_IMAGE3") + private String leftImage3; + @TableField("RIGHT_IMAGE1") + private String rightImage1; + @TableField("RIGHT_IMAGE2") + private String rightImage2; + @TableField("RIGHT_IMAGE3") + private String rightImage3; + + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo='" + idCardNo + '\'' + + ", leftIrisCode1=" + Arrays.toString(leftIrisCode1) + + ", leftIrisCode2=" + Arrays.toString(leftIrisCode2) + + ", leftIrisCode3=" + Arrays.toString(leftIrisCode3) + + ", rightIrisCode1=" + Arrays.toString(rightIrisCode1) + + ", rightIrisCode2=" + Arrays.toString(rightIrisCode2) + + ", rightIrisCode3=" + Arrays.toString(rightIrisCode3) + + ", leftImage1='" + leftImage1 + '\'' + + ", leftImage2='" + leftImage2 + '\'' + + ", leftImage3='" + leftImage3 + '\'' + + ", rightImage1='" + rightImage1 + '\'' + + ", rightImage2='" + rightImage2 + '\'' + + ", rightImage3='" + rightImage3 + '\'' + + '}'; + } +} 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 new file mode 100644 index 0000000..64b5120 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + Map selectByPersonId(@Param("personId") String personId); +} 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 new file mode 100644 index 0000000..38fe2b1 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Service +public class IrisDataServiceImpl extends ServiceImpl implements IIrisDataService { + @Override + public Map selectByPersonId(String personId){ + return this.baseMapper.selectByPersonId(personId); + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java new file mode 100644 index 0000000..5e9403d --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.register.warpper; + + +import com.casic.missiles.core.base.warpper.BaseControllerWarpper; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import org.springframework.beans.factory.annotation.Value; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * 虹膜数据的包装类 + * + * @date 2019年12月5日10:59:02 + */ +public class IrisDataWarpper extends BaseControllerWarpper { + + @Value("${casic.file.uploadPath:D://tmp//}") + private String filePath; + + public IrisDataWarpper(Object list) { + super(list); + } + ICommonPermissionService service = SpringContextHolder.getBean(ICommonPermissionService.class); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Override + public void warpTheMap(Map map) { + + //解密身份证号 + if (!ToolUtil.isEmpty(map.get("idCardNo"))) { + String idCardNo = formatter.format(map.get("createTime")); + map.put("idCardNo",idCardNo); + } + //眼部图片加路径 + if (!ToolUtil.isEmpty(map.get("leftImage1"))) { + String leftImage1 = filePath + String.valueOf(map.get("leftImage1")); + map.put("leftImage1",leftImage1); + } + if (!ToolUtil.isEmpty(map.get("leftImage2"))) { + String leftImage2 = filePath + String.valueOf(map.get("leftImage2")); + map.put("leftImage2",leftImage2); + } + if (!ToolUtil.isEmpty(map.get("rightImage1"))) { + String rightImage1 = filePath + String.valueOf(map.get("rightImage1")); + map.put("rightImage1",rightImage1); + } + if (!ToolUtil.isEmpty(map.get("rightImage2"))) { + String rightImage2 = filePath + String.valueOf(map.get("rightImage2")); + map.put("rightImage2",rightImage2); + } + + + } + +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index afde795..9d289a4 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.casic - casic-smartcity-dcms + casic-iris-parent ../pom.xml 1.0.0-SNAPSHOT @@ -202,9 +202,11 @@ groovy-all true
+ + org.apache.maven.plugins @@ -282,7 +284,10 @@ + + + src/main/webapp diff --git "a/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" "b/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" index 9656df2..0b03730 100644 --- "a/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" +++ "b/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" @@ -1,4 +1,4 @@ @echo off -title 智慧城管 -java -jar guns-web-1.0.0-SNAPSHOT.jar +title �ǻ۳ǹ� +java -jar casic-web-1.0.0-SNAPSHOT.jar @pause diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 48d4599..5fa55b1 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; + import java.io.FileNotFoundException; /** diff --git a/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java index 274647f..6689124 100644 --- a/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java +++ b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java @@ -1,8 +1,19 @@ package com.casic.missiles.controller; +import com.baomidou.mybatisplus.toolkit.IdWorker; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.modular.metadata.service.IMetadataCommonService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Map; /** * 仅为mock登录使用 @@ -10,14 +21,12 @@ @Controller @RequestMapping("/test") public class TableTestController extends BaseController { - /* private static final Logger logger = LoggerFactory.getLogger(TableTestController.class); + private static final Logger logger = LoggerFactory.getLogger(TableTestController.class); @Autowired private IMetadataCommonService metadataCommonService; - *//** - * 获取mockToken - *//* + @PostMapping("/add") @ResponseBody public Object add(@RequestParam Map map) { @@ -39,6 +48,6 @@ @ResponseBody public Object detail(Long id) { return ResponseData.success(metadataCommonService.selectOneMetaData("SysPersonExt", id)); - }*/ + } } diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 251a8df..4ba9e81 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -3,9 +3,10 @@ ################### spring配置 ################### spring: datasource: - url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + //url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://localhost:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root - password: root + password: Casic203 initial-size: 2 min-idle: 1 #flowable数据源和多数据源配置 diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..45d1421 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..32d211a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + ,LEFT_IMAGE1 as leftImage1,LEFT_IMAGE2 as leftImage2,LEFT_IMAGE3 as leftImage3,RIGHT_IMAGE1 as rightImage1,RIGHT_IMAGE2 as rightImage2,RIGHT_IMAGE3 as rightImage3 + + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..d7f9d3a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,114 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; +import java.util.Arrays; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + @TableField("LEFT_IMAGE1") + private String leftImage1; + @TableField("LEFT_IMAGE2") + private String leftImage2; + @TableField("LEFT_IMAGE3") + private String leftImage3; + @TableField("RIGHT_IMAGE1") + private String rightImage1; + @TableField("RIGHT_IMAGE2") + private String rightImage2; + @TableField("RIGHT_IMAGE3") + private String rightImage3; + + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo='" + idCardNo + '\'' + + ", leftIrisCode1=" + Arrays.toString(leftIrisCode1) + + ", leftIrisCode2=" + Arrays.toString(leftIrisCode2) + + ", leftIrisCode3=" + Arrays.toString(leftIrisCode3) + + ", rightIrisCode1=" + Arrays.toString(rightIrisCode1) + + ", rightIrisCode2=" + Arrays.toString(rightIrisCode2) + + ", rightIrisCode3=" + Arrays.toString(rightIrisCode3) + + ", leftImage1='" + leftImage1 + '\'' + + ", leftImage2='" + leftImage2 + '\'' + + ", leftImage3='" + leftImage3 + '\'' + + ", rightImage1='" + rightImage1 + '\'' + + ", rightImage2='" + rightImage2 + '\'' + + ", rightImage3='" + rightImage3 + '\'' + + '}'; + } +} 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 new file mode 100644 index 0000000..64b5120 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + Map selectByPersonId(@Param("personId") String personId); +} 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 new file mode 100644 index 0000000..38fe2b1 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Service +public class IrisDataServiceImpl extends ServiceImpl implements IIrisDataService { + @Override + public Map selectByPersonId(String personId){ + return this.baseMapper.selectByPersonId(personId); + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java new file mode 100644 index 0000000..5e9403d --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.register.warpper; + + +import com.casic.missiles.core.base.warpper.BaseControllerWarpper; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import org.springframework.beans.factory.annotation.Value; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * 虹膜数据的包装类 + * + * @date 2019年12月5日10:59:02 + */ +public class IrisDataWarpper extends BaseControllerWarpper { + + @Value("${casic.file.uploadPath:D://tmp//}") + private String filePath; + + public IrisDataWarpper(Object list) { + super(list); + } + ICommonPermissionService service = SpringContextHolder.getBean(ICommonPermissionService.class); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Override + public void warpTheMap(Map map) { + + //解密身份证号 + if (!ToolUtil.isEmpty(map.get("idCardNo"))) { + String idCardNo = formatter.format(map.get("createTime")); + map.put("idCardNo",idCardNo); + } + //眼部图片加路径 + if (!ToolUtil.isEmpty(map.get("leftImage1"))) { + String leftImage1 = filePath + String.valueOf(map.get("leftImage1")); + map.put("leftImage1",leftImage1); + } + if (!ToolUtil.isEmpty(map.get("leftImage2"))) { + String leftImage2 = filePath + String.valueOf(map.get("leftImage2")); + map.put("leftImage2",leftImage2); + } + if (!ToolUtil.isEmpty(map.get("rightImage1"))) { + String rightImage1 = filePath + String.valueOf(map.get("rightImage1")); + map.put("rightImage1",rightImage1); + } + if (!ToolUtil.isEmpty(map.get("rightImage2"))) { + String rightImage2 = filePath + String.valueOf(map.get("rightImage2")); + map.put("rightImage2",rightImage2); + } + + + } + +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index afde795..9d289a4 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.casic - casic-smartcity-dcms + casic-iris-parent ../pom.xml 1.0.0-SNAPSHOT @@ -202,9 +202,11 @@ groovy-all true
+ + org.apache.maven.plugins @@ -282,7 +284,10 @@ + + + src/main/webapp diff --git "a/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" "b/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" index 9656df2..0b03730 100644 --- "a/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" +++ "b/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" @@ -1,4 +1,4 @@ @echo off -title 智慧城管 -java -jar guns-web-1.0.0-SNAPSHOT.jar +title �ǻ۳ǹ� +java -jar casic-web-1.0.0-SNAPSHOT.jar @pause diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 48d4599..5fa55b1 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; + import java.io.FileNotFoundException; /** diff --git a/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java index 274647f..6689124 100644 --- a/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java +++ b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java @@ -1,8 +1,19 @@ package com.casic.missiles.controller; +import com.baomidou.mybatisplus.toolkit.IdWorker; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.modular.metadata.service.IMetadataCommonService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Map; /** * 仅为mock登录使用 @@ -10,14 +21,12 @@ @Controller @RequestMapping("/test") public class TableTestController extends BaseController { - /* private static final Logger logger = LoggerFactory.getLogger(TableTestController.class); + private static final Logger logger = LoggerFactory.getLogger(TableTestController.class); @Autowired private IMetadataCommonService metadataCommonService; - *//** - * 获取mockToken - *//* + @PostMapping("/add") @ResponseBody public Object add(@RequestParam Map map) { @@ -39,6 +48,6 @@ @ResponseBody public Object detail(Long id) { return ResponseData.success(metadataCommonService.selectOneMetaData("SysPersonExt", id)); - }*/ + } } diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 251a8df..4ba9e81 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -3,9 +3,10 @@ ################### spring配置 ################### spring: datasource: - url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + //url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://localhost:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root - password: root + password: Casic203 initial-size: 2 min-idle: 1 #flowable数据源和多数据源配置 diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 313eafd..1c80179 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -13,9 +13,14 @@ kaptcha-open: false #是否开启登录时验证码 (true/false) nologin-urls: /user/login,/user/appLogin,/kaptcha,/config/baseConfig,/route/mockToken,/process/processDiagram file-upload-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\upload +mybatis-plus: + global-config: + sql-injector: com.casic.missiles.modular.metadata.inject.MetaSqlInject logging: level.root: info level.com.casic: debug path: logs/ file: missiles.log +iris: + socket-port: 8000 diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 92a10e1..d7cb377 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -32,7 +32,11 @@ casic-metadata-core ${casic.version} - + + com.casic + casic-metadata-support + ${casic.version} + com.casic casic-export-support diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java index 882434e..fc7f86b 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -5,6 +5,8 @@ import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IPersonService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +23,8 @@ @RestController @RequestMapping("/person") public class PersonController extends BaseController { - - + @Autowired + private ICommonPermissionService permissionService; @Autowired private IPersonService personService; @@ -30,10 +32,10 @@ /** * 获取人员管理列表 */ - @RequestMapping(value = "/list") + @GetMapping(value = "/list") @ResponseBody public Object list(String condition) { - return personService.selectList(null); + return ResponseData.success(personService.selectList(null)); } /** @@ -41,20 +43,43 @@ */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(String keywords, String sex, String duty, String deptId) { Page page = new PageFactory().defaultPage(); EntityWrapper query = new EntityWrapper<>(); - page = personService.selectPage(page,query); - return super.packForBT(page); + + if(ToolUtil.isNotEmpty(duty)){ + query.eq("a.DUTY",duty); + } + if (ToolUtil.isNotEmpty(deptId)) { + query.eq("a.DEPTID", deptId); + } + if (ToolUtil.isNotEmpty(sex)) { + query.eq("a.SEX", sex); + } + query.eq("a.DELFLAG", 0); + if(ToolUtil.isNotEmpty(keywords)){ + query.andNew().like("a.NAME",keywords).or().like("a.ID_CARD_NO",keywords); + } + List scopePersons = personService.selectDataScopePerson(page,permissionService.getCurrUserDataScope(), query); + page.setRecords(scopePersons); + //展示数据封装 + page.getRecords().forEach(person -> { + person.setDeptName(permissionService.getDeptName(person.getDeptid())); + person.setSexName(permissionService.getDictNameByCode("sysSex", person.getSex())); + person.setPersonTypeName(permissionService.getDictNameByCode("personType", person.getSex())); + }); + + return ResponseData.success(super.packForBT(page)); } + /** * 新增人员管理 */ @RequestMapping(value = "/add") @ResponseBody - public Object add(Person person) { - personService.insert(person); - return ResponseData.success(); + public Object add(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); + return ResponseData.success(personService.insert(person)); } /** @@ -62,7 +87,7 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam String personId) { + public Object delete(@RequestParam Long personId) { personService.deleteById(personId); return ResponseData.success(); } @@ -72,7 +97,7 @@ */ @RequestMapping(value = "/batchDelete") @ResponseBody - public Object delete(@RequestParam("personIds") List personIds) { + public Object delete(@RequestParam("ids") List personIds) { personService.deleteBatchIds(personIds); return ResponseData.success(); } @@ -82,7 +107,8 @@ */ @RequestMapping(value = "/update") @ResponseBody - public Object update(Person person) { + public Object update(@RequestBody Person person) { + person.setOprationId(permissionService.getCurrLoginUser().getId()); personService.updateById(person); return ResponseData.success(); } @@ -95,4 +121,5 @@ public Object detail(@PathVariable("personId") String personId) { return ResponseData.success(personService.selectById(personId)); } + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java index c2a324b..116cc48 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.modular.system.dao; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,8 @@ * @since 2019-12-03 */ public interface PersonMapper extends BaseMapper { + @Select({"SELECT IFNULL(max(PERSON_CODE),0) AS personCode FROM sys_person where PERSON_TYPE = #{personType} and CREATETIME > #{currDay} "}) + String selectMaxPersonCode(@Param("personType") String personType,@Param("currDay") String currDay); + List selectDataScopePerson(@Param("page") Page page, @Param("scope") DataScope dataScope, @Param("ew") EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml index f556815..295c59a 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -4,21 +4,33 @@ - - - - - - - - - - + + + + + + + + + + - ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + a.ID AS id, a.DELFLAG AS delflag, a.CREATETIME AS createtime, a.UPDATETIME AS updatetime, a.NAME AS name, a.SEX AS sex, a.DEPTID AS deptid, a.ID_CARD_NO AS idCard, a.REMARKS AS remarks, a.PERSON_TYPE AS personType + ,a.DUTY + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java new file mode 100644 index 0000000..a139b9a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/PersonTypeEnums.java @@ -0,0 +1,53 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.casic.missiles.modular.system.enums; + +public enum PersonTypeEnums { + VISITOR("0", "FK", "添加"), + STAFF("1", "", "删除"); + + private String value; + private String code; + private String name; + + private PersonTypeEnums(String value, String code, String name) { + this.value = value; + this.code = code; + this.name = name; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PersonTypeEnums typeOf(String value){ + switch (value){ + case "0": + return VISITOR; + default: return STAFF; + } + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java index 4a8d915..362678c 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -1,15 +1,16 @@ package com.casic.missiles.modular.system.model; -import java.io.Serializable; +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotations.*; +import com.baomidou.mybatisplus.enums.IdType; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.annotations.MetaDataBean; +import com.casic.missiles.core.base.model.DataMetaModel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; import java.util.Date; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.activerecord.Model; -import com.baomidou.mybatisplus.annotations.TableName; -import com.casic.missiles.modular.metadata.base.DataMetaModel; - -import java.io.Serializable; /** *

@@ -19,16 +20,18 @@ * @author lwh123 * @since 2019-12-03 */ +@Data +@MetaDataBean(name = "SysPersonExt") @TableName("sys_person") public class Person extends DataMetaModel { private static final long serialVersionUID = 1L; - - @TableId("ID") + @TableId(value = "ID", type = IdType.ID_WORKER) private Long id; /** * 状态(0:有效 1:删除) */ + @TableLogic @TableField("DELFLAG") private String delflag; /** @@ -59,8 +62,8 @@ /** * 身份证号 */ - @TableField("ID_CARD") - private String idCard; + @TableField("ID_CARD_NO") + private String idCardNo; /** * 备注信息 */ @@ -71,88 +74,22 @@ */ @TableField("PERSON_TYPE") private String personType; - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getDelflag() { - return delflag; - } - - public void setDelflag(String delflag) { - this.delflag = delflag; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } - - public Long getDeptid() { - return deptid; - } - - public void setDeptid(Long deptid) { - this.deptid = deptid; - } - - public String getIdCard() { - return idCard; - } - - public void setIdCard(String idCard) { - this.idCard = idCard; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public String getPersonType() { - return personType; - } - - public void setPersonType(String personType) { - this.personType = personType; - } - + /** + * 人员编码 + */ + @TableField("PERSON_CODE") + private String personCode; + @TableField("OPRATION_ID") + private Long oprationId; + //人员编码 + @TableField(exist = false) + private String deptName; + @TableField(exist = false) + private String personTypeName; + @TableField(exist = false) + private String sexName; + @TableField(exist = false) + private String oprationName; @Override protected Serializable pkVal() { return this.id; @@ -161,16 +98,16 @@ @Override public String toString() { return "Person{" + - "id=" + id + - ", delflag=" + delflag + - ", createtime=" + createtime + - ", updatetime=" + updatetime + - ", name=" + name + - ", sex=" + sex + - ", deptid=" + deptid + - ", idCard=" + idCard + - ", remarks=" + remarks + - ", personType=" + personType + - "}"; + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCardNo=" + idCardNo + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java index c58c236..1e4f7bc 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.system.service; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.model.Person; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 人员数据表 服务类 @@ -12,5 +17,10 @@ * @since 2019-12-03 */ public interface IPersonService extends IService { - + /** + * 查询最大的人员编码 + * @return + */ + String selectMaxPersonCode(String personType,String currDay); + List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java index 4eb8734..a672344 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -1,10 +1,23 @@ package com.casic.missiles.modular.system.service.impl; -import com.casic.missiles.modular.system.model.Person; -import com.casic.missiles.modular.system.dao.PersonMapper; -import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.annotations.MetaData; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.enums.MetaTypeEnums; +import com.casic.missiles.core.util.DateUtil; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.enums.PersonTypeEnums; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +29,57 @@ */ @Service public class PersonServiceImpl extends ServiceImpl implements IPersonService { + @Value("${casic.base.personPrefix:}") + private String personPrefix; + + @MetaData + @Override + public List selectList(Wrapper wrapper) { + return super.selectList(wrapper); + } + + @MetaData + @Override + public Page selectPage(Page page, Wrapper wrapper) { + return super.selectPage(page, wrapper); + } + + @Transactional + @Override + public boolean insert(@MetaData(type = MetaTypeEnums.INSERT) Person entity) { + //查询最大人员编码 + if (ToolUtil.isEmpty(entity.getPersonCode())) { + String currDay = DateUtil.getDays(); + String personCode = this.selectMaxPersonCode(entity.getPersonType(), currDay); + String code = PersonTypeEnums.typeOf(entity.getPersonType()).getCode(); + String prefix = ToolUtil.isEmpty(code)?personPrefix:code; + personCode = personCode.replaceAll(prefix, ""); + if (!"0".equals(personCode)) { + personCode = personCode.substring(8); + } + entity.setPersonCode(prefix.concat(currDay).concat(String.format("%06d", Integer.valueOf(personCode) + 1))); + } + return super.insert(entity); + } + + @Transactional + @Override + public boolean updateById(@MetaData(type = MetaTypeEnums.UPDATE) Person entity) { + return super.updateById(entity); + } + + @Override + public String selectMaxPersonCode(String personType, String currDay) { + return baseMapper.selectMaxPersonCode(personType, currDay); + } + @MetaData + @Override + public List selectDataScopePerson(Page page, DataScope dataScope, EntityWrapper wrapper) { + return baseMapper.selectDataScopePerson(page,dataScope,wrapper); + } + + public static void main(String[] args) { + System.out.println(PersonTypeEnums.valueOf("1")); + } } diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..661b089 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,267 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; + + @Autowired + private IIrisDataService irisDataService; + + /** + * 虹膜注册接口 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId,String idCardNo) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("已注册过该人员的虹膜数据"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = personId+"_left_1.bmp"; + else if(i==1)fileName=personId+"_left_2.bmp"; + else if(i==2)fileName=personId+"_right_1.bmp"; + else if(i==3)fileName=personId+"_right_2.bmp"; + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + irisData.setLeftImage1(fileName); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + irisData.setLeftImage2(fileName); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + irisData.setRightImage1(fileName); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + irisData.setRightImage2(fileName); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 修改虹膜数据接口 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object imageUpload(@RequestParam("images") List images,@RequestParam("personId")String personId) throws IOException { + Map map = null; + map = irisDataService.selectByPersonId(personId); + if(map!=null){ + return ResponseData.error("不存在该记录"); + } + + if(images.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = irisDataService.selectById(map.get("id").toString()); + + int i = 0; + for (MultipartFile image : images) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(result != null && result.length==1024){ + String fileName=""; + if(i==0) fileName = irisData.getLeftImage1(); + else if(i==1)fileName= irisData.getLeftImage2(); + else if(i==2)fileName= irisData.getRightImage1(); + else if(i==3)fileName= irisData.getRightImage2(); + + String pathName = this.filePath + fileName; + File dir = new File(this.filePath); + if (!dir.exists()) { + dir.mkdirs(); + //logger.info("创建文件夹路径为:{}", dir.getPath()); + } + + image.transferTo(new File(pathName)); + + if(i==0) { + irisData.setLeftIrisCode1(result); + } + else if(i==1) { + irisData.setLeftIrisCode2(result); + } + else if(i==2) { + irisData.setRightIrisCode1(result); + } + else if(i==3){ + irisData.setRightIrisCode2(result); + } + i++; + }else { + return ResponseData.error("获取虹膜编码失败,请重试"); + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail") + @ResponseBody + public Object detail(@RequestParam("personId") String personId) { + Map irisData = null; + irisData = irisDataService.selectByPersonId(personId); + if(irisData==null){ + return ResponseData.error("不存在该条记录"); + } + return ResponseData.success(irisData); + } + + + /** + * 下发虹膜数据接口 + */ + @RequestMapping(value = "/sendData") + @ResponseBody + public Object sendData() throws IOException { + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = "update".getBytes(); + os.write(buf, 0, buf.length); + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + is.read(bufIn); + String msg = new String(bufIn); + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + if(!"ok".equals(msg)){ + return ResponseData.error("出现异常,下发失败"); + } + + return ResponseData.success(); + } + + + + //与c#的服务通信,获取虹膜编码 + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } + + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..45d1421 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.dao; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + Map selectByPersonId(@Param("personId") String personId); +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..32d211a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + ,LEFT_IMAGE1 as leftImage1,LEFT_IMAGE2 as leftImage2,LEFT_IMAGE3 as leftImage3,RIGHT_IMAGE1 as rightImage1,RIGHT_IMAGE2 as rightImage2,RIGHT_IMAGE3 as rightImage3 + + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..d7f9d3a --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,114 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; +import java.util.Arrays; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + @TableField("LEFT_IMAGE1") + private String leftImage1; + @TableField("LEFT_IMAGE2") + private String leftImage2; + @TableField("LEFT_IMAGE3") + private String leftImage3; + @TableField("RIGHT_IMAGE1") + private String rightImage1; + @TableField("RIGHT_IMAGE2") + private String rightImage2; + @TableField("RIGHT_IMAGE3") + private String rightImage3; + + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo='" + idCardNo + '\'' + + ", leftIrisCode1=" + Arrays.toString(leftIrisCode1) + + ", leftIrisCode2=" + Arrays.toString(leftIrisCode2) + + ", leftIrisCode3=" + Arrays.toString(leftIrisCode3) + + ", rightIrisCode1=" + Arrays.toString(rightIrisCode1) + + ", rightIrisCode2=" + Arrays.toString(rightIrisCode2) + + ", rightIrisCode3=" + Arrays.toString(rightIrisCode3) + + ", leftImage1='" + leftImage1 + '\'' + + ", leftImage2='" + leftImage2 + '\'' + + ", leftImage3='" + leftImage3 + '\'' + + ", rightImage1='" + rightImage1 + '\'' + + ", rightImage2='" + rightImage2 + '\'' + + ", rightImage3='" + rightImage3 + '\'' + + '}'; + } +} 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 new file mode 100644 index 0000000..64b5120 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + Map selectByPersonId(@Param("personId") String personId); +} 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 new file mode 100644 index 0000000..38fe2b1 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Service +public class IrisDataServiceImpl extends ServiceImpl implements IIrisDataService { + @Override + public Map selectByPersonId(String personId){ + return this.baseMapper.selectByPersonId(personId); + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java new file mode 100644 index 0000000..5e9403d --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/warpper/IrisDataWarpper.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.register.warpper; + + +import com.casic.missiles.core.base.warpper.BaseControllerWarpper; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.core.util.ToolUtil; +import org.springframework.beans.factory.annotation.Value; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * 虹膜数据的包装类 + * + * @date 2019年12月5日10:59:02 + */ +public class IrisDataWarpper extends BaseControllerWarpper { + + @Value("${casic.file.uploadPath:D://tmp//}") + private String filePath; + + public IrisDataWarpper(Object list) { + super(list); + } + ICommonPermissionService service = SpringContextHolder.getBean(ICommonPermissionService.class); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Override + public void warpTheMap(Map map) { + + //解密身份证号 + if (!ToolUtil.isEmpty(map.get("idCardNo"))) { + String idCardNo = formatter.format(map.get("createTime")); + map.put("idCardNo",idCardNo); + } + //眼部图片加路径 + if (!ToolUtil.isEmpty(map.get("leftImage1"))) { + String leftImage1 = filePath + String.valueOf(map.get("leftImage1")); + map.put("leftImage1",leftImage1); + } + if (!ToolUtil.isEmpty(map.get("leftImage2"))) { + String leftImage2 = filePath + String.valueOf(map.get("leftImage2")); + map.put("leftImage2",leftImage2); + } + if (!ToolUtil.isEmpty(map.get("rightImage1"))) { + String rightImage1 = filePath + String.valueOf(map.get("rightImage1")); + map.put("rightImage1",rightImage1); + } + if (!ToolUtil.isEmpty(map.get("rightImage2"))) { + String rightImage2 = filePath + String.valueOf(map.get("rightImage2")); + map.put("rightImage2",rightImage2); + } + + + } + +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index afde795..9d289a4 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.casic - casic-smartcity-dcms + casic-iris-parent ../pom.xml 1.0.0-SNAPSHOT @@ -202,9 +202,11 @@ groovy-all true
+ + org.apache.maven.plugins @@ -282,7 +284,10 @@ + + + src/main/webapp diff --git "a/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" "b/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" index 9656df2..0b03730 100644 --- "a/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" +++ "b/casic-web/src/main/bin/\350\231\271\350\206\234\351\227\250\347\246\201.bat" @@ -1,4 +1,4 @@ @echo off -title 智慧城管 -java -jar guns-web-1.0.0-SNAPSHOT.jar +title �ǻ۳ǹ� +java -jar casic-web-1.0.0-SNAPSHOT.jar @pause diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 48d4599..5fa55b1 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; + import java.io.FileNotFoundException; /** diff --git a/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java index 274647f..6689124 100644 --- a/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java +++ b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java @@ -1,8 +1,19 @@ package com.casic.missiles.controller; +import com.baomidou.mybatisplus.toolkit.IdWorker; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.modular.metadata.service.IMetadataCommonService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Map; /** * 仅为mock登录使用 @@ -10,14 +21,12 @@ @Controller @RequestMapping("/test") public class TableTestController extends BaseController { - /* private static final Logger logger = LoggerFactory.getLogger(TableTestController.class); + private static final Logger logger = LoggerFactory.getLogger(TableTestController.class); @Autowired private IMetadataCommonService metadataCommonService; - *//** - * 获取mockToken - *//* + @PostMapping("/add") @ResponseBody public Object add(@RequestParam Map map) { @@ -39,6 +48,6 @@ @ResponseBody public Object detail(Long id) { return ResponseData.success(metadataCommonService.selectOneMetaData("SysPersonExt", id)); - }*/ + } } diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 251a8df..4ba9e81 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -3,9 +3,10 @@ ################### spring配置 ################### spring: datasource: - url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + //url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://localhost:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root - password: root + password: Casic203 initial-size: 2 min-idle: 1 #flowable数据源和多数据源配置 diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 313eafd..1c80179 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -13,9 +13,14 @@ kaptcha-open: false #是否开启登录时验证码 (true/false) nologin-urls: /user/login,/user/appLogin,/kaptcha,/config/baseConfig,/route/mockToken,/process/processDiagram file-upload-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\upload +mybatis-plus: + global-config: + sql-injector: com.casic.missiles.modular.metadata.inject.MetaSqlInject logging: level.root: info level.com.casic: debug path: logs/ file: missiles.log +iris: + socket-port: 8000 diff --git a/pom.xml b/pom.xml index b74d442..92aa7c3 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,7 @@ casic-iris-acs casic-iris-device casic-iris-support + casic-iris-register @@ -61,7 +62,6 @@ casic-admin-support ${casic.version} - com.casic casic-core @@ -69,7 +69,9 @@ + + com.casic casic-iris-acs @@ -85,6 +87,11 @@ casic-iris-support ${casic.version} + + com.casic + casic-iris-register + ${casic.version} +