|
@@ -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("修复数据结束");
|
|
|
+ }
|
|
|
}
|