Commit 19895dc8da9a17be431997d62425775cbb6162db

Authored by youxiw2000
1 parent d664ddbb

m

Showing 38 changed files with 1228 additions and 204 deletions
trash-admin/src/main/resources/application-dev.yml
... ... @@ -17,8 +17,8 @@ trash:
17 17 # 验证码类型 math 数组计算 char 字符验证
18 18 captchaType: math
19 19 # 远程服务器地址
20   - #remotePath: https://175.6.47.84:8008
21   - #token: durable:auth:token:eyJhbGciOiJIUzUxMiJ9.eyJ5ZWEiOiJkdXJhYmxlIiwiZXhwIjo0MTAyNDE1OTk5LCJjcmVhdGVkIjoxNjg1NDE2NjEzMzU1fQ.58-J0KKfsK2pQhDQAzaBaUj-oFWMbYF1YzMAcshmcfidIkW16TZWIVhAVKPvCJvWfG54x7xB-ETxKCDLFnSctQ
  20 + # remotePath: http://175.6.47.84:8008
  21 + # token: durable:auth:token:eyJhbGciOiJIUzUxMiJ9.eyJ5ZWEiOiJkdXJhYmxlIiwiZXhwIjo0MTAyNDE1OTk5LCJjcmVhdGVkIjoxNjg1NDE2NjEzMzU1fQ.58-J0KKfsK2pQhDQAzaBaUj-oFWMbYF1YzMAcshmcfidIkW16TZWIVhAVKPvCJvWfG54x7xB-ETxKCDLFnSctQ
22 22 remotePath: http://183.66.242.6:14601
23 23 token: durable:auth:token:eyJhbGciOiJIUzUxMiJ9.eyJ5ZWEiOiJjc3poIiwiZXhwIjo0MTAyNDE1OTk5LCJjcmVhdGVkIjoxNjg0NDU5MjEzNzQ2fQ.85oIrOnU7cz7L_-IGt4Bt1LXDTkFtyrdqNt05K0v9-4nsrrzzpbjbemK-yMlbnUpe4Fx2FFES-Wbw8Yr8ML69w
24 24  
... ...
trash-admin/src/main/resources/application.yml
... ... @@ -8,7 +8,7 @@ logging:
8 8 spring:
9 9 #kafka配置
10 10 kafka:
11   - bootstrap-servers: 183.66.242.6:9101
  11 + bootstrap-servers: 183.66.242.6:14605
12 12 listener:
13 13 ack-mode: manual_immediate
14 14 missing-topics-fatal: false
... ...
trash-common/src/main/java/com/trash/common/utils/RemoteServerUtils.java
... ... @@ -1048,6 +1048,149 @@ public class RemoteServerUtils {
1048 1048 }
1049 1049 return null;
1050 1050 }
  1051 +
  1052 +
  1053 + public static boolean delayUpCase(Map map) {
  1054 + if (okHttpClient == null) {
  1055 + okHttpClient = new OkHttpClient.Builder().connectTimeout(20, TimeUnit.SECONDS)
  1056 + .writeTimeout(20, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).build();
  1057 + }
  1058 +
  1059 +
  1060 + String param = JSON.toJSON(map).toString();
  1061 +
  1062 + RequestBody body = RequestBody.create(MediaType.parse("application/json"), param);
  1063 +
  1064 + Request request = new Request.Builder().url(upUrl + "/api/thirdApi/push/delayApply")
  1065 + .addHeader("Authorization", getUpUser()).post(body).build();
  1066 +
  1067 + try {
  1068 + okhttp3.Response response = okHttpClient.newCall(request).execute();
  1069 + String result = response.body().string();
  1070 +
  1071 + if (result != null) {
  1072 + JSONObject json = JSON.parseObject(result);
  1073 + if (json.getBoolean("success")) {
  1074 + return json.getBoolean("success");
  1075 + }
  1076 + } else {
  1077 + return false;
  1078 + }
  1079 +
  1080 + } catch (Exception e) {
  1081 + e.printStackTrace();
  1082 + return false;
  1083 + }
  1084 + return false;
  1085 + }
  1086 +
  1087 +
  1088 + public static boolean deleteUpCase(Map map) {
  1089 + if (okHttpClient == null) {
  1090 + okHttpClient = new OkHttpClient.Builder().connectTimeout(20, TimeUnit.SECONDS)
  1091 + .writeTimeout(20, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).build();
  1092 + }
  1093 +
  1094 +
  1095 + String param = JSON.toJSON(map).toString();
  1096 +
  1097 + RequestBody body = RequestBody.create(MediaType.parse("application/json"), param);
  1098 +
  1099 + Request request = new Request.Builder().url(upUrl + "/api/thirdApi/push/rollbackApply")
  1100 + .addHeader("Authorization", getUpUser()).post(body).build();
  1101 +
  1102 + try {
  1103 + okhttp3.Response response = okHttpClient.newCall(request).execute();
  1104 + String result = response.body().string();
  1105 +
  1106 + if (result != null) {
  1107 + JSONObject json = JSON.parseObject(result);
  1108 + if (json.getBoolean("success")) {
  1109 + return json.getBoolean("success");
  1110 + }
  1111 + } else {
  1112 + return false;
  1113 + }
  1114 +
  1115 + } catch (Exception e) {
  1116 + e.printStackTrace();
  1117 + return false;
  1118 + }
  1119 + return false;
  1120 + }
  1121 +
  1122 +
  1123 +
  1124 + public static JSONArray getUpCaseResult() {
  1125 + if (okHttpClient == null) {
  1126 + okHttpClient = new OkHttpClient.Builder().connectTimeout(20, TimeUnit.SECONDS)
  1127 + .writeTimeout(20, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).build();
  1128 + }
  1129 +
  1130 + Map map = new HashMap<>();
  1131 +
  1132 + String param = JSON.toJSON(map).toString();
  1133 +
  1134 + RequestBody body = RequestBody.create(MediaType.parse("application/json"), param);
  1135 +
  1136 + Request request = new Request.Builder().url(upUrl + "/api/thirdApi/query/handleResultList")
  1137 + .addHeader("Authorization", getUpUser()).post(body).build();
  1138 +
  1139 + try {
  1140 + okhttp3.Response response = okHttpClient.newCall(request).execute();
  1141 + String result = response.body().string();
  1142 +
  1143 + if (result != null) {
  1144 + JSONObject json = JSON.parseObject(result);
  1145 + if (json.getBoolean("success")) {
  1146 + return json.getJSONArray("data");
  1147 + }
  1148 + } else {
  1149 + return null;
  1150 + }
  1151 +
  1152 + } catch (Exception e) {
  1153 + e.printStackTrace();
  1154 + return null;
  1155 + }
  1156 + return null;
  1157 +}
  1158 +
  1159 + public static JSONArray getUpCaseState(String url) {
  1160 + if (okHttpClient == null) {
  1161 + okHttpClient = new OkHttpClient.Builder().connectTimeout(20, TimeUnit.SECONDS)
  1162 + .writeTimeout(20, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).build();
  1163 + }
  1164 +
  1165 + Map map = new HashMap<>();
  1166 +
  1167 + String param = JSON.toJSON(map).toString();
  1168 +
  1169 + RequestBody body = RequestBody.create(MediaType.parse("application/json"), param);
  1170 +
  1171 + Request request = new Request.Builder().url(upUrl + url)
  1172 + .addHeader("Authorization", getUpUser()).post(body).build();
  1173 +
  1174 + try {
  1175 + okhttp3.Response response = okHttpClient.newCall(request).execute();
  1176 + String result = response.body().string();
  1177 +
  1178 + if (result != null) {
  1179 + JSONObject json = JSON.parseObject(result);
  1180 + if (json.getBoolean("success")) {
  1181 + return json.getJSONArray("data");
  1182 + }
  1183 + } else {
  1184 + return null;
  1185 + }
  1186 +
  1187 + } catch (Exception e) {
  1188 + e.printStackTrace();
  1189 + return null;
  1190 + }
  1191 + return null;
  1192 + }
  1193 +
1051 1194  
1052 1195 public static JSONArray getCaseList() {
1053 1196 if (okHttpClient == null) {
... ... @@ -1089,4 +1232,6 @@ public class RemoteServerUtils {
1089 1232 return get(GETAUTH, null, token.replace("Bearer ", ""));
1090 1233 }
1091 1234  
  1235 +
  1236 +
1092 1237 }
... ...
trash-framework/src/main/java/com/trash/framework/web/service/SysLoginService.java
... ... @@ -204,6 +204,8 @@ public class SysLoginService
204 204  
205 205  
206 206 JSONArray compnayList = redisCache.getCacheObject("companyList");
  207 +
  208 +
207 209 for(Object obj:compnayList){
208 210 JSONObject con = (JSONObject) obj;
209 211  
... ...
trash-quartz/src/main/java/com/trash/quartz/task/DriverTask.java
... ... @@ -12,8 +12,11 @@ import java.util.Date;
12 12 import java.util.HashMap;
13 13 import java.util.List;
14 14 import java.util.Map;
  15 +import java.util.concurrent.TimeUnit;
15 16 import java.util.stream.Collectors;
16 17  
  18 +import javax.swing.Spring;
  19 +
17 20 import org.springframework.beans.BeansException;
18 21 import org.springframework.beans.factory.annotation.Autowired;
19 22 import org.springframework.stereotype.Component;
... ... @@ -22,6 +25,7 @@ import org.springframework.web.multipart.MultipartFile;
22 25 import com.alibaba.fastjson.JSONArray;
23 26 import com.alibaba.fastjson.JSONObject;
24 27 import com.google.gson.Gson;
  28 +import com.google.gson.JsonObject;
25 29 import com.google.gson.reflect.TypeToken;
26 30 import com.trash.activiti.service.IActTaskService;
27 31 import com.trash.business.domain.CompanyCredit;
... ... @@ -38,15 +42,18 @@ import com.trash.business.service.ITruckCreditService;
38 42 import com.trash.caseOffline.domain.CaseOffline;
39 43 import com.trash.caseOffline.mapper.CaseOfflineMapper;
40 44 import com.trash.casefile.domain.KafkaCompensation;
  45 +import com.trash.casefile.domain.ReplyApprovalProcess;
41 46 import com.trash.casefile.domain.ViolationCaseFile;
42 47 import com.trash.casefile.kafka.Consumer;
43 48 import com.trash.casefile.mapper.KafkaCompensationMapper;
  49 +import com.trash.casefile.mapper.ReplyApprovalProcessMapper;
44 50 import com.trash.casefile.mapper.ViolationCaseFileMapper;
45 51 import com.trash.casefile.service.IViolationCaseFileService;
46 52 import com.trash.common.config.trashConfig;
47 53 import com.trash.common.core.redis.RedisCache;
48 54 import com.trash.common.utils.LogUtils;
49 55 import com.trash.common.utils.RemoteServerUtils;
  56 +import com.trash.common.utils.SecurityUtils;
50 57 import com.trash.common.utils.file.FileUploadUtils;
51 58 import com.trash.common.utils.spring.SpringUtils;
52 59 import com.trash.office.domain.LogisticsManagement;
... ... @@ -74,20 +81,13 @@ public class DriverTask {
74 81 private RedisCache redisCache;
75 82  
76 83 public void getUpCase(){
77   -
78   -
79 84 JSONArray array = RemoteServerUtils.getCaseList();
80   -
81 85 Map map = new HashMap<>();
82 86 List<String> ids = new ArrayList<String>();
83 87  
84   -
85 88 if(array != null && array.size() > 0){
86 89 for(Object object:array){
87 90 JSONObject json = (JSONObject) object;
88   -
89   -
90   -
91 91 try {
92 92 ViolationCaseFile caseFile = new ViolationCaseFile(json);
93 93  
... ... @@ -107,18 +107,6 @@ public class DriverTask {
107 107  
108 108 SpringUtils.getBean(ViolationCaseFileMapper.class).insertViolationCaseFile(caseFile);
109 109  
110   - int i = 0;
111   - //根据发送对象判断流程
112   - if(caseFile.getSendObject().equals("区管理部门")){
113   -
114   - if(caseFile.getViolationGrade().equals("一般类")){
115   - i = 1;
116   - }else{
117   - i = 2;
118   - }
119   - }
120   -
121   - SpringUtils.getBean(IWorkflowService.class).createCaseFileByTask(caseFile,i);
122 110  
123 111 ids.add(caseFile.getId());
124 112  
... ... @@ -131,13 +119,118 @@ public class DriverTask {
131 119  
132 120 map.put("taskIds", ids);
133 121 map.put("taskType", "Q2");
134   -
135 122 RemoteServerUtils.updateUpCase(map);
  123 + }
  124 +
  125 +
  126 +
  127 + }
  128 +
  129 + public void getUpCaseState(){
  130 +
  131 +
  132 +
  133 + getCaseStateIntoDB("/api/thirdApi/query/urgeList","urgeUser","urgeDesc","urgeTime","Q5");
  134 +
  135 + getCaseStateIntoDB("/api/thirdApi/query/superviseList","supUser","supDesc","supTime","Q4");
  136 +
  137 +
  138 + JSONArray array = RemoteServerUtils.getUpCaseResult();
  139 + Map map = new HashMap<>();
  140 + List<String> ids = new ArrayList<String>();
  141 +
  142 + if(array != null && array.size() > 0){
  143 + for(Object object:array){
  144 + JSONObject json = (JSONObject) object;
  145 +
  146 + ViolationCaseFile casefile = SpringUtils.getBean(ViolationCaseFileMapper.class).selectViolationCaseFileById(json.getString("thirdCaseId"));
  147 +
  148 + if(casefile == null){
  149 + continue;
  150 + }else{
  151 +
  152 + Date d = new Date(json.getString("reportTime"));
  153 +
  154 + ids.add(json.getString("acceptId"));
  155 +
  156 + ReplyApprovalProcess rap = new ReplyApprovalProcess();
  157 + rap.setTableName("workflow_casefile:"+json.getString("thirdCaseId"));
  158 + rap.setReplyPeople("综管服");
  159 + rap.setReply(json.getString("replyContent"));
  160 + rap.setReplyTime(new Date(json.getString("handleTime")));
  161 +
  162 + JSONArray images = json.getJSONArray("attchList");
  163 + String path = "";
  164 + try{
  165 + for(Object obj:images){
  166 + JSONObject img = (JSONObject) obj;
  167 + path += img.getString("attchFilePath") + ",";
  168 + }
  169 + }catch(Exception e){
  170 + e.printStackTrace();
  171 + }
  172 + rap.setReplyImg(path.substring(0, path.length()-1));
  173 + }
  174 + }
  175 +
136 176  
  177 + map.put("taskIds", ids);
  178 + map.put("taskType", "Q1");
  179 + RemoteServerUtils.updateUpCase(map);
137 180 }
138 181  
  182 +
139 183  
  184 + }
  185 +
  186 + private void getCaseStateIntoDB(String url,String arg0,String arg1,String arg2,String type) {
  187 + try{
140 188  
  189 + JSONArray array = RemoteServerUtils.getUpCaseState(url);
  190 + Map map = new HashMap<>();
  191 + List<String> ids = new ArrayList<String>();
  192 +
  193 + if(array != null && array.size() > 0){
  194 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  195 + for(Object object:array){
  196 + JSONObject json = (JSONObject) object;
  197 +
  198 + ViolationCaseFile caseFile = new ViolationCaseFile();
  199 +
  200 + caseFile.setNumber(json.getString("evtId"));
  201 +
  202 + List<ViolationCaseFile> list = SpringUtils.getBean(ViolationCaseFileMapper.class).selectViolationCaseFileList(caseFile);
  203 +
  204 + if(list.size() == 0){
  205 + continue;
  206 + }
  207 +
  208 + ReplyApprovalProcess rap = new ReplyApprovalProcess();
  209 + rap.setTableName("workflow_casefile:"+list.get(0).getId());
  210 + rap.setReplyPeople(json.getString(arg0));
  211 + rap.setReply(json.getString(arg1));
  212 + try {
  213 + rap.setReplyTime(sdf.parse(json.getString(arg2)));
  214 + } catch (ParseException e) {
  215 +
  216 + rap.setReplyTime(new Date());
  217 +
  218 + e.printStackTrace();
  219 + }
  220 +
  221 + SpringUtils.getBean(ReplyApprovalProcessMapper.class).insertReplyApprovalProcess(rap);
  222 +
  223 + ids.add(json.getString("taskId"));
  224 + }
  225 +
  226 + map.put("taskIds", ids);
  227 + map.put("taskType", type);
  228 + RemoteServerUtils.updateUpCase(map);
  229 + }
  230 +
  231 + }catch(Exception e){
  232 + e.printStackTrace();
  233 + }
141 234 }
142 235  
143 236  
... ... @@ -408,18 +501,28 @@ public class DriverTask {
408 501 d.setMinutes(59);
409 502 d.setSeconds(59);
410 503  
411   - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
412 504 try{
413 505 list = list.parallelStream().filter(p->{
414   - if(p.getString("createAt") == null)
415   - return false;
416   - try {
417   - return d.getTime() < simpleDateFormat.parse(p.getString("createAt")).getTime();
418   - } catch (ParseException e) {
419   - // TODO Auto-generated catch block
  506 +
  507 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  508 + String editTime = p.getString("editedAt");
  509 + String createdTime = p.getString("createdAt");
  510 + long newTime = 0;
  511 + try{
  512 + if(editTime == null){
  513 + if(createdTime == null){
  514 + return false;
  515 + }else{
  516 + newTime = simpleDateFormat.parse(p.getString("createdAt")).getTime();
  517 + }
  518 + }else{
  519 + newTime = simpleDateFormat.parse(p.getString("editedAt")).getTime();
  520 + }
  521 + }catch(Exception e){
420 522 e.printStackTrace();
421 523 }
422   - return false;
  524 + return d.getTime() < newTime;
  525 +
423 526 }).collect(Collectors.toList());
424 527 }catch(Exception e){
425 528 e.printStackTrace();
... ... @@ -701,7 +804,9 @@ public class DriverTask {
701 804 map.put("size", 99999);
702 805 map.put("page", 1);
703 806 JSONArray jsonArray = RemoteServerUtils.getCompanyList(map, trashConfig.getToken());
704   - redisCache.setCacheObject("companyList", jsonArray);
  807 + if(jsonArray != null){
  808 + redisCache.setCacheObject("companyList", jsonArray,60,TimeUnit.MINUTES);
  809 + }
705 810 }
706 811  
707 812 public void getContractList() {
... ... @@ -714,7 +819,9 @@ public class DriverTask {
714 819 map.put("contractStatus", 1);
715 820 map.put("auditStatus", 1);
716 821 JSONArray jsonArray = RemoteServerUtils.getContractList(map, trashConfig.getToken());
717   - redisCache.setCacheObject("contractList", jsonArray);
  822 + if(jsonArray != null){
  823 + redisCache.setCacheObject("contractList", jsonArray,60,TimeUnit.MINUTES);
  824 + }
718 825 }
719 826  
720 827 /**
... ... @@ -728,7 +835,9 @@ public class DriverTask {
728 835 map.put("size", 99999);
729 836 map.put("page", 1);
730 837 JSONArray jsonArray = RemoteServerUtils.getConstructionList(map, trashConfig.getToken());
731   - redisCache.setCacheObject("constructionList", jsonArray);
  838 + if(jsonArray != null){
  839 + redisCache.setCacheObject("constructionList", jsonArray,60,TimeUnit.MINUTES);
  840 + }
732 841 }
733 842  
734 843 /**
... ... @@ -742,7 +851,9 @@ public class DriverTask {
742 851 map.put("size", 99999);
743 852 map.put("page", 1);
744 853 JSONArray jsonArray = RemoteServerUtils.getEarthSitesList(map, trashConfig.getToken());
745   - redisCache.setCacheObject("earthSitesList", jsonArray);
  854 + if(jsonArray != null){
  855 + redisCache.setCacheObject("earthSitesList", jsonArray,60,TimeUnit.MINUTES);
  856 + }
746 857 }
747 858  
748 859 /**
... ... @@ -758,7 +869,9 @@ public class DriverTask {
758 869 map.put("page", 1);
759 870  
760 871 JSONArray jsonArray = RemoteServerUtils.getTruckList(map, trashConfig.getToken());
761   - redisCache.setCacheObject("truckList", jsonArray);
  872 + if(jsonArray != null){
  873 + redisCache.setCacheObject("truckList", jsonArray,60,TimeUnit.MINUTES);
  874 + }
762 875 }
763 876  
764 877 /**
... ... @@ -772,6 +885,8 @@ public class DriverTask {
772 885 map.put("size", 99999);
773 886 map.put("page", 1);
774 887 JSONArray jsonArray = RemoteServerUtils.getAreas(trashConfig.getToken());
775   - redisCache.setCacheObject("areaList", jsonArray);
  888 + if(jsonArray != null){
  889 + redisCache.setCacheObject("areaList", jsonArray,60,TimeUnit.MINUTES);
  890 + }
776 891 }
777 892 }
... ...
trash-ui/dist.7z 0 → 100644
No preview for this file type
trash-ui/dist.zip deleted 100644 → 0
No preview for this file type
trash-ui/package.json
... ... @@ -45,7 +45,7 @@
45 45 "axios": "0.18.1",
46 46 "clipboard": "2.0.4",
47 47 "core-js": "^3.30.0",
48   - "echarts": "4.2.1",
  48 + "echarts": "^4.2.1",
49 49 "element-ui": "2.13.2",
50 50 "file-saver": "2.0.1",
51 51 "fuse.js": "3.4.4",
... ...
trash-ui/src/api/casefile/violationCaseFile.js
... ... @@ -34,8 +34,23 @@ export function addViolationCaseFile(data) {
34 34 method: 'post',
35 35 data: data
36 36 })
37   -}
  37 +}
38 38  
  39 +export function deleteUpCase(data) {
  40 + return request({
  41 + url: '/casefile/violationCaseFile/deleteUpCase',
  42 + method: 'post',
  43 + data: data
  44 + })
  45 +}
  46 +
  47 +export function delayUpCase(data) {
  48 + return request({
  49 + url: '/casefile/violationCaseFile/delayUpCase',
  50 + method: 'post',
  51 + data: data
  52 + })
  53 +}
39 54 // 修改平台违规案卷
40 55 export function updateViolationCaseFile(data) {
41 56 return request({
... ...
trash-ui/src/api/casefile/violationWarningInformation.js
... ... @@ -16,7 +16,16 @@ export function caseTable(query) {
16 16 method: 'get',
17 17 params: query
18 18 })
19   -}
  19 +}
  20 +
  21 +export function getEVTable(query) {
  22 + return request({
  23 + url: '/casefile/violationWarningInformation/getEVTable',
  24 + method: 'get',
  25 + params: query
  26 + })
  27 +}
  28 +
20 29  
21 30 // 查询违规预警信息详细
22 31 export function getViolationWarningInformation(id) {
... ...
trash-ui/src/api/taskmethod.js
... ... @@ -474,7 +474,6 @@ export default {
474 474 }
475 475  
476 476 if (this.definitionKey == "workflow_casefile") {
477   - this.modalLoading = true;
478 477 let postData = {};
479 478  
480 479 postData.tableName = this.businessKey;
... ... @@ -488,11 +487,17 @@ export default {
488 487 }
489 488 }
490 489 if (this.taskName == "车辆所属企业" || this.taskName == "渣土办科员") {
491   - console.log(this.businessKey);
  490 + if(this.taskName == "渣土办科员" && (postData.replyImg == "" || !postData.replyImg || postData.replyImg == "undefined")){
  491 + this.$message("请上传处置附件!")
  492 + return;
  493 + }
492 494 let objId = this.businessKey.split(":")[1];
493 495 updateViolationCaseFileReader({id: objId}).then(res => {
494 496 })
495 497 }
  498 +
  499 + this.modalLoading = true;
  500 +
496 501 addReplyApprovalProcess(postData).then(res => {
497 502 this.videoSrc1 = [];
498 503 this.slides1 = [];
... ...
trash-ui/src/api/track.js
... ... @@ -292,22 +292,6 @@ export default {
292 292 this.single = selection.length !== 1
293 293 this.multiple = !selection.length
294 294 },
295   - /** 新增按钮操作 */
296   - handleAdd() {
297   - this.reset();
298   - this.open = true;
299   - this.title = "添加跟踪监督";
300   - },
301   - /** 修改按钮操作 */
302   - handleUpdate(row) {
303   - this.reset();
304   - const id = row.id || this.ids
305   - getTrack(id).then(response => {
306   - this.form = response.data;
307   - this.open = true;
308   - this.title = "修改跟踪监督";
309   - });
310   - },
311 295 /** 提交按钮 */
312 296 submitForm() {
313 297 this.$refs["form"].validate(valid => {
... ...
trash-ui/src/api/truck_active.js
... ... @@ -465,14 +465,23 @@ export default {
465 465  
466 466 /** 导出按钮操作 */
467 467 handleInfoExport() {
468   - const queryParams = this.queryParams;
  468 + if(this.queryParams.createTime){
  469 + this.queryParams.startTime = this.queryParams.createTime[0];
  470 + this.queryParams.endTime = this.queryParams.createTime[1];
  471 + }
  472 + const query = {};
  473 +
  474 + for(var i in this.queryParams){
  475 + query[i] = this.queryParams[i];
  476 + }
  477 + query.createTime = null;
469 478  
470 479 this.$confirm('是否确认导出所有车辆激活数据项?', "警告", {
471 480 confirmButtonText: "确定",
472 481 cancelButtonText: "取消",
473 482 type: "warning"
474 483 }).then(function() {
475   - return exportTruckInfoActivate(queryParams);
  484 + return exportTruckInfoActivate(query);
476 485 }).then(response => {
477 486 this.download(response.message);
478 487 })
... ...
trash-ui/src/api/vio_casefile.js
... ... @@ -4,7 +4,9 @@ import {
4 4 exportViolationCaseFile,
5 5 getViolationCaseFile,
6 6 listViolationCaseFile,
7   - updateViolationCaseFile
  7 + updateViolationCaseFile,
  8 + deleteUpCase,
  9 + delayUpCase,
8 10 } from "@/api/casefile/violationCaseFile";
9 11 import violationCaseFileInfo from "@/views/casefile/violationCaseFile/violationCaseFileInfo";
10 12  
... ... @@ -106,11 +108,10 @@ export default {
106 108 {code: 23, name: "闯禁行驶"},
107 109 {code: 24, name: "失信车辆作业"},
108 110 {code: 25, name: "卫星定位异常"},
109   - {code: 26, name: "其他2"},
  111 + {code: 26, name: "超速提醒"},
110 112 {code: 27, name: "其他3"},
111 113 {code: 28, name: "其他4"},
112 114 {code: 29, name: "其他5"}],
113   -
114 115 projectNameList: {},
115 116 isLoading: false,
116 117 fileEntityList: [],
... ... @@ -125,7 +126,11 @@ export default {
125 126 idInfo: null,
126 127 openInfo: false,
127 128 slide1: [],
128   - videoSrc: [],
  129 + videoSrc: [],
  130 + object:null,
  131 + funIdx:null,
  132 + delayDialog:false,
  133 + deleteDialog:false,
129 134 };
130 135 },
131 136 watch: {
... ... @@ -137,15 +142,23 @@ export default {
137 142 if (item.name.indexOf(".jpg") > -1 || item.name.indexOf(".png") > -1 || item.name.indexOf(".jpeg") > -1 || item.name.indexOf(".jpg") > -1) {
138 143 if (item.raw != null) {
139 144 this.slide1.push(URL.createObjectURL(item.raw));
140   - } else {
141   - this.slide1.push(process.env.VUE_APP_BASE_API + item.url);
  145 + } else {
  146 + if(item.url.startsWith("https:")){
  147 + this.slide1.push(item.url);
  148 + }else{
  149 + this.slide1.push(process.env.VUE_APP_BASE_API + item.url);
  150 + }
142 151 }
143 152 }
144 153 if (item.name.indexOf(".mp4") > -1 || item.name.indexOf(".avi") > -1) {
145 154 if (item.raw != null) {
146 155 this.videoSrc.push(URL.createObjectURL(item.raw));
147   - } else {
148   - this.videoSrc.push(process.env.VUE_APP_BASE_API + item.url);
  156 + } else {
  157 + if(item.url.startsWith("https:")){
  158 + this.videoSrc.push(item.url);
  159 + }else{
  160 + this.videoSrc.push(process.env.VUE_APP_BASE_API + item.url);
  161 + }
149 162 }
150 163 }
151 164 })
... ... @@ -209,16 +222,50 @@ export default {
209 222 this.getList();
210 223 },
211 224 methods: {
  225 + openFunction(obj,idx){
  226 + this.object = obj;
  227 + if(idx == 1){
  228 + this.deleteDialog = true;
  229 + this.reason = "综管回退"
  230 + }else if(idx == 2){
  231 + this.delayDialog = true;
  232 + this.reason = "延期处理"
  233 + }
  234 + },
  235 + deleteUpCase(){
  236 + debugger;
  237 + if(!this.form.describe){
  238 + this.$message("请填写理由!");
  239 + return;
  240 + }
  241 + this.object.describe = this.form.describe;
  242 + deleteUpCase(this.object).then(res=>{
  243 + this.deleteDialog = false;
  244 + this.getList();
  245 + });
  246 + },
  247 + delayUpCase(){
  248 + debugger;
  249 + if(!this.form.describe){
  250 + this.$message("请填写理由!");
  251 + return;
  252 + }
  253 + this.object.describe = this.form.describe;
  254 + this.object.timeType = this.form.timeType;
  255 + this.object.delayedTime = this.form.delayedTime;
  256 + delayUpCase(this.object).then(res=>{
  257 + this.delayDialog = false;
  258 + this.getList();
  259 + });
  260 + },
212 261 getRemoteDate(value){
213 262 this.remoteQueryData.name =value;
214 263 constructionsitesList(this.remoteQueryData).then(res => {
215 264 this.projectNameList["0"] = res.result.list;
216   -
217 265 this.$forceUpdate();
218 266 });
219 267 earthsitesList(this.remoteQueryData).then(res => {
220 268 this.projectNameList["1"] = res.result.list;
221   -
222 269 this.$forceUpdate();
223 270 });
224 271 },
... ...
trash-ui/src/api/vio_casefile_info.js
... ... @@ -66,11 +66,23 @@ export default {
66 66 let files = JSON.stringify(response.data.uploadFiles);
67 67 this.fileEntityList = JSON.parse(files.replaceAll("filePath", "url").replaceAll("fileName", "name"));
68 68 this.fileEntityList.map(item => {
  69 +
  70 +
69 71 if (item.name.indexOf(".jpg") > -1 || item.name.indexOf(".png") > -1 || item.name.indexOf(".jpeg") > -1) {
70   - this.slide1.push(process.env.VUE_APP_BASE_API + item.url);
  72 + if(item.url.startsWith("https:")){
  73 + this.slide1.push(item.url);
  74 + }else{
  75 + this.slide1.push(process.env.VUE_APP_BASE_API + item.url);
  76 + }
  77 +
  78 +
71 79 }
72 80 if (item.name.indexOf(".mp4") > -1 || item.name.indexOf(".avi") > -1) {
73   - this.videoSrc.push(process.env.VUE_APP_BASE_API + item.url);
  81 + if(item.url.startsWith("https:")){
  82 + this.videoSrc.push(item.url);
  83 + }else{
  84 + this.videoSrc.push(process.env.VUE_APP_BASE_API + item.url);
  85 + }
74 86 }
75 87 })
76 88  
... ...
trash-ui/src/api/warningInfo.js
... ... @@ -165,8 +165,12 @@ export default {
165 165 name: "失信车辆作业"
166 166 },
167 167 {
168   - code: 14,
  168 + code: 15,
169 169 name: "卫星定位异常"
  170 + },
  171 + {
  172 + code: 16,
  173 + name: "超速提醒"
170 174 }
171 175 ],
172 176 projectNameList: {},
... ...
trash-ui/src/layout/index3.vue renamed to trash-ui/src/layout/inde3x.vue
... ... @@ -4,7 +4,6 @@
4 4 <div :class="{ hasTagsView: false }" class="main-container">
5 5 <tags-view v-if="needTagsView" />
6 6 <app-main />
7   -
8 7 </div>
9 8 </div>
10 9 </template>
... ...
trash-ui/src/main.js
... ... @@ -42,8 +42,8 @@ Vue.use(plugins)
42 42 Vue.prototype.$aMapKey = "902732b0ff4758e4b39f0f34f0cb1cb0";// 高德地图key
43 43  
44 44  
45   -Vue.prototype.remoteFrame = "http://183.66.242.6:14601"
46   -// Vue.prototype.remoteFrame = "http://175.6.47.84:8008"
  45 +// Vue.prototype.remoteFrame = "http://183.66.242.6:14601"
  46 +Vue.prototype.remoteFrame = "http://175.6.47.84:8008"
47 47  
48 48 Vue.prototype.msgSuccess = function (msg) {
49 49 this.$message({ showClose: true, message: msg, type: "success" });
... ...
trash-ui/src/router/index.js
... ... @@ -274,6 +274,12 @@ export const constantRoutes = [
274 274 meta: { title: '违规预警信息统计表' }
275 275 },
276 276 {
  277 + path: 'casefile/EVTable',
  278 + component: (resolve) => require(['@/views/casefile/violationWarningInformation/EVTable'], resolve),
  279 + name: '电车预警统计',
  280 + meta: { title: '电车预警统计' }
  281 + },
  282 + {
277 283 path: 'casefile/violationCaseFile',
278 284 component: (resolve) => require(['@/views/casefile/violationCaseFile'], resolve),
279 285 name: '平台违规案卷',
... ...
trash-ui/src/views/business/track/index.vue
... ... @@ -2,9 +2,9 @@
2 2 <div class="app-container">
3 3  
4 4 <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect">
5   - <el-menu-item index="0" >工地</el-menu-item>
6   - <el-menu-item index="1">消纳场</el-menu-item>
7   - <el-menu-item index="2">企业</el-menu-item>
  5 + <el-menu-item index="0" >处置工地</el-menu-item>
  6 + <el-menu-item index="1">处理场所</el-menu-item>
  7 + <el-menu-item index="2">运输企业</el-menu-item>
8 8 <el-menu-item index="3">合同</el-menu-item>
9 9 <el-menu-item index="4">车辆</el-menu-item>
10 10 <el-menu-item index="5">后勤管理</el-menu-item>
... ... @@ -89,7 +89,7 @@
89 89 <el-table-column label="序号" align="center" type="index" />
90 90 <el-table-column label="督查事项" align="center" prop="title">
91 91 <template slot-scope="scope">
92   - <a @click="getInfo(scope.row.type,scope.row.objectId,scope.row.id,scope.row);">{{ (scope.row.title)}}</a>
  92 + <a @click="getInfo(scope.row.type,scope.row.objectId,scope.row.id,scope.row);" style="color: ;">{{ (scope.row.title)}}</a>
93 93 </template>
94 94 </el-table-column>
95 95 <el-table-column label="所属区域" align="center" prop="place" />
... ... @@ -156,16 +156,17 @@
156 156 </el-dialog>
157 157  
158 158 <el-dialog title="详情" :visible.sync="infoDialog" width="1500px" append-to-body :before-close="dialogClose">
  159 +
  160 + <div v-if="object" style="float:right;position: sticky;top:0px;right:0px;">
  161 + <el-button type="success" @click="update(0)" :disabled="object.status != -1 && object.status != 2 && object.status != 5">督察通过</el-button>
  162 + <el-button type="danger" @click="errorDialog = true;" :disabled="object.status != -1 && object.status != 2 && object.status != 5">督察异常</el-button>
  163 + </div>
159 164 <companyInfo :businessKey="objectId" :businessType="objectType" v-if="info0"/>
160 165 <logisticsInfo :idInfo="objectId" v-if="info1"/>
161 166 <caseOfflineInfo :businessKey="objectId" v-if="info2"/>
162 167 <violationCaseFileInfo :idInfo="objectId" v-if="info3" />
163 168  
164 169  
165   - <div slot="footer" class="dialog-footer" v-if="object">
166   - <el-button type="success" @click="update(0)" :disabled="object.status != -1 && object.status != 2 && object.status != 5">督察通过</el-button>
167   - <el-button type="danger" @click="errorDialog = true;" :disabled="object.status != -1 && object.status != 2 && object.status != 5">督察异常</el-button>
168   - </div>
169 170 </el-dialog>
170 171  
171 172 <el-dialog title="" :visible.sync="errorTableShow" width="800px" append-to-body v-if="formData && errorTableShow" >
... ...
trash-ui/src/views/casefile/violationCaseFile/index.vue
... ... @@ -33,11 +33,18 @@
33 33 </el-form-item>
34 34  
35 35 <el-form-item label="日期" prop="createTime">
36   - <el-date-picker size="small" v-model="queryParams.createTime" type="datetimerange"
  36 + <el-date-picker size="small"
  37 + v-model="queryParams.createTime" type="datetimerange"
37 38 start-placeholder="开始日期"
38 39 value-format="yyyy-MM-dd HH:mm:ss"
39 40 end-placeholder="结束日期">
40 41 </el-date-picker>
  42 + </el-form-item>
  43 + <el-form-item label="数据来源" prop="needUpload">
  44 + <el-select v-model="queryParams.needUpload" placeholder="数据来源" size="small">
  45 + <el-option label="平台数据" value="0" />
  46 + <el-option label="综管数据" value="1" />
  47 + </el-select>
41 48 </el-form-item>
42 49 <el-form-item>
43 50 <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
... ... @@ -96,13 +103,25 @@
96 103 </el-table-column>
97 104 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
98 105 <template slot-scope="scope">
99   -
  106 + <el-button
  107 + size="mini"
  108 + type="text"
  109 + icon="el-icon-view"
  110 + @click="openFunction(scope.row,1)"
  111 + v-if="!scope.row.status && scope.row.status!=0 && scope.row.needUpload == 1"
  112 + >综管数据回退</el-button>
  113 + <el-button
  114 + size="mini"
  115 + type="text"
  116 + icon="el-icon-view"
  117 + @click="openFunction(scope.row,2)"
  118 + v-if="!scope.row.status && scope.row.status!=1 && scope.row.needUpload == 1"
  119 + >延期处理</el-button>
100 120 <el-button
101 121 size="mini"
102 122 type="text"
103 123 icon="el-icon-view"
104 124 @click="handleUpdate(scope.row)"
105   - v-hasPermi="['casefile:violationCaseFile:edit']"
106 125 v-if="!scope.row.status && scope.row.status!=0 && scope.row.needUpload == 1"
107 126 >综管数据补填</el-button>
108 127  
... ... @@ -129,7 +148,30 @@
129 148 <!-- >删除</el-button>-->
130 149 </template>
131 150 </el-table-column>
132   - </el-table>
  151 + </el-table>
  152 +
  153 + <el-dialog title="回退" :visible.sync="deleteDialog" width="400px" append-to-body >
  154 + <el-input v-model="form.describe" type="textarea" placeholder="填写理由" :row="4"/>
  155 + <div slot="footer" class="dialog-footer">
  156 + <el-button @click="deleteUpCase();">确 认</el-button>
  157 + <el-button @click="deleteDialog = false;">取 消</el-button>
  158 + </div>
  159 + </el-dialog>
  160 +
  161 + <el-dialog title="延期" :visible.sync="delayDialog" width="400px" append-to-body >
  162 + <el-select v-model="form.timeType" placeholder="时间类型" size="small" style="width: 100%">
  163 + <el-option label="小时" value="0" />
  164 + <el-option label="工作日" value="1" />
  165 + <el-option label="紧急工作时" value="2" />
  166 + </el-select>
  167 + <el-input v-model="form.delayedTime" placeholder="时间" />
  168 + <el-input v-model="form.describe" type="textarea" placeholder="填写理由" :row="4"/>
  169 + <div slot="footer" class="dialog-footer">
  170 + <el-button @click="delayUpCase();">确 认</el-button>
  171 + <el-button @click="delayDialog = false;">取 消</el-button>
  172 + </div>
  173 + </el-dialog>
  174 +
133 175  
134 176 <pagination
135 177 v-show="total>0"
... ...
trash-ui/src/views/casefile/violationCaseFile/violationCaseTable.vue
... ... @@ -9,11 +9,11 @@
9 9 <el-form-item label="日期" prop="createTime">
10 10 <el-date-picker
11 11 v-model="createTime"
12   - type="datetimerange"
13   - :picker-options="pickerOptions"
14   - range-separator="至"
15   - start-placeholder="开始日期"
16   - end-placeholder="结束日期">
  12 + size="small"
  13 + type="datetimerange"
  14 + start-placeholder="开始日期"
  15 + value-format="yyyy-MM-dd HH:mm:ss"
  16 + end-placeholder="结束日期">
17 17 </el-date-picker>
18 18 </el-form-item>
19 19 <el-form-item>
... ... @@ -53,25 +53,6 @@ export default {
53 53 hackReset: false,
54 54 pickerMinDate: null,
55 55 pickerMaxDate: null,
56   - pickerOptions: {
57   - onPick: ({ maxDate, minDate }) => {
58   - if (minDate && this.pickerMinDate) {
59   - this.pickerMinDate = null;
60   - } else if (minDate) {
61   - this.pickerMinDate = minDate.getTime();
62   - }
63   - },
64   - disabledDate: (time) => {
65   - if (this.pickerMinDate) {
66   - const day1 = 30 * 24 * 3600 * 1000
67   - let maxTime = this.pickerMinDate + day1
68   - let minTime = this.pickerMinDate - day1
69   - return time.getTime() > maxTime || time.getTime()<minTime || time.getTime() > Date.now()
70   - } else {
71   - return time.getTime() > Date.now()
72   - }
73   - },
74   - },
75 56 }
76 57 },
77 58 created() {
... ... @@ -134,8 +115,8 @@ export default {
134 115 let startDate = null;
135 116 let endDate = null;
136 117 if(this.createTime.length!=0){
137   - startDate = this.formatDate(this.createTime[0]);
138   - endDate = this.formatDate(this.createTime[1]);
  118 + startDate = this.createTime[0];
  119 + endDate = this.createTime[1];
139 120 }
140 121 caseTable({owningRegion: this.owningRegion, startDate: startDate, endDate: endDate}).then(res => {
141 122 this.tableData = res.data;
... ... @@ -145,12 +126,6 @@ export default {
145 126 })
146 127 });
147 128 },
148   - formatDate(date) {
149   - const year = date.getFullYear();
150   - const month = String(date.getMonth() + 1).padStart(2, '0');
151   - const day = String(date.getDate()).padStart(2, '0');
152   - return `${year}-${month}-${day}`;
153   - }
154 129  
155 130 }
156 131 }
... ...
trash-ui/src/views/casefile/violationWarningInformation/EVTable.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 + <el-form ref="queryForm" :inline="true" label-width="105px">
  4 + <el-form-item label="周期" prop="violationObjectType">
  5 + <el-select v-model="params.violationObjectType">
  6 + <el-option value="周">周</el-option>
  7 + <el-option value="月">月</el-option>
  8 + <el-option value="季度">季度</el-option>
  9 + <el-option value="年">年</el-option>
  10 + </el-select>
  11 + </el-form-item>
  12 + <el-form-item>
  13 + <el-button type="cyan" icon="el-icon-search" size="mini" @click="init">搜索</el-button>
  14 + </el-form-item>
  15 + </el-form>
  16 +
  17 + <el-tabs v-model="activeName" @tab-click="changeActive()" style="width:50%;float: left;">
  18 + <el-tab-pane label="车" name="truck" style="width:50%;float: left;">
  19 + <el-tabs tab-position="left" @tab-click="refreshChart">
  20 + <el-tab-pane :label="item.name + '(违规' + item.count +'次)'" v-for="item in data.truck">
  21 +
  22 + </el-tab-pane>
  23 + </el-tabs>
  24 +
  25 +
  26 +<!-- <el-table :data="data.truck">
  27 + <el-table-column label="序号" align="center" type='index'/>
  28 + <el-table-column label="车号" header-align="center" align="center" property="name"></el-table-column>
  29 + <el-table-column property="count" label="违规次数" header-align="center" align="center"></el-table-column>
  30 + </el-table> -->
  31 +
  32 + </el-tab-pane>
  33 + <el-tab-pane label="企业" name="company" style="width:50%;float: left;">
  34 + <el-tabs tab-position="left" @tab-click="refreshChart">
  35 + <el-tab-pane :label="item.name + '(违规' + item.count +'次)'" v-for="item in data.company">
  36 +
  37 + </el-tab-pane>
  38 + </el-tabs>
  39 + </el-tab-pane>
  40 +
  41 +
  42 + <div style="width:400px;height:400px;float: left;" id="myECharts"></div>
  43 +
  44 + </el-tabs>
  45 + <el-row>
  46 + <div style="width:800px;height:400px;float: right;" id="yearChart"></div>
  47 + </el-row>
  48 + <el-row>
  49 + <div style="width:800px;height:400px;float: right;" id="monthChart"></div>
  50 + </el-row>
  51 +
  52 + </div>
  53 +</template>
  54 +
  55 +<script>
  56 +
  57 +import {getEVTable} from "@/api/casefile/violationWarningInformation";
  58 +import {getAreaList} from "@/api/casefile/remoteServer";
  59 +import * as echarts from "echarts";
  60 +
  61 +
  62 +export default {
  63 + name: "caseTable",
  64 + props: {},
  65 + data() {
  66 + return {
  67 + activeName:"truck",
  68 + params:{
  69 + violationObjectType:"周",
  70 + },
  71 + tableData: [],
  72 + owningRegion: "",
  73 + createTime: [],
  74 + areas: [],
  75 + hackReset:false,
  76 + pickerMinDate: null,
  77 + pickerMaxDate: null,
  78 + data:{}
  79 + }
  80 + },
  81 + mounted(){
  82 + this.init();
  83 + },
  84 + created() {
  85 +
  86 + },
  87 + methods: {
  88 + changeActive(comm){
  89 + let obj = {index:0};
  90 + this.refreshChart(obj);
  91 + },
  92 + createChart(){
  93 + let item = this.data["year"][0];
  94 + if(item){
  95 +
  96 +
  97 + let name = "";
  98 + let count = 0;
  99 + let keys = [];
  100 + let values = [];
  101 + for(let k in item){
  102 + if(k == "count"){
  103 + count = item[k];
  104 + continue;
  105 + }
  106 + if(k == "name"){
  107 + name = item[k];
  108 + continue;
  109 + }
  110 +
  111 + keys.push(k);
  112 + values.push(item[k]);
  113 + }
  114 +
  115 + let opt = {
  116 + title: {
  117 + text: "预警趋势",
  118 + left: "left",
  119 + },
  120 + tooltip: {
  121 + trigger: "axis"
  122 + },
  123 + xAxis: {
  124 +
  125 + type: 'category',
  126 +
  127 + data: keys
  128 +
  129 + },
  130 +
  131 + yAxis: {
  132 +
  133 + type: 'value'
  134 +
  135 + },
  136 + series: [
  137 + {
  138 + data:values,
  139 + type: "line",
  140 + smooth: true,
  141 + itemStyle: {
  142 + normal: {
  143 + label: {
  144 + show: true,
  145 + position: "top",
  146 + formatter: "{c}"
  147 + }
  148 + }
  149 + }
  150 + }
  151 + ]
  152 + };
  153 + let ychart = echarts.init(document.getElementById("yearChart"));
  154 + ychart.setOption(opt);
  155 + }
  156 +
  157 + let thisMonth = this.data["month"][0];
  158 + let lastMonth = this.data["month"][1];
  159 + if(thisMonth || lastMonth){
  160 +
  161 +
  162 + let keys = [];
  163 + let values = [];
  164 + let values1 = []
  165 +
  166 +
  167 +
  168 + for(let k in thisMonth){
  169 + if(k == "count"){
  170 + continue;
  171 + }
  172 + if(k == "name"){
  173 + continue;
  174 + }
  175 +
  176 + keys.push(k);
  177 + values.push(thisMonth[k]);
  178 + if(lastMonth[k]){
  179 + values1.push(lastMonth[k]);
  180 + }
  181 + }
  182 +
  183 + for(let k in lastMonth){
  184 + if(k == "count"){
  185 + continue;
  186 + }
  187 + if(k == "name"){
  188 + continue;
  189 + }
  190 +
  191 + if(keys.indexOf(k) == -1){
  192 + keys.push(k);
  193 + values.push(0);
  194 + values1.push(lastMonth[k]);
  195 + }
  196 + }
  197 +
  198 +
  199 +
  200 +
  201 + let opt2 = {
  202 + title: {
  203 + text: "同期环比",
  204 + left: "left",
  205 + },
  206 +
  207 + legend: {
  208 + data: ['上月', '本月']
  209 + },
  210 + tooltip: {
  211 + trigger: "axis"
  212 + },
  213 + xAxis: {
  214 + type: 'category',
  215 + data: keys
  216 + },
  217 + yAxis: {
  218 + type: 'value'
  219 + },
  220 + series: [
  221 + {
  222 + name: '上月',
  223 + type: 'line',
  224 + stack: 'Total',
  225 + data: values1
  226 + },{
  227 + name: '本月',
  228 + type: 'line',
  229 + stack: 'Total',
  230 + data: values
  231 + },
  232 + ]
  233 + };
  234 +
  235 +
  236 +
  237 + let mchart = echarts.init(document.getElementById("monthChart"));
  238 + mchart.setOption(opt2);
  239 + }
  240 + },
  241 + refreshChart(comm){
  242 +
  243 + let item = this.data[this.activeName][comm.index];
  244 + if(!item)
  245 + return;
  246 + let name = "";
  247 + let count = 0;
  248 + let params = [];
  249 + for(let k in item){
  250 + if(k == "count"){
  251 + count = item[k];
  252 + continue;
  253 + }
  254 + if(k == "name"){
  255 + name = item[k];
  256 + continue;
  257 + }
  258 + params.push({"value":item[k],"name":k + "(" + item[k]+")"});
  259 + }
  260 + let opt = {
  261 + title: {
  262 + text: name + "违规" + count + "次分布",
  263 + left: "center",
  264 + },
  265 + tooltip: {
  266 + trigger: "item"
  267 + },
  268 + series: [
  269 + {
  270 + data:params,
  271 + type: "pie",
  272 + radius: '50%'
  273 + }
  274 + ]
  275 + };
  276 + let chart = echarts.init(document.getElementById("myECharts"));
  277 + chart.setOption(opt);
  278 + },
  279 + init(){
  280 + getEVTable(this.params).then(res=>{
  281 + this.data = res.data;
  282 + let obj = {index:0};
  283 + this.refreshChart(obj);
  284 + this.createChart();
  285 + });
  286 + },
  287 + spanMethod({row, column, rowIndex, columnIndex}) {
  288 + if (columnIndex == 0) {
  289 + if (rowIndex == 0) {
  290 + return {rowspan: 300, colspan: 1}
  291 + } else {
  292 + return {rowspan: 0, colspan: 0}
  293 + }
  294 + }
  295 + },
  296 + getSummaries(param) {
  297 + const {columns, data} = param;
  298 + const sums = [];
  299 +
  300 + let allCount = 0;
  301 + let allRepCount = 0;
  302 + for (let i in data) {
  303 + allCount += Number(data[i].count==null?0:data[i].count);
  304 + allRepCount += Number(data[i].repCount==null?0:data[i].repCount);
  305 +
  306 + }
  307 +
  308 + columns.forEach((column, index) => {
  309 + if (index == 0 || index == 1) {
  310 + return;
  311 + }
  312 +
  313 + if (index == 2) {
  314 + sums[2] = allCount;
  315 + }
  316 +
  317 + if (index == 3) {
  318 + sums[3] = allRepCount;
  319 + }
  320 +
  321 + if (index == 4) {
  322 + if(allCount==0||allRepCount==0){
  323 + sums[4] = "0" + "%";
  324 + }else{
  325 + sums[4] = ((allRepCount / allCount) * 100).toFixed(2) + "%";
  326 + }
  327 +
  328 + }
  329 + })
  330 +
  331 + return sums;
  332 + },
  333 +
  334 + }
  335 +}
  336 +</script>
  337 +
  338 +<style scoped>
  339 +
  340 +</style>
... ...
trash-ui/src/views/casefile/violationWarningInformation/violationWarningInformationTable.vue
... ... @@ -8,12 +8,12 @@
8 8 </el-form-item>
9 9 <el-form-item label="日期" prop="createTime">
10 10 <el-date-picker
11   - v-model="createTime"
12   - type="datetimerange"
13   - :picker-options="pickerOptions"
14   - range-separator="至"
15   - start-placeholder="开始日期"
16   - end-placeholder="结束日期">
  11 + v-model="createTime"
  12 + size="small"
  13 + type="datetimerange"
  14 + start-placeholder="开始日期"
  15 + value-format="yyyy-MM-dd HH:mm:ss"
  16 + end-placeholder="结束日期">
17 17 </el-date-picker>
18 18 </el-form-item>
19 19 <el-form-item>
... ... @@ -52,25 +52,6 @@ export default {
52 52 hackReset:false,
53 53 pickerMinDate: null,
54 54 pickerMaxDate: null,
55   - pickerOptions: {
56   - onPick: ({ maxDate, minDate }) => {
57   - if (minDate && this.pickerMinDate) {
58   - this.pickerMinDate = null;
59   - } else if (minDate) {
60   - this.pickerMinDate = minDate.getTime();
61   - }
62   - },
63   - disabledDate: (time) => {
64   - if (this.pickerMinDate) {
65   - const day1 = 30 * 24 * 3600 * 1000
66   - let maxTime = this.pickerMinDate + day1
67   - let minTime = this.pickerMinDate - day1
68   - return time.getTime() > maxTime || time.getTime()<minTime || time.getTime() > Date.now()
69   - } else {
70   - return time.getTime() > Date.now()
71   - }
72   - },
73   - },
74 55 }
75 56 },
76 57 created() {
... ... @@ -133,8 +114,8 @@ export default {
133 114 let startDate = null;
134 115 let endDate = null;
135 116 if(this.createTime.length!=0){
136   - startDate = this.formatDate(this.createTime[0]);
137   - endDate = this.formatDate(this.createTime[1]);
  117 + startDate = this.createTime[0];
  118 + endDate = this.createTime[1];
138 119 }
139 120 caseTable({owningRegion:this.owningRegion,startDate:startDate,endDate:endDate}).then(res => {
140 121 this.tableData = res.data;
... ... @@ -144,12 +125,6 @@ export default {
144 125 })
145 126 });
146 127 },
147   - formatDate(date) {
148   - const year = date.getFullYear();
149   - const month = String(date.getMonth() + 1).padStart(2, '0');
150   - const day = String(date.getDate()).padStart(2, '0');
151   - return `${year}-${month}-${day}`;
152   - }
153 128  
154 129 }
155 130 }
... ...
trash-workFlow/src/main/java/com/trash/business/controller/TruckActivateController.java
... ... @@ -85,7 +85,16 @@ public class TruckActivateController extends BaseController
85 85 @Log(title = "车辆激活", businessType = BusinessType.EXPORT)
86 86 @GetMapping("/export")
87 87 public AjaxResult export(TruckActivate truckActivate)
88   - {
  88 + {
  89 +
  90 + if(truckActivate.getStatus() == 0){
  91 + truckActivate.setMyTables(new ArrayList<>());
  92 + truckActivate.getMyTables().add("truck_activate");
  93 + }else{
  94 + List<String> tables = truckActivateMapper.getTables("truck_activate%");
  95 + truckActivate.setMyTables(tables);
  96 + }
  97 +
89 98 List<TruckActivate> list = truckActivateService.selectTruckActivateList(truckActivate);
90 99  
91 100 for(int i = 0;i<list.size();i++){
... ...
trash-workFlow/src/main/java/com/trash/business/domain/TruckActivate.java
... ... @@ -57,10 +57,11 @@ public class TruckActivate
57 57 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
58 58 @Excel(name = "激活时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
59 59 private Date activateTime;
60   - /** 状态 0当前 1历史 */
61   - @Excel(name = "激活状态", readConverterExp = "1=未激活,0=已激活")
62   - private Long status;
63 60  
  61 + private Long status;
  62 +
  63 + /** 状态 0当前 1历史 */
  64 + @Excel(name = "激活状态")
64 65 private String isAct;
65 66  
66 67 private String startTime;
... ...
trash-workFlow/src/main/java/com/trash/business/service/impl/SupervisionThreestepServiceImpl.java
... ... @@ -166,12 +166,9 @@ public class SupervisionThreestepServiceImpl implements ISupervisionThreestepSer
166 166 supervisionThreestep.setIds(ids);
167 167  
168 168 if(ids.size() == 0){
169   -
170 169 return list;
171 170 }
172 171  
173   -
174   -
175 172 list = supervisionThreestepMapper.selectSupervisionThreestepList(supervisionThreestep);
176 173  
177 174 return list;
... ...
trash-workFlow/src/main/java/com/trash/casefile/controller/ViolationCaseFileController.java
... ... @@ -2,6 +2,7 @@ package com.trash.casefile.controller;
2 2  
3 3 import java.io.IOException;
4 4 import java.util.ArrayList;
  5 +import java.util.Date;
5 6 import java.util.HashMap;
6 7 import java.util.List;
7 8 import java.util.Map;
... ... @@ -12,6 +13,7 @@ import com.alibaba.fastjson.JSONObject;
12 13 import com.trash.casefile.domain.ViolationWarningInformation;
13 14 import com.trash.casefile.domain.vo.ViolationCaseFileVo;
14 15 import com.trash.casefile.domain.vo.ViolationWarningInformationVo;
  16 +import com.trash.casefile.mapper.ReplyApprovalProcessMapper;
15 17 import com.trash.office.domain.UploadFile;
16 18 import org.springframework.security.access.prepost.PreAuthorize;
17 19 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -22,6 +24,7 @@ import com.trash.common.core.controller.BaseController;
22 24 import com.trash.common.core.domain.AjaxResult;
23 25 import com.trash.common.enums.BusinessType;
24 26 import com.trash.caseOffline.domain.CaseOffline;
  27 +import com.trash.casefile.domain.ReplyApprovalProcess;
25 28 import com.trash.casefile.domain.ViolationCaseFile;
26 29 import com.trash.casefile.service.IViolationCaseFileService;
27 30 import com.trash.common.utils.DateUtils;
... ... @@ -44,6 +47,9 @@ import org.springframework.web.multipart.MultipartFile;
44 47 public class ViolationCaseFileController extends BaseController {
45 48 @Autowired
46 49 private IViolationCaseFileService violationCaseFileService;
  50 +
  51 + @Autowired
  52 + ReplyApprovalProcessMapper rapMapper;
47 53  
48 54  
49 55 /**
... ... @@ -79,6 +85,8 @@ public class ViolationCaseFileController extends BaseController {
79 85 return AjaxResult.success(violationCaseFileService.selectViolationCaseFileById(id));
80 86 }
81 87  
  88 +
  89 +
82 90 /**
83 91 * 新增平台违规案卷
84 92 */
... ... @@ -95,6 +103,51 @@ public class ViolationCaseFileController extends BaseController {
95 103 }
96 104 return toAjax(i);
97 105 }
  106 +
  107 + @PostMapping("/deleteUpCase")
  108 + public AjaxResult deleteUpCase(@RequestBody ViolationCaseFile violationCaseFile)
  109 + throws IOException {
  110 + int i = 0;
  111 +
  112 + Map map = new HashMap<>();
  113 +
  114 + map.put("taskId", violationCaseFile.getId());
  115 + map.put("evtId", violationCaseFile.getNumber());
  116 + map.put("reason", violationCaseFile.getDescribe());
  117 +
  118 + if(RemoteServerUtils.deleteUpCase(map)){
  119 + i = violationCaseFileService.deleteViolationCaseFileById(violationCaseFile.getId());
  120 + }
  121 +
  122 + return toAjax(i);
  123 + }
  124 +
  125 + @PostMapping("/delayUpCase")
  126 + public AjaxResult delayUpCase(@RequestBody ViolationCaseFile violationCaseFile)
  127 + throws IOException {
  128 + int i = 0;
  129 +
  130 + Map map = new HashMap<>();
  131 +
  132 + map.put("taskId", violationCaseFile.getId());
  133 + map.put("evtId", violationCaseFile.getNumber());
  134 + map.put("reason", violationCaseFile.getDescribe());
  135 + map.put("timeType", violationCaseFile.getTimeType());
  136 + map.put("delayedTime", violationCaseFile.getDelayedTime());
  137 +
  138 + if(RemoteServerUtils.delayUpCase(map)){
  139 + ReplyApprovalProcess rap = new ReplyApprovalProcess();
  140 + rap.setTableName("workflow_casefile:"+violationCaseFile.getId());
  141 + rap.setReplyPeople(SecurityUtils.getUsername());
  142 + rap.setReply("申请延期:" + violationCaseFile.getDescribe() + violationCaseFile.getDelayedTime() + violationCaseFile.getTimeType());
  143 + rap.setReplyTime(new Date());
  144 + i = rapMapper.insertReplyApprovalProcess(rap);
  145 + }
  146 +
  147 + return toAjax(i);
  148 + }
  149 +
  150 +
98 151  
99 152 /**
100 153 * 修改平台违规案卷
... ... @@ -136,7 +189,7 @@ public class ViolationCaseFileController extends BaseController {
136 189 "使用非专用车运输", "监控点位未对准", "工地预警-未报开工作业", "工地预警-视频设备离线超时报警", "工地预警-三无车辆进入工地", "工地预警-未按时间作业",
137 190 "处理场所预警-未报开工作业", "处理场所预警-视频设备离线超时报警", "处理场所预警-三无车辆进入处理场所","处理场所预警-未到指定的处理场所作业", "离线运输报警(工)", "离线运输报警(消)",
138 191 "未激活车辆作业", "未核准作业车辆作业", "未按线路行驶", "闯禁行驶", "失信车辆作业", "卫星定位异常",
139   - "其他2", "其他3", "其他4", "其他5" };
  192 + "超速提醒", "其他3", "其他4", "其他5" };
140 193  
141 194 @GetMapping(value = "/caseTable")
142 195 public AjaxResult getTable(String owningRegion, String startDate, String endDate,String violationObjectType) {
... ... @@ -146,11 +199,6 @@ public class ViolationCaseFileController extends BaseController {
146 199 owningRegion = "";
147 200 }
148 201  
149   - if (startDate != null && endDate != null && startDate != "" && endDate != "") {
150   - startDate = startDate.substring(0, 10);
151   - endDate = endDate.substring(0, 10);
152   - }
153   -
154 202 List<ViolationCaseFile> list = violationCaseFileService.selectViolationCaseFileListByTable(owningRegion,
155 203 startDate, endDate,violationObjectType);
156 204  
... ...
trash-workFlow/src/main/java/com/trash/casefile/controller/ViolationWarningInformationController.java
... ... @@ -135,10 +135,17 @@ public class ViolationWarningInformationController extends BaseController
135 135 }
136 136  
137 137  
  138 + @Log(title = "纯电动车统计管理")
  139 + @GetMapping("/getEVTable")
  140 + public AjaxResult getEVTable(ViolationWarningInformation violationWarningInformation)
  141 + {
  142 + return AjaxResult.success(violationWarningInformationService.getEVTable(violationWarningInformation));
  143 + }
  144 +
138 145 String[] caseType = {"工地预警-未报开工作业", "工地预警-视频设备离线超时报警", "工地预警-三无车辆进入工地", "工地预警-未按时间作业",
139 146 "处理场所预警-未报开工作业", "处理场所预警-视频设备离线超时报警", "处理场所预警-三无车辆进入处理场所", "处理场所预警-未到指定的处理场所作业",
140 147 "离线运输报警(工)", "离线运输报警(消)", "未激活车辆作业", "未核准作业车辆作业", "未按线路行驶",
141   - "闯禁行驶", "失信车辆作业", "卫星定位异常"};
  148 + "闯禁行驶", "失信车辆作业", "卫星定位异常","超速提醒"};
142 149  
143 150 @GetMapping(value = "/caseTable")
144 151 public AjaxResult getTable(String owningRegion,String startDate,String endDate,String violationObjectType){
... ... @@ -147,10 +154,6 @@ public class ViolationWarningInformationController extends BaseController
147 154 if(owningRegion == null || owningRegion.equals("长沙市")){
148 155 owningRegion = "";
149 156 }
150   - if(startDate != null && endDate != null&&startDate!=""&&endDate!=""){
151   - startDate = startDate.substring(0,10);
152   - endDate = endDate.substring(0,10);
153   - }
154 157 List<ViolationWarningInformation> list = violationWarningInformationService.selectViolationWarningInformationListByTable(owningRegion,startDate,endDate,violationObjectType);
155 158  
156 159 for(String type:caseType){
... ... @@ -196,7 +199,7 @@ public class ViolationWarningInformationController extends BaseController
196 199  
197 200 return AjaxResult.success(maps);
198 201 }
199   -
  202 +
200 203 /**
201 204 * 删除违规预警信息
202 205 */
... ...
trash-workFlow/src/main/java/com/trash/casefile/domain/ViolationCaseFile.java
... ... @@ -79,7 +79,6 @@ public class ViolationCaseFile extends BaseEntity
79 79 private Integer receiveStatus;
80 80  
81 81 /** 阅览人 */
82   - @Excel(name = "发送人")
83 82 private String readBy;
84 83  
85 84 /** 阅览时间 */
... ... @@ -97,7 +96,41 @@ public class ViolationCaseFile extends BaseEntity
97 96  
98 97 private String needUpload;
99 98  
100   - public ViolationCaseFile() {
  99 + private String timeType;
  100 +
  101 + private String delayedTime;
  102 +
  103 + @Excel(name = "发送人")
  104 + private String createBy;
  105 +
  106 +
  107 +
  108 +
  109 + public String getCreateBy() {
  110 + return createBy;
  111 + }
  112 +
  113 + public void setCreateBy(String createBy) {
  114 + this.createBy = createBy;
  115 + }
  116 +
  117 + public String getTimeType() {
  118 + return timeType;
  119 + }
  120 +
  121 + public void setTimeType(String timeType) {
  122 + this.timeType = timeType;
  123 + }
  124 +
  125 + public String getDelayedTime() {
  126 + return delayedTime;
  127 + }
  128 +
  129 + public void setDelayedTime(String delayedTime) {
  130 + this.delayedTime = delayedTime;
  131 + }
  132 +
  133 + public ViolationCaseFile() {
101 134 }
102 135  
103 136 public ViolationCaseFile(JSONObject json) {
... ... @@ -110,18 +143,17 @@ public class ViolationCaseFile extends BaseEntity
110 143 this.createTime = d;
111 144  
112 145 this.violationObjectType = "0";
113   -
114   - this.violationType = "工地预警-未按时间作业";
115 146 this.violationGrade = "一般类";
116 147 this.sendObject = "区管理部门";
  148 +// this.violationType = "工地预警-未按时间作业";
  149 +// this.owningRegion = json.getString("areaName");
117 150  
118 151  
119 152  
120 153 this.projectName = json.getString("caseClassName"); //
121 154  
122   - this.describe = "在"+json.getString("areaName")+"区域发现【"+json.getString("carNumber") +"】未按时间作业告警"; //json.getString("regCaseStandard");
  155 + this.describe = "在"+json.getString("areaName")+"区域发现【"+json.getString("carNumber") +"】" + json.getString("regCaseStandard");
123 156  
124   - this.owningRegion = "芙蓉区";
125 157  
126 158 this.needUpload = "1";
127 159  
... ...
trash-workFlow/src/main/java/com/trash/casefile/kafka/Consumer.java
... ... @@ -63,7 +63,7 @@ public class Consumer {
63 63 String[] code = {"44030020=工地预警-未报开工作业", "44030021=工地预警-视频设备离线超时报警", "44030022=工地预警-三无车辆进入工地", "44030023=工地预警-未按时间作业",
64 64 "44030024=处理场所预警-未报开工作业", "44030025=处理场所预警-视频设备离线超时报警", "44030026=处理场所预警-三无车辆进入处理场所", "44030027=处理场所预警-未到指定的处理场所作业",
65 65 "44030028=离线运输报警(工)", "44030029=离线运输报警(消)", "44030030=未激活车辆作业", "44030031=未核准作业车辆作业", "44030032=未按线路行驶",
66   - "44030033=闯禁行驶", "44030034=失信车辆作业", "44030035=卫星定位异常"};
  66 + "44030033=闯禁行驶", "44030034=失信车辆作业", "44030035=卫星定位异常", "44030036=超速提醒"};
67 67  
68 68  
69 69 JSONObject jsonObject = JSONObject.parseObject(data);
... ... @@ -82,9 +82,6 @@ public class Consumer {
82 82 tomorrowDate = DateFormatUtils.format(DateUtils.addDays(alarmTime, 1), "yyyy-MM-dd");
83 83 }
84 84  
85   -
86   -
87   -
88 85 //违规类型code
89 86 String violationTypeCode = jsonObject.getString("alarmType");
90 87 //违规类型
... ...
trash-workFlow/src/main/java/com/trash/casefile/mapper/ViolationWarningInformationMapper.java
... ... @@ -38,6 +38,10 @@ public interface ViolationWarningInformationMapper
38 38 */
39 39 List<ViolationWarningInformation> selectViolationWarningInformationList(ViolationWarningInformation violationWarningInformation);
40 40 List<ViolationWarningInformation> selectViolationWarningInformationListByTable(@Param("owningRegion") String owningRegion,@Param("startDate")String startDate,@Param("endDate")String endDate, @Param("violationObjectType")String violationObjectType);
  41 + List<ViolationWarningInformation> selectViolationWarningInformationListLessTime(ViolationWarningInformation violationWarningInformation);
  42 +
  43 +
  44 +
41 45 /**
42 46 * 新增违规预警信息
43 47 *
... ...
trash-workFlow/src/main/java/com/trash/casefile/service/IViolationWarningInformationService.java
... ... @@ -2,10 +2,13 @@ package com.trash.casefile.service;
2 2  
3 3 import java.io.IOException;
4 4 import java.util.List;
  5 +import java.util.Map;
5 6  
6 7 import com.trash.casefile.domain.ViolationCaseFile;
7 8 import com.trash.casefile.domain.ViolationWarningInformation;
8 9 import com.trash.casefile.domain.vo.ViolationWarningInformationVo;
  10 +import com.trash.common.core.domain.AjaxResult;
  11 +
9 12 import org.springframework.web.multipart.MultipartFile;
10 13  
11 14 /**
... ... @@ -67,4 +70,7 @@ public interface IViolationWarningInformationService {
67 70 int deleteViolationWarningInformationById(Long id);
68 71  
69 72 void updateViolationCaseFile(ViolationWarningInformation violationWarningInformation);
  73 +
  74 +
  75 + Map getEVTable(ViolationWarningInformation violationWarningInformation);
70 76 }
... ...
trash-workFlow/src/main/java/com/trash/casefile/service/impl/ViolationCaseFileServiceImpl.java
... ... @@ -79,7 +79,11 @@ public class ViolationCaseFileServiceImpl implements IViolationCaseFileService
79 79 @Override
80 80 public List<ViolationCaseFile> selectViolationCaseFileList(ViolationCaseFile violationCaseFile)
81 81 {
82   -
  82 +
  83 + if(violationCaseFile.getNeedUpload() != null && violationCaseFile.getNeedUpload().equals("1")){
  84 + return violationCaseFileMapper.selectViolationCaseFileList(violationCaseFile);
  85 + }
  86 +
83 87 List<ViolationCaseFile> list = new ArrayList<>();
84 88 JSONArray areas = redisCache.getCacheObject("areas");
85 89  
... ... @@ -141,7 +145,7 @@ public class ViolationCaseFileServiceImpl implements IViolationCaseFileService
141 145  
142 146 String cString = "工地预警-未报开工作业,工地预警-视频设备离线超时报警,工地预警-三无车辆进入工地,工地预警-未按时间作业,";
143 147 String eString = "处理场所预警-未报开工作业,处理场所预警-视频设备离线超时报警,处理场所预警-三无车辆进入处理场所,处理场所预警-未到指定的处理场所作业";
144   - String tString = "离线运输报警(工),离线运输报警(消),未激活车辆作业,未核准作业车辆作业,未按线路行驶,闯禁行驶,失信车辆作业,卫星定位异常";
  148 + String tString = "离线运输报警(工),离线运输报警(消),未激活车辆作业,未核准作业车辆作业,未按线路行驶,闯禁行驶,失信车辆作业,卫星定位异常,超速提醒";
145 149  
146 150 @Override
147 151 public List<ViolationCaseFile> selectViolationCaseFileListByTable(String owningRegion,String startDate,String endDate,String violationObjectType)
... ...
trash-workFlow/src/main/java/com/trash/casefile/service/impl/ViolationWarningInformationServiceImpl.java
... ... @@ -6,6 +6,9 @@ import java.io.FileNotFoundException;
6 6 import java.io.FileReader;
7 7 import java.io.IOException;
8 8 import java.util.ArrayList;
  9 +import java.util.Collection;
  10 +import java.util.Comparator;
  11 +import java.util.Date;
9 12 import java.util.HashMap;
10 13 import java.util.List;
11 14 import java.util.Map;
... ... @@ -34,6 +37,7 @@ import com.trash.casefile.mapper.ViolationWarningInformationMapper;
34 37 import com.trash.casefile.domain.ViolationWarningInformation;
35 38 import com.trash.casefile.service.IViolationWarningInformationService;
36 39 import org.springframework.transaction.annotation.Transactional;
  40 +import org.springframework.web.bind.annotation.RequestBody;
37 41 import org.springframework.web.multipart.MultipartFile;
38 42  
39 43 /**
... ... @@ -140,7 +144,7 @@ public class ViolationWarningInformationServiceImpl implements IViolationWarning
140 144  
141 145 String cString = "工地预警-未报开工作业,工地预警-视频设备离线超时报警,工地预警-三无车辆进入工地,工地预警-未按时间作业,";
142 146 String eString = "处理场所预警-未报开工作业,处理场所预警-视频设备离线超时报警,处理场所预警-三无车辆进入处理场所,处理场所预警-未到指定的处理场所作业";
143   - String tString = "离线运输报警(工),离线运输报警(消),未激活车辆作业,未核准作业车辆作业,未按线路行驶,闯禁行驶,失信车辆作业,卫星定位异常";
  147 + String tString = "离线运输报警(工),离线运输报警(消),未激活车辆作业,未核准作业车辆作业,未按线路行驶,闯禁行驶,失信车辆作业,卫星定位异常,超速提醒";
144 148  
145 149 @Override
146 150 public List<ViolationWarningInformation> selectViolationWarningInformationListByTable(String owningRegion,String startDate, String endDate,String violationObjectType) {
... ... @@ -411,4 +415,217 @@ public class ViolationWarningInformationServiceImpl implements IViolationWarning
411 415 public void updateViolationCaseFile(ViolationWarningInformation violationWarningInformation) {
412 416 violationWarningInformationMapper.updateViolationWarningInformation(violationWarningInformation);
413 417 }
  418 +
  419 + @Override
  420 + public Map getEVTable( ViolationWarningInformation violationWarningInformation) {
  421 +
  422 +// if(redisCache.getCacheObject("EVTdata"+ violationWarningInformation.getViolationObjectType()) != null){
  423 +// return redisCache.getCacheObject("EVTdata"+ violationWarningInformation.getViolationObjectType());
  424 +// }
  425 +
  426 +
  427 + Date date = new Date();
  428 + if(violationWarningInformation.getViolationObjectType().equals("周")){
  429 + date.setDate(date.getDate()-7);
  430 + violationWarningInformation.setCreateTime(date);
  431 + }else if(violationWarningInformation.getViolationObjectType().equals("月")){
  432 + date.setMonth(date.getMonth()-1);
  433 + violationWarningInformation.setCreateTime(date);
  434 + }else if(violationWarningInformation.getViolationObjectType().equals("季度")){
  435 + date.setMonth(date.getMonth()-3);
  436 + violationWarningInformation.setCreateTime(date);
  437 + }else if(violationWarningInformation.getViolationObjectType().equals("年")){
  438 + date.setYear(date.getYear()-1);
  439 + violationWarningInformation.setCreateTime(date);
  440 + }else{
  441 + return null;
  442 + }
  443 +
  444 +
  445 + List<ViolationWarningInformation> list = violationWarningInformationMapper.selectViolationWarningInformationListLessTime(violationWarningInformation);
  446 + Map<String, List> data = new HashMap<>();
  447 +
  448 +
  449 + Map<String,Map> companyMap = new HashMap<>();
  450 + Map<String,Map> truckMap = new HashMap<>();
  451 +
  452 + for(int i =0 ;i<list.size();i++){
  453 +
  454 + String companyName = list.get(i).getCompanyName();
  455 +
  456 + if(companyMap.get(companyName) == null){
  457 + companyMap.put(companyName, new HashMap<>());
  458 + companyMap.get(companyName).put("count", 0);
  459 + }
  460 + int count = (int) companyMap.get(companyName).get("count");
  461 + int typeCount = 0;
  462 + if(companyMap.get(companyName).get(list.get(i).getViolationType()) != null){
  463 + typeCount = (int) companyMap.get(companyName).get(list.get(i).getViolationType());
  464 + }
  465 + companyMap.get(companyName).put("count",count+1);
  466 + companyMap.get(companyName).put(list.get(i).getViolationType(),typeCount+1);
  467 + String truckNo = null;
  468 + try{
  469 +
  470 + truckNo = list.get(i).getDescribe().split(list.get(i).getCompanyName())[1].substring(1,8);
  471 + if(truckMap.get(truckNo) == null){
  472 + truckMap.put(truckNo, new HashMap<>());
  473 + truckMap.get(truckNo).put("count", 0);
  474 + }
  475 +
  476 + count = (int) truckMap.get(truckNo).get("count");
  477 + typeCount = 0;
  478 + if(truckMap.get(truckNo).get(list.get(i).getViolationType()) != null){
  479 + typeCount = (int) truckMap.get(truckNo).get(list.get(i).getViolationType());
  480 + }
  481 +
  482 + truckMap.get(truckNo).put("count",count+1);
  483 + truckMap.get(truckNo).put(list.get(i).getViolationType(),typeCount+1);
  484 + }catch(Exception e){
  485 + e.printStackTrace();
  486 + }
  487 +
  488 +
  489 + }
  490 +
  491 +
  492 + List companys = new ArrayList<Map<String, String>>();
  493 + List trucks = new ArrayList<Map<String, String>>();
  494 +
  495 +
  496 + for(String k:companyMap.keySet()){
  497 +
  498 + companyMap.get(k).put("name", k);
  499 +
  500 + companys.add(companyMap.get(k));
  501 + }
  502 +
  503 +
  504 + for(String k:truckMap.keySet()){
  505 +
  506 + truckMap.get(k).put("name", k);
  507 +
  508 + trucks.add(truckMap.get(k));
  509 + }
  510 +
  511 + trucks.sort(new Comparator<Map>() {
  512 +
  513 + @Override
  514 + public int compare(Map o1, Map o2) {
  515 + return ((int)o2.get("count") - (int)o1.get("count"));
  516 + }
  517 + });
  518 +
  519 + companys.sort(new Comparator<Map>() {
  520 +
  521 + @Override
  522 + public int compare(Map o1, Map o2) {
  523 + return ((int)o2.get("count") - (int)o1.get("count"));
  524 + }
  525 + });
  526 + if(companys.size() > 10){
  527 + companys = companys.subList(0, 10);
  528 + }
  529 +
  530 + if(trucks.size() > 10){
  531 + trucks = trucks.subList(0, 10);
  532 + }
  533 + data.put("company", companys);
  534 +
  535 + data.put("truck", trucks);
  536 +
  537 +
  538 + date.setMonth(0);
  539 + date.setDate(1);
  540 + date.setHours(0);
  541 + date.setMinutes(0);
  542 + date.setSeconds(0);
  543 + violationWarningInformation.setCreateTime(date);
  544 +
  545 + list = violationWarningInformationMapper.selectViolationWarningInformationListLessTime(violationWarningInformation);
  546 +
  547 +
  548 + List<Map> years = new ArrayList<Map>();
  549 + List<Map> months = new ArrayList<Map>();
  550 +
  551 + years.add(new HashMap<>());
  552 + years.get(0).put("count", 0);
  553 +
  554 + for(int i = 0 ; i < (new Date().getMonth() + 1);i++ ){
  555 + years.get(0).put((i+1) + "月", 0);
  556 + }
  557 +
  558 +
  559 + months.add(new HashMap<>());
  560 + months.add(new HashMap<>());
  561 +
  562 + months.get(0).put("count", 0);
  563 + months.get(1).put("count", 0);
  564 +
  565 +
  566 + Date now = new Date();
  567 +
  568 + now.setDate(1);
  569 + now.setHours(0);
  570 + now.setMinutes(0);
  571 + now.setSeconds(0);
  572 +
  573 + long thisMonth = now.getTime();
  574 +
  575 + now.setMonth(now.getMonth()-1);
  576 +
  577 + long lastMonth = now.getTime();
  578 +
  579 + for(int i =0 ; i < list.size();i++){
  580 +
  581 + if(list.get(i).getCreateTime().getYear() < now.getYear()){
  582 + continue;
  583 + }
  584 +
  585 + int count = (int) years.get(0).get("count");
  586 + int typeCount = (int) years.get(0).get((list.get(i).getCreateTime().getMonth()+1) + "月");
  587 + years.get(0).put("count",count+1);
  588 + years.get(0).put((list.get(i).getCreateTime().getMonth()+1) + "月",typeCount+1);
  589 + }
  590 +
  591 +
  592 + violationWarningInformation.setCreateTime(now);
  593 + list = violationWarningInformationMapper.selectViolationWarningInformationListLessTime(violationWarningInformation);
  594 +
  595 + for(int i = 0;i<list.size();i++){
  596 + int count = 0;
  597 + int typeCount = 0;
  598 + if(list.get(i).getCreateTime().getTime() > thisMonth){
  599 + count = (int) months.get(0).get("count");
  600 + typeCount = 0;
  601 + if(months.get(0).get(list.get(i).getViolationType()) != null){
  602 + typeCount = (int) months.get(0).get(list.get(i).getViolationType());
  603 + }
  604 + months.get(0).put("count",count+1);
  605 + months.get(0).put(list.get(i).getViolationType(),typeCount+1);
  606 + }
  607 +
  608 + if(list.get(i).getCreateTime().getTime() > lastMonth && list.get(i).getCreateTime().getTime() < thisMonth){
  609 + count = (int) months.get(1).get("count");
  610 + typeCount = 0;
  611 + if(months.get(1).get(list.get(i).getViolationType()) != null){
  612 + typeCount = (int) months.get(1).get(list.get(i).getViolationType());
  613 + }
  614 + months.get(1).put("count",count+1);
  615 + months.get(1).put(list.get(i).getViolationType(),typeCount+1);
  616 + }
  617 + }
  618 +
  619 +
  620 +
  621 +
  622 +
  623 + data.put("year", years);
  624 +
  625 + data.put("month", months);
  626 +
  627 + redisCache.setCacheObject("EVTdata" + violationWarningInformation.getViolationObjectType(), data,30,TimeUnit.MINUTES);
  628 +
  629 + return data;
  630 + }
414 631 }
... ...
trash-workFlow/src/main/java/com/trash/workflow/listener/casefileListener.java
... ... @@ -57,28 +57,38 @@ public class casefileListener implements ExecutionListener {
57 57  
58 58 List<ReplyApprovalProcess> repList = SpringUtils.getBean(ReplyApprovalProcessMapper.class).selectReplyApprovalProcessList(replyApprovalProcess);
59 59  
60   - replyApprovalProcess = repList.get(0);
61 60  
62   - Map map = new HashMap();
63   -
64   - for(String file :replyApprovalProcess.getReplyImg().split(",")){
65   -
66   - if(file.toUpperCase().endsWith("JPG")
67   - || file.toUpperCase().endsWith("PNG")
68   - || file.toUpperCase().endsWith("JPEG")){
69   - map.put("attchType", 0);
70   - }else if(file.toUpperCase().endsWith("MP3")){
71   - map.put("attchType", 1);
72   - }else if(file.toUpperCase().endsWith("MP4") || file.toUpperCase().endsWith("AVI")){
73   - map.put("attchType", 2);
  61 + for(ReplyApprovalProcess rep:repList){
  62 + if(rep.getReplyImg() == null){
  63 + continue;
74 64 }
75 65  
76   - map.put("attchFileName", file.split("/")[file.split("/").length-1]);
77   - map.put("attchFilePath", "http://172.26.157.12:10001/workflow" + file);
  66 + replyApprovalProcess = rep;
  67 +
  68 + Map map = new HashMap();
  69 +
  70 + for(String file :replyApprovalProcess.getReplyImg().split(",")){
78 71  
79   -
80   - upfiles.add(map);
81   - }
  72 + if(file.toUpperCase().endsWith("JPG")
  73 + || file.toUpperCase().endsWith("PNG")
  74 + || file.toUpperCase().endsWith("JPEG")){
  75 + map.put("attchType", 0);
  76 + }else if(file.toUpperCase().endsWith("MP3")){
  77 + map.put("attchType", 1);
  78 + }else if(file.toUpperCase().endsWith("MP4") || file.toUpperCase().endsWith("AVI")){
  79 + map.put("attchType", 2);
  80 + }
  81 +
  82 + map.put("attchFileName", file.split("/")[file.split("/").length-1]);
  83 + map.put("attchFilePath", "http://172.26.157.12:10001/workflow" + file);
  84 +
  85 +
  86 + upfiles.add(map);
  87 + }
  88 + break;
  89 + }
  90 +
  91 +
82 92  
83 93  
84 94 Map params = new HashMap<>();
... ...
trash-workFlow/src/main/resources/mapper/casefile/ViolationCaseFileMapper.xml
... ... @@ -58,8 +58,14 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
58 58 #{name}
59 59 </foreach>
60 60 </if>
  61 + <if test="needUpload == null or needUpload == 0 ">
  62 + and need_upload != 1
  63 + </if>
  64 + <if test="needUpload == 1 ">
  65 + and need_upload = 1
  66 + </if>
  67 +
61 68 </where>
62   - or need_upload = 1
63 69 order by create_time desc
64 70 </select>
65 71  
... ...
trash-workFlow/src/main/resources/mapper/casefile/ViolationWarningInformationMapper.xml
... ... @@ -131,6 +131,11 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
131 131 </trim>
132 132 where id = #{id}
133 133 </update>
  134 +
  135 +
  136 + <select id="selectViolationWarningInformationListLessTime" resultType="com.trash.casefile.domain.ViolationWarningInformation">
  137 + select * from casefile_violation_warning_information where create_time > #{createTime}
  138 + </select>
134 139  
135 140 <delete id="deleteViolationWarningInformationById" parameterType="Long">
136 141 delete from casefile_violation_warning_information where id = #{id}
... ...