Explorar o código

算法日志更新

xuxiaofei %!s(int64=2) %!d(string=hai) anos
pai
achega
9cfd375aec

+ 3 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteLaboratoryService.java

@@ -264,6 +264,9 @@ public interface RemoteLaboratoryService {
     @PostMapping("/algorithm/saveAlgorithm")
     public R saveAlgorithmData(@RequestBody Algorithm algorithm);
 
+    @PostMapping("/algorithm/update")
+    public R update(@RequestBody Algorithm algorithm);
+
     /**
      * 小程序查询实验室列表(用户端,管理端)
      */

+ 5 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteLaboratoryFallbackFactory.java

@@ -261,6 +261,11 @@ public class RemoteLaboratoryFallbackFactory implements FallbackFactory<RemoteLa
             }
 
             @Override
+            public R update(Algorithm algorithm) {
+                return R.fail("修改算法失败:" + cause.getMessage());
+            }
+
+            @Override
             public R getCheckInfo(Long id) {
                 return R.fail("获取实验室检查项失败:" + cause.getMessage());
             }

+ 35 - 7
zd-model/src/main/java/com/zd/model/entity/Algorithm.java

@@ -8,6 +8,7 @@ import java.util.Date;
 
 /**
  * 算法结果
+ *
  * @Author: zhoupan
  * @Date: 2021/11/26/15:33
  * @Description:
@@ -28,6 +29,12 @@ public class Algorithm {
     private Integer isAlarm;
     @ApiModelProperty("原始图片")
     private String originalImg;
+    @ApiModelProperty("算法请求状态码")
+    private Long respCode;
+    @ApiModelProperty("算法请求返回的json串")
+    private String respData;
+    @ApiModelProperty("更新时间")
+    private Date updateTime;
     /**
      * 只有签到检查存在
      */
@@ -40,7 +47,7 @@ public class Algorithm {
 
     private String algorithmName;
 
-    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
 
 
@@ -100,7 +107,6 @@ public class Algorithm {
         this.algorithmType = algorithmType;
     }
 
-
     public String getAlgorithmResult() {
         return algorithmResult;
     }
@@ -109,9 +115,8 @@ public class Algorithm {
         this.algorithmResult = algorithmResult;
     }
 
-
     public int getStatus() {
-       return status;
+        return status;
     }
 
     public void setStatus(int status) {
@@ -119,7 +124,6 @@ public class Algorithm {
     }
 
     public String getAlgorithmName() {
-
         return algorithmName;
     }
 
@@ -135,7 +139,31 @@ public class Algorithm {
         this.isAlarm = isAlarm;
     }
 
-    public String getOriginalImg() {        return originalImg;    }
+    public String getOriginalImg() {
+        return originalImg;
+    }
+
+    public void setOriginalImg(String originalImg) {
+        this.originalImg = originalImg;
+    }
+
+    public Long getRespCode() {
+        return respCode;
+    }
+
+    public void setRespCode(Long respCode) {
+        this.respCode = respCode;
+    }
+
+    public String getRespData() {
+        return respData;
+    }
+
+    public void setRespData(String respData) {
+        this.respData = respData;
+    }
+
+    public Date getUpdateTime() {        return updateTime;    }
 
-    public void setOriginalImg(String originalImg) {        this.originalImg = originalImg;    }
+    public void setUpdateTime(Date updateTime) {        this.updateTime = updateTime;    }
 }

+ 31 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/controller/SignInCheckController.java

@@ -12,6 +12,7 @@ import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.redis.RedisService;
 import com.zd.common.core.utils.Assert;
 import com.zd.common.swagger.config.Knife4jConfiguration;
+import com.zd.laboratory.api.feign.RemoteLaboratoryService;
 import com.zd.model.domain.R;
 import com.zd.model.entity.Algorithm;
 import io.swagger.annotations.Api;
@@ -24,6 +25,8 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 
@@ -57,6 +60,9 @@ public class SignInCheckController {
     @Resource
     private FireImageService fireImageService;
 
+    @Autowired
+    private RemoteLaboratoryService laboratoryService;
+
     /**
      * 进入项验证
      *
@@ -163,4 +169,29 @@ public class SignInCheckController {
     public R checkFire(@ApiParam("图片文件") @RequestParam("file") MultipartFile file) {
         return R.ok(fireImageService.catchImage(file));
     }
+/*
+    @PostMapping("/testXXF")
+    public R testXXF() {
+        //TODO 添加一条请求记录到数据库,
+        Algorithm algorithmFirst = new Algorithm();
+        R alg= laboratoryService.saveAlgorithmData(algorithmFirst);
+        System.out.println(alg.getData());
+        Map<String,String> map = new HashMap<>();
+        map.put("type", "image");
+        map.put("data1","data1");
+        map.put("XXf","XXF");
+        map.put("QQQW","12345");
+        algorithmFirst.setAlgorithmResult("/statics/2022/09/09/404dbcb6-6959-477a-9d1c-94fa136e81da.jpeg");
+        algorithmFirst.setSignId(1557192675937570818L);
+        algorithmFirst.setSubId(123L);
+        algorithmFirst.setAlgorithmName("实验服识别图片算法");
+        algorithmFirst.setIsAlarm(0);
+        algorithmFirst.setRespCode(2058L);
+        algorithmFirst.setOriginalImg("setOriginalImg");
+        algorithmFirst.setRespData(map.toString());
+        algorithmFirst.setId(Long.valueOf(alg.getData()+""));
+        algorithmFirst.setUpdateTime(new Date());
+        R f = laboratoryService.update(algorithmFirst);
+        return R.ok(f);
+    }*/
 }

+ 19 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/CheckService.java

@@ -129,15 +129,25 @@ public class CheckService {
                 AlgorithmYml.CheckValid checkValid = algorithmYml.getCheckValid(Integer.valueOf(code));
                 MultiValueMap<String, Object> params = getStringObjectMultiValueMap(checkValid, String.valueOf(id));
                 HttpEntity<MultiValueMap<String, Object>> files = getHttpEntityMap(toFile, params);
+                //TODO 添加一条请求记录到数据库,
+                Algorithm algorithmFirst = new Algorithm();
+                R<Algorithm> alg= laboratoryService.saveAlgorithmData(algorithmFirst);
+                logger.info("===============算法数据添加结果,id="+alg.getData());
                 logger.info("===============4=================");
                 ImgPostResponse<AnalysisReturnData> send = HttpUtils.sendV5(restTemplateLocal, files, algorithmYml);
                 if (send == null || send.getStatus_code() != 1000) {
+                    //算法记录更新
+                    algorithmFirst.setRespCode(send.getStatus_code());
+                    algorithmFirst.setId(Long.valueOf(alg.getData().toString()));
+                    laboratoryService.update(algorithmFirst);
+                    logger.info("===============算法请求异常,更新数据,id="+alg.getData().getId());
                     assert send != null;
                     logger.error("==================4.1==================="+send.getStatus_code()+"==========="+send.getMessage());
                     return R.fail("算法服务错误,请重试!");
                 }
                 logger.info("===============5=================");
-                R algorithm = saveAlgorithmV5(file,send, checkValid);
+                R algorithm = saveAlgorithmV5(Long.valueOf(alg.getData().toString()),file,send, checkValid);
+                logger.info("===============算法请求正常,更新数据"+algorithm.getData());
                 if (algorithm.getCode() != 200) {
                     logger.error("==============="+algorithm.getCode()+"=================");
                     return algorithm;
@@ -299,6 +309,7 @@ public class CheckService {
 
     public Algorithm CovertV5(Map<String, Object> data) {
         Algorithm algorithm = new Algorithm();
+        algorithm.setId(Long.valueOf(data.get("id").toString()));
         algorithm.setAlgorithmType(data.get("type").toString());
         algorithm.setAlgorithmResult(data.get("src_img").toString());
         algorithm.setSubId(Long.valueOf(data.get("aid").toString()));
@@ -306,6 +317,8 @@ public class CheckService {
         algorithm.setAlgorithmName(data.get("algorithmName").toString());
         algorithm.setIsAlarm(Integer.parseInt(data.get("isAlarm").toString()));
         algorithm.setOriginalImg(data.get("originalImg").toString());
+        algorithm.setRespData(data.get("requestData").toString());
+        algorithm.setUpdateTime(new Date());
         algorithm.setStatus(0);
         return algorithm;
     }
@@ -568,7 +581,7 @@ public class CheckService {
      * @param send
      * @param checkValid
      */
-    private R saveAlgorithmV5(MultipartFile file,ImgPostResponse<AnalysisReturnData> send,AlgorithmYml.CheckValid checkValid){
+    private R saveAlgorithmV5(Long id,MultipartFile file,ImgPostResponse<AnalysisReturnData> send,AlgorithmYml.CheckValid checkValid){
         String picture = send.getData().getRet_image();
         String header = "data:image/jpeg;base64,"+picture;
         MultipartFile multipartFile = Base64DecodedMultipartFile.base64ToMultipart(header);
@@ -595,7 +608,10 @@ public class CheckService {
         map.put("originalImg", originalUrl);
         map.put("type", "image");
         map.put("algorithmName", checkValid.getAlgorithmName());
+        map.put("id",id);
+        map.put("requestData", JSONObject.toJSONString(send));
         logger.info("=======================map.tostring()"+map.toString());
-        return laboratoryService.saveAlgorithmData(CovertV5(map));
+        //return laboratoryService.saveAlgorithmData(CovertV5(map));
+        return laboratoryService.update(CovertV5(map));
     }
 }

+ 2 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/AlgorithmController.java

@@ -53,7 +53,8 @@ public class AlgorithmController extends BaseController {
     @PostMapping("/saveAlgorithm")
     public ResultData saveAlgorithmData(@RequestBody Algorithm algorithm) {
         logger.info("===================记录添加========================");
-        return  ResultData.success(algorithmService.saveData(algorithm));
+        Object flg =algorithmService.saveData(algorithm);
+        return  ResultData.success(Integer.valueOf(flg.toString())>0?algorithm.getId():Integer.valueOf(flg.toString()));
     }
 
 

+ 51 - 23
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/AlgorithmMapper.xml

@@ -1,66 +1,94 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zd.laboratory.mapper.AlgorithmMapper">
 
     <select id="queryList" resultType="com.zd.model.entity.AlgorithmVO" parameterType="com.zd.model.entity.AlgorithmVO">
-        select la.*,su.nick_name as userName,ls.`name` as subName from   lab_algorithm la
-              left join lab_subject_access_record lsar
-                        ON lsar.id = la.sign_id
-              left join sys_user su
-                        on su.user_id= lsar.join_user_id
-              left join lab_subject ls
-                        on ls.id= lsar.subject_id
+        select la.id,la.algorithm_type,la.algorithm_result,la.parse_result,
+               la.parse_result_msg,la.original_img,la.request_code,
+               la.sign_id,la.sub_id,la.create_time,la.status,la.algorithm_name,
+               la.is_alarm,
+        su.nick_name as userName,ls.`name` as subName from lab_algorithm la
+        left join lab_subject_access_record lsar
+        ON lsar.id = la.sign_id
+        left join sys_user su
+        on su.user_id= lsar.join_user_id
+        left join lab_subject ls
+        on ls.id= lsar.subject_id
         <where>
-            <if test="algorithmType != null "> and a.hardware_id = #{hardwareId}</if>
-            <if test="inTime!=null"> and la.create_time BETWEEN #{inTime} AND #{outTime}</if>
-            <if test="status!=-1"> and la.status =#{status}</if>
-            <if test="isAlarm!=null"> and la.is_alarm =#{isAlarm}</if>
+            <if test="algorithmType != null ">and a.hardware_id = #{hardwareId}</if>
+            <if test="inTime!=null">and la.create_time BETWEEN #{inTime} AND #{outTime}</if>
+            <if test="status!=-1">and la.status =#{status}</if>
+            <if test="isAlarm!=null">and la.is_alarm =#{isAlarm}</if>
         </where>
-         ORDER BY la.id desc
+        ORDER BY la.id desc
     </select>
 
-    <select id="getId"  resultType="com.zd.model.entity.Algorithm">
-        select * from lab_algorithm where id=#{id}
+    <select id="getId" resultType="com.zd.model.entity.Algorithm">
+        select *
+        from lab_algorithm
+        where id = #{id}
     </select>
 
-    <insert id="insertBatchAlgorithm" parameterType="com.zd.model.entity.Algorithm" >
+    <insert id="insertBatchAlgorithm" parameterType="com.zd.model.entity.Algorithm" useGeneratedKeys="true" keyProperty="id">
         insert into lab_algorithm
         <trim prefix="(" suffix=")" suffixOverrides=",">
             algorithm_type,
             algorithm_result,
             original_img,
+            resp_code,
+            resp_data,
             parse_result,
             parse_result_msg,
             sign_id,
             is_alarm,
             sub_id,
             algorithm_name
-         </trim>
+        </trim>
         values
         <foreach collection="list" item="item" separator=",">
             <trim prefix="(" suffix=")" suffixOverrides=",">
                 #{item.algorithmType},
                 #{item.algorithmResult},
                 #{item.originalImg},
+                #{item.respCode},
+                #{item.respData},
                 #{item.parseResult},
                 #{item.parseResultMsg},
                 #{item.signId},
                 #{item.isAlarm},
                 #{item.subId},
-               #{item.algorithmName}
-             </trim>
+                #{item.algorithmName}
+            </trim>
         </foreach>
 
     </insert>
 
     <update id="update" parameterType="com.zd.model.entity.Algorithm">
-        update lab_algorithm set algorithm_type=#{algorithmType},algorithm_name=#{algorithmName} where id=#{id}
+        update lab_algorithm
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="algorithmType != null">algorithm_type = #{algorithmType},</if>
+            <if test="algorithmResult != null">algorithm_result = #{algorithmResult},</if>
+            <if test="parseResult != null">parse_result = #{parseResult},</if>
+            <if test="parseResultMsg != null">parse_result_msg = #{parseResultMsg},</if>
+            <if test="originalImg != null">original_img = #{originalImg},</if>
+            <if test="respCode != null">resp_code = #{respCode},</if>
+            <if test="respData != null">resp_data = #{respData},</if>
+            <if test="signId != null">sign_id = #{signId},</if>
+            <if test="subId != null">sub_id = #{subId},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="algorithmName != null">algorithm_name = #{algorithmName},</if>
+            <if test="isAlarm != null">is_alarm = #{isAlarm},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
     </update>
 
-    <delete id="del"  >
-        delete from lab_algorithm where id=#{id}
+    <delete id="del">
+        delete
+        from lab_algorithm
+        where id = #{id}
     </delete>
 
 </mapper>