Browse Source

运行记录优化0919

yuanchao 2 tuần trước cách đây
mục cha
commit
d6ed6bf16e

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

@@ -10,6 +10,8 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeati
 import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrhdailyreport.vo.IotRhDailyReportSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreport.vo.IotRyDailyReportPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreport.vo.IotRyDailyReportSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.DeviceVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
@@ -32,6 +34,7 @@ import cn.iocoder.yudao.module.pms.service.IDeviceService;
 import cn.iocoder.yudao.module.pms.service.iotopeationfill.IotOpeationFillService;
 
 import cn.iocoder.yudao.module.pms.service.iotrhdailyreport.IotRhDailyReportService;
+import cn.iocoder.yudao.module.pms.service.iotrydailyreport.IotRyDailyReportService;
 import cn.iocoder.yudao.module.pms.service.yanfan.YfDeviceService;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import com.aliyun.tea.utils.StringUtils;
@@ -87,6 +90,8 @@ public class IotOpeationFillController {
     private DeptService deptService;
     @Resource
     private IotRhDailyReportService iotRhDailyReportService;
+    @Resource
+    private IotRyDailyReportService iotRyDailyReportService;
 
     @PostMapping("/create")
     @Operation(summary = "创建运行记录填报")
@@ -206,8 +211,15 @@ public class IotOpeationFillController {
             }
         }
 
-        IotDeviceRunLogDO runDo = logDO.get(0);
+        Set<Long> rhIdList = deptService.getChildDeptIdListFromCache(157L);
+        rhIdList.add(157L);
+
 
+        Set<Long> ryIdList =  deptService.getChildDeptIdListFromCache(158L);
+        ryIdList.add(158L);
+
+
+        IotDeviceRunLogDO runDo = logDO.get(0);
         IotOpeationFillDO reportDO = new IotOpeationFillDO();
         reportDO.setDeviceId(runDo.getDeviceId());
         reportDO.setCreateTime(runDo.getCreateTime());
@@ -217,26 +229,53 @@ public class IotOpeationFillController {
         if(fillDO1.getIsReport()!=null && fillDO1.getIsReport()==1){
 
             IotRhDailyReportSaveReqVO saveReqVO = new IotRhDailyReportSaveReqVO();
-            Map<String, Object> stringObjectMap = BeanUtil.beanToMap(saveReqVO);
+            IotRyDailyReportPageReqVO saveReqRyVO = new IotRyDailyReportPageReqVO();
 
-            for (IotDeviceRunLogDO logDO1:logDO) {
+            Map<String,Object> stringRhObjectMap = BeanUtil.beanToMap(saveReqVO);
+            Map<String,Object> stringRyObjectMap = BeanUtil.beanToMap(saveReqRyVO);
 
-                IotDeviceRunLogDO descDO = iotOpeationFillService.getDesc(logDO1);
+            if(rhIdList.contains(fillDO1.getDeptId())){
+                for (IotDeviceRunLogDO logDO1:logDO) {
 
-                if(descDO!=null){
-                    stringObjectMap.forEach((k,v)->{
-                        if(k.equals(descDO.getPointName())){
-                            stringObjectMap.put(k,logDO1.getFillContent());
-                        }
-                    });
+                    IotDeviceRunLogDO descDO = iotOpeationFillService.getDesc(logDO1);
+
+                    if(descDO!=null){
+                        stringRhObjectMap.forEach((k,v)->{
+                            if(k.equals(descDO.getPointName())){
+                                stringRhObjectMap.put(k,logDO1.getFillContent());
+                            }
+                        });
+                    }
                 }
-            }
-                IotRhDailyReportSaveReqVO saveReqVO1 = BeanUtil.mapToBean(stringObjectMap,IotRhDailyReportSaveReqVO.class,false);
+
+                IotRhDailyReportSaveReqVO saveReqVO1 = BeanUtil.mapToBean(stringRhObjectMap,IotRhDailyReportSaveReqVO.class,false);
                 saveReqVO1.setDeptId(fillDO1.getDeptId());
                 saveReqVO1.setFillOrderCreateTime(fillList.get(0).getCreateTime().atStartOfDay());
                 iotRhDailyReportService.createIotRhDailyReport(saveReqVO1);
+            }else if(ryIdList.contains(fillDO1.getDeptId())){
+                for (IotDeviceRunLogDO logDO1:logDO) {
+
+                    IotDeviceRunLogDO descDO = iotOpeationFillService.getDesc(logDO1);
+
+                    if(descDO!=null){
+                        stringRyObjectMap.forEach((k,v)->{
+                            if(k.equals(descDO.getPointName())){
+                                stringRyObjectMap.put(k,logDO1.getFillContent());
+                            }
+                        });
+                    }
+                }
+
+                IotRyDailyReportSaveReqVO saveReqVO1 = BeanUtil.mapToBean(stringRyObjectMap, IotRyDailyReportSaveReqVO.class,false);
+                saveReqVO1.setDeptId(fillDO1.getDeptId());
+                saveReqVO1.setFillOrderCreateTime(fillList.get(0).getCreateTime().atStartOfDay());
+                iotRyDailyReportService.createIotRyDailyReport(saveReqVO1);
             }
 
+
+
+        }
+
         return success(1);
     }
 

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

@@ -168,6 +168,7 @@ public interface IotOpeationFillMapper extends BaseMapperX<IotOpeationFillDO> {
     List<IotDeviceRunLogDO> getDeivceFillInfo(IotDeviceRunLogDO vo);
     @TenantIgnore
     IotDeviceRunLogDO getLogInfo(IotDeviceRunLogDO vo);
+    @TenantIgnore
     IotDeviceRunLogDO getMaxFillInfo(IotDeviceRunLogDO vo);
 
 
@@ -216,6 +217,7 @@ public interface IotOpeationFillMapper extends BaseMapperX<IotOpeationFillDO> {
     @TenantIgnore
     IPage<IotDeviceCountData> deviceCountList(IPage<IotOpeationFillPageReqVO> page, @Param("deptId") Long deptId,
                                               @Param("createTime")LocalDateTime[] createTime,@Param("isFill") Integer isFill,@Param("orderName") String orderName);
+    @TenantIgnore
     List<IotOpeationFillOrderDO> childList(IotOpeationFillOrderDO fillDO);
 
     @TenantIgnore

+ 38 - 160
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/IotOperationPlanJob.java

@@ -21,7 +21,6 @@ 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;
@@ -63,7 +62,6 @@ public class IotOperationPlanJob implements JobHandler {
     private DeptService deptService;
     @Resource
     private IotOpeationFillService opeationFillService;
-
     /**
      * 1、查询开启状态运行计划
      * 2、根据计划获取设备
@@ -76,7 +74,6 @@ public class IotOperationPlanJob implements JobHandler {
     @Override
     public String execute(String param) throws Exception {
         TenantContextHolder.setIgnore(true);
-        System.out.println("***********创建运行记录填报工单开始执行*********8");
 
 
         //1、查询开启,非删除状态运行计划
@@ -226,192 +223,73 @@ 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());
+        //插入工单主表
+        iotOpeationFillOrderMapper.insertBatch(orderList1);
 
-        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<IotOperationPlanDO> 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){
 
+        Set<Long> idList1 = new HashSet<>();
+        idList1 =  deptService.getChildDeptIdListFromCache(163L);
+        idList1.add(163L);
 
+        boolean exist = idList1.contains(plan.getDeptId());
 
+        if(!exist){
+            //1、有指定队伍插入指定队伍日报设备
+            //2、无指定队伍全部队伍插入日报设备
             if(rpList.size()>0){
+                //筛选日报工单
+                List<IotOpeationFillOrderDO> virOrderList = orderList1.stream().filter(e->rpdList.contains(e.getDeptId())).collect(Collectors.toList());
 
-                //有责任人,但设备不满足条件,而且属于瑞恒
-                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);
-                        }
+                if(virOrderList.size()>0){
+                    //创建日报设备
+                    List <IotOpeationFillDO> devList = opeationFillService.reportMethod(virOrderList);
+                    //插入日报设备
+                    iotOpeationFillMapper.insertFill(devList);
 
-                    }catch (Exception e){
-                        e.printStackTrace();
-                    }
                 }
             }
         }
 
-        IotOpeationFillOrderDO todayTime = new IotOpeationFillOrderDO();
-        todayTime.setCreateTime(localDateTime);
-
-        List<String> userList = orderList1.stream().map(IotOpeationFillOrderDO::getUserName).collect(Collectors.toList());
-
-        List<IotOpeationFillOrderDO> allOrder = iotOpeationFillMapper.allOrder(localDateTime,userList);
 
-        if(allOrder.size()>0){
 
-        }else{
-
-            iotOpeationFillOrderMapper.insertBatch(orderList1);
-
-
-                 /* //发送钉钉通知
-            pmsThreadPoolTaskExecutor.execute(()->{
-                try{
-                    for (IotOpeationFillOrderDO order:orderList1) {
-                        pmsMessage.sendMessage(order.getId(), order.getOrderName(), PmsConstants.GENERATE_OPERATION, (long)order.getUserId(), order.getMobile());
-                    }
-                }catch (Exception e){
-                    e.printStackTrace();
-                }
-            });*/
-
-            for (IotOpeationFillDO device:deviceList) {
-                System.out.println("deviceUser"+device.getUserId());
+        /*//发送钉钉通知
+        pmsThreadPoolTaskExecutor.execute(()->{
+            try{
                 for (IotOpeationFillOrderDO order:orderList1) {
-                    System.out.println("orderId"+order.getUserId());
-                    if(device.getUserId().intValue()==order.getUserId().intValue()){
-                        System.out.println("-----相等-------");
-                        device.setOrderId(order.getId());
-                    }
+                    pmsMessage.sendMessage(order.getId(), order.getOrderName(), PmsConstants.GENERATE_OPERATION, (long)order.getUserId(), order.getMobile());
                 }
+            }catch (Exception e){
+                e.printStackTrace();
             }
+        });*/
 
 
-            System.out.println("***********创建运行记录填报工单执行结束*********8");
-
-
-            System.out.println("*****************插入运行记录设备表***********************");
-
-            for (IotOpeationFillDO re:deviceList) {
-                re.setDeviceId(re.getId());
-                re.setIsReport(0);
-            }
-            iotOpeationFillMapper.insertFill(deviceList);
-
-
-
-
-            List<Long> oDeptList = new ArrayList<>();
-
-            if(rpList.size()>0){
-                oDeptList = orderList2.stream().map(IotOpeationFillOrderDO::getDeptId).collect(Collectors.toList());
-
-                // 先判断oDeptList是否为空,如果为空则根据业务需求设置exist的值
-                boolean exist;
-                if (oDeptList.isEmpty()) {
-                    // 当oDeptList为空时,这里可以根据实际场景设置默认值
-                    // 例如:空列表认为所有元素都被包含,设置为true
-                    exist = false;
-                    // 或者认为不满足,设置为false
-                    // exist = false;
-                } else {
-                    exist = idList1.containsAll(oDeptList);
+        //正常工单设备
+        for (IotOpeationFillDO device:deviceList) {
+            for (IotOpeationFillOrderDO order:orderList1) {
+                if(device.getUserId().intValue()==order.getUserId().intValue()){
+                    device.setOrderId(order.getId());
                 }
+            }
+        }
 
-                if(exist){
-                    List <IotOpeationFillDO> devList = opeationFillService.reportMethod(orderList2);
-                    //插入虚拟设备
-                    iotOpeationFillMapper.insertFill(devList);
-                }
-
-
-            }else{
-                oDeptList = orderList1.stream().map(IotOpeationFillOrderDO::getDeptId).collect(Collectors.toList());
+        //插入子表
+        for (IotOpeationFillDO re:deviceList) {
+            re.setDeviceId(re.getId());
+        }
+        iotOpeationFillMapper.insertFill(deviceList);
 
-                // 先判断oDeptList是否为空,如果为空则根据业务需求设置exist的值
-                boolean exist;
-                if (oDeptList.isEmpty()) {
-                    // 当oDeptList为空时,这里可以根据实际场景设置默认值
-                    // 例如:空列表认为所有元素都被包含,设置为true
-                    exist = false;
-                    // 或者认为不满足,设置为false
-                    // exist = false;
-                } else {
-                    exist = idList1.containsAll(oDeptList);
-                }
 
-                if(exist){
-                    List <IotOpeationFillDO> devList = opeationFillService.reportMethod(orderList1);
-                    //插入虚拟设备
-                    iotOpeationFillMapper.insertFill(devList);
-                }
-            }
-        }
     }
-}
+
+}

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

@@ -53,6 +53,8 @@ public class IotOpeationFillServiceImpl implements IotOpeationFillService {
 
     private static Long RH_CLASS_ID = 226L;
 
+    private static Long RY_CLASS_ID = 227L;
+
     @Override
     public Long createIotOpeationFill(IotOpeationFillSaveReqVO createReqVO) {
         // 插入
@@ -323,6 +325,16 @@ public class IotOpeationFillServiceImpl implements IotOpeationFillService {
     @Override
     public List<IotOpeationFillDO> reportMethod(List<IotOpeationFillOrderDO> orderList) {
         List<IotOpeationFillDO> devList = new ArrayList<>();
+
+
+        Set<Long> rhIdList = deptService.getChildDeptIdListFromCache(157L);
+        rhIdList.add(157L);
+
+
+        Set<Long> ryIdList =  deptService.getChildDeptIdListFromCache(158L);
+        ryIdList.add(158L);
+
+
         //判断工单主数据是否有值
         if(orderList.size()>0){
             //遍历工单主数据,根据dept_id查询是否为根节点
@@ -336,7 +348,13 @@ public class IotOpeationFillServiceImpl implements IotOpeationFillService {
                     IotOpeationFillDO devOrder = new IotOpeationFillDO();
                     devOrder.setDeviceCode("");
                     devOrder.setDeviceName("生产日报");
-                    devOrder.setDeviceCategoryId(RH_CLASS_ID);
+
+                    if(rhIdList.contains(orderDO.getDeptId())){
+                        devOrder.setDeviceCategoryId(RH_CLASS_ID);
+                    }else if(ryIdList.contains(orderDO.getDeptId())){
+                        devOrder.setDeviceCategoryId(RY_CLASS_ID);
+                    }
+
                     devOrder.setDeptId(orderDO.getDeptId());
                     devOrder.setIsReport(1);
                     devOrder.setOrderId(orderDO.getId());

+ 6 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOpeationFillMapper.xml

@@ -307,7 +307,7 @@
         JOIN rq_iot_model_template_attrs c ON a.device_category_id = c.device_category_id
         JOIN rq_iot_opeation_fill_order d ON a.order_id = d.id
         WHERE
-        a.dept_id IN (
+        <!--a.dept_id IN (
         SELECT id FROM (
         SELECT d1.id FROM system_dept d1 WHERE d1.id = #{deptId}
         UNION ALL
@@ -318,9 +318,10 @@
         SELECT d4.id FROM system_dept d1 JOIN system_dept d2 ON d2.parent_id = d1.id JOIN system_dept d3 ON d3.parent_id = d2.id JOIN system_dept d4 ON d4.parent_id = d3.id WHERE d1.id = #{deptId}
         ) AS dept_hierarchy
         )
-        AND (
+        AND -->(
+        1=1
         <if test="orderId != null and orderId != ''">
-            a.order_id = #{orderId}
+           and  a.order_id = #{orderId}
         </if>
         <!--<if test="orgName != null and orgName != ''">
             (
@@ -1079,8 +1080,9 @@
                        b2.daily_report = 1
                 ))
             -- 第二个查询的条件(通过OR代替UNION)
-             OR (a.is_report = 0 AND b.daily_report = 1)
+             OR (a.is_report is null AND b.daily_report = 1)
             )
+          and a.device_code != ''
     </select>
 
     <select id="reportList1" parameterType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO"