Prechádzať zdrojové kódy

工程量同步定时器

zx 3 mesiacov pred
rodič
commit
310f56c2e7

+ 33 - 1
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java

@@ -263,10 +263,42 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
         return null;
     }
 
+    /**
+     * 获取上周一
+     * @param format
+     * @return
+     */
+    public static String getLastMonday(String format){
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.DATE, -7);  // 获取上一周
+        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);  // 设置为周一
+        Date monday = calendar.getTime();
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        return sdf.format(monday);
+    }
+
+    /**
+     * 获取上周日
+     * @param format
+     * @return
+     */
+    public static String getLastSunday(String format){
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.DATE, -7);  // 获取上一周
+        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
+        calendar.add(Calendar.DATE, 6);
+        Date sunday = calendar.getTime();
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        return sdf.format(sunday);
+    }
+
 
     public static void main(String[] args)throws Exception {
         //System.out.println(getNextMonday("20241125",YYYYMMDD));
-        System.out.println(covertStrToLocalTime("Fri Jan 17 2025 00:00:00 GMT+0800 (中国标准时间)"));
+       // System.out.println(covertStrToLocalTime("Fri Jan 17 2025 00:00:00 GMT+0800 (中国标准时间)"));
+
+        System.out.println(getLastMonday(YYYY_MM_DD));
+        System.out.println(getLastSunday(YYYY_MM_DD));
     }
 
 }

+ 0 - 3
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/controller/PdmWorkCompleStatisticsController.java

@@ -3,15 +3,12 @@ package com.ruoyi.powerdistribution.controller;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
-import com.ruoyi.powerdistribution.domain.vo.PdmWorkCompleStatisticsVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;

+ 0 - 72
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/vo/PdmWorkCompleStatisticsVO.java

@@ -1,72 +0,0 @@
-package com.ruoyi.powerdistribution.domain.vo;
-
-import com.ruoyi.powerdistribution.domain.PdmWorkCompleStatistics;
-
-import java.math.BigDecimal;
-
-public class PdmWorkCompleStatisticsVO extends PdmWorkCompleStatistics {
-
-    private BigDecimal lineCableNewAccuQtWork;
-    private BigDecimal lineOverhdNewAccuQtWork;
-    private BigDecimal distTransNewAccuQtWork;
-    private BigDecimal lowVoltLineAccuQtWork;
-    private BigDecimal towerAccuQtWork;
-    private BigDecimal ringCabinetAccuQtWork;
-    private BigDecimal poleTabAccuQtWork;
-
-    public BigDecimal getLineCableNewAccuQtWork() {
-        return lineCableNewAccuQtWork;
-    }
-
-    public void setLineCableNewAccuQtWork(BigDecimal lineCableNewAccuQtWork) {
-        this.lineCableNewAccuQtWork = lineCableNewAccuQtWork;
-    }
-
-    public BigDecimal getLineOverhdNewAccuQtWork() {
-        return lineOverhdNewAccuQtWork;
-    }
-
-    public void setLineOverhdNewAccuQtWork(BigDecimal lineOverhdNewAccuQtWork) {
-        this.lineOverhdNewAccuQtWork = lineOverhdNewAccuQtWork;
-    }
-
-    public BigDecimal getDistTransNewAccuQtWork() {
-        return distTransNewAccuQtWork;
-    }
-
-    public void setDistTransNewAccuQtWork(BigDecimal distTransNewAccuQtWork) {
-        this.distTransNewAccuQtWork = distTransNewAccuQtWork;
-    }
-
-    public BigDecimal getLowVoltLineAccuQtWork() {
-        return lowVoltLineAccuQtWork;
-    }
-
-    public void setLowVoltLineAccuQtWork(BigDecimal lowVoltLineAccuQtWork) {
-        this.lowVoltLineAccuQtWork = lowVoltLineAccuQtWork;
-    }
-
-    public BigDecimal getTowerAccuQtWork() {
-        return towerAccuQtWork;
-    }
-
-    public void setTowerAccuQtWork(BigDecimal towerAccuQtWork) {
-        this.towerAccuQtWork = towerAccuQtWork;
-    }
-
-    public BigDecimal getRingCabinetAccuQtWork() {
-        return ringCabinetAccuQtWork;
-    }
-
-    public void setRingCabinetAccuQtWork(BigDecimal ringCabinetAccuQtWork) {
-        this.ringCabinetAccuQtWork = ringCabinetAccuQtWork;
-    }
-
-    public BigDecimal getPoleTabAccuQtWork() {
-        return poleTabAccuQtWork;
-    }
-
-    public void setPoleTabAccuQtWork(BigDecimal poleTabAccuQtWork) {
-        this.poleTabAccuQtWork = poleTabAccuQtWork;
-    }
-}

+ 43 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/vo/WorkPlanStatistics.java

@@ -0,0 +1,43 @@
+package com.ruoyi.powerdistribution.domain.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 工程相关作业统计
+ */
+@Data
+public class WorkPlanStatistics {
+
+    /**
+     * 项目ID
+     */
+    private String projId;
+    /**
+     * 10千伏电缆作业数量
+     */
+    private BigDecimal lineCableNewAccuQtWork;
+    /**
+     * 10千伏架空作业数量
+     */
+    private BigDecimal lineOverhdNewAccuQtWork;
+    private BigDecimal distTransNewAccuQtWork;
+    private BigDecimal lowVoltLineAccuQtWork;
+    private BigDecimal towerAccuQtWork;
+    private BigDecimal ringCabinetAccuQtWork;
+    private BigDecimal poleTabAccuQtWork;
+
+
+    /**
+     * 查询开始时间
+     */
+    private String startDate;
+
+    /**
+     * 查询结束时间
+     */
+    private String endDate;
+
+
+}

+ 7 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/mapper/PdmWorkPlanMapper.java

@@ -5,6 +5,7 @@ import com.ruoyi.powerdistribution.domain.PdmWorkPlan;
 import com.ruoyi.powerdistribution.domain.dto.PdmWorkPlanDTO;
 import com.ruoyi.powerdistribution.domain.vo.WorkNumByCompanyStatistics;
 import com.ruoyi.powerdistribution.domain.vo.WorkNumStatisticsHome;
+import com.ruoyi.powerdistribution.domain.vo.WorkPlanStatistics;
 import com.ruoyi.powerdistribution.domain.vo.WorkRiskStatistics;
 
 /**
@@ -92,5 +93,11 @@ public interface PdmWorkPlanMapper
      */
     List<WorkNumStatisticsHome> getWorkNumStatisticsHome(WorkNumStatisticsHome workNumStatisticsHome);
 
+    /**
+     * 获取工程相关作业统计
+     * @param workPlanStatistics
+     * @return
+     */
+    List<WorkPlanStatistics> selectWorkPlanStatistics(WorkPlanStatistics workPlanStatistics);
 
 }

+ 5 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/IPdmWorkCompleStatisticsService.java

@@ -58,4 +58,9 @@ public interface IPdmWorkCompleStatisticsService
      * @return 结果
      */
     public int deletePdmWorkCompleStatisticsById(String id);
+
+    /**
+     * 计算工程量主函数
+     */
+    void dealWorkCompleStatistics();
 }

+ 201 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/impl/PdmWorkCompleStatisticsServiceImpl.java

@@ -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);
+
+    }
 }

+ 22 - 0
ruoyi-powerdistribution/src/main/resources/mapper/powerdistribution/PdmWorkPlanMapper.xml

@@ -653,4 +653,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ) t2 on t1.organ_name = t2.submit_org_nm
 
     </select>
+
+    <select id="selectWorkPlanStatistics" resultType="com.ruoyi.powerdistribution.domain.vo.WorkPlanStatistics">
+        select proj_id,
+               sum(if(volt_lvl_cd = '2001008' and ((op_content like '%新建%' and op_content like '%电缆%') or (op_content like '%更换%' and op_content like '%电缆%')or (op_content like '%拆除%' and op_content like '%电缆%')),1,0)) line_cable_new_accu_qt_work,
+               sum(if(volt_lvl_cd = '2001008' and ((op_content like '%新建%' and op_content like '%导线%') or (op_content like '%更换%' and op_content like '%导线%')or (op_content like '%拆除%' and op_content like '%导线%')),1,0)) line_overhd_new_accu_qt_work,
+               sum(if(volt_lvl_cd = '2001008' and ((op_content like '%更换%' and op_content like '%变压器%') or (op_content like '%更换%' and op_content like '%变压器%')or (op_content like '%拆除%' and op_content like '%变压器%')),1,0)) dist_trans_new_accu_qt_work,
+               sum(if(volt_lvl_cd = '2001009' and ((op_content like '%新建%' and op_content like '%电缆%') or (op_content like '%更换%' and op_content like '%电缆%')or (op_content like '%拆除%' and op_content like '%电缆%')),1,0)) low_volt_line_accu_qt_work,
+               sum(if((op_content like '%新建%' and op_content like '%环网%') or (op_content like '%更换%' and op_content like '%环网%')or (op_content like '%拆除%' and op_content like '%环网%'),1,0)) ring_cabinet_accu_qt_work,
+               sum(if(volt_lvl_cd = '2001008' and
+                      ((op_content like '%新建%' and op_content like '%断路器%') or (op_content like '%更换%' and op_content like '%断路器%') or (op_content like '%拆除%' and op_content like '%断路器%')
+                          or (op_content like '%新建%' and op_content like '%开关%') or (op_content like '%更换%' and op_content like '%开关%') or (op_content like '%拆除%' and op_content like '%开关%')
+                          or(op_content like '%新建%' and op_content like '%刀闸%') or (op_content like '%更换%' and op_content like '%刀闸%') or (op_content like '%拆除%' and op_content like '%刀闸%')
+                          or (op_content like '%新建%' and op_content like '%避雷器%') or (op_content like '%更换%' and op_content like '%避雷器%') or (op_content like '%拆除%' and op_content like '%避雷器%')
+                          ),1,0)) pole_tab_accu_qt_work,
+                sum(if(op_content like '%立杆%',1,0)) tower_accu_qt_work
+        FROM pdm_work_plan
+        <where>
+            <if test="startDate != null and startDate!=''">and date_format(plan_start_wk_tm,'%Y%m%d') &gt;= #{startDate}</if>
+            <if test="endDate != null and endDate!=''">and date_format(plan_start_wk_tm,'%Y%m%d') &lt;= #{endDate}</if>
+        </where>
+        GROUP BY proj_id
+    </select>
 </mapper>

+ 12 - 5
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java

@@ -1,9 +1,6 @@
 package com.ruoyi.quartz.task;
 
-import com.ruoyi.powerdistribution.service.IPdmScoreRankManagerService;
-import com.ruoyi.powerdistribution.service.IPdmScoreRankTeamService;
-import com.ruoyi.powerdistribution.service.IPdmScoreRankWorkerService;
-import com.ruoyi.powerdistribution.service.IPdmWorkPlanService;
+import com.ruoyi.powerdistribution.service.*;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.utils.StringUtils;
 
@@ -25,10 +22,12 @@ public class RyTask
     private IPdmScoreRankManagerService scoreRankManagerService;
     @Resource
     private IPdmScoreRankTeamService scoreRankTeamService;
-
     @Resource
     private IPdmScoreRankWorkerService scoreRankWorkerService;
 
+    @Resource
+    private IPdmWorkCompleStatisticsService workCompleStatisticsService;
+
     public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
     {
         System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
@@ -72,4 +71,12 @@ public class RyTask
     public void saveWorker(String startDate,String endDate){
         scoreRankWorkerService.saveWorker(startDate,endDate);
     }
+
+    /**
+     * 工程完成情况同步
+     */
+    public void dealWorkCompleStatistics(){
+        workCompleStatisticsService.dealWorkCompleStatistics();
+    }
+
 }