Sfoglia il codice sorgente

运行记录优化

yuanchao 3 settimane fa
parent
commit
9c8505f506
11 ha cambiato i file con 201 aggiunte e 17 eliminazioni
  1. 2 3
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotopeationfill/IotOpeationFillController.java
  2. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotoperationplan/vo/IotOperationPlanPageReqVO.java
  3. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotoperationplan/vo/IotOperationPlanRespVO.java
  4. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotoperationplan/vo/IotOperationPlanSaveReqVO.java
  5. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotoperationplan/IotOperationPlanDO.java
  6. 5 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotopeationfill/IotOpeationFillMapper.java
  7. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotoperationplan/IotOperationPlanMapper.java
  8. 103 7
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/IotOperationPlanJob.java
  9. 0 5
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotopeationfill/IotOpeationFillServiceImpl.java
  10. 55 0
      yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOpeationFillMapper.xml
  11. 26 1
      yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOperationPlanMapper.xml

+ 2 - 3
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotopeationfill/IotOpeationFillController.java

@@ -233,6 +233,7 @@ public class IotOpeationFillController {
             }
                 IotRhDailyReportSaveReqVO saveReqVO1 = BeanUtil.mapToBean(stringObjectMap,IotRhDailyReportSaveReqVO.class,false);
                 saveReqVO1.setDeptId(fillDO1.getDeptId());
+                saveReqVO1.setFillOrderCreateTime(fillList.get(0).getCreateTime().atStartOfDay());
                 iotRhDailyReportService.createIotRhDailyReport(saveReqVO1);
             }
 
@@ -502,9 +503,7 @@ public class IotOpeationFillController {
                             IotDeviceRunLogDO reportCx = iotOpeationFillService.reportData(report);
 
                             String currentContent = "";
-                            if(reportCx==null){
-                                attrsDO.setFillContent("");
-                            }else{
+                            if(reportCx!=null){
                                 currentContent = reportCx.getFillContent() != null ? reportCx.getFillContent() : "";
                                 attrsDO.setFillContent(currentContent);
                             }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotoperationplan/vo/IotOperationPlanPageReqVO.java

@@ -58,4 +58,6 @@ public class IotOperationPlanPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] beginCreateTime;
 
+    private int isReport;
+
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotoperationplan/vo/IotOperationPlanRespVO.java

@@ -72,4 +72,6 @@ public class IotOperationPlanRespVO {
     private String createName;
     private String deptName;
 
+    private int isReport;
+
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotoperationplan/vo/IotOperationPlanSaveReqVO.java

@@ -59,4 +59,6 @@ public class IotOperationPlanSaveReqVO {
 
     List<IotOperationPlanDevDO> planDevList;
 
+    private int isReport;
+
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotoperationplan/IotOperationPlanDO.java

@@ -79,4 +79,6 @@ public class IotOperationPlanDO extends BaseDO {
      */
     private LocalDateTime beginCreateTime;
 
+    private int isReport;
+
 }

+ 5 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotopeationfill/IotOpeationFillMapper.java

@@ -138,7 +138,11 @@ public interface IotOpeationFillMapper extends BaseMapperX<IotOpeationFillDO> {
     List<IotOpeationFillDO> flList(IotOpeationFillDO vo);
 
     @TenantIgnore
-    List<IotOpeationFillDO> pdList(@Param("deviceIds")List<Long> deviceIds);
+    List<IotOpeationFillDO> pdList(@Param("deviceIds")Collection<Long> deviceIds);
+
+    @TenantIgnore
+    List<IotOpeationFillDO> pdList2(@Param("deviceIds")Collection<Long> deviceIds);
+
     List<IotOpeationFillDO> deviceList(IotOpeationFillRespVO vo);
     @TenantIgnore
     PageResult<IotOpeationFillDO> fillList1(IotOpeationFillPageReqVO vo);

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotoperationplan/IotOperationPlanMapper.java

@@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotoperationplan.IotOperationPlanDO;
 import org.apache.ibatis.annotations.Mapper;
 import cn.iocoder.yudao.module.pms.controller.admin.iotoperationplan.vo.*;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 运行记录计划 Mapper
@@ -37,5 +38,6 @@ public interface IotOperationPlanMapper extends BaseMapperX<IotOperationPlanDO>
 
     List<IotOperationPlanDO> getPlanList();
 
+    List<IotOperationPlanDO> getReportPlan(@Param("deviceIds")Collection<Long> deviceIds);
 
 }

+ 103 - 7
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/IotOperationPlanJob.java

@@ -21,6 +21,7 @@ import cn.iocoder.yudao.module.pms.service.iotopeationfill.IotOpeationFillServic
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Component;
@@ -225,12 +226,105 @@ public class IotOperationPlanJob implements JobHandler {
                 .filter(obj -> idList.contains(obj.getUserId()))
                 .collect(Collectors.toList());
 
+        Set<Long> idList1 = new HashSet<>();
+        idList1 =  deptService.getChildDeptIdListFromCache(157L);
+        idList1.add(157L);
+
+        boolean containPlan = idList1.contains(plan.getDeptId());
+
+        List<IotOpeationFillOrderDO> orderList2 = new ArrayList<>();
+        List<IotOperationPlanDO> rpList = new ArrayList<>();
+
+        Set<Long> pdeptList = new HashSet<>();
+        pdeptList =  deptService.getChildDeptIdListFromCache(plan.getDeptId());
+        pdeptList.add(plan.getDeptId());
+
+        //查询日报计划
+        rpList = planMapper.getReportPlan(pdeptList);
+        List<Long> rpdList = rpList.stream().map(IotOperationPlanDO::getDeptId).collect(Collectors.toList());
+
+        if(rpdList.size()>0){
+            orderList2 = orderList.stream().filter(e->rpdList.contains(e.getDeptId())).collect(Collectors.toList());
+        }
+
+
+
+        if(containPlan){
+
+
+
+            if(rpList.size()>0){
+
+                //有责任人,但设备不满足条件,而且属于瑞恒
+                List<IotOpeationFillDO> pdList2 = iotOpeationFillMapper.pdList2(pdeptList);
+                //有责任人,且满足条件,而且属于瑞恒
 
+                //判断是否与日报计划所属部门一致
+                pdList2 = pdList2.stream().filter(e->rpdList.contains(e.getDeptId())).collect(Collectors.toList());
+
+                if(pdList2.size()>0){
+                    orderList2 = new ArrayList<>();
+                    try{
+                        for (IotOpeationFillDO pd:pdList2) {
+
+                            IotOpeationFillOrderDO fillDO = new IotOpeationFillOrderDO();
+
+                            fillDO.setOrderName(pd.getOrgName()+"/"+LocalDate.now()+"运行记录填报");
+                            fillDO.setDeptId(pd.getDeptId());
+                            fillDO.setOrderStatus(0);
+                            fillDO.setCreateTime(LocalDateTime.now());
+                            fillDO.setUserName(pd.getUserName());
+                            fillDO.setUserId(pd.getUserId());
+                            fillDO.setMobile(pd.getMobile());
+                            orderList2.add(fillDO);
+
+                        }
+
+                        orderList1.addAll(orderList2);
+
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }else if(orderList2.size()>0){
+                    orderList1.addAll(orderList2);
+                }
+
+            }else{
+                List<IotOpeationFillDO> pdList2 = iotOpeationFillMapper.pdList2(pdeptList);
+
+                if(pdList2.size()>0){
+
+                    try{
+                        for (IotOpeationFillDO pd:pdList2) {
+
+                            IotOpeationFillOrderDO fillDO = new IotOpeationFillOrderDO();
+
+                            fillDO.setOrderName(pd.getOrgName()+"/"+LocalDate.now()+"运行记录填报");
+                            fillDO.setDeptId(pd.getDeptId());
+                            fillDO.setOrderStatus(0);
+                            fillDO.setCreateTime(LocalDateTime.now());
+                            fillDO.setUserName(pd.getUserName());
+                            fillDO.setUserId(pd.getUserId());
+                            fillDO.setMobile(pd.getMobile());
+                            orderList1.add(fillDO);
+                        }
+
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
+            }
+        }
 
         iotOpeationFillOrderMapper.insertBatch(orderList1);
 
 
-        //发送钉钉通知
+
+
+
+
+
+       /* //发送钉钉通知
         pmsThreadPoolTaskExecutor.execute(()->{
             try{
                 for (IotOpeationFillOrderDO order:orderList1) {
@@ -239,7 +333,7 @@ public class IotOperationPlanJob implements JobHandler {
             }catch (Exception e){
                 e.printStackTrace();
             }
-        });
+        });*/
 
 
         for (IotOpeationFillDO device:deviceList) {
@@ -266,17 +360,19 @@ public class IotOperationPlanJob implements JobHandler {
         iotOpeationFillMapper.insertFill(deviceList);
 
 
-        Set<Long> idList1 = new HashSet<>();
-        idList1 =  deptService.getChildDeptIdListFromCache(157L);
-        idList1.add(157L);
 
-        List<Long> oDeptList = orderList1.stream().map(IotOpeationFillOrderDO::getDeptId).collect(Collectors.toList());
+        List<Long> oDeptList = orderList2.stream().map(IotOpeationFillOrderDO::getDeptId).collect(Collectors.toList());
 
         boolean exist = idList1.containsAll(oDeptList);
 
         if(exist){
+            List <IotOpeationFillDO> devList = new ArrayList<>();
+            if(rpList.size()>0){
+                devList = opeationFillService.reportMethod(orderList2);
+            }else{
+                devList = opeationFillService.reportMethod(orderList1);
+            }
             //插入虚拟设备
-            List <IotOpeationFillDO> devList = opeationFillService.reportMethod(orderList1);
             iotOpeationFillMapper.insertFill(devList);
         }
 

+ 0 - 5
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotopeationfill/IotOpeationFillServiceImpl.java

@@ -323,11 +323,6 @@ public class IotOpeationFillServiceImpl implements IotOpeationFillService {
     @Override
     public List<IotOpeationFillDO> reportMethod(List<IotOpeationFillOrderDO> orderList) {
         List<IotOpeationFillDO> devList = new ArrayList<>();
-
-
-
-
-
         //判断工单主数据是否有值
         if(orderList.size()>0){
             //遍历工单主数据,根据dept_id查询是否为根节点

+ 55 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOpeationFillMapper.xml

@@ -556,6 +556,61 @@
         </if>
     </select>
 
+    <select id="pdList2" resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
+        select
+            distinct
+            b.id user_id,
+            b.nickname user_name,
+            c.id dept_id,
+            b.mobile,
+            c.name orgName
+        from
+            rq_iot_device_person a
+                left join
+            system_users b
+            on
+                a.person_id = b.id
+                left join
+            system_dept c
+            on
+                b.dept_id = c.id
+        where
+            b.id is not null
+          and
+            c.id is not null
+        <if test="deviceIds != null and !deviceIds.isEmpty()">
+            and c.id  in
+            <foreach collection="deviceIds" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+          and
+            a.person_id
+            not in
+              (select
+                   distinct
+                   d.person_id
+               from
+                   rq_iot_model_template a,
+                   rq_iot_model_template_attrs b,
+                   rq_iot_device c,
+                   rq_iot_device_person d
+               where
+                   a.device_category_id = b.device_category_id
+                 and
+                   a.device_category_id = c.asset_class
+                 and
+                   c.id = d.device_id
+                 and
+                   c.device_status in ('sg','dm')
+                 and
+                   a.deleted = 0
+                 and
+                   c.deleted = 0
+                 and
+                   d.deleted = 0)
+    </select>
+
     <select id="fillList1" parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillRespVO"
             resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
         SELECT * FROM

+ 26 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOperationPlanMapper.xml

@@ -11,7 +11,32 @@
 
 
     <select id="getPlanList" resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotoperationplan.IotOperationPlanDO">
-        select * from rq_iot_operation_plan where status = 0 and deleted = 0
+        select * from
+            rq_iot_operation_plan
+        where
+            status = 0
+        and
+            deleted = 0
+        and
+            is_report is null
+        or  is_report != 1
+    </select>
+
+    <select id="getReportPlan" resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotoperationplan.IotOperationPlanDO">
+        select * from
+            rq_iot_operation_plan
+        where
+                status = 0
+                and
+                deleted = 0
+                and
+                is_report = 1
+            <if test="deviceIds != null and !deviceIds.isEmpty()">
+                and dept_id  in
+                <foreach collection="deviceIds" item="id" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
     </select>
 
 </mapper>