Przeglądaj źródła

无车优化,自有车接口返回

Administrator 2 lat temu
rodzic
commit
235f573390

+ 1 - 0
src/main/java/com/jkcredit/invoice/controller/business/SelfCarController.java

@@ -435,6 +435,7 @@ public class SelfCarController {
                 String[] cardAndTrade = cardAndTrades[i].split("#");
                 InvoiceApplVo invoiceApplVo = map.get(cardAndTrade[0]);
                 if (invoiceApplVo == null) {
+                    invoiceApplVo = new InvoiceApplVo();
                     invoiceApplVo.setCompanyName(tradeRequestCarNumVo.getCompanyName());
                     invoiceApplVo.setCustomerName(tradeRequestCarNumVo.getCustomerName());
                     invoiceApplVo.setCardId(cardAndTrade[0]);

+ 13 - 0
src/main/java/com/jkcredit/invoice/model/entity/waybill/NoCarWayBill.java

@@ -188,6 +188,13 @@ public class NoCarWayBill implements Cloneable {
      */
     private Integer interType = 1;
 
+    /**
+     * 是否是拆分记录 0-否 1-是
+     */
+    private byte splitFlag = 0;
+
+    public static final byte SPLIT_FALG_TRUE = 1;
+
     public Integer getInterType() {
         return interType;
     }
@@ -512,7 +519,13 @@ public class NoCarWayBill implements Cloneable {
     public void setBillNums(List<String> billNums) {
         this.billNums = billNums;
     }
+    public byte getSplitFlag() {
+        return splitFlag;
+    }
 
+    public void setSplitFlag(byte splitFlag) {
+        this.splitFlag = splitFlag;
+    }
     @Override
     public String toString() {
         return "NoCarWayBill{" +

+ 118 - 31
src/main/java/com/jkcredit/invoice/service/lowerservice/impl/NoCarServiceImpl.java

@@ -480,22 +480,58 @@ public class NoCarServiceImpl implements NoCarService {
             insertOrUpdateBillStart(noCarWayBill);
             return respR;
         }
-        WaybillHistoryStartRequest waybillHistoryStartRequest = buildNoCarHisWaybill(noCarWayBill);
-        RespR<WaybillHistoryStartResponse> responseRespR = noCarInterface.waybillHistoryStart(waybillHistoryStartRequest);
-
-        if (responseRespR.getCode() == 1) {
-            log.info("历史运单开始上传失败:NoCarServiceImpl.noCarHisWaybillStart{},msg{}", noCarWayBill, responseRespR.getMsg());
-            noCarWayBill.setBillwayStatus(-2);
-            noCarWayBill.setFailReason(responseRespR.getMsg());
-            insertOrUpdateBillStart(noCarWayBill);
-            return new RespR(false, responseRespR.getMsg());
-        } else {
+        if(noCarWayBill.getSplitFlag() == NoCarWayBill.SPLIT_FALG_TRUE){
+            //TODO 拆分运单特殊处理
+            List<String> startAndEndTimes = DateUtil.getSplitTimeOver96(noCarWayBill.getStartTime(),noCarWayBill.getPredictEndTime());
+            int i = 0;
+            for(String startAndEndTime :startAndEndTimes ){
+                try {
+                    String [] startAndEndTimeStr = startAndEndTime.split("#");
+                    NoCarWayBill noCarWayBillClone = noCarWayBill.clone();
+                    noCarWayBillClone.setStartTime(startAndEndTimeStr[0]);
+                    noCarWayBillClone.setPredictEndTime(startAndEndTimeStr[1]);
+                    noCarWayBillClone.setBillNum(noCarWayBill.getBillNum()+"-jk0"+i);
+                    WaybillHistoryStartRequest waybillHistoryStartRequest = buildNoCarHisWaybill(noCarWayBillClone);
+                    RespR<WaybillHistoryStartResponse> responseRespR = noCarInterface.waybillHistoryStart(waybillHistoryStartRequest);
+                    if (responseRespR.getCode() == 1) {
+                        log.info("历史运单开始上传失败:NoCarServiceImpl.noCarHisWaybillStart{},msg{}", noCarWayBillClone, responseRespR.getMsg());
+                        noCarWayBill.setBillwayStatus(-2);
+                        noCarWayBill.setFailReason(responseRespR.getMsg());
+                        insertOrUpdateBillStart(noCarWayBill);
+                        return new RespR(false, responseRespR.getMsg());
+                    }
+                } catch (CloneNotSupportedException e) {
+                    e.printStackTrace();
+                    noCarWayBill.setBillwayStatus(-2);
+                    noCarWayBill.setFailReason(e.getMessage());
+                    insertOrUpdateBillStart(noCarWayBill);
+                    return new RespR(false,e.getMessage());
+                }
+                i++;
+            }
             noCarWayBill.setIntfaceStartTime(DateUtil.getCurrentDateStr());
             noCarWayBill.setUpdateTime(DateUtil.getCurrentDateStr());
             noCarWayBill.setBillwayStatus(1);
             insertOrUpdateBillStart(noCarWayBill);
+            return new RespR(true);
+        }else{
+            WaybillHistoryStartRequest waybillHistoryStartRequest = buildNoCarHisWaybill(noCarWayBill);
+            RespR<WaybillHistoryStartResponse> responseRespR = noCarInterface.waybillHistoryStart(waybillHistoryStartRequest);
+
+            if (responseRespR.getCode() == 1) {
+                log.info("历史运单开始上传失败:NoCarServiceImpl.noCarHisWaybillStart{},msg{}", noCarWayBill, responseRespR.getMsg());
+                noCarWayBill.setBillwayStatus(-2);
+                noCarWayBill.setFailReason(responseRespR.getMsg());
+                insertOrUpdateBillStart(noCarWayBill);
+                return new RespR(false, responseRespR.getMsg());
+            } else {
+                noCarWayBill.setIntfaceStartTime(DateUtil.getCurrentDateStr());
+                noCarWayBill.setUpdateTime(DateUtil.getCurrentDateStr());
+                noCarWayBill.setBillwayStatus(1);
+                insertOrUpdateBillStart(noCarWayBill);
+            }
+            return new RespR(responseRespR.getData());
         }
-        return new RespR(responseRespR.getData());
     }
 
     public WaybillHistoryStartRequest buildNoCarHisWaybill(NoCarWayBill noCarWayBill) {
@@ -557,23 +593,46 @@ public class NoCarServiceImpl implements NoCarService {
         waybillEndRequest.setNum(noCarWayBillDb.getBillNum());
         waybillEndRequest.setRealDestAddr(noCarWayBillDb.getDestAddr());
         waybillEndRequest.setEndTime(DateUtil.dateFormate(noCarWayBillDb.getPredictEndTime()));
-        RespR<WaybillHistoryEndResponse> waybillEndResponseRespR = noCarInterface.waybillHistoryEnd(waybillEndRequest);
-        if (waybillEndResponseRespR.getCode() == 1) {
-            noCarWayBillDb.setBillwayStatus(-3);
-            noCarWayBillDb.setFailReason(waybillEndResponseRespR.getMsg());
+        if(noCarWayBillDb.getSplitFlag() == NoCarWayBill.SPLIT_FALG_TRUE){
+            List<String> startAndEndTimes = DateUtil.getSplitTimeOver96(noCarWayBillDb.getStartTime(),noCarWayBillDb.getPredictEndTime());
+            int i = 0;
+            for(String startAndEndTime :startAndEndTimes ){
+                String [] startAndEndTimeStr = startAndEndTime.split("#");
+                waybillEndRequest.setEndTime(DateUtil.dateFormate(startAndEndTimeStr[1]));
+                waybillEndRequest.setNum(noCarWayBillDb.getBillNum()+"-jk0"+i);
+                RespR<WaybillHistoryEndResponse> waybillEndResponseRespR = noCarInterface.waybillHistoryEnd(waybillEndRequest);
+                if (waybillEndResponseRespR.getCode() == 1) {
+                    noCarWayBillDb.setBillwayStatus(-3);
+                    noCarWayBillDb.setFailReason(waybillEndResponseRespR.getMsg());
+                    insertOrUpdateBillEnd(noCarWayBillDb);
+                    log.info("历史运单结束上传失败:NoCarServiceImpl.noCarHisWaybillEnd{},msg{}", noCarWayBillDb, waybillEndResponseRespR.getMsg());
+
+                    return new RespR(false, waybillEndResponseRespR.getMsg());
+                }
+            }
+            noCarWayBillDb.setBillwayStatus(2);
             insertOrUpdateBillEnd(noCarWayBillDb);
-            log.info("历史运单结束上传失败:NoCarServiceImpl.noCarHisWaybillEnd{},msg{}", noCarWayBillDb, waybillEndResponseRespR.getMsg());
-
-            return new RespR(false, waybillEndResponseRespR.getMsg());
-        } else if (FOR.equals(waybillEndResponseRespR.getData().getInfo())) {
-            noCarWayBill.setBillwayStatus(4);
+            return new RespR(true);
+        }else{
+            RespR<WaybillHistoryEndResponse> waybillEndResponseRespR = noCarInterface.waybillHistoryEnd(waybillEndRequest);
+            if (waybillEndResponseRespR.getCode() == 1) {
+                noCarWayBillDb.setBillwayStatus(-3);
+                noCarWayBillDb.setFailReason(waybillEndResponseRespR.getMsg());
+                insertOrUpdateBillEnd(noCarWayBillDb);
+                log.info("历史运单结束上传失败:NoCarServiceImpl.noCarHisWaybillEnd{},msg{}", noCarWayBillDb, waybillEndResponseRespR.getMsg());
+
+                return new RespR(false, waybillEndResponseRespR.getMsg());
+            } else if (FOR.equals(waybillEndResponseRespR.getData().getInfo())) {
+                noCarWayBill.setBillwayStatus(4);
+                insertOrUpdateBillEnd(noCarWayBillDb);
+                log.info("历史运单结束上传失败:NoCarServiceImpl.noCarHisWaybillEnd{},msg{}", noCarWayBillDb, "运单已经超时,请拆分");
+                return new RespR(false, "运单已经超时");
+            }
+            noCarWayBillDb.setBillwayStatus(2);
             insertOrUpdateBillEnd(noCarWayBillDb);
-            log.info("历史运单结束上传失败:NoCarServiceImpl.noCarHisWaybillEnd{},msg{}", noCarWayBillDb, "运单已经超时,请拆分");
-            return new RespR(false, "运单已经超时");
+            return new RespR(waybillEndResponseRespR.getData());
         }
-        noCarWayBillDb.setBillwayStatus(2);
-        insertOrUpdateBillEnd(noCarWayBillDb);
-        return new RespR(waybillEndResponseRespR.getData());
+
     }
 
     public WaybillNumFindInvoiceResponse buildInterFaceVoiceData(NoCarWayBill noCarWayBill, List<BillInvoice> billInvoices) {
@@ -637,12 +696,40 @@ public class NoCarServiceImpl implements NoCarService {
             log.info("取票失败啦:NoCarServiceImpl.getInvoiceByWayBillNumReal{},isCurr{},msg{}", noCarWayBill, isInterface, respR.getMsg());
             return respR;
         }
-        //进行取票操作
-        WaybillNumFindInvoiceRequest waybillNumFindInvoiceRequest = new WaybillNumFindInvoiceRequest();
-        String companyNum = paramService.getParamsByParamName("REQUEST_COMPANY_NUM").getParamValue();
-        waybillNumFindInvoiceRequest.setCompanyNum(companyNum);
-        waybillNumFindInvoiceRequest.setWaybillNum(noCarWayBill.getBillNum());
-        RespR<WaybillNumFindInvoiceResponse> responseRespR = noCarInterface.waybillNumFindInvoice(waybillNumFindInvoiceRequest);
+        RespR<WaybillNumFindInvoiceResponse> responseRespR=null;
+        if(noCarWayBill.getSplitFlag() == NoCarWayBill.SPLIT_FALG_TRUE){
+            int size = DateUtil.getSplitTimeOver96(noCarWayBill.getStartTime(),noCarWayBill.getPredictEndTime()).size();
+            for(int i=0;i<size;i++){
+                String newBillNum = noCarWayBill.getBillNum()+"-jk0"+i;
+                WaybillNumFindInvoiceRequest waybillNumFindInvoiceRequest = new WaybillNumFindInvoiceRequest();
+                String companyNum = paramService.getParamsByParamName("REQUEST_COMPANY_NUM").getParamValue();
+                waybillNumFindInvoiceRequest.setCompanyNum(companyNum);
+                waybillNumFindInvoiceRequest.setWaybillNum(newBillNum);
+                RespR<WaybillNumFindInvoiceResponse> responseRespRrec = noCarInterface.waybillNumFindInvoice(waybillNumFindInvoiceRequest);
+                if (responseRespRrec.getCode() == 1) {
+                    log.info("取票失败啦:NoCarServiceImpl.getInvoiceByWayBillNumReal{},isCurr{},msg{}", noCarWayBill, isInterface, responseRespR.getMsg());
+                    return new RespR(false, responseRespR.getMsg());
+                }
+                if(responseRespR == null){
+                    responseRespR = responseRespRrec;
+                    responseRespR.getData().setWaybillNum(noCarWayBill.getBillNum());
+                }else{
+                    if(responseRespR.getData().getWaybillStatus()<responseRespRrec.getData().getWaybillStatus()){
+                        responseRespR.getData().setWaybillStatus(responseRespRrec.getData().getWaybillStatus());
+                    }
+                    responseRespR.getData().getResult().addAll(responseRespRrec.getData().getResult());
+                }
+            }
+
+        }else{
+            //进行取票操作
+            WaybillNumFindInvoiceRequest waybillNumFindInvoiceRequest = new WaybillNumFindInvoiceRequest();
+            String companyNum = paramService.getParamsByParamName("REQUEST_COMPANY_NUM").getParamValue();
+            waybillNumFindInvoiceRequest.setCompanyNum(companyNum);
+            waybillNumFindInvoiceRequest.setWaybillNum(noCarWayBill.getBillNum());
+            responseRespR = noCarInterface.waybillNumFindInvoice(waybillNumFindInvoiceRequest);
+        }
+
         if (responseRespR.getCode() == 1) {
             log.info("取票失败啦:NoCarServiceImpl.getInvoiceByWayBillNumReal{},isCurr{},msg{}", noCarWayBill, isInterface, responseRespR.getMsg());
             return new RespR(false, responseRespR.getMsg());

+ 2 - 6
src/main/java/com/jkcredit/invoice/service/nocar/impl/NoCarBillWayServiceImpl.java

@@ -302,12 +302,8 @@ public class NoCarBillWayServiceImpl extends ServiceImpl<NoCarWaybillMapper, NoC
             return true;
         }
         if (DateUtil.getDistanceHours(noCarWayBill.getStartTime(), DateUtil.stringToDate(noCarWayBill.getPredictEndTime())) < INTTHREE) {
-            noCarWayBill.setBillwayStatus(-2);
-            noCarWayBill.setFailReason("运单已经超时,请拆分");
-            insertOrUpdateBillStart(noCarWayBill);
-            noCarWaybillMapperImprt.updateBillway(-2, "运单已经超时,请拆分#", noCarWayBill);
-            log.info("运单结束失败:NoCarServiceImpl.noCarWaybillStart{},msg{}", noCarWayBill, "运单已经超时,请拆分");
-            return true;
+            /*历史运单先不校验超时运单*/
+            noCarWayBill.setSplitFlag(NoCarWayBill.SPLIT_FALG_TRUE);
         }
         return false;
     }

+ 37 - 5
src/main/java/com/jkcredit/invoice/util/DateUtil.java

@@ -8,9 +8,7 @@ import org.joda.time.format.DateTimeFormatter;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
+import java.util.*;
 
 /**
  * @description: 日期时间工具类
@@ -337,12 +335,13 @@ public class DateUtil {
 
     public static void main(String[] args) {
 
-        System.out.println(getDistanceHoursFormat("2022-11-31T23:59:59"));
+       /* System.out.println(getDistanceHoursFormat("2022-11-31T23:59:59"));
 
         System.out.println(isValidDate("2022-12-01T23:59:59"));
         System.out.println(isValidDate("2022-11-31T23:59:59"));
-        System.out.println(getMouthDays("2022-5"));
+        System.out.println(getMouthDays("2022-5"));*/
         // System.out.println(DateUtil.getDistanceHoursTwo("2022-02-26 09:02:26","2022-03-01 09:02:58"));
+        System.out.print(getSplitTimeOver96("2023-01-04 12:28:11","2023-01-09 12:28:10"));
     }
     public static String[] getMouthDays(String mounth){
         DateFormat format = new SimpleDateFormat("yyyy-MM");
@@ -365,6 +364,39 @@ public class DateUtil {
         }
         return dates;
     }
+
+    public static List<String> getSplitTimeOver96(String startDate, String endDate){
+        List<String> ls = new ArrayList<>();
+        DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            Date startTime = format.parse(startDate);
+            Date endTime = format.parse(endDate);
+            long dTime=0;
+            for( dTime= startTime.getTime();dTime<endTime.getTime();){
+                String str1 = "";
+                if(dTime != startTime.getTime()){
+                    str1 = format.format(dTime+1000);
+                }else{
+                    str1 = format.format(dTime);
+                }
+                dTime = dTime+(96*60*60)*1000;
+                String str2 = format.format(dTime);
+                if(dTime>endTime.getTime()){
+                    str2 = endDate;
+                }
+
+                ls.add(str1+"#"+str2);
+            }
+           /* if(dTime!=endTime.getTime()){
+                ls.add(format.format(dTime)+"#"+endDate);
+            }*/
+        } catch (ParseException e) {
+            e.printStackTrace();
+        } finally {
+        }
+
+        return ls;
+    }
     /**
      * 判断时间格式化
      *

+ 8 - 6
src/main/resources/mapper/waybill/NoCarWaybillMapper.xml

@@ -26,7 +26,7 @@
         <result column="companyTel" property="companyTel"/>
         <result column="updateTime" property="updateTime"/>
         <result column="days" property="days"/>
-
+        <result column="splitFlag" property="splitFlag"/>
     </resultMap>
 
     <sql id="baseSql">
@@ -50,7 +50,7 @@
         companyAdress,
         companyBank,
         companyBankAcc,
-        companyTel,companyNum,updateTime,failReason,interType
+        companyTel,companyNum,updateTime,failReason,interType,splitFlag
     </sql>
     <select id="selectAllByPage" resultMap="BaseResultMap">
         select
@@ -149,7 +149,7 @@
             companyAdress,
             companyBank,
             companyBankAcc,
-            companyTel,companyNum,updateTime,batchNumber,batchNumEnd,failReason,interType
+            companyTel,companyNum,updateTime,batchNumber,batchNumEnd,failReason,interType,splitFlag
         )
         values ( #{customerName,jdbcType=VARCHAR}, #{companyName,jdbcType=VARCHAR},
         #{billNum,jdbcType=VARCHAR}, #{plateNum,jdbcType=VARCHAR}, #{plateColor,jdbcType=VARCHAR},
@@ -158,7 +158,7 @@
         #{taxplayerCode,jdbcType=VARCHAR},#{intfaceStartTime,jdbcType=VARCHAR},#{interfaceEndTime,jdbcType=VARCHAR},
         #{billwayStatus,jdbcType=INTEGER},#{hisFlag,jdbcType=INTEGER}, #{companyAdress,jdbcType=VARCHAR}, #{companyBank,jdbcType=VARCHAR}
         , #{companyBankAcc,jdbcType=VARCHAR}, #{companyTel,jdbcType=VARCHAR},#{companyNum,jdbcType=VARCHAR},#{updateTime,jdbcType=VARCHAR},#{batchNum,jdbcType=VARCHAR}
-        ,#{batchNumEnd,jdbcType=VARCHAR},#{failReason,jdbcType=VARCHAR},#{interType,jdbcType=INTEGER}
+        ,#{batchNumEnd,jdbcType=VARCHAR},#{failReason,jdbcType=VARCHAR},#{interType,jdbcType=INTEGER},#{splitFlag,jdbcType=INTEGER}
         )
     </insert>
     <update id="updateByPrimaryKey" parameterType="com.jkcredit.invoice.model.entity.waybill.NoCarWayBill" >
@@ -183,7 +183,8 @@
         companyBank = #{companyBank,jdbcType=VARCHAR},
         companyBankAcc = #{companyBankAcc,jdbcType=VARCHAR},
         companyTel = #{companyTel,jdbcType=VARCHAR},
-        companyNum = #{companyNum,jdbcType=VARCHAR}
+        companyNum = #{companyNum,jdbcType=VARCHAR},
+        splitFlag = #{splitFlag,jdbcType=INTEGER}
         where id = #{id,jdbcType=INTEGER}
     </update>
 
@@ -213,7 +214,8 @@
         failReason = #{failReason,jdbcType=VARCHAR},
         interType = #{interType,jdbcType=INTEGER},
         destAddrPre = #{destAddrPre,jdbcType=VARCHAR},
-        preEndTime = #{preEndTime,jdbcType=VARCHAR}
+        preEndTime = #{preEndTime,jdbcType=VARCHAR},
+        splitFlag = #{splitFlag,jdbcType=INTEGER}
         where  billNum = BINARY #{billNum,jdbcType=VARCHAR}
     </update>
     <update id="updateByBillNumTimeRes" parameterType="com.jkcredit.invoice.model.entity.waybill.NoCarWayBill" >