|
@@ -0,0 +1,462 @@
|
|
|
+package com.jkcredit.invoice.async;
|
|
|
+
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
|
|
+import com.jkcredit.invoice.common.CommonConstants;
|
|
|
+import com.jkcredit.invoice.model.entity.*;
|
|
|
+import com.jkcredit.invoice.model.vo.CarFreeCarrierBillVo;
|
|
|
+import com.jkcredit.invoice.service.CarFreeCarrierBillEndService;
|
|
|
+import com.jkcredit.invoice.service.CarFreeCarrierBillStartService;
|
|
|
+import com.jkcredit.invoice.service.InvoiceService;
|
|
|
+import com.jkcredit.invoice.util.DateUtil;
|
|
|
+import com.jkcredit.invoice.util.HttpUtil;
|
|
|
+import com.jkcredit.invoice.util.ReadExcelUtil;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.joda.time.DateTime;
|
|
|
+import org.joda.time.format.DateTimeFormat;
|
|
|
+import org.joda.time.format.DateTimeFormatter;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.concurrent.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @description: 异步处理运单
|
|
|
+ * @author: sunzhaoning
|
|
|
+ * @create: 2019-07-04 14:13
|
|
|
+ * @version: V1.0
|
|
|
+ **/
|
|
|
+@Component
|
|
|
+@Slf4j
|
|
|
+public class CarFreeBillAsync {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InvoiceService invoiceService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CarFreeCarrierBillStartService carFreeCarrierBillStartService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CarFreeCarrierBillEndService carFreeCarrierBillEndService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private HttpUtil httpUtil;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RedisTemplate redisTemplate;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 异步处理历史运单
|
|
|
+ *
|
|
|
+ * @param list
|
|
|
+ * @param user
|
|
|
+ * @param id
|
|
|
+ * @param batchNumber
|
|
|
+ */
|
|
|
+ @Async
|
|
|
+ public void historyBill(List<CarFreeCarrierBillVo> list, User user, String id, String batchNumber,
|
|
|
+ Map<String, String> registerFailedMap) {
|
|
|
+ log.info("批量导入历史运单异步接口接收到的数据:{}", JSON.toJSONString(list));
|
|
|
+ DateTimeFormatter sdf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+
|
|
|
+ Map<String, Integer> startBillResult = new HashMap<>();
|
|
|
+ if (null != list) {
|
|
|
+ list.stream().forEach(c -> {
|
|
|
+ Integer isSuccess = startBill(c, CommonConstants.WAY_BILL_HISTORY_START_API, registerFailedMap, user, id, batchNumber);
|
|
|
+ startBillResult.put(c.getNum(), isSuccess);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (null != list) {
|
|
|
+ list.stream().forEach(c -> {
|
|
|
+ DateTime endDateTime = new DateTime(c.getEndTime());
|
|
|
+ String endTime = endDateTime.toString(sdf);
|
|
|
+
|
|
|
+ //构建运单结束实体
|
|
|
+ CarFreeCarrierBillEnd carFreeCarrierBillEnd = new CarFreeCarrierBillEnd();
|
|
|
+
|
|
|
+ if (startBillResult.get(c.getNum()) == 1) {
|
|
|
+ // isSuccess == 1 历史运单开始指令成功
|
|
|
+
|
|
|
+ Map<String, Object> endMap = new HashMap<>(8);
|
|
|
+ endMap.put("num", c.getNum());
|
|
|
+ endMap.put("realDestAddr", c.getDestAddr());
|
|
|
+ endMap.put("endTime", DateUtil.dateToTime(endTime));
|
|
|
+ //调用接口
|
|
|
+ String endResult = httpUtil.getCheckResult(endMap, CommonConstants.WAY_BILL_HISTORY_END_API);
|
|
|
+ //测试用 不能提交!!!
|
|
|
+// String endResult = "{\n" +
|
|
|
+// " \"data\": 1,\n" +
|
|
|
+// " \"code\": 200,\n" +
|
|
|
+// " \"requestid\": \"20190429094207829,503b6b8d-ce1b-4d8f-82a0-1b5b9f6c5792\",\n" +
|
|
|
+// " \"msg\": \"{\\\"info\\\":\\\"成功\\\",\\\"receiveTime\\\":\\\"2019-04-29T09:50:16\\\"}\"\n" +
|
|
|
+// "}";
|
|
|
+ log.info("历史运单结束接口返回:{},请求参数:{}", endResult, JSON.toJSONString(endMap));
|
|
|
+ //转换结果为jsonobject
|
|
|
+ JSONObject endResultJson = JSON.parseObject(endResult);
|
|
|
+ //获取返回data值
|
|
|
+ String endDataCode = endResultJson.getString("data");
|
|
|
+ //判断返回值是否为1 如果是1 设置状态为成功
|
|
|
+ if ("1".equals(endDataCode)) {
|
|
|
+ carFreeCarrierBillEnd.setIsSuccess(CommonConstants.SUCCESS);
|
|
|
+ } else {
|
|
|
+ //设置失败
|
|
|
+ log.info(endResultJson.getString("msg"));
|
|
|
+ carFreeCarrierBillEnd.setIsSuccess(CommonConstants.ERROR);
|
|
|
+ if (StringUtils.isNotBlank(endResultJson.getString("msg"))) {
|
|
|
+ carFreeCarrierBillEnd.setErrorMsg(endResultJson.getString("msg").replace("\n", ""));
|
|
|
+ } else {
|
|
|
+ carFreeCarrierBillEnd.setErrorMsg("上传失败!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // isSuccess == 2 历史运单开始指令失败
|
|
|
+ carFreeCarrierBillEnd.setIsSuccess(CommonConstants.ERROR);
|
|
|
+ carFreeCarrierBillEnd.setErrorMsg("上传失败:运单开始指令上传失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ carFreeCarrierBillEnd.setNum(c.getNum());
|
|
|
+ carFreeCarrierBillEnd.setRealDestAddr(c.getDestAddr());
|
|
|
+ carFreeCarrierBillEnd.setEndTime(endTime);
|
|
|
+ carFreeCarrierBillEnd.setBatchId(id);
|
|
|
+ carFreeCarrierBillEnd.setBatchNumber(batchNumber);
|
|
|
+ carFreeCarrierBillEnd.setUserId(user.getId());
|
|
|
+ carFreeCarrierBillEnd.setUserName(user.getUserName());
|
|
|
+ carFreeCarrierBillEnd.setUserCompany(user.getCompany());
|
|
|
+ carFreeCarrierBillEnd.setUserPhone(user.getPhone());
|
|
|
+ carFreeCarrierBillEnd.setCreateTime(System.currentTimeMillis());
|
|
|
+ carFreeCarrierBillEnd.setIsHistory(CommonConstants.ERROR);
|
|
|
+ //判断运单结束是否成功
|
|
|
+ if (StrUtil.equals(CommonConstants.SUCCESS.toString(), carFreeCarrierBillEnd.getIsSuccess().toString())) {
|
|
|
+ //设置运单状态已完结
|
|
|
+ carFreeCarrierBillStartService.updateStatusAndBatchId(c.getNum(), CommonConstants.FINISHED, id);
|
|
|
+ }
|
|
|
+ //插入运单结束信息
|
|
|
+ carFreeCarrierBillEndService.save(carFreeCarrierBillEnd);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 异步处理实时运单开始
|
|
|
+ *
|
|
|
+ * @param list
|
|
|
+ * @param user
|
|
|
+ * @param id
|
|
|
+ * @param batchNumber
|
|
|
+ */
|
|
|
+ @Async
|
|
|
+ public void startBill(List<CarFreeCarrierBillVo> list, User user, String id, String batchNumber,
|
|
|
+ Map<String, String> registerFailedMap) {
|
|
|
+ log.info("批量导入实时运单异步接口接收到的数据:{}", JSON.toJSONString(list));
|
|
|
+ DateTimeFormatter sdf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ //线程分割数
|
|
|
+ int count = 0;
|
|
|
+ //获取list大小
|
|
|
+ int listSize = list.size();
|
|
|
+ if (listSize <= 100) {
|
|
|
+ count = 20;
|
|
|
+ } else if (listSize <= 1000 && listSize > 100) {
|
|
|
+ count = 50;
|
|
|
+ } else if (listSize <= 12000 && listSize > 1000) {
|
|
|
+ count = 120;
|
|
|
+ } else if (listSize <= 20000 && listSize > 12000) {
|
|
|
+ count = 150;
|
|
|
+ } else if (listSize <= 30000 && listSize > 20000) {
|
|
|
+ count = 300;
|
|
|
+ } else {
|
|
|
+ count = 500;
|
|
|
+ }
|
|
|
+ //线程数
|
|
|
+ int threadSize = (listSize / count) + 1;
|
|
|
+
|
|
|
+ ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("thread-billStart-%d").build();
|
|
|
+ ExecutorService executor = new ThreadPoolExecutor(threadSize, threadSize, 200L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), namedThreadFactory);
|
|
|
+
|
|
|
+ CountDownLatch countDownLatch = new CountDownLatch(threadSize);
|
|
|
+
|
|
|
+ List<CarFreeCarrierBillVo> newList;
|
|
|
+ for (int i = 0; i < threadSize; i++) {
|
|
|
+ if ((i + 1) == threadSize) {
|
|
|
+ int startIndex = (i * count);
|
|
|
+ int endIndex = list.size();
|
|
|
+ newList = list.subList(startIndex, endIndex);
|
|
|
+ } else {
|
|
|
+ int startIndex = i * count;
|
|
|
+ int endIndex = (i + 1) * count;
|
|
|
+ newList = list.subList(startIndex, endIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<CarFreeCarrierBillVo> finalNewList = newList;
|
|
|
+ executor.execute(new Thread(() -> {
|
|
|
+ if (null != finalNewList) {
|
|
|
+ finalNewList.stream().forEach(c -> {
|
|
|
+ startBill(c, CommonConstants.WAY_BILL_START_API, registerFailedMap, user, id, batchNumber);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ countDownLatch.countDown();
|
|
|
+ }));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ countDownLatch.await();
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ executor.shutdown();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private Integer startBill(CarFreeCarrierBillVo carFreeCarrierBillVo, String api, Map<String, String> registerFailedMap,
|
|
|
+ User user, String id, String batchNumber) {
|
|
|
+ DateTimeFormatter sdf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ Invoice invoice = invoiceService.getInvoiceByDutyParagraph(carFreeCarrierBillVo.getTaxPlayerCode());
|
|
|
+ CarFreeCarrierBillStart carFreeCarrierBillStart = new CarFreeCarrierBillStart();
|
|
|
+ DateTime startDateTime = new DateTime(carFreeCarrierBillVo.getStartTime());
|
|
|
+ String startTime = startDateTime.toString(sdf);
|
|
|
+
|
|
|
+ DateTime endDateTime = new DateTime(carFreeCarrierBillVo.getEndTime());
|
|
|
+ String endTime = endDateTime.toString(sdf);
|
|
|
+
|
|
|
+ if (registerFailedMap.containsKey(carFreeCarrierBillVo.getPlateNumber())
|
|
|
+ && carFreeCarrierBillVo.getPlateColor().equals(registerFailedMap.get(carFreeCarrierBillVo.getPlateNumber()))) {
|
|
|
+ //设置失败
|
|
|
+ log.info("运单号:{},运单开始失败原因:车辆备案失败", carFreeCarrierBillVo.getNum());
|
|
|
+ carFreeCarrierBillStart.setIsSuccess(CommonConstants.ERROR);
|
|
|
+ carFreeCarrierBillStart.setErrorMsg("车辆备案失败");
|
|
|
+ } else {
|
|
|
+ //构建运单开始实体
|
|
|
+ Map<String, Object> startMap = new HashMap<>(16);
|
|
|
+// startMap.put("companyNum", "10004616");
|
|
|
+ startMap.put("num", carFreeCarrierBillVo.getNum());
|
|
|
+ startMap.put("plateNumber", carFreeCarrierBillVo.getPlateNumber());
|
|
|
+ startMap.put("plateColor", carFreeCarrierBillVo.getPlateColor());
|
|
|
+ startMap.put("startTime", DateUtil.dateToTime(startTime));
|
|
|
+ startMap.put("sourceAddr", carFreeCarrierBillVo.getSourceAddr());
|
|
|
+ startMap.put("destAddr", carFreeCarrierBillVo.getDestAddr());
|
|
|
+ startMap.put("predictEndTime", DateUtil.dateToTime(endTime));
|
|
|
+ startMap.put("fee", ReadExcelUtil.bigDecimalToLong(carFreeCarrierBillVo.getFee()));
|
|
|
+ startMap.put("titleType", 2);
|
|
|
+ startMap.put("taxplayerCode", carFreeCarrierBillVo.getTaxPlayerCode());
|
|
|
+
|
|
|
+ //调用接口
|
|
|
+ String startMResult = httpUtil.getCheckResult(startMap, api);
|
|
|
+ // 测试用 不可提交
|
|
|
+// String startMResult = "{\n" +
|
|
|
+// " \"data\": 1,\n" +
|
|
|
+// " \"code\": 200,\n" +
|
|
|
+// " \"requestid\": \"20190429094207829,503b6b8d-ce1b-4d8f-82a0-1b5b9f6c5792\",\n" +
|
|
|
+// " \"msg\": \"{\\\"info\\\":\\\"成功\\\",\\\"receiveTime\\\":\\\"2019-04-29T09:50:16\\\"}\"\n" +
|
|
|
+// "}";
|
|
|
+ log.info("运单开始接口返回:{},请求参数:{}", startMResult, JSON.toJSONString(startMap));
|
|
|
+ //转换结果为jsonobject
|
|
|
+ JSONObject startResultJson = JSON.parseObject(startMResult);
|
|
|
+ //获取返回data值
|
|
|
+ String dataCode = startResultJson.getString("data");
|
|
|
+ //判断返回值是否为1 如果是1 设置状态为成功
|
|
|
+ if ("1".equals(dataCode)) {
|
|
|
+ carFreeCarrierBillStart.setIsSuccess(CommonConstants.SUCCESS);
|
|
|
+ } else {
|
|
|
+ //设置失败
|
|
|
+ log.info(startResultJson.getString("msg"));
|
|
|
+ carFreeCarrierBillStart.setIsSuccess(CommonConstants.ERROR);
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(startResultJson.getString("msg"))) {
|
|
|
+ carFreeCarrierBillStart.setErrorMsg(startResultJson.getString("msg").replace("\n", ""));
|
|
|
+ } else {
|
|
|
+ carFreeCarrierBillStart.setErrorMsg("上传失败,请重试");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ carFreeCarrierBillStart.setNum(carFreeCarrierBillVo.getNum());
|
|
|
+ carFreeCarrierBillStart.setPlateNumber(carFreeCarrierBillVo.getPlateNumber());
|
|
|
+ carFreeCarrierBillStart.setPlateColor(carFreeCarrierBillVo.getPlateColor());
|
|
|
+ carFreeCarrierBillStart.setStartTime(startTime);
|
|
|
+ carFreeCarrierBillStart.setSourceAddr(carFreeCarrierBillVo.getSourceAddr());
|
|
|
+ carFreeCarrierBillStart.setDestAddr(carFreeCarrierBillVo.getDestAddr());
|
|
|
+ carFreeCarrierBillStart.setPredictEndTime(endTime);
|
|
|
+ carFreeCarrierBillStart.setFee(ReadExcelUtil.bigDecimalToLong(carFreeCarrierBillVo.getFee()));
|
|
|
+ carFreeCarrierBillStart.setTitleType(2);
|
|
|
+ carFreeCarrierBillStart.setTaxPlayerCode(carFreeCarrierBillVo.getTaxPlayerCode());
|
|
|
+ carFreeCarrierBillStart.setName(invoice.getCompany());
|
|
|
+ carFreeCarrierBillStart.setAddress(invoice.getAddress());
|
|
|
+ carFreeCarrierBillStart.setTel(invoice.getBuyerTel());
|
|
|
+ carFreeCarrierBillStart.setBank(invoice.getBankAddress());
|
|
|
+ carFreeCarrierBillStart.setBankAccount(invoice.getBankNumber());
|
|
|
+ carFreeCarrierBillStart.setBatchId(id);
|
|
|
+ carFreeCarrierBillStart.setBatchNumber(batchNumber);
|
|
|
+ carFreeCarrierBillStart.setUserId(user.getId());
|
|
|
+ carFreeCarrierBillStart.setUserName(user.getUserName());
|
|
|
+ carFreeCarrierBillStart.setUserCompany(user.getCompany());
|
|
|
+ carFreeCarrierBillStart.setUserPhone(user.getPhone());
|
|
|
+ carFreeCarrierBillStart.setCreateTime(System.currentTimeMillis());
|
|
|
+ carFreeCarrierBillStart.setStatus(CommonConstants.BILL_ERROR);
|
|
|
+ if (api.equals(CommonConstants.WAY_BILL_HISTORY_START_API)) {
|
|
|
+ carFreeCarrierBillStart.setIsHistory(2);
|
|
|
+ } else {
|
|
|
+ carFreeCarrierBillStart.setIsHistory(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (CommonConstants.AUTO_INVOICE.equals(carFreeCarrierBillVo.getAutoFlag())) {
|
|
|
+ carFreeCarrierBillStart.setAutoFlag(CommonConstants.AUTO_INVOICE);
|
|
|
+ }
|
|
|
+ //判断运单开始状态是否成功
|
|
|
+ if (StrUtil.equals(carFreeCarrierBillStart.getIsSuccess().toString(), CommonConstants.SUCCESS.toString())) {
|
|
|
+ //设置运单状态为未完结
|
|
|
+ carFreeCarrierBillStart.setStatus(CommonConstants.UNFINISHED);
|
|
|
+ }
|
|
|
+ //插入运单开始信息
|
|
|
+ carFreeCarrierBillStartService.save(carFreeCarrierBillStart);
|
|
|
+
|
|
|
+ return carFreeCarrierBillStart.getIsSuccess();
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 异步处理实时运单结束
|
|
|
+ *
|
|
|
+ * @param list
|
|
|
+ * @param user
|
|
|
+ * @param id
|
|
|
+ * @param batchNumber
|
|
|
+ */
|
|
|
+ @Async
|
|
|
+ public void endBill(List<CarFreeCarrierBillEnd> list, User user, String id, String batchNumber) {
|
|
|
+ log.info("批量导入结束运单异步接口接收到的数据:{}", JSON.toJSONString(list));
|
|
|
+
|
|
|
+ DateTimeFormatter sdf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ //线程分割数
|
|
|
+ int count = 0;
|
|
|
+ //获取list大小
|
|
|
+ int listSize = list.size();
|
|
|
+ if (listSize <= 100) {
|
|
|
+ count = 20;
|
|
|
+ } else if (listSize <= 1000 && listSize > 100) {
|
|
|
+ count = 50;
|
|
|
+ } else if (listSize <= 12000 && listSize > 1000) {
|
|
|
+ count = 120;
|
|
|
+ } else if (listSize <= 20000 && listSize > 12000) {
|
|
|
+ count = 150;
|
|
|
+ } else if (listSize <= 30000 && listSize > 20000) {
|
|
|
+ count = 300;
|
|
|
+ } else {
|
|
|
+ count = 500;
|
|
|
+ }
|
|
|
+ //线程数
|
|
|
+ int threadSize = (listSize / count) + 1;
|
|
|
+
|
|
|
+ ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("thread-billEnd-%d").build();
|
|
|
+ ExecutorService executor = new ThreadPoolExecutor(threadSize, threadSize, 200L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), namedThreadFactory);
|
|
|
+
|
|
|
+ CountDownLatch countDownLatch = new CountDownLatch(threadSize);
|
|
|
+ List<CarFreeCarrierBillEnd> newList;
|
|
|
+ for (int i = 0; i < threadSize; i++) {
|
|
|
+ if ((i + 1) == threadSize) {
|
|
|
+ int startIndex = (i * count);
|
|
|
+ int endIndex = list.size();
|
|
|
+ newList = list.subList(startIndex, endIndex);
|
|
|
+ } else {
|
|
|
+ int startIndex = i * count;
|
|
|
+ int endIndex = (i + 1) * count;
|
|
|
+ newList = list.subList(startIndex, endIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<CarFreeCarrierBillEnd> finalNewList = newList;
|
|
|
+ executor.execute(new Thread(() -> {
|
|
|
+ if (null != finalNewList) {
|
|
|
+ finalNewList.stream().forEach(c -> {
|
|
|
+ String redisKey = CommonConstants.NUM_KEY_END + c.getNum();
|
|
|
+ if (redisTemplate.hasKey(redisKey)) {
|
|
|
+ log.info("实时运单结束,运单号:{},已存在", c.getNum());
|
|
|
+ } else {
|
|
|
+ DateTime endDateTime = new DateTime(c.getBillEndTime());
|
|
|
+ String endTime = endDateTime.toString(sdf);
|
|
|
+
|
|
|
+ //构建运单结束实体
|
|
|
+ CarFreeCarrierBillEnd carFreeCarrierBillEnd = new CarFreeCarrierBillEnd();
|
|
|
+ Map<String, Object> endMap = new HashMap<>(8);
|
|
|
+ endMap.put("companyNum", "10004616");
|
|
|
+ endMap.put("num", c.getNum());
|
|
|
+ endMap.put("realDestAddr", c.getRealDestAddr());
|
|
|
+ endMap.put("endTime", DateUtil.dateToTime(endTime));
|
|
|
+// endMap.put("invoiceTime", c.getInvoiceTime());
|
|
|
+ //调用接口
|
|
|
+ String endResult = httpUtil.getCheckResult(endMap, CommonConstants.WAY_BILL_END_API);
|
|
|
+ // todo 测试后删除
|
|
|
+// String endResult = "{\n" +
|
|
|
+// " \"data\": 1,\n" +
|
|
|
+// " \"code\": 200,\n" +
|
|
|
+// " \"requestid\": \"20190429094207829,503b6b8d-ce1b-4d8f-82a0-1b5b9f6c5792\",\n" +
|
|
|
+// " \"msg\": \"{\\\"info\\\":\\\"成功\\\",\\\"receiveTime\\\":\\\"2019-04-29T09:50:16\\\"}\"\n" +
|
|
|
+// "}";
|
|
|
+ log.info("运单结束接口返回:{},请求参数:{},结束时间是:{}", endResult, JSON.toJSONString(endMap),endTime);
|
|
|
+ //转换结果为jsonobject
|
|
|
+ JSONObject endResultJson = JSON.parseObject(endResult);
|
|
|
+ //获取返回data值
|
|
|
+ String endDataCode = endResultJson.getString("data");
|
|
|
+ //判断返回值是否为1 如果是1 设置状态为成功
|
|
|
+ if ("1".equals(endDataCode)) {
|
|
|
+ //设置状态为成功
|
|
|
+ carFreeCarrierBillEnd.setIsSuccess(CommonConstants.SUCCESS);
|
|
|
+ redisTemplate.opsForValue().set(redisKey, JSON.toJSONString(c));
|
|
|
+ } else {
|
|
|
+ //设置失败
|
|
|
+ log.info(endResultJson.getString("msg"));
|
|
|
+ carFreeCarrierBillEnd.setIsSuccess(CommonConstants.ERROR);
|
|
|
+ }
|
|
|
+ carFreeCarrierBillEnd.setInvoiceTime(c.getInvoiceTime());
|
|
|
+ carFreeCarrierBillEnd.setNum(c.getNum());
|
|
|
+ carFreeCarrierBillEnd.setEndTime(endTime);
|
|
|
+ carFreeCarrierBillEnd.setRealDestAddr(c.getRealDestAddr());
|
|
|
+ carFreeCarrierBillEnd.setBatchId(id);
|
|
|
+ carFreeCarrierBillEnd.setBatchNumber(batchNumber);
|
|
|
+ carFreeCarrierBillEnd.setUserId(user.getId());
|
|
|
+ carFreeCarrierBillEnd.setUserName(user.getUserName());
|
|
|
+ carFreeCarrierBillEnd.setUserCompany(user.getCompany());
|
|
|
+ carFreeCarrierBillEnd.setUserPhone(user.getPhone());
|
|
|
+ carFreeCarrierBillEnd.setCreateTime(System.currentTimeMillis());
|
|
|
+ //设置运单是否为历史运单
|
|
|
+ carFreeCarrierBillEnd.setIsHistory(CommonConstants.SUCCESS);
|
|
|
+ //判断运单结束是否成功
|
|
|
+ if (carFreeCarrierBillEnd.getIsSuccess().equals(CommonConstants.SUCCESS)) {
|
|
|
+ try {
|
|
|
+ //设置运单状态已完结
|
|
|
+ carFreeCarrierBillStartService.updateStatus(c.getNum(), CommonConstants.FINISHED);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("运单状态更新失败:{}", e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //插入运单结束信息
|
|
|
+ try {
|
|
|
+ carFreeCarrierBillEndService.save(carFreeCarrierBillEnd);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("运单状态插入失败:{}", e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ countDownLatch.countDown();
|
|
|
+ }));
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ countDownLatch.await();
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ executor.shutdown();
|
|
|
+ }
|
|
|
+}
|