From 881726275f07a8685a7fda42fd44f9fa2dee8b68 Mon Sep 17 00:00:00 2001
From: zhanglei <lei.zhang@kingtroldata.com>
Date: Fri, 7 Mar 2025 17:45:53 +0800
Subject: [PATCH] actorref(模块名): 优化数据查询和统计功能

-优化了多个模块的数据查询和统计方法,提高了数据处理效率
- 重构了部分代码结构,增强了系统的可维护性
- 优化了数据库查询SQL,提高了查询性能
- 修复了一些潜在的逻辑错误,提升了数据准确性
---
 sk-module-biz/src/main/java/com/skua/modules/ajh/controller/AjhRectificationInfoController.java         |   6 ++++--
 sk-module-biz/src/main/java/com/skua/modules/ajh/controller/AjhWasteReportController.java               |   2 +-
 sk-module-biz/src/main/java/com/skua/modules/ajh/entity/AjhWasteMonthReport.java                        |   6 ++++--
 sk-module-biz/src/main/java/com/skua/modules/ajh/entity/AjhWasteYearReport.java                         |  17 ++++++++++++++++-
 sk-module-biz/src/main/java/com/skua/modules/ajh/mapper/AjhWasteProduceMapper.java                      |   2 ++
 sk-module-biz/src/main/java/com/skua/modules/ajh/mapper/xml/AjhWasteProduceMapper.xml                   |  29 ++++++++++++++---------------
 sk-module-biz/src/main/java/com/skua/modules/realtimedata/service/IRealTimeDataService.java             |  14 +++++++-------
 sk-module-biz/src/main/java/com/skua/modules/realtimedata/service/impl/RealTimeDataServiceImpl.java     | 215 ++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 sk-module-biz/src/main/java/com/skua/modules/threedimensional/service/impl/ScreenDataServiceImpl.java   |  25 ++++++++++++-------------
 sk-module-biz/src/main/resources/application-prod.yml                                                   |   8 ++++----
 sk-module-equipment/src/main/java/com/skua/modules/equipment/entity/EquipmentMaintainTask.java          |   3 +++
 sk-module-equipment/src/main/java/com/skua/modules/equipment/mapper/xml/EquipmentMaintainTaskMapper.xml |   1 +
 sk-module-system/src/main/java/com/skua/modules/system/controller/SysUserController.java                |  29 +++++++++++++++--------------
 sk-module-system/src/main/java/com/skua/modules/system/mapper/xml/SysDepartMapper.xml                   |   5 +++++
 14 files changed, 116 insertions(+), 246 deletions(-)

diff --git a/sk-module-biz/src/main/java/com/skua/modules/ajh/controller/AjhRectificationInfoController.java b/sk-module-biz/src/main/java/com/skua/modules/ajh/controller/AjhRectificationInfoController.java
index 73d0454..5ab5f71 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/ajh/controller/AjhRectificationInfoController.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/ajh/controller/AjhRectificationInfoController.java
@@ -350,8 +350,10 @@ public class AjhRectificationInfoController {
 
     @ApiOperation(value="安全态势总览数据统计:统计教育+题库", notes="安全态势总览数据统计:统计教育+题库")
     @RequestMapping(value = "/jyCensus", method = RequestMethod.GET)
-    public Map<String,Object> jyCensus(@RequestParam(name="now",required=true) String now) {
-        Map<String, Object> result = ajhRectificationInfoService.jyCensus(now);
+    public Result<Map<String,Object>> jyCensus(@RequestParam(name="now",required=true) String now) {
+        Result<Map<String,Object>> result = new Result<Map<String,Object>>();
+        Map<String, Object> map = ajhRectificationInfoService.jyCensus(now);
+        result.setResult(map);
         return result;
     }
 }
diff --git a/sk-module-biz/src/main/java/com/skua/modules/ajh/controller/AjhWasteReportController.java b/sk-module-biz/src/main/java/com/skua/modules/ajh/controller/AjhWasteReportController.java
index 8ba6778..7f33bd2 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/ajh/controller/AjhWasteReportController.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/ajh/controller/AjhWasteReportController.java
@@ -93,7 +93,7 @@ public class AjhWasteReportController {
         if(reportYear==null){
             reportYear = String.valueOf(Year.now().getValue());
         }
-        IPage<AjhWasteYearReport> pageList = wasteReportService.queryPageListByYear(page, departId,reportYear);
+        IPage<AjhWasteYearReport> pageList = wasteReportService.queryPageListByYear(page, departId, reportYear);
         result.setSuccess(true);
         result.setResult(pageList);
         return result;
diff --git a/sk-module-biz/src/main/java/com/skua/modules/ajh/entity/AjhWasteMonthReport.java b/sk-module-biz/src/main/java/com/skua/modules/ajh/entity/AjhWasteMonthReport.java
index 091a7b2..92e8945 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/ajh/entity/AjhWasteMonthReport.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/ajh/entity/AjhWasteMonthReport.java
@@ -9,6 +9,8 @@ import lombok.Data;
 import org.apache.commons.lang3.StringUtils;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
+import java.text.DecimalFormat;
+
 /**
  * 危险废物台账月报报表
  */
@@ -57,11 +59,11 @@ public class AjhWasteMonthReport {
     @ApiModelProperty(value = "贮存量")
 	private String monthKeep;
 
-
 	public String getStockOnHand() {
 		//数据之间应进行逻辑验算:期初量+入库量-出库量=在存量。
 		if(StringUtils.isEmpty(stockOnHand)){
-			stockOnHand = ConvertUtils.getDouble(monthProduce,0d) + ConvertUtils.getDouble(monthKeep,0d)  - ConvertUtils.getDouble(monthOut,0d)+"" ;
+			DecimalFormat df = new DecimalFormat("#.##");
+			stockOnHand = df.format(ConvertUtils.getDouble(monthKeep,0d) - ConvertUtils.getDouble(monthOut,0d)) ;
 		}
 		return stockOnHand;
 	}
diff --git a/sk-module-biz/src/main/java/com/skua/modules/ajh/entity/AjhWasteYearReport.java b/sk-module-biz/src/main/java/com/skua/modules/ajh/entity/AjhWasteYearReport.java
index 34de550..bcd12b1 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/ajh/entity/AjhWasteYearReport.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/ajh/entity/AjhWasteYearReport.java
@@ -1,17 +1,20 @@
 package com.skua.modules.ajh.entity;
 
+import java.text.DecimalFormat;
 import java.util.Date;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.skua.core.aspect.annotation.Dict;
+import com.skua.core.util.ConvertUtils;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
@@ -56,11 +59,23 @@ public class AjhWasteYearReport {
     @ApiModelProperty(value = "年度贮存量")
 	private String yearKeep;
 
+	@TableField(exist=false)
+	@Excel(name = "在存量", width = 15)
+	@ApiModelProperty(value = "在存量")
+	private String stockOnHand;
+
 	/**出库量*/
 	@TableField(exist=false)
 	@Excel(name = "出库量", width = 15)
 	@ApiModelProperty(value = "出库量")
 	private String yearOut;
 
-
+	public String getStockOnHand() {
+		//数据之间应进行逻辑验算:期初量+入库量-出库量=在存量。
+		if(StringUtils.isEmpty(stockOnHand)){
+			DecimalFormat df = new DecimalFormat("#.##");
+			stockOnHand = df.format(ConvertUtils.getDouble(yearKeep,0d) - ConvertUtils.getDouble(yearOut,0d)) ;
+		}
+		return stockOnHand;
+	}
 }
diff --git a/sk-module-biz/src/main/java/com/skua/modules/ajh/mapper/AjhWasteProduceMapper.java b/sk-module-biz/src/main/java/com/skua/modules/ajh/mapper/AjhWasteProduceMapper.java
index bf5b2fa..6976e15 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/ajh/mapper/AjhWasteProduceMapper.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/ajh/mapper/AjhWasteProduceMapper.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.skua.modules.ajh.entity.AjhWasteMonthReport;
 import com.skua.modules.ajh.entity.AjhWasteYearReport;
+import com.skua.tool.annotation.Anonymous;
 import org.apache.ibatis.annotations.Param;
 import com.skua.modules.ajh.entity.AjhWasteProduce;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -14,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * 危废产生记录表
  */
 public interface AjhWasteProduceMapper extends BaseMapper<AjhWasteProduce> {
+
     /***
      * 月报
      * @param page
diff --git a/sk-module-biz/src/main/java/com/skua/modules/ajh/mapper/xml/AjhWasteProduceMapper.xml b/sk-module-biz/src/main/java/com/skua/modules/ajh/mapper/xml/AjhWasteProduceMapper.xml
index 3e34c55..ce79611 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/ajh/mapper/xml/AjhWasteProduceMapper.xml
+++ b/sk-module-biz/src/main/java/com/skua/modules/ajh/mapper/xml/AjhWasteProduceMapper.xml
@@ -46,20 +46,19 @@
 
     <select id="queryPageListByYear" resultType="com.skua.modules.ajh.entity.AjhWasteYearReport">
         SELECT
-        p.id,
-        p.waste_code,
-        p.waste_name,
-        LEFT ( p.pro_out_date, 4 ) AS report_year,
-        ROUND(ifnull(SUM( p.pro_come_count ),0) , 2) AS year_produce,
-        ROUND(ifnull(SUM( k.keep_out_count ),0) , 2) AS year_out,
-        ROUND(ifnull(SUM( k.keep_in_count ),0) , 2) AS year_keep,
-        d.depart_name AS depart_name,
-        d.id as depart_id
+            p.id,
+            p.waste_code,
+            p.waste_name,
+            LEFT ( p.pro_out_date, 4 ) AS report_year,
+            ROUND(ifnull(SUM( p.pro_come_count ),0) , 2) AS year_produce,
+            ROUND(ifnull(SUM( k.keep_out_count ),0) , 2) AS year_out,
+            ROUND(ifnull(SUM( k.keep_in_count ),0) , 2) AS year_keep,
+            d.depart_name AS depart_name,
+            d.id as depart_id
         FROM
-        ajh_waste_produce p
+            ajh_waste_produce p
         LEFT JOIN ( SELECT * FROM ajh_waste_keep WHERE LEFT ( keep_in_date, 4 ) = #{reportYear} ) k ON p.depart_id = k.depart_id
-        AND p.waste_code = k.waste_code
-        AND p.waste_name = k.waste_name
+            AND p.waste_code = k.waste_code AND p.waste_name = k.waste_name
         LEFT JOIN sys_depart d ON p.depart_id = d.id
         WHERE
         LEFT ( p.pro_out_date, 4 ) = #{reportYear}
@@ -70,8 +69,8 @@
             </foreach>
         </if>
         GROUP BY
-        p.depart_id,
-        p.waste_code,
-        p.waste_name
+            p.depart_id,
+            p.waste_code,
+            p.waste_name
     </select>
 </mapper>
diff --git a/sk-module-biz/src/main/java/com/skua/modules/realtimedata/service/IRealTimeDataService.java b/sk-module-biz/src/main/java/com/skua/modules/realtimedata/service/IRealTimeDataService.java
index 98545cd..53e65b0 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/realtimedata/service/IRealTimeDataService.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/realtimedata/service/IRealTimeDataService.java
@@ -5,9 +5,9 @@ import java.util.Map;
 
 public interface IRealTimeDataService {
 
-    List<Map<String, Object>> queryRealTimeData(String factoryId, String type, String structId,String nmName);
+    List<Map<String, Object>> queryRealTimeData(String departId, String type, String structId,String nmName);
 
-    List<Map<String, Object>> queryStructData(String factoryId);
+    List<Map<String, Object>> queryStructData(String departId);
 
 
     /**
@@ -17,7 +17,7 @@ public interface IRealTimeDataService {
      * @Param [factoryId]
      * @return java.util.Map<java.lang.String, java.lang.Object>
      **/
-    Map<String, Object> getFacInfoByFactoryId(String factoryId);
+    Map<String, Object> getFacInfoByFactoryId(String departId);
 
 
 
@@ -34,10 +34,10 @@ public interface IRealTimeDataService {
      *
      * @Description web趋势
      * @Date 2022-03-24 10:12
-     * @Param [factoryId, timeType, startTime, endTime, id]
+     * @Param [departId, timeType, startTime, endTime, id]
      * @return java.util.Map<java.lang.String, java.lang.Object>
      **/
-    Map<String, Object> getSZTreadWeb(String factoryId, String timeType, String startTime, String endTime, String id);
+    Map<String, Object> getSZTreadWeb(String departId, String timeType, String startTime, String endTime, String id);
 
     /**
      * <pre>
@@ -71,7 +71,7 @@ public interface IRealTimeDataService {
      */
     Map<String, Object> getProjectInfo();
 
-    List<Map<String, Object>> queryStructDataApp(String factoryId);
+    List<Map<String, Object>> queryStructDataApp(String departId);
 
-    List<Map<String, Object>> queryRealTimeDataApp(String factoryId, String type, String structId, String sortType,String nmName);
+    List<Map<String, Object>> queryRealTimeDataApp(String departId, String type, String structId, String sortType,String nmName);
 }
diff --git a/sk-module-biz/src/main/java/com/skua/modules/realtimedata/service/impl/RealTimeDataServiceImpl.java b/sk-module-biz/src/main/java/com/skua/modules/realtimedata/service/impl/RealTimeDataServiceImpl.java
index 881629e..135e2d0 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/realtimedata/service/impl/RealTimeDataServiceImpl.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/realtimedata/service/impl/RealTimeDataServiceImpl.java
@@ -118,24 +118,33 @@ public class RealTimeDataServiceImpl implements IRealTimeDataService {
         return result;
     }
 
+    /**
+     * 获取SZT趋势数据
+     * @param departId 工厂ID
+     * @param timeType 时间类型,支持"real"(实时),"hour"(小时),"day"(天)
+     * @param startTime 开始时间
+     * @param endTime 结束时间
+     * @param id 数据ID,多个ID用逗号分隔
+     * @return 包含趋势数据和相关信息的Map对象
+     */
     @Override
-    public Map<String, Object> getSZTreadWeb(String factoryId, String timeType, String startTime, String endTime, String id) {
+    public Map<String, Object> getSZTreadWeb(String departId, String timeType, String startTime, String endTime, String id) {
         Map<String, Object> result = Maps.newHashMap();
         //查询指标信息
-        List<Map<String, Object>> tmp = realTimeDataMapper.queryMetric(factoryId, id);
+        List<Map<String, Object>> tmp = realTimeDataMapper.queryMetric(departId, id);
         if (tmp != null && tmp.size() > 0) {
             Map<String, Object> data = Maps.newHashMap();
             switch (timeType) {
 	            case "real":
 	                //查询pg小时表数据 小时
-	                data = pgService.queryTrendDataNew(id, factoryId, startTime, endTime);
+	                data = pgService.queryTrendDataNew(id, departId, startTime, endTime);
 	                //data = (List<Map<String, Object>>) map.get("data");
 	                //data = pgService.queryTrendDataNew(tmp, factoryId, startTime, endTime);
 	                break;
 	            case "hour":
 	                //查询小时表
 	                //data = realTimeDataMapper.queryHourDataByTime(id, factoryId, startTime, endTime);
-	                List<Map<String, Object>> maps = factoryInfoService.queryFactoryInfos(factoryId, id, startTime+" 00:00:00", endTime+" 23:59:59", "1");
+	                List<Map<String, Object>> maps = factoryInfoService.queryFactoryInfos(departId, id, startTime+" 00:00:00", endTime+" 23:59:59", "1");
 	                if (!CollectionUtil.isEmpty(maps)) {
 	                    for (Map<String, Object> map : maps) {
 	                        map.put("time", DateUtils.formatTime(Long.parseLong(map.get("time") + "000")));
@@ -233,18 +242,18 @@ public class RealTimeDataServiceImpl implements IRealTimeDataService {
 
 
     @Override
-    public Map<String, Object> getFacInfoByFactoryId(String factoryId) {
+    public Map<String, Object> getFacInfoByFactoryId(String departId) {
         DecimalFormat df = new DecimalFormat("#.##");
         Map<String, Object> result = Maps.newHashMap();
-        result.put("info", realTimeDataMapper.queryFacInfo(factoryId));
-        List<Map<String, Object>> points = realTimeDataMapper.queryPoint(factoryId);
+        result.put("info", realTimeDataMapper.queryFacInfo(departId));
+        List<Map<String, Object>> points = realTimeDataMapper.queryPoint(departId);
         StringBuilder feilds = new StringBuilder();
         if (points != null && points.size() > 0) {
             points.forEach(v -> {
                 feilds.append(v.get("mid"));
                 feilds.append(",");
             });
-            Map<String, Object> map = pgService.queryFactoryInfosForMonitorByXT(factoryId, feilds.substring(0, feilds.length() - 1));
+            Map<String, Object> map = pgService.queryFactoryInfosForMonitorByXT(departId, feilds.substring(0, feilds.length() - 1));
             if (map != null && map.size() > 0) {
                 Map<String, Object> real = Maps.newHashMap();
                 points.forEach(v -> {
@@ -262,16 +271,16 @@ public class RealTimeDataServiceImpl implements IRealTimeDataService {
     }
 
     @Override
-    public List<Map<String, Object>> queryStructData(String factoryId) {
-        return realTimeDataMapper.queryStructData(factoryId);
+    public List<Map<String, Object>> queryStructData(String departId) {
+        return realTimeDataMapper.queryStructData(departId);
     }
 
 
     @Override
-    public List<Map<String, Object>> queryRealTimeData(String factoryId, String type, String structId,String nmName) {
+    public List<Map<String, Object>> queryRealTimeData(String departId, String type, String structId,String nmName) {
         DecimalFormat df = new DecimalFormat("#.##");
         //查询厂站下所有的指标代码
-        List<Map<String, Object>> list = realTimeDataMapper.queryMetricListByType(factoryId, type, structId,nmName);
+        List<Map<String, Object>> list = realTimeDataMapper.queryMetricListByType(departId, type, structId,nmName);
         StringBuilder feilds = new StringBuilder();
         if ("0".equals(type)) {
             list.forEach(v -> {
@@ -380,186 +389,18 @@ public class RealTimeDataServiceImpl implements IRealTimeDataService {
 
 
     @Override
-    public List<Map<String, Object>> queryStructDataApp(String factoryId) {
-        return realTimeDataMapper.queryStructDataApp(factoryId);
+    public List<Map<String, Object>> queryStructDataApp(String departId) {
+        return realTimeDataMapper.queryStructDataApp(departId);
     }
 
 
     @Override
-    public List<Map<String, Object>> queryRealTimeDataApp(String factoryId, String type, String structId, String sortType,String nmName) {
-        DecimalFormat df = new DecimalFormat("#.##");
-        //查询厂站下所有的指标代码
-        List<Map<String, Object>> list = realTimeDataMapper.queryMetricListByType(factoryId, type, structId, nmName);
-
-        StringBuilder feilds = new StringBuilder();
-        if ("0".equals(type)) {
-            list.forEach(v -> {
-                feilds.append(v.get("id"));
-                feilds.append(",");
-            });
+    public List<Map<String, Object>> queryRealTimeDataApp(String departId, String type, String structId, String sortType,String nmName) {
+        List<Map<String, Object>> list = queryRealTimeData(departId, type, structId, nmName);
+        if ("name".equals(sortType)) {
+            Collections.sort(list, new realTimeNameComparator());
         } else {
-            list.forEach(v -> {
-                feilds.append(v.get("id"));
-                feilds.append(",");
-
-                if (v.get("faultExpress") != null) {
-                    //去除表达式的||、&&、=及数字     aksdfjk23=20||asdf88ffaf=30
-                    String fExpress = (String) v.get("faultExpress");
-                    feilds.append(getFields(fExpress)).append(",");
-                }
-                if (v.get("runExpress") != null) {
-                    String rExpress = (String) v.get("runExpress");
-                    feilds.append(getFields(rExpress)).append(",");
-                }
-                if (v.get("stopExpress") != null) {
-                    String sExpress = (String) v.get("stopExpress");
-                    feilds.append(getFields(sExpress)).append(",");
-                }
-            });
-        }
-        if (feilds != null && feilds.length() > 0) {
-            Map<String, Object> data = pgService.queryTrendDataTestApp(factoryId, list, type);
-            if (data != null && data.size() > 0) {
-                if ("all".equals(structId)) {
-                    //异常
-                    List<Map<String, Object>> res = Lists.newArrayList();
-                    list.forEach(v -> {
-                        String id = ConvertUtils.getString(v.get("id"));
-                        String metricUp;
-                        Double value = Double.parseDouble((String) data.getOrDefault(id, "0.0"));
-                        v.put("realTime", data.get("time"));
-                        if ("0".equals(type)) {
-                            metricUp = ConvertUtils.getString(v.get("metricUp"));
-                            String metricLow = ConvertUtils.getString(v.get("metricLow"));
-                            if (ConvertUtils.isNotEmpty(metricUp) && ConvertUtils.isNotEmpty(value)) {
-                                if (value > Double.parseDouble(metricUp) || value < Double.parseDouble(metricLow)) {
-                                    String csType = ConvertUtils.getString(v.get("csType"));
-                                    if ("1".equals(csType)) {
-                                        v.put("metricValue", Double.parseDouble(df.format(value)));
-                                    } else {
-                                        v.put("metricValue", value);
-                                    }
-                                    v.put("status", 1);
-                                    res.add(v);
-                                }
-                            }
-                        } else {
-                            //设备
-                            String express = (String) v.get("faultExpress");//表达式
-                            String express1 = (String) v.get("runExpress");//表达式1
-                            String express2 = (String) v.get("stopExpress");//表达式2
-                            String val = "";
-                            try {
-                                //满足复杂表达式
-                                //因需要判断是否含有"#"且可能为null,所以暂时初始化
-                                if (StringUtil.isNullOrEmpty(express)) {
-                                    express = "";
-                                }
-                                if (StringUtil.isNullOrEmpty(express1)) {
-                                    express1 = "";
-                                }
-                                //开关量
-                                //通过第一个表达式计算结果值,如果为空或者为0 持续向下校验
-                                val = ExpressUtil.getValueByExpress(express, getExpressMapByExpressStr(data, express, null));
-
-                                //先判断故障
-                                if (StringUtil.isNullOrEmpty(val) || val.equals("0")) {
-                                    val = ExpressUtil.getValueByExpress(express1, getExpressMapByExpressStr(data, express1, null));
-                                    if (StringUtil.isNullOrEmpty(val) || val.equals("0")) {
-                                        val = "0";
-                                    } else {
-                                        val = "2";
-                                    }
-
-                                }
-                                v.put("metricValue", val);
-                                String metricName = (String) v.get("metricName");
-                                if (StringUtils.isNotBlank(metricName)) {
-                                    if (metricName.contains("运行")) {
-                                        v.put("metricName", metricName.replace("运行", ""));
-                                    }
-                                }
-                                v.put("status", Integer.parseInt(val));
-                                if (val.equals("1")) {
-                                    res.add(v);
-                                }
-                            } catch (ScriptException e) {
-                                e.printStackTrace();
-                            }
-                        }
-                    });
-                    list = res;
-                } else {
-                    list.forEach(v -> {
-                        String id = ConvertUtils.getString(v.get("id"));
-                        String metricUp;
-                        Double value = ConvertUtils.getDouble( data.get(id),0,2);
-                        if ("0".equals(type)) {
-                            metricUp = ConvertUtils.getString(v.get("metricUp"));
-                            String metricLow = ConvertUtils.getString(v.get("metricLow"));
-                            if (ConvertUtils.isNotEmpty(metricUp) && ConvertUtils.isNotEmpty(value)) {
-                                if (value > Double.parseDouble(metricUp) || value < Double.parseDouble(metricLow)) {
-                                    v.put("status", 1);
-                                } else {
-                                    v.put("status", 2);
-                                }
-                            } else {
-                                v.put("status", 2);
-                            }
-                            String csType = ConvertUtils.getString(v.get("csType"));
-                            if ("1".equals(csType)) {
-                                v.put("metricValue", Double.parseDouble(df.format(value)));
-                            } else {
-                                v.put("metricValue", value);
-                            }
-                        } else {
-                            //设备
-                            String express = (String) v.get("faultExpress");//表达式
-                            String express1 = (String) v.get("runExpress");//表达式1
-                            String val = "";
-                            try {
-                                //满足复杂表达式
-                                //因需要判断是否含有"#"且可能为null,所以暂时初始化
-                                if (StringUtil.isNullOrEmpty(express)) {
-                                    express = "";
-                                }
-                                if (StringUtil.isNullOrEmpty(express1)) {
-                                    express1 = "";
-                                }
-                                //开关量
-                                //通过第一个表达式计算结果值,如果为空或者为0 持续向下校验
-                                //0 停止 1故障 2运行
-                                val = ExpressUtil.getValueByExpress(express, getExpressMapByExpressStr(data, express, null));
-                                //先判断故障
-                                if (StringUtil.isNullOrEmpty(val) || val.equals("0")) {
-                                    val = ExpressUtil.getValueByExpress(express1, getExpressMapByExpressStr(data, express1, null));
-                                    if (StringUtil.isNullOrEmpty(val) || val.equals("0")) {
-                                        val = "0";
-                                    } else {
-                                        val = "2";
-                                    }
-                                }
-                                v.put("metricValue", val);
-                                String metricName = (String) v.get("metricName");
-                                if (StringUtils.isNotBlank(metricName)) {
-                                    if (metricName.contains("运行")) {
-                                        v.put("metricName", metricName.replace("运行", ""));
-                                    }
-                                }
-                                v.put("status", Integer.parseInt(val));
-                            } catch (ScriptException e) {
-                                e.printStackTrace();
-                            }
-                        }
-                        v.put("realTime", data.get("time"));
-                    });
-                }
-                if ("name".equals(sortType)) {
-                    Collections.sort(list, new realTimeNameComparator());
-                } else {
-                    Collections.sort(list, new realTimeStatusComparator());
-                }
-            }
+            Collections.sort(list, new realTimeStatusComparator());
         }
         return list;
     }
diff --git a/sk-module-biz/src/main/java/com/skua/modules/threedimensional/service/impl/ScreenDataServiceImpl.java b/sk-module-biz/src/main/java/com/skua/modules/threedimensional/service/impl/ScreenDataServiceImpl.java
index 0e55785..3698325 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/threedimensional/service/impl/ScreenDataServiceImpl.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/threedimensional/service/impl/ScreenDataServiceImpl.java
@@ -196,20 +196,19 @@ public class ScreenDataServiceImpl implements IScreenDataService {
             if (StringUtil.isNotBlank(sb.toString())) {
                 appendSql = "and a.id in (" + sb.substring(1) + ")";
             }
-
         }
-        return masterDB.queryForList("select t.*,\n" +
-                "round(avg(t.indexValue/t.proScale),2) as fhl\n" +
-                ", round(sum(t.indexValue),2) totalCLSL\n" +
-                "from(\n" +
-                "SELECT a.id  as departId,a.depart_name as departName,b.index_tag as indexTag,b.index_value as indexValue," +
-                "(select c.pro_scale*10000 from sys_factory_info c where a.id = c.depart_id) as proScale\n" +
-                "FROM sys_depart a LEFT JOIN sys_data_calculation b ON a.id = b.depart_id \n" +
-                "where a.del_flag= 1 and a.depart_type = 1 and b.index_tag = 'JSLJLL'\n" +
-                "\tand ts LIKE '" + month + "%'  \n" + appendSql+
-                "\tGROUP BY a.id, b.ts)t GROUP BY t.departId");
-
-
+        String dataViewName2119 = ReportViewUtil.buildViewLike(ReportConstant.view2119,"CSL", departId, month);
+        String sql = "select t.*," +
+                " round(avg(t.indexValue/t.proScale),2) as fhl," +
+                " round(sum(t.indexValue),2) totalCLSL " +
+                " from( " +
+                " SELECT a.id  as departId,a.depart_name as departName,'JSLJLL' as indexTag,b.CSL as indexValue," +
+                " (select c.pro_scale*10000 from sys_factory_info c where a.id = c.depart_id) as proScale " +
+                " FROM sys_depart a " +
+                " LEFT JOIN (select v2.time,v2.CSL,v2.depart_id from "+dataViewName2119+" v2 where v2.time like '"+month+"%') b ON a.id = b.depart_id" +
+                " where a.del_flag= 1 and a.depart_type = 1 " + appendSql +
+                " GROUP BY a.id, b.time)t GROUP BY t.departId";
+        return masterDB.queryForList(sql);
     }
 
     @Override
diff --git a/sk-module-biz/src/main/resources/application-prod.yml b/sk-module-biz/src/main/resources/application-prod.yml
index f02af62..aa931af 100644
--- a/sk-module-biz/src/main/resources/application-prod.yml
+++ b/sk-module-biz/src/main/resources/application-prod.yml
@@ -162,11 +162,11 @@ skua:
   isRunTimeInterval: 3600
   #视频对接相关配置,未使用,待完善
   video:
-    lan: 20.0.99.6
-    ip: 113.249.91.27
+    lan: 112.123.135.139
+    ip: 112.123.135.139
     port: 8667
-    appkey: 21656155
-    secretkey: llQvkzDIzmYnNiXNYxDN
+    appkey: 29461614
+    secretkey: RkJhpwVKJyf0FbDwQpbP
   #消息推送
   push:
     #是否开启流程消息推送
diff --git a/sk-module-equipment/src/main/java/com/skua/modules/equipment/entity/EquipmentMaintainTask.java b/sk-module-equipment/src/main/java/com/skua/modules/equipment/entity/EquipmentMaintainTask.java
index f590c8d..2d72e06 100644
--- a/sk-module-equipment/src/main/java/com/skua/modules/equipment/entity/EquipmentMaintainTask.java
+++ b/sk-module-equipment/src/main/java/com/skua/modules/equipment/entity/EquipmentMaintainTask.java
@@ -103,4 +103,7 @@ public class EquipmentMaintainTask {
     @ApiModelProperty(value = "维保类型")
     @Dict(dicCode = "maintenance_type")
     private String maintenanceType;
+    @TableField(exist = false)
+    @ApiModelProperty(value = "预估费用")
+    private String planCost;
 }
diff --git a/sk-module-equipment/src/main/java/com/skua/modules/equipment/mapper/xml/EquipmentMaintainTaskMapper.xml b/sk-module-equipment/src/main/java/com/skua/modules/equipment/mapper/xml/EquipmentMaintainTaskMapper.xml
index b9cccf8..a2497c3 100644
--- a/sk-module-equipment/src/main/java/com/skua/modules/equipment/mapper/xml/EquipmentMaintainTaskMapper.xml
+++ b/sk-module-equipment/src/main/java/com/skua/modules/equipment/mapper/xml/EquipmentMaintainTaskMapper.xml
@@ -26,6 +26,7 @@
             emt.picture_url AS pictureUrl,
             emt.equipment_id AS equipmentId,
             emt.results_enforcement AS resultsEnforcement,
+            emp.plan_cost AS planCost,
             emp.plan_accepter_id AS planAccepterId,
             emp.plan_arranger_id,
             emt.device_administrator_id AS deviceAdministratorId,
diff --git a/sk-module-system/src/main/java/com/skua/modules/system/controller/SysUserController.java b/sk-module-system/src/main/java/com/skua/modules/system/controller/SysUserController.java
index 5c603a2..44ac4ba 100644
--- a/sk-module-system/src/main/java/com/skua/modules/system/controller/SysUserController.java
+++ b/sk-module-system/src/main/java/com/skua/modules/system/controller/SysUserController.java
@@ -1121,20 +1121,21 @@ public class SysUserController {
             String newCid = loginUser.getCid();
             if (StrUtil.isNotBlank(newCid)) {
                 //修改手机cid
-                String oldCid = oldUser.getCid();
-                if (StringUtils.isBlank(oldCid)) {
-                    oldUser.setCid(loginUser.getCid());
-                } else {
-                    String[] split = oldCid.split(",");
-                    Set<String> sets = new HashSet<>(Arrays.asList(split));
-                    sets.add(loginUser.getCid());
-                    StringBuilder stringBuilder = new StringBuilder();
-                    for (String set : sets) {
-                        stringBuilder.append(set + ",");
-                    }
-                    stringBuilder.deleteCharAt(stringBuilder.length() - 1);
-                    oldUser.setCid(stringBuilder.toString());
-                }
+                oldUser.setCid(loginUser.getCid());
+//                String oldCid = oldUser.getCid();
+//                if (StringUtils.isBlank(oldCid)) {
+//                    oldUser.setCid(loginUser.getCid());
+//                } else {
+//                    String[] split = oldCid.split(",");
+//                    Set<String> sets = new HashSet<>(Arrays.asList(split));
+//                    sets.add(loginUser.getCid());
+//                    StringBuilder stringBuilder = new StringBuilder();
+//                    for (String set : sets) {
+//                        stringBuilder.append(set + ",");
+//                    }
+//                    stringBuilder.deleteCharAt(stringBuilder.length() - 1);
+//                    oldUser.setCid(stringBuilder.toString());
+//                }
                 sysBaseAPI.updateUser(oldUser);
                 result.success("cid修改成功");
             }
diff --git a/sk-module-system/src/main/java/com/skua/modules/system/mapper/xml/SysDepartMapper.xml b/sk-module-system/src/main/java/com/skua/modules/system/mapper/xml/SysDepartMapper.xml
index 178c62e..39c6668 100644
--- a/sk-module-system/src/main/java/com/skua/modules/system/mapper/xml/SysDepartMapper.xml
+++ b/sk-module-system/src/main/java/com/skua/modules/system/mapper/xml/SysDepartMapper.xml
@@ -255,6 +255,11 @@
 				'${item}'
 			</foreach>
 			 )
+			OR parent_id IN ( SELECT id from sys_depart WHERE parent_id IN(SELECT id FROM sys_depart WHERE parent_id IN
+			<foreach item="item" index="index" collection="departIds.split(',')"  open="(" separator="," close=")">
+				'${item}'
+			</foreach>
+			))
 		ORDER BY
 			depart_type,
 			depart_order
--
libgit2 0.24.0