ScheduledBillTask.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. package com.jkcredit.invoice.task;
  2. import cn.com.taiji.sdk.model.comm.protocol.tts.trade.service.TradeApplyQueryRequest;
  3. import cn.com.taiji.sdk.model.comm.protocol.tts.trade.service.TradeApplyQueryResponse;
  4. import com.jkcredit.invoice.mapper.binvoce.SelfCarApplMapper;
  5. import com.jkcredit.invoice.mapper.customer.CustomerCarRecMapper;
  6. import com.jkcredit.invoice.mapper.waybill.NoCarWaybillMapper;
  7. import com.jkcredit.invoice.mapper.waybill.SellCarTradeMapper;
  8. import com.jkcredit.invoice.model.entity.waybill.NoCarWayBill;
  9. import com.jkcredit.invoice.model.entity.waybill.SelfCarTrade;
  10. import com.jkcredit.invoice.service.lowerservice.NoCarService;
  11. import com.jkcredit.invoice.service.lowerservice.SelfCarCustService;
  12. import com.jkcredit.invoice.service.lowerservice.vo.ApplQueryInvVo;
  13. import com.jkcredit.invoice.service.manager.ParamService;
  14. import com.jkcredit.invoice.service.selfcar.SelfCarTradeService;
  15. import com.jkcredit.invoice.service.thead.ThreadPoolFactory;
  16. import com.jkcredit.invoice.service.upservice.SelfCarInterface;
  17. import com.jkcredit.invoice.util.DateUtil;
  18. import com.jkcredit.invoice.util.RespR;
  19. import lombok.extern.slf4j.Slf4j;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.scheduling.annotation.Scheduled;
  22. import org.springframework.stereotype.Component;
  23. import org.springframework.util.StringUtils;
  24. import java.net.InetAddress;
  25. import java.util.Arrays;
  26. import java.util.HashMap;
  27. import java.util.List;
  28. import java.util.Map;
  29. import java.util.concurrent.ExecutorService;
  30. /**
  31. * @description:
  32. * @author: sunzhaoning
  33. * @create: 2019-06-27 16:36
  34. * @version: V1.0
  35. **/
  36. @Component
  37. @Slf4j
  38. public class ScheduledBillTask {
  39. ExecutorService executorService = ThreadPoolFactory.getThreadPool("qupaioxiancheng",20,50);
  40. @Autowired
  41. NoCarWaybillMapper noCarWaybillMapper;
  42. @Autowired
  43. SelfCarApplMapper selfCarApplMapper;
  44. @Autowired
  45. SellCarTradeMapper sellCarTradeMapper;
  46. @Autowired
  47. NoCarService noCarService;
  48. @Autowired
  49. SelfCarCustService selfCarService;
  50. @Autowired
  51. CustomerCarRecMapper customerCarRecMapper;
  52. @Autowired
  53. ParamService paramService;
  54. @Autowired
  55. SelfCarTradeService selfCarTradeService;
  56. public static void main(String[] args) {
  57. List<Integer> list = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15);
  58. int total = list.size();
  59. int pageSize = 3;
  60. //分四个线程去取
  61. for (int page = 0; page <= total / pageSize; page++) {
  62. List<Integer> noCarWayBillsMdEndi = list.subList(page * pageSize, (page + 1) * pageSize > total ? total : (page + 1) * pageSize);
  63. System.out.print(noCarWayBillsMdEndi.toString() + "\n");
  64. }
  65. }
  66. /**
  67. * 实时运单开票(每三小时开始)
  68. */
  69. @Scheduled(cron = "0 0 0/3 * * ?", zone = "Asia/Shanghai")
  70. public void updateNocarBillInfo() throws Exception {
  71. InetAddress addr = InetAddress.getLocalHost();
  72. String ip = paramService.getParamsByParamName("CURR_SELF_IP").getParamValue();
  73. log.info("CURR_SELF_IP" + ip + ",address:" + addr);
  74. if (!addr.getHostAddress().equals(ip)) {
  75. log.info("!bengjiqikaipao");
  76. return;
  77. } else {
  78. log.info("bengjiqikaipao");
  79. }
  80. try {
  81. delGetInvoce(0);
  82. } catch (Exception e) {
  83. e.printStackTrace();
  84. }
  85. }
  86. public void delGetInvoce(Integer historyFlag) {
  87. NoCarWayBill carWayBill = new NoCarWayBill();
  88. carWayBill.setHisFlag(historyFlag);
  89. carWayBill.setBillwayStatus(2);
  90. List<NoCarWayBill> noCarWayBillsMdEnd = noCarWaybillMapper.selectByHisFlagAndBillStatus(carWayBill);
  91. if (noCarWayBillsMdEnd != null && noCarWayBillsMdEnd.size() > 0) {
  92. int total = noCarWayBillsMdEnd.size();
  93. log.info("实时取票数量" + total);
  94. int pageSize = 5000;
  95. //线程去取
  96. for (int page = 0; page <= total / pageSize; page++) {
  97. List<NoCarWayBill> noCarWayBillsMdEndi = noCarWayBillsMdEnd.subList(page * pageSize, (page + 1) * pageSize > total ? total : (page + 1) * pageSize);
  98. if (noCarWayBillsMdEndi == null || noCarWayBillsMdEndi.size() == 0) {
  99. continue;
  100. }
  101. executorService.execute(() -> {
  102. log.info("qupiaoshumu" + noCarWayBillsMdEndi.size());
  103. for (NoCarWayBill noCarWayBill : noCarWayBillsMdEndi) {
  104. log.info("实时取票运单" + noCarWayBill.getBillNum());
  105. try {
  106. noCarService.getInvoiceByWayBillNumReal(noCarWayBill, false);
  107. } catch (Exception e) {
  108. log.debug("取票失败" + noCarWayBill.getBillNum() + e.getMessage());
  109. }
  110. }
  111. log.info("qupiaoshumujiesu" + noCarWayBillsMdEndi.size());
  112. });
  113. }
  114. log.info("实时取票数量" + noCarWayBillsMdEnd.size() + "jiesula");
  115. }
  116. }
  117. /**
  118. * 历史运单开票(每天整点点开始) todo 改成动态设置
  119. */
  120. @Scheduled(cron = "0 0 0/1 * * ?", zone = "Asia/Shanghai")
  121. public void updateHistoryNocarBillInfo() throws Exception {
  122. InetAddress addr = InetAddress.getLocalHost();
  123. String ip = paramService.getParamsByParamName("HISTORY_IP").getParamValue();
  124. log.info("HISTORY_IP" + ip + ",address:" + addr);
  125. if (!addr.getHostAddress().equals(ip)) {
  126. log.info("!bengjiqikaipao");
  127. return;
  128. } else {
  129. log.info("bengjiqikaipao");
  130. }
  131. try {
  132. delGetInvoce(1);
  133. } catch (Exception e) {
  134. e.printStackTrace();
  135. }
  136. }
  137. @Autowired
  138. com.jkcredit.invoice.mapper.waybill.WayBillFileMapper wayBillFileMapper;
  139. @Scheduled(cron = "0 0 1 * * ?", zone = "Asia/Shanghai")
  140. public void deleteFile()throws Exception{
  141. InetAddress addr = InetAddress.getLocalHost();
  142. String ip = paramService.getParamsByParamName("CURR_SELF_IP").getParamValue();
  143. log.info("CURR_SELF_IP" + ip + ",address:" + addr);
  144. if (!addr.getHostAddress().equals(ip)) {
  145. log.info("!shanchufile");
  146. return;
  147. } else {
  148. log.info("shanchufile");
  149. }
  150. String yesdate = DateUtil.getDateAfterDayTime(DateUtil.getCurrentDateStr(),-3);
  151. wayBillFileMapper.deleteFileByTime(yesdate);
  152. }
  153. @Autowired
  154. SelfCarInterface selfCarInterface;
  155. @Scheduled(cron = "0 20 30 4 * ?", zone = "Asia/Shanghai")
  156. public void test()throws Exception{
  157. getSefCarInvoice();
  158. }
  159. /**
  160. * @Scheduled(cron = "0 0 23 * * ?", zone = "Asia/Shanghai")
  161. * @throws Exception
  162. */
  163. @Scheduled(cron = "0 58 23 * * ?", zone = "Asia/Shanghai")
  164. public void getSefCarInvoice() throws Exception {
  165. InetAddress addr = InetAddress.getLocalHost();
  166. String ip = paramService.getParamsByParamName("CURR_SELF_IP").getParamValue();
  167. log.info("CURR_SELF_IP" + ip + ",address:" + addr);
  168. if (!addr.getHostAddress().equals(ip)) {
  169. log.info("!bengjiqikaipao");
  170. return;
  171. } else {
  172. log.info("bengjiqikaipao");
  173. }
  174. /**
  175. * 1.交易id中所有待开票的etc卡号,和当天的开票完成的交易id
  176. * 更新交易状态
  177. */
  178. List<SelfCarTrade> lst = sellCarTradeMapper.selectNeedGetTrades();
  179. log.info("getSefCarInvoice处理条数{}",lst.size());
  180. /**
  181. * 开始取票 取票可以通过 申请id 进行取票
  182. */
  183. Map<String,ApplQueryInvVo> map = new HashMap<>();
  184. lst.stream().forEach(selfCarTrade -> {
  185. ApplQueryInvVo applQueryInvVo = new ApplQueryInvVo();
  186. applQueryInvVo.setCompanyNum(selfCarTrade.getCompanyNum());
  187. applQueryInvVo.setEtcNum(selfCarTrade.getCardId());
  188. applQueryInvVo.setCompanyName(selfCarTrade.getCompanyName());
  189. applQueryInvVo.setCustomerName(selfCarTrade.getCustomId());
  190. applQueryInvVo.setCompanyReferencenum(selfCarTrade.getCompanyReferencenum());
  191. if(StringUtils.isEmpty(selfCarTrade.getApplId())){
  192. //1.获取到交易id
  193. TradeApplyQueryRequest tradeApplyQueryRequest = new TradeApplyQueryRequest();
  194. tradeApplyQueryRequest.setCompanyNum(selfCarTrade.getCompanyNum());
  195. tradeApplyQueryRequest.setCardId(selfCarTrade.getCardId());
  196. tradeApplyQueryRequest.setTradeId(selfCarTrade.getTradeId());
  197. RespR<TradeApplyQueryResponse> respR = selfCarInterface.queryApplyQueryByTradeId(tradeApplyQueryRequest);
  198. if(respR.getCode()!=1){
  199. selfCarTrade.setApplId(respR.getData().getApplyId());
  200. selfCarTrade.setAclTime(DateUtil.getCurrentDateStr());
  201. }
  202. }
  203. applQueryInvVo.setApplId(selfCarTrade.getApplId());
  204. map.put(selfCarTrade.getApplId(),applQueryInvVo);
  205. });
  206. for(Map.Entry<String,ApplQueryInvVo> entry:map.entrySet()){
  207. ApplQueryInvVo applQueryInvVo = entry.getValue();
  208. try {
  209. selfCarService.getSelfCarInvoicesByApplyIdsDb(applQueryInvVo);
  210. }catch (Exception e){
  211. e.printStackTrace();
  212. log.error("{}处理取票失败,失败原因{}",applQueryInvVo.getEtcNum()+"#"+applQueryInvVo.getApplId(),e.getMessage());
  213. }
  214. }
  215. selfCarTradeService.updateTradesDb(lst);
  216. log.info("getSefCarInvoice处理完成");
  217. }
  218. }