Procházet zdrojové kódy

新增作业数据批量新增RPA接口

zx před 2 měsíci
rodič
revize
0d6ebaf060

+ 2 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java

@@ -33,6 +33,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
 
     public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
 
+    public static String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";
+
     private static String[] parsePatterns = {
             "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
             "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",

+ 4 - 4
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -22,7 +22,7 @@ import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl;
 
 /**
  * spring security配置
- * 
+ *
  * @author ruoyi
  */
 @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
@@ -33,7 +33,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
      */
     @Autowired
     private UserDetailsService userDetailsService;
-    
+
     /**
      * 认证失败处理类
      */
@@ -51,7 +51,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
      */
     @Autowired
     private JwtAuthenticationTokenFilter authenticationTokenFilter;
-    
+
     /**
      * 跨域过滤器
      */
@@ -126,7 +126,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/activiti/definition/upload").anonymous()
                 .antMatchers("/activiti/definition/readResource").anonymous()
                 .antMatchers("/activiti/process/read-resource").anonymous()
-
+                .antMatchers("/power/workPlan/batchAdd").anonymous()
 
 
                 // 除上面外的所有请求全部需要鉴权认证

+ 10 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/controller/PdmWorkPlanController.java

@@ -4,6 +4,7 @@ import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
 import com.ruoyi.powerdistribution.domain.dto.PdmWorkPlanDTO;
+import com.ruoyi.powerdistribution.domain.dto.RpaWorkPlanDTO;
 import com.ruoyi.powerdistribution.domain.vo.WorkNumByCompanyStatistics;
 import com.ruoyi.powerdistribution.domain.vo.WorkNumStatisticsHome;
 import com.ruoyi.powerdistribution.domain.vo.WorkNumStatisticsHomeChild;
@@ -151,4 +152,13 @@ public class PdmWorkPlanController extends BaseController
     public List<WorkNumStatisticsHomeChild> getWorkNumStatisticsHome(WorkNumStatisticsHomeChild workNumStatisticsHome) {
         return pdmWorkPlanService.getWorkNumStatisticsHomeChild(workNumStatisticsHome);
     }
+
+    /**
+     * RPA同步TO作业数据接口
+     */
+    @PostMapping("/batchAdd")
+    public AjaxResult add(@RequestBody List<RpaWorkPlanDTO> planList)
+    {
+        return toAjax(pdmWorkPlanService.insertPdmWorkPlanBatch(planList));
+    }
 }

+ 4 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/dto/PdmWorkPlanDTO.java

@@ -3,6 +3,8 @@ package com.ruoyi.powerdistribution.domain.dto;
 import com.ruoyi.powerdistribution.domain.PdmWorkPlan;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * 作业表DTO
  */
@@ -36,6 +38,8 @@ public class PdmWorkPlanDTO extends PdmWorkPlan {
 
     private String vehicleNo;
 
+    private List<String> uuidList;
+
     public String getStartDate() {
         return startDate;
     }

+ 191 - 0
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/domain/dto/RpaWorkPlanDTO.java

@@ -0,0 +1,191 @@
+package com.ruoyi.powerdistribution.domain.dto;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.powerdistribution.domain.PdmWorkPlan;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * rpa作业信息
+ */
+@Data
+public class RpaWorkPlanDTO {
+
+    /**
+     * uuid
+     */
+    private String workPlanId;
+    private String workPlanCode;
+    private String weekPlanId;
+    private String workPlanName;
+    private String mainsend;
+    private String mainsendId;
+    private String orgOrder;
+    private String ownOrg;
+    private String ownOrgId;
+    private String secondDevopsOrgId;
+    private String secondWorkOrgId;
+    private String workOrg;
+    private String workOrgId;
+    private String devopsOrg;
+    private String devopsOrgId;
+    private String substationName;
+    private String substationId;
+    private String workriskLevel;
+    private String workriskLevelVal;
+    private String gridriskLevel;
+    private String gridriskLevelVal;
+    private String voltageLevel;
+    private String voltageLevelVal;
+    private String majorType;
+    private String majorTypeVal;
+    private String workType;
+    private String workTypeVal;
+    private String workticketType;
+    private String workticketTypeVal;
+    private String powerCut;
+    private String powerCutVal;
+    private String liveWorkFlag;
+    private String liveWorkFlagVal;
+    private String beginTime;
+    private String actualBeginTime;
+    private String endTime;
+    private String actualEndTime;
+    private String workManagerArrivalTime;
+    /**
+     * 作业内容
+     */
+    private String workcontents;
+    private String addrProvince;
+    private String addrCity;
+    private String addrCountry;
+    private String workPlace;
+    private String landmark;
+    private String workingGroup;
+    private String workingGroupId;
+    private String majorworkerNum;
+    private String outworkerNum;
+    private String industrialworkerNum;
+    private String workManager;
+    private String workManagerId;
+    private String workManagerContact;
+    private String workerNature;
+    private String projectName;
+    private String projectId;
+    private String manageDep;
+    private String buildManageOrg;
+    private String constructionOrg;
+    private String constructionOrgId;
+    private String constructionOrgLb;
+    private String constructionOrgLbVal;
+    private String subcontractOrg;
+    private String subcontractOrgId;
+    private String subcontractNature;
+    private String subcontractNatureVal;
+    private String supervisororg;
+    private String supervisororgId;
+    private String powerOffAreas;
+    private String pubState;
+    private String pubTime;
+    private String pubUser;
+    private String pubUserId;
+    private String isPubTimely;
+    private String workState;
+    private String workStateVal;
+    private String isModify;
+    private String isDelete;
+    private String bindVideo;
+    private String bindSafehat;
+    private String workSrc;
+    private String srcWorkId;
+    private String createTime;
+    private String updateTime;
+    private String planType;
+    private String planTypeVal;
+    private String arrivalProvince;
+    private String arrivalCity;
+    private String arrivalCounty;
+    private String isSafetyDuty;
+    private String jl;
+    private String arrivalStaff;
+    private String arrivalType;
+    private String arrivalTypeVal;
+    private String isArrival;
+    private String score;
+    private String scoreDetail;
+    private String validity;
+    private String detailId;
+    private String devicePositionStatus;
+    private String productionProcesses;
+    private String productionProcessesVal;
+    private String deputyWorkManager;
+    private String deputyWorkManagerId;
+    private String deputyWorkManagerContact;
+    private String isReport;
+    private String ticketId;
+    private String riskBookId;
+    private String crossDayFlag;
+    private String actualWorkerNum;
+    private String accidentRiskFlg;
+    private String accidentRiskType;
+    private String accidentRiskTypeVal;
+
+    public PdmWorkPlan changeRpa(RpaWorkPlanDTO dto){
+        PdmWorkPlan plan  = new PdmWorkPlan();
+        plan.setUuid(dto.getWorkPlanId());
+        plan.setWeekPlanNo(dto.getWorkPlanCode());
+        plan.setWeekPlanId(dto.getWeekPlanId());
+        plan.setPlanNm(dto.getWorkPlanName());
+        plan.setProjId(dto.getProjectId());
+        plan.setProjNm(dto.getProjectName());
+        plan.setSubmitOrgId(dto.getMainsendId());
+        plan.setSubmitOrgNm(dto.getMainsend());
+        plan.setOrgSort(dto.getOrgOrder());
+        plan.setMgmtOrgId(dto.getOwnOrgId());
+        plan.setMgmtOrgNm(dto.getOwnOrg());
+        plan.setSubsOrLineId(dto.getSubstationId());
+        plan.setSubsOrLineNm(dto.getSubstationName());
+        plan.setOpRiskLvlCd(dto.getWorkriskLevel());
+        plan.setOpRiskLvlDsc(dto.getWorkriskLevelVal());
+        plan.setElecgdRiskLvlCd(dto.getGridriskLevel());
+        plan.setElecgdRiskLvlDsc(dto.getGridriskLevelVal());
+        plan.setVoltLvlCd(dto.getVoltageLevel());
+        plan.setVoltLvlDsc(dto.getVoltageLevelVal());
+        plan.setMajorTypCd(dto.getMajorType());
+        plan.setMajorTypDsc(dto.getMajorTypeVal());
+        plan.setOpTypCd(dto.getWorkType());
+        plan.setOpTypDsc(dto.getWorkTypeVal());
+        plan.setWorkticketTypCd(dto.getWorkticketType());
+        plan.setWorkticketTypDsc(dto.getWorkticketTypeVal());
+        plan.setPoweroffTypCd(dto.getPowerCut());
+        plan.setPoweroffTypDsc(dto.getPowerCutVal());
+        plan.setIsEnergizedOpCd(dto.getLiveWorkFlag());
+        plan.setIsEnergizedOpDsc(dto.getLiveWorkFlagVal());
+        plan.setPlanStartWkTm(DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM,dto.getBeginTime()));
+        plan.setPlanEndTm(DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM,dto.getEndTime()));
+        plan.setOpContent(dto.getWorkcontents());
+        plan.setOpAddr(dto.getAddrProvince());
+        plan.setCityAdmAddr(dto.getAddrCity());
+        plan.setCountyAdmAddr(dto.getAddrCountry());
+        plan.setDetlPos(dto.getWorkPlace());
+        plan.setLandmarkArchit(dto.getLandmark());
+        plan.setWorkTeamId(dto.getWorkingGroupId());
+        plan.setWorkTeamNm(dto.getWorkingGroup());
+        plan.setMainBusiOrgOpNum(dto.getMajorworkerNum());
+        plan.setOutsourcingOrgOpNum(dto.getOutworkerNum());
+        plan.setIndustryOrgOpNum(dto.getIndustrialworkerNum());
+        plan.setWorkPrincipId(dto.getWorkManagerId());
+        plan.setWorkPrincipNm(dto.getWorkManager());
+        plan.setWorkPrincipContactMode(dto.getWorkManagerContact());
+        plan.setDelMarkCd(dto.getIsDelete());
+        plan.setCreateTm(DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM,dto.getCreateTime()));
+        plan.setPlanTypCd(dto.getPlanType());
+        plan.setPlanTypDsc(dto.getPlanTypeVal());
+        plan.setPlanExecStCd(dto.getWorkState());
+        plan.setPlanExecStDsc(dto.getWorkStateVal());
+        plan.setStdOrgNm("国网湖南省电力有限公司衡阳供电分公司");
+        plan.setStdOrgNo("R43009");
+        return plan;
+    }
+}

+ 3 - 1
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/mapper/PdmWorkPlanMapper.java

@@ -1,6 +1,8 @@
 package com.ruoyi.powerdistribution.mapper;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.powerdistribution.domain.PdmWorkPlan;
 import com.ruoyi.powerdistribution.domain.dto.PdmWorkPlanDTO;
 import com.ruoyi.powerdistribution.domain.vo.*;
@@ -11,7 +13,7 @@ import com.ruoyi.powerdistribution.domain.vo.*;
  * @author ruoyi
  * @date 2024-12-01
  */
-public interface PdmWorkPlanMapper
+public interface PdmWorkPlanMapper  extends BaseMapper<PdmWorkPlan>
 {
     /**
      * 查询作业计划

+ 12 - 1
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/IPdmWorkPlanService.java

@@ -1,8 +1,11 @@
 package com.ruoyi.powerdistribution.service;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.powerdistribution.domain.PdmWorkPlan;
 import com.ruoyi.powerdistribution.domain.dto.PdmWorkPlanDTO;
+import com.ruoyi.powerdistribution.domain.dto.RpaWorkPlanDTO;
 import com.ruoyi.powerdistribution.domain.vo.WorkNumByCompanyStatistics;
 import com.ruoyi.powerdistribution.domain.vo.WorkNumStatisticsHome;
 import com.ruoyi.powerdistribution.domain.vo.WorkNumStatisticsHomeChild;
@@ -14,7 +17,7 @@ import com.ruoyi.powerdistribution.domain.vo.WorkRiskStatistics;
  * @author ruoyi
  * @date 2024-12-01
  */
-public interface IPdmWorkPlanService
+public interface IPdmWorkPlanService  extends IService<PdmWorkPlan>
 {
     /**
      * 查询作业计划
@@ -41,6 +44,14 @@ public interface IPdmWorkPlanService
     public int insertPdmWorkPlan(PdmWorkPlan pdmWorkPlan);
 
     /**
+     * 批量更新作业计划 根据UUID
+     *
+     * @param planList 作业计划
+     * @return 结果
+     */
+    public int insertPdmWorkPlanBatch(List<RpaWorkPlanDTO> planList);
+
+    /**
      * 修改作业计划
      *
      * @param pdmWorkPlan 作业计划

+ 45 - 4
ruoyi-powerdistribution/src/main/java/com/ruoyi/powerdistribution/service/impl/PdmWorkPlanServiceImpl.java

@@ -1,14 +1,19 @@
 package com.ruoyi.powerdistribution.service.impl;
 
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.powerdistribution.domain.PdmRiskRole;
+import com.ruoyi.powerdistribution.domain.PdmWorkCompleStatistics;
 import com.ruoyi.powerdistribution.domain.dto.PdmWorkPlanDTO;
+import com.ruoyi.powerdistribution.domain.dto.RpaWorkPlanDTO;
 import com.ruoyi.powerdistribution.domain.vo.WorkNumByCompanyStatistics;
 import com.ruoyi.powerdistribution.domain.vo.WorkNumStatisticsHome;
 import com.ruoyi.powerdistribution.domain.vo.WorkNumStatisticsHomeChild;
@@ -31,7 +36,7 @@ import org.springframework.transaction.annotation.Transactional;
  */
 @Slf4j
 @Service
-public class PdmWorkPlanServiceImpl implements IPdmWorkPlanService
+public class PdmWorkPlanServiceImpl extends ServiceImpl<PdmWorkPlanMapper, PdmWorkPlan> implements IPdmWorkPlanService
 {
     @Autowired
     private PdmWorkPlanMapper pdmWorkPlanMapper;
@@ -76,6 +81,27 @@ public class PdmWorkPlanServiceImpl implements IPdmWorkPlanService
         return pdmWorkPlanMapper.insertPdmWorkPlan(pdmWorkPlan);
     }
 
+    @Override
+    @Transactional
+    public int insertPdmWorkPlanBatch(List<RpaWorkPlanDTO> planList) {
+        List<PdmWorkPlan> newPlanList  =changeRpaList(planList);
+        List<String> uuidList = newPlanList.stream().map(PdmWorkPlan::getUuid).collect(Collectors.toList());
+        PdmWorkPlanDTO queryDto = new PdmWorkPlanDTO();
+        queryDto.setUuidList(uuidList);
+        List<PdmWorkPlan> oldPlanList = pdmWorkPlanMapper.selectPdmWorkPlanList(queryDto);
+        Map<String,PdmWorkPlan> oldMap = oldPlanList.stream().collect(Collectors.toMap(PdmWorkPlan::getUuid, t->t));
+
+        for(PdmWorkPlan plan:newPlanList){
+            if(oldMap.containsKey(plan.getUuid())){
+                plan.setId(oldMap.get(plan.getUuid()).getId());
+                this.updatePdmWorkPlan(plan);
+            }else{
+                this.insertPdmWorkPlan(plan);
+            }
+        }
+        return 1;
+    }
+
     /**
      * 修改作业计划
      *
@@ -218,4 +244,19 @@ public class PdmWorkPlanServiceImpl implements IPdmWorkPlanService
         }
     }
 
+    /**
+     * 转换RPA对象
+     * @param dtoList
+     * @return
+     */
+    public List<PdmWorkPlan> changeRpaList(List<RpaWorkPlanDTO> dtoList){
+        List<PdmWorkPlan> planList = new ArrayList<>();
+        for(RpaWorkPlanDTO dto:dtoList){
+            PdmWorkPlan plan = dto.changeRpa(dto);
+            planList.add(plan);
+        }
+        return planList;
+    }
+
+
 }

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

@@ -64,7 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <sql id="selectPdmBranchLineVo">
         select id, big_feeder_branch_line_id, line_nm, eqp_no, run_no, blg_big_feeder_id, blg_big_feeder_nm, volt_lvl_cd, volt_lvl_dsc, erect_mode_cd, erect_mode_dsc, overhd_line_len, cable_line_len, line_tol_len, start_eqp_id, start_eqp_nm, start_eqp_typ_cd, start_eqp_typ_dsc, line_nature_cd, line_nature_dsc, blg_super_line_id, blg_super_line_nm, blg_city_id, blg_city_nm, op_maint_org_id, op_maint_org_nm, maint_team_id, maint_team_nm, run_st_cd, run_st_dsc, release_st_dsc, repmaint_line_len, is_have_figur, std_eqp_master_id, std_eqp_master_nm, ship_dt, std_org_no, std_org_nm, SUBSTRING_INDEX(std_city_org_nm, '国网湖南省电力有限公司', -1)std_city_org_nm , std_county_org_no, SUBSTRING_INDEX(std_county_org_nm, '国网湖南省电力有限公司', -1)std_county_org_nm, data_dt, etl_tm, std_city_org_no, start_pos, eqp_master_id, eqp_master_nm, battalion_id, battalion_nm, retrogres_dt, create_tm, latest_upd_tm,bouns as reward_amount,fault_free_duration
-        , (SELECT count(1) from ads_cst_hywzqlc_pdmstopbranchrecords_df t1 where t1.branch_line_id=t.big_feeder_branch_line_id and poweroff_start_tm > DATE_SUB(NOW(), INTERVAL 2 MONTH) )poweroff_num,
+        , (SELECT count(1) from ads_cst_hywzqlc_pdmstopbranchrecords_df t1 where t1.branch_line_id=t.big_feeder_branch_line_id and poweroff_start_tm > DATE_SUB(NOW(), INTERVAL 1 YEAR) )poweroff_num,
           t.fault_poweroff_tm,t.poweroff_tm
         from pdm_branch_line t
     </sql>

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

@@ -191,7 +191,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         t1.maint_team_id, t1.maint_team_nm, t1.org_no, t1.org_nm, t1.std_creator_no, t1.std_creator_nm,
         t1.std_updator_no, t1.std_updator_nm, t1.std_org_no, t1.std_org_nm, t1.std_city_org_no,
         SUBSTRING_INDEX(t1.std_city_org_nm, '国网湖南省电力有限公司', -1)std_city_org_nm, t1.std_county_org_no, SUBSTRING_INDEX(t1.std_county_org_nm, '国网湖南省电力有限公司', -1) std_county_org_nm, t1.data_dt, t1.etl_tm,t1.bouns as reward_amount,t1.fault_free_duration,
-        (SELECT count(1) from ads_cst_hywzqlc_pdmstoprecords_df where poweroff_start_tm > DATE_SUB(NOW(), INTERVAL 2 MONTH ) and line_id=t1.rec_id)poweroff_num,
+        (SELECT count(1) from ads_cst_hywzqlc_pdmstoprecords_df where poweroff_start_tm > DATE_SUB(NOW(), INTERVAL 1 YEAR ) and line_id=t1.rec_id)poweroff_num,
         t1.fault_poweroff_tm,t1.poweroff_tm
         from pdm_line t1
         <where>

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

@@ -235,6 +235,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="riskFlag != null and riskFlag == 1 ">
                 and risk_type not in ('0','1')
             </if>
+            <if test="uuidList != null and uuidList.size() > 0">
+                and uuid in
+                <foreach collection="uuidList" item="id" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
         </where>
         order by  plan_start_wk_tm desc
     </select>