wenhongquan 2 年 前
コミット
9bab2d6eeb

+ 236 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TableDetectionController.java

@@ -1,15 +1,24 @@
 package com.ruoyi.web.controller.system;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletResponse;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.JSUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.framework.web.service.PermissionService;
 import com.ruoyi.quartz.task.RyTask;
-import com.ruoyi.system.domain.TblDetectionLog;
-import com.ruoyi.system.service.ITblDetectionLogService;
+import com.ruoyi.system.domain.*;
+import com.ruoyi.system.service.*;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -24,8 +33,6 @@ import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.system.domain.TableDetection;
-import com.ruoyi.system.service.ITableDetectionService;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
 
@@ -52,6 +59,18 @@ public class TableDetectionController extends BaseController
     @Autowired
     private PermissionService permissionService;
 
+    @Autowired
+    private ITblFacilitiesService tblFacilitiesService;
+
+    @Autowired
+    private ISysUserService userService;
+
+    @Autowired
+    private ISysDeptService deptService;
+
+    @Autowired
+    private ISysDictDataService sysDictDataService;
+
 
 
     /**
@@ -85,6 +104,219 @@ public class TableDetectionController extends BaseController
         util.exportExcel(response, list, "检测计划数据");
     }
 
+
+
+    @PreAuthorize("@ss.hasPermi('system:detection:export')")
+    @Log(title = "检测计划", businessType = BusinessType.EXPORT)
+    @PostMapping("/export1")
+    public void export1(HttpServletResponse response, TableDetection tableDetection) {
+        List<TableDetection> list = tableDetectionService.selectTableDetectionList(tableDetection);
+        List<TblFacilities> facilities = tblFacilitiesService.selectTblFacilitiesList(new TblFacilities());
+        SysDictData sysDictData = new SysDictData();
+        facilities.forEach(m -> {
+            m.setParams(JSON.parseObject(m.getExt1(), Map.class));
+        });
+
+
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("sys_area");
+        List<SysDictData> list1 = list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<String, String> areamap = new HashMap<>();
+        for (SysDictData d : list1
+        ) {
+            areamap.put(d.getDictValue(), d.getDictLabel());
+        }
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("facilities_pstz");
+        list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<String, String> facilities_pstz = new HashMap<>();
+        for (SysDictData d : list1
+        ) {
+            facilities_pstz.put(d.getDictValue(), d.getDictLabel());
+        }
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("detection_type");
+        list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<String, String> detection_type = new HashMap<>();
+        for (SysDictData d : list1
+        ) {
+            detection_type.put(d.getDictValue(), d.getDictLabel());
+        }
+
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("detection_status");
+        list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<Long, String> detection_status = new HashMap<>();
+        for (SysDictData d : list1
+        ) {
+            detection_status.put(Long.parseLong(d.getDictValue()), d.getDictLabel());
+        }
+
+        List<SysUser> users = userService.selectUserList(new SysUser());
+        Map<Long, SysUser> usermap = new HashMap<>();
+        for (SysUser d : users
+        ) {
+            usermap.put(d.getUserId(), d);
+        }
+
+        List<SysDept> depts = deptService.selectDeptList(new SysDept());
+        Map<Long, SysDept> deptmap = new HashMap<>();
+        for (SysDept d : depts
+        ) {
+            deptmap.put(d.getDeptId(), d);
+        }
+
+
+
+
+        list.forEach(m -> {
+
+            try {
+                m.setParams(JSON.parseObject(m.getExt1(), Map.class));
+                List<TblFacilities> facilities1 = facilities.stream().filter(i -> i.getId().equals(m.getFacilitiesId())).collect(Collectors.toList());
+                if (facilities1.size() > 0) {
+                    facilities1.get(0).setParams(JSON.parseObject(facilities1.get(0).getExt1(), Map.class));
+                    m.setFacilities(facilities1.get(0));
+                }
+                m.getParams().put("o_data_qy", areamap.get(facilities1.size() > 0 ? facilities1.get(0).getParams().get("tz_area_new") : ""));
+                m.getParams().put("o_data_ststus", detection_status.get(m.getStatus()));
+
+                m.getParams().put("o_data_pstz", facilities_pstz.get(facilities1.size() > 0 ? facilities1.get(0).getParams().get("tz_ss_pstz") : ""));
+                m.getParams().put("o_data_jclx", detection_type.get(m.getDetectionType().toString()));
+
+                Map<Long, TblDetectionLog> logs = new HashMap<>();
+
+                for (TblDetectionLog l : m.getDetectionLogs()
+                ) {
+                    if (logs.get(l.getDetectionStatus()) != null) {
+                        TblDetectionLog log = logs.get(l.getDetectionStatus());
+                        if (log.getCreateTime().getTime() < l.getCreateTime().getTime()) {
+                            logs.put(l.getDetectionStatus(), l);
+                        }
+                    } else {
+                        logs.put(l.getDetectionStatus(), l);
+                    }
+                }
+                List<TblDetectionLog> loglist = new ArrayList<>(logs.values());
+                m.setDetectionLogs(loglist);
+
+                if (logs.get(3L) != null) {
+                    Map c = JSON.parseObject(logs.get(3L).getLogDes(), Map.class);
+                    String commjs = "function run(){";
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    commjs+="var allusers="+JSON.toJSONString(users)+";";
+                    String runjs = commjs+"return allusers.filter(function(i){return cc.gzz.zy.indexOf(i.userId)!=-1;}).map(function(i){return i.nickName;}).join(',') }";
+                    Object zy = JSUtils.runjs(runjs);
+
+                    m.getParams().put("o_data_gzfk", c);
+                    m.getParams().put("o_data_gzfk_zy", zy);
+                }
+
+                if(logs.get(4L)!=null){
+
+                    Map c = JSON.parseObject(logs.get(4L).getLogDes(),Map.class);
+                    String commjs = "function run(){";
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    String runjs = commjs+"return eval(Object.keys(cc.wcgzl).filter(function(i){ return i!='default';}).map(function(i){ return cc.wcgzl[i].gd.map(function(p){ return p.yh_length;}).join('+')}).join('+')) }";
+                    Object gc = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return Object.keys(cc.wcgzl).filter(function(i){ return i!='default';}).map(function(i){ return cc.wcgzl[i].gd.map(function(p){ return p.yh_gj;}).join(\",\")}).join(\",\") }";
+                    Object gj = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return eval(Object.keys(cc.wcgzl).filter(function(i){ return i!='default';}).map(function(i){ return cc.wcgzl[i].gd.map(function(p){ return p.nl;}).join(\"+\")}).join(\"+\")) }";
+                    Object nl = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return eval(Object.keys(cc.wcgzl).filter(function(i){ return i!='default';}).map(function(i){ return cc.wcgzl[i].jcj==\"\"?0:cc.wcgzl[i].jcj;}).join(\"+\")) }";
+                    Object jcj = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return eval(Object.keys(cc.wcgzl).filter(function(i){ return i!='default';}).map(function(i){ return cc.wcgzl[i].ysk==\"\"?0:cc.wcgzl[i].ysk;}).join(\"+\")) }";
+                    Object ysk = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return eval(Object.keys(cc.wcgzl).filter(function(i){ return i!='default';}).map(function(i){ return (cc.wcgzl[i].bz_dan==\"\"?0:parseFloat(cc.wcgzl[i].bz_dan))+(cc.wcgzl[i].bz_duo==\"\"?0:parseFloat(cc.wcgzl[i].bz_duo))+(cc.wcgzl[i].bz_san==\"\"?0:parseFloat(cc.wcgzl[i].bz_san))+(cc.wcgzl[i].bz_si==\"\"?0:parseFloat(cc.wcgzl[i].bz_si))+(cc.wcgzl[i].bz_shuang==\"\"?0:parseFloat(cc.wcgzl[i].bz_shuang));}).join(\"+\")) }";
+                    Object bz = JSUtils.runjs(runjs);
+
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return Object.keys(cc.wnzyqk).filter(function(i) {return i!='remark';}).map(function(i){ var cp=\"\";switch(i){case 'phk':cp='管渠(米)';case 'jcj':cp='检查井(座)';case 'ysk':cp='雨水口(座)';} return cp+\":\"+((cc.wnzyqk[i].zy==\"\"||cc.wnzyqk[i].zy==undefined)?\"\":cc.wnzyqk[i].zy)}).join(\" ,\") }";
+                    Object zy = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return Object.keys(cc.wnzyqk).filter(function(i) {return i!='remark';}).map(function(i){ var cp=\"\";switch(i){case 'phk':cp='管渠(米)';case 'jcj':cp='检查井(座)';case 'ysk':cp='雨水口(座)';} return cp+\":\"+((cc.wnzyqk[i].wd==\"\"||cc.wnzyqk[i].wd==undefined)?\"\":cc.wnzyqk[i].wd)}).join(\" ,\") }";
+                    Object wd = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return Object.keys(cc.wnzyqk).filter(function(i) {return i!='remark';}).map(function(i){ var cp=\"\";switch(i){case 'phk':cp='管渠(米)';case 'jcj':cp='检查井(座)';case 'ysk':cp='雨水口(座)';} return cp+\":\"+((cc.wnzyqk[i].ym==\"\"||cc.wnzyqk[i].ym==undefined)?\"\":cc.wnzyqk[i].ym)}).join(\" ,\") }";
+                    Object ym = JSUtils.runjs(runjs);
+
+                    Map<String,Object> gzl = new HashMap<>();
+                    gzl.put("gj",gj);
+                    gzl.put("gc",gc);
+                    gzl.put("nl",nl);
+                    gzl.put("jcj",jcj);
+                    gzl.put("ysk",ysk);
+                    gzl.put("bz",bz);
+                    gzl.put("zy",zy);
+                    gzl.put("wd",wd);
+                    gzl.put("ym",ym);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return cc.zyd.leixing.join(',') }";
+                    Object yh = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return cc.zyd.fjsswh.join(',')+' '+cc.zyd.sswhlx.join(',') }";
+                    Object wx = JSUtils.runjs(runjs);
+
+
+
+                    gzl.put("zyd_yh",yh);
+                    gzl.put("zyd_wx",wx);
+
+                    m.getParams().put("o_data_gzl",gzl);
+                }
+
+                if(logs.get(2L)!=null){
+                    Map<String,Object> c = JSON.parseObject(logs.get(2L).getLogDes(),Map.class);
+                    StringBuilder deptnames = new StringBuilder();
+                    if(c.get("fzbz")!=null){
+                        for (Object s : (JSONArray)c.get("fzbz")) {
+                            if(deptmap.get(Long.parseLong(s.toString()))!=null){
+                                if(deptnames.length()>0){
+                                    deptnames.append(",");
+                                }
+                                deptnames.append(deptmap.get(Long.parseLong(s.toString())).getDeptName());
+                            }
+                        }
+                    }
+                    if(c.get("fzr")!=null){
+                        if(usermap.get(Long.parseLong(c.get("fzr").toString()))!=null){
+                            m.getParams().put("o_data_fzrphone",usermap.get(Long.parseLong(c.get("fzr").toString())).getPhonenumber());
+                            m.getParams().put("o_data_fzr",usermap.get(Long.parseLong(c.get("fzr").toString())).getNickName());
+                        }
+                    }
+                    m.getParams().put("o_data_dept",deptnames.toString());
+                    m.getParams().put("o_data_pftime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,logs.get(2L).getCreateTime()));
+                }
+
+
+            } catch (Exception ignored) {
+            }
+        });
+
+
+        HashMap<String,Object> alldata = new HashMap<>();
+        alldata.put("list",list);
+//        alldata.put("worklist",taskworkmap.values());
+//        alldata.put("cllist",taskcarmap.values());
+//        alldata.put("hclist",taskconsumablesmap.values());
+        exportExcel("【设施检测】南宁北排检测计划、根据、成果上报","ssjc",alldata,response);
+    }
+
     /**
      * 获取检测计划详细信息
      */

+ 216 - 7
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TblMaintainController.java

@@ -1,18 +1,25 @@
 package com.ruoyi.web.controller.system;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletResponse;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.JSUtils;
 import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.Threads;
 import com.ruoyi.framework.web.service.PermissionService;
 import com.ruoyi.quartz.task.RyTask;
-import com.ruoyi.system.domain.TblMaintainLog;
-import com.ruoyi.system.domain.TblTask;
-import com.ruoyi.system.domain.TblTaskLog;
-import com.ruoyi.system.service.ITblMaintainLogService;
+import com.ruoyi.system.domain.*;
+import com.ruoyi.system.service.*;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -27,8 +34,6 @@ import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.system.domain.TblMaintain;
-import com.ruoyi.system.service.ITblMaintainService;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
 
@@ -45,16 +50,29 @@ public class TblMaintainController extends BaseController
     @Autowired
     private ITblMaintainService tblMaintainService;
 
+    @Autowired
+    private ITblFacilitiesService tblFacilitiesService;
+
 
     @Autowired
     private ITblMaintainLogService tblMaintainLogService;
 
     @Autowired
+    private ISysDictDataService sysDictDataService;
+
+    @Autowired
     private RyTask ryTask;
 
     @Autowired
     private PermissionService permissionService;
 
+    @Autowired
+    private ISysUserService userService;
+
+    @Autowired
+    private ISysDeptService deptService;
+
+
 
     /**
      * 查询养护计划列表
@@ -87,6 +105,197 @@ public class TblMaintainController extends BaseController
         util.exportExcel(response, list, "养护计划数据");
     }
 
+    @PreAuthorize("@ss.hasPermi('system:maintain:export')")
+    @Log(title = "养护计划", businessType = BusinessType.EXPORT)
+    @PostMapping("/export1")
+    public void export1(HttpServletResponse response, TblMaintain tblMaintain)
+    {
+        List<TblMaintain> list = tblMaintainService.selectTblMaintainList(tblMaintain);
+        List<TblFacilities> facilities = tblFacilitiesService.selectTblFacilitiesList(new TblFacilities());
+        SysDictData sysDictData = new SysDictData();
+        facilities.forEach(m->{
+            m.setParams(JSON.parseObject(m.getExt1(),Map.class));
+        });
+
+
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("sys_area");
+        List<SysDictData>  list1 =list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<String,String> areamap = new HashMap<>();
+        for (SysDictData d:list1
+        ) {
+            areamap.put(d.getDictValue(),d.getDictLabel());
+        }
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("facilities_pstz");
+        list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<String,String> facilities_pstz = new HashMap<>();
+        for (SysDictData d:list1
+        ) {
+            facilities_pstz.put(d.getDictValue(),d.getDictLabel());
+        }
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("maintain_type");
+        list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<String,String> maintain_type = new HashMap<>();
+        for (SysDictData d:list1
+        ) {
+            maintain_type.put(d.getDictValue(),d.getDictLabel());
+        }
+
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("maintain_status");
+        list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<Long,String> maintain_status = new HashMap<>();
+        for (SysDictData d:list1
+        ) {
+            maintain_status.put(Long.parseLong(d.getDictValue()),d.getDictLabel());
+        }
+
+        List<SysUser> users = userService.selectUserList(new SysUser());
+        Map<Long,SysUser> usermap = new HashMap<>();
+        for (SysUser d:users
+        ) {
+            usermap.put(d.getUserId(),d);
+        }
+
+        List<SysDept> depts = deptService.selectDeptList(new SysDept());
+        Map<Long,SysDept> deptmap = new HashMap<>();
+        for (SysDept d:depts
+        ) {
+            deptmap.put(d.getDeptId(),d);
+        }
+
+
+
+
+
+        list.forEach(m->{
+            try {
+                m.setParams(JSON.parseObject(m.getExt1(),Map.class));
+                List<TblFacilities> facilities1 =  facilities.stream().filter(i->i.getId().equals(m.getFacilitiesId())).collect(Collectors.toList());
+                if(facilities1.size()>0){
+                    facilities1.get(0).setParams(JSON.parseObject(facilities1.get(0).getExt1(),Map.class));
+                    m.setFacilities(facilities1.get(0));
+                }
+                m.getParams().put("o_data_qy",areamap.get(facilities1.size()>0?facilities1.get(0).getParams().get("tz_area_new"):""));
+                m.getParams().put("o_data_ststus",maintain_status.get(m.getStatus()));
+
+                m.getParams().put("o_data_pstz",facilities_pstz.get(facilities1.size()>0?facilities1.get(0).getParams().get("tz_ss_pstz"):""));
+                m.getParams().put("o_data_yhlx",maintain_type.get(m.getMaintainType().toString()));
+
+                Map<Long,TblMaintainLog> logs = new HashMap<>();
+
+                for (TblMaintainLog l:m.getMaintainLogs()
+                ) {
+                    if(logs.get(l.getMaintainStatus())!=null){
+                        TblMaintainLog log = logs.get(l.getMaintainStatus());
+                        if(log.getCreateTime().getTime()<l.getCreateTime().getTime()) {
+                            logs.put(l.getMaintainStatus(), l);
+                        }
+                    }else{
+                        logs.put(l.getMaintainStatus(),l);
+                    }
+                }
+                List<TblMaintainLog> loglist = new ArrayList<>(logs.values());
+                m.setMaintainLogs(loglist);
+
+                if(logs.get(3L)!=null){
+                    Map c = JSON.parseObject(logs.get(3L).getLogDes(),Map.class);
+                    m.getParams().put("o_data_gzfk",c);
+                }
+                if(logs.get(4L)!=null){
+                    Map c = JSON.parseObject(logs.get(4L).getLogDes(),Map.class);
+                    String commjs = "function run(){";
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    String runjs = commjs+"return eval(Object.keys(cc.wcgzl).filter(function(i){ return i!='default';}).map(function(i){ return cc.wcgzl[i].gd.map(function(p){ return p.yh_length;}).join('+')}).join('+')) }";
+                    Object gc = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return Object.keys(cc.wcgzl).filter(function(i){ return i!='default';}).map(function(i){ return cc.wcgzl[i].gd.map(function(p){ return p.yh_gj;}).join(\",\")}).join(\",\") }";
+                    Object gj = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return eval(Object.keys(cc.wcgzl).filter(function(i){ return i!='default';}).map(function(i){ return cc.wcgzl[i].gd.map(function(p){ return p.nl;}).join(\"+\")}).join(\"+\")) }";
+                    Object nl = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return eval(Object.keys(cc.wcgzl).filter(function(i){ return i!='default';}).map(function(i){ return cc.wcgzl[i].jcj==\"\"?0:cc.wcgzl[i].jcj;}).join(\"+\")) }";
+                    Object jcj = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return eval(Object.keys(cc.wcgzl).filter(function(i){ return i!='default';}).map(function(i){ return cc.wcgzl[i].ysk==\"\"?0:cc.wcgzl[i].ysk;}).join(\"+\")) }";
+                    Object ysk = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return eval(Object.keys(cc.wcgzl).filter(function(i){ return i!='default';}).map(function(i){ return (cc.wcgzl[i].bz_dan==\"\"?0:parseFloat(cc.wcgzl[i].bz_dan))+(cc.wcgzl[i].bz_duo==\"\"?0:parseFloat(cc.wcgzl[i].bz_duo))+(cc.wcgzl[i].bz_san==\"\"?0:parseFloat(cc.wcgzl[i].bz_san))+(cc.wcgzl[i].bz_si==\"\"?0:parseFloat(cc.wcgzl[i].bz_si))+(cc.wcgzl[i].bz_shuang==\"\"?0:parseFloat(cc.wcgzl[i].bz_shuang));}).join(\"+\")) }";
+                    Object bz = JSUtils.runjs(runjs);
+
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return Object.keys(cc.wnzyqk).filter(function(i) {return i!='remark';}).map(function(i){ var cp=\"\";switch(i){case 'phk':cp='管渠(米)';case 'jcj':cp='检查井(座)';case 'ysk':cp='雨水口(座)';} return cp+\":\"+((cc.wnzyqk[i].zy==\"\"||cc.wnzyqk[i].zy==undefined)?\"\":cc.wnzyqk[i].zy)}).join(\" ,\") }";
+                    Object zy = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return Object.keys(cc.wnzyqk).filter(function(i) {return i!='remark';}).map(function(i){ var cp=\"\";switch(i){case 'phk':cp='管渠(米)';case 'jcj':cp='检查井(座)';case 'ysk':cp='雨水口(座)';} return cp+\":\"+((cc.wnzyqk[i].wd==\"\"||cc.wnzyqk[i].wd==undefined)?\"\":cc.wnzyqk[i].wd)}).join(\" ,\") }";
+                    Object wd = JSUtils.runjs(runjs);
+
+                    commjs+="var cc = "+JSON.toJSONString(c)+";";
+                    runjs = commjs+"return Object.keys(cc.wnzyqk).filter(function(i) {return i!='remark';}).map(function(i){ var cp=\"\";switch(i){case 'phk':cp='管渠(米)';case 'jcj':cp='检查井(座)';case 'ysk':cp='雨水口(座)';} return cp+\":\"+((cc.wnzyqk[i].ym==\"\"||cc.wnzyqk[i].ym==undefined)?\"\":cc.wnzyqk[i].ym)}).join(\" ,\") }";
+                    Object ym = JSUtils.runjs(runjs);
+
+                    Map<String,Object> gzl = new HashMap<>();
+                    gzl.put("gj",gj);
+                    gzl.put("gc",gc);
+                    gzl.put("nl",nl);
+                    gzl.put("jcj",jcj);
+                    gzl.put("ysk",ysk);
+                    gzl.put("bz",bz);
+                    gzl.put("zy",zy);
+                    gzl.put("wd",wd);
+                    gzl.put("ym",ym);
+
+                    m.getParams().put("o_data_gzl",gzl);
+                }
+
+                if(logs.get(2L)!=null){
+                    Map<String,Object> c = JSON.parseObject(logs.get(2L).getLogDes(),Map.class);
+                    StringBuilder deptnames = new StringBuilder();
+                    if(c.get("fzbz")!=null){
+                        for (Object s : (JSONArray)c.get("fzbz")) {
+                            if(deptmap.get(Long.parseLong(s.toString()))!=null){
+                                if(deptnames.length()>0){
+                                    deptnames.append(",");
+                                }
+                                deptnames.append(deptmap.get(Long.parseLong(s.toString())).getDeptName());
+                            }
+                        }
+                    }
+                    if(c.get("fzr")!=null){
+                        if(usermap.get(Long.parseLong(c.get("fzr").toString()))!=null){
+                            m.getParams().put("o_data_fzrphone",usermap.get(Long.parseLong(c.get("fzr").toString())).getPhonenumber());
+                            m.getParams().put("o_data_fzr",usermap.get(Long.parseLong(c.get("fzr").toString())).getNickName());
+                        }
+                    }
+                    m.getParams().put("o_data_dept",deptnames.toString());
+                    m.getParams().put("o_data_pftime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,logs.get(2L).getCreateTime()));
+                }
+            }catch (Exception ignored){}
+        });
+
+
+
+//        ExcelUtil<TblMaintain> util = new ExcelUtil<TblMaintain>(TblMaintain.class);
+//        util.exportExcel(response, list, "养护计划数据");
+
+        HashMap<String,Object> alldata = new HashMap<>();
+        alldata.put("list",list);
+//        alldata.put("worklist",taskworkmap.values());
+//        alldata.put("cllist",taskcarmap.values());
+//        alldata.put("hclist",taskconsumablesmap.values());
+        exportExcel("【设施养护】计划、跟进、成果上报","ssyh",alldata,response);
+    }
+
     /**
      * 获取养护计划详细信息
      */

+ 265 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TblTaskController.java

@@ -630,6 +630,271 @@ public class TblTaskController extends BaseController
         exportExcel("成本记录","taskcb",alldata,response);
     }
 
+
+
+    @PreAuthorize("@ss.hasPermi('system:task:export1')")
+    @Log(title = "工单任务", businessType = BusinessType.EXPORT)
+    @PostMapping("/export3")
+    public void export3(HttpServletResponse response, TblTask tblTask)
+    {
+//        if(permissionService.hasAnyRoles("common")){
+//            Map p = tblTask.getParams();
+//            if(p==null) p = new HashMap<String,Object>();
+//            p.put("userId",SecurityUtils.getLoginUser().getUserId()+"");
+//            tblTask.setParams(p);
+//        }
+        if(permissionService.hasAnyRoles("common")&& !SecurityUtils.getLoginUser().getPermissions().contains("*:*:*")){
+            Map p = tblTask.getParams();
+            if(p==null) p = new HashMap<String,Object>();
+            p.put("userId",SecurityUtils.getLoginUser().getUserId()+"");
+            tblTask.setParams(p);
+        }
+//        tblTask  = new TblTask();
+        List<TblTask> tasks = tblTaskService.selectTblTaskList(tblTask);
+        if(tasks==null){
+            try{
+                response.getWriter().write(JSON.toJSONString(error("未找到任务")));
+            }catch (Exception e){
+
+            }finally {
+                return;
+            }
+        }
+
+        SysDictData sysDictData = new SysDictData();
+        sysDictData.setDictType("task_type");
+        List<SysDictData>  list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<Long,String> typemap = new HashMap<>();
+        for (SysDictData d:list1
+        ) {
+            typemap.put(Long.parseLong(d.getDictValue()),d.getDictLabel());
+        }
+
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("sys_area");
+        list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<Long,String> areamap = new HashMap<>();
+        for (SysDictData d:list1
+        ) {
+            areamap.put(Long.parseLong(d.getDictValue()),d.getDictLabel());
+        }
+
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("task_status");
+        list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<Long,String> taskstatus = new HashMap<>();
+        for (SysDictData d:list1
+        ) {
+            taskstatus.put(Long.parseLong(d.getDictValue()),d.getDictLabel());
+        }
+
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("task_event_type");
+        list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<Long,String> taskeventtype = new HashMap<>();
+        for (SysDictData d:list1
+        ) {
+            taskeventtype.put(Long.parseLong(d.getDictValue()),d.getDictLabel());
+        }
+
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("task_event_category");
+        list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<Long,String> taskeventcategory = new HashMap<>();
+        for (SysDictData d:list1
+        ) {
+            taskeventcategory.put(Long.parseLong(d.getDictValue()),d.getDictLabel());
+        }
+
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("task_work");
+        list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<Long,SysDictData> taskworkmap = new HashMap<>();
+        for (SysDictData d:list1
+        ) {
+            if(d.getRemark()!=null && !d.getRemark().equals("")){
+                if(d.getRemark().contains("(")){
+                    d.setRemark("\r"+d.getRemark()+"");
+                }else{
+                    d.setRemark("\r("+d.getRemark()+")");
+                }
+            }
+            taskworkmap.put(Long.parseLong(d.getDictValue()),d);
+        }
+
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("task_car");
+        list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<Long,SysDictData> taskcarmap = new HashMap<>();
+        for (SysDictData d:list1
+        ) {
+
+            if(d.getRemark()!=null && !d.getRemark().equals("")){
+                if(d.getRemark().contains("(")){
+                    d.setRemark("\r"+d.getRemark()+"");
+                }else{
+                    d.setRemark("\r("+d.getRemark()+")");
+                }
+            }
+            taskcarmap.put(Long.parseLong(d.getDictValue()),d);
+        }
+
+        sysDictData = new SysDictData();
+        sysDictData.setDictType("task_consumables");
+        list1 = sysDictDataService.selectDictDataList(sysDictData);
+        Map<Long,SysDictData> taskconsumablesmap = new HashMap<>();
+        for (SysDictData d:list1
+        ) {
+
+            if(d.getRemark()!=null && !d.getRemark().equals("")){
+                if(d.getRemark().contains("(")){
+                    d.setRemark("\r"+d.getRemark()+"");
+                }else{
+                    d.setRemark("\r("+d.getRemark()+")");
+                }
+            }
+            taskconsumablesmap.put(Long.parseLong(d.getDictValue()),d);
+        }
+
+        List<SysUser> users = userService.selectUserList(new SysUser());
+        Map<Long,SysUser> usermap = new HashMap<>();
+        for (SysUser d:users
+        ) {
+            usermap.put(d.getUserId(),d);
+        }
+
+        List<SysDept> depts = deptService.selectDeptList(new SysDept());
+        Map<Long,SysDept> deptmap = new HashMap<>();
+        for (SysDept d:depts
+        ) {
+            deptmap.put(d.getDeptId(),d);
+        }
+        //过滤相同的log状态
+
+        int index = 0;
+        for (TblTask tt :tasks
+        ) {
+            Map<Long,TblTaskLog> logs = new HashMap<>();
+            Map<Long,TblTaskLog> logs1 = new HashMap<>();
+            for (TblTaskLog l:tt.getTblTaskLogList()
+            ) {
+                if(logs.get(l.getTaskStatus())!=null){
+                    TblTaskLog log = logs.get(l.getTaskStatus());
+                    if(log.getCreateTime().getTime()<l.getCreateTime().getTime()) {
+                        logs.put(l.getTaskStatus(), l);
+                    }
+                }else{
+                    logs.put(l.getTaskStatus(),l);
+                }
+                if(logs.get(l.getTaskStatus())!=null){
+                    TblTaskLog log = logs.get(l.getTaskStatus());
+                    if(log.getCreateTime().getTime()>l.getCreateTime().getTime()) {
+                        logs1.put(l.getTaskStatus(), l);
+                    }
+                }else{
+                    logs1.put(l.getTaskStatus(),l);
+                }
+            }
+            List<TblTaskLog> loglist = new ArrayList<>();
+            loglist.addAll(logs.values());
+
+            List<TblTaskLog> loglist1 = new ArrayList<>();
+            loglist1.addAll(logs1.values());
+            tt.setTblTaskLogList(loglist);
+            tt.setLastTblTaskLogList(loglist1);
+
+
+            String commjs = "function run(){"+ "var allusers="+JSON.toJSONString(users)+";";
+            commjs+="var alldept = "+JSON.toJSONString(depts)+";";
+            commjs+="var taskinfo = "+JSON.toJSONString(tt)+";";
+
+
+
+
+
+            String datap ="处理方法:";
+
+            Map<String,Object> data = new HashMap<>();
+            String ly =  (tt.getTaskType()==null?"-": typemap.get(tt.getTaskType()));
+            String dq =  (tt.getTaskArea()==null?"-": areamap.get(Long.parseLong(tt.getTaskArea())));
+            String bh =  (tt.getTaskEventType()==null?"-": taskeventtype.get((tt.getTaskEventType())));
+            String fl =  (tt.getTaskEventCategory()==null?"-": taskeventcategory.get((tt.getTaskEventCategory())));
+            String zt =  (tt.getStatus()==null?"-": taskstatus.get((tt.getStatus())));
+
+            TblTaskLog jl = logs.get(-1L);
+            TblTaskLog jl1 = logs.get(2L);
+            TblTaskLog hf = logs.get(5L);
+            TblTaskLog qs = logs.get(3L);
+            Object pd = new Object();
+            if(jl!=null){
+                pd =   JSON.parseObject(jl.getLogDes());
+            }else{
+                pd =  JSON.parseObject("{\"gls\": \"\", \"clsc\": \"\", \"zyrs\": \"\", \"zysc\": \"\", \"carxh\": \"\", \"zyfzr\": \"\", \"bzxytime\": \"\", \"czwctime\": \"\", \"ddxctime\": \"\", \"carnumber\": \"\"}");
+            }
+
+            Map<String,String> mbh = new HashMap<>();
+            if(bh!=null){
+                if(dq.contains("箅子")){
+                    mbh.put("1",bh);
+                }else if(dq.contains("井盖")||dq.contains("管线")){
+                    mbh.put("2",bh);
+                }else{
+                    mbh.put("3",bh);
+                }
+            }
+
+
+            data.put("index",++index);
+            data.put("ly",ly);
+            data.put("dq",dq);
+            data.put("bh",mbh);
+            data.put("pd",pd);
+            data.put("fl",fl);
+            data.put("zt",zt);
+            data.put("pf",jl1);
+            data.put("hf",hf);
+            data.put("qs",qs);
+
+            String runjs = commjs+"return allusers.filter(function(i){ return (JSON.parse(taskinfo.tblTaskLogList.filter(function(ii){return ii.taskStatus ===-1})[0].logDes).zyfzr+'').indexOf(i.userId+'')!=-1 }).map(function(i){return i.nickName}).join(',') }";
+            Object fzr = JSUtils.runjs(runjs);
+            data.put("fzr",fzr);
+            runjs =commjs+"return alldept.filter(function(i){ return (JSON.parse(taskinfo.tblTaskLogList.filter(function(ii){return ii.taskStatus ===2})[0].logDes).fzbz+'').indexOf(i.deptId+'')!=-1 }).map(function(i){return i.deptName}).join(',') }";
+            Object bz = JSUtils.runjs(runjs);
+            data.put("bz",bz);
+            runjs = commjs+"return allusers.filter(function(i){ return (JSON.parse(taskinfo.tblTaskLogList.filter(function(ii){return ii.taskStatus ===-1})[0].logDes).zyfzr+'').indexOf(i.userId+'')!=-1 }).map(function(i){return i.dept.deptName}).join(',') }";
+            Object czbz = JSUtils.runjs(runjs);
+            data.put("czbz",czbz);
+
+            runjs = (commjs+"function arraytoobj(c){var o = {}; for(var i in c){var p = c[i];o[p.name]=p.value1;} return o;};    return  JSON.toJSONString(arraytoobj(eval(JSON.toJSONString(JSON.parse(taskinfo.tblTaskLogList.filter(function(ii){return ii.taskStatus ===3})[0].logDes).gzldata)))) }");
+            String gzldata = JSUtils.runjs(runjs).toString();
+            data.put("gzldata",JSON.parseObject(gzldata,Map.class));
+
+            runjs = (commjs+"function arraytoobj(c){var o = {}; for(var i in c){var p = c[i];o[p.name]=p.value1==''?'':(p.value1 +'*'+ p.value2);} return o;};    return  JSON.toJSONString(arraytoobj(eval(JSON.toJSONString(JSON.parse(taskinfo.tblTaskLogList.filter(function(ii){return ii.taskStatus ===3})[0].logDes).clsbdata)))) }");
+            String cldata = JSUtils.runjs(runjs).toString();
+            data.put("cldata",JSON.parseObject(cldata,Map.class));
+
+            runjs = (commjs+"function arraytoobj(c){var o = {}; for(var i in c){var p = c[i];o[p.name]=p.value1;} return o;};    return  JSON.toJSONString(arraytoobj(eval(JSON.toJSONString(JSON.parse(taskinfo.tblTaskLogList.filter(function(ii){return ii.taskStatus ===3})[0].logDes).hcdata)))) }");
+            String hcdata = JSUtils.runjs(runjs).toString();
+            data.put("hcdata",JSON.parseObject(hcdata,Map.class));
+
+            if(jl==null){
+                data.put("pdtime","");
+            }else{
+                data.put("pdtime",DateUtils.parseDateToStr("YYYY-MM-dd",jl.getCreateTime()));
+            }
+
+
+            tt.setParams(data);
+        }
+
+        HashMap<String,Object> alldata = new HashMap<>();
+        alldata.put("list",tasks);
+        alldata.put("worklist",taskworkmap.values());
+        alldata.put("cllist",taskcarmap.values());
+        alldata.put("hclist",taskconsumablesmap.values());
+        exportExcel("【热线调度】计划、跟进、成果上报","rxdd",alldata,response);
+    }
+
     /**
      * 获取工单任务详细信息
      */

+ 2 - 2
ruoyi-admin/src/main/resources/application-druid.yml

@@ -6,8 +6,8 @@ spring:
         druid:
             # 主库数据源
             master:
-#                url: jdbc:mysql://${DATABASE_HOST:localhost}:${DATABASE_PORT:3306}/nnbp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-                url: jdbc:mysql://${DATABASE_HOST:xt.wenhq.top}:${DATABASE_PORT:8583}/nnbp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://${DATABASE_HOST:localhost}:${DATABASE_PORT:3306}/nnbp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+#                url: jdbc:mysql://${DATABASE_HOST:xt.wenhq.top}:${DATABASE_PORT:8583}/nnbp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: ${DATABASE_USER:root}
                 password: ${DATABASE_PWD:root}
             # 从库数据源

BIN
ruoyi-admin/src/main/resources/rxdd.xlsx


BIN
ruoyi-admin/src/main/resources/ssjc.xlsx


BIN
ruoyi-admin/src/main/resources/ssyh.xlsx


+ 8 - 0
ruoyi-common/pom.xml

@@ -156,6 +156,14 @@
         </dependency>
 
 
+<!--        <dependency>-->
+<!--            <groupId>org.projectlombok</groupId>-->
+<!--            <artifactId>lombok</artifactId>-->
+<!--            <version>1.18.26</version>-->
+<!--            <scope>provided</scope>-->
+<!--        </dependency>-->
+
+
 
 
     </dependencies>

+ 4 - 0
ruoyi-system/pom.xml

@@ -22,6 +22,10 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-common</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
 
 
     </dependencies>

+ 4 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/TableDetection.java

@@ -1,5 +1,6 @@
 package com.ruoyi.system.domain;
 
+import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
@@ -13,6 +14,7 @@ import java.util.List;
  * @author ruoyi
  * @date 2022-06-15
  */
+@Data
 public class TableDetection extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
@@ -64,6 +66,8 @@ public class TableDetection extends BaseEntity
     @Excel(name = "扩展字段2")
     private String ext2;
 
+    private TblFacilities facilities;
+
     public List<TblDetectionLog> getDetectionLogs() {
         return detectionLogs;
     }

+ 6 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/TblFacilities.java

@@ -1,5 +1,7 @@
 package com.ruoyi.system.domain;
 
+import com.ruoyi.common.annotation.DataSource;
+import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
@@ -11,6 +13,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
  * @author ruoyi
  * @date 2022-05-25
  */
+@Data
 public class TblFacilities extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
@@ -55,6 +58,9 @@ public class TblFacilities extends BaseEntity
     private String exId1;
 
 
+
+
+
     public String getfLength() {
         return fLength;
     }

+ 4 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/TblMaintain.java

@@ -1,5 +1,6 @@
 package com.ruoyi.system.domain;
 
+import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
@@ -13,6 +14,7 @@ import java.util.List;
  * @author ruoyi
  * @date 2022-06-15
  */
+@Data
 public class TblMaintain extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
@@ -68,6 +70,8 @@ public class TblMaintain extends BaseEntity
     @Excel(name = "关联设施编号")
     private Long facilitiesId;
 
+    private TblFacilities facilities;
+
 
     public List<TblMaintainLog> getMaintainLogs() {
         return maintainLogs;

+ 12 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/TblTask.java

@@ -123,6 +123,18 @@ public class TblTask extends BaseEntity
     private List<TblTaskLog> tblTaskLogList;
 
 
+    public List<TblTaskLog> getLastTblTaskLogList() {
+        return lastTblTaskLogList;
+    }
+
+    public void setLastTblTaskLogList(List<TblTaskLog> lastTblTaskLogList) {
+        this.lastTblTaskLogList = lastTblTaskLogList;
+    }
+
+    private List<TblTaskLog> lastTblTaskLogList;
+
+
+
 
     public String getTaskArea() {
         return taskArea;