|
@@ -1,11 +1,24 @@
|
|
|
package com.ruoyi.powerdistribution.service.impl;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import com.ruoyi.common.utils.DateUtils;
|
|
|
+import com.ruoyi.common.utils.bean.BeanUtils;
|
|
|
+import com.ruoyi.powerdistribution.domain.PdmWorkCompleStatisticsTmp;
|
|
|
+import com.ruoyi.powerdistribution.domain.vo.WorkPlanStatistics;
|
|
|
+import com.ruoyi.powerdistribution.mapper.PdmWorkCompleStatisticsTmpMapper;
|
|
|
+import com.ruoyi.powerdistribution.mapper.PdmWorkPlanMapper;
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.ruoyi.powerdistribution.mapper.PdmWorkCompleStatisticsMapper;
|
|
|
import com.ruoyi.powerdistribution.domain.PdmWorkCompleStatistics;
|
|
|
import com.ruoyi.powerdistribution.service.IPdmWorkCompleStatisticsService;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
/**
|
|
|
* 工程量完成情况Service业务层处理
|
|
@@ -18,6 +31,10 @@ public class PdmWorkCompleStatisticsServiceImpl implements IPdmWorkCompleStatist
|
|
|
{
|
|
|
@Autowired
|
|
|
private PdmWorkCompleStatisticsMapper pdmWorkCompleStatisticsMapper;
|
|
|
+ @Autowired
|
|
|
+ private PdmWorkCompleStatisticsTmpMapper pdmWorkCompleStatisticsTmpMapper;
|
|
|
+ @Autowired
|
|
|
+ private PdmWorkPlanMapper pdmWorkPlanMapper;
|
|
|
|
|
|
/**
|
|
|
* 查询工程量完成情况
|
|
@@ -90,4 +107,188 @@ public class PdmWorkCompleStatisticsServiceImpl implements IPdmWorkCompleStatist
|
|
|
{
|
|
|
return pdmWorkCompleStatisticsMapper.deletePdmWorkCompleStatisticsById(id);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void dealWorkCompleStatistics() {
|
|
|
+
|
|
|
+ PdmWorkCompleStatisticsTmp queryTmp = new PdmWorkCompleStatisticsTmp();
|
|
|
+ queryTmp.setDealStatus("0");//未处理
|
|
|
+ List<PdmWorkCompleStatisticsTmp> tmpList = pdmWorkCompleStatisticsTmpMapper.selectPdmWorkCompleStatisticsTmpList(queryTmp);
|
|
|
+
|
|
|
+ List<PdmWorkCompleStatistics> list = pdmWorkCompleStatisticsMapper.selectPdmWorkCompleStatisticsList(null);
|
|
|
+ List<PdmWorkCompleStatistics> addList = new ArrayList<>();
|
|
|
+
|
|
|
+ Map<String, PdmWorkCompleStatistics> oldMap = list.stream().collect(Collectors.toMap(PdmWorkCompleStatistics::getId, t->t));
|
|
|
+
|
|
|
+ Map<String, WorkPlanStatistics> workMap = pdmWorkPlanMapper.selectWorkPlanStatistics(null).stream().collect(Collectors.toMap(WorkPlanStatistics::getProjId, t->t));
|
|
|
+
|
|
|
+ WorkPlanStatistics queryWork = new WorkPlanStatistics();
|
|
|
+ queryWork.setStartDate(DateUtils.getLastMonday(DateUtils.YYYYMMDD));
|
|
|
+ queryWork.setEndDate(DateUtils.getLastSunday(DateUtils.YYYYMMDD));
|
|
|
+ Map<String, WorkPlanStatistics> workLastWeekMap = pdmWorkPlanMapper.selectWorkPlanStatistics(queryWork).stream().collect(Collectors.toMap(WorkPlanStatistics::getProjId, t->t));
|
|
|
+
|
|
|
+ //将累积量增加的值更新至周累计量字段中
|
|
|
+ for(PdmWorkCompleStatisticsTmp tmp :tmpList){
|
|
|
+ PdmWorkCompleStatistics work =null;
|
|
|
+ if(oldMap.containsKey(tmp.getId())){
|
|
|
+ work = oldMap.get(tmp.getId());
|
|
|
+ //更新工程累计完成量和周完成量
|
|
|
+ setWorkCompleData(work,tmp);
|
|
|
+ //更新作业数量
|
|
|
+ setWorkPlanData(work,workMap,workLastWeekMap);
|
|
|
+ //比较是否异常
|
|
|
+ compareExc(work);
|
|
|
+ pdmWorkCompleStatisticsMapper.updatePdmWorkCompleStatistics(work);
|
|
|
+ }else{
|
|
|
+ work = new PdmWorkCompleStatistics();
|
|
|
+ BeanUtils.copyBeanProp(work,tmp);
|
|
|
+ //更新作业数量
|
|
|
+ setWorkPlanData(work,workMap,workLastWeekMap);
|
|
|
+ //比较是否异常
|
|
|
+ compareExc(work);
|
|
|
+ addList.add(work);
|
|
|
+ }
|
|
|
+ tmp.setDealStatus("1");//已处理
|
|
|
+ pdmWorkCompleStatisticsTmpMapper.updatePdmWorkCompleStatisticsTmp(tmp);
|
|
|
+ }
|
|
|
+ //保存新增的工程
|
|
|
+ if(CollectionUtils.isNotEmpty(addList)){
|
|
|
+ for(PdmWorkCompleStatistics statistics:addList){
|
|
|
+ this.insertPdmWorkCompleStatistics(statistics);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置新的工程量累计值
|
|
|
+ * @param work
|
|
|
+ * @param tmp
|
|
|
+ */
|
|
|
+ private void setWorkCompleData(PdmWorkCompleStatistics work,PdmWorkCompleStatisticsTmp tmp){
|
|
|
+
|
|
|
+ if(work.getLineCableNewAccuQt().compareTo(tmp.getLineCableNewAccuQt())!=0){
|
|
|
+ work.setLineCableNewAccuQtWeek(tmp.getLineCableNewAccuQt().subtract(work.getLineCableNewAccuQt()));
|
|
|
+ work.setLineCableNewAccuQt(tmp.getLineCableNewAccuQt());
|
|
|
+ }
|
|
|
+ if(work.getLineOverhdNewAccuQt().compareTo(tmp.getLineOverhdNewAccuQt())!=0){
|
|
|
+ work.setLineOverhdNewAccuQtWeek(tmp.getLineOverhdNewAccuQt().subtract(work.getLineOverhdNewAccuQt()));
|
|
|
+ work.setLineOverhdNewAccuQt(tmp.getLineOverhdNewAccuQt());
|
|
|
+ }
|
|
|
+ if(work.getDistTransNewAccuQt().compareTo(tmp.getDistTransNewAccuQt())!=0){
|
|
|
+ work.setDistTransNewAccuQtWeek(tmp.getDistTransNewAccuQt().subtract(work.getDistTransNewAccuQt()));
|
|
|
+ work.setDistTransNewAccuQt(tmp.getDistTransNewAccuQt());
|
|
|
+ }
|
|
|
+ if(work.getDistTransNewAccuQt().compareTo(tmp.getDistTransNewAccuQt())!=0){
|
|
|
+ work.setDistTransNewAccuQtWeek(tmp.getDistTransNewAccuQt().subtract(work.getDistTransNewAccuQt()));
|
|
|
+ work.setDistTransNewAccuQt(tmp.getDistTransNewAccuQt());
|
|
|
+ }
|
|
|
+ if(work.getLowVoltLineAccuQt().compareTo(tmp.getLowVoltLineAccuQt())!=0){
|
|
|
+ work.setLowVoltLineAccuQtWeek(tmp.getLowVoltLineAccuQt().subtract(work.getLowVoltLineAccuQt()));
|
|
|
+ work.setLowVoltLineAccuQt(tmp.getLowVoltLineAccuQt());
|
|
|
+ }
|
|
|
+ if(work.getLowVoltLineAccuQt().compareTo(tmp.getLowVoltLineAccuQt())!=0){
|
|
|
+ work.setLowVoltLineAccuQtWeek(tmp.getLowVoltLineAccuQt().subtract(work.getLowVoltLineAccuQt()));
|
|
|
+ work.setLowVoltLineAccuQt(tmp.getLowVoltLineAccuQt());
|
|
|
+ }
|
|
|
+ if(work.getTowerAccuQt().compareTo(tmp.getTowerAccuQt())!=0){
|
|
|
+ work.setTowerAccuQtWeek(tmp.getTowerAccuQt().subtract(work.getTowerAccuQt()));
|
|
|
+ work.setTowerAccuQt(tmp.getTowerAccuQt());
|
|
|
+ }
|
|
|
+ if(work.getRingCabinetAccuQt().compareTo(tmp.getRingCabinetAccuQt())!=0){
|
|
|
+ work.setRingCabinetAccuQtWeek(tmp.getRingCabinetAccuQt().subtract(work.getRingCabinetAccuQt()));
|
|
|
+ work.setRingCabinetAccuQt(tmp.getRingCabinetAccuQt());
|
|
|
+ }
|
|
|
+ if(work.getPoleTabAccuQt().compareTo(tmp.getPoleTabAccuQt())!=0){
|
|
|
+ work.setPoleTabAccuQtWeek(tmp.getPoleTabAccuQt().subtract(work.getPoleTabAccuQt()));
|
|
|
+ work.setPoleTabAccuQt(tmp.getPoleTabAccuQt());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置累计作业量和周作业量
|
|
|
+ * @param work
|
|
|
+ * @param workMap
|
|
|
+ * @param workLastWeekMap
|
|
|
+ */
|
|
|
+ private void setWorkPlanData(PdmWorkCompleStatistics work,Map<String, WorkPlanStatistics> workMap,Map<String, WorkPlanStatistics> workLastWeekMap){
|
|
|
+
|
|
|
+ WorkPlanStatistics workPlan = workMap.get(work.getId());
|
|
|
+ WorkPlanStatistics workPlanLastWeek = workLastWeekMap.get(work.getId());
|
|
|
+ if(workPlan!=null){
|
|
|
+ work.setLineCableNewAccuQtWork(workPlan.getLineCableNewAccuQtWork());
|
|
|
+ work.setLineOverhdNewAccuQtWork(workPlan.getLineOverhdNewAccuQtWork());
|
|
|
+ work.setDistTransNewAccuQtWork(workPlan.getDistTransNewAccuQtWork());
|
|
|
+ work.setLowVoltLineAccuQtWork(workPlan.getLowVoltLineAccuQtWork());
|
|
|
+ work.setTowerAccuQtWork(workPlan.getTowerAccuQtWork());
|
|
|
+ work.setRingCabinetAccuQtWork(workPlan.getRingCabinetAccuQtWork());
|
|
|
+ work.setPoleTabAccuQtWork(workPlan.getPoleTabAccuQtWork());
|
|
|
+ }else{
|
|
|
+ work.setLineCableNewAccuQtWork(BigDecimal.ZERO);
|
|
|
+ work.setLineOverhdNewAccuQtWork(BigDecimal.ZERO);
|
|
|
+ work.setDistTransNewAccuQtWork(BigDecimal.ZERO);
|
|
|
+ work.setLowVoltLineAccuQtWork(BigDecimal.ZERO);
|
|
|
+ work.setTowerAccuQtWork(BigDecimal.ZERO);
|
|
|
+ work.setRingCabinetAccuQtWork(BigDecimal.ZERO);
|
|
|
+ work.setPoleTabAccuQtWork(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+ if(workPlanLastWeek!=null){
|
|
|
+ work.setLineCableNewAccuQtWorkWeek(workPlanLastWeek.getLineCableNewAccuQtWork());
|
|
|
+ work.setLineOverhdNewAccuQtWorkWeek(workPlanLastWeek.getLineOverhdNewAccuQtWork());
|
|
|
+ work.setDistTransNewAccuQtWorkWeek(workPlanLastWeek.getDistTransNewAccuQtWork());
|
|
|
+ work.setLowVoltLineAccuQtWorkWeek(workPlanLastWeek.getLowVoltLineAccuQtWork());
|
|
|
+ work.setTowerAccuQtWorkWeek(workPlanLastWeek.getTowerAccuQtWork());
|
|
|
+ work.setRingCabinetAccuQtWorkWeek(workPlanLastWeek.getRingCabinetAccuQtWork());
|
|
|
+ work.setPoleTabAccuQtWorkWeek(workPlanLastWeek.getPoleTabAccuQtWork());
|
|
|
+ }else{
|
|
|
+ work.setLineCableNewAccuQtWorkWeek(BigDecimal.ZERO);
|
|
|
+ work.setLineOverhdNewAccuQtWorkWeek(BigDecimal.ZERO);
|
|
|
+ work.setDistTransNewAccuQtWorkWeek(BigDecimal.ZERO);
|
|
|
+ work.setLowVoltLineAccuQtWorkWeek(BigDecimal.ZERO);
|
|
|
+ work.setTowerAccuQtWorkWeek(BigDecimal.ZERO);
|
|
|
+ work.setRingCabinetAccuQtWorkWeek(BigDecimal.ZERO);
|
|
|
+ work.setPoleTabAccuQtWorkWeek(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断是否异常
|
|
|
+ * @param work
|
|
|
+ */
|
|
|
+ private void compareExc(PdmWorkCompleStatistics work){
|
|
|
+
|
|
|
+ String excStatus = "0";
|
|
|
+ if((work.getLineCableNewAccuQtWork().compareTo(BigDecimal.ZERO)==0 && work.getLineCableNewAccuQt().compareTo(BigDecimal.ZERO)!=0)
|
|
|
+ || (work.getLineCableNewAccuQtWork().compareTo(BigDecimal.ZERO)!=0 && work.getLineCableNewAccuQt().compareTo(BigDecimal.ZERO)==0)){
|
|
|
+ excStatus = "1";
|
|
|
+ }
|
|
|
+ if((work.getLineOverhdNewAccuQtWork().compareTo(BigDecimal.ZERO)==0 && work.getLineOverhdNewAccuQt().compareTo(BigDecimal.ZERO)!=0)
|
|
|
+ || (work.getLineOverhdNewAccuQtWork().compareTo(BigDecimal.ZERO)!=0 && work.getLineOverhdNewAccuQt().compareTo(BigDecimal.ZERO)==0)){
|
|
|
+ excStatus = "1";
|
|
|
+ }
|
|
|
+ if((work.getDistTransNewAccuQtWork().compareTo(BigDecimal.ZERO)==0 && work.getDistTransNewAccuQt().compareTo(BigDecimal.ZERO)!=0)
|
|
|
+ || (work.getDistTransNewAccuQtWork().compareTo(BigDecimal.ZERO)!=0 && work.getDistTransNewAccuQt().compareTo(BigDecimal.ZERO)==0)){
|
|
|
+ excStatus = "1";
|
|
|
+ }
|
|
|
+ if((work.getLowVoltLineAccuQtWork().compareTo(BigDecimal.ZERO)==0 && work.getLowVoltLineAccuQt().compareTo(BigDecimal.ZERO)!=0)
|
|
|
+ || (work.getLowVoltLineAccuQtWork().compareTo(BigDecimal.ZERO)!=0 && work.getLowVoltLineAccuQt().compareTo(BigDecimal.ZERO)==0)){
|
|
|
+ excStatus = "1";
|
|
|
+ }
|
|
|
+ if((work.getTowerAccuQtWork().compareTo(BigDecimal.ZERO)==0 && work.getTowerAccuQt().compareTo(BigDecimal.ZERO)!=0)
|
|
|
+ || (work.getTowerAccuQtWork().compareTo(BigDecimal.ZERO)!=0 && work.getTowerAccuQt().compareTo(BigDecimal.ZERO)==0)){
|
|
|
+ excStatus = "1";
|
|
|
+ }
|
|
|
+ if((work.getRingCabinetAccuQtWork().compareTo(BigDecimal.ZERO)==0 && work.getRingCabinetAccuQt().compareTo(BigDecimal.ZERO)!=0)
|
|
|
+ || (work.getRingCabinetAccuQtWork().compareTo(BigDecimal.ZERO)!=0 && work.getRingCabinetAccuQt().compareTo(BigDecimal.ZERO)==0)){
|
|
|
+ excStatus = "1";
|
|
|
+ }
|
|
|
+ if((work.getPoleTabAccuQtWork().compareTo(BigDecimal.ZERO)==0 && work.getPoleTabAccuQt().compareTo(BigDecimal.ZERO)!=0)
|
|
|
+ || (work.getPoleTabAccuQtWork().compareTo(BigDecimal.ZERO)!=0 && work.getPoleTabAccuQt().compareTo(BigDecimal.ZERO)==0)){
|
|
|
+ excStatus = "1";
|
|
|
+ }
|
|
|
+ work.setExcType(excStatus);
|
|
|
+
|
|
|
+ }
|
|
|
}
|