TbBusinessController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  1. package com.pj.project.tb_business;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.dev33.satoken.stp.StpUtil;
  4. import cn.hutool.core.date.DateUtil;
  5. import cn.hutool.core.util.StrUtil;
  6. import cn.hutool.json.JSONUtil;
  7. import cn.hutool.log.StaticLog;
  8. import com.pj.constants.UserTypeEnum;
  9. import com.pj.current.satoken.StpUserUtil;
  10. import com.pj.project.tb_account.AutomaticPay;
  11. import com.pj.project.tb_business_car.TbBusinessCar;
  12. import com.pj.project.tb_business_car.TbBusinessCarService;
  13. import com.pj.project.tb_business_item.TbBusinessItem;
  14. import com.pj.project.tb_business_item.TbBusinessItemService;
  15. import com.pj.project.tb_costomer.TbCostomerService;
  16. import com.pj.project.tb_declare.TbDeclareService;
  17. import com.pj.project.tb_item.TbItem;
  18. import com.pj.project.tb_notices.TbNoticesService;
  19. import com.pj.utils.sg.AjaxError;
  20. import com.pj.utils.sg.AjaxJson;
  21. import com.pj.utils.so.SoMap;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.context.annotation.Lazy;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import org.springframework.web.bind.annotation.RequestBody;
  26. import org.springframework.web.bind.annotation.RequestMapping;
  27. import org.springframework.web.bind.annotation.RequestParam;
  28. import org.springframework.web.bind.annotation.RestController;
  29. import javax.annotation.Resource;
  30. import java.util.Date;
  31. import java.util.List;
  32. /**
  33. * Controller: tb_business -- 入境登记
  34. *
  35. * @author qzy
  36. */
  37. @RestController
  38. @RequestMapping("/TbBusiness/")
  39. public class TbBusinessController {
  40. /**
  41. * 底层 Service 对象
  42. */
  43. @Autowired
  44. TbBusinessService tbBusinessService;
  45. @Resource
  46. private TbBusinessItemService tbBusinessItemService;
  47. @Resource
  48. private TbNoticesService tbNoticesService;
  49. @Resource
  50. private TbBusinessCarService tbBusinessCarService;
  51. @RequestMapping(value = "getMsg")
  52. public AjaxJson getMsg() {
  53. return AjaxJson.getSuccessData(BusinessMessageManager.get(StpUserUtil.getCustomerId()));
  54. }
  55. /**
  56. * 确认业务
  57. */
  58. @RequestMapping("confirm")
  59. @Transactional(rollbackFor = Exception.class)
  60. public AjaxJson confirm() {
  61. if (!StpUtil.hasPermissionAnd(TbBusiness.PERMISSION_CONFIRM) && !
  62. StrUtil.equals(StpUserUtil.getCustomerId(), UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) {
  63. return AjaxJson.getError("无确认业务权限");
  64. }
  65. SoMap so = SoMap.getRequestSoMap();
  66. List<String> ids = so.getListByComma("ids", String.class);
  67. tbBusinessService.confirm(ids);
  68. return AjaxJson.getSuccess();
  69. }
  70. /**
  71. * 确认业务
  72. */
  73. @RequestMapping("adminConfirmPay")
  74. @Transactional(rollbackFor = Exception.class)
  75. public AjaxJson adminConfirmPay() {
  76. if (!StrUtil.equals(StpUserUtil.getCustomerId(), UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) {
  77. return AjaxJson.getError("无确认支付权限");
  78. }
  79. SoMap so = SoMap.getRequestSoMap();
  80. List<String> ids = so.getListByComma("ids", String.class);
  81. String ticket = so.getString("payTicket");
  82. tbBusinessService.adminConfirmPay(ids, ticket);
  83. return AjaxJson.getSuccess();
  84. }
  85. /**
  86. * 查 - 根据id
  87. */
  88. @RequestMapping("getById")
  89. public AjaxJson getById(String id) {
  90. TbBusiness t = tbBusinessService.getById(id);
  91. List<TbBusinessItem> items = tbBusinessItemService.findByBusinessId(id);
  92. items.forEach(tbBusinessItem -> tbBusinessItem.setGoodsName(t.getGoodsName()).setCardNo(t.getCardNo()).setChinaCarNo(t.getChinaCarNo()));
  93. t.setItems(items);
  94. List<TbBusinessCar> cars = tbBusinessCarService.findOtherBusinessCar(id);
  95. t.setCars(cars);
  96. return AjaxJson.getSuccessData(t);
  97. }
  98. /**
  99. * 查 - 根据id
  100. */
  101. @RequestMapping("checkReport")
  102. public AjaxJson checkReport(String businessCarId) {
  103. List<TbBusiness> businessList = tbBusinessService.findOtherBusinessByCarId(businessCarId);
  104. return AjaxJson.getSuccessData(businessList);
  105. }
  106. /**
  107. * 查集合 - 根据条件(参数为空时代表忽略指定条件)
  108. */
  109. @RequestMapping("getList")
  110. public AjaxJson getList() {
  111. SoMap so = SoMap.getRequestSoMap();
  112. String currentCustomerId = StpUserUtil.getCustomerId();
  113. if (!currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) {
  114. so.put("customerId", currentCustomerId);
  115. }
  116. List<TbBusiness> list = tbBusinessService.getList(so.startPage());
  117. return AjaxJson.getPageData(so.getDataCount(), list);
  118. }
  119. /**
  120. * 查集合 - 根据条件(参数为空时代表忽略指定条件)
  121. */
  122. @RequestMapping("getCarDisincleList")
  123. public AjaxJson getCarDisincleList() {
  124. SoMap so = SoMap.getRequestSoMap();
  125. String currentCustomerId = StpUserUtil.getCustomerId();
  126. if (!currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) {
  127. so.put("customerId", currentCustomerId);
  128. }
  129. List<CarDisincle> list = tbBusinessService.getCarDisincleList(so.startPage());
  130. return AjaxJson.getPageData(so.getDataCount(), list);
  131. }
  132. /**
  133. * 查集合 - 根据条件(参数为空时代表忽略指定条件)
  134. */
  135. @RequestMapping("getOtherBusiness")
  136. public AjaxJson getOtherBusiness() {
  137. SoMap so = SoMap.getRequestSoMap();
  138. String currentCustomerId = StpUserUtil.getCustomerId();
  139. if (!currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) {
  140. so.put("createByCustomerId", currentCustomerId);
  141. }
  142. List<TbBusiness> list = tbBusinessService.getList(so.startPage());
  143. return AjaxJson.getPageData(so.getDataCount(), list);
  144. }
  145. /**
  146. * 改
  147. */
  148. @RequestMapping("pay")
  149. public AjaxJson pay() {
  150. if (!StpUtil.hasPermissionAnd("tb-business-pay") && !
  151. StrUtil.equals(StpUserUtil.getCustomerId(), UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) {
  152. return AjaxJson.getError("无支付权限");
  153. }
  154. SoMap so = SoMap.getRequestSoMap();
  155. String id = so.getString("id");
  156. String payTicket = so.getString("payTicket");
  157. tbBusinessService.pay(id, payTicket);
  158. return AjaxJson.getSuccess();
  159. }
  160. @RequestMapping("adminSetIn")
  161. public AjaxJson adminSetIn() {
  162. if (!StrUtil.equals(StpUserUtil.getCustomerId(), UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) {
  163. return AjaxJson.getError("无入场权限");
  164. }
  165. SoMap so = SoMap.getRequestSoMap();
  166. String id = so.getString("id");
  167. Date inTime = so.getDateTime("realInTime");
  168. Date chinaCarInTime = so.getDateTime("chinaCarInTime");
  169. TbBusiness tbBusiness = tbBusinessService.getById(id);
  170. tbBusiness.setChinaCarInTime(chinaCarInTime).setRealInTime(inTime).setAdminConfirmIn(1);
  171. tbBusinessService.updateById(tbBusiness);
  172. //更新境外车入场记录
  173. //更新中国车入场记录
  174. //发送消息
  175. String text = "您的车辆已入场,业务单号[" + tbBusiness.getNo() + "]";
  176. tbNoticesService.sendNotice(tbBusiness.getId(), tbBusiness.getNo(), tbBusiness.getCustomerId(), text);
  177. return AjaxJson.getSuccess();
  178. }
  179. @RequestMapping("complete")
  180. public AjaxJson complete(TbBusiness business) {
  181. if (!StrUtil.equals(StpUserUtil.getCustomerId(), UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) {
  182. return AjaxJson.getError("无生成账单权限");
  183. }
  184. business.setComplete(1);
  185. tbBusinessService.updateById(business);
  186. tbBusinessService.storeMsg(business.getCustomerId(), "业务订单【" + business.getNo() + "】账单已生成!" + DateUtil.now() + "。");
  187. //发送消息
  188. String text = "您的账单已生成,业务单号[" + business.getNo() + "]";
  189. tbNoticesService.sendNotice(business.getId(), business.getNo(), business.getCustomerId(), text);
  190. return AjaxJson.getSuccessData(business);
  191. }
  192. @RequestMapping("uploadReport")
  193. public AjaxJson uploadReport(@RequestBody TbBusiness tbBusiness) {
  194. tbBusinessService.uploadReport(tbBusiness);
  195. return AjaxJson.getSuccess();
  196. }
  197. @RequestMapping("getOtherBusinessById")
  198. public AjaxJson getOtherBusinessById(String id) {
  199. return AjaxJson.getSuccessData(tbBusinessService.getOtherBusinessById(id));
  200. }
  201. @RequestMapping("getZxBusinessById")
  202. public AjaxJson getZxBusinessById(String id) {
  203. return AjaxJson.getSuccessData(tbBusinessService.getZxBusinessById(id));
  204. }
  205. @RequestMapping("deleteOtherBusiness")
  206. public AjaxJson deleteOtherBusiness(String id, String businessCarId) {
  207. tbBusinessService.deleteOtherBusiness(id);
  208. return AjaxJson.getSuccess();
  209. }
  210. @RequestMapping(value = "unBindCar")
  211. public AjaxJson unBindCar(String id, String businessCarId) {
  212. tbBusinessService.unBindCar(id, businessCarId);
  213. return AjaxJson.getSuccess();
  214. }
  215. @RequestMapping(value = "addOtherBusiness")
  216. @SaCheckPermission(value = TbBusiness.PERMISSION_FLAX_BUSINESS_ADD)
  217. public AjaxJson addOtherBusiness(OtherBusinessBO otherBusinessBO) {
  218. List<TbItem> items = JSONUtil.toList(otherBusinessBO.getItemJson(), TbItem.class);
  219. List<TbBusinessCar> cars = JSONUtil.toList(otherBusinessBO.getCarJson(), TbBusinessCar.class);
  220. otherBusinessBO.setItems(items).setCars(cars);
  221. tbBusinessService.addOtherBusiness(otherBusinessBO);
  222. return AjaxJson.getSuccess();
  223. }
  224. @RequestMapping(value = "editOtherBusiness")
  225. @SaCheckPermission(value = TbBusiness.PERMISSION_FLAX_BUSINESS_EDIT)
  226. public AjaxJson editOtherBusiness(OtherBusinessBO otherBusinessBO) {
  227. List<TbItem> items = JSONUtil.toList(otherBusinessBO.getItemJson(), TbItem.class);
  228. List<TbBusinessCar> cars = JSONUtil.toList(otherBusinessBO.getCarJson(), TbBusinessCar.class);
  229. otherBusinessBO.setItems(items).setCars(cars);
  230. tbBusinessService.editOtherBusiness(otherBusinessBO);
  231. return AjaxJson.getSuccess();
  232. }
  233. @RequestMapping(value = "bindOtherBusinessCar")
  234. @SaCheckPermission(value = TbBusiness.PERMISSION_FLAX_BUSINESS_EDIT)
  235. public AjaxJson bindOtherBusinessCar() {
  236. SoMap soMap = SoMap.getRequestSoMap();
  237. String businessId = soMap.getString("businessId");
  238. String businessCarIds = soMap.getString("businessCarIds");
  239. tbBusinessService.bindOtherBusinessCar(businessId, StrUtil.splitTrim(businessCarIds, ","));
  240. return AjaxJson.getSuccess();
  241. }
  242. /**
  243. * 选择的方式添加异常单
  244. *
  245. * @return
  246. */
  247. @RequestMapping("selectErrorBusiness")
  248. @SaCheckPermission(value = {TbBusiness.TB_SUPPLEMENT_ADD, TbBusiness.TB_SUPPLEMENT_PUSH})
  249. public AjaxJson selectErrorBusiness(ErrorBusinessBO errorBusinessBO) {
  250. if (StrUtil.isEmpty(errorBusinessBO.getSupplementReason())) {
  251. throw new AjaxError("填写补录原因");
  252. }
  253. List<TbBusinessCar> cars = JSONUtil.toList(errorBusinessBO.getCarJson(), TbBusinessCar.class);
  254. errorBusinessBO.setCars(cars);
  255. errorBusinessBO.setSupplementBy(StpUserUtil.getCreateBy());
  256. String currentCustomerId = StpUserUtil.getCustomerId();
  257. StaticLog.info("currentCustomerId============= :{}", currentCustomerId);
  258. tbBusinessService.selectErrorBusiness(errorBusinessBO, currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId()));
  259. return AjaxJson.getSuccess();
  260. }
  261. /**
  262. * 添加异常单
  263. *
  264. * @param errorBusinessBO
  265. * @return
  266. */
  267. @RequestMapping(value = "addErrorBusiness")
  268. @SaCheckPermission(value = TbBusiness.TB_SUPPLEMENT_ADD)
  269. public AjaxJson addErrorBusiness(ErrorBusinessBO errorBusinessBO) {
  270. List<TbItem> items = JSONUtil.toList(errorBusinessBO.getItemJson(), TbItem.class);
  271. List<TbBusinessCar> cars = JSONUtil.toList(errorBusinessBO.getCarJson(), TbBusinessCar.class);
  272. errorBusinessBO.setItems(items).setCars(cars);
  273. errorBusinessBO.setSupplementBy(StpUserUtil.getCreateBy());
  274. String currentCustomerId = StpUserUtil.getCustomerId();
  275. tbBusinessService.addErrorBusiness(errorBusinessBO, currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId()));
  276. return AjaxJson.getSuccess();
  277. }
  278. /**
  279. * 编辑异常单
  280. *
  281. * @param errorBusinessBO
  282. * @return
  283. */
  284. @RequestMapping(value = "editErrorBusiness")
  285. @SaCheckPermission(value = TbBusiness.TB_SUPPLEMENT_EDIT)
  286. public AjaxJson editErrorBusiness(ErrorBusinessBO errorBusinessBO) {
  287. List<TbItem> items = JSONUtil.toList(errorBusinessBO.getItemJson(), TbItem.class);
  288. List<TbBusinessCar> cars = JSONUtil.toList(errorBusinessBO.getCarJson(), TbBusinessCar.class);
  289. errorBusinessBO.setItems(items).setCars(cars);
  290. errorBusinessBO.setSupplementBy(StpUserUtil.getCreateBy());
  291. tbBusinessService.editErrorBusiness(errorBusinessBO);
  292. return AjaxJson.getSuccess();
  293. }
  294. /**
  295. * 发起OA流程
  296. *
  297. * @param id
  298. * @return
  299. */
  300. @RequestMapping("applyOA")
  301. @SaCheckPermission(value = {TbBusiness.TB_SUPPLEMENT_ADD, TbBusiness.TB_SUPPLEMENT_PUSH})
  302. public AjaxJson applyOA(@RequestParam String id) {
  303. String currentCustomerId = StpUserUtil.getCustomerId();
  304. if (!currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) {
  305. return AjaxJson.getError("您无权发起流程");
  306. }
  307. tbBusinessService.applyOA(id, StpUserUtil.getAdmin().getNickname());
  308. return AjaxJson.getSuccess();
  309. }
  310. // ------------------------- 前端接口 -------------------------
  311. /**
  312. * 根据车辆记录查找业务
  313. *
  314. * @param businessCarId
  315. * @return
  316. */
  317. @RequestMapping("getByBusinessCarId")
  318. public AjaxJson getByBusinessCarId(@RequestParam String businessCarId) {
  319. return AjaxJson.getSuccessData(tbBusinessService.findOtherBusinessByCarId(businessCarId));
  320. }
  321. @RequestMapping("addCar")
  322. @SaCheckPermission(value = TbBusiness.PERMISSION_FLAX_BUSINESS_EDIT)
  323. public AjaxJson addCar(TbBusinessCar tbBusinessCar) {
  324. if (StrUtil.isEmpty(tbBusinessCar.getCarNo())) {
  325. return AjaxJson.getError("请输入车牌号");
  326. }
  327. tbBusinessService.addBusinessCar(tbBusinessCar);
  328. return AjaxJson.getSuccess();
  329. }
  330. /**
  331. * 删除车辆
  332. */
  333. @RequestMapping("deleteBusinessCar")
  334. @SaCheckPermission(TbBusiness.PERMISSION_FLAX_BUSINESS_EDIT)
  335. public AjaxJson delete(String id, String businessId) {
  336. tbBusinessService.deleteBusinessCar(id,businessId);
  337. return AjaxJson.getSuccess();
  338. }
  339. /**
  340. * 审核通过
  341. *
  342. * @return
  343. */
  344. @RequestMapping("confirmJudgePass")
  345. @SaCheckPermission(TbBusiness.PERMISSION__JUDGE)
  346. public AjaxJson confirmJudge() {
  347. SoMap soMap = SoMap.getRequestSoMap();
  348. String id = soMap.getString("id");
  349. tbBusinessService.confirmJudgePass(id);
  350. return AjaxJson.getSuccess("审核通过");
  351. }
  352. /**
  353. * 驳回
  354. *
  355. * @return
  356. */
  357. @RequestMapping("callback")
  358. @SaCheckPermission(TbBusiness.PERMISSION__JUDGE)
  359. public AjaxJson callback() {
  360. SoMap soMap = SoMap.getRequestSoMap();
  361. String id = soMap.getString("id");
  362. String judgeContent = soMap.getString("judgeContent");
  363. tbBusinessService.callback(id,judgeContent);
  364. return AjaxJson.getSuccess();
  365. }
  366. }