Parcourir la source

1、非在读学生删除海康照片
2、班级考核,解决作废最后一个学生后报错的问题

dzx il y a 11 mois
Parent
commit
7303af6d86

+ 34 - 16
src/main/java/com/xjrsoft/module/job/StudentDropOutTask.java

@@ -2,13 +2,15 @@ package com.xjrsoft.module.job;
 
 import cn.hutool.extra.spring.SpringUtil;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.xjrsoft.common.enums.ArchivesStatusEnum;
 import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.hikvision.service.IHikvisionDataService;
 import com.xjrsoft.module.hikvision.util.ApiUtil;
 import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
-import com.xjrsoft.module.personnel.service.IFaceManagementService;
 import com.xjrsoft.module.personnel.service.IStundentFaceProcessService;
 import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
 import lombok.extern.slf4j.Slf4j;
@@ -30,7 +32,7 @@ public class StudentDropOutTask {
     private IStundentFaceProcessService stundentFaceProcessService;
 
     @Autowired
-    private IFaceManagementService faceManagementService;
+    private IHikvisionDataService hikvisionDataService;
 
     @Scheduled(cron = "0 */30 * * * ?")
     public void execute() {
@@ -60,22 +62,38 @@ public class StudentDropOutTask {
             JsonParser parser = new JsonParser();
             for (StundentFaceProcess user : list) {
                 //删除海康人脸
-
-                JsonObject hikvisionResult = parser.parse(user.getHikvisionResult()).getAsJsonObject();
-                if(!hikvisionResult.get("msg").isJsonNull() && !"success".equals(hikvisionResult.get("msg").getAsString())){
-                    continue;
-                }
-                String faceId = hikvisionResult.get("data").getAsJsonObject().get("faceId").getAsString();
                 ApiUtil apiUtil = new ApiUtil();
-                String apiPath = "/api/resource/v1/face/single/delete";
-                JsonObject paramJson = new JsonObject();
-                paramJson.addProperty("faceId", faceId);
-                String doPost = apiUtil.doPost(apiPath, paramJson.toString(), null);
+                String apiPath;
+                String faceId = null;
+                JsonObject paramJson;
+                if(user.getHikvisionResult() == null || !user.getHikvisionResult().startsWith("{\"code\":\"0\",\"msg\":\"success\"")){
+                    apiPath = "/api/resource/v1/person/condition/personInfo";
+                    paramJson = new JsonObject();
+                    paramJson.addProperty("paramName", "personId");
+                    JsonArray paramValue = new JsonArray();
+                    paramValue.add(hikvisionDataService.getHikvisionIdBySourceId(user.getUserId().toString()));
+                    paramJson.add("paramValue", paramValue);
+                    String doPost = apiUtil.doPost(apiPath, paramJson.toString(), null);
+                    JsonObject resultJson = parser.parse(doPost).getAsJsonObject();
+                    if(resultJson.get("code").getAsInt() == 0 && "success".equals(resultJson.get("msg").getAsString())){
+                        JsonElement data = resultJson.get("data").getAsJsonObject().get("list").getAsJsonArray().get(0);
+                        faceId = data.getAsJsonObject().get("personPhoto").getAsJsonArray().get(0).getAsJsonObject().get("personPhotoIndexCode").getAsString();
+                    }
+                }else{
+                    JsonObject hikvisionResult = parser.parse(user.getHikvisionResult()).getAsJsonObject();
+                    faceId = hikvisionResult.get("data").getAsJsonObject().get("faceId").getAsString();
+                }
+
+                if(faceId != null){
+                    apiPath = "/api/resource/v1/face/single/delete";
+                    paramJson = new JsonObject();
+                    paramJson.addProperty("faceId", faceId);
+                    String doPost = apiUtil.doPost(apiPath, paramJson.toString(), null);
 
-                JsonObject resultJson = parser.parse(doPost).getAsJsonObject();
-                if(resultJson.get("code").getAsInt() == 0){
-                    stundentFaceProcessService.removeById(user);
-                    faceManagementService.clearRegisterBase64ByUserId(user.getUserId());
+                    JsonObject resultJson = parser.parse(doPost).getAsJsonObject();
+                    if(resultJson.get("code").getAsInt() == 0){
+                        stundentFaceProcessService.removeById(user);
+                    }
                 }
             }
 

+ 4 - 0
src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentAssessmentInspectionServiceImpl.java

@@ -21,6 +21,7 @@ import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.EnabledMark;
 import com.xjrsoft.common.enums.EvaluateTypeEnum;
 import com.xjrsoft.common.enums.ScoreTypeEnum;
+import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.common.utils.excel.ExcelMergeUtil;
@@ -148,6 +149,9 @@ public class BaseStudentAssessmentInspectionServiceImpl extends MPJBaseServiceIm
     @Override
     public BaseStudentAssessmentInspectionVo getInfo(Long id) {
         BaseStudentAssessmentInspectionVo result = assessmentInspectionMapper.getInfo(id);
+        if(result == null){
+           throw new MyException("该记录已被作废");
+        }
         // 获取班级信息
         List<BaseStudentAssessmentClassListVo> baseStudentAssessmentClassListVos = assessmentClassRelationMapper.selectJoinList(BaseStudentAssessmentClassListVo.class,
                 MPJWrappers.<BaseStudentAssessmentClassRelation>lambdaJoin()

+ 38 - 15
src/test/java/com/xjrsoft/module/job/StudentDropOutTaskTest.java

@@ -1,11 +1,14 @@
 package com.xjrsoft.module.job;
 
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.xjrsoft.XjrSoftApplication;
 import com.xjrsoft.common.enums.ArchivesStatusEnum;
 import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.hikvision.service.IHikvisionDataService;
 import com.xjrsoft.module.hikvision.util.ApiUtil;
 import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
 import com.xjrsoft.module.personnel.service.IStundentFaceProcessService;
@@ -29,36 +32,56 @@ class StudentDropOutTaskTest {
     @Autowired
     private IStundentFaceProcessService stundentFaceProcessService;
 
+    @Autowired
+    private IHikvisionDataService hikvisionDataService;
+
     @Test
     void test(){
-        Long id = 1783747887750492160L;
+        Long id = 1783747887754686465L;
         List<StundentFaceProcess> list = stundentFaceProcessService.list(
                 new MPJLambdaWrapper<StundentFaceProcess>()
                         .select(StundentFaceProcess::getId)
                         .select(StundentFaceProcess.class, x -> VoToColumnUtil.fieldsToColumns(StundentFaceProcess.class).contains(x.getProperty()))
                         .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, StundentFaceProcess::getUserId)
                         .ne(BaseStudentSchoolRoll::getArchivesStatus, ArchivesStatusEnum.FB2901)
-                        .isNotNull(StundentFaceProcess::getHikvisionResult)
+                        //.isNotNull(StundentFaceProcess::getHikvisionResult)
                         .eq(StundentFaceProcess::getUserId, id)
         );
         JsonParser parser = new JsonParser();
         for (StundentFaceProcess user : list) {
             //删除海康人脸
-
-            JsonObject hikvisionResult = parser.parse(user.getHikvisionResult()).getAsJsonObject();
-            if(!hikvisionResult.get("msg").isJsonNull() && !"success".equals(hikvisionResult.get("msg").getAsString())){
-                continue;
-            }
-            String faceId = hikvisionResult.get("data").getAsJsonObject().get("faceId").getAsString();
             ApiUtil apiUtil = new ApiUtil();
-            String apiPath = "/api/resource/v1/face/single/delete";
-            JsonObject paramJson = new JsonObject();
-            paramJson.addProperty("faceId", faceId);
-            String doPost = apiUtil.doPost(apiPath, paramJson.toString(), null);
+            String apiPath;
+            String faceId = null;
+            JsonObject paramJson;
+            if(user.getHikvisionResult() == null || !user.getHikvisionResult().startsWith("{\"code\":\"0\",\"msg\":\"success\"")){
+                apiPath = "/api/resource/v1/person/condition/personInfo";
+                paramJson = new JsonObject();
+                paramJson.addProperty("paramName", "personId");
+                JsonArray paramValue = new JsonArray();
+                paramValue.add(hikvisionDataService.getHikvisionIdBySourceId(user.getUserId().toString()));
+                paramJson.add("paramValue", paramValue);
+                String doPost = apiUtil.doPost(apiPath, paramJson.toString(), null);
+                JsonObject resultJson = parser.parse(doPost).getAsJsonObject();
+                if(resultJson.get("code").getAsInt() == 0 && "success".equals(resultJson.get("msg").getAsString())){
+                    JsonElement data = resultJson.get("data").getAsJsonObject().get("list").getAsJsonArray().get(0);
+                    faceId = data.getAsJsonObject().get("personPhoto").getAsJsonArray().get(0).getAsJsonObject().get("personPhotoIndexCode").getAsString();
+                }
+            }else{
+                JsonObject hikvisionResult = parser.parse(user.getHikvisionResult()).getAsJsonObject();
+                faceId = hikvisionResult.get("data").getAsJsonObject().get("faceId").getAsString();
+            }
+
+            if(faceId != null){
+                apiPath = "/api/resource/v1/face/single/delete";
+                paramJson = new JsonObject();
+                paramJson.addProperty("faceId", faceId);
+                String doPost = apiUtil.doPost(apiPath, paramJson.toString(), null);
 
-            JsonObject resultJson = parser.parse(doPost).getAsJsonObject();
-            if(resultJson.get("code").getAsInt() == 0){
-                stundentFaceProcessService.removeById(user);
+                JsonObject resultJson = parser.parse(doPost).getAsJsonObject();
+                if(resultJson.get("code").getAsInt() == 0){
+                    stundentFaceProcessService.removeById(user);
+                }
             }
         }
     }