ソースを参照

运行记录模板优化

yuanchao 1 週間 前
コミット
48ab0b3071

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

@@ -89,103 +89,25 @@ public class IotOpeationFillController {
     public CommonResult<Integer> insertLog(@Valid @RequestBody List<IotOpeationFillSaveReqVO>createReqVO) {
         List<IotOpeationFillSaveReqVO> fillList = createReqVO;
 
-        // 定义当日字段与累计字段的映射关系
-        Map<String, String> dailyToTotalMap = new HashMap<>();
-        dailyToTotalMap.put("当日运转时间", "累计运行时间"); // 兼容两个可能的累计名称
-        dailyToTotalMap.put("当日注气量", "累计注气量");
-        dailyToTotalMap.put("当日公里数", "累计公里数");
-        dailyToTotalMap.put("当日用电量", "累计用电量");
-        dailyToTotalMap.put("当日注水量", "累计注水量");
-        //泵车
-        dailyToTotalMap.put("发动机累计公里数填报", "发动机累计公里数");
-        dailyToTotalMap.put("变速箱累计公里数填报", "变速箱累计公里数");
-        //管汇车
-        dailyToTotalMap.put("底盘发动机当日公里数", "底盘发动机累计公里数");
-        //供液撬
-        dailyToTotalMap.put("底盘发动机当日运行时长", "底盘发动机累计运行时长");
-        //混砂
-        dailyToTotalMap.put("台上发动机当日运转时长", "台上发动机累计运转时长");
-
-
-        // 存储当日数据值的映射
-        Map<String, BigDecimal> dailyValues = new HashMap<>();
-
-        // 第一遍遍历:收集当日数据值
-        for (IotOpeationFillSaveReqVO item : fillList) {
-            String pointName = item.getPointName();
-            if (dailyToTotalMap.containsKey(pointName)) {
-                try {
-                    dailyValues.put(pointName, new BigDecimal(item.getFillContent()));
-                } catch (NumberFormatException e) {
-                    // 处理数据格式错误,记录日志或抛出异常
-                    System.out.println("数据格式错误,pointName={}, fillContent={}"+pointName+item.getFillContent());
-                }
-            }
-        }
-
-        // 第二遍遍历:更新累计数据
-        for (IotOpeationFillSaveReqVO item : fillList) {
-            String pointName = item.getPointName();
-            // 检查当前项是否为累计项,并且是否有对应的当日数据
-            for (Map.Entry<String, String> entry : dailyToTotalMap.entrySet()) {
-                String dailyName = entry.getKey();
-                String totalName = entry.getValue();
-
-                if (pointName.equals(totalName) && item.getIsCollection() == 0 && dailyValues.containsKey(dailyName)) {
-                    BigDecimal dailyValue = dailyValues.get(dailyName);
-                    item.setTotalRunTime(dailyValue.add(item.getTotalRunTime()));
-                    break;
-                }
-            }
-        }
+        for (IotOpeationFillSaveReqVO fill:fillList) {
 
-        // 定义当日字段与累计字段的映射关系
-        Map<String, String> dailyToTotalMap1 = new HashMap<>();
-        dailyToTotalMap1.put("发动机累计公里数填报", "发动机累计公里数");
-        dailyToTotalMap1.put("变速箱累计公里数填报", "变速箱累计公里数");
-        dailyToTotalMap1.put("发动机累计运行时长填报", "发动机累计运行时长");
-        dailyToTotalMap1.put("吊车累计运行时长填报", "吊车累计运行时长");
-        dailyToTotalMap1.put("吊车累计运行公里数填报", "吊车累计运行公里数");
-        dailyToTotalMap1.put("液压油累计运行时长填报", "液压油累计运行时长");
-        dailyToTotalMap1.put("底盘发动机累计公里数填报", "底盘发动机累计公里数");
-        dailyToTotalMap1.put("底盘发动机累计运行时长填报", "底盘发动机累计运行时长");
-        dailyToTotalMap1.put("台上发动机累计运转时长填报", "台上发动机累计运转时长");
-        dailyToTotalMap1.put("台上动力端/变速箱累计运转时长填报", "台上动力端/变速箱累计运转时长");
-
-
-        // 存储当日数据值的映射
-        Map<String, BigDecimal> dailyValues1 = new HashMap<>();
-
-        // 第一遍遍历:收集当日数据值
-        for (IotOpeationFillSaveReqVO item : fillList) {
-            String pointName = item.getPointName();
-            if (dailyToTotalMap1.containsKey(pointName)) {
-                try {
-                    dailyValues1.put(pointName, new BigDecimal(item.getFillContent()));
-                } catch (NumberFormatException e) {
-                    // 处理数据格式错误,记录日志或抛出异常
-                    System.out.println("数据格式错误,pointName={}, fillContent={}"+pointName+item.getFillContent());
+            //累计并且设置了累计值,数据累加
+            //累计并且设置了累计值,数据不累加
+            if(fill.getIsSum()==1&&fill.getDefaultValue()!=""&&fill.getSumId()==1){
+                for (IotOpeationFillSaveReqVO fill1:fillList) {
+                    if(Long.parseLong(fill.getDefaultValue())==fill1.getModelId()){
+                        fill.setTotalRunTime(fill.getTotalRunTime().add(new BigDecimal(fill1.getFillContent())));
+                    }
                 }
-            }
-        }
-
-        // 第二遍遍历:更新累计数据
-        for (IotOpeationFillSaveReqVO item : fillList) {
-            String pointName = item.getPointName();
-            // 检查当前项是否为累计项,并且是否有对应的当日数据
-            for (Map.Entry<String, String> entry : dailyToTotalMap1.entrySet()) {
-                String dailyName = entry.getKey();
-                String totalName = entry.getValue();
-
-                if (pointName.equals(totalName) && item.getIsCollection() == 0 && dailyValues1.containsKey(dailyName)) {
-                    BigDecimal dailyValue = dailyValues1.get(dailyName);
-                    item.setTotalRunTime(dailyValue);
-                    break;
+            }else if(fill.getIsSum()==1&&fill.getDefaultValue()!=""&&fill.getSumId()==0){
+                for (IotOpeationFillSaveReqVO fill1:fillList) {
+                    if(Long.parseLong(fill.getDefaultValue())==fill1.getModelId()){
+                        fill.setTotalRunTime(new BigDecimal(fill1.getFillContent()));
+                    }
                 }
             }
         }
 
-
         List< IotDeviceRunLogDO > logDO = new ArrayList<>();
 
         for (IotOpeationFillSaveReqVO fill:fillList) {

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

@@ -19,6 +19,8 @@ public class IotOpeationFillSaveReqVO {
     @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19263")
     private Long id;
 
+    private Long modelId;
+
     private Long deviceId;
 
     @Schema(description = "资产编号", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -80,4 +82,10 @@ public class IotOpeationFillSaveReqVO {
     private BigDecimal totalRunTime;
 
     private Long orderId;
+
+    private String defaultValue;
+
+    private Integer isSum;
+
+    private Long sumId;
 }

+ 9 - 46
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/IotOperationFillJob.java

@@ -62,57 +62,22 @@ public class IotOperationFillJob implements JobHandler {
         System.out.println("***********创建运行记录填报工单开始执行*********8");
         List<IotOpeationFillOrderDO> orderList = new ArrayList<>();
         List<IotOpeationFillDO> pdList = iotOpeationFillMapper.pdList();
-        List<IotOpeationFillDO> rhList = iotOpeationFillMapper.rhList();
-        List<IotOpeationFillDO> rdList = iotOpeationFillMapper.rdList();
-        List<IotOpeationFillDO> ryList = iotOpeationFillMapper.ryList();
 
         for (IotOpeationFillDO pd:pdList) {
 
             IotOpeationFillOrderDO fillDO = new IotOpeationFillOrderDO();
 
-            boolean exists = rhList.stream()
-                    .anyMatch(rh -> rh.getId().equals(pd.getDeptId()));
-            if(exists){
-                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());
-                orderList.add(fillDO);
-            }
-
-            boolean exists1 = rdList.stream()
-                    .anyMatch(rd -> rd.getId().equals(pd.getDeptId()));
-
-            if(exists1){
-                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());
-                orderList.add(fillDO);
-            }
+            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());
+            orderList.add(fillDO);
 
-            boolean exists2 = ryList.stream()
-                    .anyMatch(ry -> ry.getId().equals(pd.getDeptId()));
-
-            if(exists2){
-                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());
-                orderList.add(fillDO);
-            }
         }
 
-        //iotOpeationFillMapper.insertFillOrder(orderList);
         List<IotOpeationFillDO> deviceList = iotOpeationFillMapper.getFillDevices();
 
         List<Integer> idList = deviceList.stream().map(IotOpeationFillDO::getUserId).collect(Collectors.toList());
@@ -126,6 +91,7 @@ public class IotOperationFillJob implements JobHandler {
         iotOpeationFillOrderMapper.insertBatch(orderList1);
 
 
+        //发送钉钉通知
         pmsThreadPoolTaskExecutor.execute(()->{
             try{
                 for (IotOpeationFillOrderDO order:orderList1) {
@@ -137,7 +103,6 @@ public class IotOperationFillJob implements JobHandler {
         });
 
 
-
         for (IotOpeationFillDO device:deviceList) {
             System.out.println("deviceUser"+device.getUserId());
             for (IotOpeationFillOrderDO order:orderList1) {
@@ -160,8 +125,6 @@ public class IotOperationFillJob implements JobHandler {
 
 
         System.out.println("*****************插入运行记录设备表***********************");
-        ///IotOpeationFillPageReqVO vo = new IotOpeationFillPageReqVO();
-        //List<IotOpeationFillDO> fillList = iotOpeationFillMapper.fillList(vo);
 
         for (IotOpeationFillDO re:deviceList) {
             re.setDeviceId(re.getId());

+ 5 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOpeationFillMapper.xml

@@ -392,10 +392,14 @@
     <select id="getAttrsById" parameterType="cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO"
     resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotmodeltemplateattrs.IotModelTemplateAttrsDO">
         select
+            id,
             name,
             type,
             model_attr,
-            is_sum
+            is_sum,
+            threshold,
+            default_value,
+            sum_id
         from
             rq_iot_model_template_attrs
         where