|
@@ -0,0 +1,140 @@
|
|
|
+package com.rongwei.bscommon.sys.service.impl;
|
|
|
+
|
|
|
+import com.rongwei.bscommon.sys.dao.*;
|
|
|
+import com.rongwei.bscommon.sys.service.ZhcxPMQMService;
|
|
|
+import com.rongwei.bscommon.sys.utils.ZhcxCommon;
|
|
|
+import com.rongwei.bsentity.domain.ZhcxPmqManagementDo;
|
|
|
+import com.rongwei.bsentity.domain.ZhcxPmqManagementMapDo;
|
|
|
+import com.rongwei.bsentity.domain.ZhcxPmqManagementRecoredDo;
|
|
|
+import com.rongwei.bsentity.domain.ZhcxPmqManagementSourceDo;
|
|
|
+import com.rongwei.rwcommon.utils.SecurityUtil;
|
|
|
+import com.rongwei.rwcommon.utils.StringUtils;
|
|
|
+import org.apache.commons.lang.time.DateFormatUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class ZhcxPMQMServiceImpl implements ZhcxPMQMService {
|
|
|
+ @Autowired
|
|
|
+ private ZhcxPMQMDao pmqmDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ZhcxCommon zhcxCommon;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ZhcxPmqManagementDao managementDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ZhcxPmqManagementMapDao mapDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ZhcxPmqManagementRecoredDao recoredDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ZhcxPmqManagementSourceDao sourceDao;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getPMQMData(Map<String, String> map) {
|
|
|
+ List<Map<String, Object>> res = new ArrayList<>();
|
|
|
+ Date currentDate = new Date();
|
|
|
+ // 获取当前抽取的最大的下发日期
|
|
|
+ List<ZhcxPmqManagementSourceDo> tempList1 = sourceDao.getMaxDatetime();
|
|
|
+ String maxTime = "2000-01-01 00:00:00";
|
|
|
+ if (!tempList1.isEmpty()) {
|
|
|
+ maxTime = DateFormatUtils.format(tempList1.get(0).getDistributetime(), "yyyy-MM-dd HH:mm:ss");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 抽取NX系统数据
|
|
|
+ List<ZhcxPmqManagementSourceDo> nxSystemData = sourceDao.getMockData();
|
|
|
+
|
|
|
+ for (ZhcxPmqManagementSourceDo row : nxSystemData) {
|
|
|
+ // 将NX系统数据写入ZHCX_PMQ_MANAGEMENT_SOURCE表
|
|
|
+ ZhcxPmqManagementSourceDo saveRow = new ZhcxPmqManagementSourceDo();
|
|
|
+ BeanUtils.copyProperties(row, saveRow);
|
|
|
+ row.setId(SecurityUtil.getUUID());
|
|
|
+ row.setDeleted("0");
|
|
|
+ row.setCreatedate(currentDate);
|
|
|
+ row.setModifydate(currentDate);
|
|
|
+// sourceDao.insert(row);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 抽取映射表数据
|
|
|
+ List<ZhcxPmqManagementMapDo> pmqmMapList = mapDao.getAllData();
|
|
|
+
|
|
|
+ // 获取所有用户
|
|
|
+ List<Map<String, Object>> allUser = pmqmDao.getAllUser();
|
|
|
+
|
|
|
+ // 将NX系统数据写入ZHCX_PMQ_MANAGEMENT和ZHCX_PMQ_MANAGEMENT_RECORD
|
|
|
+ Map<String, List<ZhcxPmqManagementSourceDo>> groupedByOrderNo = nxSystemData.stream()
|
|
|
+ .collect(Collectors.groupingBy(ZhcxPmqManagementSourceDo::getOrderno));
|
|
|
+ groupedByOrderNo.forEach((orderNo, items) -> {
|
|
|
+ String pid = SecurityUtil.getUUID();
|
|
|
+ ZhcxPmqManagementSourceDo tempRow1 = items.get(0);
|
|
|
+ ZhcxPmqManagementDo pRow = new ZhcxPmqManagementDo();
|
|
|
+ pRow.setId(pid);
|
|
|
+ pRow.setDeleted("0");
|
|
|
+ pRow.setCreatedate(currentDate);
|
|
|
+ pRow.setModifydate(currentDate);
|
|
|
+ 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);
|
|
|
+ managementDao.insert(pRow);
|
|
|
+ int i = 1;
|
|
|
+ for (ZhcxPmqManagementSourceDo item : items) {
|
|
|
+ ZhcxPmqManagementRecoredDo recordDo = new ZhcxPmqManagementRecoredDo();
|
|
|
+ recordDo.setId(SecurityUtil.getUUID());
|
|
|
+ recordDo.setDeleted("0");
|
|
|
+ recordDo.setCreatedate(currentDate);
|
|
|
+ recordDo.setModifydate(currentDate);
|
|
|
+ recordDo.setPmqmid(pid);
|
|
|
+ recordDo.setSeqno(item.getSeqno());
|
|
|
+ recordDo.setOrderno(i);
|
|
|
+ recordDo.setDistributetime(item.getDistributetime());
|
|
|
+ recordDo.setCurrenttimes(item.getCurrenttimes());
|
|
|
+ recordDo.setTotaltimes(item.getTotaltimes());
|
|
|
+ recordDo.setDeptname(item.getDeptname());
|
|
|
+ String qcName = item.getQcname();
|
|
|
+ if (StringUtils.isNotBlank(qcName)) {
|
|
|
+ String[] qcNames = qcName.replace("/", ",").split(",");
|
|
|
+ StringBuilder qcIdStr = new StringBuilder();
|
|
|
+ StringBuilder qcNameStr = new StringBuilder();
|
|
|
+ boolean flag = true;
|
|
|
+ for (String qc : qcNames) {
|
|
|
+ Optional<Map<String, Object>> result = allUser.stream()
|
|
|
+ .filter(v -> qc.equals(v.get("NAME")))
|
|
|
+ .findFirst();
|
|
|
+ if (result.isPresent()) {
|
|
|
+ qcIdStr.append(result.get().get("ID").toString()).append(",");
|
|
|
+ qcNameStr.append(result.get().get("NAME").toString()).append(",");
|
|
|
+ } else {
|
|
|
+ flag = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (flag) {
|
|
|
+ String idStr = qcIdStr.substring(0, qcIdStr.toString().length() - 1);
|
|
|
+ recordDo.setQcuserid(idStr);
|
|
|
+ String nameStr = qcNameStr.substring(0, qcNameStr.toString().length() - 1);
|
|
|
+ recordDo.setQcusername(nameStr);
|
|
|
+ } else {
|
|
|
+ recordDo.setQcusername(String.join(",", qcNames));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ i += 1;
|
|
|
+ recoredDao.insert(recordDo);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ sourceDao.updateProjectId();
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+}
|