Kaynağa Gözat

新增内部报验细节完善项和标书要点功能

wangming 9 ay önce
ebeveyn
işleme
760448cdd6

+ 22 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxInsideInspectionBiddingDocPointService.java

@@ -2,6 +2,11 @@ package com.rongwei.bscommon.sys.service;
 
 import com.rongwei.bsentity.domain.ZhcxInsideInspectionBiddingDocPointDo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.dto.inside.InsideInspectionExecuteRequest;
+import com.rongwei.rwcommon.vo.generalsql.GeneralUpdateVo;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +18,21 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ZhcxInsideInspectionBiddingDocPointService extends IService<ZhcxInsideInspectionBiddingDocPointDo> {
 
+    /**
+     * 检验员更改记录
+     *
+     * @param insideId
+     * @param coreList
+     * @return
+     */
+    List<String> editCheckerColsHistory(String insideId, List<GeneralUpdateVo> coreList);
+
+    /**
+     * 保持并记录日志
+     *
+     * @param insideId
+     * @param req
+     * @param descMap
+     */
+    void saveAndLog(String insideId, InsideInspectionExecuteRequest req, Map<String, String> descMap);
 }

+ 11 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxInsideInspectionCoreIndicatorsService.java

@@ -2,10 +2,12 @@ package com.rongwei.bscommon.sys.service;
 
 import com.rongwei.bsentity.domain.ZhcxInsideInspectionCoreIndicatorsDo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.dto.inside.InsideInspectionExecuteRequest;
 import com.rongwei.rwcommon.vo.generalsql.GeneralUpdateVo;
 import com.rongwei.rwcommon.vo.generalsql.SlaveDMLVo;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -50,4 +52,13 @@ public interface ZhcxInsideInspectionCoreIndicatorsService extends IService<Zhcx
      * @return
      */
     List<String> editCheckerColsHistory(String insideId, List<GeneralUpdateVo> coreList);
+
+    /**
+     * 保持并记录日志
+     *
+     * @param insideId
+     * @param req
+     * @param descMap
+     */
+    void saveAndLog(String insideId, InsideInspectionExecuteRequest req, Map<String, String> descMap);
 }

+ 23 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxInsideInspectionDetailImprovementItemService.java

@@ -2,6 +2,11 @@ package com.rongwei.bscommon.sys.service;
 
 import com.rongwei.bsentity.domain.ZhcxInsideInspectionDetailImprovementItemDo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.dto.inside.InsideInspectionExecuteRequest;
+import com.rongwei.rwcommon.vo.generalsql.GeneralUpdateVo;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +18,22 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ZhcxInsideInspectionDetailImprovementItemService extends IService<ZhcxInsideInspectionDetailImprovementItemDo> {
 
+    /**
+     * 检验员更改记录
+     *
+     * @param insideId
+     * @param coreList
+     * @return
+     */
+    List<String> editCheckerColsHistory(String insideId, List<GeneralUpdateVo> coreList);
+
+    /**
+     * 保持并记录日志
+     *
+     * @param insideId
+     * @param req
+     * @param descMap
+     */
+    void saveAndLog(String insideId, InsideInspectionExecuteRequest req, Map<String, String> descMap);
+
 }

+ 10 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxInsideInspectionDispatchService.java

@@ -3,6 +3,8 @@ package com.rongwei.bscommon.sys.service;
 import com.rongwei.bsentity.domain.ZhcxInsideInspectionDispatchDo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.ZhcxInsideInspectionDo;
+import com.rongwei.bsentity.dto.inside.InsideInspectionExecuteRequest;
+import com.rongwei.bsentity.dto.inside.InsideOperDto;
 
 /**
  * <p>
@@ -21,6 +23,14 @@ public interface ZhcxInsideInspectionDispatchService extends IService<ZhcxInside
      */
     void genDispatch(ZhcxInsideInspectionDo inspectionDo);
 
+    /**
+     * 获取执行派单信息
+     *
+     * @param inOper
+     * @param req
+     * @return
+     */
+    ZhcxInsideInspectionDispatchDo getExecute(InsideOperDto inOper, InsideInspectionExecuteRequest req);
 
     /**
      * 重新报验

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

@@ -1,11 +1,25 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.rongwei.bsentity.domain.ZhcxInsideInspectionBiddingDocPointDo;
 import com.rongwei.bscommon.sys.dao.ZhcxInsideInspectionBiddingDocPointDao;
 import com.rongwei.bscommon.sys.service.ZhcxInsideInspectionBiddingDocPointService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bsentity.domain.ZhcxInsideInspectionCoreIndicatorsDo;
+import com.rongwei.bsentity.domain.ZhcxInsideInspectionDetailImprovementItemDo;
+import com.rongwei.bsentity.dto.inside.InsideInspectionExecuteRequest;
+import com.rongwei.rwadmincommon.system.service.SysGeneralCRUDService;
+import com.rongwei.rwcommon.base.exception.CustomException;
+import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.rwcommon.vo.generalsql.GeneralUpdateVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.*;
+
 /**
  * <p>
  * 内部报验-报验管理-标书要点 服务实现类
@@ -17,4 +31,485 @@ import org.springframework.stereotype.Service;
 @Service
 public class ZhcxInsideInspectionBiddingDocPointServiceImpl extends ServiceImpl<ZhcxInsideInspectionBiddingDocPointDao, ZhcxInsideInspectionBiddingDocPointDo> implements ZhcxInsideInspectionBiddingDocPointService {
 
+    @Autowired
+    private SysGeneralCRUDService generalCRUDService;
+
+    /**
+     * 检验员更改记录
+     *
+     * @param insideId
+     * @param coreList
+     * @return
+     */
+    @Override
+    public List<String> editCheckerColsHistory(String insideId, List<GeneralUpdateVo> coreList) {
+        final LambdaQueryWrapper<ZhcxInsideInspectionBiddingDocPointDo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ZhcxInsideInspectionBiddingDocPointDo::getInsideid, insideId)
+                .eq(ZhcxInsideInspectionBiddingDocPointDo::getDeleted, "0");
+        final List<ZhcxInsideInspectionBiddingDocPointDo> list = list(queryWrapper);
+
+        return editHistory(list, coreList);
+    }
+
+    /**
+     * 保持并记录日志
+     *
+     * @param insideId
+     * @param req
+     * @param descMap
+     */
+    @Override
+    public void saveAndLog(String insideId, InsideInspectionExecuteRequest req, Map<String, String> descMap) {
+        if(ObjectUtil.isNull(req.getCoreMap()) || ObjectUtil.isEmpty(req.getCoreMap().get(insideId))) {
+            return ;
+        }
+
+        final List<GeneralUpdateVo> generalUpdateVoList = req.getCoreMap().get(insideId);
+        if(ObjectUtil.isNotEmpty(generalUpdateVoList)) {
+            List<String> editList = editCheckerColsHistory(insideId, generalUpdateVoList);
+            if(ObjectUtil.isNotEmpty(editList)) {
+                descMap.put(insideId, StringUtils.join(editList, ","));
+            }
+        }
+
+        try {
+            for (GeneralUpdateVo generalUpdateVo : generalUpdateVoList) {
+                generalCRUDService.generalUpdate(generalUpdateVo);
+            }
+        } catch (Exception e) {
+            log.error("保存失败: {}", e);
+            throw new CustomException("保存失败");
+        }
+    }
+
+    /**
+     * 检验员修改记录
+     *
+     * @param coreList
+     * @param slaveUpdate
+     * @return
+     */
+    private List<String> editHistory(List<ZhcxInsideInspectionBiddingDocPointDo> coreList, List<GeneralUpdateVo> slaveUpdate) {
+
+        if(ObjectUtil.isEmpty(slaveUpdate)) {
+            return Collections.emptyList();
+        }
+
+        Map<String, ZhcxInsideInspectionBiddingDocPointDo> coreMap = new HashMap<>(coreList.size());
+        coreList.stream().forEach(item -> coreMap.put(item.getId(), item));
+
+        List<String> result = new ArrayList<>();
+
+        for(GeneralUpdateVo update : slaveUpdate) {
+            String id = update.getUpdatecolumns().get("ID").toString();
+            ZhcxInsideInspectionBiddingDocPointDo indicators = coreMap.get(id);
+
+            if(ObjectUtil.isNull(indicators)) {
+                continue;
+            }
+
+            diffRow(indicators, update.getUpdatecolumns(), result);
+        }
+
+        return result;
+    }
+
+    /**
+     * 单个核心检验指标不同
+     *
+     * @param core
+     * @param updatecolumns
+     * @param result
+     */
+    private void diffRow(ZhcxInsideInspectionBiddingDocPointDo core, Map<String,Object> updatecolumns, List<String> result) {
+
+        List<String> updateCols = new ArrayList<>();
+        StringBuilder editRow = new StringBuilder("检查项:");
+        if(ObjectUtil.isNull(updatecolumns.get("INSPECTON_ITEMS"))) {
+            editRow.append(StringUtils.toString(core.getInspectonItems(), ""));
+        } else {
+            editRow.append(StringUtils.toString(updatecolumns.get("INSPECTON_ITEMS"), ""));
+        }
+
+        //实测记录
+        diffCheckerActualRecord(core, updatecolumns, updateCols);
+        //判定结果
+        diffCheckerResult(core, updatecolumns, updateCols);
+        //备注
+        diffCheckerRemark(core, updatecolumns, updateCols);
+
+        if(ObjectUtil.isEmpty(updateCols)) {
+            return ;
+        }
+
+        editRow.append(StringUtils.join(updateCols, ","));
+        result.add(editRow.toString());
+    }
+
+    /**
+     * 不同检验员备注
+     *
+     * @param core
+     * @param updatecolumns
+     * @param updateCols
+     */
+    private void diffCheckerRemark(ZhcxInsideInspectionBiddingDocPointDo core, Map<String, Object> updatecolumns, List<String> updateCols) {
+        if(ObjectUtil.isEmpty(core.getCheckremark()) && ObjectUtil.isEmpty(updatecolumns.get("CHECKREMARK"))) {
+            return ;
+        }
+
+        if(ObjectUtil.isEmpty(core.getCheckremark()) && ObjectUtil.isNotEmpty(updatecolumns.get("CHECKREMARK"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "检验员备注:"
+                    , "空变更为:"
+                    , updatecolumns.get("CHECKREMARK").toString()
+            );
+            updateCols.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(ObjectUtil.isNotEmpty(core.getCheckremark()) && ObjectUtil.isEmpty(updatecolumns.get("CHECKREMARK"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "检验员备注:"
+                    , core.getCheckremark()
+                    , "变更为空"
+            );
+            updateCols.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(core.getCheckremark().equals(updatecolumns.get("CHECKREMARK").toString())) {
+            return ;
+        }
+
+        String reservationinspectiontime = StrUtil.concat(true, "检验员备注:"
+                , core.getCheckremark()
+                , "变更为"
+                , updatecolumns.get("CHECKREMARK").toString()
+        );
+        updateCols.add(reservationinspectiontime);
+    }
+
+    /**
+     *
+     * 不同检验员结果判定
+     *
+     * @param core
+     * @param updatecolumns
+     * @param updateCols
+     */
+    private void diffCheckerResult(ZhcxInsideInspectionBiddingDocPointDo core, Map<String, Object> updatecolumns, List<String> updateCols) {
+        if(ObjectUtil.isEmpty(core.getCheckresult()) && ObjectUtil.isEmpty(updatecolumns.get("CHECKRESULT"))) {
+            return ;
+        }
+
+        if(ObjectUtil.isEmpty(core.getCheckresult()) && ObjectUtil.isNotEmpty(updatecolumns.get("CHECKRESULT"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "检验员结果判定:"
+                    , "空变更为:"
+                    , updatecolumns.get("CHECKRESULT").toString()
+            );
+            updateCols.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(ObjectUtil.isNotEmpty(core.getCheckresult()) && ObjectUtil.isEmpty(updatecolumns.get("CHECKRESULT"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "检验员结果判定:"
+                    , core.getCheckresult()
+                    , "变更为空"
+            );
+            updateCols.add(reservationinspectiontime);
+            return;
+        }
+
+        if(core.getCheckresult().equals(updatecolumns.get("CHECKRESULT").toString())) {
+            return ;
+        }
+
+        String reservationinspectiontime = StrUtil.concat(true, "检验员结果判定:"
+                , core.getCheckresult()
+                , "变更为"
+                , updatecolumns.get("CHECKRESULT").toString()
+        );
+        updateCols.add(reservationinspectiontime);
+    }
+
+    /**
+     * 不同检验员实测记录
+     *
+     * @param core
+     * @param updatecolumns
+     * @param updateCols
+     */
+    private void diffCheckerActualRecord(ZhcxInsideInspectionBiddingDocPointDo core, Map<String, Object> updatecolumns, List<String> updateCols) {
+        if(ObjectUtil.isEmpty(core.getCheckactualrecord()) && ObjectUtil.isEmpty(updatecolumns.get("CHECKACTUALRECORD"))) {
+            return ;
+        }
+
+        if(ObjectUtil.isEmpty(core.getCheckactualrecord()) && ObjectUtil.isNotEmpty(updatecolumns.get("CHECKACTUALRECORD"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "检验员实测记录:"
+                    , "空变更为:"
+                    , updatecolumns.get("CHECKACTUALRECORD").toString()
+            );
+            updateCols.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(ObjectUtil.isNotEmpty(core.getCheckactualrecord()) && ObjectUtil.isEmpty(updatecolumns.get("CHECKACTUALRECORD"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "检验员实测记录:"
+                    , core.getCheckactualrecord()
+                    , "变更为空"
+            );
+            updateCols.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(core.getCheckactualrecord().equals(updatecolumns.get("CHECKACTUALRECORD").toString())) {
+            return ;
+        }
+
+        String reservationinspectiontime = StrUtil.concat(true, "检验员实测记录:"
+                , core.getCheckactualrecord()
+                , "变更为"
+                , updatecolumns.get("CHECKACTUALRECORD").toString()
+        );
+        updateCols.add(reservationinspectiontime);
+    }
+
+    /**
+     * 找出修改记录
+     *
+     * @param coreList
+     * @param slaveUpdate
+     * @return
+     */
+    private List<String> editSelfCosHistory(List<ZhcxInsideInspectionCoreIndicatorsDo> coreList, List<GeneralUpdateVo> slaveUpdate) {
+        if(ObjectUtil.isEmpty(coreList) && ObjectUtil.isEmpty(slaveUpdate)) {
+            return Collections.emptyList();
+        }
+
+        List<String> result = new ArrayList<>();
+        if(ObjectUtil.isEmpty(coreList) && ObjectUtil.isNotEmpty(slaveUpdate)) {
+//            for(GeneralUpdateVo update : slaveUpdate) {
+//                difSelfCoreIndicatorCoreNull4Update(update.getUpdatecolumns(), result);
+//            }
+            result.add("添加核心检验指标");
+            return result;
+        }
+        if(ObjectUtil.isEmpty(slaveUpdate) && ObjectUtil.isNotEmpty(coreList)) {
+//            for(ZhcxInsideInspectionCoreIndicatorsDo core : coreList) {
+//                difSelfCoreIndicatorUpdateNull4Entity(core, result);
+//            }
+//            result.add("移除核心检验指标");
+            return result;
+        }
+
+        Map<String, ZhcxInsideInspectionCoreIndicatorsDo> coreMap = new HashMap<>(coreList.size());
+        coreList.stream().forEach(item -> coreMap.put(item.getId(), item));
+
+        for(GeneralUpdateVo update : slaveUpdate) {
+            String id = update.getUpdatecolumns().get("ID").toString();
+            ZhcxInsideInspectionCoreIndicatorsDo indicators = coreMap.get(id);
+
+            if(ObjectUtil.isNull(indicators)) {
+                difSelfCoreIndicatorCoreNull4Update(update.getUpdatecolumns(), result);
+                continue;
+            }
+
+            difSelfCoreIndicator(indicators, update.getUpdatecolumns(), result);
+        }
+
+        return result;
+    }
+
+    /**
+     * 自检员实测记录不同
+     *
+     * @param core
+     * @param updatecolumns
+     * @param result
+     */
+    private void diffSelfActualRecord(ZhcxInsideInspectionCoreIndicatorsDo core, Map<String,Object> updatecolumns, List<String> result) {
+        if(ObjectUtil.isEmpty(core.getSelfactualrecord()) && ObjectUtil.isEmpty(updatecolumns.get("SELFACTUALRECORD"))) {
+            return ;
+        }
+
+        if(ObjectUtil.isEmpty(core.getSelfactualrecord()) && ObjectUtil.isNotEmpty(updatecolumns.get("SELFACTUALRECORD"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "自检员实测记录:"
+                    , "空变更为:"
+                    , updatecolumns.get("SELFACTUALRECORD").toString()
+            );
+            result.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(ObjectUtil.isNotEmpty(core.getSelfactualrecord()) && ObjectUtil.isEmpty(updatecolumns.get("SELFACTUALRECORD"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "自检员实测记录:"
+                    , core.getSelfactualrecord()
+                    , "变更为空"
+            );
+            result.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(core.getSelfactualrecord().equals(updatecolumns.get("SELFACTUALRECORD").toString())) {
+            return ;
+        }
+
+        String reservationinspectiontime = StrUtil.concat(true, "自检员实测记录:"
+                , core.getSelfactualrecord()
+                , "变更为"
+                , updatecolumns.get("SELFACTUALRECORD").toString()
+        );
+        result.add(reservationinspectiontime);
+    }
+
+    /**
+     * 自检员判定结果不同
+     *
+     * @param core
+     * @param updatecolumns
+     * @param result
+     */
+    private void diffSelfResult(ZhcxInsideInspectionCoreIndicatorsDo core, Map<String,Object> updatecolumns, List<String> result) {
+        if(ObjectUtil.isEmpty(core.getSelfresult()) && ObjectUtil.isEmpty(updatecolumns.get("SELFRESULT"))) {
+            return ;
+        }
+
+        if(ObjectUtil.isEmpty(core.getSelfresult()) && ObjectUtil.isNotEmpty(updatecolumns.get("SELFRESULT"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "自检员结果判定:"
+                    , "空变更为:"
+                    , updatecolumns.get("SELFRESULT").toString()
+            );
+            result.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(ObjectUtil.isNotEmpty(core.getSelfresult()) && ObjectUtil.isEmpty(updatecolumns.get("SELFRESULT"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "自检员结果判定:"
+                    , core.getSelfresult()
+                    , "变更为空"
+            );
+            result.add(reservationinspectiontime);
+            return;
+        }
+
+        if(core.getSelfresult().equals(updatecolumns.get("SELFRESULT").toString())) {
+            return ;
+        }
+
+        String reservationinspectiontime = StrUtil.concat(true, "自检员结果判定:"
+                , core.getSelfresult()
+                , "变更为"
+                , updatecolumns.get("SELFRESULT").toString()
+        );
+        result.add(reservationinspectiontime);
+    }
+
+    /**
+     * 自检员备注不同
+     *
+     * @param core
+     * @param updatecolumns
+     * @param result
+     */
+    private void diffSelfRemark(ZhcxInsideInspectionCoreIndicatorsDo core, Map<String,Object> updatecolumns, List<String> result) {
+        if(ObjectUtil.isEmpty(core.getSelfremark()) && ObjectUtil.isEmpty(updatecolumns.get("SELFREMARK"))) {
+            return ;
+        }
+
+        if(ObjectUtil.isEmpty(core.getSelfremark()) && ObjectUtil.isNotEmpty(updatecolumns.get("SELFREMARK"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "自检员备注:"
+                    , "空变更为:"
+                    , updatecolumns.get("SELFREMARK").toString()
+            );
+            result.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(ObjectUtil.isNotEmpty(core.getSelfremark()) && ObjectUtil.isEmpty(updatecolumns.get("SELFREMARK"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "自检员备注:"
+                    , core.getSelfremark()
+                    , "变更为空"
+            );
+            result.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(core.getSelfremark().equals(updatecolumns.get("SELFREMARK").toString())) {
+            return ;
+        }
+
+        String reservationinspectiontime = StrUtil.concat(true, "自检员备注:"
+                , core.getSelfremark()
+                , "变更为"
+                , updatecolumns.get("SELFREMARK").toString()
+        );
+        result.add(reservationinspectiontime);
+    }
+
+    /**
+     * 单个核心检验指标不同
+     *
+     * @param core
+     * @param updatecolumns
+     * @param result
+     */
+    private void difSelfCoreIndicator(ZhcxInsideInspectionCoreIndicatorsDo core, Map<String,Object> updatecolumns, List<String> result) {
+
+        List<String> updateCols = new ArrayList<>();
+        StringBuilder editRow = new StringBuilder("检查项:");
+        if(ObjectUtil.isNull(updatecolumns.get("INSPECTON_ITEMS"))) {
+            editRow.append(StringUtils.toString(core.getInspectonItems(), ""));
+        } else {
+            editRow.append(StringUtils.toString(updatecolumns.get("INSPECTON_ITEMS"), ""));
+        }
+
+        //自检员实测记录
+        diffSelfActualRecord(core, updatecolumns, updateCols);
+        //判定结果
+        diffSelfResult(core, updatecolumns, updateCols);
+        //判定结果
+        diffSelfRemark(core, updatecolumns, updateCols);
+
+        if(ObjectUtil.isEmpty(updateCols)) {
+            return ;
+        }
+
+        editRow.append(StringUtils.join(updateCols, ","));
+        result.add(editRow.toString());
+    }
+
+    /**
+     * 单个核心检验指标不同
+     *
+     * @param updateRow
+     * @param result
+     */
+    private void difSelfCoreIndicatorCoreNull4Update(Map<String,Object> updateRow, List<String> result) {
+
+        if(ObjectUtil.isNull(updateRow)) {
+            return ;
+        }
+
+        ZhcxInsideInspectionCoreIndicatorsDo empty = new ZhcxInsideInspectionCoreIndicatorsDo();
+
+        //修改记录
+        difSelfCoreIndicator(empty, updateRow, result);
+    }
+
+    /**
+     * 单个核心检验指标不同
+     *
+     * @param core
+     * @param result
+     */
+    private void difSelfCoreIndicatorUpdateNull4Entity(ZhcxInsideInspectionCoreIndicatorsDo core, List<String> result) {
+
+        if(ObjectUtil.isNull(core)) {
+            return ;
+        }
+
+        Map<String, Object> emptyMap = Collections.emptyMap();
+
+        //修改记录
+        difSelfCoreIndicator(core, emptyMap, result);
+    }
 }

+ 40 - 2
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxInsideInspectionCoreIndicatorsServiceImpl.java

@@ -8,6 +8,9 @@ import com.rongwei.bsentity.domain.ZhcxInsideInspectionCoreIndicatorsDo;
 import com.rongwei.bscommon.sys.dao.ZhcxInsideInspectionCoreIndicatorsDao;
 import com.rongwei.bscommon.sys.service.ZhcxInsideInspectionCoreIndicatorsService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bsentity.dto.inside.InsideInspectionExecuteRequest;
+import com.rongwei.rwadmincommon.system.service.SysGeneralCRUDService;
+import com.rongwei.rwcommon.base.exception.CustomException;
 import com.rongwei.rwcommon.utils.StringUtils;
 import com.rongwei.rwcommon.vo.generalsql.GeneralUpdateVo;
 import com.rongwei.rwcommon.vo.generalsql.SlaveDMLVo;
@@ -30,6 +33,9 @@ public class ZhcxInsideInspectionCoreIndicatorsServiceImpl extends ServiceImpl<Z
     @Autowired
     private ZhcxInsideInspectionCoreIndicatorsDao dao;
 
+    @Autowired
+    private SysGeneralCRUDService generalCRUDService;
+
     /**
      * 重新报验
      * 清空用户填写数据
@@ -98,6 +104,38 @@ public class ZhcxInsideInspectionCoreIndicatorsServiceImpl extends ServiceImpl<Z
         return editCheckerCosHistory(list, coreList);
     }
 
+    /**
+     * 保持并记录日志
+     *
+     * @param insideId
+     * @param req
+     * @param descMap
+     */
+    @Override
+    public void saveAndLog(String insideId, InsideInspectionExecuteRequest req, Map<String, String> descMap) {
+        //核心检验指标修改记录
+        if(ObjectUtil.isNull(req.getCoreMap()) || ObjectUtil.isEmpty(req.getCoreMap().get(insideId))) {
+            return ;
+        }
+
+        final List<GeneralUpdateVo> generalUpdateVoList = req.getCoreMap().get(insideId);
+        if(ObjectUtil.isNotEmpty(generalUpdateVoList)) {
+            List<String> editList = editCheckerColsHistory(insideId, generalUpdateVoList);
+            if(ObjectUtil.isNotEmpty(editList)) {
+                descMap.put(insideId, StringUtils.join(editList, ","));
+            }
+        }
+
+        try {
+            for (GeneralUpdateVo generalUpdateVo : generalUpdateVoList) {
+                generalCRUDService.generalUpdate(generalUpdateVo);
+            }
+        } catch (Exception e) {
+            log.error("保存失败: {}", e);
+            throw new CustomException("保存失败");
+        }
+    }
+
     /**
      * 检验员修改记录
      *
@@ -124,7 +162,7 @@ public class ZhcxInsideInspectionCoreIndicatorsServiceImpl extends ServiceImpl<Z
                 continue;
             }
 
-            difCheckercoreIndicator(indicators, update.getUpdatecolumns(), result);
+            diffRow(indicators, update.getUpdatecolumns(), result);
         }
 
         return result;
@@ -137,7 +175,7 @@ public class ZhcxInsideInspectionCoreIndicatorsServiceImpl extends ServiceImpl<Z
      * @param updatecolumns
      * @param result
      */
-    private void difCheckercoreIndicator(ZhcxInsideInspectionCoreIndicatorsDo core, Map<String,Object> updatecolumns, List<String> result) {
+    private void diffRow(ZhcxInsideInspectionCoreIndicatorsDo core, Map<String,Object> updatecolumns, List<String> result) {
 
         List<String> updateCols = new ArrayList<>();
         StringBuilder editRow = new StringBuilder("检查项:");

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

@@ -1,11 +1,24 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.rongwei.bsentity.domain.ZhcxInsideInspectionCoreIndicatorsDo;
 import com.rongwei.bsentity.domain.ZhcxInsideInspectionDetailImprovementItemDo;
 import com.rongwei.bscommon.sys.dao.ZhcxInsideInspectionDetailImprovementItemDao;
 import com.rongwei.bscommon.sys.service.ZhcxInsideInspectionDetailImprovementItemService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bsentity.dto.inside.InsideInspectionExecuteRequest;
+import com.rongwei.rwadmincommon.system.service.SysGeneralCRUDService;
+import com.rongwei.rwcommon.base.exception.CustomException;
+import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.rwcommon.vo.generalsql.GeneralUpdateVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.*;
+
 /**
  * <p>
  * 内部报验-报验管理-细节完善项 服务实现类
@@ -17,4 +30,485 @@ import org.springframework.stereotype.Service;
 @Service
 public class ZhcxInsideInspectionDetailImprovementItemServiceImpl extends ServiceImpl<ZhcxInsideInspectionDetailImprovementItemDao, ZhcxInsideInspectionDetailImprovementItemDo> implements ZhcxInsideInspectionDetailImprovementItemService {
 
+    @Autowired
+    private SysGeneralCRUDService generalCRUDService;
+
+    /**
+     * 检验员更改记录
+     *
+     * @param insideId
+     * @param coreList
+     * @return
+     */
+    @Override
+    public List<String> editCheckerColsHistory(String insideId, List<GeneralUpdateVo> coreList) {
+        final LambdaQueryWrapper<ZhcxInsideInspectionDetailImprovementItemDo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ZhcxInsideInspectionDetailImprovementItemDo::getInsideid, insideId)
+                .eq(ZhcxInsideInspectionDetailImprovementItemDo::getDeleted, "0");
+        final List<ZhcxInsideInspectionDetailImprovementItemDo> list = list(queryWrapper);
+
+        return editHistory(list, coreList);
+    }
+
+    /**
+     * 保持并记录日志
+     *
+     * @param insideId
+     * @param req
+     * @param descMap
+     */
+    @Override
+    public void saveAndLog(String insideId, InsideInspectionExecuteRequest req, Map<String, String> descMap) {
+        if(ObjectUtil.isNull(req.getCoreMap()) || ObjectUtil.isEmpty(req.getCoreMap().get(insideId))) {
+            return ;
+        }
+
+        final List<GeneralUpdateVo> generalUpdateVoList = req.getCoreMap().get(insideId);
+        if(ObjectUtil.isNotEmpty(generalUpdateVoList)) {
+            List<String> editList = editCheckerColsHistory(insideId, generalUpdateVoList);
+            if(ObjectUtil.isNotEmpty(editList)) {
+                descMap.put(insideId, StringUtils.join(editList, ","));
+            }
+        }
+
+        try {
+            for (GeneralUpdateVo generalUpdateVo : generalUpdateVoList) {
+                generalCRUDService.generalUpdate(generalUpdateVo);
+            }
+        } catch (Exception e) {
+            log.error("保存失败: {}", e);
+            throw new CustomException("保存失败");
+        }
+    }
+
+    /**
+     * 检验员修改记录
+     *
+     * @param coreList
+     * @param slaveUpdate
+     * @return
+     */
+    private List<String> editHistory(List<ZhcxInsideInspectionDetailImprovementItemDo> coreList, List<GeneralUpdateVo> slaveUpdate) {
+
+        if(ObjectUtil.isEmpty(slaveUpdate)) {
+            return Collections.emptyList();
+        }
+
+        Map<String, ZhcxInsideInspectionDetailImprovementItemDo> coreMap = new HashMap<>(coreList.size());
+        coreList.stream().forEach(item -> coreMap.put(item.getId(), item));
+
+        List<String> result = new ArrayList<>();
+
+        for(GeneralUpdateVo update : slaveUpdate) {
+            String id = update.getUpdatecolumns().get("ID").toString();
+            ZhcxInsideInspectionDetailImprovementItemDo indicators = coreMap.get(id);
+
+            if(ObjectUtil.isNull(indicators)) {
+                continue;
+            }
+
+            diffRow(indicators, update.getUpdatecolumns(), result);
+        }
+
+        return result;
+    }
+
+    /**
+     * 单个核心检验指标不同
+     *
+     * @param core
+     * @param updatecolumns
+     * @param result
+     */
+    private void diffRow(ZhcxInsideInspectionDetailImprovementItemDo core, Map<String,Object> updatecolumns, List<String> result) {
+
+        List<String> updateCols = new ArrayList<>();
+        StringBuilder editRow = new StringBuilder("检查项:");
+        if(ObjectUtil.isNull(updatecolumns.get("INSPECTON_ITEMS"))) {
+            editRow.append(StringUtils.toString(core.getInspectonItems(), ""));
+        } else {
+            editRow.append(StringUtils.toString(updatecolumns.get("INSPECTON_ITEMS"), ""));
+        }
+
+        //实测记录
+        diffCheckerActualRecord(core, updatecolumns, updateCols);
+        //判定结果
+        diffCheckerResult(core, updatecolumns, updateCols);
+        //备注
+        diffCheckerRemark(core, updatecolumns, updateCols);
+
+        if(ObjectUtil.isEmpty(updateCols)) {
+            return ;
+        }
+
+        editRow.append(StringUtils.join(updateCols, ","));
+        result.add(editRow.toString());
+    }
+
+    /**
+     * 不同检验员备注
+     *
+     * @param core
+     * @param updatecolumns
+     * @param updateCols
+     */
+    private void diffCheckerRemark(ZhcxInsideInspectionDetailImprovementItemDo core, Map<String, Object> updatecolumns, List<String> updateCols) {
+        if(ObjectUtil.isEmpty(core.getCheckremark()) && ObjectUtil.isEmpty(updatecolumns.get("CHECKREMARK"))) {
+            return ;
+        }
+
+        if(ObjectUtil.isEmpty(core.getCheckremark()) && ObjectUtil.isNotEmpty(updatecolumns.get("CHECKREMARK"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "检验员备注:"
+                    , "空变更为:"
+                    , updatecolumns.get("CHECKREMARK").toString()
+            );
+            updateCols.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(ObjectUtil.isNotEmpty(core.getCheckremark()) && ObjectUtil.isEmpty(updatecolumns.get("CHECKREMARK"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "检验员备注:"
+                    , core.getCheckremark()
+                    , "变更为空"
+            );
+            updateCols.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(core.getCheckremark().equals(updatecolumns.get("CHECKREMARK").toString())) {
+            return ;
+        }
+
+        String reservationinspectiontime = StrUtil.concat(true, "检验员备注:"
+                , core.getCheckremark()
+                , "变更为"
+                , updatecolumns.get("CHECKREMARK").toString()
+        );
+        updateCols.add(reservationinspectiontime);
+    }
+
+    /**
+     *
+     * 不同检验员结果判定
+     *
+     * @param core
+     * @param updatecolumns
+     * @param updateCols
+     */
+    private void diffCheckerResult(ZhcxInsideInspectionDetailImprovementItemDo core, Map<String, Object> updatecolumns, List<String> updateCols) {
+        if(ObjectUtil.isEmpty(core.getCheckresult()) && ObjectUtil.isEmpty(updatecolumns.get("CHECKRESULT"))) {
+            return ;
+        }
+
+        if(ObjectUtil.isEmpty(core.getCheckresult()) && ObjectUtil.isNotEmpty(updatecolumns.get("CHECKRESULT"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "检验员结果判定:"
+                    , "空变更为:"
+                    , updatecolumns.get("CHECKRESULT").toString()
+            );
+            updateCols.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(ObjectUtil.isNotEmpty(core.getCheckresult()) && ObjectUtil.isEmpty(updatecolumns.get("CHECKRESULT"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "检验员结果判定:"
+                    , core.getCheckresult()
+                    , "变更为空"
+            );
+            updateCols.add(reservationinspectiontime);
+            return;
+        }
+
+        if(core.getCheckresult().equals(updatecolumns.get("CHECKRESULT").toString())) {
+            return ;
+        }
+
+        String reservationinspectiontime = StrUtil.concat(true, "检验员结果判定:"
+                , core.getCheckresult()
+                , "变更为"
+                , updatecolumns.get("CHECKRESULT").toString()
+        );
+        updateCols.add(reservationinspectiontime);
+    }
+
+    /**
+     * 不同检验员实测记录
+     *
+     * @param core
+     * @param updatecolumns
+     * @param updateCols
+     */
+    private void diffCheckerActualRecord(ZhcxInsideInspectionDetailImprovementItemDo core, Map<String, Object> updatecolumns, List<String> updateCols) {
+        if(ObjectUtil.isEmpty(core.getCheckactualrecord()) && ObjectUtil.isEmpty(updatecolumns.get("CHECKACTUALRECORD"))) {
+            return ;
+        }
+
+        if(ObjectUtil.isEmpty(core.getCheckactualrecord()) && ObjectUtil.isNotEmpty(updatecolumns.get("CHECKACTUALRECORD"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "检验员实测记录:"
+                    , "空变更为:"
+                    , updatecolumns.get("CHECKACTUALRECORD").toString()
+            );
+            updateCols.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(ObjectUtil.isNotEmpty(core.getCheckactualrecord()) && ObjectUtil.isEmpty(updatecolumns.get("CHECKACTUALRECORD"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "检验员实测记录:"
+                    , core.getCheckactualrecord()
+                    , "变更为空"
+            );
+            updateCols.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(core.getCheckactualrecord().equals(updatecolumns.get("CHECKACTUALRECORD").toString())) {
+            return ;
+        }
+
+        String reservationinspectiontime = StrUtil.concat(true, "检验员实测记录:"
+                , core.getCheckactualrecord()
+                , "变更为"
+                , updatecolumns.get("CHECKACTUALRECORD").toString()
+        );
+        updateCols.add(reservationinspectiontime);
+    }
+
+    /**
+     * 找出修改记录
+     *
+     * @param coreList
+     * @param slaveUpdate
+     * @return
+     */
+    private List<String> editSelfCosHistory(List<ZhcxInsideInspectionCoreIndicatorsDo> coreList, List<GeneralUpdateVo> slaveUpdate) {
+        if(ObjectUtil.isEmpty(coreList) && ObjectUtil.isEmpty(slaveUpdate)) {
+            return Collections.emptyList();
+        }
+
+        List<String> result = new ArrayList<>();
+        if(ObjectUtil.isEmpty(coreList) && ObjectUtil.isNotEmpty(slaveUpdate)) {
+//            for(GeneralUpdateVo update : slaveUpdate) {
+//                difSelfCoreIndicatorCoreNull4Update(update.getUpdatecolumns(), result);
+//            }
+            result.add("添加核心检验指标");
+            return result;
+        }
+        if(ObjectUtil.isEmpty(slaveUpdate) && ObjectUtil.isNotEmpty(coreList)) {
+//            for(ZhcxInsideInspectionCoreIndicatorsDo core : coreList) {
+//                difSelfCoreIndicatorUpdateNull4Entity(core, result);
+//            }
+//            result.add("移除核心检验指标");
+            return result;
+        }
+
+        Map<String, ZhcxInsideInspectionCoreIndicatorsDo> coreMap = new HashMap<>(coreList.size());
+        coreList.stream().forEach(item -> coreMap.put(item.getId(), item));
+
+        for(GeneralUpdateVo update : slaveUpdate) {
+            String id = update.getUpdatecolumns().get("ID").toString();
+            ZhcxInsideInspectionCoreIndicatorsDo indicators = coreMap.get(id);
+
+            if(ObjectUtil.isNull(indicators)) {
+                difSelfCoreIndicatorCoreNull4Update(update.getUpdatecolumns(), result);
+                continue;
+            }
+
+            difSelfCoreIndicator(indicators, update.getUpdatecolumns(), result);
+        }
+
+        return result;
+    }
+
+    /**
+     * 自检员实测记录不同
+     *
+     * @param core
+     * @param updatecolumns
+     * @param result
+     */
+    private void diffSelfActualRecord(ZhcxInsideInspectionCoreIndicatorsDo core, Map<String,Object> updatecolumns, List<String> result) {
+        if(ObjectUtil.isEmpty(core.getSelfactualrecord()) && ObjectUtil.isEmpty(updatecolumns.get("SELFACTUALRECORD"))) {
+            return ;
+        }
+
+        if(ObjectUtil.isEmpty(core.getSelfactualrecord()) && ObjectUtil.isNotEmpty(updatecolumns.get("SELFACTUALRECORD"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "自检员实测记录:"
+                    , "空变更为:"
+                    , updatecolumns.get("SELFACTUALRECORD").toString()
+            );
+            result.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(ObjectUtil.isNotEmpty(core.getSelfactualrecord()) && ObjectUtil.isEmpty(updatecolumns.get("SELFACTUALRECORD"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "自检员实测记录:"
+                    , core.getSelfactualrecord()
+                    , "变更为空"
+            );
+            result.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(core.getSelfactualrecord().equals(updatecolumns.get("SELFACTUALRECORD").toString())) {
+            return ;
+        }
+
+        String reservationinspectiontime = StrUtil.concat(true, "自检员实测记录:"
+                , core.getSelfactualrecord()
+                , "变更为"
+                , updatecolumns.get("SELFACTUALRECORD").toString()
+        );
+        result.add(reservationinspectiontime);
+    }
+
+    /**
+     * 自检员判定结果不同
+     *
+     * @param core
+     * @param updatecolumns
+     * @param result
+     */
+    private void diffSelfResult(ZhcxInsideInspectionCoreIndicatorsDo core, Map<String,Object> updatecolumns, List<String> result) {
+        if(ObjectUtil.isEmpty(core.getSelfresult()) && ObjectUtil.isEmpty(updatecolumns.get("SELFRESULT"))) {
+            return ;
+        }
+
+        if(ObjectUtil.isEmpty(core.getSelfresult()) && ObjectUtil.isNotEmpty(updatecolumns.get("SELFRESULT"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "自检员结果判定:"
+                    , "空变更为:"
+                    , updatecolumns.get("SELFRESULT").toString()
+            );
+            result.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(ObjectUtil.isNotEmpty(core.getSelfresult()) && ObjectUtil.isEmpty(updatecolumns.get("SELFRESULT"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "自检员结果判定:"
+                    , core.getSelfresult()
+                    , "变更为空"
+            );
+            result.add(reservationinspectiontime);
+            return;
+        }
+
+        if(core.getSelfresult().equals(updatecolumns.get("SELFRESULT").toString())) {
+            return ;
+        }
+
+        String reservationinspectiontime = StrUtil.concat(true, "自检员结果判定:"
+                , core.getSelfresult()
+                , "变更为"
+                , updatecolumns.get("SELFRESULT").toString()
+        );
+        result.add(reservationinspectiontime);
+    }
+
+    /**
+     * 自检员备注不同
+     *
+     * @param core
+     * @param updatecolumns
+     * @param result
+     */
+    private void diffSelfRemark(ZhcxInsideInspectionCoreIndicatorsDo core, Map<String,Object> updatecolumns, List<String> result) {
+        if(ObjectUtil.isEmpty(core.getSelfremark()) && ObjectUtil.isEmpty(updatecolumns.get("SELFREMARK"))) {
+            return ;
+        }
+
+        if(ObjectUtil.isEmpty(core.getSelfremark()) && ObjectUtil.isNotEmpty(updatecolumns.get("SELFREMARK"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "自检员备注:"
+                    , "空变更为:"
+                    , updatecolumns.get("SELFREMARK").toString()
+            );
+            result.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(ObjectUtil.isNotEmpty(core.getSelfremark()) && ObjectUtil.isEmpty(updatecolumns.get("SELFREMARK"))) {
+            String reservationinspectiontime = StrUtil.concat(true, "自检员备注:"
+                    , core.getSelfremark()
+                    , "变更为空"
+            );
+            result.add(reservationinspectiontime);
+            return ;
+        }
+
+        if(core.getSelfremark().equals(updatecolumns.get("SELFREMARK").toString())) {
+            return ;
+        }
+
+        String reservationinspectiontime = StrUtil.concat(true, "自检员备注:"
+                , core.getSelfremark()
+                , "变更为"
+                , updatecolumns.get("SELFREMARK").toString()
+        );
+        result.add(reservationinspectiontime);
+    }
+
+    /**
+     * 单个核心检验指标不同
+     *
+     * @param core
+     * @param updatecolumns
+     * @param result
+     */
+    private void difSelfCoreIndicator(ZhcxInsideInspectionCoreIndicatorsDo core, Map<String,Object> updatecolumns, List<String> result) {
+
+        List<String> updateCols = new ArrayList<>();
+        StringBuilder editRow = new StringBuilder("检查项:");
+        if(ObjectUtil.isNull(updatecolumns.get("INSPECTON_ITEMS"))) {
+            editRow.append(StringUtils.toString(core.getInspectonItems(), ""));
+        } else {
+            editRow.append(StringUtils.toString(updatecolumns.get("INSPECTON_ITEMS"), ""));
+        }
+
+        //自检员实测记录
+        diffSelfActualRecord(core, updatecolumns, updateCols);
+        //判定结果
+        diffSelfResult(core, updatecolumns, updateCols);
+        //判定结果
+        diffSelfRemark(core, updatecolumns, updateCols);
+
+        if(ObjectUtil.isEmpty(updateCols)) {
+            return ;
+        }
+
+        editRow.append(StringUtils.join(updateCols, ","));
+        result.add(editRow.toString());
+    }
+
+    /**
+     * 单个核心检验指标不同
+     *
+     * @param updateRow
+     * @param result
+     */
+    private void difSelfCoreIndicatorCoreNull4Update(Map<String,Object> updateRow, List<String> result) {
+
+        if(ObjectUtil.isNull(updateRow)) {
+            return ;
+        }
+
+        ZhcxInsideInspectionCoreIndicatorsDo empty = new ZhcxInsideInspectionCoreIndicatorsDo();
+
+        //修改记录
+        difSelfCoreIndicator(empty, updateRow, result);
+    }
+
+    /**
+     * 单个核心检验指标不同
+     *
+     * @param core
+     * @param result
+     */
+    private void difSelfCoreIndicatorUpdateNull4Entity(ZhcxInsideInspectionCoreIndicatorsDo core, List<String> result) {
+
+        if(ObjectUtil.isNull(core)) {
+            return ;
+        }
+
+        Map<String, Object> emptyMap = Collections.emptyMap();
+
+        //修改记录
+        difSelfCoreIndicator(core, emptyMap, result);
+    }
 }

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

@@ -1,5 +1,6 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -8,6 +9,8 @@ import com.rongwei.bscommon.sys.dao.ZhcxInsideInspectionDispatchDao;
 import com.rongwei.bscommon.sys.service.ZhcxInsideInspectionDispatchService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bsentity.domain.ZhcxInsideInspectionDo;
+import com.rongwei.bsentity.dto.inside.InsideInspectionExecuteRequest;
+import com.rongwei.bsentity.dto.inside.InsideOperDto;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -71,6 +74,29 @@ public class ZhcxInsideInspectionDispatchServiceImpl extends ServiceImpl<ZhcxIns
         save(dispatchDo);
     }
 
+    /**
+     * 获取执行派单信息
+     *
+     * @param inOper
+     * @param req
+     * @return
+     */
+    @Override
+    public ZhcxInsideInspectionDispatchDo getExecute(InsideOperDto inOper, InsideInspectionExecuteRequest req) {
+        ZhcxInsideInspectionDispatchDo dispatch = new ZhcxInsideInspectionDispatchDo();
+        dispatch.setId(inOper.getDispatch().getId());
+        dispatch.setSupervisionid(inOper.getDispatch().getSupervisionid());
+        dispatch.setSupervision(inOper.getDispatch().getSupervision());
+        dispatch.setSupervisionphone(inOper.getDispatch().getSupervisionphone());
+        if(ObjectUtil.isNotEmpty(req.getStartDate())) {
+            dispatch.setCheckstarttime(DateUtil.parse(req.getStartDate(), "yyyy-MM-dd HH:mm:ss"));
+        }
+        if(ObjectUtil.isNotEmpty(req.getEndDate())) {
+            dispatch.setCheckendtime(DateUtil.parse(req.getEndDate(), "yyyy-MM-dd HH:mm:ss"));
+        }
+        return dispatch;
+    }
+
     /**
      * 重新报验
      *

+ 41 - 32
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxInsideInspectionServiceImpl.java

@@ -97,6 +97,12 @@ public class ZhcxInsideInspectionServiceImpl extends ServiceImpl<ZhcxInsideInspe
     @Autowired
     private ZhcxInsideInspectionCoreIndicatorsService insideInspectionCoreIndicatorsService;
 
+    @Autowired
+    private ZhcxInsideInspectionDetailImprovementItemService insideInspectionDetailImprovementItemService;
+
+    @Autowired
+    private ZhcxInsideInspectionBiddingDocPointService insideInspectionBiddingDocPointService;
+
     @Value("${temp.filepath:#{null}}")
     private String filepath;
 
@@ -491,10 +497,34 @@ public class ZhcxInsideInspectionServiceImpl extends ServiceImpl<ZhcxInsideInspe
 
         //核心检验指标修改记录
         final List<String> editList = insideInspectionCoreIndicatorsService.editCheckerColsHistory(req.getId(), req.getCoreUpdateList());
+        //细节完善项
+        final List<String> edit4ItemList = insideInspectionDetailImprovementItemService.editCheckerColsHistory(req.getId(), req.getCoreUpdateList());
+        //标书要点
+        final List<String> edit4PointList = insideInspectionBiddingDocPointService.editCheckerColsHistory(req.getId(), req.getCoreUpdateList());
+
+        StringBuilder editHistorySb = new StringBuilder();
 
         //没有更改,不存修改日志
         if(ObjectUtil.isNotEmpty(editList)) {
-            saveEditLog(req, StringUtils.join(editList, "; "));
+            editHistorySb.append("核心检验指标: ");
+            editHistorySb.append(StringUtils.join(editList, "; "));
+            editHistorySb.append(";");
+        }
+
+        if(ObjectUtil.isNotEmpty(edit4ItemList)) {
+            editHistorySb.append("细节完善项: ");
+            editHistorySb.append(StringUtils.join(edit4ItemList, "; "));
+            editHistorySb.append(";");
+        }
+
+        if(ObjectUtil.isNotEmpty(edit4PointList)) {
+            editHistorySb.append("标书要点: ");
+            editHistorySb.append(StringUtils.join(edit4PointList, "; "));
+            editHistorySb.append(";");
+        }
+
+        if(ObjectUtil.isNotEmpty(editHistorySb)) {
+            saveEditLog(req, editHistorySb.toString());
         }
 
         try {
@@ -921,38 +951,17 @@ public class ZhcxInsideInspectionServiceImpl extends ServiceImpl<ZhcxInsideInspe
                 continue;
             }
 
-            //派单
-            ZhcxInsideInspectionDispatchDo dispatch = new ZhcxInsideInspectionDispatchDo();
-            dispatch.setId(inOper.getDispatch().getId());
-            dispatch.setSupervisionid(inOper.getDispatch().getSupervisionid());
-            dispatch.setSupervision(inOper.getDispatch().getSupervision());
-            dispatch.setSupervisionphone(inOper.getDispatch().getSupervisionphone());
-            if(ObjectUtil.isNotEmpty(req.getStartDate())) {
-                dispatch.setCheckstarttime(DateUtil.parse(req.getStartDate(), "yyyy-MM-dd HH:mm:ss"));
-            }
-            if(ObjectUtil.isNotEmpty(req.getEndDate())) {
-                dispatch.setCheckendtime(DateUtil.parse(req.getEndDate(), "yyyy-MM-dd HH:mm:ss"));
-            }
-
-            //核心检验指标修改记录
-            if(ObjectUtil.isNotNull(req.getCoreMap()) && ObjectUtil.isNotEmpty(req.getCoreMap().get(insideId))) {
-                final List<GeneralUpdateVo> generalUpdateVoList = req.getCoreMap().get(insideId);
-                if(ObjectUtil.isNotEmpty(generalUpdateVoList)) {
-                    List<String> editList = insideInspectionCoreIndicatorsService.editCheckerColsHistory(insideId, generalUpdateVoList);
-                    if(ObjectUtil.isNotEmpty(editList)) {
-                        descMap.put(insideId, StringUtils.join(editList, ","));
-                    }
-                }
+            //获取执行派单对象
+            ZhcxInsideInspectionDispatchDo dispatch = dispatchService.getExecute(inOper, req);
 
-                try {
-                    for (GeneralUpdateVo generalUpdateVo : generalUpdateVoList) {
-                        generalCRUDService.generalUpdate(generalUpdateVo);
-                    }
-                } catch (Exception e) {
-                    log.error("保存失败: {}", e);
-                    throw new CustomException("保存失败");
-                }
-            }
+            //核心检验指标
+            insideInspectionCoreIndicatorsService.saveAndLog(insideId, req, descMap);
+
+            //细节完善项
+            insideInspectionDetailImprovementItemService.saveAndLog(insideId, req, descMap);
+
+            //标书要点
+            insideInspectionBiddingDocPointService.saveAndLog(insideId, req, descMap);
 
             //报验完成,只能修改时间
             if("30".equals(inOper.getInspection().getInspectionstatus())) {

+ 12 - 0
business-entity/src/main/java/com/rongwei/bsentity/dto/inside/CheckerStagingInspectionRequest.java

@@ -23,4 +23,16 @@ public class CheckerStagingInspectionRequest extends InsideInspectionOperRequest
      */
     @ApiModelProperty("核心检验指标")
     private List<GeneralUpdateVo> coreUpdateList;
+
+    /**
+     * 细节完善项
+     */
+    @ApiModelProperty("核心检验指标")
+    private List<GeneralUpdateVo> itemUpdateList;
+
+    /**
+     * 标书要点
+     */
+    @ApiModelProperty("核心检验指标")
+    private List<GeneralUpdateVo> pointUpdateList;
 }

+ 18 - 0
business-entity/src/main/java/com/rongwei/bsentity/dto/inside/InsideInspectionExecuteRequest.java

@@ -75,4 +75,22 @@ public class InsideInspectionExecuteRequest extends InsideInspectionOperBaseDto
      */
     @ApiModelProperty("核心检验指标")
     private Map<String,List<GeneralUpdateVo>> coreMap;
+
+    /**
+     * 细节完善项
+     * key: 内部报验单id
+     * value 内部报验单下修改列表
+     */
+    @ApiModelProperty("细节完善项")
+    private Map<String,List<GeneralUpdateVo>> itemMap;
+
+    /**
+     * 标书要点
+     * key: 内部报验单id
+     * value 内部报验单下修改列表
+     */
+    @ApiModelProperty("标书要点")
+    private Map<String,List<GeneralUpdateVo>> pointMap;
+
+
 }