diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java b/cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java index dc84101..60fd775 100644 --- a/cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java +++ b/cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java @@ -16,6 +16,8 @@ */ package com.sincere.lapi.controller; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.sincere.common.dto.smartCampus.SzVSchoolStudent; import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; import com.sincere.common.dto.xiaoan.FaceSendfail; @@ -24,7 +26,6 @@ import com.sincere.lapi.Utils.FileUtils; import com.sincere.lapi.feign.ScFeign; import com.sincere.lapi.feign.XaFeign; import com.sincere.lapi.pojo.*; -import com.sincere.lapi.server.UrlParam; import com.sincere.lapi.service.request.TerminalHttpCall; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; @@ -35,10 +36,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import sun.misc.BASE64Encoder; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * description @@ -57,6 +55,21 @@ public class LapiController { @Autowired TerminalHttpCall terminalHttpCall = new TerminalHttpCall(); + + private static Map resultCodeMap = new HashMap<>(); + + static { + resultCodeMap.put(1,"通用执行失败"); + resultCodeMap.put(2,"初始化检测失败"); + resultCodeMap.put(3,"人脸检测失败"); + resultCodeMap.put(4,"图片未检测到人脸"); + resultCodeMap.put(5,"jpeg 照片解码失败"); + resultCodeMap.put(6,"人脸图片质量分数不满足"); + resultCodeMap.put(7,"图片缩放失败"); + resultCodeMap.put(8,"未启用智能"); + resultCodeMap.put(9,"图片不存在或过大/过小"); + } + /** * 下发整个学校 * @param deviceIds 多个设备用,隔开 @@ -69,6 +82,7 @@ public class LapiController { String[] deviceList = deviceIds.split(","); if(userType.equals("1")){ List list = scFeign.selectTeacherBySchoolId(schoolId) ; + list = removeDuplicateCase(list); for(String deviceId :deviceList){ sendTeacherBatch(list,deviceId); } @@ -80,6 +94,17 @@ public class LapiController { } } + private List removeDuplicateCase(List cases) { + Set set = new TreeSet<>(new Comparator() { + @Override + public int compare(SzVSchoolTeacher o1, SzVSchoolTeacher o2) { + return o1.getTeacherId().compareTo(o2.getTeacherId()); + } + }); + set.addAll(cases); + return new ArrayList<>(set); + } + //下发单张人脸到设备 @@ -107,12 +132,20 @@ public class LapiController { private void sendStudent(SzVSchoolStudent student , String deviceId){ try{ LAPIResponse response = sendImg(Long.valueOf(student.getStudentId()),student.getName(),student.getStudentNum(),student.getPhoto(),deviceId); - System.out.println("接收到的json-------"+response.toString()); terminalHttpCall.removeKey(deviceId); if(response.getStatusString().equals("Succeed")){ - insertSuccess(deviceId,student.getStudentId(),student.getStudentNum(),student.getName(),student.getPhoto(),student.getSchoolId(),2); + JSONObject data = JSONObject.parseObject(response.getData()); + JSONArray personList = (JSONArray)data.get("PersonList") ; + JSONArray faceList = (JSONArray) ((JSONObject)personList.get(0)).get("FaceList"); + JSONObject face = (JSONObject) faceList.get(0); + if((Integer) face.get("ResultCode") == 0){ + insertSuccess(deviceId,student.getStudentId(),student.getStudentNum(),student.getName(),student.getPhoto(),student.getSchoolId(),2); + }else { + Integer code = (Integer) face.get("ResultCode") ; + insertFail(deviceId,student.getStudentId(),student.getStudentNum(),student.getName(),student.getPhoto(),student.getSchoolId(),2,code,resultCodeMap.get(code)); + } }else { - insertFail(deviceId,student.getStudentId(),student.getStudentNum(),student.getName(),student.getPhoto(),student.getSchoolId(),2,response.getStatusCode()); + insertFail(deviceId,student.getStudentId(),student.getStudentNum(),student.getName(),student.getPhoto(),student.getSchoolId(),2,response.getStatusCode(),response.getStatusString()); } }catch (Exception e){ e.printStackTrace(); @@ -133,9 +166,18 @@ public class LapiController { LAPIResponse response = sendImg(Long.valueOf(teacher.getTeacherId()),teacher.getName(),teacher.getTeacherNum(),teacher.getFace(),deviceId); terminalHttpCall.removeKey(deviceId); if(response.getStatusString().equals("Succeed")){ - insertSuccess(deviceId,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1); + JSONObject data = JSONObject.parseObject(response.getData()); + JSONArray personList = (JSONArray)data.get("PersonList") ; + JSONArray faceList = (JSONArray) ((JSONObject)personList.get(0)).get("FaceList"); + JSONObject face = (JSONObject) faceList.get(0); + if((Integer) face.get("ResultCode") == 0){ + insertSuccess(deviceId,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1); + }else { + Integer code = (Integer) face.get("ResultCode") ; + insertFail(deviceId,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1,code,resultCodeMap.get(code)); + } }else { - insertFail(deviceId,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1,response.getStatusCode()); + insertFail(deviceId,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1,response.getStatusCode(),response.getStatusString()); } }catch (Exception e){ e.printStackTrace(); @@ -202,18 +244,19 @@ public class LapiController { private String getCard(String card) { - - if (card.length() == 8) { - int length = card.length(); - String result = card.substring(length - 2, length) + card.substring(length - 4, length - 2) + card.substring(length - 6, length - 4) - + card.substring(length - 8, length - 6); - return result; - - } else { - System.out.println("卡号位数不对:" + card); - return ""; + if(StringUtils.isBlank(card)){ + return "0" ; + }else { + if (card.length() == 8) { + int length = card.length(); + String result = card.substring(length - 2, length) + card.substring(length - 4, length - 2) + card.substring(length - 6, length - 4) + + card.substring(length - 8, length - 6); + return result; + + } else { + return "0"; + } } - } private void insertSuccess(String deviceId , int customerId , String num , String name , String imgPath , int schoolId ,int userType){ @@ -229,7 +272,7 @@ public class LapiController { xaFeign.insertFaceSuccess(send); } - private void insertFail(String deviceId , int customerId , String num , String name , String imgPath , int schoolId ,int userType , int failType ){ + private void insertFail(String deviceId , int customerId , String num , String name , String imgPath , int schoolId ,int userType , int failType ,String failContent){ FaceSendfail send = new FaceSendfail(); send.setDeviceid(deviceId); send.setCustomerid(customerId+""); @@ -240,35 +283,7 @@ public class LapiController { send.setName(name); send.setNum(num); send.setFailtype(failType); - send.setFailcontent(failMap.get(failType+"")); + send.setFailcontent(failContent); xaFeign.insertFaceFail(send); } - - - public static Map failMap = new HashMap<>(); - - static { - failMap.put("1000","算法初始化失败"); - failMap.put("1001","人脸检测失败"); - failMap.put("1002","图片未检测到人脸"); - failMap.put("1003","jpeg照片解码失败"); - failMap.put("1004","图片质量分数不满足"); - failMap.put("1005","图片缩放失败"); - failMap.put("1006","未启用智能"); - failMap.put("1007","导入图片过小"); - failMap.put("1008","导入图片过大"); - failMap.put("1009","导入图片分辨率超过1920*1080"); - failMap.put("1010","导入图片不存在"); - failMap.put("1011","人脸元素个数已达到上限"); - failMap.put("1012",":智能棒算法模型不匹配"); - failMap.put("1013","人脸导入库成员证件号非法"); - failMap.put("1014","人脸导入库成员图片格式错误"); - failMap.put("1015","通道布控已达设备能力上限"); - failMap.put("1016","其它客户端正在进行操作人脸库"); - failMap.put("1017","人脸库文件正在更新中"); - failMap.put("1018","Json反序列化失败"); - failMap.put("1019","Base64解码失败"); - failMap.put("1020","人脸照片,编码后的大小和实际接收到的长度不一致"); - - } } -- libgit2 0.21.0