Explorar el Código

单项目多机台情况下,任意机台的检查内容修改了,其他机台自动同步修改接口

wangxuan hace 10 meses
padre
commit
88ba9a547c

+ 30 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxCommissionCheckDao.java

@@ -1,7 +1,11 @@
 package com.rongwei.bscommon.sys.dao;
 
+import com.rongwei.bsentity.domain.ZhcxCommissionCheckDetailDo;
 import com.rongwei.bsentity.domain.ZhcxCommissionCheckDo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,30 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ZhcxCommissionCheckDao extends BaseMapper<ZhcxCommissionCheckDo> {
 
+    /**
+     * 根据主表id 查询该机台是否已经发运
+     * @return
+     */
+    int checkedShippedByMasterId(@Param("masterId") String masterId);
+
+    /**
+     * 根据主表id 查询该项目下还没有发运的机台
+     * @param masterId
+     * @return
+     */
+    List<ZhcxCommissionCheckDo> getOtherShippeCheckList(@Param("masterId") String masterId);
+
+    /**
+     * 删除试车检查内容下的所有子表(危险操作)
+     * @param pid 试车检查主表id
+     */
+    void deleteCheckDetailByPid(@Param("pid") String pid);
+
+    /**
+     * 根据pid和源标准库章节号找到可能存在填写过的子表数据
+     * @param pid 试车主表id
+     * @param chapterno 标准库章节号
+     * @return
+     */
+    List<ZhcxCommissionCheckDetailDo> selectDetailListByPidAndChapterno(@Param("pid")String pid, @Param("chapterno")String chapterno);
 }

+ 4 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxCommissionCheckService.java

@@ -2,6 +2,7 @@ package com.rongwei.bscommon.sys.service;
 
 import com.rongwei.bsentity.domain.ZhcxCommissionCheckDo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.dto.CheckDetailDTO;
 import com.rongwei.bsentity.dto.CommissionCheckDTO;
 import com.rongwei.rwcommon.base.R;
 
@@ -21,4 +22,7 @@ public interface ZhcxCommissionCheckService extends IService<ZhcxCommissionCheck
      * @return 响应状态
      */
     R commissionCheckAdd(CommissionCheckDTO checkDTO);
+
+
+    R updateSynchronizationDetail(CheckDetailDTO detailDTO);
 }

+ 103 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxCommissionCheckServiceImpl.java

@@ -12,6 +12,7 @@ import com.rongwei.bscommon.sys.service.ZhcxCommissionCheckService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bsentity.domain.ZhcxCommissionCheckParameterSetDetalDo;
 import com.rongwei.bsentity.domain.ZhcxCommissionCheckParameterSetDo;
+import com.rongwei.bsentity.dto.CheckDetailDTO;
 import com.rongwei.bsentity.dto.CommissionCheckDTO;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.utils.SecurityUtil;
@@ -126,6 +127,108 @@ public class ZhcxCommissionCheckServiceImpl extends ServiceImpl<ZhcxCommissionCh
         return R.ok("保存成功");
     }
 
+    @Override
+    public R updateSynchronizationDetail(CheckDetailDTO detailDTO) {
+        String masterId = detailDTO.getMasterId();
+        if (masterId == null){
+            return R.error("主表id为空");
+        }
+        // 判断该机台是否已发运 如果已发运 就直接返回
+        if(baseMapper.checkedShippedByMasterId(masterId) >0){
+            return R.ok("该机台已发运,无需同步");
+        }
+        // 找到该项目下面其他 还没有发运的 机台主表数据
+        List<ZhcxCommissionCheckDo> list = baseMapper.getOtherShippeCheckList(masterId);
+        if(list.isEmpty()){
+            return R.ok("暂无其他机台需要同步");
+        }
+        // 主试车检查下的试车检查内容子表
+        LambdaQueryWrapper<ZhcxCommissionCheckDetailDo> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ZhcxCommissionCheckDetailDo::getDeleted,"0")
+                .eq(ZhcxCommissionCheckDetailDo::getPid,masterId);
+        List<ZhcxCommissionCheckDetailDo> detailDos = commissionCheckDetailService.list(queryWrapper);
+        if(detailDos.isEmpty()){
+            return R.ok("试车检查内容为空");
+        }
+        // 创建检查内容结果集合
+        List<ZhcxCommissionCheckDetailDo>  resultCheckDetailDo = new ArrayList<>();
+        for (ZhcxCommissionCheckDo zhcxCommissionCheckDo : list) {
+            // 1.将其他机台的子表全删
+            baseMapper.deleteCheckDetailByPid(zhcxCommissionCheckDo.getId());
+            // 2.将主试车表的检查内容复制
+            for (ZhcxCommissionCheckDetailDo detailDo : detailDos) {
+                ZhcxCommissionCheckDetailDo detailVo = structureCheckDetailVo(detailDo,zhcxCommissionCheckDo.getId());
+                resultCheckDetailDo.add(detailVo);
+            }
+        }
+        if(!resultCheckDetailDo.isEmpty()){
+            commissionCheckDetailService.saveBatch(resultCheckDetailDo);
+        }
+        return R.ok("同步成功");
+    }
+
+    /**
+     * 构建一条新的试车检查内容数据
+     * @param detailDo
+     * @param pid
+     * @return
+     */
+    private ZhcxCommissionCheckDetailDo structureCheckDetailVo(ZhcxCommissionCheckDetailDo detailDo,String pid){
+        ZhcxCommissionCheckDetailDo detailVo = new ZhcxCommissionCheckDetailDo();
+        detailVo.setId(SecurityUtil.getUUID());
+        detailVo.setPid(pid);
+        // 一级分类
+        detailVo.setOnelevelclassification(detailDo.getOnelevelclassification());
+        // 二级分类
+        detailVo.setSecondlevelclassification(detailDo.getSecondlevelclassification());
+        // 标准库子表id
+        detailVo.setBasedetailid(detailDo.getBasedetailid());
+        // 章节号
+        detailVo.setChapterno(detailDo.getChapterno());
+        // 模式一
+        detailVo.setClassification(detailDo.getClassification());
+        // 模式二
+        detailVo.setClassificationtwo(detailDo.getClassificationtwo());
+        // 标题中文
+        detailVo.setChtitle(detailDo.getChtitle());
+        // 标题英文
+        detailVo.setEntitle(detailDo.getEntitle());
+        // 测试内容中文
+        detailVo.setChtestcontent(detailDo.getChtestcontent());
+        // 测试内容英文
+        detailVo.setEntestcontent(detailDo.getEntestcontent());
+        // 标准测试方法
+        detailVo.setTestmethod(detailDo.getTestmethod());
+        // 标准测试时间
+        detailVo.setTesttime(detailDo.getTesttime());
+        // 状态
+        detailVo.setStatus(detailDo.getStatus());
+
+        if(Objects.nonNull(detailDo.getChapterno())) {
+            List<ZhcxCommissionCheckDetailDo> doList = baseMapper.selectDetailListByPidAndChapterno(pid,detailDo.getChapterno());
+            if (!doList.isEmpty()) {
+                ZhcxCommissionCheckDetailDo checkDetailDo = doList.get(0);
+                // 用户填选填充
+                detailVo.setDebuggerresult(checkDetailDo.getDebuggerresult());
+                detailVo.setDebuggerdate(checkDetailDo.getDebuggerdate());
+                detailVo.setDebuggerdata(checkDetailDo.getDebuggerdata());
+                detailVo.setSelftester(checkDetailDo.getSelftester());
+                detailVo.setSelftesterid(checkDetailDo.getSelftesterid());
+                detailVo.setDebuggerpic(checkDetailDo.getDebuggerpic());
+                detailVo.setDebuggernotes(checkDetailDo.getDebuggernotes());
+
+                detailVo.setTestresult(checkDetailDo.getTestresult());
+                detailVo.setTestdata(checkDetailDo.getTestdata());
+                detailVo.setQa(checkDetailDo.getQa());
+                detailVo.setQaid(checkDetailDo.getQaid());
+                detailVo.setTestdate(checkDetailDo.getTestdate());
+                detailVo.setTestpic(checkDetailDo.getTestpic());
+                detailVo.setTestnotes(checkDetailDo.getTestnotes());
+            }
+        }
+        return detailVo;
+    }
+
     /**
      * 构建/查找返回 试车参数主表
      * @param check  伪试车主表

+ 55 - 0
business-common/src/main/resources/mybatis/business/ZhcxCommissionCheckDao.xml

@@ -0,0 +1,55 @@
+<?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">
+
+<mapper namespace="com.rongwei.bscommon.sys.dao.ZhcxCommissionCheckDao">
+
+    <update id="deleteCheckDetailByPid" >
+        UPDATE ZHCX_COMMISSION_CHECK_DETAIL SET DELETED = '1' WHERE PID = #{pid}
+    </update>
+
+    <select id="checkedShippedByMasterId" resultType="java.lang.Integer">
+        SELECT COUNT(*) AS count
+        FROM INCONTROL.ZHCX_PROJECT_MANAGE_RECTIFY_BATCH t1
+        WHERE DELETED = '0' AND SAVESTATUS = 'save' AND t1.DATASTATUS = '10'
+          AND EXISTS (
+            SELECT 1
+            FROM INCONTROL.ZHCX_COMMISSION_CHECK t2
+            WHERE t2.ID = #{masterId}
+          AND ',' || t1.MACHINENOID || ',' LIKE '%,' || t2.MACHINEID || ',%'
+            )
+    </select>
+
+    <select id="getOtherShippeCheckList" resultType="com.rongwei.bsentity.domain.ZhcxCommissionCheckDo">
+        SELECT c.* FROM INCONTROL.ZHCX_COMMISSION_CHECK c WHERE c.DELETED = '0' AND c.PROJECTCODE = (
+            SELECT c.PROJECTCODE FROM INCONTROL.ZHCX_COMMISSION_CHECK c WHERE c.DELETED = '0' AND c.ID = #{masterId}
+        ) AND ID NOT IN (#{masterId}) AND MACHINEID NOT IN (
+            WITH temp_table AS (
+                SELECT batch.MACHINENOID FROM INCONTROL.ZHCX_PROJECT_MANAGE_RECTIFY_BATCH batch WHERE batch.DELETED = '0' AND batch.PROJECTCODE = (
+                    SELECT c.PROJECTCODE FROM INCONTROL.ZHCX_COMMISSION_CHECK c WHERE c.DELETED = '0' AND c.ID = #{masterId}
+                ) AND batch.SAVESTATUS = 'save' AND batch.DATASTATUS = '10'
+            ),
+                 split_table AS (
+                     SELECT REGEXP_SUBSTR(t.MACHINENOID, '[^,]+', 1, LEVEL) AS split_item
+                     FROM temp_table t
+        CONNECT BY REGEXP_SUBSTR(t.MACHINENOID, '[^,]+', 1, LEVEL) IS NOT NULL
+            ),
+            combined_table AS (
+              SELECT LISTAGG(DISTINCT split_item, ',') WITHIN GROUP (ORDER BY split_item) AS combined_result
+              FROM split_table
+            )
+        SELECT REGEXP_SUBSTR(c.combined_result, '[^,]+', 1, LEVEL) AS split_result
+        FROM combined_table c
+            CONNECT BY REGEXP_SUBSTR(c.combined_result, '[^,]+', 1, LEVEL) IS NOT NULL
+        )
+    </select>
+
+    <select id="selectDetailListByPidAndChapterno" resultType="com.rongwei.bsentity.domain.ZhcxCommissionCheckDetailDo">
+        SELECT *
+        FROM INCONTROL.ZHCX_COMMISSION_CHECK_DETAIL
+        WHERE DELETED = '1'
+          AND PID = #{pid}
+          AND CHAPTERNO = #{chapterno}
+          AND (DEBUGGERRESULT IS NOT NULL OR TESTRESULT IS NOT NULL)
+        ORDER BY MODIFYDATE DESC
+    </select>
+</mapper>

+ 2 - 2
business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxCommissionCheckDetailDo.java

@@ -151,13 +151,13 @@ public class ZhcxCommissionCheckDetailDo extends BaseDo implements Serializable
     @TableField("CHAPTERNO")
     private String chapterno;
     /**
-     * 分类
+     * 分类/模式一
      */
     @JsonProperty("CLASSIFICATION")
     @TableField("CLASSIFICATION")
     private String classification;
     /**
-     * 分类2
+     * 分类2/模式二
      */
     @JsonProperty("CLASSIFICATIONTWO")
     @TableField("CLASSIFICATIONTWO")

+ 37 - 0
business-entity/src/main/java/com/rongwei/bsentity/dto/CheckDetailDTO.java

@@ -0,0 +1,37 @@
+package com.rongwei.bsentity.dto;
+
+
+import com.rongwei.bsentity.domain.ZhcxCommissionCheckDetailDo;
+import com.rongwei.bsentity.domain.ZhcxCommissionCheckDo;
+import com.rongwei.bsentity.domain.ZhcxCommissionCheckParameterSetDetalDo;
+import io.swagger.annotations.ApiModel;
+import lombok.*;
+
+import java.util.List;
+
+/**
+ * 同步更新该项目下机台的检查内容数据DTO
+ */
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@ApiModel
+public class CheckDetailDTO {
+
+    /**
+     *  试车检查主表id
+     */
+    private String masterId;
+
+    // 检查内容(子表) 删除集合
+    //private List<ZhcxCommissionCheckDetailDo> deleteList;
+
+    // 检查内容(子表) 添加集合
+    //private List<ZhcxCommissionCheckDetailDo> insertList;
+
+    // 检查内容(子表) 更新集合
+    //private List<ZhcxCommissionCheckDetailDo> updateList;
+
+}

+ 18 - 1
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxCommissionCheckController.java

@@ -2,6 +2,7 @@ package com.rongwei.bsserver.controller;
 
 
 import com.rongwei.bscommon.sys.service.ZhcxCommissionCheckService;
+import com.rongwei.bsentity.dto.CheckDetailDTO;
 import com.rongwei.bsentity.dto.CommissionCheckDTO;
 import com.rongwei.rwcommon.base.R;
 import lombok.extern.slf4j.Slf4j;
@@ -32,7 +33,7 @@ public class ZhcxCommissionCheckController {
      * @return 响应状态
      */
     @PostMapping("/commissionCheckAdd")
-    public R forgetPwdSendSmsCode(@RequestBody CommissionCheckDTO checkDTO){
+    public R commissionCheckAdd(@RequestBody CommissionCheckDTO checkDTO){
         try {
             log.info("进入接口:/zhcxCommissionCheck/commissionCheckAdd,入参:{}", checkDTO);
             return commissionCheckService.commissionCheckAdd(checkDTO);
@@ -41,5 +42,21 @@ public class ZhcxCommissionCheckController {
             return R.error("试车报告新增异常");
         }
     }
+
+    /**
+     * 试车报告子表同步更新其他机台
+     * @param detailDTO 参数
+     * @return 响应状态
+     */
+    @PostMapping("/updateSynchronizationDetail")
+    public R updateSynchronizationDetail(@RequestBody CheckDetailDTO detailDTO){
+        try {
+            log.info("进入接口:/zhcxCommissionCheck/updateSynchronizationDetail,入参:{}", detailDTO);
+            return commissionCheckService.updateSynchronizationDetail(detailDTO);
+        } catch (Exception e) {
+            log.info(String.valueOf(e));
+            return R.error("试车报告新增异常");
+        }
+    }
 }