Răsfoiți Sursa

Merge remote-tracking branch 'origin/master'

zhangcl 2 luni în urmă
părinte
comite
2b1727c9cc
14 a modificat fișierele cu 317 adăugiri și 169 ștergeri
  1. 75 23
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotopeationfill/IotOpeationFillController.java
  2. 3 3
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotopeationfill/vo/IotOpeationFillPageReqVO.java
  3. 4 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotopeationfill/vo/IotOpeationFillRespVO.java
  4. 2 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotopeationfill/IotOpeationFillDO.java
  5. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotopeationfill/IotOpeationFillOrderDO.java
  6. 10 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotopeationfill/IotOpeationFillMapper.java
  7. 5 5
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotopeationfill/IotOpeationFillOrderMapper.java
  8. 23 34
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/InspectCreateOrderJob.java
  9. 38 22
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/IotOperationFillJob.java
  10. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/failure/IotFailureReportServiceImpl.java
  11. 4 4
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectPlanServiceImpl.java
  12. 8 9
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotopeationfill/IotOpeationFillService.java
  13. 19 12
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotopeationfill/IotOpeationFillServiceImpl.java
  14. 124 54
      yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOpeationFillMapper.xml

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

@@ -123,14 +123,17 @@ public class IotOpeationFillController {
         List<IotOpeationFillRespVO> fillList1 = iotOpeationFillService.getFillList(respVO);
 
         boolean result = fillList1.stream().allMatch(e->e.getIsFill()==1);
+        boolean result1 = fillList1.stream().allMatch(e->e.getIsFill()==0);
 
         IotDeviceRunLogDO deviceRunLogDO = new IotDeviceRunLogDO();
         deviceRunLogDO.setId(createReqVO.get(0).getId());
 
         if(result){
             iotOpeationFillService.updateFillOrder(deviceRunLogDO);
-        }else{
+        }else if(result1){
             iotOpeationFillService.updateFillOrder1(deviceRunLogDO);
+        }else{
+            iotOpeationFillService.updateFillOrder2(deviceRunLogDO);
         }
 
         return success(iotOpeationFillService.insertLog(logDO));
@@ -167,35 +170,64 @@ public class IotOpeationFillController {
     @PreAuthorize("@ss.hasPermission('rq:iot-opeation-fill:query')")
     public CommonResult<List<IotOpeationFillDO>> getIotOpeationFillPage(@Valid IotOpeationFillRespVO pageReqVO) {
         List<IotOpeationFillDO> fillList = new ArrayList<>();
-        List<IotOpeationFillDO> deviceList = iotOpeationFillService.deviceList(pageReqVO);
-        if(deviceList.size()==0){
+       /* if(pageReqVO.getDeviceId()!=null){
+            *//**
+             * 根据设备ID和OrderId返回
+             *//*
             fillList = iotOpeationFillService.fillListByDeptId(pageReqVO);
-        }else{
+        }else{*/
+            /**
+             * 根据OrderId返回
+             */
             fillList = iotOpeationFillService.fillListByUserId(pageReqVO);
-        }
+
+        return success(BeanUtils.toBean(fillList, IotOpeationFillDO.class));
+    }
+
+    @GetMapping("/orderPage")
+    @Operation(summary = "获得运行记录填报分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-opeation-fill:query')")
+    public CommonResult<List<IotOpeationFillDO>> getOrderPage(@Valid IotOpeationFillRespVO pageReqVO) {
+        List<IotOpeationFillDO> fillList = new ArrayList<>();
+        /* if(pageReqVO.getDeviceId()!=null){
+         *//**
+         * 根据设备ID和OrderId返回
+         *//*
+
+        }else{*/
+        fillList = iotOpeationFillService.fillListByDeptId(pageReqVO);
+
+
         return success(BeanUtils.toBean(fillList, IotOpeationFillDO.class));
     }
 
+
     @GetMapping("/page1")
     @Operation(summary = "获得运行记录填报分页")
     @PreAuthorize("@ss.hasPermission('rq:iot-opeation-fill:query')")
     public CommonResult<PageResult<IotOpeationFillOrderDO>> getIotOpeationFillPage1(@Valid IotOpeationFillPageReqVO pageReqVO) {
-
-        List<IotOpeationFillDO> pdList = iotOpeationFillService.pdList();
-        List<String> nameList  = pdList.stream().map(o -> o.getUserName()).collect(Collectors.toList());
-        List<Integer> idList  = pdList.stream().map(o -> o.getUserId()).collect(Collectors.toList());
+        IotOpeationFillDO fillDO = new IotOpeationFillDO();
+        fillDO.setId(pageReqVO.getDeptId());
+        List<IotOpeationFillDO> pdList = iotOpeationFillService.pdList1(fillDO);
+        List<Long> idList  = pdList.stream().map(o -> o.getId()).collect(Collectors.toList());
         PageResult<IotOpeationFillOrderDO> fillList = new PageResult<>();
-        boolean exists = pdList.stream()
-                .anyMatch(rh -> rh.getUserId()==pageReqVO.getUserId());
-        if(!exists){
-            fillList = iotOpeationFillService.fillList2(pageReqVO,idList,nameList);
-        }else{
-            fillList = iotOpeationFillService.fillList1(pageReqVO);
-        }
+
+        fillList = iotOpeationFillService.fillList2(pageReqVO,idList);
+
+        return success(BeanUtils.toBean(fillList, IotOpeationFillOrderDO.class));
+    }
+
+    @GetMapping("/fillRecordPage")
+    @Operation(summary = "获得运行记录填报分页")
+    public CommonResult<PageResult<IotOpeationFillOrderDO>> getFillRecords(@Valid IotOpeationFillPageReqVO pageReqVO) {
+
+        List<IotOpeationFillOrderDO> list =  iotOpeationFillService.fillRecords(pageReqVO);
+        PageResult<IotOpeationFillOrderDO> fillList = new PageResult(list,Long.valueOf(list.size()));
 
         return success(BeanUtils.toBean(fillList, IotOpeationFillOrderDO.class));
     }
 
+
     @GetMapping("/getAttrs")
     @PermitAll
     @Operation(summary = "获得PMS 功能优化 设备模板属性")
@@ -227,13 +259,14 @@ public class IotOpeationFillController {
         logDO1.setDeviceId(vo.getDeviceId());
         LocalTime local = LocalTime.of(12, 0);
         logDO1.setCreateTime(LocalDateTime.of(vo.getCreateTime(),local));
-        List<IotDeviceRunLogDO> logList = iotOpeationFillService.getDeivceFillInfo(logDO1);
 
+        List<IotDeviceRunLogDO> logList = iotOpeationFillService.getDeivceFillInfo(logDO1);
+        List<IotDeviceRunLogDO> maxLog = iotOpeationFillService.getMaxFillInfo(logDO1);
 
         if(exists){
             for (IotModelTemplateAttrsDO attrsDO:list) {
-                DeviceVO dv= new DeviceVO();
 
+                DeviceVO dv= new DeviceVO();
                 dv.setDeviceName(vo.getDeviceCode().toLowerCase());
                 dv.setColName(attrsDO.getModelAttr());
                 dv.setTs(startTime);
@@ -260,14 +293,22 @@ public class IotOpeationFillController {
                                  */
                                 attrsDO.setIsCollection(0);
                             }
-
                         }
+                    }else{
+                        attrsDO.setFillContent("0.0");
+                        attrsDO.setTotalRunTime(maxLog.get(0).getTotalRunTime());
+                        /**
+                         * 设置为非数采
+                         */
+                        attrsDO.setIsCollection(0);
                     }
                 }
             }
         }else{
-            if(logList.size()>0){
-                for (IotModelTemplateAttrsDO attrsDO:list) {
+
+            for (IotModelTemplateAttrsDO attrsDO:list) {
+                if(logList.size()>0){
+
                     for (IotDeviceRunLogDO log:logList) {
                         if(log.getPointName().equals(attrsDO.getName())){
                             attrsDO.setFillContent(log.getFillContent());
@@ -279,8 +320,19 @@ public class IotOpeationFillController {
                         }
 
                     }
-               }
-            }
+
+                }else{
+                    attrsDO.setFillContent("0.0");
+                    attrsDO.setTotalRunTime(maxLog.get(0).getTotalRunTime());
+                    /**
+                     * 设置为非数采
+                     */
+                    attrsDO.setIsCollection(0);
+
+                }
+
+           }
+
         }
 
 

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

@@ -71,11 +71,11 @@ public class IotOpeationFillPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
-    private int isFill;
+    private Integer isFill;
     private String orderName;
     private String orderType;
-    private int orderStatus;
-    private int userId;
+    private Integer orderStatus;
+    private Integer userId;
     private String userName;
 
 }

+ 4 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotopeationfill/vo/IotOpeationFillRespVO.java

@@ -84,4 +84,8 @@ public class IotOpeationFillRespVO {
     private Integer userId;
 
     private Integer isFill;
+
+    private Long orderId;
+
+    private Integer deviceId;
 }

+ 2 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotopeationfill/IotOpeationFillDO.java

@@ -102,7 +102,8 @@ public class IotOpeationFillDO extends BaseDO {
     private String orderName;
     private String orderType;
     private int orderStatus;
-    private int userId;
+    private Integer userId;
     private String userName;
+    private Long orderId;
 
 }

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotopeationfill/IotOpeationFillOrderDO.java

@@ -41,6 +41,6 @@ public class IotOpeationFillOrderDO extends BaseDO {
     private String orderType;
     private int orderStatus;
     private String userName;
-    private int userId;
+    private Integer userId;
 
 }

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

@@ -64,6 +64,9 @@ public interface IotOpeationFillMapper extends BaseMapperX<IotOpeationFillDO> {
     List<IotOpeationFillDO> ryList();
     @TenantIgnore
     List<IotOpeationFillDO> rhList();
+    @TenantIgnore
+    List<IotOpeationFillDO> pdList1(IotOpeationFillDO vo);
+
     @TenantIgnore
     List<IotOpeationFillDO> pdList();
     List<IotOpeationFillDO> deviceList(IotOpeationFillRespVO vo);
@@ -78,7 +81,14 @@ public interface IotOpeationFillMapper extends BaseMapperX<IotOpeationFillDO> {
     List<IotOpeationFillRespVO> getFillList(IotOpeationFillRespVO vo);
 
     List<IotDeviceRunLogDO> getDeivceFillInfo(IotDeviceRunLogDO vo);
+    List<IotDeviceRunLogDO> getMaxFillInfo(IotDeviceRunLogDO vo);
 
+    @TenantIgnore
     int updateFillOrder(IotDeviceRunLogDO vo);
+    @TenantIgnore
     int updateFillOrder1(IotDeviceRunLogDO vo);
+    @TenantIgnore
+    int updateFillOrder2(IotDeviceRunLogDO vo);
+    @TenantIgnore
+    List<IotOpeationFillOrderDO> fillRecords(IotOpeationFillPageReqVO vo);
 }

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

@@ -37,15 +37,15 @@ public interface IotOpeationFillOrderMapper extends BaseMapperX<IotOpeationFillO
     }
     @TenantIgnore
     default PageResult<IotOpeationFillOrderDO> selectPage1(IotOpeationFillPageReqVO reqVO,
-                                                           Collection<Integer> userIds,
-                                                           Collection<String> names) {
+                                                           Collection<Long> deptIds
+                                                           ) {
         return selectPage(reqVO, new LambdaQueryWrapperX<IotOpeationFillOrderDO>()
-                .eqIfPresent(IotOpeationFillOrderDO::getDeptId, reqVO.getDeptId())
+                .inIfPresent(IotOpeationFillOrderDO::getDeptId, deptIds)
                 .likeIfPresent(IotOpeationFillOrderDO::getOrderName, reqVO.getOrderName())
                 .eqIfPresent(IotOpeationFillOrderDO::getOrderType, reqVO.getOrderType())
                 .eqIfPresent(IotOpeationFillOrderDO::getOrderStatus, reqVO.getOrderStatus())
-                .inIfPresent(IotOpeationFillOrderDO::getUserName, names)
-                .inIfPresent(IotOpeationFillOrderDO::getUserId, userIds)
+                .likeIfPresent(IotOpeationFillOrderDO::getUserName, reqVO.getUserName())
+                .eqIfPresent(IotOpeationFillOrderDO::getUserId, reqVO.getUserId())
                 .betweenIfPresent(IotOpeationFillOrderDO::getCreateTime, reqVO.getCreateTime())
                 .orderByDesc(IotOpeationFillOrderDO::getId));
     }

+ 23 - 34
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/InspectCreateOrderJob.java

@@ -2,10 +2,8 @@ package cn.iocoder.yudao.module.pms.job;
 
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
-import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
 import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceperson.vo.IotDevicePersonPageReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.*;
@@ -14,7 +12,6 @@ import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectItemMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderDetailMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectPlanMapper;
-import cn.iocoder.yudao.module.pms.service.inspect.IotInspectPlanService;
 import cn.iocoder.yudao.module.pms.service.iotdeviceperson.IotDevicePersonService;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
@@ -27,11 +24,9 @@ import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
-import java.util.stream.Collectors;
 
 @Component
 @Slf4j
@@ -53,36 +48,33 @@ public class InspectCreateOrderJob implements JobHandler {
     @TenantJob
     @Transactional(rollbackFor = Exception.class)
     public String execute(String param) throws Exception {
-        List<IotInspectPlanDO> plans = iotInspectPlanMapper.selectList();
-        plans.stream().filter(e -> e.getStatus()==0).forEach(plan -> {
-            if (plan.getLastCreateTime()==null) {
-                Date date = Date.from(
-                        plan.getCreateTime().atZone(ZoneId.systemDefault()) // 使用系统默认时区
-                                .toInstant()                    // 转为 Instant(时间戳)
-                );
-                try {
-                    deal(plan, date);
-                } catch (Exception e) {
-                    throw new ServiceException();
+        try {
+            List<IotInspectPlanDO> plans = iotInspectPlanMapper.selectList();
+            plans.stream().filter(e -> e.getStatus()==0).forEach(plan -> {
+                if (plan.getLastCreateTime()==null) {
+                    Date date = Date.from(
+                            plan.getCreateTime().atZone(ZoneId.systemDefault()) // 使用系统默认时区
+                                    .toInstant()                    // 转为 Instant(时间戳)
+                    );
+                        deal(plan, date);
+                } else {
+                    Date lastdate = Date.from(
+                            plan.getLastCreateTime().atZone(ZoneId.systemDefault()) // 使用系统默认时区
+                                    .toInstant()                    // 转为 Instant(时间戳)
+                    );
+                        deal(plan, lastdate);
                 }
-            } else {
-                Date lastdate = Date.from(
-                        plan.getLastCreateTime().atZone(ZoneId.systemDefault()) // 使用系统默认时区
-                                .toInstant()                    // 转为 Instant(时间戳)
-                );
-                try {
-                    deal(plan, lastdate);
-                } catch (Exception e) {
-                    throw new ServiceException();
-                }
-            }
-        });
+            });
+        } catch (Exception e) {
+            throw new ServiceException();
+        }
         return "创建成功";
     }
 
-    private void deal(IotInspectPlanDO plan, Date date) throws Exception {
+    private void deal(IotInspectPlanDO plan, Date date) {
         Date date1 = new Date();
         if ("hour".equals(plan.getPlanUnit())){
+            //todo
             DateTime dateTime = DateUtil.offsetMinute(date, Integer.parseInt(StringUtils.substringBeforeLast(String.valueOf(plan.getPlanCycle()),".")));
             if (date1.compareTo(dateTime) > 0){
                 createPlan(plan);
@@ -116,24 +108,21 @@ public class InspectCreateOrderJob implements JobHandler {
         }
         return personToDevices;
     }
-    private void createPlan(IotInspectPlanDO iotInspectPlan) throws Exception {
+    private void createPlan(IotInspectPlanDO iotInspectPlan)  {
         Map<Long, List<IotInspectRouteDO>> generate = generate(iotInspectPlan.getDeviceIds());
         generate.forEach((k, v)->{
             IotInspectOrderDO iotInspectOrderDO = new IotInspectOrderDO();
             iotInspectOrderDO.setInspectOrderTitle(iotInspectPlan.getPlanTitle()+"-巡检工单");
             iotInspectOrderDO.setInspectOrderCode("IN"+ DateUtil.format(new Date(),"yyyyMMddHHmmss"));
-//            String collect = Arrays.stream(iotInspectPlan.getCharge().split(",")).map(charge -> "io" + charge + "io").collect(Collectors.joining(","));
             iotInspectOrderDO.setCharge(k);
             iotInspectOrderDO.setStatus("todo");
-//            iotInspectOrderDO.setDeviceIds(JSON.toJSONString(v));
             iotInspectOrderDO.setType("计划生成");
             iotInspectOrderDO.setPlanCode(iotInspectPlan.getPlanCode());
             iotInspectOrderDO.setDeleted(false);
             AdminUserRespDTO user = adminUserApi.getUser(k);
             iotInspectOrderDO.setChargeName(Objects.nonNull(user)?user.getNickname():"");
-            iotInspectOrderDO.setDeptId(iotInspectPlan.getDeptId());
+            iotInspectOrderDO.setDeptId(v.get(0).getDeptId());
             iotInspectOrderMapper.insert(iotInspectOrderDO);
-            //List<IotInspectRouteDO> routeDOS = JSON.parseArray(v, IotInspectRouteDO.class);
             List<IotInspectOrderDetailDO> results = new ArrayList<>();
             //处理巡检项
             List<IotInspectItemDO> items = iotInspectItemMapper.selectList();

+ 38 - 22
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/IotOperationFillJob.java

@@ -6,7 +6,9 @@ import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
 import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
 import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillPageReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillOrderDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotopeationfill.IotOpeationFillMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotopeationfill.IotOpeationFillOrderMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
@@ -20,6 +22,8 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
 
 /**
  * @author yc
@@ -35,13 +39,15 @@ public class IotOperationFillJob implements JobHandler {
 
     @Autowired
     private IotOpeationFillMapper iotOpeationFillMapper;
+    @Autowired
+    private IotOpeationFillOrderMapper iotOpeationFillOrderMapper;
 
     @Override
     @TenantIgnore
     public String execute(String param) throws Exception {
         TenantContextHolder.setIgnore(true);
         System.out.println("***********创建运行记录填报工单开始执行*********8");
-        List<IotOpeationFillDO> orderList = new ArrayList<>();
+        List<IotOpeationFillOrderDO> orderList = new ArrayList<>();
         List<IotOpeationFillDO> pdList = iotOpeationFillMapper.pdList();
         List<IotOpeationFillDO> rhList = iotOpeationFillMapper.rhList();
         List<IotOpeationFillDO> rdList = iotOpeationFillMapper.rdList();
@@ -49,10 +55,10 @@ public class IotOperationFillJob implements JobHandler {
 
         for (IotOpeationFillDO pd:pdList) {
 
-            IotOpeationFillDO fillDO = new IotOpeationFillDO();
+            IotOpeationFillOrderDO fillDO = new IotOpeationFillOrderDO();
 
             boolean exists = rhList.stream()
-                    .anyMatch(rh -> rh.getDeptId().equals(pd.getDeptId()));
+                    .anyMatch(rh -> rh.getId().equals(pd.getDeptId()));
             if(exists){
                 fillDO.setOrderName("瑞恒兴域"+LocalDate.now()+"运行记录填报");
                 fillDO.setDeptId(pd.getDeptId());
@@ -64,7 +70,7 @@ public class IotOperationFillJob implements JobHandler {
             }
 
             boolean exists1 = rdList.stream()
-                    .anyMatch(rd -> rd.getDeptId().equals(pd.getDeptId()));
+                    .anyMatch(rd -> rd.getId().equals(pd.getDeptId()));
 
             if(exists1){
                 fillDO.setOrderName("瑞都石油"+LocalDate.now()+"运行记录填报");
@@ -77,7 +83,7 @@ public class IotOperationFillJob implements JobHandler {
             }
 
             boolean exists2 = ryList.stream()
-                    .anyMatch(ry -> ry.getDeptId().equals(pd.getDeptId()));
+                    .anyMatch(ry -> ry.getId().equals(pd.getDeptId()));
 
             if(exists2){
                 fillDO.setOrderName("瑞鹰国际"+LocalDate.now()+"运行记录填报");
@@ -90,41 +96,51 @@ public class IotOperationFillJob implements JobHandler {
             }
         }
 
-        iotOpeationFillMapper.insertFillOrder(orderList);
+        //iotOpeationFillMapper.insertFillOrder(orderList);
+        List<IotOpeationFillDO> deviceList = iotOpeationFillMapper.getFillDevices();
+
+        List<Integer> idList = deviceList.stream().map(IotOpeationFillDO::getUserId).collect(Collectors.toList());
 
 
 
+        List<IotOpeationFillOrderDO> orderList1 = orderList.stream()
+                .filter(obj -> idList.contains(obj.getUserId()))
+                .collect(Collectors.toList());
 
+        iotOpeationFillOrderMapper.insertBatch(orderList1);
 
-       /* Long[] deptArray = {157L,158L,163L};
-        for (Long a:deptArray) {
-            IotOpeationFillDO fillDO = new IotOpeationFillDO();
-            fillDO.setDeptId(a);
-            if(a==157L){
-                fillDO.setOrderName("瑞恒兴域运行记录填报");
-            }else if(a==158L){
-                fillDO.setOrderName("瑞鹰国际运行记录填报");
-            }else{
-                fillDO.setOrderName("四川瑞都运行记录填报");
+
+        for (IotOpeationFillDO device:deviceList) {
+            System.out.println("deviceUser"+device.getUserId());
+            for (IotOpeationFillOrderDO order:orderList1) {
+                System.out.println("orderId"+order.getUserId());
+                if(device.getUserId().intValue()==order.getUserId().intValue()){
+                    System.out.println("-----相等-------");
+                    device.setOrderId(order.getId());
+                }
             }
-            fillDO.setOrderType("计划生成");
-            fillDO.setOrderStatus(0);
-            fillDO.setCreateTime(LocalDateTime.now());
-            orderList.add(fillDO);
-        }*/
+        }
+
+
+
 
         System.out.println("***********创建运行记录填报工单执行结束*********8");
 
+
+
+
+
+
         System.out.println("*****************插入运行记录设备表***********************");
         IotOpeationFillPageReqVO vo = new IotOpeationFillPageReqVO();
         List<IotOpeationFillDO> fillList = iotOpeationFillMapper.fillList(vo);
         if(fillList.size()==0){
-            List<IotOpeationFillDO> deviceList = iotOpeationFillMapper.getFillDevices();
             for (IotOpeationFillDO re:deviceList) {
                 re.setDeviceId(re.getId());
             }
             iotOpeationFillMapper.insertFill(deviceList);
         }
+
         System.out.println("*****************插入运行记录设备表完成***********************");
         return "创建成功";
     }

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/failure/IotFailureReportServiceImpl.java

@@ -79,7 +79,7 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
         IotMaintainDO iotMaintainDO = new IotMaintainDO();
         BeanUtils.copyProperties(failureReportDO, iotMaintainDO);
         iotMaintainDO.setStatus("tx");
-        iotMaintainDO.setAuditStatus(0);
+        //iotMaintainDO.setAuditStatus(0);
         iotMaintainDO.setMaintainType("故障上报");
         iotMaintainDO.setMaintainPerson(Objects.isNull(failureReportDO.getAssigneeUserId())? Long.valueOf(failureReportDO.getCreator()) :failureReportDO.getAssigneeUserId());
         iotMaintainDO.setFailureId(failureReportDO.getId());

+ 4 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectPlanServiceImpl.java

@@ -67,10 +67,10 @@ public class IotInspectPlanServiceImpl implements IotInspectPlanService {
         validateIotInspectPlanExists(updateReqVO.getId());
         // 更新
         IotInspectPlanDO updateObj = BeanUtils.toBean(updateReqVO, IotInspectPlanDO.class);
-        updateObj.setCharge(String.join(",", updateReqVO.getCharges()));
-        List<Long> collect = updateReqVO.getCharges().stream().map(Long::valueOf).collect(Collectors.toList());
-        String collect1 = adminUserApi.getUserList(collect).stream().map(AdminUserRespDTO::getNickname).collect(Collectors.joining(","));
-        updateObj.setChargeName(collect1);
+        //updateObj.setCharge(String.join(",", updateReqVO.getCharges()));
+//        List<Long> collect = updateReqVO.getCharges().stream().map(Long::valueOf).collect(Collectors.toList());
+//        String collect1 = adminUserApi.getUserList(collect).stream().map(AdminUserRespDTO::getNickname).collect(Collectors.joining(","));
+//        updateObj.setChargeName(collect1);
         iotInspectPlanMapper.updateById(updateObj);
     }
 

+ 8 - 9
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotopeationfill/IotOpeationFillService.java

@@ -4,21 +4,14 @@ import java.util.*;
 import javax.validation.*;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.iotmodel.vo.IotModelPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotmodeltemplateattrs.vo.IotModelTemplateAttrsRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillPageReqVO;
 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.vo.IotDevicePageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicerunlog.IotDeviceRunLogDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotmodel.IotModelDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmodeltemplateattrs.IotModelTemplateAttrsDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillOrderDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 
 /**
  * 运行记录填报 Service 接口
@@ -79,9 +72,9 @@ public interface IotOpeationFillService {
 
     PageResult<IotOpeationFillOrderDO> fillList1(IotOpeationFillPageReqVO vo);
 
-    List<IotOpeationFillDO> pdList();
+    List<IotOpeationFillDO> pdList1(IotOpeationFillDO vo);
 
-    PageResult<IotOpeationFillOrderDO> fillList2(IotOpeationFillPageReqVO vo,List<Integer> userIds,List<String> nickNames);
+    PageResult<IotOpeationFillOrderDO> fillList2(IotOpeationFillPageReqVO vo,List<Long> deptIds);
 
 
 
@@ -98,6 +91,8 @@ public interface IotOpeationFillService {
 
     List<IotDeviceRunLogDO> getDeivceFillInfo(IotDeviceRunLogDO vo);
 
+    List<IotDeviceRunLogDO> getMaxFillInfo(IotDeviceRunLogDO vo);
+
     /**
      * 更新工单状态
      * @param vo
@@ -107,4 +102,8 @@ public interface IotOpeationFillService {
 
     int updateFillOrder1(IotDeviceRunLogDO vo);
 
+    int updateFillOrder2(IotDeviceRunLogDO vo);
+
+    List<IotOpeationFillOrderDO> fillRecords(IotOpeationFillPageReqVO vo);
+
 }

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

@@ -1,22 +1,15 @@
 package cn.iocoder.yudao.module.pms.service.iotopeationfill;
 
-import cn.iocoder.yudao.module.pms.controller.admin.iotmodel.vo.IotModelPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotmodeltemplateattrs.vo.IotModelTemplateAttrsRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillPageReqVO;
 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.vo.IotDevicePageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicerunlog.IotDeviceRunLogDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotmodel.IotModelDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmodeltemplateattrs.IotModelTemplateAttrsDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillOrderDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotopeationfill.IotOpeationFillMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotopeationfill.IotOpeationFillOrderMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
@@ -26,7 +19,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 
 
-import java.util.Collection;
 import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -131,13 +123,13 @@ public class IotOpeationFillServiceImpl implements IotOpeationFillService {
     }
 
     @Override
-    public List<IotOpeationFillDO> pdList() {
-        return iotOpeationFillMapper.pdList();
+    public List<IotOpeationFillDO> pdList1(IotOpeationFillDO vo) {
+        return iotOpeationFillMapper.pdList1(vo);
     }
 
     @Override
-    public PageResult<IotOpeationFillOrderDO> fillList2(IotOpeationFillPageReqVO vo,List<Integer> userIds,List<String> nickNames) {
-        return iotOpeationFillOrderMapper.selectPage1(vo,userIds,nickNames);
+    public PageResult<IotOpeationFillOrderDO> fillList2(IotOpeationFillPageReqVO vo,List<Long> deptIds) {
+        return iotOpeationFillOrderMapper.selectPage1(vo,deptIds);
     }
 
 
@@ -161,6 +153,11 @@ public class IotOpeationFillServiceImpl implements IotOpeationFillService {
         return iotOpeationFillMapper.getDeivceFillInfo(vo);
     }
 
+    @Override
+    public List<IotDeviceRunLogDO> getMaxFillInfo(IotDeviceRunLogDO vo) {
+        return iotOpeationFillMapper.getMaxFillInfo(vo);
+    }
+
     @Override
     public int updateFillOrder(IotDeviceRunLogDO vo) {
         return iotOpeationFillMapper.updateFillOrder(vo);
@@ -171,4 +168,14 @@ public class IotOpeationFillServiceImpl implements IotOpeationFillService {
         return iotOpeationFillMapper.updateFillOrder1(vo);
     }
 
+    @Override
+    public int updateFillOrder2(IotDeviceRunLogDO vo) {
+        return iotOpeationFillMapper.updateFillOrder2(vo);
+    }
+
+    @Override
+    public List<IotOpeationFillOrderDO> fillRecords(IotOpeationFillPageReqVO vo) {
+        return iotOpeationFillMapper.fillRecords(vo);
+    }
+
 }

+ 124 - 54
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOpeationFillMapper.xml

@@ -5,34 +5,38 @@
 
     <select id="getFillDevices"
             resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
+
         select
             distinct
-            a.id,
-            a.dept_id,
-            a.device_code,
-            a.device_name,
-            b.device_category_id
+            c.id,
+            c.dept_id,
+            c.device_code,
+            c.device_name,
+            b.device_category_id,
+            d.person_id user_id
         from
-            rqiot.rq_iot_device a,
-            rqiot.rq_iot_model_template b
+            rqiot.rq_iot_model_template a,
+            rqiot.rq_iot_model_template_attrs b,
+            rqiot.rq_iot_device c,
+            rqiot.rq_iot_device_person d
         where
-            a.asset_class = b.device_category_id
+            a.device_category_id = b.device_category_id
           and
-            a.deleted = 0
+            a.device_category_id = c.asset_class
           and
-            b.deleted = 0
+            c.id = d.device_id
           and
-            a.device_status in ('sg','dm')
+            c.device_status in ('sg','dm')
     </select>
 
 
     <insert id="insertFill"
     parameterType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
-       insert into rqiot.rq_iot_opeation_fill(device_id,device_code,device_name,device_category_id,create_time,dept_id)
+       insert into rqiot.rq_iot_opeation_fill(device_id,device_code,device_name,device_category_id,create_time,dept_id,order_id)
            values
         <foreach collection="list" item="item" separator=",">
             (#{item.deviceId},#{item.deviceCode},#{item.deviceName},
-            #{item.deviceCategoryId},#{item.createTime},#{item.deptId})
+            #{item.deviceCategoryId},#{item.createTime},#{item.deptId},#{item.orderId})
         </foreach>
     </insert>
 
@@ -94,68 +98,117 @@
 
     <select id="fillListByUserId" parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillRespVO"
             resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
-        SELECT distinct a.*,
-        b.name org_name FROM
-        rqiot.rq_iot_opeation_fill a,
-        rqiot.system_dept b,
+        select
+            distinct
+            a.*,
+            b.name org_name
+        from
+            rq_iot_opeation_fill a,
+            system_dept b,
+            rqiot.rq_iot_model_template_attrs c
+        where
+            a.dept_id = b.id
+          and
+            a.device_category_id = c.device_category_id
+
+            <if test="orderId != null  and orderId != ''">
+                and a.order_id = #{orderId}
+            </if>
+    </select>
+
+    <select id="fillListByDeptId" parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillRespVO"
+            resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
+        select
+        distinct
+        a.*,
+        b.name org_name
+        from
+        rq_iot_opeation_fill a,
+        system_dept b,
         rqiot.rq_iot_model_template_attrs c
-        WHERE DATE(a.create_time) = DATE(#{createTime})
-        <if test="userId != null  and userId != ''">
-            and a.device_id in (select device_id from
-            rqiot.rq_iot_device_person where person_id = #{userId})
-        </if>
-        and
+        where
         a.dept_id = b.id
         and
         a.device_category_id = c.device_category_id
 
+        <if test="orderId != null  and orderId != ''">
+            and a.order_id = #{orderId}
+        </if>
+        <if test="deviceId != null  and deviceId != ''">
+            and a.device_id = #{deviceId}
+        </if>
     </select>
 
-    <select id="fillListByDeptId" parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillRespVO"
-            resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
-        SELECT * FROM
-        rqiot.rq_iot_opeation_fill
-        WHERE DATE(create_time) = CURDATE()
-        <if test="deptId != null  and deptId != ''">
-            and dept_id in (SELECT d1.id
-            FROM system_dept d1
-            JOIN system_dept d2 ON d2.id = d1.parent_id
-            WHERE d2.parent_id = #{deptId}
-            union
-            select id from system_dept where id = #{deptId})
-        </if>
+    <select id="fillRecords" parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillPageReqVO"
+            resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillOrderDO">
+        select a.*
+        from
+               rq_iot_opeation_fill_order a,
+               rq_iot_opeation_fill b
+        where
+               a.id = b.order_id
+          and
+               b.device_id = #{deviceId}
     </select>
 
     <select id="rhList"
             resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
-        SELECT d1.id dept_id
-        FROM system_dept d1
-                 JOIN system_dept d2 ON d2.id = d1.parent_id
-        WHERE d2.parent_id = 157
-        union
-        select id from system_dept where id = 157
+        SELECT au.id, au.name, au.parent_id
+        FROM (SELECT * FROM system_dept WHERE parent_id IS NOT NULL) au,
+             (SELECT @parent_id := '157') pd
+        WHERE FIND_IN_SET(parent_id, @parent_id) > 0
+          AND @parent_id := concat(@parent_id, ',', id)
+        UNION
+        SELECT id, name, parent_id
+        FROM system_dept
+        WHERE id = '157'
+        ORDER BY id;
     </select>
 
     <select id="rdList"
             resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
-        SELECT d1.id dept_id
-        FROM system_dept d1
-                 JOIN system_dept d2 ON d2.id = d1.parent_id
-        WHERE d2.parent_id = 163
-        union
-        select id from system_dept where id = 163
+        SELECT au.id, au.name, au.parent_id
+        FROM (SELECT * FROM system_dept WHERE parent_id IS NOT NULL) au,
+             (SELECT @parent_id := '163') pd
+        WHERE FIND_IN_SET(parent_id, @parent_id) > 0
+          AND @parent_id := concat(@parent_id, ',', id)
+        UNION
+        SELECT id, name, parent_id
+        FROM system_dept
+        WHERE id = '163'
+        ORDER BY id;
     </select>
 
     <select id="ryList"
             resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
-        SELECT d1.id dept_id
-        FROM system_dept d1
-                 JOIN system_dept d2 ON d2.id = d1.parent_id
-        WHERE d2.parent_id = 158
-        union
-        select id from system_dept where id = 158
+        SELECT au.id, au.name, au.parent_id
+        FROM (SELECT * FROM system_dept WHERE parent_id IS NOT NULL) au,
+             (SELECT @parent_id := '158') pd
+        WHERE FIND_IN_SET(parent_id, @parent_id) > 0
+          AND @parent_id := concat(@parent_id, ',', id)
+        UNION
+        SELECT id, name, parent_id
+        FROM system_dept
+        WHERE id = '158'
+        ORDER BY id;
+    </select>
+
+
+    <select id="pdList1" parameterType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO"
+            resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
+        SELECT au.id, au.name, au.parent_id
+        FROM (SELECT * FROM system_dept WHERE parent_id IS NOT NULL) au,
+             (SELECT @parent_id := #{id}) pd
+        WHERE FIND_IN_SET(parent_id, @parent_id) > 0
+          AND @parent_id := concat(@parent_id, ',', id)
+        UNION
+        SELECT id, name, parent_id
+        FROM system_dept
+        WHERE id = #{id}
+        ORDER BY id;
     </select>
 
+
     <select id="pdList" resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
         select
             distinct
@@ -242,6 +295,19 @@
         limit 1
     </select>
 
+    <select id="getMaxFillInfo" parameterType="cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicerunlog.IotDeviceRunLogDO"
+            resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicerunlog.IotDeviceRunLogDO">
+        <!--SELECT * FROM rq_iot_device_run_log
+        WHERE
+            device_id = #{deviceId}
+        and
+            create_time  = (SELECT MAX(create_time) FROM rq_iot_device_run_log WHERE
+                device_id = #{deviceId})-->
+
+        select max(total_run_time)total_run_time from rq_iot_device_run_log  where  device_id = #{deviceId}
+
+    </select>
+
     <update id="updateFillOrder" parameterType="cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicerunlog.IotDeviceRunLogDO">
         update rqiot.rq_iot_opeation_fill_order set order_status = 1 where id = #{id}
     </update>
@@ -249,4 +315,8 @@
         update rqiot.rq_iot_opeation_fill_order set order_status = 0 where id = #{id}
     </update>
 
+    <update id="updateFillOrder2" parameterType="cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicerunlog.IotDeviceRunLogDO">
+        update rqiot.rq_iot_opeation_fill_order set order_status = 2 where id = #{id}
+    </update>
+
 </mapper>