BillPcrServiceImpl.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. package com.huimv.admin.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  4. import com.huimv.admin.common.token.TokenSign;
  5. import com.huimv.admin.common.utils.Result;
  6. import com.huimv.admin.common.utils.ResultCode;
  7. import com.huimv.admin.entity.*;
  8. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  9. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  10. import com.huimv.admin.common.token.TokenSign;
  11. import com.huimv.admin.common.utils.Result;
  12. import com.huimv.admin.common.utils.ResultCode;
  13. import com.huimv.admin.mapper.*;
  14. import com.huimv.admin.service.IBillPcrService;
  15. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import javax.servlet.http.HttpServletRequest;
  19. import java.text.ParseException;
  20. import java.text.SimpleDateFormat;
  21. import java.util.Date;
  22. import java.util.List;
  23. import java.util.Map;
  24. import javax.annotation.Resource;
  25. import javax.servlet.http.HttpServletRequest;
  26. import java.util.Map;
  27. import java.util.concurrent.Executors;
  28. import java.util.concurrent.ScheduledExecutorService;
  29. import java.util.concurrent.TimeUnit;
  30. /**
  31. * <p>
  32. * pcr 表 服务实现类
  33. * </p>
  34. *
  35. * @author author
  36. * @since 2023-07-21
  37. */
  38. @Service
  39. public class BillPcrServiceImpl extends ServiceImpl<BillPcrMapper, BillPcr> implements IBillPcrService {
  40. @Resource
  41. private BillPcrMapper billPcrMapper;
  42. @Override
  43. public Result listPersonalPcr(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  44. String pageNo = paramsMap.get("pageNum");
  45. String pageSize = paramsMap.get("pageSize");
  46. Page<BillPcr> page = new Page<>(Integer.parseInt(pageNo), Integer.parseInt(pageSize));
  47. Page<BillPcr> billPcrPage = billPcrMapper.selectPage(page, new QueryWrapper<BillPcr>().eq("admission_user_id", TokenSign.getMemberIdByJwtToken(httpServletRequest)).orderByDesc("sub_date"));
  48. return new Result(ResultCode.SUCCESS, billPcrPage);
  49. }
  50. @Autowired
  51. private BillPcrMapper pcrMapper;
  52. @Autowired
  53. private BaseProcessMapper processMapper;
  54. @Autowired
  55. private BaseLocationMapper locationMapper;
  56. @Autowired
  57. private BillCleanMapper cleanMapper;
  58. @Autowired
  59. private BillGoodsInventoryMapper goodsInventoryMapper;
  60. @Override
  61. public Result list(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  62. String farmId = paramsMap.get("farmId");
  63. String type = paramsMap.get("type");//展示类型
  64. String pageNum = paramsMap.get("pageNum");
  65. String pageSize = paramsMap.get("pageSize");
  66. if ("".equals(pageNum) || null == pageNum) {
  67. pageNum = "1";
  68. }
  69. if ("".equals(pageSize) || null == pageSize) {
  70. pageSize = "20";
  71. }
  72. Page<BillPcr> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
  73. QueryWrapper<BillPcr> queryWrapper = new QueryWrapper<>();
  74. queryWrapper.eq("farm_id", farmId).eq("test_location_id", TokenSign.getWorkIdByJwtToken(httpServletRequest)).orderByDesc("sub_date");
  75. if ("0".equals(type)) {
  76. queryWrapper.in("bill_status", 0, 1, 2, 3);
  77. }
  78. if ("1".equals(type)) {
  79. queryWrapper.eq("bill_status", 0);
  80. }
  81. if ("2".equals(type)) {
  82. queryWrapper.eq("bill_status", 1);
  83. }
  84. if ("3".equals(type)) {
  85. queryWrapper.in("bill_status", 2, 3);
  86. }
  87. return new Result(ResultCode.SUCCESS, pcrMapper.selectPage(page, queryWrapper));
  88. }
  89. @Override
  90. public Result listById(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  91. String id = paramsMap.get("id");
  92. BillPcr billPcr = pcrMapper.selectById(id);
  93. return new Result(ResultCode.SUCCESS, billPcr);
  94. }
  95. @Override
  96. public Result edit(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException {
  97. String result = paramsMap.get("result");//1为合格2为异常
  98. String id = paramsMap.get("id");
  99. String farmId = paramsMap.get("farmId");
  100. String date = paramsMap.get("date");
  101. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  102. if (StringUtils.isBlank(date)) {
  103. date = sdf.format(new Date());
  104. }
  105. BillPcr billPcr = pcrMapper.selectById(id);
  106. QueryWrapper<BaseProcess> processQueryWrapper = new QueryWrapper<>();
  107. processQueryWrapper.eq("farm_id", farmId).eq("id", billPcr.getProcessId());
  108. BaseProcess baseProcess = processMapper.selectOne(processQueryWrapper);//进程
  109. QueryWrapper<BaseLocation> locationQueryWrapper = new QueryWrapper<>();
  110. locationQueryWrapper.eq("farm_id", farmId).eq("id", billPcr.getTestLocationId());
  111. BaseLocation baseLocation = locationMapper.selectOne(locationQueryWrapper);//当前pcr检测所在的位置
  112. if (baseProcess.getProcessType() == 2 || baseProcess.getProcessType() == 1) {
  113. return new Result(10001, "修改失败!该申请已提前结束或者被拒绝", false);
  114. } else {
  115. if (billPcr.getDestId() > billPcr.getTestLocationId()) { //说明当前不是目的地
  116. if ("1".equals(result)) {
  117. billPcr.setBillStatus(1);
  118. billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  119. billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  120. billPcr.setTestLocation(baseLocation.getLocationName());
  121. billPcr.setTestLocationId(baseLocation.getId());
  122. billPcr.setCheckDate(sdf.parse(date));
  123. billPcr.setPassDate(sdf.parse(sdf.format(new Date())));
  124. //通过生成洗消记录
  125. BillClean billClean = new BillClean();
  126. billClean.setVistitType(billPcr.getVistitType());
  127. billClean.setDestName(billPcr.getDestName());
  128. billClean.setDestId(billPcr.getDestId());
  129. billClean.setAdmissionUserName(billPcr.getAdmissionUserName());
  130. billClean.setAdmissionUserId(billPcr.getAdmissionUserId());
  131. billClean.setVistitDate(billPcr.getVistitDate());
  132. billClean.setSubDate(billPcr.getSubDate());
  133. billClean.setFarmId(billPcr.getFarmId());
  134. billClean.setPassUserName(billPcr.getPassUserName());
  135. billClean.setPassDate(billPcr.getPassDate());
  136. billClean.setPassUserId(billPcr.getPassUserId());
  137. billClean.setProcessId(billPcr.getProcessId());
  138. billClean.setTestLocation(baseLocation.getNextLocation());
  139. billClean.setTestLocationId(baseLocation.getNextId());
  140. billClean.setPhone(billPcr.getPhone());
  141. billClean.setImgStatus(0);
  142. billClean.setCarNum(billPcr.getCarNum());
  143. cleanMapper.insert(billClean);
  144. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  145. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + "," + baseLocation.getNextLocation());
  146. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + "," + baseLocation.getNextId());
  147. String status = baseProcess.getCurrentStatus();
  148. String substring = status.substring(0, status.length() - 1);
  149. baseProcess.setCurrentStatus(substring + "1," + 0);
  150. processMapper.updateById(baseProcess);
  151. pcrMapper.updateById(billPcr);
  152. ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
  153. Runnable task = new Runnable() {
  154. @Override
  155. public void run() {
  156. //这里写业务
  157. billPcr.setBillStatus(3);
  158. pcrMapper.updateById(billPcr);
  159. }
  160. };
  161. // 设定延迟时间(两小时后执行,单位为秒)
  162. long delay = 60 * 60 * 2;
  163. // 执行定时任务
  164. scheduler.schedule(task, delay, TimeUnit.SECONDS);
  165. return new Result(10000, "修改成功!", true);
  166. } else {
  167. billPcr.setBillStatus(2);
  168. billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  169. billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  170. billPcr.setTestLocation(baseLocation.getLocationName());
  171. billPcr.setTestLocationId(baseLocation.getId());
  172. billPcr.setCheckDate(sdf.parse(date));
  173. billPcr.setPassDate(sdf.parse(sdf.format(new Date())));
  174. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  175. String status = baseProcess.getCurrentStatus();
  176. String substring = status.substring(0, status.length() - 1);
  177. baseProcess.setCurrentStatus(substring + "2," + 0);
  178. if (baseLocation.getId() == 2) {
  179. //第一次检测不合格
  180. billPcr.setPcrType(1);
  181. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + ",初级洗消站污区");
  182. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + ",2");
  183. }
  184. if (baseLocation.getId() == 17) {
  185. //环保车第一次不合格
  186. billPcr.setPcrType(1);
  187. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + ",育肥淘汰有机肥洗消中心");
  188. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + ",2");
  189. }
  190. if (baseLocation.getId() == 26) {
  191. //拉猪车第一次不合格
  192. billPcr.setPcrType(1);
  193. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + ",育肥淘汰有机肥洗消中心");
  194. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + ",2");
  195. }
  196. if (baseLocation.getId() == 32) {
  197. //饲料车第一次不合格
  198. billPcr.setPcrType(1);
  199. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + ",猪场初级中转站");
  200. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + ",2");
  201. }
  202. if (baseLocation.getId() == 6) {
  203. //第二次检测不合格
  204. baseProcess.setProcessType(2);
  205. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  206. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  207. }
  208. if (baseLocation.getId() == 11) {
  209. //第三次不合格
  210. baseProcess.setProcessType(2);
  211. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  212. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  213. }
  214. processMapper.updateById(baseProcess);
  215. pcrMapper.updateById(billPcr);
  216. return new Result(10000, "修改成功!", true);
  217. }
  218. } else {
  219. if ("1".equals(result)) {
  220. billPcr.setBillStatus(1);
  221. billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  222. billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  223. billPcr.setTestLocation(baseLocation.getLocationName());
  224. billPcr.setTestLocationId(baseLocation.getId());
  225. billPcr.setCheckDate(sdf.parse(date));
  226. billPcr.setPassDate(sdf.parse(sdf.format(new Date())));
  227. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  228. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  229. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  230. String status = baseProcess.getCurrentStatus();
  231. String substring = status.substring(0, status.length() - 1);
  232. baseProcess.setCurrentStatus(substring + "1");
  233. baseProcess.setProcessType(1);
  234. processMapper.updateById(baseProcess);
  235. pcrMapper.updateById(billPcr);
  236. ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
  237. Runnable task = new Runnable() {
  238. @Override
  239. public void run() {
  240. //这里写业务
  241. billPcr.setBillStatus(3);
  242. pcrMapper.updateById(billPcr);
  243. }
  244. };
  245. // 设定延迟时间(两小时后执行,单位为秒)
  246. long delay = 60 * 60 * 2;
  247. // 执行定时任务
  248. scheduler.schedule(task, delay, TimeUnit.SECONDS);
  249. return new Result(10000, "修改成功!", true);
  250. } else {
  251. if (baseLocation.getId() == 2) {
  252. //第一次检测不合格
  253. billPcr.setPcrType(1);
  254. baseProcess.setProcessType(2);
  255. } else if (baseLocation.getId() == 17) {
  256. //环保车检测不合格
  257. billPcr.setPcrType(1);
  258. baseProcess.setProcessType(2);
  259. } else if (baseLocation.getId() == 26) {
  260. //拉猪车检测不合格
  261. billPcr.setPcrType(1);
  262. baseProcess.setProcessType(2);
  263. } else if (baseLocation.getId() == 32) {
  264. //饲料车检测不合格
  265. billPcr.setPcrType(1);
  266. baseProcess.setProcessType(2);
  267. } else {
  268. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  269. baseProcess.setProcessType(2);
  270. }
  271. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  272. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  273. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  274. String status = baseProcess.getCurrentStatus();
  275. String substring = status.substring(0, status.length() - 1);
  276. baseProcess.setCurrentStatus(substring + "2," + 0);
  277. billPcr.setBillStatus(2);
  278. billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  279. billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  280. billPcr.setTestLocation(baseLocation.getLocationName());
  281. billPcr.setTestLocationId(baseLocation.getId());
  282. billPcr.setCheckDate(sdf.parse(date));
  283. billPcr.setPassDate(sdf.parse(sdf.format(new Date())));
  284. processMapper.updateById(baseProcess);
  285. pcrMapper.updateById(billPcr);
  286. return new Result(10000, "修改成功!", true);
  287. }
  288. }
  289. }
  290. }
  291. private void xiugaiPro(BaseProcess baseProcess, BillPcr billPcr) {
  292. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + new Date());
  293. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + "," + billPcr.getTestLocation());
  294. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + "," + billPcr.getTestLocationId());
  295. baseProcess.setCurrentStatus(baseProcess.getCurrentStatus() + "," + 2);
  296. }
  297. public String add() {
  298. ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
  299. Runnable task = new Runnable() {
  300. @Override
  301. public void run() {
  302. //这里写业务
  303. System.out.println();
  304. }
  305. };
  306. // 设定延迟时间(两小时后执行,单位为秒)
  307. long delay = 3;
  308. // 执行定时任务
  309. scheduler.schedule(task, delay, TimeUnit.SECONDS);
  310. System.out.println("完结");
  311. return "成功";
  312. }
  313. }