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 index e2b5637..661b089 100644 --- 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 @@ -6,6 +6,7 @@ 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; @@ -19,6 +20,7 @@ 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; @@ -34,61 +36,70 @@ @RequestMapping("/irisData") public class IrisDataController extends BaseController { + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; @Autowired private IIrisDataService irisDataService; - /** - * 获取列表 + * 虹膜注册接口 */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return irisDataService.selectList(null); - } - - /** - * 获取分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = new PageFactory().defaultPage(); - EntityWrapper query = new EntityWrapper<>(); - page = irisDataService.selectPage(page,query); - return super.packForBT(page); - } - /** - * 新增 - */ -// @RequestMapping(value = "/add") -// @ResponseBody -// public Object add(IrisData irisData) { -// irisDataService.insert(irisData); -// return ResponseData.success(); -// } - @RequestMapping(value = "/add") - //@ResponseBody - public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { - if(file.size()!=4){ + @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 : file) { + for (MultipartFile image : images) { if (!image.isEmpty()) { InputStream fis = image.getInputStream(); byte[] result = getIrisCode(fis); - if(returnActualLength(result)==1024){ - 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++; + 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("图像为空"); @@ -102,31 +113,65 @@ } /** - * 删除 - */ - @RequestMapping(value = "/delete") - @ResponseBody - public Object delete(@RequestParam String irisDataId) { - irisDataService.deleteById(irisDataId); - return ResponseData.success(); - } - - /** - * 批量删除 - */ - @RequestMapping(value = "/batchDelete") - @ResponseBody - public Object delete(@RequestParam("irisDataIds") List irisDataIds) { - irisDataService.deleteBatchIds(irisDataIds); - return ResponseData.success(); - } - - /** - * 修改 + * 修改虹膜数据接口 */ @RequestMapping(value = "/update") @ResponseBody - public Object update(IrisData irisData) { + 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(); } @@ -134,18 +179,54 @@ /** * 详情 */ - @RequestMapping(value = "/detail/{irisDataId}") + @RequestMapping(value = "/detail") @ResponseBody - public Object detail(@PathVariable("irisDataId") String irisDataId) { -// ResultData resultData = new ResultData(); -// resultData.setCode(200); -// resultData.setMessage("查询详情成功"); -// resultData.setData(irisDataService.selectById(irisDataId)); -// return resultData; + 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]; @@ -163,29 +244,24 @@ //3.获取输入流,读取服务器端的响应信息 InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; int num =0; - while ((num = is.read(bufIn))>0){ - System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; } - irisCode = bufIn; - - //4.关闭资源 is.close(); os.close(); socket.close(); - - return irisCode; - } - - public int returnActualLength(byte[] data) { - int i = 0; - for (; i < data.length; i++) { - if (data[i] == '\0') - break; + if(totalNum==1024){ + return irisCode; } - return i; + else return null; } + + } 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 index e2b5637..661b089 100644 --- 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 @@ -6,6 +6,7 @@ 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; @@ -19,6 +20,7 @@ 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; @@ -34,61 +36,70 @@ @RequestMapping("/irisData") public class IrisDataController extends BaseController { + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; @Autowired private IIrisDataService irisDataService; - /** - * 获取列表 + * 虹膜注册接口 */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return irisDataService.selectList(null); - } - - /** - * 获取分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = new PageFactory().defaultPage(); - EntityWrapper query = new EntityWrapper<>(); - page = irisDataService.selectPage(page,query); - return super.packForBT(page); - } - /** - * 新增 - */ -// @RequestMapping(value = "/add") -// @ResponseBody -// public Object add(IrisData irisData) { -// irisDataService.insert(irisData); -// return ResponseData.success(); -// } - @RequestMapping(value = "/add") - //@ResponseBody - public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { - if(file.size()!=4){ + @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 : file) { + for (MultipartFile image : images) { if (!image.isEmpty()) { InputStream fis = image.getInputStream(); byte[] result = getIrisCode(fis); - if(returnActualLength(result)==1024){ - 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++; + 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("图像为空"); @@ -102,31 +113,65 @@ } /** - * 删除 - */ - @RequestMapping(value = "/delete") - @ResponseBody - public Object delete(@RequestParam String irisDataId) { - irisDataService.deleteById(irisDataId); - return ResponseData.success(); - } - - /** - * 批量删除 - */ - @RequestMapping(value = "/batchDelete") - @ResponseBody - public Object delete(@RequestParam("irisDataIds") List irisDataIds) { - irisDataService.deleteBatchIds(irisDataIds); - return ResponseData.success(); - } - - /** - * 修改 + * 修改虹膜数据接口 */ @RequestMapping(value = "/update") @ResponseBody - public Object update(IrisData irisData) { + 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(); } @@ -134,18 +179,54 @@ /** * 详情 */ - @RequestMapping(value = "/detail/{irisDataId}") + @RequestMapping(value = "/detail") @ResponseBody - public Object detail(@PathVariable("irisDataId") String irisDataId) { -// ResultData resultData = new ResultData(); -// resultData.setCode(200); -// resultData.setMessage("查询详情成功"); -// resultData.setData(irisDataService.selectById(irisDataId)); -// return resultData; + 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]; @@ -163,29 +244,24 @@ //3.获取输入流,读取服务器端的响应信息 InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; int num =0; - while ((num = is.read(bufIn))>0){ - System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; } - irisCode = bufIn; - - //4.关闭资源 is.close(); os.close(); socket.close(); - - return irisCode; - } - - public int returnActualLength(byte[] data) { - int i = 0; - for (; i < data.length; i++) { - if (data[i] == '\0') - break; + if(totalNum==1024){ + return irisCode; } - return i; + 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 index 9e75c7e..45d1421 100644 --- 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 @@ -1,7 +1,11 @@ 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; /** *

@@ -12,5 +16,5 @@ * @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/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java index e2b5637..661b089 100644 --- 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 @@ -6,6 +6,7 @@ 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; @@ -19,6 +20,7 @@ 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; @@ -34,61 +36,70 @@ @RequestMapping("/irisData") public class IrisDataController extends BaseController { + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; @Autowired private IIrisDataService irisDataService; - /** - * 获取列表 + * 虹膜注册接口 */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return irisDataService.selectList(null); - } - - /** - * 获取分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = new PageFactory().defaultPage(); - EntityWrapper query = new EntityWrapper<>(); - page = irisDataService.selectPage(page,query); - return super.packForBT(page); - } - /** - * 新增 - */ -// @RequestMapping(value = "/add") -// @ResponseBody -// public Object add(IrisData irisData) { -// irisDataService.insert(irisData); -// return ResponseData.success(); -// } - @RequestMapping(value = "/add") - //@ResponseBody - public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { - if(file.size()!=4){ + @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 : file) { + for (MultipartFile image : images) { if (!image.isEmpty()) { InputStream fis = image.getInputStream(); byte[] result = getIrisCode(fis); - if(returnActualLength(result)==1024){ - 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++; + 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("图像为空"); @@ -102,31 +113,65 @@ } /** - * 删除 - */ - @RequestMapping(value = "/delete") - @ResponseBody - public Object delete(@RequestParam String irisDataId) { - irisDataService.deleteById(irisDataId); - return ResponseData.success(); - } - - /** - * 批量删除 - */ - @RequestMapping(value = "/batchDelete") - @ResponseBody - public Object delete(@RequestParam("irisDataIds") List irisDataIds) { - irisDataService.deleteBatchIds(irisDataIds); - return ResponseData.success(); - } - - /** - * 修改 + * 修改虹膜数据接口 */ @RequestMapping(value = "/update") @ResponseBody - public Object update(IrisData irisData) { + 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(); } @@ -134,18 +179,54 @@ /** * 详情 */ - @RequestMapping(value = "/detail/{irisDataId}") + @RequestMapping(value = "/detail") @ResponseBody - public Object detail(@PathVariable("irisDataId") String irisDataId) { -// ResultData resultData = new ResultData(); -// resultData.setCode(200); -// resultData.setMessage("查询详情成功"); -// resultData.setData(irisDataService.selectById(irisDataId)); -// return resultData; + 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]; @@ -163,29 +244,24 @@ //3.获取输入流,读取服务器端的响应信息 InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; int num =0; - while ((num = is.read(bufIn))>0){ - System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; } - irisCode = bufIn; - - //4.关闭资源 is.close(); os.close(); socket.close(); - - return irisCode; - } - - public int returnActualLength(byte[] data) { - int i = 0; - for (; i < data.length; i++) { - if (data[i] == '\0') - break; + if(totalNum==1024){ + return irisCode; } - return i; + 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 index 9e75c7e..45d1421 100644 --- 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 @@ -1,7 +1,11 @@ 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; /** *

@@ -12,5 +16,5 @@ * @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 index 2b58905..32d211a 100644 --- 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 @@ -13,11 +13,30 @@ + + + + + + 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/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java index e2b5637..661b089 100644 --- 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 @@ -6,6 +6,7 @@ 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; @@ -19,6 +20,7 @@ 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; @@ -34,61 +36,70 @@ @RequestMapping("/irisData") public class IrisDataController extends BaseController { + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; @Autowired private IIrisDataService irisDataService; - /** - * 获取列表 + * 虹膜注册接口 */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return irisDataService.selectList(null); - } - - /** - * 获取分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = new PageFactory().defaultPage(); - EntityWrapper query = new EntityWrapper<>(); - page = irisDataService.selectPage(page,query); - return super.packForBT(page); - } - /** - * 新增 - */ -// @RequestMapping(value = "/add") -// @ResponseBody -// public Object add(IrisData irisData) { -// irisDataService.insert(irisData); -// return ResponseData.success(); -// } - @RequestMapping(value = "/add") - //@ResponseBody - public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { - if(file.size()!=4){ + @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 : file) { + for (MultipartFile image : images) { if (!image.isEmpty()) { InputStream fis = image.getInputStream(); byte[] result = getIrisCode(fis); - if(returnActualLength(result)==1024){ - 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++; + 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("图像为空"); @@ -102,31 +113,65 @@ } /** - * 删除 - */ - @RequestMapping(value = "/delete") - @ResponseBody - public Object delete(@RequestParam String irisDataId) { - irisDataService.deleteById(irisDataId); - return ResponseData.success(); - } - - /** - * 批量删除 - */ - @RequestMapping(value = "/batchDelete") - @ResponseBody - public Object delete(@RequestParam("irisDataIds") List irisDataIds) { - irisDataService.deleteBatchIds(irisDataIds); - return ResponseData.success(); - } - - /** - * 修改 + * 修改虹膜数据接口 */ @RequestMapping(value = "/update") @ResponseBody - public Object update(IrisData irisData) { + 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(); } @@ -134,18 +179,54 @@ /** * 详情 */ - @RequestMapping(value = "/detail/{irisDataId}") + @RequestMapping(value = "/detail") @ResponseBody - public Object detail(@PathVariable("irisDataId") String irisDataId) { -// ResultData resultData = new ResultData(); -// resultData.setCode(200); -// resultData.setMessage("查询详情成功"); -// resultData.setData(irisDataService.selectById(irisDataId)); -// return resultData; + 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]; @@ -163,29 +244,24 @@ //3.获取输入流,读取服务器端的响应信息 InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; int num =0; - while ((num = is.read(bufIn))>0){ - System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; } - irisCode = bufIn; - - //4.关闭资源 is.close(); os.close(); socket.close(); - - return irisCode; - } - - public int returnActualLength(byte[] data) { - int i = 0; - for (; i < data.length; i++) { - if (data[i] == '\0') - break; + if(totalNum==1024){ + return irisCode; } - return i; + 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 index 9e75c7e..45d1421 100644 --- 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 @@ -1,7 +1,11 @@ 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; /** *

@@ -12,5 +16,5 @@ * @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 index 2b58905..32d211a 100644 --- 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 @@ -13,11 +13,30 @@ + + + + + + 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 index 9017b60..d7f9d3a 100644 --- 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 @@ -10,6 +10,7 @@ import lombok.Data; import java.io.Serializable; +import java.util.Arrays; /** *

@@ -68,6 +69,20 @@ @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 @@ -75,18 +90,25 @@ return this.id; } + @Override public String toString() { return "IrisData{" + - "id=" + id + - ", personId=" + personId + - ", idCardNo=" + idCardNo + - ", leftIrisCode1=" + leftIrisCode1 + - ", leftIrisCode2=" + leftIrisCode2 + - ", leftIrisCode3=" + leftIrisCode3 + - ", rightIrisCode1=" + rightIrisCode1 + - ", rightIrisCode2=" + rightIrisCode2 + - ", rightIrisCode3=" + rightIrisCode3 + - "}"; + "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/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java index e2b5637..661b089 100644 --- 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 @@ -6,6 +6,7 @@ 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; @@ -19,6 +20,7 @@ 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; @@ -34,61 +36,70 @@ @RequestMapping("/irisData") public class IrisDataController extends BaseController { + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; @Autowired private IIrisDataService irisDataService; - /** - * 获取列表 + * 虹膜注册接口 */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return irisDataService.selectList(null); - } - - /** - * 获取分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = new PageFactory().defaultPage(); - EntityWrapper query = new EntityWrapper<>(); - page = irisDataService.selectPage(page,query); - return super.packForBT(page); - } - /** - * 新增 - */ -// @RequestMapping(value = "/add") -// @ResponseBody -// public Object add(IrisData irisData) { -// irisDataService.insert(irisData); -// return ResponseData.success(); -// } - @RequestMapping(value = "/add") - //@ResponseBody - public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { - if(file.size()!=4){ + @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 : file) { + for (MultipartFile image : images) { if (!image.isEmpty()) { InputStream fis = image.getInputStream(); byte[] result = getIrisCode(fis); - if(returnActualLength(result)==1024){ - 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++; + 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("图像为空"); @@ -102,31 +113,65 @@ } /** - * 删除 - */ - @RequestMapping(value = "/delete") - @ResponseBody - public Object delete(@RequestParam String irisDataId) { - irisDataService.deleteById(irisDataId); - return ResponseData.success(); - } - - /** - * 批量删除 - */ - @RequestMapping(value = "/batchDelete") - @ResponseBody - public Object delete(@RequestParam("irisDataIds") List irisDataIds) { - irisDataService.deleteBatchIds(irisDataIds); - return ResponseData.success(); - } - - /** - * 修改 + * 修改虹膜数据接口 */ @RequestMapping(value = "/update") @ResponseBody - public Object update(IrisData irisData) { + 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(); } @@ -134,18 +179,54 @@ /** * 详情 */ - @RequestMapping(value = "/detail/{irisDataId}") + @RequestMapping(value = "/detail") @ResponseBody - public Object detail(@PathVariable("irisDataId") String irisDataId) { -// ResultData resultData = new ResultData(); -// resultData.setCode(200); -// resultData.setMessage("查询详情成功"); -// resultData.setData(irisDataService.selectById(irisDataId)); -// return resultData; + 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]; @@ -163,29 +244,24 @@ //3.获取输入流,读取服务器端的响应信息 InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; int num =0; - while ((num = is.read(bufIn))>0){ - System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; } - irisCode = bufIn; - - //4.关闭资源 is.close(); os.close(); socket.close(); - - return irisCode; - } - - public int returnActualLength(byte[] data) { - int i = 0; - for (; i < data.length; i++) { - if (data[i] == '\0') - break; + if(totalNum==1024){ + return irisCode; } - return i; + 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 index 9e75c7e..45d1421 100644 --- 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 @@ -1,7 +1,11 @@ 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; /** *

@@ -12,5 +16,5 @@ * @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 index 2b58905..32d211a 100644 --- 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 @@ -13,11 +13,30 @@ + + + + + + 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 index 9017b60..d7f9d3a 100644 --- 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 @@ -10,6 +10,7 @@ import lombok.Data; import java.io.Serializable; +import java.util.Arrays; /** *

@@ -68,6 +69,20 @@ @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 @@ -75,18 +90,25 @@ return this.id; } + @Override public String toString() { return "IrisData{" + - "id=" + id + - ", personId=" + personId + - ", idCardNo=" + idCardNo + - ", leftIrisCode1=" + leftIrisCode1 + - ", leftIrisCode2=" + leftIrisCode2 + - ", leftIrisCode3=" + leftIrisCode3 + - ", rightIrisCode1=" + rightIrisCode1 + - ", rightIrisCode2=" + rightIrisCode2 + - ", rightIrisCode3=" + rightIrisCode3 + - "}"; + "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 index dbfa826..64b5120 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -2,6 +2,9 @@ import com.casic.missiles.modular.register.model.IrisData; import com.baomidou.mybatisplus.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; /** *

@@ -12,5 +15,5 @@ * @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/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java index e2b5637..661b089 100644 --- 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 @@ -6,6 +6,7 @@ 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; @@ -19,6 +20,7 @@ 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; @@ -34,61 +36,70 @@ @RequestMapping("/irisData") public class IrisDataController extends BaseController { + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; @Autowired private IIrisDataService irisDataService; - /** - * 获取列表 + * 虹膜注册接口 */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return irisDataService.selectList(null); - } - - /** - * 获取分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = new PageFactory().defaultPage(); - EntityWrapper query = new EntityWrapper<>(); - page = irisDataService.selectPage(page,query); - return super.packForBT(page); - } - /** - * 新增 - */ -// @RequestMapping(value = "/add") -// @ResponseBody -// public Object add(IrisData irisData) { -// irisDataService.insert(irisData); -// return ResponseData.success(); -// } - @RequestMapping(value = "/add") - //@ResponseBody - public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { - if(file.size()!=4){ + @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 : file) { + for (MultipartFile image : images) { if (!image.isEmpty()) { InputStream fis = image.getInputStream(); byte[] result = getIrisCode(fis); - if(returnActualLength(result)==1024){ - 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++; + 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("图像为空"); @@ -102,31 +113,65 @@ } /** - * 删除 - */ - @RequestMapping(value = "/delete") - @ResponseBody - public Object delete(@RequestParam String irisDataId) { - irisDataService.deleteById(irisDataId); - return ResponseData.success(); - } - - /** - * 批量删除 - */ - @RequestMapping(value = "/batchDelete") - @ResponseBody - public Object delete(@RequestParam("irisDataIds") List irisDataIds) { - irisDataService.deleteBatchIds(irisDataIds); - return ResponseData.success(); - } - - /** - * 修改 + * 修改虹膜数据接口 */ @RequestMapping(value = "/update") @ResponseBody - public Object update(IrisData irisData) { + 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(); } @@ -134,18 +179,54 @@ /** * 详情 */ - @RequestMapping(value = "/detail/{irisDataId}") + @RequestMapping(value = "/detail") @ResponseBody - public Object detail(@PathVariable("irisDataId") String irisDataId) { -// ResultData resultData = new ResultData(); -// resultData.setCode(200); -// resultData.setMessage("查询详情成功"); -// resultData.setData(irisDataService.selectById(irisDataId)); -// return resultData; + 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]; @@ -163,29 +244,24 @@ //3.获取输入流,读取服务器端的响应信息 InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; int num =0; - while ((num = is.read(bufIn))>0){ - System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; } - irisCode = bufIn; - - //4.关闭资源 is.close(); os.close(); socket.close(); - - return irisCode; - } - - public int returnActualLength(byte[] data) { - int i = 0; - for (; i < data.length; i++) { - if (data[i] == '\0') - break; + if(totalNum==1024){ + return irisCode; } - return i; + 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 index 9e75c7e..45d1421 100644 --- 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 @@ -1,7 +1,11 @@ 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; /** *

@@ -12,5 +16,5 @@ * @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 index 2b58905..32d211a 100644 --- 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 @@ -13,11 +13,30 @@ + + + + + + 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 index 9017b60..d7f9d3a 100644 --- 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 @@ -10,6 +10,7 @@ import lombok.Data; import java.io.Serializable; +import java.util.Arrays; /** *

@@ -68,6 +69,20 @@ @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 @@ -75,18 +90,25 @@ return this.id; } + @Override public String toString() { return "IrisData{" + - "id=" + id + - ", personId=" + personId + - ", idCardNo=" + idCardNo + - ", leftIrisCode1=" + leftIrisCode1 + - ", leftIrisCode2=" + leftIrisCode2 + - ", leftIrisCode3=" + leftIrisCode3 + - ", rightIrisCode1=" + rightIrisCode1 + - ", rightIrisCode2=" + rightIrisCode2 + - ", rightIrisCode3=" + rightIrisCode3 + - "}"; + "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 index dbfa826..64b5120 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -2,6 +2,9 @@ import com.casic.missiles.modular.register.model.IrisData; import com.baomidou.mybatisplus.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; /** *

@@ -12,5 +15,5 @@ * @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 index f691055..38fe2b1 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -4,8 +4,11 @@ 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; + /** *

* 服务实现类 @@ -16,5 +19,8 @@ */ @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/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java index e2b5637..661b089 100644 --- 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 @@ -6,6 +6,7 @@ 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; @@ -19,6 +20,7 @@ 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; @@ -34,61 +36,70 @@ @RequestMapping("/irisData") public class IrisDataController extends BaseController { + @Value("${casic.file.uploadPath:C://casic//tmp//}") + private String filePath; @Autowired private IIrisDataService irisDataService; - /** - * 获取列表 + * 虹膜注册接口 */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return irisDataService.selectList(null); - } - - /** - * 获取分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = new PageFactory().defaultPage(); - EntityWrapper query = new EntityWrapper<>(); - page = irisDataService.selectPage(page,query); - return super.packForBT(page); - } - /** - * 新增 - */ -// @RequestMapping(value = "/add") -// @ResponseBody -// public Object add(IrisData irisData) { -// irisDataService.insert(irisData); -// return ResponseData.success(); -// } - @RequestMapping(value = "/add") - //@ResponseBody - public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { - if(file.size()!=4){ + @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 : file) { + for (MultipartFile image : images) { if (!image.isEmpty()) { InputStream fis = image.getInputStream(); byte[] result = getIrisCode(fis); - if(returnActualLength(result)==1024){ - 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++; + 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("图像为空"); @@ -102,31 +113,65 @@ } /** - * 删除 - */ - @RequestMapping(value = "/delete") - @ResponseBody - public Object delete(@RequestParam String irisDataId) { - irisDataService.deleteById(irisDataId); - return ResponseData.success(); - } - - /** - * 批量删除 - */ - @RequestMapping(value = "/batchDelete") - @ResponseBody - public Object delete(@RequestParam("irisDataIds") List irisDataIds) { - irisDataService.deleteBatchIds(irisDataIds); - return ResponseData.success(); - } - - /** - * 修改 + * 修改虹膜数据接口 */ @RequestMapping(value = "/update") @ResponseBody - public Object update(IrisData irisData) { + 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(); } @@ -134,18 +179,54 @@ /** * 详情 */ - @RequestMapping(value = "/detail/{irisDataId}") + @RequestMapping(value = "/detail") @ResponseBody - public Object detail(@PathVariable("irisDataId") String irisDataId) { -// ResultData resultData = new ResultData(); -// resultData.setCode(200); -// resultData.setMessage("查询详情成功"); -// resultData.setData(irisDataService.selectById(irisDataId)); -// return resultData; + 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]; @@ -163,29 +244,24 @@ //3.获取输入流,读取服务器端的响应信息 InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; int num =0; - while ((num = is.read(bufIn))>0){ - System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; } - irisCode = bufIn; - - //4.关闭资源 is.close(); os.close(); socket.close(); - - return irisCode; - } - - public int returnActualLength(byte[] data) { - int i = 0; - for (; i < data.length; i++) { - if (data[i] == '\0') - break; + if(totalNum==1024){ + return irisCode; } - return i; + 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 index 9e75c7e..45d1421 100644 --- 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 @@ -1,7 +1,11 @@ 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; /** *

@@ -12,5 +16,5 @@ * @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 index 2b58905..32d211a 100644 --- 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 @@ -13,11 +13,30 @@ + + + + + + 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 index 9017b60..d7f9d3a 100644 --- 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 @@ -10,6 +10,7 @@ import lombok.Data; import java.io.Serializable; +import java.util.Arrays; /** *

@@ -68,6 +69,20 @@ @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 @@ -75,18 +90,25 @@ return this.id; } + @Override public String toString() { return "IrisData{" + - "id=" + id + - ", personId=" + personId + - ", idCardNo=" + idCardNo + - ", leftIrisCode1=" + leftIrisCode1 + - ", leftIrisCode2=" + leftIrisCode2 + - ", leftIrisCode3=" + leftIrisCode3 + - ", rightIrisCode1=" + rightIrisCode1 + - ", rightIrisCode2=" + rightIrisCode2 + - ", rightIrisCode3=" + rightIrisCode3 + - "}"; + "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 index dbfa826..64b5120 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -2,6 +2,9 @@ import com.casic.missiles.modular.register.model.IrisData; import com.baomidou.mybatisplus.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; /** *

@@ -12,5 +15,5 @@ * @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 index f691055..38fe2b1 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -4,8 +4,11 @@ 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; + /** *

* 服务实现类 @@ -16,5 +19,8 @@ */ @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); + } + + + } + +}