TbBusinessController.java 15 KB

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