DevopsWorkOrderServiceImpl.java 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649
  1. package com.bizmatics.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5. import com.bizmatics.common.core.bean.CommonPage;
  6. import com.bizmatics.common.mvc.base.AbstractCrudService;
  7. import com.bizmatics.model.*;
  8. import com.bizmatics.model.system.SysUser;
  9. import com.bizmatics.model.vo.*;
  10. import com.bizmatics.persistence.mapper.DevopsWorkOrderMapper;
  11. import com.bizmatics.service.*;
  12. import com.bizmatics.service.util.SecurityUtils;
  13. import com.bizmatics.service.vo.CommonIcoVO;
  14. import org.junit.jupiter.api.Order;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import java.text.ParseException;
  18. import java.text.SimpleDateFormat;
  19. import java.util.*;
  20. /**
  21. * 运维管理-工单管理
  22. *
  23. * @author ya
  24. * @since 2021-10-21
  25. */
  26. @Service
  27. public class DevopsWorkOrderServiceImpl extends AbstractCrudService<DevopsWorkOrderMapper, DevopsWorkOrder> implements DevopsWorkOrderService {
  28. @Autowired
  29. private DevopsOrderDeviceService devopsOrderDeviceService;
  30. @Autowired
  31. private DevopsOrderInspectorsService devopsOrderInspectorsService;
  32. @Autowired
  33. private PatrolInspectionRecordService patrolInspectionRecordService;
  34. @Autowired
  35. private PatrolRecordRouteService patrolRecordRouteService;
  36. @Autowired
  37. private PatrolInspectorsService patrolInspectorsService;
  38. @Autowired
  39. private PatrolInspectionTeamService patrolInspectionTeamService;
  40. @Override
  41. public void devopsWorkOrderAdd(DevopsWorkOrderVo devopsWorkOrderVo) {
  42. DevopsWorkOrder devopsWorkOrder = new DevopsWorkOrder();
  43. SysUser user = SecurityUtils.getLoginUser().getUser();
  44. devopsWorkOrder.setWorkOrder(devopsWorkOrderVo.getWorkOrder());
  45. devopsWorkOrder.setSiteId(devopsWorkOrderVo.getSiteId());
  46. devopsWorkOrder.setWorkOrderType(devopsWorkOrderVo.getWorkOrderType());
  47. devopsWorkOrder.setExpectedCompletionTime(devopsWorkOrderVo.getExpectedCompletionTime());
  48. devopsWorkOrder.setTeamId(devopsWorkOrderVo.getTeamId());
  49. devopsWorkOrder.setGenerationMode(devopsWorkOrderVo.getGenerationMode());
  50. devopsWorkOrder.setWorkOrderStatus(3);
  51. devopsWorkOrder.setPicturePathOne(devopsWorkOrderVo.getPicturePathOne());
  52. devopsWorkOrder.setPicturePathTwo(devopsWorkOrderVo.getPicturePathTwo());
  53. devopsWorkOrder.setPicturePathThree(devopsWorkOrderVo.getPicturePathThree());
  54. devopsWorkOrder.setPicturePathFour(devopsWorkOrderVo.getPicturePathFour());
  55. devopsWorkOrder.setPicturePathFive(devopsWorkOrderVo.getPicturePathFive());
  56. devopsWorkOrder.setPicturePathSix(devopsWorkOrderVo.getPicturePathSix());
  57. devopsWorkOrder.setCreator(user.getUserName());
  58. devopsWorkOrder.setCreateTime(new Date());
  59. devopsWorkOrder.setStatus(1);
  60. this.save(devopsWorkOrder);
  61. Integer devopsWorkOrderId = devopsWorkOrder.getId();
  62. String[] inspectionDeviceIdList = devopsWorkOrderVo.getInspectionDeviceId().split(",");
  63. String[] inspectorsIdList = devopsWorkOrderVo.getInspectorsId().split(",");
  64. for (int i = 0; i < inspectionDeviceIdList.length; i++) {
  65. DevopsOrderDevice devopsOrderDevice = new DevopsOrderDevice();
  66. devopsOrderDevice.setWorkOrderId(devopsWorkOrderId);
  67. devopsOrderDevice.setInspectionDeviceId(Integer.parseInt(inspectionDeviceIdList[i]));
  68. devopsOrderDevice.setCreator(user.getUserName());
  69. devopsOrderDevice.setCreateTime(new Date());
  70. devopsOrderDevice.setStatus(1);
  71. devopsOrderDeviceService.save(devopsOrderDevice);
  72. }
  73. for (int i = 0; i < inspectorsIdList.length; i++) {
  74. DevopsOrderInspectors devopsOrderInspectors = new DevopsOrderInspectors();
  75. devopsOrderInspectors.setWorkOrderId(devopsWorkOrderId);
  76. devopsOrderInspectors.setInspectorsId(Integer.parseInt(inspectorsIdList[i]));
  77. devopsOrderInspectors.setCreator(user.getUserName());
  78. devopsOrderInspectors.setCreateTime(new Date());
  79. devopsOrderInspectors.setStatus(1);
  80. devopsOrderInspectorsService.save(devopsOrderInspectors);
  81. }
  82. }
  83. @Override
  84. public void devopsWorkOrderUpdate(DevopsWorkOrderVo devopsWorkOrderVo) {
  85. SysUser user = SecurityUtils.getLoginUser().getUser();
  86. DevopsWorkOrder devopsWorkOrder = new DevopsWorkOrder();
  87. devopsWorkOrder.setId(devopsWorkOrderVo.getId());
  88. devopsWorkOrder.setWorkOrder(devopsWorkOrderVo.getWorkOrder());
  89. devopsWorkOrder.setWorkOrderType(devopsWorkOrderVo.getWorkOrderType());
  90. devopsWorkOrder.setExpectedCompletionTime(devopsWorkOrderVo.getExpectedCompletionTime());
  91. devopsWorkOrder.setTeamId(devopsWorkOrderVo.getTeamId());
  92. devopsWorkOrder.setGenerationMode(devopsWorkOrderVo.getGenerationMode());
  93. devopsWorkOrder.setWorkOrderStatus(devopsWorkOrderVo.getWorkOrderStatus());
  94. devopsWorkOrder.setPicturePathOne(devopsWorkOrderVo.getPicturePathOne());
  95. devopsWorkOrder.setPicturePathTwo(devopsWorkOrderVo.getPicturePathTwo());
  96. devopsWorkOrder.setPicturePathThree(devopsWorkOrderVo.getPicturePathThree());
  97. devopsWorkOrder.setPicturePathFour(devopsWorkOrderVo.getPicturePathFour());
  98. devopsWorkOrder.setPicturePathFive(devopsWorkOrderVo.getPicturePathFive());
  99. devopsWorkOrder.setPicturePathSix(devopsWorkOrderVo.getPicturePathSix());
  100. this.updateById(devopsWorkOrder);
  101. Integer devopsWorkOrderId = devopsWorkOrder.getId();
  102. String[] inspectionDeviceIdList = devopsWorkOrderVo.getInspectionDeviceId().split(",");
  103. String[] inspectorsIdList = devopsWorkOrderVo.getInspectorsId().split(",");
  104. if (inspectionDeviceIdList.length > 0) {
  105. for (int i = 0; i < inspectionDeviceIdList.length; i++) {
  106. DevopsOrderDevice devopsOrderDevice = new DevopsOrderDevice();
  107. devopsOrderDevice.setWorkOrderId(devopsWorkOrderId);
  108. devopsOrderDevice.setInspectionDeviceId(Integer.parseInt(inspectionDeviceIdList[i]));
  109. devopsOrderDevice.setCreator(user.getUserName());
  110. devopsOrderDevice.setCreateTime(new Date());
  111. devopsOrderDevice.setStatus(1);
  112. devopsOrderDeviceService.save(devopsOrderDevice);
  113. }
  114. }
  115. if (inspectorsIdList.length > 0) {
  116. for (int i = 0; i < inspectorsIdList.length; i++) {
  117. DevopsOrderInspectors devopsOrderInspectors = new DevopsOrderInspectors();
  118. devopsOrderInspectors.setWorkOrderId(devopsWorkOrderId);
  119. devopsOrderInspectors.setInspectorsId(Integer.parseInt(inspectorsIdList[i]));
  120. devopsOrderInspectors.setCreator(user.getUserName());
  121. devopsOrderInspectors.setCreateTime(new Date());
  122. devopsOrderInspectors.setStatus(1);
  123. devopsOrderInspectorsService.save(devopsOrderInspectors);
  124. }
  125. }
  126. }
  127. @Override
  128. public void devopsWorkOrderDel(Integer id) {
  129. DevopsWorkOrder devopsWorkOrder = new DevopsWorkOrder();
  130. devopsWorkOrder.setId(id);
  131. devopsWorkOrder.setStatus(0);
  132. this.updateById(devopsWorkOrder);
  133. //巡检设备
  134. LambdaQueryWrapper<DevopsOrderDevice> queryWrapperOne = Wrappers.lambdaQuery();
  135. queryWrapperOne.eq(DevopsOrderDevice::getWorkOrderId, id).eq(DevopsOrderDevice::getStatus, 1);
  136. List<DevopsOrderDevice> devopsOrderDeviceList = devopsOrderDeviceService.list(queryWrapperOne);
  137. //人员
  138. LambdaQueryWrapper<DevopsOrderInspectors> queryWrapperTwo = Wrappers.lambdaQuery();
  139. queryWrapperTwo.eq(DevopsOrderInspectors::getWorkOrderId, id).eq(DevopsOrderInspectors::getStatus, 1);
  140. List<DevopsOrderInspectors> devopsOrderInspectorsList = devopsOrderInspectorsService.list(queryWrapperTwo);
  141. if (devopsOrderDeviceList.size() > 0) {
  142. for (int i = 0; i < devopsOrderDeviceList.size(); i++) {
  143. DevopsOrderDevice devopsOrderDevice = new DevopsOrderDevice();
  144. devopsOrderDevice.setId(devopsOrderDeviceList.get(i).getId());
  145. devopsOrderDevice.setStatus(0);
  146. devopsOrderDeviceService.updateById(devopsOrderDevice);
  147. }
  148. }
  149. if (devopsOrderInspectorsList.size() > 0) {
  150. for (int i = 0; i < devopsOrderInspectorsList.size(); i++) {
  151. DevopsOrderInspectors devopsOrderInspectors = new DevopsOrderInspectors();
  152. devopsOrderInspectors.setId(devopsOrderInspectorsList.get(i).getId());
  153. devopsOrderInspectors.setStatus(0);
  154. devopsOrderInspectorsService.updateById(devopsOrderInspectors);
  155. }
  156. }
  157. }
  158. @Override
  159. public void devopsOrderDeviceDel(Integer inspectionDeviceId) {
  160. DevopsOrderDevice devopsOrderDevice = new DevopsOrderDevice();
  161. devopsOrderDevice.setId(inspectionDeviceId);
  162. devopsOrderDevice.setStatus(0);
  163. devopsOrderDeviceService.updateById(devopsOrderDevice);
  164. }
  165. @Override
  166. public void devopsOrderInspectorsDel(Integer inspectorsId) {
  167. DevopsOrderInspectors devopsOrderInspectors = new DevopsOrderInspectors();
  168. devopsOrderInspectors.setId(inspectorsId);
  169. devopsOrderInspectors.setStatus(0);
  170. devopsOrderInspectorsService.updateById(devopsOrderInspectors);
  171. }
  172. @Override
  173. public CommonPage<DevopsWorkOrderListVo> devopsWorkOrderList(Integer generationMode, Integer workOrderStatus, Integer siteId, Integer inspectorsId, Integer size, Integer current) {
  174. List<DevopsWorkOrderListVo> devopsWorkOrderListTwo = new ArrayList<>();
  175. LambdaQueryWrapper<DevopsOrderInspectors> queryWrapperTwo = Wrappers.lambdaQuery();
  176. queryWrapperTwo.eq(DevopsOrderInspectors::getInspectorsId, inspectorsId).eq(DevopsOrderInspectors::getStatus, 1);
  177. List<DevopsOrderInspectors> devopsOrderInspectorsList = devopsOrderInspectorsService.list(queryWrapperTwo);
  178. List<DevopsWorkOrderListVo> devopsWorkOrderListOne = baseMapper.devopsWorkOrderList(generationMode, workOrderStatus, siteId, devopsOrderInspectorsList, null, 0);
  179. int total = 0;
  180. if (devopsWorkOrderListOne.size() > 0) {
  181. total = devopsWorkOrderListOne.size();
  182. }
  183. int startCurrent = (size - 1) * current;
  184. List<DevopsWorkOrderListVo> devopsWorkOrderList = baseMapper.devopsWorkOrderList(generationMode, workOrderStatus, siteId, devopsOrderInspectorsList, startCurrent, current);
  185. if (devopsWorkOrderList.size() > 0) {
  186. List<PatrolInspectorsVo> patrolInspectorsVoList = baseMapper.patrolInspectorsVoList(0);
  187. for (int i = 0; i < devopsWorkOrderList.size(); i++) {
  188. String inspectorsNameList = "";
  189. for (int j = 0; j < patrolInspectorsVoList.size(); j++) {
  190. if (devopsWorkOrderList.get(i).getId() == patrolInspectorsVoList.get(j).getWorkOrderId()) {
  191. inspectorsNameList = inspectorsNameList + patrolInspectorsVoList.get(j).getInspectorsName() + ",";
  192. }
  193. if (patrolInspectorsVoList.size() - 1 == j) {
  194. inspectorsNameList = inspectorsNameList.substring(0, inspectorsNameList.length() - 1);
  195. }
  196. }
  197. devopsWorkOrderList.get(i).setInspectorsName(inspectorsNameList);
  198. // devopsWorkOrderListTwo.set(i, devopsWorkOrderList.get(i));
  199. }
  200. }
  201. return new CommonPage<>(devopsWorkOrderList, total, current, size);
  202. }
  203. @Override
  204. public List<DevopsWorkOrderDetailsVo> devopsWorkOrderDetails(Integer id) {
  205. List<PatrolRouteContentListVo> patrolRouteContentListVoList = new ArrayList<>();
  206. List<DevopsWorkOrderDetailsVo> devopsWorkOrderList = baseMapper.devopsWorkOrderDetails(id);
  207. List<PatrolInspectorsVo> patrolInspectorsList = baseMapper.patrolInspectorsVoList(id);
  208. List<PatrolInspectionDeviceDetailsVo> PatrolInspectionDeviceList = baseMapper.patrolInspectionDeviceList(id);
  209. devopsWorkOrderList.get(0).setPatrolInspectionDeviceDetailsVo(PatrolInspectionDeviceList);
  210. devopsWorkOrderList.get(0).setPatrolInspectorsVo(patrolInspectorsList);
  211. if (devopsWorkOrderList.get(0).getGenerationMode() == 1) {
  212. LambdaQueryWrapper<PatrolInspectionRecord> queryWrapper = Wrappers.lambdaQuery();
  213. queryWrapper.eq(PatrolInspectionRecord::getId, devopsWorkOrderList.get(0).getInspectionRecordId());
  214. List<PatrolInspectionRecord> patrolInspectionRecordList = patrolInspectionRecordService.list(queryWrapper);
  215. List<PatrolRouteContentListVo> patrolRouteContentList = baseMapper.patrolRouteContentList(patrolInspectionRecordList.get(0).getSiteId(), patrolInspectionRecordList.get(0).getInspectionSchemeId());
  216. for (int i = 0; i < patrolRouteContentList.size(); i++) {
  217. LambdaQueryWrapper<PatrolRecordRoute> queryWrapperTwo = Wrappers.lambdaQuery();
  218. queryWrapperTwo.eq(PatrolRecordRoute::getInspectionRecordId, patrolInspectionRecordList.get(0).getId())
  219. .eq(PatrolRecordRoute::getInspectionContentId, patrolRouteContentList.get(i).getInspectionContentId());
  220. List<PatrolRecordRoute> patrolInspectionSchemeList = patrolRecordRouteService.list(queryWrapperTwo);
  221. PatrolRouteContentListVo patrolRouteContentListVo = new PatrolRouteContentListVo();
  222. patrolRouteContentListVo.setId(patrolRouteContentList.get(i).getId());
  223. patrolRouteContentListVo.setInspectionRouteId(patrolRouteContentList.get(i).getInspectionRouteId());
  224. patrolRouteContentListVo.setInspectionContentId(patrolRouteContentList.get(i).getInspectionContentId());
  225. patrolRouteContentListVo.setInspectionContentName(patrolRouteContentList.get(i).getInspectionContentName());
  226. patrolRouteContentListVo.setInspectionDeviceName(patrolRouteContentList.get(i).getInspectionDeviceName());
  227. patrolRouteContentListVo.setCreator(patrolRouteContentList.get(i).getCreator());
  228. patrolRouteContentListVo.setCreateTime(patrolRouteContentList.get(i).getCreateTime());
  229. patrolRouteContentListVo.setStatus(patrolRouteContentList.get(i).getStatus());
  230. patrolRouteContentListVo.setPatrolRecordRoute(patrolInspectionSchemeList);
  231. List inspectionDeviceAbnormalList = new ArrayList();
  232. for (int j = 0; j < patrolInspectionSchemeList.size(); j++) {
  233. inspectionDeviceAbnormalList.add(patrolInspectionSchemeList.get(j).getStatus());
  234. }
  235. patrolRouteContentListVoList.add(patrolRouteContentListVo);
  236. }
  237. }
  238. devopsWorkOrderList.get(0).setPatrolRouteContentListVoList(patrolRouteContentListVoList);
  239. return devopsWorkOrderList;
  240. }
  241. @Override
  242. public List<PatrolInspectors> patrolInspectorsDroplist() {
  243. SysUser user = SecurityUtils.getLoginUser().getUser();
  244. LambdaQueryWrapper<PatrolInspectors> queryWrapperTwo = Wrappers.lambdaQuery();
  245. queryWrapperTwo.eq(PatrolInspectors::getStatus, 1)
  246. .eq(PatrolInspectors::getUserId, user.getUserId());
  247. List<PatrolInspectors> patrolInspectorsList = patrolInspectorsService.list(queryWrapperTwo);
  248. return patrolInspectorsList;
  249. }
  250. @Override
  251. public List<PatrolInspectionTeamOneVo> PatrolInspectionTeamList() {
  252. List<PatrolInspectionTeamOneVo> patrolInspectionTeamOneVoList = new ArrayList<>();
  253. LambdaQueryWrapper<PatrolInspectionTeam> queryWrapper = Wrappers.lambdaQuery();
  254. queryWrapper.eq(PatrolInspectionTeam::getStatus, 1);
  255. List<PatrolInspectionTeam> patrolInspectionTeamList = patrolInspectionTeamService.list(queryWrapper);
  256. List<PatrolInspectorsOneVo> patrolInspectorsOneVoList = baseMapper.patrolInspectorsOneVoList();
  257. if (patrolInspectionTeamList.size() > 0) {
  258. for (int i = 0; i < patrolInspectionTeamList.size(); i++) {
  259. List<Object> List = new ArrayList<>();
  260. PatrolInspectionTeamOneVo patrolInspectionTeamOneVo = new PatrolInspectionTeamOneVo();
  261. patrolInspectionTeamOneVo.setTeamType(patrolInspectionTeamList.get(i).getTeamType());
  262. patrolInspectionTeamOneVo.setInspectorsId(patrolInspectionTeamList.get(i).getInspectorsId());
  263. patrolInspectionTeamOneVo.setTeamName(patrolInspectionTeamList.get(i).getTeamName());
  264. patrolInspectionTeamOneVo.setCreator(patrolInspectionTeamList.get(i).getCreator());
  265. patrolInspectionTeamOneVo.setCreateTime(patrolInspectionTeamList.get(i).getCreateTime());
  266. patrolInspectionTeamOneVo.setStatus(patrolInspectionTeamList.get(i).getStatus());
  267. patrolInspectionTeamOneVo.setId(patrolInspectionTeamList.get(i).getId());
  268. patrolInspectionTeamOneVo.setUserId(patrolInspectionTeamList.get(i).getUserId());
  269. patrolInspectionTeamOneVo.setReservedField(patrolInspectionTeamList.get(i).getReservedField());
  270. if (patrolInspectorsOneVoList.size() > 0) {
  271. for (int j = 0; j < patrolInspectorsOneVoList.size(); j++) {
  272. if (patrolInspectionTeamList.get(i).getId() == patrolInspectorsOneVoList.get(j).getTeamId()) {
  273. List.add(patrolInspectorsOneVoList.get(j));
  274. }
  275. }
  276. }
  277. patrolInspectionTeamOneVo.setPatrolInspectorsOneVo(List);
  278. patrolInspectionTeamOneVoList.add(patrolInspectionTeamOneVo);
  279. }
  280. }
  281. return patrolInspectionTeamOneVoList;
  282. }
  283. @Override
  284. public List<OpexStatisticsVo> operationCensus(String type) {
  285. String firstDay;
  286. String lastDay;
  287. Date startDate;
  288. Date endDate;
  289. String startTime;
  290. String endTime;
  291. int days = 0;
  292. SysUser user = SecurityUtils.getLoginUser().getUser();
  293. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  294. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  295. SimpleDateFormat yearFormatter = new SimpleDateFormat("yyyy");
  296. Date date = new Date();
  297. String year = yearFormatter.format(date);
  298. String startHms = "00:00:00";
  299. String endHms = "23:59:59";
  300. Integer stayGrabOrdersCount = 0;
  301. Integer stayAppointCount = 0;
  302. Integer stayOrderTakingCount = 0;
  303. Integer stayManageCount = 0;
  304. Integer stayCustomsClearanceCount = 0;
  305. Integer completedCount = 0;
  306. switch (type) {
  307. case "thisMonth":
  308. Calendar calendar = new GregorianCalendar();
  309. calendar.setTime(date);
  310. //获得本月第一天
  311. calendar.add(Calendar.MONTH, 0);
  312. calendar.set(Calendar.DAY_OF_MONTH, 1);
  313. firstDay = sdf.format(calendar.getTime());
  314. startDate = calendar.getTime();
  315. //获得本月最后一天
  316. calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
  317. lastDay = sdf.format(calendar.getTime());
  318. startTime = firstDay + " " + startHms;
  319. endTime = lastDay + " " + endHms;
  320. days = (int) ((date.getTime() - startDate.getTime()) / (1000 * 3600 * 24)) + 1;
  321. break;
  322. case "lastMonth":
  323. //获取前一个月第一天
  324. Calendar calendar1 = Calendar.getInstance();
  325. calendar1.add(Calendar.MONTH, -1);
  326. calendar1.set(Calendar.DAY_OF_MONTH, 1);
  327. firstDay = sdf.format(calendar1.getTime());
  328. startDate = calendar1.getTime();
  329. //获取前一个月最后一天
  330. Calendar calendar2 = Calendar.getInstance();
  331. calendar2.set(Calendar.DAY_OF_MONTH, 0);
  332. lastDay = sdf.format(calendar2.getTime());
  333. endDate = calendar2.getTime();
  334. startTime = firstDay + " " + startHms;
  335. endTime = lastDay + " " + endHms;
  336. days = (int) ((endDate.getTime() - startDate.getTime()) / (1000 * 3600 * 24)) + 1;
  337. break;
  338. case "thisQuarter":
  339. //获取本季度第一天
  340. startDate = getCurrentQuarterStartTime();
  341. firstDay = sdf.format(startDate);
  342. //获取本季度最后一天
  343. endDate = getCurrentQuarterEndTime();
  344. lastDay = sdf.format(endDate);
  345. startTime = firstDay + " " + startHms;
  346. endTime = lastDay + " " + endHms;
  347. days = (int) ((date.getTime() - startDate.getTime()) / (1000 * 3600 * 24)) + 1;
  348. break;
  349. case "lastQuarter":
  350. startDate = getCurrentQuarterStartTime();
  351. endDate = getCurrentQuarterEndTime();
  352. Calendar calendar3 = Calendar.getInstance(); //得到日历
  353. calendar3.setTime(startDate);//把当前时间赋给日历
  354. calendar3.add(calendar3.MONTH, -3); //设置为前3月
  355. date = calendar3.getTime(); //得到前3月的时间
  356. firstDay = sdf.format(date);
  357. calendar3.setTime(endDate);//把当前时间赋给日历
  358. calendar3.add(calendar3.MONTH, -3); //设置为前3月
  359. date = calendar3.getTime(); //得到前3月的时间
  360. lastDay = sdf.format(date);
  361. startTime = firstDay + " " + startHms;
  362. endTime = lastDay + " " + endHms;
  363. days = (int) ((endDate.getTime() - startDate.getTime()) / (1000 * 3600 * 24)) + 1;
  364. break;
  365. case "thisYear":
  366. //获取本年时间
  367. startTime = year + "-01-01 " + startHms;
  368. endTime = year + "-12-31 " + endHms;
  369. try {
  370. startDate = sdf.parse(year + "-01-01");
  371. days = (int) ((date.getTime() - startDate.getTime()) / (1000 * 3600 * 24)) + 1;
  372. } catch (ParseException e) {
  373. e.printStackTrace();
  374. }
  375. break;
  376. case "lastYear":
  377. Calendar c = Calendar.getInstance();
  378. c.add(Calendar.YEAR, -1);
  379. Date yearDate = c.getTime();
  380. String yearTime = yearFormatter.format(yearDate);
  381. startTime = yearTime + "-01-01 " + startHms;
  382. endTime = yearTime + "-12-31 " + endHms;
  383. try {
  384. startDate = sdf.parse(year + "-01-01");
  385. endDate = sdf.parse(yearTime + "-12-31");
  386. days = (int) ((endDate.getTime() - startDate.getTime()) / (1000 * 3600 * 24)) + 1;
  387. } catch (ParseException e) {
  388. e.printStackTrace();
  389. }
  390. break;
  391. default:
  392. String[] time = type.split(",");
  393. startTime = time[0] + " " + startHms;
  394. endTime = time[1] + " " + endHms;
  395. try {
  396. startDate = sdf.parse(time[0]);
  397. endDate = sdf.parse(time[1]);
  398. days = (int) ((endDate.getTime() - startDate.getTime()) / (1000 * 3600 * 24)) + 1;
  399. } catch (ParseException e) {
  400. e.printStackTrace();
  401. }
  402. }
  403. //新建工单数量
  404. LambdaQueryWrapper<DevopsWorkOrder> queryWrapper = Wrappers.lambdaQuery();
  405. queryWrapper.eq(DevopsWorkOrder::getStatus, 1)
  406. .between(DevopsWorkOrder::getCreateTime, startTime, endTime);
  407. Integer newWorkOrderCount = this.count(queryWrapper);
  408. //已完成工单
  409. LambdaQueryWrapper<DevopsWorkOrder> queryWrapperOne = Wrappers.lambdaQuery();
  410. queryWrapperOne.eq(DevopsWorkOrder::getStatus, 1)
  411. .eq(DevopsWorkOrder::getWorkOrderStatus, 6)
  412. .between(DevopsWorkOrder::getCreateTime, startTime, endTime);
  413. Integer completedWorkOrder = this.count(queryWrapperOne);
  414. //平均响应时间
  415. Double averageResponseTime = 0.30;
  416. //日均工单数
  417. double workOrderAveCount = newWorkOrderCount / days;
  418. //工作状态
  419. QueryWrapper<DevopsWorkOrder> queryWrapperTwo = new QueryWrapper<>();
  420. queryWrapperTwo.select("work_order_status", "count(*) as count")
  421. .eq("status",1)
  422. .between("create_time", startTime, endTime)
  423. .groupBy("work_order_status");
  424. List<DevopsWorkOrder> groupingQueryVoList = this.list(queryWrapperTwo);
  425. for (int i = 0; i < groupingQueryVoList.size(); i++) {
  426. switch (groupingQueryVoList.get(i).getWorkOrderStatus()) {
  427. case 1:
  428. stayGrabOrdersCount = groupingQueryVoList.get(i).getCount();
  429. break;
  430. case 2:
  431. stayAppointCount = groupingQueryVoList.get(i).getCount();
  432. break;
  433. case 3:
  434. stayOrderTakingCount = groupingQueryVoList.get(i).getCount();
  435. break;
  436. case 4:
  437. stayManageCount = groupingQueryVoList.get(i).getCount();
  438. break;
  439. case 5:
  440. stayCustomsClearanceCount = groupingQueryVoList.get(i).getCount();
  441. break;
  442. case 6:
  443. completedCount = groupingQueryVoList.get(i).getCount();
  444. break;
  445. default:
  446. }
  447. }
  448. //各站点各类工单数统计
  449. QueryWrapper<DevopsWorkOrder> queryWrapperThree = new QueryWrapper<>();
  450. queryWrapperThree.select("site_id","work_order_type", "count(*) as count")
  451. .eq("status",1)
  452. .between("create_time", startTime, endTime)
  453. .groupBy("site_id","work_order_type");
  454. List<DevopsWorkOrder> WorkOrderStatisticsList = this.list(queryWrapperThree);
  455. List<Object> workOrderStatistics = new ArrayList<>();
  456. List<Site> siteList = baseMapper.SiteList(user.getUserId().intValue(), null);
  457. if (siteList.size()>0){
  458. for (int i=0;i<siteList.size();i++){
  459. Map<String,Object> map = new HashMap<>();
  460. Integer safetyValuationCount = 0;
  461. Integer overhaulCount = 0;
  462. Integer rushRepairCount = 0;
  463. Integer otherCount = 0;
  464. Integer maintainCount = 0;
  465. Integer outageMaintenanceCount = 0;
  466. Integer inspectionCount = 0;
  467. if (WorkOrderStatisticsList.size()>0){
  468. for (int j=0;j<WorkOrderStatisticsList.size();j++){
  469. if (siteList.get(i).getId()==WorkOrderStatisticsList.get(j).getSiteId()){
  470. switch (WorkOrderStatisticsList.get(j).getWorkOrderType()) {
  471. case 1:
  472. safetyValuationCount = WorkOrderStatisticsList.get(j).getCount();
  473. break;
  474. case 2:
  475. overhaulCount= WorkOrderStatisticsList.get(j).getCount();
  476. break;
  477. case 3:
  478. rushRepairCount= WorkOrderStatisticsList.get(j).getCount();
  479. break;
  480. case 4:
  481. otherCount= WorkOrderStatisticsList.get(j).getCount();
  482. break;
  483. case 5:
  484. maintainCount= WorkOrderStatisticsList.get(j).getCount();
  485. break;
  486. case 6:
  487. outageMaintenanceCount= WorkOrderStatisticsList.get(j).getCount();
  488. break;
  489. case 7:
  490. inspectionCount= WorkOrderStatisticsList.get(j).getCount();
  491. break;
  492. default:
  493. }
  494. }
  495. map.put("siteName",siteList.get(i).getSiteName());
  496. map.put("safetyValuationCount",safetyValuationCount);
  497. map.put("overhaulCount",overhaulCount);
  498. map.put("rushRepairCount",rushRepairCount);
  499. map.put("otherCount",otherCount);
  500. map.put("maintainCount",maintainCount);
  501. map.put("outageMaintenanceCount",outageMaintenanceCount);
  502. map.put("inspectionCount",inspectionCount);
  503. }
  504. }else {
  505. map.put("siteName",siteList.get(i).getSiteName());
  506. map.put("safetyValuationCount",safetyValuationCount);
  507. map.put("overhaulCount",overhaulCount);
  508. map.put("rushRepairCount",rushRepairCount);
  509. map.put("otherCount",otherCount);
  510. map.put("maintainCount",maintainCount);
  511. map.put("outageMaintenanceCount",outageMaintenanceCount);
  512. map.put("inspectionCount",inspectionCount);
  513. }
  514. workOrderStatistics.add(map);
  515. }
  516. }
  517. //工单数趋势
  518. QueryWrapper<DevopsWorkOrder> queryWrapperFour = new QueryWrapper<>();
  519. queryWrapperFour.select("FROM_UNIXTIME(UNIX_TIMESTAMP(create_time) , '%Y-%m-%d') as create_time", "count(*) as count")
  520. .eq("status",1)
  521. .between("create_time", startTime, endTime)
  522. .groupBy("site_id","work_order_type");
  523. List<DevopsWorkOrder> workOrderTrend = this.list(queryWrapperFour);
  524. List<OpexStatisticsVo> list = new ArrayList<>();
  525. list.add(OpexStatisticsVo.builder()
  526. .newWorkOrderCount(newWorkOrderCount)
  527. .completedWorkOrder(completedWorkOrder)
  528. .averageResponseTime(averageResponseTime)
  529. .workOrderAveCount(workOrderAveCount)
  530. .stayGrabOrdersCount(stayGrabOrdersCount)
  531. .stayAppointCount(stayAppointCount)
  532. .stayOrderTakingCount(stayOrderTakingCount)
  533. .stayManageCount(stayManageCount)
  534. .stayCustomsClearanceCount(stayCustomsClearanceCount)
  535. .completedCount(completedCount)
  536. .workOrderStatistics(workOrderStatistics)
  537. .workOrderTrend(workOrderTrend)
  538. .build());
  539. return list;
  540. }
  541. //根据当前日期获取本季度第一天
  542. public static Date getCurrentQuarterStartTime() {
  543. Calendar c = Calendar.getInstance();
  544. int currentMonth = c.get(Calendar.MONTH) + 1;
  545. SimpleDateFormat longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  546. SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd");
  547. Date now = null;
  548. try {
  549. if (currentMonth <= 3)
  550. c.set(Calendar.MONTH, 0);
  551. else if (currentMonth <= 6)
  552. c.set(Calendar.MONTH, 3);
  553. else if (currentMonth <= 9)
  554. c.set(Calendar.MONTH, 6);
  555. else if (currentMonth <= 12)
  556. c.set(Calendar.MONTH, 9);
  557. c.set(Calendar.DATE, 1);
  558. now = longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00");
  559. } catch (Exception e) {
  560. e.printStackTrace();
  561. }
  562. return now;
  563. }
  564. //根据当前日期获取本季度最后一天
  565. public static Date getCurrentQuarterEndTime() {
  566. Calendar cal = Calendar.getInstance();
  567. cal.setTime(getCurrentQuarterStartTime());
  568. cal.add(Calendar.MONTH, 2);
  569. cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
  570. cal.set(Calendar.HOUR_OF_DAY, 23);
  571. cal.set(Calendar.MINUTE, 59);
  572. cal.set(Calendar.SECOND, 59);
  573. cal.set(Calendar.MILLISECOND, 999);
  574. return cal.getTime();
  575. }
  576. public static String getQuarter() {
  577. Calendar c = Calendar.getInstance();
  578. int month = c.get(c.MONTH) + 1;
  579. int quarter = 0;
  580. if (month >= 1 && month <= 3) {
  581. quarter = 1;
  582. } else if (month >= 4 && month <= 6) {
  583. quarter = 2;
  584. } else if (month >= 7 && month <= 9) {
  585. quarter = 3;
  586. } else {
  587. quarter = 4;
  588. }
  589. return quarter + "";
  590. }
  591. }