Browse Source

Merge remote-tracking branch 'origin/master'

zhangcl 1 month ago
parent
commit
74b0e78075

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

@@ -94,8 +94,8 @@ public class IotOpeationFillController {
         dailyToTotalMap.put("当日公里数", "累计公里数");
         dailyToTotalMap.put("当日用电量", "累计用电量");
         //泵车
-        dailyToTotalMap.put("泵车底盘发动机当日公里数", "泵车底盘发动机累计公里数");
-        dailyToTotalMap.put("泵车台上发动机当日运行时长", "泵车台上发动机累计运行时长");
+        dailyToTotalMap.put("发动机累计公里数填报", "发动机累计公里数");
+        dailyToTotalMap.put("变速箱累计公里数填报", "变速箱累计公里数");
         //管汇车
         dailyToTotalMap.put("底盘发动机当日公里数", "底盘发动机累计公里数");
         //供液撬
@@ -136,6 +136,52 @@ public class IotOpeationFillController {
             }
         }
 
+        // 定义当日字段与累计字段的映射关系
+        Map<String, String> dailyToTotalMap1 = new HashMap<>();
+        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());
+                }
+            }
+        }
+
+        // 第二遍遍历:更新累计数据
+        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;
+                }
+            }
+        }
+
+
         List< IotDeviceRunLogDO > logDO = new ArrayList<>();
 
         for (IotOpeationFillSaveReqVO fill:fillList) {
@@ -414,6 +460,7 @@ public class IotOpeationFillController {
         List<IotModelTemplateAttrsDO> sumList = list.stream().filter(e->e.getIsSum()==1).collect(Collectors.toList());
         List<IotModelTemplateAttrsDO> nonSumList = list.stream().filter(e->e.getIsSum()==0).collect(Collectors.toList());
 
+
         IotModelTemplateAttrsDO1 sum = new IotModelTemplateAttrsDO1();
         sum.setSumList(sumList);
         sum.setNonSumList(nonSumList);

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

@@ -37,11 +37,12 @@ public interface IotOpeationFillOrderMapper extends BaseMapperX<IotOpeationFillO
     }
     @TenantIgnore
     default PageResult<IotOpeationFillOrderDO> selectPage1(IotOpeationFillPageReqVO reqVO,
-                                                           Collection<Long> deptIds
+                                                           Collection<Long> deptIds,
+                                                           Collection<Long> orderIds
                                                            ) {
         return selectPage(reqVO, new LambdaQueryWrapperX<IotOpeationFillOrderDO>()
                 .inIfPresent(IotOpeationFillOrderDO::getDeptId, deptIds)
-                .likeIfPresent(IotOpeationFillOrderDO::getOrderName, reqVO.getOrderName())
+                .inIfPresent(IotOpeationFillOrderDO::getId, orderIds)
                 .eqIfPresent(IotOpeationFillOrderDO::getOrderType, reqVO.getOrderType())
                 .eqIfPresent(IotOpeationFillOrderDO::getOrderStatus, reqVO.getOrderStatus())
                 .likeIfPresent(IotOpeationFillOrderDO::getUserName, reqVO.getUserName())

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

@@ -27,6 +27,7 @@ import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_OPEATION_FILL_NOT_EXISTS;
@@ -162,7 +163,12 @@ public class IotOpeationFillServiceImpl implements IotOpeationFillService {
 
     @Override
     public PageResult<IotOpeationFillOrderDO> fillList2(IotOpeationFillPageReqVO vo, Collection<Long> deptIds) {
-        return iotOpeationFillOrderMapper.selectPage1(vo,deptIds);
+        IotOpeationFillRespVO fillRespVO = new IotOpeationFillRespVO();
+        fillRespVO.setOrgName(vo.getOrderName());
+        fillRespVO.setDeptId(vo.getDeptId());
+        List<IotOpeationFillDO> fillList = iotOpeationFillMapper.fillListByUserId(fillRespVO);
+        List<Long> orderIds = fillList.stream().map(IotOpeationFillDO::getOrderId).collect(Collectors.toList());
+        return iotOpeationFillOrderMapper.selectPage1(vo,deptIds,orderIds);
     }
 
 

+ 34 - 65
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOpeationFillMapper.xml

@@ -165,72 +165,41 @@
 
     <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
-            rq_iot_opeation_fill a,
-            system_dept b,
-            rqiot.rq_iot_model_template_attrs c,
-            rq_iot_opeation_fill_order d
-            where
-            a.dept_id = b.id
-            and
-            a.device_category_id = c.device_category_id
-            and
-            a.order_id = d.id
-            and
-            a.dept_id in
-            (    SELECT
-                        d1.id
-                        FROM
-                        system_dept d1
-                        WHERE
-                        d1.id = #{deptId}  -- 根部门ID,替换为你需要查询的部门ID
-
-                        UNION ALL
-
-                        SELECT
-                        d2.id
-                        FROM
-                        system_dept d1
-                        JOIN
-                        system_dept d2 ON d2.parent_id = d1.id
-                        WHERE
-                        d1.id = #{deptId}  -- 根部门ID
-
-                        UNION ALL
-
-                        SELECT
-                        d3.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
-                        WHERE
-                        d1.id = #{deptId}  -- 根部门ID
-
-                        UNION ALL
-
-                        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}
+        SELECT DISTINCT
+        a.*,
+        b.name org_name
+        FROM
+        rq_iot_opeation_fill a
+        JOIN system_dept b ON a.dept_id = b.id
+        JOIN rqiot.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 (
+        SELECT id FROM (
+        SELECT d1.id FROM system_dept d1 WHERE d1.id = #{deptId}
+        UNION ALL
+        SELECT d2.id FROM system_dept d1 JOIN system_dept d2 ON d2.parent_id = d1.id WHERE d1.id = #{deptId}
+        UNION ALL
+        SELECT d3.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 WHERE d1.id = #{deptId}
+        UNION ALL
+        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 (
+        <if test="orderId != null and orderId != ''">
+            a.order_id = #{orderId} AND
+        </if>
+        <if test="orgName != null and orgName != ''">
+            (
+            a.device_name LIKE CONCAT('%', #{orgName}, '%')
+            OR a.device_code LIKE CONCAT('%', #{orgName}, '%')
+            OR d.user_name LIKE CONCAT('%', #{orgName}, '%')
+            )
+        </if>
+        <if test="orgName == null or orgName == ''">
+            1=1
+        </if>
         )
-            <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"