BillPersonnelAdmissionServiceImpl.java 66 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188
  1. package com.huimv.admin.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import cn.hutool.json.JSONUtil;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.core.metadata.IPage;
  7. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  8. import com.fasterxml.jackson.core.type.TypeReference;
  9. import com.fasterxml.jackson.databind.ObjectMapper;
  10. import com.huimv.admin.common.token.TokenSign;
  11. import com.huimv.admin.common.utils.DataUill;
  12. import com.huimv.admin.common.utils.Result;
  13. import com.huimv.admin.common.utils.ResultCode;
  14. import com.huimv.admin.entity.*;
  15. import com.huimv.admin.entity.vo.BillAdmissionAndGoods;
  16. import com.huimv.admin.entity.vo.CleanAndDryVo2;
  17. import com.huimv.admin.mapper.*;
  18. import cn.hutool.core.date.DateTime;
  19. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  20. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  21. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  22. import com.huimv.admin.common.token.TokenSign;
  23. import com.huimv.admin.common.utils.*;
  24. import com.huimv.admin.entity.*;
  25. import com.huimv.admin.entity.vo.FactoryDirectorVo;
  26. import com.huimv.admin.mapper.*;
  27. import com.huimv.admin.service.IBillPersonnelAdmissionService;
  28. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.stereotype.Service;
  31. import org.springframework.transaction.annotation.Transactional;
  32. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  33. import org.springframework.web.bind.annotation.PostMapping;
  34. import org.springframework.web.multipart.MultipartFile;
  35. import javax.annotation.Resource;
  36. import javax.servlet.http.HttpServletRequest;
  37. import java.io.IOException;
  38. import java.time.LocalDateTime;
  39. import java.time.format.DateTimeFormatter;
  40. import java.util.*;
  41. import javax.servlet.http.HttpServletRequest;
  42. import java.text.DateFormat;
  43. import java.text.ParseException;
  44. import java.text.SimpleDateFormat;
  45. import java.time.LocalDate;
  46. import java.time.LocalDateTime;
  47. import java.util.List;
  48. import java.util.Map;
  49. import java.util.concurrent.Executors;
  50. import java.util.concurrent.ScheduledExecutorService;
  51. import java.util.concurrent.TimeUnit;
  52. /**
  53. * <p>
  54. * 入场申请 服务实现类
  55. * </p>
  56. *
  57. * @author author
  58. * @since 2023-07-21
  59. */
  60. @Service
  61. public class BillPersonnelAdmissionServiceImpl extends ServiceImpl<BillPersonnelAdmissionMapper, BillPersonnelAdmission> implements IBillPersonnelAdmissionService {
  62. @Resource
  63. private BillPersonnelAdmissionMapper billPersonnelAdmissionMapper;
  64. @Resource
  65. private BaseProcessMapper baseProcessMapper;
  66. @Resource
  67. private BillPcrMapper billPcrMapper;
  68. @Resource
  69. private BaseLocationMapper baseLocationMapper;
  70. @Resource
  71. private BillIsolateMapper billIsolateMapper;
  72. @Resource
  73. private BillCleanMapper billCleanMapper;
  74. @Resource
  75. private SysAccountMultilevelMapper sysAccountMultilevelMapper;
  76. @Autowired
  77. private UploadImage uploadImage;
  78. @Autowired
  79. private BillDryMapper dryMapper;
  80. @Resource
  81. private BillGoodsInventoryMapper billGoodsInventoryMapper;
  82. @Override
  83. @Transactional(rollbackFor = Exception.class)
  84. public Result addAdmission(HttpServletRequest httpServletRequest, String admissionType, String vistitType, String userName, String phone, String workName, String papersType, String papersCode, MultipartFile imgUrl, String img, String vistitDate, String vistitReson, String destId, String destName, String farmId, String carNum, String source,String goods) throws IOException {
  85. Integer userId = TokenSign.getMemberIdByJwtToken(httpServletRequest);
  86. if (!PhoneNumberValidator.isValidPhoneNumber(phone)) {
  87. return new Result(10001, "手机号格式错误!", false);
  88. }
  89. if (papersType.equals("0")) {
  90. if (!IDCardValidator.isValidIDCard(papersCode)) {
  91. return new Result(10001, "身份证号格式错误!", false);
  92. }
  93. }
  94. DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
  95. BillPersonnelAdmission billPersonnelAdmission = new BillPersonnelAdmission();
  96. billPersonnelAdmission.setAdmissionType(Integer.parseInt(admissionType));
  97. billPersonnelAdmission.setVistitType(Integer.parseInt(vistitType));
  98. billPersonnelAdmission.setDestId(Integer.parseInt(destId));
  99. billPersonnelAdmission.setDestName(destName);
  100. billPersonnelAdmission.setAdmissionUserId(userId);
  101. billPersonnelAdmission.setAdmissionUserName(userName);
  102. billPersonnelAdmission.setVistitDate(LocalDateTime.parse(vistitDate, dateTimeFormatter));
  103. billPersonnelAdmission.setSubDate(LocalDateTime.now());
  104. billPersonnelAdmission.setPhone(phone);
  105. billPersonnelAdmission.setWorkName(workName);
  106. billPersonnelAdmission.setPapersType(Integer.parseInt(papersType));
  107. billPersonnelAdmission.setPapersCode(papersCode);
  108. if (ObjectUtil.isNotEmpty(carNum)) {
  109. billPersonnelAdmission.setCarNum(carNum);
  110. }
  111. if (ObjectUtil.isNotEmpty(imgUrl)) {
  112. if (uploadImage.getImageCom(imgUrl).equals("上传失败")) {
  113. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  114. return new Result(10001, "图片上传失败", false);
  115. }
  116. billPersonnelAdmission.setImgUrl(uploadImage.getImageCom(imgUrl));
  117. }
  118. if (ObjectUtil.isNotEmpty(img)) {
  119. billPersonnelAdmission.setImgUrl(img);
  120. }
  121. if (ObjectUtil.isNotEmpty(source)) {
  122. billPersonnelAdmission.setSource(source);
  123. }
  124. billPersonnelAdmission.setVistitReson(vistitReson);
  125. billPersonnelAdmission.setFarmId(Integer.parseInt(farmId));
  126. BaseProcess baseProcess = new BaseProcess();
  127. baseProcess.setDestName(destName);
  128. baseProcess.setDestId(Integer.parseInt(destId));
  129. baseProcess.setAdmissionUserId(userId);
  130. baseProcess.setAdmissionUserName(userName);
  131. baseProcess.setSubDate(DateTime.now());
  132. baseProcess.setUpdateDate(LocalDateTime.now().format(dateTimeFormatter));
  133. baseProcess.setCurrentStatus("0");
  134. //获取位置
  135. BaseLocation baseLocation;
  136. if (vistitType.equals("5")){
  137. baseLocation = baseLocationMapper.selectOne(new QueryWrapper<BaseLocation>().eq("next_id", destId));
  138. }else {
  139. baseLocation = baseLocationMapper.selectOne(new QueryWrapper<BaseLocation>().eq("farm_id", farmId).eq("vistit_type", vistitType).eq("parent_id", 0));
  140. }
  141. if (ObjectUtil.isEmpty(baseLocation)) {
  142. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  143. return new Result(10001, "该来访类型位置不存在", false);
  144. }
  145. baseProcess.setCurrentLocation(baseLocation.getLocationName());
  146. baseProcess.setCurrentLocationId(baseLocation.getId().toString());
  147. baseProcess.setFarmId(Integer.parseInt(farmId));
  148. baseProcessMapper.insert(baseProcess);
  149. billPersonnelAdmission.setProcessId(baseProcess.getId());
  150. billPersonnelAdmissionMapper.insert(billPersonnelAdmission);
  151. ArrayList<String> phoneList = new ArrayList<>();
  152. List<SysAccountMultilevel> safe = sysAccountMultilevelMapper.selectList(new QueryWrapper<SysAccountMultilevel>().eq("farm_ids", farmId).eq("type", 3));
  153. for (SysAccountMultilevel sysAccountMultilevel : safe) {
  154. phoneList.add(sysAccountMultilevel.getPhone());
  155. }
  156. // SendSMS.sendSMS(phoneList,TokenSign.getUserNameByJwtToken(httpServletRequest)+"入场申请测试");
  157. if (ObjectUtil.isNotEmpty(goods)){
  158. ObjectMapper objectMapper = new ObjectMapper();
  159. List<BillGoodsInventory> admissionAndGoods = objectMapper.readValue(goods, new TypeReference<List<BillGoodsInventory>>() {});
  160. for (BillGoodsInventory good : admissionAndGoods) {
  161. good.setBillAdmission(billPersonnelAdmission.getId());
  162. BaseLocation baseLocation1 = baseLocationMapper.selectOne(new QueryWrapper<BaseLocation>().eq("next_id", destId));
  163. good.setCurrentLocation(baseLocation1.getLocationName());
  164. good.setCurrentLocationId(baseLocation1.getId());
  165. billGoodsInventoryMapper.insert(good);
  166. }
  167. }
  168. return Result.SUCCESS();
  169. }
  170. @Override
  171. public Result listPersonalAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  172. String pageNo = paramsMap.get("pageNum");
  173. String pageSize = paramsMap.get("pageSize");
  174. String vistitType = paramsMap.get("vistitType");
  175. Page<BillPersonnelAdmission> page = new Page<>(Integer.parseInt(pageNo), Integer.parseInt(pageSize));
  176. Page<BillPersonnelAdmission> billPersonnelAdmissionPage = billPersonnelAdmissionMapper.selectPage(page, new QueryWrapper<BillPersonnelAdmission>().eq(StringUtils.isNotBlank(vistitType),"vistit_type",vistitType).eq("admission_user_id", TokenSign.getMemberIdByJwtToken(httpServletRequest)).orderByDesc("sub_date"));
  177. return new Result(ResultCode.SUCCESS, billPersonnelAdmissionPage);
  178. }
  179. @Override
  180. public Result listAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  181. String pageNo = paramsMap.get("pageNum");
  182. String pageSize = paramsMap.get("pageSize");
  183. String type = paramsMap.get("type");
  184. String farmId = paramsMap.get("farmId");
  185. QueryWrapper<BillPersonnelAdmission> queryWrapper = new QueryWrapper<>();
  186. Integer userType = TokenSign.getUserTypeByJwtToken(httpServletRequest);
  187. if (userType == 3) {
  188. //生物安全负责人
  189. queryWrapper.eq("admission_type", 0);
  190. } else if (userType == 2) {
  191. //紧急入场
  192. queryWrapper.ne("admission_type", 0);
  193. }
  194. switch (type) {
  195. case "1":
  196. queryWrapper.eq("bill_status", 0);
  197. break;
  198. case "2":
  199. queryWrapper.eq("bill_status", 1);
  200. break;
  201. case "3":
  202. queryWrapper.eq("bill_status", 2);
  203. break;
  204. default:
  205. break;
  206. }
  207. queryWrapper.orderByDesc("sub_date").eq("farm_id", farmId);
  208. // List<BaseLocation> baseLocations = baseLocationMapper.selectList(new QueryWrapper<BaseLocation>().eq("serial_number", 0));
  209. // List<Integer> locationIds = new ArrayList<>();
  210. // for (BaseLocation baseLocation : baseLocations) {
  211. // locationIds.add(baseLocation.getId());
  212. // }
  213. // if (!locationIds.contains(Integer.parseInt(TokenSign.getWorkIdByJwtToken(httpServletRequest)))){
  214. // queryWrapper.eq("id",0);
  215. // }
  216. Page<BillPersonnelAdmission> page = new Page<>(Integer.parseInt(pageNo), Integer.parseInt(pageSize));
  217. Page<BillPersonnelAdmission> billPersonnelAdmissionPage = billPersonnelAdmissionMapper.selectPage(page, queryWrapper);
  218. return new Result(ResultCode.SUCCESS, billPersonnelAdmissionPage);
  219. }
  220. @Override
  221. @Transactional
  222. public Result handleAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  223. String type = paramsMap.get("type");
  224. String id = paramsMap.get("id");
  225. DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
  226. BillPersonnelAdmission billPersonnelAdmission = billPersonnelAdmissionMapper.selectById(id);
  227. Integer userType = TokenSign.getUserTypeByJwtToken(httpServletRequest);
  228. billPersonnelAdmission.setPassDate(LocalDateTime.now());
  229. billPersonnelAdmission.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  230. billPersonnelAdmission.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  231. BaseProcess baseProcess = baseProcessMapper.selectById(billPersonnelAdmission.getProcessId());
  232. ArrayList<String> phoneList = new ArrayList<>();
  233. phoneList.add(billPersonnelAdmission.getPhone());
  234. if (StringUtils.isBlank(baseProcess.getUpdateDate())) {
  235. baseProcess.setUpdateDate(LocalDateTime.now().format(dateTimeFormatter));
  236. } else {
  237. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + LocalDateTime.now().format(dateTimeFormatter));
  238. }
  239. if (type.equals("0")) {
  240. String[] split = baseProcess.getCurrentStatus().split(",");
  241. split[split.length-1]="2";
  242. //拒绝
  243. billPersonnelAdmission.setBillStatus(2);
  244. baseProcess.setProcessType(2);
  245. baseProcess.setCurrentStatus(String.join(",",split));
  246. // SendSMS.sendSMS(phoneList,"拒绝入场申请测试");
  247. } else {
  248. //通过
  249. billPersonnelAdmission.setBillStatus(1);
  250. //获取pcr位置
  251. String locationId = baseProcess.getCurrentLocationId();
  252. String[] strings = locationId.split(",");
  253. String laseLocationId = strings[strings.length-1];
  254. BaseLocation baseLocation;
  255. System.out.println(billPersonnelAdmission.getDestId());
  256. if (!(billPersonnelAdmission.getDestId() == 9)){
  257. baseLocation = baseLocationMapper.selectById(laseLocationId);
  258. }else {
  259. baseLocation = baseLocationMapper.selectById(billPersonnelAdmission.getDestId());
  260. }
  261. if (userType == 3) {
  262. String[] split = baseProcess.getCurrentStatus().split(",");
  263. split[split.length-1]="1";
  264. StringBuilder result = new StringBuilder();
  265. for (String element : split) {
  266. result.append(element).append(",");
  267. }
  268. result.append("0");
  269. baseProcess.setCurrentStatus(result.toString());
  270. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + "," + baseLocation.getLocationName());
  271. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + "," + baseLocation.getId());
  272. BillPcr billPcr = new BillPcr();
  273. billPcr.setVistitType(billPersonnelAdmission.getVistitType());
  274. billPcr.setDestName(billPersonnelAdmission.getDestName());
  275. billPcr.setDestId(billPersonnelAdmission.getDestId());
  276. billPcr.setPhone(billPersonnelAdmission.getPhone());
  277. billPcr.setAdmissionUserId(billPersonnelAdmission.getAdmissionUserId());
  278. billPcr.setAdmissionUserName(billPersonnelAdmission.getAdmissionUserName());
  279. billPcr.setSubDate(LocalDateTime.now());
  280. billPcr.setVistitDate(billPersonnelAdmission.getVistitDate());
  281. billPcr.setFarmId(billPersonnelAdmission.getFarmId());
  282. billPcr.setProcessId(billPersonnelAdmission.getProcessId());
  283. billPcr.setAdmissionId(Integer.parseInt(id));
  284. if (ObjectUtil.isNotEmpty(billPersonnelAdmission.getCarNum())) {
  285. billPcr.setCarNum(billPersonnelAdmission.getCarNum());
  286. }
  287. billPcr.setTestLocation(baseLocation.getLocationName());
  288. billPcr.setTestLocationId(baseLocation.getId());
  289. billPcrMapper.insert(billPcr);
  290. // SendSMS.sendSMS(phoneList,"通过入场申请测试");
  291. } else {
  292. baseProcess.setCurrentStatus("1");
  293. // baseProcess.setCurrentLocation(baseProcess.getCurrentLocation()+","+baseLocation.getLocationName());
  294. // baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() +","+baseLocation.getId());
  295. //TODO 紧急入场通过先不处理
  296. }
  297. }
  298. baseProcessMapper.updateById(baseProcess);
  299. billPersonnelAdmissionMapper.updateById(billPersonnelAdmission);
  300. return Result.SUCCESS();
  301. }
  302. @Override
  303. public Result listAll(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  304. String type = paramsMap.get("type");
  305. String farmId = paramsMap.get("farmId");
  306. String pageNo = paramsMap.get("pageNum");
  307. String pageSize = paramsMap.get("pageSize");
  308. Page<FactoryDirectorVo> page = new Page<>(Integer.parseInt(pageNo), Integer.parseInt(pageSize));
  309. IPage<FactoryDirectorVo> factoryDirectorList;
  310. if (type.equals("0")) {
  311. factoryDirectorList = billPersonnelAdmissionMapper.listAll(type, farmId, page);
  312. } else {
  313. factoryDirectorList = billPersonnelAdmissionMapper.listCarAll(type, farmId, page);
  314. }
  315. return new Result(ResultCode.SUCCESS, factoryDirectorList);
  316. }
  317. @Override
  318. public Result getDetail(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  319. String type = paramsMap.get("type");
  320. String id = paramsMap.get("id");
  321. if (type.equals("0")) {
  322. BillPersonnelAdmission billPersonnelAdmission = billPersonnelAdmissionMapper.selectById(id);
  323. BillAdmissionAndGoods billAdmissionAndGoods = new BillAdmissionAndGoods();
  324. BeanUtil.copyProperties(billPersonnelAdmission,billAdmissionAndGoods);
  325. List<BillGoodsInventory> billGoodsInventories = billGoodsInventoryMapper.selectList(new QueryWrapper<BillGoodsInventory>().eq("bill_admission", id));
  326. billAdmissionAndGoods.setGoods(billGoodsInventories);
  327. return new Result(ResultCode.SUCCESS,billAdmissionAndGoods);
  328. } else if (type.equals("1")) {
  329. return new Result(ResultCode.SUCCESS, billPcrMapper.selectById(id));
  330. } else if (type.equals("2")) {
  331. return new Result(ResultCode.SUCCESS, billCleanMapper.selectById(id));
  332. } else if (type.equals("4")) {
  333. return new Result(ResultCode.SUCCESS, dryMapper.selectById(id));
  334. } else {
  335. return new Result(ResultCode.SUCCESS, billIsolateMapper.selectById(id));
  336. }
  337. }
  338. @Autowired
  339. private BillPcrMapper pcrMapper;
  340. @Autowired
  341. private BaseProcessMapper processMapper;
  342. @Autowired
  343. private BaseLocationMapper locationMapper;
  344. @Autowired
  345. private BillCleanMapper cleanMapper;
  346. @Autowired
  347. private BillIsolateMapper isolateMapper;
  348. @Override
  349. public Result listPrc(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  350. String type = paramsMap.get("type");//类型
  351. String pageNum = paramsMap.get("pageNum");
  352. String pageSize = paramsMap.get("pageSize");
  353. if ("".equals(pageNum) || null == pageNum) {
  354. pageNum = "1";
  355. }
  356. if ("".equals(pageSize) || null == pageSize) {
  357. pageSize = "20";
  358. }
  359. Page<BillPcr> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
  360. if ("".equals(type) || null == type) {
  361. type = "0";
  362. }
  363. String farmId = paramsMap.get("farmId");
  364. QueryWrapper<BillPcr> queryWrapper = new QueryWrapper<>();
  365. queryWrapper.eq("farm_id", farmId).orderByDesc("sub_date");
  366. if ("0".equals(type)) {
  367. queryWrapper.in("pcr_type", 1, 2, 3);
  368. }
  369. if ("1".equals(type)) {
  370. queryWrapper.eq("pcr_type", 1);
  371. }
  372. if ("2".equals(type)) {
  373. queryWrapper.eq("pcr_type", 2);
  374. }
  375. if ("3".equals(type)) {
  376. queryWrapper.eq("pcr_type", 3);
  377. }
  378. return new Result(ResultCode.SUCCESS, pcrMapper.selectPage(page, queryWrapper));
  379. }
  380. @Override
  381. public Result listById(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  382. String id = paramsMap.get("id");
  383. return new Result(ResultCode.SUCCESS, pcrMapper.selectById(id));
  384. }
  385. @Override
  386. public Result editStatus(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException {
  387. String farmId = paramsMap.get("farmId");
  388. String type = paramsMap.get("type");
  389. String id = paramsMap.get("id");
  390. String data = paramsMap.get("data");
  391. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  392. if (StringUtils.isBlank(data)) {
  393. data = sdf.format(new Date());
  394. }
  395. BillPcr billPcr = pcrMapper.selectById(id);
  396. QueryWrapper<BaseProcess> processQueryWrapper = new QueryWrapper<>();
  397. processQueryWrapper.eq("farm_id", farmId).eq("id", billPcr.getProcessId());
  398. BaseProcess baseProcess = processMapper.selectOne(processQueryWrapper);//进程
  399. QueryWrapper<BaseLocation> locationQueryWrapper = new QueryWrapper<>();
  400. locationQueryWrapper.eq("farm_id", farmId).eq("id", billPcr.getTestLocationId());
  401. BaseLocation baseLocation = locationMapper.selectOne(locationQueryWrapper);//当前pcr检测所在的位置
  402. if (baseProcess.getProcessType() == 2 || baseProcess.getProcessType() == 1) {
  403. return new Result(10001, "修改失败!该申请已提前结束或者被拒绝", false);
  404. } else {
  405. if (billPcr.getDestId() > billPcr.getTestLocationId()) { //说明当前不是目的地
  406. if ("1".equals(type)) {
  407. billPcr.setBillStatus(1);
  408. billPcr.setPcrType(2);
  409. billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  410. billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  411. billPcr.setTestLocation(baseLocation.getLocationName());
  412. billPcr.setTestLocationId(baseLocation.getId());
  413. billPcr.setPassDate(sdf.parse(sdf.format(new Date())));
  414. billPcr.setCheckDate(sdf.parse(data));
  415. //通过生成洗消记录
  416. BillClean billClean = new BillClean();
  417. billClean.setPhone(billPcr.getPhone());
  418. billClean.setVistitType(billPcr.getVistitType());
  419. billClean.setDestName(billPcr.getDestName());
  420. billClean.setDestId(billPcr.getDestId());
  421. billClean.setAdmissionUserName(billPcr.getAdmissionUserName());
  422. billClean.setAdmissionUserId(billPcr.getAdmissionUserId());
  423. billClean.setVistitDate(billPcr.getVistitDate());
  424. billClean.setSubDate(billPcr.getSubDate());
  425. billClean.setFarmId(billPcr.getFarmId());
  426. billClean.setPassUserName(billPcr.getPassUserName());
  427. billClean.setPassDate(billPcr.getPassDate());
  428. billClean.setPassUserId(billPcr.getPassUserId());
  429. billClean.setProcessId(billPcr.getProcessId());
  430. billClean.setTestLocation(baseLocation.getNextLocation());
  431. billClean.setTestLocationId(baseLocation.getNextId());
  432. billClean.setImgStatus(0);
  433. billClean.setCarNum(billPcr.getCarNum());
  434. cleanMapper.insert(billClean);
  435. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  436. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + "," + baseLocation.getNextLocation());
  437. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + "," + baseLocation.getNextId());
  438. String status = baseProcess.getCurrentStatus();
  439. String substring = status.substring(0, status.length() - 1);
  440. baseProcess.setCurrentStatus(substring + "1," + 0);
  441. processMapper.updateById(baseProcess);
  442. pcrMapper.updateById(billPcr);
  443. return new Result(10000, "修改成功!", true);
  444. } else {
  445. billPcr.setBillStatus(2);
  446. billPcr.setPcrType(3);
  447. billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  448. billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  449. billPcr.setTestLocation(baseLocation.getLocationName());
  450. billPcr.setTestLocationId(baseLocation.getId());
  451. billPcr.setPassDate(sdf.parse(sdf.format(new Date())));
  452. billPcr.setCheckDate(sdf.parse(data));
  453. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  454. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  455. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  456. String status = baseProcess.getCurrentStatus();
  457. String substring = status.substring(0, status.length() - 1);
  458. baseProcess.setCurrentStatus(substring + "2");
  459. baseProcess.setProcessType(2);
  460. processMapper.updateById(baseProcess);
  461. pcrMapper.updateById(billPcr);
  462. return new Result(10000, "修改成功!", true);
  463. }
  464. } else {
  465. if ("1".equals(type)) {
  466. billPcr.setBillStatus(1);
  467. billPcr.setPcrType(2);
  468. billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  469. billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  470. billPcr.setTestLocation(baseLocation.getLocationName());
  471. billPcr.setTestLocationId(baseLocation.getId());
  472. billPcr.setPassDate(sdf.parse(sdf.format(new Date())));
  473. billPcr.setCheckDate(sdf.parse(data));
  474. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  475. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  476. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  477. String status = baseProcess.getCurrentStatus();
  478. String substring = status.substring(0, status.length() - 1);
  479. baseProcess.setCurrentStatus(substring + "1");
  480. baseProcess.setProcessType(1);
  481. processMapper.updateById(baseProcess);
  482. pcrMapper.updateById(billPcr);
  483. return new Result(10000, "修改成功!", true);
  484. } else {
  485. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  486. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  487. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  488. String status = baseProcess.getCurrentStatus();
  489. String substring = status.substring(0, status.length() - 1);
  490. baseProcess.setCurrentStatus(substring + "2");
  491. baseProcess.setProcessType(2);
  492. billPcr.setBillStatus(2);
  493. billPcr.setPcrType(3);
  494. billPcr.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  495. billPcr.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  496. billPcr.setTestLocation(baseLocation.getLocationName());
  497. billPcr.setTestLocationId(baseLocation.getId());
  498. billPcr.setPassDate(sdf.parse(sdf.format(new Date())));
  499. billPcr.setCheckDate(sdf.parse(data));
  500. processMapper.updateById(baseProcess);
  501. pcrMapper.updateById(billPcr);
  502. return new Result(10000, "修改成功!", true);
  503. }
  504. }
  505. }
  506. }
  507. @Override
  508. public Result listIsolate(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  509. String type = paramsMap.get("type");//类型
  510. String pageNum = paramsMap.get("pageNum");
  511. String pageSize = paramsMap.get("pageSize");
  512. if ("".equals(pageNum) || null == pageNum) {
  513. pageNum = "1";
  514. }
  515. if ("".equals(pageSize) || null == pageSize) {
  516. pageSize = "20";
  517. }
  518. Page<BillIsolate> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
  519. if ("".equals(type) || null == type) {
  520. type = "0";
  521. }
  522. String farmId = paramsMap.get("farmId");
  523. QueryWrapper<BillIsolate> queryWrapper = new QueryWrapper<>();
  524. queryWrapper.eq("farm_id", farmId).orderByDesc("sub_date");
  525. if ("0".equals(type)) {
  526. queryWrapper.in("bill_status", 0, 1, 2, 3);
  527. }
  528. if ("1".equals(type)) {
  529. queryWrapper.eq("bill_status", 0);
  530. }
  531. if ("2".equals(type)) {
  532. queryWrapper.in("bill_status", 1, 2);
  533. }
  534. if ("3".equals(type)) {
  535. queryWrapper.eq("bill_status", 3);
  536. }
  537. return new Result(ResultCode.SUCCESS, isolateMapper.selectPage(page, queryWrapper));
  538. }
  539. @Override
  540. public Result isolateById(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  541. String id = paramsMap.get("id");
  542. return new Result(ResultCode.SUCCESS, isolateMapper.selectById(id));
  543. }
  544. @Override
  545. public Result commitIsolate(HttpServletRequest httpServletRequest, BillIsolate billIsolate) {
  546. BillIsolate isolate = isolateMapper.selectById(billIsolate.getId());
  547. Date startDate = billIsolate.getIsolateStartDate();
  548. Integer dayNum = billIsolate.getIsolateDayNum();//隔离天数
  549. Date endDate = DataUill.getNextDay(startDate, dayNum);
  550. isolate.setIsolateStartDate(startDate);
  551. isolate.setIsolateEndDate(endDate);
  552. isolate.setIsolateDayNum(dayNum);
  553. isolate.setBillStatus(1);
  554. isolateMapper.updateById(isolate);
  555. ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
  556. Runnable task = new Runnable() {
  557. @Override
  558. public void run() {
  559. //这里写业务
  560. BillIsolate isolate = isolateMapper.selectById(billIsolate.getId());
  561. QueryWrapper<BaseLocation> locationQueryWrapper = new QueryWrapper<>();
  562. locationQueryWrapper.eq("farm_id", isolate.getFarmId()).eq("id", isolate.getIsolateLocationId());
  563. BaseLocation baseLocation = locationMapper.selectOne(locationQueryWrapper);//当前所在的位置
  564. QueryWrapper<BaseProcess> processQueryWrapper = new QueryWrapper<>();
  565. processQueryWrapper.eq("farm_id", isolate.getFarmId()).eq("id", isolate.getProcessId());
  566. BaseProcess baseProcess = processMapper.selectOne(processQueryWrapper);//进程
  567. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  568. if (isolate.getBillStatus() == 1) {
  569. isolate.setBillStatus(2);
  570. if (isolate.getDestId() > isolate.getIsolateLocationId()) { //当前不是目的地
  571. if (isolate.getIsolateLocationId() == 8) {
  572. //通过生成洗消记录
  573. BillClean billClean = new BillClean();
  574. billClean.setPhone(isolate.getPhone());
  575. billClean.setVistitType(isolate.getVistitType());
  576. billClean.setDestName(isolate.getDestName());
  577. billClean.setDestId(isolate.getDestId());
  578. billClean.setAdmissionUserName(isolate.getAdmissionUserName());
  579. billClean.setAdmissionUserId(isolate.getAdmissionUserId());
  580. billClean.setVistitDate(isolate.getVistitDate());
  581. billClean.setSubDate(isolate.getSubDate());
  582. billClean.setFarmId(isolate.getFarmId());
  583. billClean.setPassUserName(isolate.getPassUserName());
  584. billClean.setPassDate(isolate.getPassDate());
  585. billClean.setPassUserId(isolate.getPassUserId());
  586. billClean.setProcessId(isolate.getProcessId());
  587. billClean.setTestLocation(baseLocation.getNextLocation());
  588. billClean.setTestLocationId(baseLocation.getNextId());
  589. cleanMapper.insert(billClean);
  590. }
  591. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  592. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + "," + baseLocation.getNextLocation());
  593. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + "," + baseLocation.getNextId());
  594. String status = baseProcess.getCurrentStatus();
  595. String substring = status.substring(0, status.length() - 1);
  596. baseProcess.setCurrentStatus(substring + "1," + 0);
  597. processMapper.updateById(baseProcess);
  598. } else {
  599. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  600. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  601. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  602. String status = baseProcess.getCurrentStatus();
  603. String substring = status.substring(0, status.length() - 1);
  604. baseProcess.setCurrentStatus(substring + "2");
  605. baseProcess.setProcessType(1);
  606. processMapper.updateById(baseProcess);
  607. }
  608. isolateMapper.updateById(isolate);
  609. }
  610. }
  611. };
  612. // 设定延迟时间(两小时后执行,单位为秒)
  613. long delay = (endDate.getTime() - startDate.getTime()) / 1000;
  614. // 执行定时任务
  615. scheduler.schedule(task, delay, TimeUnit.SECONDS);
  616. return new Result(10000, "提交成功!", true);
  617. }
  618. @Override
  619. public Result editIsolate(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException {
  620. String id = paramsMap.get("id");
  621. String farmId = paramsMap.get("farmId");
  622. String remark = paramsMap.get("remark");//是否提前结束隔离的标识
  623. BillIsolate billIsolate = isolateMapper.selectById(id);
  624. BaseProcess baseProcess = processMapper.selectById(billIsolate.getProcessId());
  625. QueryWrapper<BaseLocation> locationQueryWrapper = new QueryWrapper<>();
  626. locationQueryWrapper.eq(StringUtils.isNotBlank(farmId), "farm_id", farmId).eq("id", billIsolate.getIsolateLocationId());
  627. BaseLocation baseLocation = locationMapper.selectOne(locationQueryWrapper);//当前隔离所在的位置
  628. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  629. String end = sdf.format(billIsolate.getIsolateEndDate());
  630. String start = sdf.format(billIsolate.getIsolateStartDate());
  631. String now = sdf.format(new Date());
  632. int res = now.compareTo(end);
  633. if (res > 0) {//当前时间晚于隔离结束时间
  634. if (baseProcess.getDestId().equals(billIsolate.getIsolateLocationId()) || baseProcess.getDestId() >= 13) {
  635. //目的地就是当前隔离地点
  636. baseProcess.setProcessType(1);
  637. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  638. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  639. } else {
  640. baseProcess.setProcessType(0);
  641. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + "," + baseLocation.getNextLocation());
  642. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + "," + baseLocation.getNextId());
  643. }
  644. if (billIsolate.getIsolateLocationId() == 3 && baseProcess.getDestId() >= 4) {
  645. //通过生成洗消记录
  646. BillClean billClean = new BillClean();
  647. billClean.setVistitType(billIsolate.getVistitType());
  648. billClean.setDestName(billIsolate.getDestName());
  649. billClean.setDestId(billIsolate.getDestId());
  650. billClean.setAdmissionUserName(billIsolate.getAdmissionUserName());
  651. billClean.setAdmissionUserId(billIsolate.getAdmissionUserId());
  652. billClean.setVistitDate(billIsolate.getVistitDate());
  653. billClean.setSubDate(billIsolate.getSubDate());
  654. billClean.setFarmId(billIsolate.getFarmId());
  655. billClean.setPassUserName(billIsolate.getPassUserName());
  656. billClean.setPassDate(billIsolate.getPassDate());
  657. billClean.setPassUserId(billIsolate.getPassUserId());
  658. billClean.setProcessId(billIsolate.getProcessId());
  659. billClean.setTestLocation("场内");
  660. billClean.setTestLocationId(4);
  661. billClean.setPhone(billIsolate.getPhone());
  662. cleanMapper.insert(billClean);
  663. }
  664. billIsolate.setIsolateRealEndDate(new Date());
  665. SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
  666. Calendar cal1 = Calendar.getInstance();
  667. Calendar cal2 = Calendar.getInstance();
  668. Date startDate = sdf1.parse(start);
  669. Date endDate = sdf1.parse(now);
  670. cal1.setTime(startDate);
  671. cal2.setTime(endDate);
  672. long days = (cal2.getTimeInMillis() - cal1.getTimeInMillis()) / (1000 * 3600 * 24);
  673. billIsolate.setIsolateRealDayNum((int) days);
  674. billIsolate.setBillStatus(2);
  675. billIsolate.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  676. billIsolate.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  677. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + now);
  678. String status = baseProcess.getCurrentStatus();
  679. String substring = status.substring(0, status.length() - 1);
  680. baseProcess.setCurrentStatus(substring + "1," + 0);
  681. isolateMapper.updateById(billIsolate);
  682. processMapper.updateById(baseProcess);
  683. return new Result(10000, "正常解除隔离成功!", true);
  684. } else {
  685. //提前结束隔离
  686. if (baseProcess.getDestId().equals(billIsolate.getIsolateLocationId())) {
  687. //目的地就是当前隔离地点
  688. baseProcess.setProcessType(1);
  689. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  690. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  691. } else {
  692. baseProcess.setProcessType(0);
  693. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + "," + baseLocation.getNextLocation());
  694. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + "," + baseLocation.getNextId());
  695. }
  696. if (billIsolate.getIsolateLocationId() == 8 && baseProcess.getDestId() >= 10) {
  697. //通过生成洗消记录
  698. BillClean billClean = new BillClean();
  699. billClean.setVistitType(billIsolate.getVistitType());
  700. billClean.setDestName(billIsolate.getDestName());
  701. billClean.setDestId(billIsolate.getDestId());
  702. billClean.setAdmissionUserName(billIsolate.getAdmissionUserName());
  703. billClean.setAdmissionUserId(billIsolate.getAdmissionUserId());
  704. billClean.setVistitDate(billIsolate.getVistitDate());
  705. billClean.setSubDate(billIsolate.getSubDate());
  706. billClean.setFarmId(billIsolate.getFarmId());
  707. billClean.setPassUserName(billIsolate.getPassUserName());
  708. billClean.setPassDate(billIsolate.getPassDate());
  709. billClean.setPassUserId(billIsolate.getPassUserId());
  710. billClean.setProcessId(billIsolate.getProcessId());
  711. billClean.setTestLocation("场内洗澡间1");
  712. billClean.setTestLocationId(10);
  713. billClean.setPhone(billIsolate.getPhone());
  714. cleanMapper.insert(billClean);
  715. }
  716. billIsolate.setIsolateRealEndDate(new Date());
  717. SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
  718. Calendar cal1 = Calendar.getInstance();
  719. Calendar cal2 = Calendar.getInstance();
  720. Date startDate = sdf1.parse(start);
  721. Date endDate = sdf1.parse(now);
  722. cal1.setTime(startDate);
  723. cal2.setTime(endDate);
  724. long days = (cal2.getTimeInMillis() - cal1.getTimeInMillis()) / (1000 * 3600 * 24);
  725. billIsolate.setIsolateRealDayNum((int) days);
  726. billIsolate.setBillStatus(3);
  727. billIsolate.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  728. billIsolate.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  729. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + now);
  730. String status = baseProcess.getCurrentStatus();
  731. String substring = status.substring(0, status.length() - 1);
  732. baseProcess.setCurrentStatus(substring + "1," + 0);
  733. isolateMapper.updateById(billIsolate);
  734. processMapper.updateById(baseProcess);
  735. return new Result(10000, "提前解除隔离成功!", true);
  736. }
  737. }
  738. @Override
  739. public Result listClean(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  740. String type = paramsMap.get("type");//类型
  741. String pageNum = paramsMap.get("pageNum");
  742. String pageSize = paramsMap.get("pageSize");
  743. if ("".equals(pageNum) || null == pageNum) {
  744. pageNum = "1";
  745. }
  746. if ("".equals(pageSize) || null == pageSize) {
  747. pageSize = "20";
  748. }
  749. Page<CleanAndDryVo2> cleanAndDryVo2Page = null;
  750. Page<CleanAndDryVo2> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
  751. if ("".equals(type) || null == type) {
  752. type = "0";
  753. }
  754. String farmId = paramsMap.get("farmId");
  755. QueryWrapper<BillClean> queryWrapper = new QueryWrapper<>();
  756. queryWrapper.eq("farm_id", farmId).ne("vistit_type", 0).orderByDesc("sub_date");
  757. if ("0".equals(type)) {
  758. cleanAndDryVo2Page = cleanMapper.CleanAndDry2(page, farmId, "0,1,2".split(","));
  759. }
  760. ArrayList<String> arrayList = new ArrayList<>();
  761. if ("1".equals(type)) {
  762. arrayList.add("0");
  763. String[] s = arrayList.toArray(new String[arrayList.size()]);
  764. cleanAndDryVo2Page = cleanMapper.CleanAndDry2(page, farmId, s);
  765. }
  766. if ("2".equals(type)) {
  767. arrayList.add("1");
  768. String[] s = arrayList.toArray(new String[arrayList.size()]);
  769. cleanAndDryVo2Page = cleanMapper.CleanAndDry2(page, farmId, s);
  770. }
  771. if ("3".equals(type)) {
  772. arrayList.add("2");
  773. String[] s = arrayList.toArray(new String[arrayList.size()]);
  774. cleanAndDryVo2Page = cleanMapper.CleanAndDry2(page, farmId, s);
  775. }
  776. return new Result(ResultCode.SUCCESS, cleanAndDryVo2Page);
  777. }
  778. @Override
  779. public Result listByIdClean(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  780. String id = paramsMap.get("id");
  781. return new Result(ResultCode.SUCCESS, cleanMapper.selectById(id));
  782. }
  783. //清洗和洗消的检测
  784. @Override
  785. public Result editClean(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException {
  786. String result = paramsMap.get("result");
  787. String id = paramsMap.get("id");
  788. String farmId = paramsMap.get("farmId");
  789. BillClean billClean = cleanMapper.selectById(id);
  790. QueryWrapper<BaseProcess> processQueryWrapper = new QueryWrapper<>();
  791. processQueryWrapper.eq("farm_id", farmId).eq("id", billClean.getProcessId());
  792. BaseProcess baseProcess = processMapper.selectOne(processQueryWrapper);//进程
  793. QueryWrapper<BaseLocation> locationQueryWrapper = new QueryWrapper<>();
  794. locationQueryWrapper.eq("farm_id", farmId).eq("id", billClean.getTestLocationId());
  795. BaseLocation baseLocation = locationMapper.selectOne(locationQueryWrapper);//当前洗消检测所在的位置
  796. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  797. if (baseProcess.getProcessType() == 2 || baseProcess.getProcessType() == 1) {
  798. return new Result(10001, "修改失败!该申请已提前结束或者被拒绝", false);
  799. } else {
  800. if (billClean.getDestId() > billClean.getTestLocationId()) { //说明当前不是目的地
  801. if ("1".equals(result)) {
  802. billClean.setBillStatus(1);
  803. billClean.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  804. billClean.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  805. billClean.setTestLocation(baseLocation.getLocationName());
  806. billClean.setTestLocationId(baseLocation.getId());
  807. billClean.setPassDate(sdf.parse(sdf.format(new Date())));
  808. billClean.setCheckDate(sdf.parse(sdf.format(new Date())));
  809. //拉猪车结束
  810. if (billClean.getTestLocationId() == 16) {
  811. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  812. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  813. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  814. String status = baseProcess.getCurrentStatus();
  815. String substring = status.substring(0, status.length() - 1);
  816. baseProcess.setCurrentStatus(substring + "1");
  817. baseProcess.setProcessType(1);
  818. } else {
  819. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  820. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + "," + baseLocation.getNextLocation());
  821. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + "," + baseLocation.getNextId());
  822. String status = baseProcess.getCurrentStatus();
  823. String substring = status.substring(0, status.length() - 1);
  824. baseProcess.setCurrentStatus(substring + "1," + 0);
  825. }
  826. //环保车洗消合格生成烘干申请
  827. if (billClean.getTestLocationId() == 12 || billClean.getTestLocationId() == 13) {
  828. BillDry billDry = new BillDry();
  829. billDry.setVistitType(billClean.getVistitType());
  830. billDry.setDestName(billClean.getDestName());
  831. billDry.setDestId(billClean.getDestId());
  832. billDry.setAdmissionUserName(billClean.getAdmissionUserName());
  833. billDry.setAdmissionUserId(billClean.getAdmissionUserId());
  834. billDry.setVistitDate(billClean.getVistitDate());
  835. billDry.setSubDate(billClean.getSubDate());
  836. billDry.setFarmId(billClean.getFarmId());
  837. billDry.setBillStatus(0);
  838. billDry.setProcessId(billClean.getProcessId());
  839. billDry.setTestLocation(baseLocation.getLocationName());
  840. billDry.setTestLocationId(baseLocation.getId());
  841. billDry.setPhone(billClean.getPhone());
  842. billDry.setCarNum(billClean.getCarNum());
  843. billDry.setImgStatus(0);
  844. dryMapper.insert(billDry);
  845. }
  846. //拉猪车洗消合格生成烘干申请
  847. if (billClean.getTestLocationId() == 15) {
  848. BillDry billDry = new BillDry();
  849. billDry.setVistitType(billClean.getVistitType());
  850. billDry.setDestName(billClean.getDestName());
  851. billDry.setDestId(billClean.getDestId());
  852. billDry.setAdmissionUserName(billClean.getAdmissionUserName());
  853. billDry.setAdmissionUserId(billClean.getAdmissionUserId());
  854. billDry.setVistitDate(billClean.getVistitDate());
  855. billDry.setSubDate(billClean.getSubDate());
  856. billDry.setFarmId(billClean.getFarmId());
  857. billDry.setBillStatus(0);
  858. billDry.setProcessId(billClean.getProcessId());
  859. billDry.setTestLocation(baseLocation.getLocationName());
  860. billDry.setTestLocationId(baseLocation.getId());
  861. billDry.setPhone(billClean.getPhone());
  862. billDry.setCarNum(billClean.getCarNum());
  863. billDry.setImgStatus(0);
  864. dryMapper.insert(billDry);
  865. }
  866. //送猪车洗消合格生成烘干申请
  867. if (billClean.getTestLocationId() == 17) {
  868. BillDry billDry = new BillDry();
  869. billDry.setVistitType(billClean.getVistitType());
  870. billDry.setDestName(billClean.getDestName());
  871. billDry.setDestId(billClean.getDestId());
  872. billDry.setAdmissionUserName(billClean.getAdmissionUserName());
  873. billDry.setAdmissionUserId(billClean.getAdmissionUserId());
  874. billDry.setVistitDate(billClean.getVistitDate());
  875. billDry.setSubDate(billClean.getSubDate());
  876. billDry.setFarmId(billClean.getFarmId());
  877. billDry.setBillStatus(0);
  878. billDry.setProcessId(billClean.getProcessId());
  879. billDry.setTestLocation(baseLocation.getLocationName());
  880. billDry.setTestLocationId(baseLocation.getId());
  881. billDry.setPhone(billClean.getPhone());
  882. billDry.setCarNum(billClean.getCarNum());
  883. billDry.setImgStatus(0);
  884. dryMapper.insert(billDry);
  885. }
  886. processMapper.updateById(baseProcess);
  887. cleanMapper.updateById(billClean);
  888. return new Result(10000, "修改成功!", true);
  889. } else {
  890. billClean.setBillStatus(2);
  891. billClean.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  892. billClean.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  893. billClean.setTestLocation(baseLocation.getLocationName());
  894. billClean.setTestLocationId(baseLocation.getId());
  895. billClean.setPassDate(sdf.parse(sdf.format(new Date())));
  896. billClean.setCheckDate(sdf.parse(sdf.format(new Date())));
  897. billClean.setImgStatus(0);
  898. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  899. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  900. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  901. String status = baseProcess.getCurrentStatus();
  902. String substring = status.substring(0, status.length() - 1);
  903. baseProcess.setCurrentStatus(substring + "2");
  904. baseProcess.setProcessType(2);
  905. processMapper.updateById(baseProcess);
  906. cleanMapper.updateById(billClean);
  907. return new Result(10000, "修改成功!", true);
  908. }
  909. } else {
  910. if ("1".equals(result)) {
  911. billClean.setBillStatus(1);
  912. billClean.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  913. billClean.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  914. billClean.setTestLocation(baseLocation.getLocationName());
  915. billClean.setTestLocationId(baseLocation.getId());
  916. billClean.setPassDate(sdf.parse(sdf.format(new Date())));
  917. billClean.setCheckDate(sdf.parse(sdf.format(new Date())));
  918. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  919. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  920. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  921. String status = baseProcess.getCurrentStatus();
  922. String substring = status.substring(0, status.length() - 1);
  923. baseProcess.setCurrentStatus(substring + "1");
  924. baseProcess.setProcessType(1);
  925. processMapper.updateById(baseProcess);
  926. cleanMapper.updateById(billClean);
  927. return new Result(10000, "修改成功!", true);
  928. } else {
  929. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  930. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  931. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  932. String status = baseProcess.getCurrentStatus();
  933. String substring = status.substring(0, status.length() - 1);
  934. baseProcess.setCurrentStatus(substring + "2");
  935. baseProcess.setProcessType(2);
  936. billClean.setBillStatus(2);
  937. billClean.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  938. billClean.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  939. billClean.setTestLocation(baseLocation.getLocationName());
  940. billClean.setTestLocationId(baseLocation.getId());
  941. billClean.setPassDate(sdf.parse(sdf.format(new Date())));
  942. billClean.setCheckDate(sdf.parse(sdf.format(new Date())));
  943. billClean.setImgStatus(0);
  944. processMapper.updateById(baseProcess);
  945. cleanMapper.updateById(billClean);
  946. return new Result(10000, "修改成功!", true);
  947. }
  948. }
  949. }
  950. }
  951. //烘干检测
  952. @Override
  953. public Result editDry(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException {
  954. String result = paramsMap.get("result");
  955. String id = paramsMap.get("id");
  956. String farmId = paramsMap.get("farmId");
  957. BillDry billClean = dryMapper.selectById(id);
  958. QueryWrapper<BaseProcess> processQueryWrapper = new QueryWrapper<>();
  959. processQueryWrapper.eq("farm_id", farmId).eq("id", billClean.getProcessId());
  960. BaseProcess baseProcess = processMapper.selectOne(processQueryWrapper);//进程
  961. QueryWrapper<BaseLocation> locationQueryWrapper = new QueryWrapper<>();
  962. locationQueryWrapper.eq("farm_id", farmId).eq("id", billClean.getTestLocationId());
  963. BaseLocation baseLocation = locationMapper.selectOne(locationQueryWrapper);//当前洗消检测所在的位置
  964. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  965. if (baseProcess.getProcessType() == 2 || baseProcess.getProcessType() == 1) {
  966. return new Result(10001, "修改失败!该申请已提前结束或者被拒绝", false);
  967. } else {
  968. if (billClean.getDestId() > billClean.getTestLocationId()) { //说明当前不是目的地
  969. if ("1".equals(result)) {
  970. billClean.setBillStatus(1);
  971. billClean.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  972. billClean.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  973. billClean.setTestLocation(baseLocation.getLocationName());
  974. billClean.setTestLocationId(baseLocation.getId());
  975. billClean.setPassDate(sdf.parse(sdf.format(new Date())));
  976. billClean.setCheckDate(sdf.parse(sdf.format(new Date())));
  977. //最终结束
  978. if (billClean.getTestLocationId() == 60 || billClean.getTestLocationId() == 58 || billClean.getTestLocationId() == 43) {
  979. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  980. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  981. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  982. String status = baseProcess.getCurrentStatus();
  983. String substring = status.substring(0, status.length() - 1);
  984. baseProcess.setCurrentStatus(substring + "1");
  985. baseProcess.setProcessType(1);
  986. } else {
  987. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  988. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation() + "," + baseLocation.getNextLocation());
  989. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() + "," + baseLocation.getNextId());
  990. String status = baseProcess.getCurrentStatus();
  991. String substring = status.substring(0, status.length() - 1);
  992. baseProcess.setCurrentStatus(substring + "1," + 0);
  993. }
  994. //环保车烘干合格生成洗消申请
  995. if (billClean.getTestLocationId() == 12) {
  996. BillClean clean = new BillClean();
  997. clean.setVistitType(billClean.getVistitType());
  998. clean.setDestName(billClean.getDestName());
  999. clean.setDestId(billClean.getDestId());
  1000. clean.setAdmissionUserName(billClean.getAdmissionUserName());
  1001. clean.setAdmissionUserId(billClean.getAdmissionUserId());
  1002. clean.setVistitDate(billClean.getVistitDate());
  1003. clean.setSubDate(billClean.getSubDate());
  1004. clean.setFarmId(billClean.getFarmId());
  1005. clean.setBillStatus(0);
  1006. clean.setProcessId(billClean.getProcessId());
  1007. clean.setTestLocationId(baseLocation.getNextId());
  1008. clean.setTestLocation(baseLocation.getNextLocation());
  1009. clean.setPhone(billClean.getPhone());
  1010. clean.setCarNum(billClean.getCarNum());
  1011. clean.setImgStatus(0);
  1012. cleanMapper.insert(clean);
  1013. }
  1014. if (billClean.getTestLocationId() == 13) {
  1015. BillClean clean = new BillClean();
  1016. clean.setVistitType(billClean.getVistitType());
  1017. clean.setDestName(billClean.getDestName());
  1018. clean.setDestId(billClean.getDestId());
  1019. clean.setAdmissionUserName(billClean.getAdmissionUserName());
  1020. clean.setAdmissionUserId(billClean.getAdmissionUserId());
  1021. clean.setVistitDate(billClean.getVistitDate());
  1022. clean.setSubDate(billClean.getSubDate());
  1023. clean.setFarmId(billClean.getFarmId());
  1024. clean.setBillStatus(0);
  1025. clean.setProcessId(billClean.getProcessId());
  1026. clean.setTestLocationId(baseLocation.getId());
  1027. clean.setTestLocation(baseLocation.getLocationName());
  1028. clean.setPhone(billClean.getPhone());
  1029. clean.setCarNum(billClean.getCarNum());
  1030. clean.setImgStatus(0);
  1031. cleanMapper.insert(clean);
  1032. }
  1033. //拉猪车烘干合格生成洗消申请
  1034. if (billClean.getTestLocationId() == 15) {
  1035. BillClean clean = new BillClean();
  1036. clean.setVistitType(billClean.getVistitType());
  1037. clean.setDestName(billClean.getDestName());
  1038. clean.setDestId(billClean.getDestId());
  1039. clean.setAdmissionUserName(billClean.getAdmissionUserName());
  1040. clean.setAdmissionUserId(billClean.getAdmissionUserId());
  1041. clean.setVistitDate(billClean.getVistitDate());
  1042. clean.setSubDate(billClean.getSubDate());
  1043. clean.setFarmId(billClean.getFarmId());
  1044. clean.setBillStatus(0);
  1045. clean.setProcessId(billClean.getProcessId());
  1046. clean.setTestLocationId(baseLocation.getId());
  1047. clean.setTestLocation(baseLocation.getLocationName());
  1048. clean.setPhone(billClean.getPhone());
  1049. clean.setCarNum(billClean.getCarNum());
  1050. clean.setImgStatus(0);
  1051. cleanMapper.insert(clean);
  1052. }
  1053. processMapper.updateById(baseProcess);
  1054. dryMapper.updateById(billClean);
  1055. return new Result(10000, "修改成功!", true);
  1056. } else {
  1057. billClean.setBillStatus(2);
  1058. billClean.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  1059. billClean.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  1060. billClean.setTestLocation(baseLocation.getLocationName());
  1061. billClean.setTestLocationId(baseLocation.getId());
  1062. billClean.setPassDate(sdf.parse(sdf.format(new Date())));
  1063. billClean.setCheckDate(sdf.parse(sdf.format(new Date())));
  1064. billClean.setImgStatus(0);
  1065. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  1066. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  1067. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  1068. String status = baseProcess.getCurrentStatus();
  1069. String substring = status.substring(0, status.length() - 1);
  1070. baseProcess.setCurrentStatus(substring + "2");
  1071. baseProcess.setProcessType(2);
  1072. processMapper.updateById(baseProcess);
  1073. dryMapper.updateById(billClean);
  1074. return new Result(10000, "修改成功!", true);
  1075. }
  1076. } else {
  1077. if ("1".equals(result)) {
  1078. billClean.setBillStatus(1);
  1079. billClean.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  1080. billClean.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  1081. billClean.setTestLocation(baseLocation.getLocationName());
  1082. billClean.setTestLocationId(baseLocation.getId());
  1083. billClean.setPassDate(sdf.parse(sdf.format(new Date())));
  1084. billClean.setCheckDate(sdf.parse(sdf.format(new Date())));
  1085. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  1086. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  1087. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  1088. String status = baseProcess.getCurrentStatus();
  1089. String substring = status.substring(0, status.length() - 1);
  1090. baseProcess.setCurrentStatus(substring + "1");
  1091. baseProcess.setProcessType(1);
  1092. processMapper.updateById(baseProcess);
  1093. dryMapper.updateById(billClean);
  1094. return new Result(10000, "修改成功!", true);
  1095. } else {
  1096. baseProcess.setUpdateDate(baseProcess.getUpdateDate() + "," + sdf.format(new Date()));
  1097. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation());
  1098. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId());
  1099. String status = baseProcess.getCurrentStatus();
  1100. String substring = status.substring(0, status.length() - 1);
  1101. baseProcess.setCurrentStatus(substring + "2");
  1102. baseProcess.setProcessType(2);
  1103. billClean.setBillStatus(2);
  1104. billClean.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  1105. billClean.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  1106. billClean.setTestLocation(baseLocation.getLocationName());
  1107. billClean.setTestLocationId(baseLocation.getId());
  1108. billClean.setPassDate(sdf.parse(sdf.format(new Date())));
  1109. billClean.setCheckDate(sdf.parse(sdf.format(new Date())));
  1110. billClean.setImgStatus(0);
  1111. processMapper.updateById(baseProcess);
  1112. dryMapper.updateById(billClean);
  1113. return new Result(10000, "修改成功!", true);
  1114. }
  1115. }
  1116. }
  1117. }
  1118. }