Bladeren bron

功能优化

ZHGYL_GKPT 4 jaren geleden
bovenliggende
commit
f7349b0db0

+ 108 - 1
src/main/java/com/minpay/common/service/impl/ReportServiceImpl.java

@@ -406,11 +406,66 @@ public class ReportServiceImpl implements IReportService {
 			}
 			//抢修类工单报表
 			List<Map<String, String>>  qxlgdbbbList = db.getMybatisMapper(IReportBatchMapper.class).selectQxlgdbbData(map);
-
+			JSONArray jagd = new JSONArray();
+			if (qxlgdbbbList != null && !qxlgdbbbList.isEmpty()){
+				int size = qxlgdbbbList.size();
+				Map<String,Object> gdTemp = new HashMap<String,Object>();
+				Map<String,String> temp = null;
+				String unit = "";
+				for (int i = 0; i < size; i++) {
+					temp = qxlgdbbbList.get(i);
+					unit = temp.get("DFD11_GDDW");//单位
+					if (unit ==null || "".equals(unit) ||gdTemp.containsKey(unit)){
+						continue;
+					} else {
+						gdTemp.put(unit,"1");
+						JSONObject tempjo = JSONObject.fromObject(temp);
+						this.getQxgdByParam(qxlgdbbbList,unit,tempjo);
+						jagd.add(tempjo);
+					}
+				}
+			}
+			JSONObject temp1 ,temp2 = new JSONObject();
+			temp2.put("DFD11_GDDW","公司累计");
+			temp2.put("KHZS","");
+			temp2.put("DDXCSJ","");
+			temp2.put("GDCLSJ","");
+			temp2.put("DDXCCSS","");
+			temp2.put("GDCSZS","");
+			temp2.put("YSXJHD","");
+			temp2.put("GDZS","");
+			temp2.put("WH","");
+			temp2.put("GZLS-A","");
+			temp2.put("GZLS-B","");
+			temp2.put("GZLS-C","");
+			temp2.put("GZLS-D","");
+			for (int i = 0; i < jagd.size(); i++) {
+				temp1 = jagd.getJSONObject(i);
+				temp2.put("KHZS",ArithUtils.add(temp2.getString("KHZS"),temp1.getString("KHZS")));
+				temp2.put("DDXCSJ",ArithUtils.add(temp2.getString("DDXCSJ"),temp1.getString("DDXCSJ")));
+				temp2.put("GDCLSJ",ArithUtils.add(temp2.getString("KHZS"),temp1.getString("KHZS")));
+				temp2.put("DDXCCSS",ArithUtils.add(temp2.getString("DDXCCSS"),temp1.getString("DDXCCSS")));
+				temp2.put("GDCSZS",ArithUtils.add(temp2.getString("GDCSZS"),temp1.getString("GDCSZS")));
+				temp2.put("GDZS",ArithUtils.add(temp2.getString("GDZS"),temp1.getString("GDZS")));
+				temp2.put("YSXJHD",ArithUtils.add(temp2.getString("YSXJHD"),temp1.getString("YSXJHD")));
+				temp2.put("GZLS-A",ArithUtils.add(temp2.getString("GZLS-A"),temp1.getString("GZLS-A")));
+				temp2.put("GZLS-B",ArithUtils.add(temp2.getString("GZLS-B"),temp1.getString("GZLS-B")));
+				temp2.put("GZLS-C",ArithUtils.add(temp2.getString("GZLS-C"),temp1.getString("GZLS-C")));
+				temp2.put("GZLS-D",ArithUtils.add(temp2.getString("GZLS-D"),temp1.getString("GZLS-D")));
+			}
+			jagd.add(temp2);
+			for (int i = 0; i < jagd.size(); i++) {
+				temp1 = jagd.getJSONObject(i);
+				temp1.put("GDCLSJ",ArithUtils.div(temp1.getString("GDCLSJ"),temp1.getString("GDZS")));//工单处理时长平均
+				temp1.put("DDXCSJ",ArithUtils.div(temp1.getString("DDXCSJ"),temp1.getString("GDZS")));//到达现场平均
+				temp1.put("WH",ArithUtils.div(temp1.getString("GDZS"),temp1.getString("KHZS"))*1000);
+			}
 			rstMap.put("result",ja);//线路重载
 			rstMap.put("result2",ja2);//线路过载
 			rstMap.put("result3",ja3);//配变过载
 			rstMap.put("result4",ja4);//配变重载
+			rstMap.put("result5",jagd);//配变重载
+
 			Map<String,Object> param = new HashMap<String,Object>();
 			param.put("maxZzsc",maxZzsc);
 			param.put("maxXlName",maxXlName);
@@ -426,6 +481,58 @@ public class ReportServiceImpl implements IReportService {
 		return rstMap;
 	}
 
+	private Map<String, String> getQxgdByParam(List<Map<String, String>> list, String unit, JSONObject tempjo) {
+		String id = "";
+		try {
+			id = tempjo.getString("DFD11_ID");
+		} catch (Exception e){
+			id = "";
+		}
+		if(list != null && !list.isEmpty()){
+			int size = list.size();
+			JSONObject temp;
+			String tempId = "",tempUnit = "",gzlx = "";
+			JSONObject ddd , ddd2;
+			for (int i = 0; i < size; i++) {
+				temp = JSONObject.fromObject(list.get(i));
+					tempUnit = temp.getString("DFD11_GDDW");
+					if(unit.equals(tempUnit)){
+						gzlx = temp.getString("GZLX");
+						switch (gzlx){
+							case "A":
+								tempjo.put("GZLS-A",ArithUtils.add(tempjo.getString("GZLS-A"),String.valueOf(1)));
+								break;
+							case "B":
+								tempjo.put("GZLS-B",ArithUtils.add(tempjo.getString("GZLS-B"),String.valueOf(1)));
+								break;
+							case "C":
+								tempjo.put("GZLS-C",ArithUtils.add(tempjo.getString("GZLS-C"),String.valueOf(1)));
+								break;
+							case "D":
+								tempjo.put("GZLS-D",ArithUtils.add(tempjo.getString("GZLS-D"),String.valueOf(1)));
+								break;
+							default:
+								break;
+						}
+						tempjo.put("GDZS",ArithUtils.add(tempjo.getString("GDZS"),String.valueOf(1)));//工单总数 累加
+						tempjo.put("DFD11_QXZSC",ArithUtils.add(tempjo.getString("DFD11_QXZSC"),temp.getString("DFD11_QXZSC")));//抢修总时长累加
+						ddd = JSONObject.fromObject(temp.get("DFD11_TJSHSJ"));
+						ddd2 = JSONObject.fromObject(temp.get("DFD11_GDSJ"));
+						tempjo.put("GDCLSJ",ArithUtils.add(tempjo.getString("GDCLSJ"),StringUtil.ObjectToString(StringUtil.dateCalculate2((Long)ddd.get("time"),(Long)ddd2.get("time")))));
+						ddd = JSONObject.fromObject(temp.get("DFD11_SCPFQXDSJ"));
+						ddd2 = JSONObject.fromObject(temp.get("DFD11_DWXCSJ"));
+						tempjo.put("DDXCSJ",ArithUtils.add(tempjo.getString("DDXCSJ"),StringUtil.ObjectToString(StringUtil.dateCalculate2((Long)ddd.get("time"),(Long)ddd2.get("time")))));
+						tempjo.remove("DFD11_TJSHSJ");
+						tempjo.remove("DFD11_GDSJ");
+						tempjo.remove("DFD11_SCPFQXDSJ");
+						tempjo.remove("DFD11_DWXCSJ");
+					}
+//				}
+			}
+		}
+		return null;
+	}
+
 	/**
 	 * 获取配变描述信息
 	 * @param ja3 过载

+ 20 - 4
src/main/java/com/minpay/common/util/ArithUtils.java

@@ -7,7 +7,7 @@ import java.math.BigDecimal;
  */
 public class ArithUtils {
 
-    private static final int DEF_DIV_SCALE = 10;
+    private static final int DEF_DIV_SCALE = 4;
 
     /**
      * 加法
@@ -16,13 +16,26 @@ public class ArithUtils {
      * @return
      */
     public static float add(String v1,String v2){
+        if(v1 == null || "".equals(v1)){
+            v1 = "0";
+        }
+        if(v2 == null || "".equals(v2)){
+            v2 = "0";
+        }
         BigDecimal b1 = new BigDecimal(v1);
-
         BigDecimal b2 = new BigDecimal(v2);
-
         return b1.add(b2).floatValue();
 
     }
+    public static Integer addToInt(Object v1,Object v2){
+        if("".equals(v1) || v1 == null){
+            v1 = "0";
+        }
+        if("".equals(v2) || v2 == null){
+            v2 = "0";
+        }
+        return Integer.valueOf(v1.toString()) + Integer.valueOf(v2.toString());
+    }
     /**
      * 减法
      * @param v1
@@ -57,10 +70,13 @@ public class ArithUtils {
      * @return
      */
     public static float div(String v1,String v2){
+        if( "".equals(v1) ||"".equals(v2)){
+            return 0f;
+        }
         BigDecimal b1 = new BigDecimal(v1);
         BigDecimal b2 = new BigDecimal(v2);
         BigDecimal b0 = new BigDecimal(0) ;//把 0 转为 BigDecimal
-        if(b2.compareTo(b0) == 0){
+        if("".equals(b2) || b2.compareTo(b0) == 0 ){
             return 0f;
         }
         return b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP).floatValue();

+ 47 - 9
src/main/java/com/minpay/common/util/StringUtil.java

@@ -129,17 +129,8 @@ public class StringUtil extends StringUtils {
         return null;
     }
 
-    public static void main(String[] args) {
-        Object obj = "20210225111412";
-        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
-        DateTimeFormatter fa = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
 
-        LocalDateTime ldt = LocalDateTime.parse(obj.toString(),dtf);
-        String datetime = ldt.format(fa);
-        System.out.println(datetime);
-    }
-
 
     /**
      * 入参格式yyyyMMdd hh:mm:ss
@@ -192,4 +183,51 @@ public class StringUtil extends StringUtils {
         return start+end;
     }
 
+    /**
+     * 时间计算
+     * @param start
+     * @param end
+     * @return
+     */
+    public static float dateCalculate(String start, String end){
+        try {
+            int minute = 0,surplus=0,mt = 60 * 1000;
+            float second = 0f;
+            Date s = new Date(start.replaceAll("-","/"));
+            Date e = new Date(end.replaceAll("-","/"));
+            long total = e.getTime() - s.getTime();
+
+            minute = (int) (total / mt);
+            surplus = (int) (total - minute * mt);
+            second = ArithUtils.div(String.valueOf(surplus),String.valueOf(mt));
+            return ArithUtils.add(String.valueOf(minute),String.valueOf(second) );
+        }catch (Exception ee){
+            ee.printStackTrace();
+            return 0f;
+        }
+    }
+    /**
+     * 时间计算
+     * @param start
+     * @param end
+     * @return
+     */
+    public static float dateCalculate2(Long start, Long end){
+        try {
+            int minute = 0,surplus=0,mt = 60 * 1000;
+            float second = 0f;
+            long total = end - start;
+            minute = (int) (total / mt);
+            surplus = (int) (total - minute * mt);
+            second = ArithUtils.div(String.valueOf(surplus),String.valueOf(mt));
+            return ArithUtils.add(String.valueOf(minute),String.valueOf(second) );
+        }catch (Exception ee){
+            ee.printStackTrace();
+            return 0f;
+        }
+    }
+    public static void main(String[] args) {
+        String a = "2021-2-25 10:43:11";
+        String b = "2021-2-25 10:57:00";
+    }
 }

+ 43 - 1
src/main/resources/com/minpay/db/table/own/mapper/ReportBatchMapper.xml

@@ -225,6 +225,48 @@
             AND DRI_ID = #{reportId}
     </select>
     <select id="selectQxlgdbbData" resultType="map" parameterType="map">
-        select 1 from dual
+       SELECT
+            DFD11_ID,
+            DFD11_GDDW,/*单位*/
+            '0' KHZS,/*客户总数*/
+            DFD11_DWXCSJ,/*到达现场时间-首次派发抢修队时间 = 到达现场花费时间*/
+            DFD11_SCPFQXDSJ,
+            /*DFD11_GZPCSJ,故障排除时间*/
+            DFD11_QXZSC,/*抢修总时长*/
+            '0' DDXCCSS,/*到达现场超时数*/
+            '0' GDCSZS, /*工单时长超时*/
+            /*DFD11_SLSH,受理时间*/
+            '0' YSXJHD,/*疑似虚假回单*/
+            DFD11_TJSHSJ,/*归档时间-提交审核时间 = 工单处理花费时长*/
+            DFD11_GDSJ,
+            '0' GDCQSFZS,
+            '0' `GZLS-A`,
+            '0' `GZLS-B`,
+            '0' `GZLS-C`,
+            '0' `GZLS-D`,
+            '0' GDZS,
+            '0' YSXJHDZS,
+            '0' WHBXL,
+            '0' GDCLSJ,
+            '0' DDXCSJ,
+        CASE
+
+                WHEN T.DFD11_YJFL = '客户内部故障' THEN
+                'A'
+                WHEN T.DFD11_YJFL = '非电力故障' THEN
+                'C'
+                WHEN T.DFD11_YJFL = '低压故障' THEN
+                'B'
+                WHEN T.DFD11_YJFL = '电能质量等故障' THEN
+                'D' ELSE 'E'
+            END GZLX
+        FROM
+            DW_FILE_DETAIL_11 T
+        WHERE
+            T.DFD11_TJSHSJ BETWEEN #{start}
+            AND #{end}
+            AND T.DFD11_STATE = '0'
+        ORDER BY
+            T.DFD11_GDDW,T.DFD11_YJFL
     </select>
 </mapper>

+ 18 - 18
src/main/webapp/admin/xlgzz/reportManageDetailXlgzz.html

@@ -154,24 +154,24 @@
                             elem: '#demo3'
                             ,limit:100
                             ,cols: [[ //表头
-                                {field: '1', title: '单位\\分类', width:150,rowspan:2}
-                                ,{field: '2', title: '客户总量(户)', width:150,rowspan:2}
-                                ,{field: '3', title: '平均到达现场时间(分)', width:150,rowspan:2}
-                                ,{field: '4', title: '工单处理平均时长(分)', width:150,rowspan:2}
-                                ,{field: '5', title: '到达现场超时数', width:150,rowspan:2}
-                                ,{field: '6', title: '工单时长超70分钟数', width:150,rowspan:2}
-                                ,{field: '', title: '故障类型',colspan:4}
-                                ,{field: '8', title: '疑似虚假回单', width:150,rowspan:2}
-                                ,{field: '9', title: '工单总数', width:150,rowspan:2}
-                                ,{field: '10', title: '万户报修率', width:150,rowspan:2}
-                            ],
-                                [
-                                    {field: '11', title: '客户内部故障', width:150}
-                                    ,{field: '12', title: '低压故障', width:150}
-                                    ,{field: '13', title: '非电力故障', width:150}
-                                    ,{field: '14', title: '电能质量等故障', width:150}
-                                ]],
-                            data:[],
+                            {field: 'DFD11_GDDW', title: '单位\\分类', width:150,rowspan:2}
+                            ,{field: 'KHZS', title: '客户总量(户)', width:150,rowspan:2}
+                            ,{field: 'DDXCSJ', title: '平均到达现场时间(分)', width:150,rowspan:2}
+                            ,{field: 'GDCLSJ', title: '工单处理平均时长(分)', width:150,rowspan:2}
+                            ,{field: 'DDXCCSS', title: '到达现场超时数', width:150,rowspan:2}
+                            ,{field: 'GDCSZS', title: '工单时长超70分钟数', width:150,rowspan:2}
+                            ,{field: '', title: '故障类型',colspan:4}
+                            ,{field: 'YSXJHD', title: '疑似虚假回单', width:150,rowspan:2}
+                            ,{field: 'GDZS', title: '工单总数', width:150,rowspan:2}
+                            ,{field: 'WH', title: '万户报修率', width:150,rowspan:2}
+                        ],
+                            [
+                                {field: 'GZLS-A', title: '客户内部故障', width:150}
+                                ,{field: 'GZLS-B', title: '低压故障', width:150}
+                                ,{field: 'GZLS-C', title: '非电力故障', width:150}
+                                ,{field: 'GZLS-D', title: '电能质量等故障', width:150}
+                            ]],
+                            data:data.data.resList.result5,
                             done:function(res, curr, count){
                                 count || this.elem.next('.layui-table-view').find('.layui-table-header').css('display', 'inline-block');
                                 count || this.elem.next('.layui-table-view').find('.layui-table-box').css('overflow-x', 'auto');

+ 14 - 14
src/main/webapp/admin/xlgzz/reportProduceXlgzz.html

@@ -503,24 +503,24 @@
 							elem: '#demo3'
 							,limit:100
 							,cols: [[ //表头
-								{field: '1', title: '单位\\分类', width:150,rowspan:2}
-								,{field: '2', title: '客户总量(户)', width:150,rowspan:2}
-								,{field: '3', title: '平均到达现场时间(分)', width:150,rowspan:2}
-								,{field: '4', title: '工单处理平均时长(分)', width:150,rowspan:2}
-								,{field: '5', title: '到达现场超时数', width:150,rowspan:2}
-								,{field: '6', title: '工单时长超70分钟数', width:150,rowspan:2}
+								{field: 'DFD11_GDDW', title: '单位\\分类', width:150,rowspan:2}
+								,{field: 'KHZS', title: '客户总量(户)', width:150,rowspan:2}
+								,{field: 'DDXCSJ', title: '平均到达现场时间(分)', width:150,rowspan:2}
+								,{field: 'GDCLSJ', title: '工单处理平均时长(分)', width:150,rowspan:2}
+								,{field: 'DDXCCSS', title: '到达现场超时数', width:150,rowspan:2}
+								,{field: 'GDCSZS', title: '工单时长超70分钟数', width:150,rowspan:2}
 								,{field: '', title: '故障类型',colspan:4}
-								,{field: '8', title: '疑似虚假回单', width:150,rowspan:2}
-								,{field: '9', title: '工单总数', width:150,rowspan:2}
-								,{field: '10', title: '万户报修率', width:150,rowspan:2}
+								,{field: 'YSXJHD', title: '疑似虚假回单', width:150,rowspan:2}
+								,{field: 'GDZS', title: '工单总数', width:150,rowspan:2}
+								,{field: 'WH', title: '万户报修率', width:150,rowspan:2}
 							],
 								[
-									{field: '11', title: '客户内部故障', width:150}
-									,{field: '12', title: '低压故障', width:150}
-									,{field: '13', title: '非电力故障', width:150}
-									,{field: '14', title: '电能质量等故障', width:150}
+									{field: 'GZLS-A', title: '客户内部故障', width:150}
+									,{field: 'GZLS-B', title: '低压故障', width:150}
+									,{field: 'GZLS-C', title: '非电力故障', width:150}
+									,{field: 'GZLS-D', title: '电能质量等故障', width:150}
 								]],
-							data:[],
+							data:data.data.resList.result5,
 							done:function(res, curr, count){
 								count || this.elem.next('.layui-table-view').find('.layui-table-header').css('display', 'inline-block');
 								count || this.elem.next('.layui-table-view').find('.layui-table-box').css('overflow-x', 'auto');