wangxuan 7 miesięcy temu
rodzic
commit
a74c58f59a

+ 28 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxPmqManagementSourceDao.java

@@ -1,7 +1,9 @@
 package com.rongwei.bscommon.sys.dao;
 
+import com.rongwei.bsentity.domain.ZhcxPmqManagementRecoredDo;
 import com.rongwei.bsentity.domain.ZhcxPmqManagementSourceDo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
@@ -26,4 +28,30 @@ public interface ZhcxPmqManagementSourceDao extends BaseMapper<ZhcxPmqManagement
      */
     @Update("UPDATE ZHCX_PMQ_MANAGEMENT t1 SET t1.PROJECTID = (SELECT t2.ID FROM ZHCX_PROJECT_MANAGE t2 WHERE t2.PROJECT_CODE = t1.PROJECTNO AND t2.DELETED = '0') WHERE t1.PROJECTID IS NULL")
     void updateProjectId();
+
+    @Select("SELECT\n" +
+            "    ORDERNO\n" +
+            "FROM\n" +
+            "    (\n" +
+            "        SELECT\n" +
+            "            WM_CONCAT(DISTINCT ORDERTYPE) AS ORDERTYPE,\n" +
+            "            ORDERNO,\n" +
+            "            WM_CONCAT(DISTINCT PROJECTNO) AS PROJECTNO\n" +
+            "        FROM\n" +
+            "            INCONTROL.ZHCX_PMQ_MANAGEMENT_SOURCE x\n" +
+            "        WHERE\n" +
+            "            PROJECTNO NOT IN ('1002000777','1002000995','1002001161','1002001003','1002001194','1004001405','1002001159','1002000836','1002001135','1002001143','1002001152','1002001157','1002001169') \n" +
+            "        GROUP BY\n" +
+            "            ORDERNO\n" +
+            "    ) subquery\n" +
+            "WHERE\n" +
+            "    INSTR(ORDERTYPE, ',') > 0 \n" +
+            "    and INSTR(PROJECTNO, ',') = 0")
+    List<String> getAllOrderNoList();
+
+    @Select("SELECT x.* FROM INCONTROL.ZHCX_PMQ_MANAGEMENT_SOURCE x WHERE ORDERNO = #{orderNo} AND DELETED ='0'")
+    List<ZhcxPmqManagementSourceDo> getSourceDataByOrderNo(@Param("orderNo") String orderNo);
+
+    @Select("SELECT x.* FROM INCONTROL.ZHCX_PMQ_MANAGEMENT_RECORED x WHERE SEQNO = #{seqno} AND DEPTID = #{deptid} AND DELETED ='0'")
+    List<ZhcxPmqManagementRecoredDo> getRecoredDoListBySeqnoAndDeptid(@Param("seqno") Integer seqno,@Param("deptid") String deptid);
 }

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

@@ -13,4 +13,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ZhcxPmqManagementSourceService extends IService<ZhcxPmqManagementSourceDo> {
 
+    /**
+     * 修复三单主表数据
+     */
+    void repairZhcxPmqManagementData();
 }

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

@@ -1,11 +1,23 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import com.rongwei.bscommon.sys.dao.ZhcxPmqManagementDao;
+import com.rongwei.bscommon.sys.dao.ZhcxPmqManagementRecoredDao;
+import com.rongwei.bscommon.sys.service.ZhcxPmqManagementDistributionDetailService;
+import com.rongwei.bsentity.domain.ZhcxPmqManagementDo;
+import com.rongwei.bsentity.domain.ZhcxPmqManagementRecoredDo;
 import com.rongwei.bsentity.domain.ZhcxPmqManagementSourceDo;
 import com.rongwei.bscommon.sys.dao.ZhcxPmqManagementSourceDao;
 import com.rongwei.bscommon.sys.service.ZhcxPmqManagementSourceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.rwcommon.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.*;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * NX系统三单数据 服务实现类
@@ -14,7 +26,83 @@ import org.springframework.stereotype.Service;
  * @author wm
  * @since 2024-10-30
  */
+@Slf4j
 @Service
 public class ZhcxPmqManagementSourceServiceImpl extends ServiceImpl<ZhcxPmqManagementSourceDao, ZhcxPmqManagementSourceDo> implements ZhcxPmqManagementSourceService {
 
+    @Autowired
+    private ZhcxPmqManagementDao managementDao;
+
+    @Autowired
+    private ZhcxPmqManagementRecoredDao recoredDao;
+
+    @Autowired
+    private ZhcxPmqManagementDistributionDetailService detailService;
+
+    @Override
+    public void repairZhcxPmqManagementData() {
+        // 1.先找出存在多个单据类别的单据编号
+        List<String> orderNoList = baseMapper.getAllOrderNoList();
+
+        log.info("开始修复数据");
+        for (String orderNos : orderNoList) {
+            // 根据单据编号找源数据
+            List<ZhcxPmqManagementSourceDo> sourceList = baseMapper.getSourceDataByOrderNo(orderNos);
+            // 以Orderno|-_-|Projectno|-_-|Ordertype形式分组
+            Map<String, List<ZhcxPmqManagementSourceDo>> groupedByOrderNo = sourceList.stream()
+                    .collect(Collectors.groupingBy(ZhcxPmqManagementSourceDo -> ZhcxPmqManagementSourceDo.getOrderno()+"|-_-|"+
+                            ZhcxPmqManagementSourceDo.getProjectno()+"|-_-|"+
+                            ZhcxPmqManagementSourceDo.getOrdertype()));
+            groupedByOrderNo.forEach((orderNo, items) -> {
+                Map<String, String> queryPRowMap = new HashMap<>();
+                queryPRowMap.put("orderno", orderNo);
+                List<ZhcxPmqManagementDo> queryParentRows = managementDao.getByCodeUnit(queryPRowMap);
+                String pid = SecurityUtil.getUUID();
+                if (!queryParentRows.isEmpty()) {
+                    pid = queryParentRows.get(0).getId();
+                }
+                ZhcxPmqManagementSourceDo tempRow1 = items.get(0);
+                ZhcxPmqManagementDo pRow = new ZhcxPmqManagementDo();
+                pRow.setId(pid);
+                pRow.setRemark("24-12-26修复数据");
+                pRow.setOrdertype(tempRow1.getOrdertype());
+                pRow.setOrderno(tempRow1.getOrderno());
+                pRow.setProjectno(tempRow1.getProjectno());
+                pRow.setProjectname(tempRow1.getProjectname());
+                pRow.setThemepoint(tempRow1.getThemepoint());
+                // 搜索最大的下发时间
+                Optional<ZhcxPmqManagementSourceDo> maxEtimeObj = items.stream()
+                        .filter(obj -> obj.getDistributetime() != null) // 过滤掉etime为null的对象
+                        .max(Comparator.comparing(ZhcxPmqManagementSourceDo::getDistributetime));
+                Date maxDistributetime = maxEtimeObj.map(ZhcxPmqManagementSourceDo::getDistributetime).orElse(null);
+                pRow.setDistributetime(maxDistributetime);
+                if (queryParentRows.isEmpty()) {
+                    managementDao.insert(pRow);
+                    for (ZhcxPmqManagementSourceDo item : items) {
+                        // 根据流水号+部门id  锁定第二层的数据
+                        Integer seqno = item.getSeqno();
+                        String deptid = item.getDeptid();
+                        if(seqno!=null && StringUtils.isNotBlank(deptid)){
+                            List<ZhcxPmqManagementRecoredDo> list = baseMapper.getRecoredDoListBySeqnoAndDeptid(seqno,deptid);
+                            if(!list.isEmpty()){
+                                ZhcxPmqManagementRecoredDo zhcxPmqManagementRecoredDo = list.get(0);
+                                zhcxPmqManagementRecoredDo.setPmqmid(pid);
+                                zhcxPmqManagementRecoredDo.setRemark("24-12-26修复数据");
+                                recoredDao.updateById(zhcxPmqManagementRecoredDo);
+                            }
+                        }
+                    }
+                    // 需要去更新新增的第一层的状态
+                    log.info("更新新增的第一层的状态");
+                    detailService.updateClosedStateInFirstFloor(pid);
+                }else {
+                    // 拆开之后主表更新状态
+                    detailService.updateClosedStateInFirstFloor(pid);
+                }
+            });
+        }
+        // 需要更新第一层的项目id
+        baseMapper.updateProjectId();
+        log.info("修复数据结束");
+    }
 }

+ 1 - 1
business-common/src/main/resources/mybatis/business/ZhcxPmqManagementDistributionDetailDao.xml

@@ -15,7 +15,7 @@
                                 WHERE PMQMID = #{id}
                                   AND DELETED = '0'
                                   AND (CLOSESTATUS IS NULL
-                                    OR CLOSESTATUS = '未关闭')) THEN '未关闭'
+                                    OR CLOSESTATUS = '未关闭' OR CLOSESTATUS = '')) THEN '未关闭'
                    WHEN NOT EXISTS (SELECT 1
                                     FROM INCONTROL.ZHCX_PMQ_MANAGEMENT_RECORED x
                                     WHERE PMQMID = #{id}

Plik diff jest za duży
+ 16 - 1
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxPMQMController.java


+ 14 - 0
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxPmqManagementSourceController.java

@@ -1,6 +1,11 @@
 package com.rongwei.bsserver.controller;
 
 
+import com.rongwei.bscommon.sys.service.ZhcxPmqManagementSourceService;
+import com.rongwei.rwcommon.base.R;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -16,5 +21,14 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/zhcxPmqManagementSource")
 public class ZhcxPmqManagementSourceController {
 
+    @Autowired
+    private ZhcxPmqManagementSourceService zhcxPmqManagementSourceService;
+
+    @PostMapping("/repairZhcxPmqManagementData")
+    @ApiOperation("修复三单主表数据")
+    public R repairZhcxPmqManagementData() {
+        zhcxPmqManagementSourceService.repairZhcxPmqManagementData();
+        return R.ok("修复三单主表数据完成");
+    }
 }