OpenService.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package com.pj.api.open.service;
  2. import cn.hutool.core.util.NumberUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.pj.api.open.ResultJson;
  5. import com.pj.api.open.bo.CheckCarNumberBO;
  6. import com.pj.current.config.PartConfig;
  7. import com.pj.project.tb_business.TbBusiness;
  8. import com.pj.project.tb_business.TbBusinessService;
  9. import com.pj.project.tb_car.TbCar;
  10. import com.pj.project.tb_car.TbCarService;
  11. import com.pj.project.tb_costomer.TbCostomer;
  12. import com.pj.project.tb_costomer.TbCostomerService;
  13. import org.springframework.stereotype.Service;
  14. import org.springframework.transaction.annotation.Transactional;
  15. import javax.annotation.Resource;
  16. import java.math.BigDecimal;
  17. import java.util.ArrayList;
  18. import java.util.Date;
  19. import java.util.List;
  20. @Service
  21. @Transactional
  22. public class OpenService {
  23. @Resource
  24. private TbBusinessService tbBusinessService;
  25. @Resource
  26. private TbCostomerService tbCostomerService;
  27. @Resource
  28. private TbCarService tbCarService;
  29. private final List<String> CAR_LIST = StrUtil.splitTrim("浙,粤,京,津,冀,晋,蒙,辽,黑,沪,吉,苏,皖,赣,鲁,豫,鄂,湘,桂,琼,渝,川,贵,云,藏, 陕, 甘, 青, 宁", ",");
  30. public ResultJson checkCarNumber(CheckCarNumberBO checkCarNumberBO) {
  31. String carNo = checkCarNumberBO.getCarNumber();
  32. String start = carNo.substring(0, 1);
  33. if (CAR_LIST.contains(start)) {
  34. return handlerChinaCar(checkCarNumberBO);
  35. } else {
  36. return handlerOutCar(checkCarNumberBO);
  37. }
  38. }
  39. private ResultJson handlerOutCar(CheckCarNumberBO checkCarNumberBO) {
  40. String carNo = checkCarNumberBO.getCarNumber();
  41. TbBusiness tbBusiness = tbBusinessService.findCarTheNewRecord(carNo);
  42. if (tbBusiness == null) {
  43. return ResultJson.error("无业务登记记录");
  44. }
  45. Date outTime=tbBusiness.getOutDayTime();
  46. Date now=new Date();
  47. if (outTime!=null&&Math.abs(outTime.getHours()-now.getHours())>10) {
  48. return ResultJson.error("无业务登记记录");
  49. }
  50. if (tbBusiness.getAdminConfirmPay() ==0) {
  51. return ResultJson.error("账单未支付");
  52. }
  53. int inOrOut = checkCarNumberBO.getInOrOut();
  54. TbCar car = tbCarService.findByCardNo(carNo);
  55. if (inOrOut == 1) {
  56. if (tbBusiness.getRealInDay() == null) {
  57. //入场
  58. tbBusiness.setRealInTime(now)
  59. .setInChannel(checkCarNumberBO.getChannelName());
  60. car.setLastInTime(now);
  61. tbBusinessService.updateById(tbBusiness);
  62. return ResultJson.success();
  63. } else {
  64. return ResultJson.error("车辆已入场");
  65. }
  66. } else {
  67. if (tbBusiness.getOutDayTime() == null) {
  68. TbCostomer tbCostomer = tbCostomerService.getById(tbBusiness.getCustomerId());
  69. car.setLastOutTime(now);
  70. tbCarService.updateById(car);
  71. tbBusiness.setOutChannel(checkCarNumberBO.getChannelName());
  72. handlerOut(tbBusiness);
  73. if (tbCostomer.getPayType() == 2) {
  74. return ResultJson.success();
  75. } else {
  76. if (tbBusiness.getPayStatus() != 3) {
  77. return ResultJson.error("车辆未缴费");
  78. }
  79. }
  80. return ResultJson.success();
  81. } else {
  82. return ResultJson.error("车辆已离场");
  83. }
  84. }
  85. }
  86. private ResultJson handlerChinaCar(CheckCarNumberBO checkCarNumberBO) {
  87. String carNo = checkCarNumberBO.getCarNumber();
  88. TbBusiness cb = tbBusinessService.findByChinaCarNo(carNo);
  89. Date now = new Date();
  90. String channel = checkCarNumberBO.getChannelName();
  91. if (checkCarNumberBO.getInOrOut() == 1 && cb.getRealInTime() == null) {
  92. cb.setChinaCarInTime(now).setChinaCarInChannel(channel);
  93. tbBusinessService.updateById(cb);
  94. return ResultJson.success();
  95. }
  96. if (checkCarNumberBO.getInOrOut() == 2) {
  97. cb.setChinaCarOutTime(now).setChinaCarOutChannel(channel);
  98. tbBusinessService.calculationPartMoney("中国车", cb);
  99. return ResultJson.success();
  100. }
  101. return null;
  102. }
  103. private void handlerOut(TbBusiness tbBusiness) {
  104. tbBusiness.setOutDayTime(new Date());
  105. tbBusinessService.calculationPartMoney("越南车", tbBusiness);
  106. tbBusinessService.updateById(tbBusiness);
  107. }
  108. }