소스 검색

作业数据分析定时器提交

zx 5 달 전
부모
커밋
2734cebd92

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

@@ -76,4 +76,9 @@ public interface IPdmWorkPlanService
      */
     List<WorkNumByCompanyStatistics> getWorkNumByCompanyStatistics(WorkNumByCompanyStatistics workNumByCompany);
 
+    /**
+     * 作业数据分析 (异常,风险)
+     */
+    void workDataCompute();
+
 }

+ 58 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/impl/PdmWorkPlanServiceImpl.java

@@ -1,15 +1,22 @@
 package com.ruoyi.powerdistribution.service.impl;
 
 import java.util.List;
+
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.powerdistribution.domain.PdmRiskRole;
 import com.ruoyi.powerdistribution.domain.dto.PdmWorkPlanDTO;
 import com.ruoyi.powerdistribution.domain.vo.WorkNumByCompanyStatistics;
 import com.ruoyi.powerdistribution.domain.vo.WorkRiskStatistics;
+import com.ruoyi.powerdistribution.service.IPdmRiskRoleService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.powerdistribution.mapper.PdmWorkPlanMapper;
 import com.ruoyi.powerdistribution.domain.PdmWorkPlan;
 import com.ruoyi.powerdistribution.service.IPdmWorkPlanService;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 作业计划Service业务层处理
@@ -17,12 +24,16 @@ import com.ruoyi.powerdistribution.service.IPdmWorkPlanService;
  * @author ruoyi
  * @date 2024-12-01
  */
+@Slf4j
 @Service
 public class PdmWorkPlanServiceImpl implements IPdmWorkPlanService
 {
     @Autowired
     private PdmWorkPlanMapper pdmWorkPlanMapper;
 
+    @Autowired
+    private IPdmRiskRoleService riskRoleService;
+
     /**
      * 查询作业计划
      *
@@ -106,4 +117,51 @@ public class PdmWorkPlanServiceImpl implements IPdmWorkPlanService
     public List<WorkNumByCompanyStatistics> getWorkNumByCompanyStatistics(WorkNumByCompanyStatistics workNumByCompany) {
         return pdmWorkPlanMapper.getWorkNumByCompanyStatistics(workNumByCompany);
     }
+
+    @Override
+    @Transactional
+    public void workDataCompute() {
+        PdmWorkPlanDTO pdmWorkPlan = new PdmWorkPlanDTO();
+        pdmWorkPlan.setRiskType("0");//未处理
+        List<PdmWorkPlan> list = pdmWorkPlanMapper.selectPdmWorkPlanList(pdmWorkPlan);
+        List<PdmRiskRole> riskRoleList = riskRoleService.selectPdmRiskRoleList(new PdmRiskRole());
+        for(PdmWorkPlan plan:list){
+            String voltLvlCd =  plan.getVoltLvlCd();
+            if(!"2001008,2001009".contains(voltLvlCd) &&
+                    !("2006001".equals(plan.getIsEnergizedOpCd()) && "2005002".equals(plan.getPoweroffTypCd()) && "2008015".equals(plan.getWorkticketTypCd()))){
+                plan.setExceptionType("1001");//电压等级异常
+            }else{
+                //已处理
+                plan.setExceptionType("1");
+            }
+            checkRisk(plan,riskRoleList);
+            pdmWorkPlanMapper.updatePdmWorkPlan(plan);
+        }
+
+    }
+
+    /**
+     * 校验是否高风险
+     * @param plan
+     * @param riskRoleList
+     */
+    void checkRisk(PdmWorkPlan plan,List<PdmRiskRole> riskRoleList){
+        for(PdmRiskRole riskRole:riskRoleList){
+            JSONObject json = JSONObject.parseObject(riskRole.getRoleDes());
+            JSONArray jsonArray = json.getJSONArray("must");//暂时只有必须
+            for (int i = 0; i < jsonArray.size(); i++) {
+                String value = (String)jsonArray.get(i);
+                if(plan.getOpContent().contains(value)){
+                    plan.setRiskType(riskRole.getRoleCode());
+                }
+            }
+            //如果没触发任何规则,则置为1:已处理
+            if("0".equals(plan.getRiskType())){
+                plan.setRiskType("1");
+            }
+        }
+
+    }
+
+
 }

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

@@ -548,6 +548,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="planExecStDsc != null">plan_exec_st_dsc = #{planExecStDsc},</if>
             <if test="cancelReason != null">cancel_reason = #{cancelReason},</if>
             <if test="riskType != null ">risk_type = #{riskType},</if>
+            <if test="exceptionType != null ">exception_type = #{exceptionType},</if>
             <if test="planReason != null">plan_reason = #{planReason},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
             <if test="createTime != null">create_time = #{createTime},</if>

+ 7 - 1
ruoyi-quartz/pom.xml

@@ -34,7 +34,13 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-common</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-powerdistribution</artifactId>
+            <version>3.8.6</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 
-</project>
+</project>

+ 16 - 1
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java

@@ -1,16 +1,23 @@
 package com.ruoyi.quartz.task;
 
+import com.ruoyi.powerdistribution.service.IPdmWorkPlanService;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.utils.StringUtils;
 
+import javax.annotation.Resource;
+
 /**
  * 定时任务调度测试
- * 
+ *
  * @author ruoyi
  */
 @Component("ryTask")
 public class RyTask
 {
+
+    @Resource
+    private IPdmWorkPlanService workPlanService;
+
     public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
     {
         System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
@@ -25,4 +32,12 @@ public class RyTask
     {
         System.out.println("执行无参方法");
     }
+
+    /**
+     * 定期分析处理作业数据
+     */
+    public void workDataCompute(){
+        workPlanService.workDataCompute();
+
+    }
 }