SelfCarController.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650
  1. package com.jkcredit.invoice.controller.business;
  2. import cn.afterturn.easypoi.excel.ExcelImportUtil;
  3. import cn.afterturn.easypoi.excel.entity.ImportParams;
  4. import cn.com.taiji.sdk.model.comm.protocol.tts.invoice.server.B2BInvoiceListModel;
  5. import cn.com.taiji.sdk.model.comm.protocol.tts.trade.service.CardTradeModel;
  6. import cn.com.taiji.sdk.model.comm.protocol.tts.trade.service.TradeApplyQueryResponse;
  7. import com.alibaba.fastjson.JSON;
  8. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  9. import com.jkcredit.invoice.annotation.LoginRequired;
  10. import com.jkcredit.invoice.annotation.annotationdes.AuthenticationInterceptor;
  11. import com.jkcredit.invoice.mapper.binvoce.SelfCarApplMapper;
  12. import com.jkcredit.invoice.mapper.customer.CustomerCarRecMapper;
  13. import com.jkcredit.invoice.mapper.customer.CustomerRecMapper;
  14. import com.jkcredit.invoice.mapper.waybill.SellCarTradeMapper;
  15. import com.jkcredit.invoice.model.entity.calculate.SelfCarCalculateInfor;
  16. import com.jkcredit.invoice.model.entity.customer.CustomerCarRec;
  17. import com.jkcredit.invoice.model.entity.customer.CustomerRec;
  18. import com.jkcredit.invoice.model.entity.invoice.SelfCarAppl;
  19. import com.jkcredit.invoice.model.entity.invoice.SelfCarInvoice;
  20. import com.jkcredit.invoice.model.entity.user.User;
  21. import com.jkcredit.invoice.model.entity.waybill.SelfCarTrade;
  22. import com.jkcredit.invoice.model.vo.CardAndTradeVo;
  23. import com.jkcredit.invoice.service.calculateinfor.SelfCarCalculateInfoService;
  24. import com.jkcredit.invoice.service.customer.CustomerService;
  25. import com.jkcredit.invoice.service.lowerservice.CheckHasAuthRole;
  26. import com.jkcredit.invoice.service.lowerservice.SelfCarCustService;
  27. import com.jkcredit.invoice.service.lowerservice.vo.*;
  28. import com.jkcredit.invoice.service.selfcar.SelfCarApplyService;
  29. import com.jkcredit.invoice.service.selfcar.SelfCarBussService;
  30. import com.jkcredit.invoice.service.selfcar.SelfCarInvoiceService;
  31. import com.jkcredit.invoice.service.selfcar.SelfCarTradeService;
  32. import com.jkcredit.invoice.util.DateUtil;
  33. import com.jkcredit.invoice.util.RespR;
  34. import com.jkcredit.invoice.util.StringUtil;
  35. import io.swagger.annotations.Api;
  36. import io.swagger.annotations.ApiOperation;
  37. import lombok.extern.slf4j.Slf4j;
  38. import org.hibernate.validator.constraints.Length;
  39. import org.springframework.beans.factory.annotation.Autowired;
  40. import org.springframework.util.StringUtils;
  41. import org.springframework.web.bind.annotation.*;
  42. import org.springframework.web.multipart.MultipartFile;
  43. import javax.validation.constraints.NotNull;
  44. import java.text.DateFormat;
  45. import java.text.SimpleDateFormat;
  46. import java.util.*;
  47. import static com.jkcredit.invoice.common.CommonConst.NULL;
  48. @Api(tags = "自有车操作")
  49. @RestController
  50. @RequestMapping(value = {"/selfCar"})
  51. @Slf4j
  52. /**
  53. * @Description 自有车操作
  54. * @Author mashengyi
  55. * @Date 2022/2/8 18:18
  56. * @Param
  57. * @Return
  58. * @Exception
  59. *
  60. */
  61. public class SelfCarController {
  62. @Autowired
  63. SelfCarCustService selfCarCustService;
  64. @Autowired
  65. SelfCarBussService selfCarBussService;
  66. @Autowired
  67. SelfCarCustService selfCarCustServicel;
  68. @Autowired
  69. SelfCarTradeService selfCarTradeService;
  70. @Autowired
  71. SelfCarInvoiceService selfCarInvoiceService;
  72. @Autowired
  73. SelfCarCalculateInfoService selfCarCalculateInfoService;
  74. @Autowired
  75. SellCarTradeMapper sellCarTradeMapper;
  76. @Autowired
  77. CustomerService customerService;
  78. @Autowired
  79. SelfCarApplyService selfCarApplyService;
  80. @Autowired
  81. CustomerRecMapper customerRecMapper;
  82. @Autowired
  83. CustomerCarRecMapper customerCarRecMapper;
  84. @Autowired
  85. private CheckHasAuthRole checkHasAuthRole;
  86. /**
  87. * 解绑etc卡
  88. *
  89. * @param etcNum 参数集
  90. * @return 用户集合
  91. */
  92. @PostMapping("/selfCarUnBind")
  93. @ApiOperation(value = "解绑etc卡", notes = "解绑etc卡")
  94. @LoginRequired(role = AuthenticationInterceptor.AUTH_ADMIN)
  95. public RespR selfCarUnBind(@NotNull(message = "etc卡号不能为空") @Length(max = 20, message = "etc卡号长度不符") String etcNum) {
  96. try {
  97. RespR respR = selfCarBussService.selfCarUnBind(etcNum);
  98. return respR;
  99. } catch (Exception e) {
  100. e.printStackTrace();
  101. return new RespR(false, e.getMessage());
  102. }
  103. }
  104. /**
  105. * 分页查询自有车交易信息
  106. *
  107. * @param page 参数集
  108. * @return 交易信息
  109. */
  110. @PostMapping("/findTrades")
  111. @ApiOperation(value = "分页查询自有车交易信息", notes = "分页查询自有车交易信息")
  112. @LoginRequired(role = AuthenticationInterceptor.AUTH_SELFCAR)
  113. public RespR findTrades(Page page, SelfCarTrade selfCarTrade, User user) {
  114. try {
  115. checkHasAuthRole.checkCustomerRole(user, selfCarTrade.getCustomId());
  116. setTimeDue(selfCarTrade);
  117. RespR respR = new RespR(selfCarTradeService.findByPageAndTrade(page, selfCarTrade));
  118. return respR;
  119. } catch (Exception e) {
  120. e.printStackTrace();
  121. return new RespR(false, e.getMessage());
  122. }
  123. }
  124. /**
  125. * 分页查询自有车交易信息
  126. *
  127. * @param page 参数集
  128. * @return 交易信息
  129. */
  130. @PostMapping("/findTradesUpper")
  131. @ApiOperation(value = "分页查询自有车交易信息", notes = "分页查询自有车交易信息")
  132. @LoginRequired(role = AuthenticationInterceptor.AUTH_SELFCAR)
  133. public RespR findTradesUpper(Page page, SelfCarTrade selfCarTrade, User user) {
  134. try {
  135. checkHasAuthRole.checkCustomerRole(user, selfCarTrade.getCustomId());
  136. setTimeDue(selfCarTrade);
  137. if (StringUtils.isEmpty(selfCarTrade.getCompanyName())) {
  138. return new RespR(false, "需要输入公司名称");
  139. }
  140. if (StringUtils.isEmpty(selfCarTrade.getExTimeBegin())) {
  141. return new RespR(false, "请输入交易开始时间");
  142. }
  143. if (StringUtils.isEmpty(selfCarTrade.getExTimeEnd())) {
  144. return new RespR(false, "请输入交易结束时间");
  145. }
  146. //先更新查询信息
  147. TradeRequestVo tradeRequestVo = new TradeRequestVo();
  148. tradeRequestVo.setCustomerName(selfCarTrade.getCustomId());
  149. tradeRequestVo.setCompanyName(selfCarTrade.getCompanyName());
  150. tradeRequestVo.setStartTime(selfCarTrade.getExTimeBegin());
  151. tradeRequestVo.setEndTime(selfCarTrade.getExTimeEnd());
  152. tradeRequestVo.setTradeStatus(selfCarTrade.getStatus());
  153. //0 接口
  154. tradeRequestVo.setInterType(1);
  155. if (StringUtils.isEmpty(selfCarTrade.getCardId())) {
  156. List<CustomerCarRec> customerCarRecs = selfCarBussService.getEtcsByCompany(selfCarTrade.getCompanyName());
  157. if (customerCarRecs != null && customerCarRecs.size() > 0) {
  158. for (CustomerCarRec customerCarRec : customerCarRecs) {
  159. tradeRequestVo.setEtcId(customerCarRec.getEtcNum());
  160. if (tradeRequestVo.getTradeStatus() == null) {
  161. tradeRequestVo.setTradeStatus(1);
  162. selfCarCustService.getTradeList(tradeRequestVo);
  163. tradeRequestVo.setTradeStatus(2);
  164. selfCarCustService.getTradeList(tradeRequestVo);
  165. tradeRequestVo.setTradeStatus(3);
  166. selfCarCustService.getTradeList(tradeRequestVo);
  167. } else {
  168. selfCarCustService.getTradeList(tradeRequestVo);
  169. }
  170. }
  171. }
  172. } else {
  173. tradeRequestVo.setEtcId(selfCarTrade.getCardId());
  174. if (tradeRequestVo.getTradeStatus() == null) {
  175. tradeRequestVo.setTradeStatus(1);
  176. selfCarCustService.getTradeList(tradeRequestVo);
  177. tradeRequestVo.setTradeStatus(2);
  178. selfCarCustService.getTradeList(tradeRequestVo);
  179. tradeRequestVo.setTradeStatus(3);
  180. selfCarCustService.getTradeList(tradeRequestVo);
  181. } else {
  182. selfCarCustService.getTradeList(tradeRequestVo);
  183. }
  184. }
  185. RespR respR = new RespR(selfCarTradeService.findByPageAndTrade(page, selfCarTrade));
  186. return respR;
  187. } catch (Exception e) {
  188. e.printStackTrace();
  189. return new RespR(false, e.getMessage());
  190. }
  191. }
  192. /**
  193. * 分页查询自有车交易信息
  194. *
  195. * @param selfCarTradesStr
  196. * @return 交易信息
  197. */
  198. @PostMapping("/updateTrades")
  199. @ApiOperation(value = "更新交易id状态", notes = "更新交易id状态")
  200. @LoginRequired(role = AuthenticationInterceptor.AUTH_SELFCAR)
  201. public RespR updateTrades(@NotNull(message = "更新交易id状态,不能为空") String selfCarTradesStr, @NotNull(message = "更新交易id状态,不能为空") String companyName, User user) {
  202. try {
  203. checkHasAuthRole.checkCompanyRole(user, companyName);
  204. List<SelfCarTrade> selfCarTrades = JSON.parseArray(selfCarTradesStr, SelfCarTrade.class);
  205. if (selfCarTrades == null || selfCarTrades.size() == 0) {
  206. selfCarTrades = sellCarTradeMapper.selectByStatus("2", companyName);
  207. }
  208. selfCarTradeService.updateTrades(selfCarTrades);
  209. return new RespR(true);
  210. } catch (Exception e) {
  211. e.printStackTrace();
  212. return new RespR(false,e.getMessage());
  213. }
  214. }
  215. public void setTimeDue(SelfCarTrade selfCarTrade) {
  216. if (!StringUtils.isEmpty(selfCarTrade.getCardId()) && !StringUtils.isEmpty(selfCarTrade.getTradeId())) {
  217. String[] cardIdArr = selfCarTrade.getCardId().split(",");
  218. String[] tradeIdArr = null;
  219. if (selfCarTrade.getTradeId() != null) {
  220. tradeIdArr = selfCarTrade.getTradeId().split(",");
  221. }
  222. List<CardAndTradeVo> cardAndTradeVos = new ArrayList<>();
  223. for (int i = 0; i < cardIdArr.length; i++) {
  224. CardAndTradeVo cardAndTradeVo = new CardAndTradeVo();
  225. cardAndTradeVo.setCardId(cardIdArr[i]);
  226. if (tradeIdArr != null && tradeIdArr.length >= i + 1) {
  227. cardAndTradeVo.setTradeId(tradeIdArr[i]);
  228. } else {
  229. cardAndTradeVo.setTradeId("");
  230. }
  231. cardAndTradeVos.add(cardAndTradeVo);
  232. }
  233. selfCarTrade.setCardAndTradeVos(cardAndTradeVos);
  234. } else if (!StringUtils.isEmpty(selfCarTrade.getCardId())) {
  235. selfCarTrade.setCardIds(Arrays.asList(selfCarTrade.getCardId().split(",")));
  236. } else if (!StringUtils.isEmpty(selfCarTrade.getTradeId())) {
  237. selfCarTrade.setTradeIds(Arrays.asList(selfCarTrade.getTradeId().split(",")));
  238. }
  239. if (!StringUtils.isEmpty(selfCarTrade.getAclTimeBegin()) && !NULL.equals(selfCarTrade.getAclTimeBegin())) {
  240. String[] res = selfCarTrade.getAclTimeBegin().split(",");
  241. selfCarTrade.setAclTimeBegin(res[0]);
  242. selfCarTrade.setAclTimeEnd(res[1].replace("00:00:00", "23:59:59"));
  243. } else {
  244. selfCarTrade.setAclTimeBegin(null);
  245. }
  246. if (!StringUtils.isEmpty(selfCarTrade.getExTimeBegin()) && !NULL.equals(selfCarTrade.getExTimeBegin())) {
  247. String[] res = selfCarTrade.getExTimeBegin().split(",");
  248. selfCarTrade.setExTimeBegin(res[0]);
  249. selfCarTrade.setExTimeEnd(res[1].replace("00:00:00", "23:59:59"));
  250. } else {
  251. selfCarTrade.setExTimeBegin(null);
  252. }
  253. }
  254. /**
  255. * 分页查询所有发票信息
  256. *
  257. * @param page 参数集
  258. * @return 交易信息
  259. */
  260. @PostMapping("/findSelfCarInvoices")
  261. @ApiOperation(value = "分页查询自有车发票信息", notes = "分页查询自有车发票信息")
  262. @LoginRequired(role = AuthenticationInterceptor.AUTH_SELFCAR)
  263. public RespR findSelfCarInvoices(Page page, SelfCarInvoice selfCarInvoice, User user) {
  264. try {
  265. checkHasAuthRole.checkCustomerRole(user, selfCarInvoice.getCustomerName());
  266. if (!StringUtils.isEmpty(selfCarInvoice.getCardId()) && !StringUtils.isEmpty(selfCarInvoice.getTradeId())) {
  267. String[] cardIdArr = selfCarInvoice.getCardId().split(",");
  268. String[] tradeIdArr = null;
  269. if (selfCarInvoice.getTradeId() != null) {
  270. tradeIdArr = selfCarInvoice.getTradeId().split(",");
  271. }
  272. List<CardAndTradeVo> cardAndTradeVos = new ArrayList<>();
  273. for (int i = 0; i < cardIdArr.length; i++) {
  274. CardAndTradeVo cardAndTradeVo = new CardAndTradeVo();
  275. cardAndTradeVo.setCardId(cardIdArr[i]);
  276. if (tradeIdArr != null && tradeIdArr.length >= i + 1) {
  277. cardAndTradeVo.setTradeId(tradeIdArr[i]);
  278. } else {
  279. cardAndTradeVo.setTradeId("");
  280. }
  281. cardAndTradeVos.add(cardAndTradeVo);
  282. }
  283. selfCarInvoice.setCardAndTradeVos(cardAndTradeVos);
  284. } else if (!StringUtils.isEmpty(selfCarInvoice.getCardId())) {
  285. selfCarInvoice.setCardIds(Arrays.asList(selfCarInvoice.getCardId().split(",")));
  286. } else if (!StringUtils.isEmpty(selfCarInvoice.getTradeId())) {
  287. selfCarInvoice.setTradeIds(Arrays.asList(selfCarInvoice.getTradeId().split(",")));
  288. }
  289. if (!StringUtils.isEmpty(selfCarInvoice.getInvoiceMakeTime()) && !NULL.equals(selfCarInvoice.getInvoiceMakeTime())) {
  290. String[] res = selfCarInvoice.getInvoiceMakeTime().split(",");
  291. selfCarInvoice.setInvoiceMakeStart(res[0]);
  292. selfCarInvoice.setInvoiceMakeEnd(res[1].replace("00:00:00", "23:59:59"));
  293. }
  294. RespR respR = new RespR(selfCarInvoiceService.findByPageAndInvoice(page, selfCarInvoice));
  295. return respR;
  296. } catch (Exception e) {
  297. e.printStackTrace();
  298. return new RespR(false, e.getMessage());
  299. }
  300. }
  301. /**
  302. * 分页查询自有车计费信息
  303. *
  304. * @param page 参数集
  305. * @return 用户集合
  306. */
  307. @PostMapping("/findSelfcarCalculateInfo")
  308. @ApiOperation(value = "分页查询自有车计费信息", notes = "分页查询自有车计费信息")
  309. @LoginRequired(role = AuthenticationInterceptor.AUTH_SELFCAR)
  310. public RespR findSelfcarCalculateInfo(Page page, SelfCarCalculateInfor carCalculateInfor, User user) {
  311. try {
  312. checkHasAuthRole.checkCustomerRole(user, carCalculateInfor.getCustomId());
  313. if (!StringUtils.isEmpty(carCalculateInfor.getCalTime()) && !NULL.equals(carCalculateInfor.getCalTime())) {
  314. String[] res = carCalculateInfor.getCalTime().split(",");
  315. carCalculateInfor.setCalTimeStart(res[0]);
  316. carCalculateInfor.setCalTimeEnd(res[1]);
  317. }
  318. if (!StringUtils.isEmpty(carCalculateInfor.getActCalTime()) && !NULL.equals(carCalculateInfor.getCalTime())) {
  319. String[] res = carCalculateInfor.getActCalTime().split(",");
  320. carCalculateInfor.setActCalTimeStart(res[0]);
  321. carCalculateInfor.setActCalTimeEnd(res[1]);
  322. }
  323. RespR respR = new RespR(selfCarCalculateInfoService.findByPageAndCalculateInfor(page, carCalculateInfor));
  324. return respR;
  325. } catch (Exception e) {
  326. e.printStackTrace();
  327. return new RespR(false, e.getMessage());
  328. }
  329. }
  330. /**
  331. * 分页查询自有车申请信息
  332. *
  333. * @param page 参数集
  334. * @return 用户集合
  335. */
  336. @PostMapping("/findSelfcarAppls")
  337. @ApiOperation(value = "分页查询自有车申请信息", notes = "分页查询自有车申请信息")
  338. @LoginRequired(role = AuthenticationInterceptor.AUTH_SELFCAR)
  339. public RespR findSelfcarAppls(Page page, SelfCarAppl selfCarAppl, User user) {
  340. try {
  341. checkHasAuthRole.checkCustomerRole(user, selfCarAppl.getCustomId());
  342. RespR respR = new RespR(selfCarApplyService.findByPageAndInvoice(page, selfCarAppl));
  343. return respR;
  344. } catch (Exception e) {
  345. e.printStackTrace();
  346. return new RespR(false, e.getMessage());
  347. }
  348. }
  349. /**
  350. * 分页查询自有车计费信息
  351. *
  352. * @param carCalculateInfor
  353. * @return 用户集合
  354. */
  355. @PostMapping("/findSelfcarCalculateInfoSta")
  356. @ApiOperation(value = "自有车计费统计信息", notes = "自有车计费统计信息")
  357. @LoginRequired(role = AuthenticationInterceptor.AUTH_SELFCAR)
  358. public RespR findSelfcarCalculateInfoSta(SelfCarCalculateInfor carCalculateInfor, User user) {
  359. try {
  360. checkHasAuthRole.checkCustomerRole(user, carCalculateInfor.getCustomId());
  361. if (!StringUtils.isEmpty(carCalculateInfor.getCalTime()) && !NULL.equals(carCalculateInfor.getCalTime())) {
  362. String[] res = carCalculateInfor.getCalTime().split(",");
  363. carCalculateInfor.setCalTimeStart(res[0]);
  364. carCalculateInfor.setCalTimeEnd(res[1]);
  365. }
  366. RespR respR = new RespR(selfCarCalculateInfoService.findSelfcarCalculateInfoSta(carCalculateInfor));
  367. return respR;
  368. } catch (Exception e) {
  369. e.printStackTrace();
  370. return new RespR(false, e.getMessage());
  371. }
  372. }
  373. /**
  374. * @param tradeRequestCarNumVo
  375. * @return
  376. */
  377. @PostMapping("/getTradeList")
  378. @ApiOperation(value = "获取需要开票的交易Id列表", notes = "获取需要开票的交易Id列表")
  379. @LoginRequired(role = AuthenticationInterceptor.AUTH_SELFCAR)
  380. public RespR getTradeList(@RequestBody TradeRequestCarNumVo tradeRequestCarNumVo, User user) {
  381. if (!checkHasAuthRole.checkMessage(tradeRequestCarNumVo.getCarNum(), tradeRequestCarNumVo.getCompanyName(), tradeRequestCarNumVo.getCustomerName(),
  382. tradeRequestCarNumVo.getStartTime(), tradeRequestCarNumVo.getEndTime())) {
  383. return new RespR(false, "获取需要开票的交易Id列表失败,请查看数据是否维护准确");
  384. }
  385. checkHasAuthRole.checkCompanyRole(user, tradeRequestCarNumVo.getCompanyName());
  386. //通过车牌号查询所有的Etc卡号
  387. List<CustomerCarRec> customerCarRecs = selfCarBussService.getEtcsByCarNum(tradeRequestCarNumVo.getCarNum());
  388. if (customerCarRecs == null || customerCarRecs.size() <= 0) {
  389. return new RespR(false, "请输入有绑定ETC卡号的车牌");
  390. }
  391. //合并展示
  392. List<CardTradeModel> cardTradeModels = new ArrayList<>();
  393. customerCarRecs.forEach(customerCarRec -> {
  394. TradeRequestVo tradeRequestVo = new TradeRequestVo();
  395. tradeRequestVo.setCompanyName(tradeRequestCarNumVo.getCompanyName());
  396. tradeRequestVo.setCustomerName(tradeRequestCarNumVo.getCustomerName());
  397. DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  398. tradeRequestVo.setStartTime(format.format(new Date(Long.parseLong(tradeRequestCarNumVo.getStartTime()))));
  399. tradeRequestVo.setEndTime(format.format(new Date(Long.parseLong(tradeRequestCarNumVo.getEndTime()))));
  400. tradeRequestVo.setTradeStatus(1);
  401. tradeRequestVo.setEtcId(customerCarRec.getEtcNum());
  402. RespR<List<CardTradeModel>> respRbefore = selfCarCustServicel.getTradeList(tradeRequestVo);
  403. if (respRbefore.getCode() == 0) {
  404. cardTradeModels.addAll(respRbefore.getData());
  405. }
  406. });
  407. return new RespR(cardTradeModels);
  408. }
  409. /**
  410. * @param tradeRequestCarNumVo
  411. * @return
  412. */
  413. @PostMapping("/applTradeList")
  414. @ApiOperation(value = "根据车牌号进行开票操作", notes = "根据车牌号进行开票操作")
  415. @LoginRequired(role = AuthenticationInterceptor.AUTH_SELFCAR)
  416. public RespR applTradeList(@RequestBody TradeRequestCarNumVo tradeRequestCarNumVo, User user) {
  417. if (!checkHasAuthRole.checkMessage(tradeRequestCarNumVo.getCarIdStr(), tradeRequestCarNumVo.getCompanyName(),
  418. tradeRequestCarNumVo.getCustomerName())) {
  419. return new RespR(false, "根据车牌号进行开票操作失败,请查看数据是否维护准确");
  420. }
  421. checkHasAuthRole.checkCompanyRole(user, tradeRequestCarNumVo.getCompanyName());
  422. String[] cardAndTrades = tradeRequestCarNumVo.getCarIdStr().split(",");
  423. Map<String, InvoiceApplVo> map = new HashMap<>(10);
  424. for (int i = 0; i < cardAndTrades.length; i++) {
  425. if (!StringUtils.isEmpty(cardAndTrades[i])) {
  426. String[] cardAndTrade = cardAndTrades[i].split("#");
  427. InvoiceApplVo invoiceApplVo = map.get(cardAndTrade[0]);
  428. if (invoiceApplVo == null) {
  429. invoiceApplVo = new InvoiceApplVo();
  430. invoiceApplVo.setCompanyName(tradeRequestCarNumVo.getCompanyName());
  431. invoiceApplVo.setCustomerName(tradeRequestCarNumVo.getCustomerName());
  432. invoiceApplVo.setCardId(cardAndTrade[0]);
  433. invoiceApplVo.setTradeIds(new ArrayList<String>());
  434. invoiceApplVo.getTradeIds().add(cardAndTrade[1]);
  435. map.put(cardAndTrade[0], invoiceApplVo);
  436. } else {
  437. invoiceApplVo.getTradeIds().add(cardAndTrade[1]);
  438. }
  439. }
  440. }
  441. StringBuffer stringBuffer = new StringBuffer();
  442. for (Map.Entry<String, InvoiceApplVo> elm : map.entrySet()) {
  443. InvoiceApplVo invoiceApplVo = elm.getValue();
  444. RespR respR = selfCarCustServicel.applInvoice(invoiceApplVo);
  445. if (respR.getCode() == 1) {
  446. stringBuffer.append(invoiceApplVo.getCardId() + "开票申请失败原因:" + respR.getMsg() + "#");
  447. }
  448. }
  449. if (StringUtils.isEmpty(stringBuffer.toString())) {
  450. return new RespR(true);
  451. } else {
  452. return new RespR(false, stringBuffer.toString());
  453. }
  454. }
  455. /**
  456. * 查询已经开票信息
  457. *
  458. * @param
  459. * @return
  460. */
  461. @PostMapping("/findSelfcarInvoiceByTime")
  462. @ApiOperation(value = "通过时间,车牌号查询开票信息", notes = "通过时间,车牌号查询开票信息")
  463. @LoginRequired(role = AuthenticationInterceptor.AUTH_SELFCAR)
  464. public RespR findSelfcarInvoiceByTime(@RequestBody SelfcarInvoiceByTimeVo selfcarInvoiceByTimeVo, User user) {
  465. try {
  466. if (!checkHasAuthRole.checkMessage(selfcarInvoiceByTimeVo.getCustomerName(), selfcarInvoiceByTimeVo.getCompanyName(),selfcarInvoiceByTimeVo.getStartTime(), selfcarInvoiceByTimeVo.getEndTime())) {
  467. return new RespR(false, "开票操作失败,请输入开始时间与结束时间");
  468. }
  469. checkHasAuthRole.checkCompanyRole(user, selfcarInvoiceByTimeVo.getCompanyName());
  470. if (!customerService.checkMoneyEnough(selfcarInvoiceByTimeVo.getCustomerName())) {
  471. return new RespR(false, "余额不足");
  472. }
  473. //通过车牌号查询所有的Etc卡号
  474. List<CustomerCarRec> customerCarRecs = null;
  475. if (selfcarInvoiceByTimeVo.getCarNum() != null && selfcarInvoiceByTimeVo.getCarNum() != "") {
  476. customerCarRecs = selfCarBussService.getEtcsByCarNum(selfcarInvoiceByTimeVo.getCarNum());
  477. } else {
  478. customerCarRecs = customerCarRecMapper.selectAllEtcByCompany(selfcarInvoiceByTimeVo.getCompanyName());
  479. }
  480. if (customerCarRecs == null || customerCarRecs.size() <= 0) {
  481. return new RespR(false, "无ETC卡号的车牌");
  482. }
  483. CustomerRec customerRec = new CustomerRec();
  484. customerRec.setCustomerName(selfcarInvoiceByTimeVo.getCustomerName());
  485. customerRec.setCompanyName(selfcarInvoiceByTimeVo.getCompanyName());
  486. CustomerRec customerRec1 = customerRecMapper.selectByCustomerNameAndCompany(customerRec);
  487. if (customerRec1 == null || customerRec1.getRecStatus().intValue() != 1) {
  488. return new RespR(false, "客户未备案");
  489. }
  490. List<B2BInvoiceListModel> allSelfInvocies = new ArrayList<>();
  491. StringBuilder resp = new StringBuilder("");
  492. customerCarRecs.forEach(customerCarRec -> {
  493. SelfCarDueQueryVo selfCarDueQueryVo = new SelfCarDueQueryVo();
  494. selfCarDueQueryVo.setCustomername(selfcarInvoiceByTimeVo.getCustomerName());
  495. selfCarDueQueryVo.setCompanyName(selfcarInvoiceByTimeVo.getCompanyName());
  496. selfCarDueQueryVo.setStartTime(selfcarInvoiceByTimeVo.getStartTime());
  497. selfCarDueQueryVo.setEndTime(selfcarInvoiceByTimeVo.getEndTime());
  498. selfCarDueQueryVo.setCardId(customerCarRec.getEtcNum());
  499. RespR<List<B2BInvoiceListModel>> respR = selfCarCustServicel.getSelfCarInvoicesByTime(selfCarDueQueryVo, customerRec1);
  500. if (respR.getCode() == 0) {
  501. allSelfInvocies.addAll(respR.getData());
  502. }else{
  503. if(!"未查得".equals(respR.getMsg())){
  504. resp.append(customerCarRec.getEtcNum()).append(":").append(respR.getMsg()).append("#");
  505. }
  506. }
  507. });
  508. if(!StringUtil.isEmpty(resp.toString())){
  509. return new RespR(false,resp.toString());
  510. }
  511. return new RespR(allSelfInvocies);
  512. } catch (Exception e) {
  513. e.printStackTrace();
  514. return new RespR(false, e.getMessage());
  515. }
  516. }
  517. /**
  518. * 批量查询自有车交易信息
  519. *
  520. * @param file 参数集
  521. * @return
  522. */
  523. @PostMapping("/batchImportSelfcarTrades")
  524. @ApiOperation(value = "批量查询自有车交易信息", notes = "批量查询自有车交易信息")
  525. @LoginRequired(role = AuthenticationInterceptor.AUTH_ADMIN)
  526. public RespR batchImportSelfcarTrades(@RequestParam("file") MultipartFile file) {
  527. try {
  528. if (null == file) {
  529. return new RespR(false, "批量查询自有车交易信息失败,请查看数据是否维护准确");
  530. }
  531. ImportParams params = new ImportParams();
  532. params.setTitleRows(1);
  533. params.setHeadRows(1);
  534. List<SelfCarTrade> list = ExcelImportUtil.importExcel(file.getInputStream(), SelfCarTrade.class, params);
  535. RespR respR = selfCarTradeService.batchImportSelfcarTrades(list);
  536. return respR;
  537. } catch (Exception e) {
  538. e.printStackTrace();
  539. return new RespR(false, e.getMessage());
  540. }
  541. }
  542. /**
  543. * 批量查询自有车发票信息
  544. *
  545. * @param file 参数集
  546. * @return
  547. */
  548. @PostMapping("/batchImportSelfcarInvoices")
  549. @ApiOperation(value = "批量查询自有车发票信息", notes = "批量查询自有车发票信息")
  550. @LoginRequired(role = AuthenticationInterceptor.AUTH_ADMIN)
  551. public RespR batchImportSelfcarInvoices(@RequestParam("file") MultipartFile file) {
  552. try {
  553. if (null == file) {
  554. return new RespR(false, "批量查询自有车发票信息失败,请查看数据是否维护准确");
  555. }
  556. ImportParams params = new ImportParams();
  557. params.setTitleRows(1);
  558. params.setHeadRows(1);
  559. List<SelfCarInvoice> list = ExcelImportUtil.importExcel(file.getInputStream(), SelfCarInvoice.class, params);
  560. RespR respR = selfCarInvoiceService.findImportSelfcarInvoices(list);
  561. return respR;
  562. } catch (Exception e) {
  563. e.printStackTrace();
  564. return new RespR(false, e.getMessage());
  565. }
  566. }
  567. /**
  568. * 回复applyId
  569. */
  570. @GetMapping("/recoverApplyId")
  571. public RespR recoverApplyId() {
  572. try {
  573. List<SelfCarTrade> selfCarTrades = sellCarTradeMapper.sellectAllNullApplid();
  574. log.info("开始修复条数{}",selfCarTrades.size());
  575. selfCarTrades.forEach(selfCarTrade->{
  576. TradeApplyQueryInvVo tradeApplyQueryInvVo = new TradeApplyQueryInvVo();
  577. tradeApplyQueryInvVo.setCompanyNum(selfCarTrade.getCompanyNum());
  578. tradeApplyQueryInvVo.setTradeId(selfCarTrade.getTradeId());
  579. tradeApplyQueryInvVo.setCardId(selfCarTrade.getCardId());
  580. RespR<TradeApplyQueryResponse> respR = selfCarCustService.getApplyQueryByTradeId(tradeApplyQueryInvVo);
  581. if(respR.getCode() == 0){
  582. String applyId = respR.getData().getApplyId();
  583. if(!StringUtils.isEmpty(applyId)){
  584. SelfCarAppl selfCarAppl = selfCarApplMapper.selectByApplId(applyId);
  585. if(selfCarAppl != null){
  586. selfCarTrade.setApplId(selfCarAppl.getApplId());
  587. selfCarTrade.setAclTime(DateUtil.tTimeToDate(selfCarAppl.getApplTime()));
  588. log.info("开始修复{}",selfCarTrade);
  589. sellCarTradeMapper.updateByTradeId(selfCarTrade);
  590. }else {
  591. selfCarTrade.setApplId(applyId);
  592. selfCarTrade.setAclTime(DateUtil.tTimeToDate(selfCarAppl.getApplTime()));
  593. log.info("开始修复{}",selfCarTrade);
  594. sellCarTradeMapper.updateByTradeId(selfCarTrade);
  595. }
  596. }else{
  597. log.info("修复失败{}",11111111);
  598. }
  599. }else {
  600. log.info("修复失败{}",respR.getMsg());
  601. }
  602. });
  603. log.info("修复完成");
  604. return null;
  605. } catch (Exception e) {
  606. e.printStackTrace();
  607. return new RespR(false, e.getMessage());
  608. }
  609. }
  610. @Autowired
  611. SelfCarApplMapper selfCarApplMapper;
  612. }