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/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/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/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/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/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/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/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-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 6f4806a..9d289a4 100644
--- a/casic-web/pom.xml
+++ b/casic-web/pom.xml
@@ -202,6 +202,7 @@
groovy-all
true
+
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 6f4806a..9d289a4 100644
--- a/casic-web/pom.xml
+++ b/casic-web/pom.xml
@@ -202,6 +202,7 @@
groovy-all
true
+
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-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 6f4806a..9d289a4 100644
--- a/casic-web/pom.xml
+++ b/casic-web/pom.xml
@@ -202,6 +202,7 @@
groovy-all
true
+
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/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml
index 73ecf80..658e892 100644
--- a/casic-web/src/main/resources/config/application-dev.yml
+++ b/casic-web/src/main/resources/config/application-dev.yml
@@ -3,7 +3,8 @@
################### 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: Casic203
initial-size: 2
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 6f4806a..9d289a4 100644
--- a/casic-web/pom.xml
+++ b/casic-web/pom.xml
@@ -202,6 +202,7 @@
groovy-all
true
+
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/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml
index 73ecf80..658e892 100644
--- a/casic-web/src/main/resources/config/application-dev.yml
+++ b/casic-web/src/main/resources/config/application-dev.yml
@@ -3,7 +3,8 @@
################### 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: Casic203
initial-size: 2
diff --git a/pom.xml b/pom.xml
index 2e7a9b0..92aa7c3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,6 +11,7 @@
casic-iris-acs
casic-iris-device
casic-iris-support
+ casic-iris-register
@@ -86,6 +87,11 @@
casic-iris-support
${casic.version}
+
+ com.casic
+ casic-iris-register
+ ${casic.version}
+