Browse Source

新增订单补扣款、订单推结关

linbl 11 months ago
parent
commit
28cf88fb0a

+ 1 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrder.java

@@ -43,6 +43,7 @@ public class TbOrder extends Model<TbOrder> implements Serializable {
     public static final String PERMISSION_CODE_EDIT_PRICE = "tb-order-edit-price";
 	public static final String PERMISSION_CODE_DEDUCTION = "tb-order-deduction";
 	public static final String PERMISSION_CODE_SEND009 = "tb-order-send009";
+	public static final String PERMISSION_CODE_SENDCXB001 = "tb-order-sendCXB001";
 
     // ---------- 表中字段 ----------
     /**

+ 36 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderController.java

@@ -115,6 +115,20 @@ public class TbOrderController {
 		tbOrderService.deduction(id);
 		return AjaxJson.getSuccess();
 	}
+	/** 订单补扣款——按车,并且未扣款 */
+	@RequestMapping("deductionByVeNo")
+	@SaCheckPermission(TbOrder.PERMISSION_CODE_DEDUCTION)
+	public AjaxJson deductionByVeNo(String veNo){
+		tbOrderService.deductionByVeNo(veNo);
+		return AjaxJson.getSuccess();
+	}
+	@RequestMapping("getDeductionByVeNoList")
+	@SaCheckPermission(TbOrder.PERMISSION_CODE)
+	public AjaxJson getDeductionByVeNoList() {
+		SoMap so = SoMap.getRequestSoMap();
+		List<TbOrder> list = tbOrderService.getDeductionByVeNoList(so.startPage());
+		return AjaxJson.getPageData(so.getDataCount(), list);
+	}
 
 	/** 订单补发送009信息到航通 */
 	@RequestMapping("send009ToHt")
@@ -128,6 +142,28 @@ public class TbOrderController {
 		return AjaxJson.getSuccess();
 	}
 
+	/** 订单补推结关信息给银行 */
+	@RequestMapping("sendCXB001")
+	@SaCheckPermission(TbOrder.PERMISSION_CODE_SENDCXB001)
+	public AjaxJson sendCXB001(Long id){
+		tbOrderService.sendCXB001(id);
+		return AjaxJson.getSuccess();
+	}
+	/** 订单补推结关信息给银行——按车,并且未完成 */
+	@RequestMapping("sendCXB001ByVeNo")
+	@SaCheckPermission(TbOrder.PERMISSION_CODE_SENDCXB001)
+	public AjaxJson sendCXB001ByVeNo(String veNo){
+		tbOrderService.sendCXB001ByVeNo(veNo);
+		return AjaxJson.getSuccess();
+	}
+	@RequestMapping("getSendCXB001ByVeNoList")
+	@SaCheckPermission(TbOrder.PERMISSION_CODE)
+	public AjaxJson getSendCXB001ByVeNoList() {
+		SoMap so = SoMap.getRequestSoMap();
+		List<TbOrder> list = tbOrderService.getSendCXB001ByVeNoList(so.startPage());
+		return AjaxJson.getPageData(so.getDataCount(), list);
+	}
+
 	/*-----           正常业务逻辑👆👆    rpc远程调用👇👇 -----*/
 
 

+ 111 - 7
sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderService.java

@@ -704,12 +704,12 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
     }
 
     /**
-     * 订单补扣款
+     * 订单补扣款——单个订单
      */
     public boolean deduction(Long id) {
         TbOrder tbOrder = getById(id);
         if (tbOrder == null) {
-            log.error("补扣款失败:{}不存在", id);
+            StaticLog.error("\n---------补扣款失败:{}不存在", id);
             return false;
         }
 
@@ -722,6 +722,34 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
 
         return super.updateById(tbOrder);
     }
+    /**
+     * 订单补扣款——按车,并且未扣款
+     */
+    public boolean deductionByVeNo(String veNo) {
+        LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TbOrder::getVeNo, veNo);
+        wrapper.ne(TbOrder::getSxb010Status, 1);
+        List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
+        if (!tbOrders.isEmpty()) {
+            for (TbOrder tbOrder : tbOrders) {
+                PaymentDto paymentDto = this.getPaymentData(tbOrder);
+                StaticLog.info("\n---订单补扣款——按车---sendSXB010——PaymentDto——:{}", JSONUtil.toJsonStr(paymentDto));
+                paymentServerInterface.sendSXB010(paymentDto);
+
+                tbOrder.setDeductionCount(tbOrder.getDeductionCount() + 1);
+                tbOrder.setDeductionTime(new Date());
+            }
+        }
+
+        return super.updateBatchById(tbOrders);
+    }
+    List<TbOrder> getDeductionByVeNoList(SoMap so) {
+        LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TbOrder::getVeNo, so.getString("veNo"));
+        wrapper.ne(TbOrder::getSxb010Status, 1);
+        List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
+        return tbOrders;
+    }
 
     /*-----           正常业务逻辑👆👆    rpc远程调用👇👇 -----*/
 
@@ -795,6 +823,85 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
         return updateById(tbOrder);
     }
 
+    /**
+     * 订单补推结关信息给银行
+     */
+    public boolean sendCXB001(Long id) {
+        TbOrder tbOrder = getById(id);
+        if (tbOrder == null) {
+            StaticLog.error("\n----------订单补推结关信息失败:{}不存在", id);
+            return false;
+        }
+
+        HtTradeSettlement htTradeSettlement = htTradeSettlementService.getById(tbOrder.getSaleMainId());
+
+        //todo: 收到航通007报文即收到海关结关信息,转发结关信息给到银行
+        PaymentDto paymentDto = new PaymentDto();
+        paymentDto.setTradeNo(tbOrder.getTradeNo());
+        paymentDto.setDeclTime(htTradeSettlement.getDeclTime());
+        StaticLog.info("\nsendCXB001——PaymentDto——:{}", JSONUtil.toJsonStr(paymentDto));
+        paymentServerInterface.sendCXB001(paymentDto);
+
+        //todo: 收到航通007报文即收到海关结关信息,转发通车批信息给到银行
+        PaymentDto paymentDto2 = new PaymentDto();
+        paymentDto2.setTradeNos(tbOrder.getTradeNo());
+        paymentDto2.setVoyageNo(htTradeSettlement.getVoyageNo());
+        paymentDto2.setVeNo(tbOrder.getVeNo());
+        StaticLog.info("\nsendSXB023——PaymentDto——:{}", JSONUtil.toJsonStr(paymentDto2));
+        paymentServerInterface.sendSXB023(paymentDto2);
+
+
+        tbOrder.setFinishTime(new Date());
+        tbOrder.setFinishStatus(FinishStatus.FINISH_STATUS_ONE.getCode());
+
+        return updateById(tbOrder);
+    }
+    /**
+     * 订单补推结关信息给银行——按车,并且未完成
+     */
+    public boolean sendCXB001ByVeNo(String veNo) {
+        LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TbOrder::getVeNo, veNo);
+        wrapper.ne(TbOrder::getFinishStatus, 1).orderByDesc(TbOrder::getCreateTime);
+        List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
+
+        if (!tbOrders.isEmpty()) {
+            HtTradeSettlement htTradeSettlement = htTradeSettlementService.getById(tbOrders.get(0).getSaleMainId());
+            String tradeNos = "";
+            PaymentDto paymentDto = new PaymentDto();
+            for (TbOrder tbOrder : tbOrders) {
+                tradeNos += tbOrder.getTradeNo() + ",";
+                //收到007结关信息后边民即可上架订单,不需等收到打款给外籍商户的成功回执SXB017才能完成订单
+                tbOrder.setFinishTime(new Date());
+                tbOrder.setFinishStatus(FinishStatus.FINISH_STATUS_ONE.getCode());
+
+                //todo: 收到航通007报文即收到海关结关信息,转发结关信息给到银行
+                paymentDto.setTradeNo(tbOrder.getTradeNo());
+                paymentDto.setDeclTime(htTradeSettlement.getDeclTime());
+                StaticLog.info("\nsendCXB001——PaymentDto——:{}", JSONUtil.toJsonStr(paymentDto));
+                paymentServerInterface.sendCXB001(paymentDto);
+            }
+            this.updateBatchById(tbOrders);
+
+            tradeNos = StringUtils.removeEnd(tradeNos, ",");
+            //todo: 收到航通007报文即收到海关结关信息,转发通车批信息给到银行
+            PaymentDto paymentDto2 = new PaymentDto();
+            paymentDto2.setTradeNos(tradeNos);
+            paymentDto2.setVoyageNo(htTradeSettlement.getVoyageNo());
+            paymentDto2.setVeNo(veNo);
+            StaticLog.info("\nsendSXB023——PaymentDto——:{}", JSONUtil.toJsonStr(paymentDto2));
+            paymentServerInterface.sendSXB023(paymentDto2);
+        }
+        return true;
+    }
+    List<TbOrder> getSendCXB001ByVeNoList(SoMap so) {
+        LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TbOrder::getVeNo, so.getString("veNo"));
+        wrapper.ne(TbOrder::getFinishStatus, 1).orderByDesc(TbOrder::getCreateTime);
+        List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
+        return tbOrders;
+    }
+
     // TODO: 2023/8/28 系统接收到航通007接口信息:车辆已出一级市场(系统接收到这个信息时,证明已经查验通过,不会有进出口申报单退单)
     public boolean orderFinish(HtPassCardDTO htPassCardDTO) {
         String billCodeStr = htPassCardDTO.getBillCode();
@@ -806,10 +913,9 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
         //获取出了一级市场的所有边民订单
         LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
         wrapper.in(TbOrder::getPreIeportNo, billCodeList);
-        wrapper.ne(TbOrder::getFinishStatus, 1);
+        wrapper.ne(TbOrder::getFinishStatus, 1).orderByDesc(TbOrder::getCreateTime);
         List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
         if (!tbOrders.isEmpty()) {
-            TbTradeArea area = tbTradeAreaService.getById(tbOrders.get(0).getTradeAreaId());
             String tradeNos = "";
             PaymentDto paymentDto = new PaymentDto();
             for (TbOrder tbOrder : tbOrders) {
@@ -821,19 +927,17 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
                 //todo: 收到航通007报文即收到海关结关信息,转发结关信息给到银行
                 paymentDto.setTradeNo(tbOrder.getTradeNo());
                 paymentDto.setDeclTime(htPassCardDTO.getCheckTime());
-                paymentDto.setFieldCode(area.getCode());
                 StaticLog.info("\nsendCXB001——PaymentDto——:{}", JSONUtil.toJsonStr(paymentDto));
                 paymentServerInterface.sendCXB001(paymentDto);
             }
             this.updateBatchById(tbOrders);
 
             tradeNos = StringUtils.removeEnd(tradeNos, ",");
-            //todo: 调用银行接口发起划扣:将边民划扣至银行第三方账户的货款,支付至外籍商户的账户
+            //todo: 收到航通007报文即收到海关结关信息,转发通车批信息给到银行
             PaymentDto paymentDto2 = new PaymentDto();
             paymentDto2.setTradeNos(tradeNos);
             paymentDto2.setVoyageNo(htPassCardDTO.getManifestId());
             paymentDto2.setVeNo(tbOrders.get(0).getVeNo());
-            paymentDto2.setFieldCode(area.getCode());
             StaticLog.info("\nsendSXB023——PaymentDto——:{}", JSONUtil.toJsonStr(paymentDto2));
             paymentServerInterface.sendSXB023(paymentDto2);
         }