xucaiqin 2 лет назад
Родитель
Сommit
dbee255d9b
29 измененных файлов с 1320 добавлено и 236 удалено
  1. 12 12
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerLogisticsController.java
  2. 144 2
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerTradeController.java
  3. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpLedgerLogisticsMapper.java
  4. 8 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpLedgerTradeMapper.java
  5. 5 41
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpLedgerLogistics.java
  6. 11 29
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpLedgerTrade.java
  7. 5 2
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/LedgerEnum.java
  8. 41 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/LedgerTrackEnum.java
  9. 39 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/SettlementEnum.java
  10. 36 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/SettlementTrackEnum.java
  11. 16 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/TradeUnitType.java
  12. 148 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerTradeDto.java
  13. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerConfirmReq.java
  14. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerReq.java
  15. 2 2
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LogisticsReq.java
  16. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LogisticsSendReq.java
  17. 29 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/TradeReq.java
  18. 81 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/TradeSendReq.java
  19. 166 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerTradeVo.java
  20. 41 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/AbsLedger.java
  21. 27 47
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java
  22. 45 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsTrackService.java
  23. 18 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeOrderService.java
  24. 262 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java
  25. 54 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeTrackService.java
  26. 11 2
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementLogisticsService.java
  27. 9 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementTradeService.java
  28. 53 85
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerLogisticsMapper.xml
  29. 53 7
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerTradeMapper.xml

+ 12 - 12
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerLogisticsController.java

@@ -23,7 +23,7 @@ import java.util.stream.Collectors;
  * @author xucaiqin
  */
 @RestController
-@RequestMapping("/kwpLedger")
+@RequestMapping("/kwpLedgerLogistics")
 public class KwpLedgerLogisticsController {
     @Resource
     private KwpLedgerLogisticsService kwpLedgerLogisticsService;
@@ -34,7 +34,7 @@ public class KwpLedgerLogisticsController {
      * @param logisticsReq
      * @return
      */
-    @PostMapping("logistics/sendDraft")
+    @PostMapping("sendDraft")
     public HttpResult sendDraft(@RequestBody @Valid LogisticsSendReq logisticsReq) {
         return HttpResult.ok(kwpLedgerLogisticsService.sendLedgerDraft(logisticsReq));
     }
@@ -45,7 +45,7 @@ public class KwpLedgerLogisticsController {
      * @param logisticsReq
      * @return
      */
-    @PostMapping("logistics/send")
+    @PostMapping("send")
     public HttpResult send(@RequestBody @Valid LogisticsSendReq logisticsReq) {
         return HttpResult.ok(kwpLedgerLogisticsService.sendLedger(logisticsReq));
     }
@@ -56,7 +56,7 @@ public class KwpLedgerLogisticsController {
      * @param logisticsReq
      * @return
      */
-    @PostMapping("logistics/pageList")
+    @PostMapping("pageList")
     public HttpResult pageList(@RequestBody @Valid LogisticsReq logisticsReq) {
         return HttpResult.ok(kwpLedgerLogisticsService.pageList(logisticsReq));
     }
@@ -67,7 +67,7 @@ public class KwpLedgerLogisticsController {
      * @param id
      * @return
      */
-    @DeleteMapping("logistics/delete")
+    @DeleteMapping("delete")
     public HttpResult delete(@RequestParam("id") Long id) {
         return HttpResult.ok(kwpLedgerLogisticsService.remove(id));
     }
@@ -78,7 +78,7 @@ public class KwpLedgerLogisticsController {
      * @param id
      * @return
      */
-    @PostMapping("logistics/back")
+    @PostMapping("back")
     public HttpResult back(@RequestParam("id") Long id) {
         return HttpResult.ok(kwpLedgerLogisticsService.backOrder(id));
     }
@@ -89,8 +89,8 @@ public class KwpLedgerLogisticsController {
      * @param confirmReq
      * @return
      */
-    @PostMapping("logistics/confirm")
-    public HttpResult confirm(@RequestBody @Valid LogisticsConfirmReq confirmReq) {
+    @PostMapping("confirm")
+    public HttpResult confirm(@RequestBody @Valid LedgerConfirmReq confirmReq) {
         return HttpResult.ok(kwpLedgerLogisticsService.confirmOrder(confirmReq));
     }
 
@@ -100,7 +100,7 @@ public class KwpLedgerLogisticsController {
      * @param id
      * @return
      */
-    @GetMapping("logistics/queryBack")
+    @GetMapping("queryBack")
     public HttpResult queryBack(@RequestParam("id") Long id) {
         return HttpResult.ok(kwpLedgerLogisticsService.queryBack(id));
     }
@@ -111,7 +111,7 @@ public class KwpLedgerLogisticsController {
      * @param ledgerReq
      * @return
      */
-    @PostMapping("logistics/doBack")
+    @PostMapping("doBack")
     public HttpResult doBack(@RequestBody @Valid LedgerReq ledgerReq) {
         return HttpResult.ok(kwpLedgerLogisticsService.doBack(ledgerReq));
     }
@@ -125,7 +125,7 @@ public class KwpLedgerLogisticsController {
      * @param ledgerReq
      * @return
      */
-    @PostMapping("logistics/success")
+    @PostMapping("success")
     public HttpResult orderSuccess(@RequestBody @Valid LedgerSuccessReq ledgerReq) {
         return HttpResult.ok(kwpLedgerLogisticsService.orderSuccess(ledgerReq));
     }
@@ -137,7 +137,7 @@ public class KwpLedgerLogisticsController {
      * @param logisticsReq
      * @return
      */
-    @PostMapping("logistics/export")
+    @PostMapping("export")
     public HttpResult export(HttpServletResponse response, @RequestBody LogisticsReq logisticsReq) {
         PageRes<LedgerLogisticsDto> pageResult = kwpLedgerLogisticsService.pageList(logisticsReq);
         List<LedgerLogisticsDto> list = pageResult.getList();

+ 144 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerTradeController.java

@@ -1,5 +1,20 @@
 package com.sckw.payment.controller;
+
+import com.sckw.core.model.page.PageRes;
+import com.sckw.core.web.response.HttpResult;
+import com.sckw.excel.utils.ExcelUtil;
+import com.sckw.payment.model.dto.LedgerTradeDto;
+import com.sckw.payment.model.vo.req.*;
+import com.sckw.payment.model.vo.res.LedgerLogisticsVo;
+import com.sckw.payment.service.KwpLedgerTradeService;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.beans.BeanUtils;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
 * 对账-交易订单
@@ -7,7 +22,134 @@ import org.springframework.web.bind.annotation.*;
 * @author xucaiqin
 */
 @RestController
-@RequestMapping("/kwp_ledger_trade")
+@RequestMapping("/kwpLedgerTrade")
 public class KwpLedgerTradeController {
-    
+    @Resource
+    private KwpLedgerTradeService kwpLedgerTradeService;
+
+    /**
+     * 贸易对账单-发起对账(保存草稿)
+     *
+     * @param tradeSendReq
+     * @return
+     */
+    @PostMapping("sendDraft")
+    public HttpResult sendDraft(@RequestBody @Valid TradeSendReq tradeSendReq) {
+        return HttpResult.ok(kwpLedgerTradeService.sendLedgerDraft(tradeSendReq));
+    }
+
+    /**
+     * 贸易对账单-发起对账
+     *
+     * @param tradeSendReq
+     * @return
+     */
+    @PostMapping("send")
+    public HttpResult send(@RequestBody @Valid TradeSendReq tradeSendReq) {
+        return HttpResult.ok(kwpLedgerTradeService.sendLedger(tradeSendReq));
+    }
+
+    /**
+     * 贸易对账单列表查询
+     *
+     * @param tradeReq
+     * @return
+     */
+    @PostMapping("pageList")
+    public HttpResult pageList(@RequestBody @Valid TradeReq tradeReq) {
+        return HttpResult.ok(kwpLedgerTradeService.pageList(tradeReq));
+    }
+
+    /**
+     * 删除对账单
+     *
+     * @param id
+     * @return
+     */
+    @DeleteMapping("delete")
+    public HttpResult delete(@RequestParam("id") Long id) {
+        return HttpResult.ok(kwpLedgerTradeService.remove(id));
+    }
+
+    /**
+     * 贸易对账单-撤回对账
+     *
+     * @param id
+     * @return
+     */
+    @PostMapping("back")
+    public HttpResult back(@RequestParam("id") Long id) {
+        return HttpResult.ok(kwpLedgerTradeService.backOrder(id));
+    }
+
+    /**
+     * 贸易对账单-对账确认
+     *
+     * @param confirmReq
+     * @return
+     */
+    @PostMapping("confirm")
+    public HttpResult confirm(@RequestBody @Valid LedgerConfirmReq confirmReq) {
+        return HttpResult.ok(kwpLedgerTradeService.confirmOrder(confirmReq));
+    }
+
+    /**
+     * 贸易对账单-驳回查询
+     *
+     * @param id
+     * @return
+     */
+    @GetMapping("queryBack")
+    public HttpResult queryBack(@RequestParam("id") Long id) {
+        return HttpResult.ok(kwpLedgerTradeService.queryBack(id));
+    }
+
+    /**
+     * 贸易对账单-驳回
+     *
+     * @param ledgerReq
+     * @return
+     */
+    @PostMapping("doBack")
+    public HttpResult doBack(@RequestBody @Valid LedgerReq ledgerReq) {
+        return HttpResult.ok(kwpLedgerTradeService.doBack(ledgerReq));
+    }
+
+    /**
+     * 贸易对账单-对账完成
+     * <p>
+     * 生成结算单
+     * </p>
+     *
+     * @param ledgerReq
+     * @return
+     */
+    @PostMapping("success")
+    public HttpResult orderSuccess(@RequestBody @Valid LedgerSuccessReq ledgerReq) {
+        return HttpResult.ok(kwpLedgerTradeService.orderSuccess(ledgerReq));
+    }
+
+    /**
+     * 导出
+     *
+     * @param response
+     * @param tradeReq
+     * @return
+     */
+    @PostMapping("export")
+    public HttpResult export(HttpServletResponse response, @RequestBody TradeReq tradeReq) {
+        PageRes<LedgerTradeDto> pageResult = kwpLedgerTradeService.pageList(tradeReq);
+        List<LedgerTradeDto> list = pageResult.getList();
+        if (CollectionUtils.isEmpty(list)) {
+            return HttpResult.error("没有可导出的数据");
+        }
+        List<LedgerLogisticsVo> collect = list.stream().map(a -> {
+            LedgerLogisticsVo ledgerLogisticsVo = new LedgerLogisticsVo();
+            BeanUtils.copyProperties(a, ledgerLogisticsVo);
+            return ledgerLogisticsVo;
+        }).collect(Collectors.toList());
+
+        ExcelUtil.download(response, LedgerLogisticsVo.class, collect);
+        return null;
+    }
 }

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpLedgerLogisticsMapper.java

@@ -11,7 +11,7 @@ import java.util.List;
 
 /**
  * @author xucaiqin
- * @date 2023-07-11 15:17:12
+ * @date 2023-07-14 09:08:11
  */
 
 @Mapper

+ 8 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpLedgerTradeMapper.java

@@ -2,13 +2,20 @@ package com.sckw.payment.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.payment.model.KwpLedgerTrade;
+import com.sckw.payment.model.dto.LedgerTradeDto;
+import com.sckw.payment.model.vo.req.TradeReq;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author xucaiqin
- * @date 2023-07-10 16:42:20
+ * @date 2023-07-14 10:12:40
  */
 
 @Mapper
 public interface KwpLedgerTradeMapper extends BaseMapper<KwpLedgerTrade> {
+    List<LedgerTradeDto> pageSelect(@Param("tradeReq") TradeReq tradeReq, ArrayList<Object> objects);
 }

+ 5 - 41
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpLedgerLogistics.java

@@ -14,7 +14,7 @@ import java.time.LocalDateTime;
 /**
  * 对账-物流订单
  * @author xucaiqin
- * @date 2023-07-11 15:17:12
+ * @date 2023-07-14 09:08:11
  */
 @Getter
 @Setter
@@ -33,18 +33,6 @@ public class KwpLedgerLogistics {
     @TableField(value = "ent_id")
     private Long entId;
 
-    /**
-     * 托运单位
-     */
-    @TableField(value = "check_ent_id")
-    private Long checkEntId;
-
-    /**
-     * 承运单位
-     */
-    @TableField(value = "carrier_ent_id")
-    private Long carrierEntId;
-
     /**
      * 物流对账单编号
      */
@@ -73,7 +61,7 @@ public class KwpLedgerLogistics {
      * 发票税率(%)
      */
     @TableField(value = "tax_rate")
-    private String taxRate;
+    private Integer taxRate;
 
     /**
      * 交易方式(预付款、货到付款)
@@ -124,37 +112,13 @@ public class KwpLedgerLogistics {
     private BigDecimal actualPrice;
 
     /**
-     * 托运方联系人
-     */
-    @TableField(value = "check_user")
-    private String checkUser;
-
-    /**
-     * 托运方电话
-     */
-    @TableField(value = "check_phone")
-    private String checkPhone;
-
-    /**
-     * 承运方联系人
-     */
-    @TableField(value = "carrier_user")
-    private String carrierUser;
-
-    /**
-     * 承运方电话
-     */
-    @TableField(value = "carrier_phone")
-    private String carrierPhone;
-
-    /**
-     * 审核人联系方式(采购方)
+     * 审核人联系方式(托运方)
      */
     @TableField(value = "audit_user")
     private String auditUser;
 
     /**
-     * 审核人电话(采购方)
+     * 审核人电话(托运方)
      */
     @TableField(value = "audit_phone")
     private String auditPhone;
@@ -178,7 +142,7 @@ public class KwpLedgerLogistics {
     private String remark;
 
     /**
-     * 状态(待对账、对账中、已对账、已完成、已取消、已退回)
+     * 状态(1-已保存、2-待对账、3-已对账、4-已完成、5-已退回)
      */
     @TableField(value = "`status`")
     private Integer status;

+ 11 - 29
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpLedgerTrade.java

@@ -14,7 +14,7 @@ import java.time.LocalDateTime;
 /**
  * 对账-交易订单
  * @author xucaiqin
- * @date 2023-07-11 10:10:47
+ * @date 2023-07-14 10:12:40
  */
 @Getter
 @Setter
@@ -33,18 +33,6 @@ public class KwpLedgerTrade {
     @TableField(value = "ent_id")
     private Long entId;
 
-    /**
-     * 采购单位
-     */
-    @TableField(value = "procure_ent_id")
-    private Long procureEntId;
-
-    /**
-     * 供应单位
-     */
-    @TableField(value = "supply_ent_id")
-    private Long supplyEntId;
-
     /**
      * 交易对账单编号
      */
@@ -73,7 +61,7 @@ public class KwpLedgerTrade {
      * 发票税率(%)
      */
     @TableField(value = "tax_rate")
-    private BigDecimal taxRate;
+    private Integer taxRate;
 
     /**
      * 交易方式(预付款、货到付款)
@@ -100,28 +88,22 @@ public class KwpLedgerTrade {
     private BigDecimal actualPrice;
 
     /**
-     * 采购方联系人
-     */
-    @TableField(value = "procure_user")
-    private String procureUser;
-
-    /**
-     * 采购方联系电话
+     * 审核人联系方式(采购方)
      */
-    @TableField(value = "procure_phone")
-    private String procurePhone;
+    @TableField(value = "audit_user")
+    private String auditUser;
 
     /**
-     * 供应方联系人
+     * 审核人电话(采购方)
      */
-    @TableField(value = "supply_user")
-    private String supplyUser;
+    @TableField(value = "audit_phone")
+    private String auditPhone;
 
     /**
-     * 供应方联系电话
+     * 生成时间
      */
-    @TableField(value = "supply_phone")
-    private String supplyPhone;
+    @TableField(value = "generate_time")
+    private LocalDateTime generateTime;
 
     /**
      * 对账清单凭证

+ 5 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/LedgerLicEnum.java → sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/LedgerEnum.java

@@ -1,10 +1,13 @@
 package com.sckw.payment.model.constant;
 
 /**
+ * 物流、贸易
+ * 对账单状态枚举
+ *
  * @author xucaiqin
  * @date 2023-07-11 12:00:52
  */
-public enum LedgerLicEnum {
+public enum LedgerEnum {
     SAVE(1, "已保存"),
     TO_LEDGER(2, "待对账"),
     LEDGERED(3, "已对账"),
@@ -13,7 +16,7 @@ public enum LedgerLicEnum {
     private int status;
     private String desc;
 
-    LedgerLicEnum(int status, String desc) {
+    LedgerEnum(int status, String desc) {
         this.status = status;
         this.desc = desc;
     }

+ 41 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/LedgerTrackEnum.java

@@ -0,0 +1,41 @@
+package com.sckw.payment.model.constant;
+
+/**
+ * 物流对账、贸易对账
+ * 对账记录track枚举
+ *
+ * @author xucaiqin
+ * @date 2023-07-11 12:00:52
+ */
+public enum LedgerTrackEnum {
+    SAVE(1, "保存对帐"),
+    TO_LEDGER(2, "发起对账"),
+    REVOKE(3, "撤回对账"),
+    DELETE(4, "删除对账"),
+    CONFIRM(5, "对账确认"),
+    REJECT(6, "对账驳回"),
+    SUCCESS(7, "对账完成");
+    private int status;
+    private String desc;
+
+    LedgerTrackEnum(int status, String desc) {
+        this.status = status;
+        this.desc = desc;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+}

+ 39 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/SettlementEnum.java

@@ -0,0 +1,39 @@
+package com.sckw.payment.model.constant;
+
+/**
+ * 物流、贸易
+ * 结算单状态枚举
+ *
+ * @author xucaiqin
+ * @date 2023-07-11 12:00:52
+ */
+public enum SettlementEnum {
+    SAVE(1, "已保存"),
+    TO_LEDGER(2, "待对账"),
+    LEDGERED(3, "已对账"),
+    SUCCESS(4, "已完成"),
+    BACK(5, "已退回");
+    private int status;
+    private String desc;
+
+    SettlementEnum(int status, String desc) {
+        this.status = status;
+        this.desc = desc;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+}

+ 36 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/SettlementTrackEnum.java

@@ -0,0 +1,36 @@
+package com.sckw.payment.model.constant;
+
+/**
+ * 结算track表状态枚举
+ *
+ * @author xucaiqin
+ * @date 2023-07-13 16:12:41
+ */
+public enum SettlementTrackEnum {
+
+    SUCCESS(7,"对账完成");
+
+    private int status;
+    private String desc;
+
+    SettlementTrackEnum(int status, String desc) {
+        this.status = status;
+        this.desc = desc;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+}

+ 16 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/TradeUnitType.java

@@ -0,0 +1,16 @@
+package com.sckw.payment.model.constant;
+
+/**
+ * @author xucaiqin
+ * @date 2023-07-14 09:26:16
+ */
+public interface TradeUnitType {
+    /**
+     * 销售方
+     */
+    Integer SELL = 2;
+    /**
+     * 采购方
+     */
+    Integer PURCHASE = 1;
+}

+ 148 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerTradeDto.java

@@ -0,0 +1,148 @@
+package com.sckw.payment.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 对账-贸易订单
+ *
+ * @author xucaiqin
+ * @date 2023-07-10 18:11:24
+ */
+@Getter
+@Setter
+public class LedgerTradeDto {
+    /**
+     * 主键
+     */
+    private Long id;
+    /**
+     * 物流对账单编号
+     */
+    private String lLedgerNo;
+
+    /**
+     * 对账单名称
+     */
+    private String name;
+
+    /**
+     * 企业id
+     */
+    private Long entId;
+
+    /**
+     * 托运单位
+     */
+    private Long checkEntId;
+
+    /**
+     * 承运单位
+     */
+    private Long carrierEntId;
+
+
+    /**
+     * 开始日期
+     */
+    private LocalDateTime startTime;
+
+    /**
+     * 结束日期
+     */
+    private LocalDateTime endTime;
+
+    /**
+     * 对账金额
+     */
+    private BigDecimal price;
+
+    /**
+     * 发票税率(%)
+     */
+    private BigDecimal taxRate;
+
+    /**
+     * 交易方式(预付款、货到付款)
+     */
+    private String trading;
+
+    /**
+     * 卸货量
+     */
+    private BigDecimal unloadAmount;
+
+    /**
+     * 装货量
+     */
+    private BigDecimal loadAmount;
+
+    /**
+     * 亏损量
+     */
+    private BigDecimal deficitAmount;
+
+    /**
+     * 合理损耗量
+     */
+    private BigDecimal loseAmount;
+
+    /**
+     * 总应收/元
+     */
+    private BigDecimal totalPrice;
+
+    /**
+     * 实际结算金额
+     */
+    private BigDecimal settlePrice;
+
+    /**
+     * 已收款/元
+     */
+    private BigDecimal actualPrice;
+
+    /**
+     * 对账审核人电话
+     */
+    private String auditPhone;
+
+    /**
+     * 对账审核人名称
+     */
+    private String auditUser;
+
+    /**
+     * 对账清单凭证
+     */
+    private String url;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 状态(待对账、对账中、已对账、已完成、已取消、已退回)
+     */
+    private Integer status;
+
+    private Long createBy;
+
+    private LocalDateTime createTime;
+
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 订单数量
+     */
+    private Long orderCount;
+}

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LogisticsConfirmReq.java → sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerConfirmReq.java

@@ -13,7 +13,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-public class LogisticsConfirmReq {
+public class LedgerConfirmReq {
     @NotNull(message = "id不能为空")
     private Long id;
     /**

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerReq.java

@@ -13,7 +13,7 @@ import lombok.Setter;
 @Getter
 @Setter
 public class LedgerReq {
-    @NotNull(message = "物流对账单id不能为空")
+    @NotNull(message = "对账单id不能为空")
     private Long id;
     @NotBlank(message = "驳回原因不能为空")
     @Size(max = 400, message = "最大不能超过400字符")

+ 2 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LogisticsReq.java

@@ -1,7 +1,7 @@
 package com.sckw.payment.model.vo.req;
 
 import com.sckw.core.model.vo.BasePara;
-import com.sckw.payment.model.constant.LedgerLicEnum;
+import com.sckw.payment.model.constant.LedgerEnum;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -22,7 +22,7 @@ public class LogisticsReq extends BasePara {
     private LocalDateTime endCreateTime;
     private Integer trading;
     /**
-     * @see LedgerLicEnum
+     * @see LedgerEnum
      */
     private Integer status;
     private List<Long> ids;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LogisticsSendReq.java

@@ -61,7 +61,7 @@ public class LogisticsSendReq {
      * 发票税率(%)
      */
     @NotBlank(message = "发票税率(%)不能为空")
-    private String taxRate;
+    private Integer taxRate;
     /**
      * 交易方式
      */

+ 29 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/TradeReq.java

@@ -0,0 +1,29 @@
+package com.sckw.payment.model.vo.req;
+
+import com.sckw.core.model.vo.BasePara;
+import com.sckw.payment.model.constant.LedgerEnum;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serial;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @author xucaiqin
+ * @date 2023-07-10 17:05:28
+ */
+@Getter
+@Setter
+public class TradeReq extends BasePara {
+    @Serial
+    private static final long serialVersionUID = 5328731681168692784L;
+    private LocalDateTime startCreateTime;
+    private LocalDateTime endCreateTime;
+    private Integer trading;
+    /**
+     * @see LedgerEnum
+     */
+    private Integer status;
+    private List<Long> ids;
+}

+ 81 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/TradeSendReq.java

@@ -0,0 +1,81 @@
+package com.sckw.payment.model.vo.req;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import jakarta.validation.constraints.*;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 贸易对账单
+ *
+ * @author xucaiqin
+ * @date 2023-07-10 17:05:28
+ */
+@Getter
+@Setter
+public class TradeSendReq {
+
+    private Long id;
+    /**
+     * 采购单位(客户单位)
+     */
+    @NotNull(message = "客户单位不能为空")
+    private Long purchaseEntId;
+    /**
+     * 名称
+     */
+    @NotBlank(message = "对账表名称不能为空")
+    private String name;
+    /**
+     * 开始日期
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @NotNull(message = "计划开始日期不能为空")
+    private LocalDateTime startTime;
+    /**
+     * 结束日期
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @NotNull(message = "计划结束日期不能为空")
+    private LocalDateTime endTime;
+    /**
+     * 实际结算金额
+     */
+    @NotNull(message = "实际结算金额不能为空")
+    @PositiveOrZero(message = "实际结算金额必须大于等于0")
+    private BigDecimal settlePrice;
+    /**
+     * 发票税率(%)
+     */
+    @NotBlank(message = "发票税率(%)不能为空")
+    private Integer taxRate;
+    /**
+     * 交易方式
+     */
+    @NotNull(message = "付款方式不能为空")
+    private Integer trading;
+    /**
+     * 总应收/元
+     */
+    @NotNull(message = "总应收不能为空")
+    @PositiveOrZero(message = "总应收必须大于等于0")
+    private BigDecimal totalPrice;
+
+    /**
+     * 备注
+     */
+    @Size(max = 200, message = "备注不能超过200字")
+    private String remark;
+    /**
+     * 销售订单
+     */
+    @NotEmpty(message = "销售订单不能为空")
+    private List<Long> ids;
+}

+ 166 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerTradeVo.java

@@ -0,0 +1,166 @@
+package com.sckw.payment.model.vo.res;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.sckw.excel.annotation.ExcelContext;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 对账-贸易订单
+ *
+ * @author xucaiqin
+ * @date 2023-07-11 15:17:12
+ */
+@Getter
+@Setter
+@ExcelContext(fileName = "贸易对账单表", sheetName = "贸易对账单表")
+public class LedgerTradeVo {
+    /**
+     * 主键
+     */
+    @ExcelProperty(value = "id")
+    private Long id;
+    /**
+     * 贸易对账单编号
+     */
+    //@ExcelProperty(value = "贸易对账单编号")
+    private String tLedgerNo;
+
+    /**
+     * 对账单名称
+     */
+    //@ExcelProperty(value = "对账单名称")
+    private String name;
+
+    /**
+     * 企业id
+     */
+    //@ExcelProperty(value = "企业id")
+    private Long entId;
+
+    /**
+     * 托运单位
+     */
+    //@ExcelProperty(value = "托运单位")
+    private Long checkEntId;
+
+    /**
+     * 承运单位
+     */
+    //@ExcelProperty(value = "承运单位")
+    private Long carrierEntId;
+
+
+    /**
+     * 开始日期
+     */
+    //@ExcelProperty(value = "开始日期")
+    private LocalDateTime startTime;
+
+    /**
+     * 结束日期
+     */
+    //@ExcelProperty(value = "结束日期")
+    private LocalDateTime endTime;
+
+    /**
+     * 对账金额
+     */
+    //@ExcelProperty(value = "对账金额")
+    private BigDecimal price;
+
+    /**
+     * 发票税率(%)
+     */
+    //@ExcelProperty(value = "发票税率(%)")
+    private BigDecimal taxRate;
+
+    /**
+     * 交易方式(预付款、货到付款)
+     */
+    //@ExcelProperty(value = "交易方式")
+    private String trading;
+
+    /**
+     * 卸货量
+     */
+    //@ExcelProperty(value = "卸货量")
+    private BigDecimal unloadAmount;
+
+    /**
+     * 装货量
+     */
+    //@ExcelProperty(value = "装货量")
+    private BigDecimal loadAmount;
+
+    /**
+     * 亏损量
+     */
+    //@ExcelProperty(value = "亏损量")
+    private BigDecimal deficitAmount;
+
+    /**
+     * 合理损耗量
+     */
+    //@ExcelProperty(value = "合理损耗量")
+    private BigDecimal loseAmount;
+
+    /**
+     * 总应收/元
+     */
+    private BigDecimal totalPrice;
+
+    /**
+     * 实际结算金额
+     */
+    private BigDecimal settlePrice;
+
+    /**
+     * 已收款/元
+     */
+    private BigDecimal actualPrice;
+
+    /**
+     * 对账审核人电话
+     */
+    private String auditPhone;
+
+    /**
+     * 对账审核人名称
+     */
+    private String auditUser;
+
+    /**
+     * 对账清单凭证
+     */
+    private String url;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 状态(待对账、对账中、已对账、已完成、已取消、已退回)
+     */
+    private Integer status;
+
+    private Long createBy;
+
+    private LocalDateTime createTime;
+
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 订单数量
+     */
+    private Long orderCount;
+}

+ 41 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/AbsLedger.java

@@ -0,0 +1,41 @@
+package com.sckw.payment.service;
+
+import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
+import com.sckw.core.exception.BusinessException;
+import com.sckw.payment.model.constant.LedgerEnum;
+
+import java.util.List;
+
+/**
+ * @author xucaiqin
+ * @date 2023-07-13 15:40:37
+ */
+public abstract class AbsLedger {
+    public void deleteCheck(Integer status){
+        List<Integer> objects = Lists.newArrayList(LedgerEnum.BACK.getStatus(), LedgerEnum.SAVE.getStatus());
+        if (!objects.contains(status)) {
+            throw new BusinessException("只有【已保存】和【已退回】的单据才支持删除!");
+        }
+    }
+    /**
+     * 撤回订单校验
+     *
+     * @param status
+     */
+    public void revokeCheck(Integer status) {
+        if (LedgerEnum.TO_LEDGER.getStatus() != status) {
+            throw new BusinessException("只有【待对账】的单据才支持撤销!");
+        }
+    }
+
+    /**
+     * 完结订单校验
+     *
+     * @param status
+     */
+    public void successCheck(Integer status) {
+        if (LedgerEnum.LEDGERED.getStatus() != status) {
+            throw new BusinessException("只有【已对账】的订单支持完成对账!");
+        }
+    }
+}

+ 27 - 47
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java

@@ -1,7 +1,5 @@
 package com.sckw.payment.service;
 
-import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.sckw.core.exception.BusinessException;
@@ -9,20 +7,18 @@ import com.sckw.core.model.page.PageRes;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.payment.dao.KwpLedgerLogisticsMapper;
 import com.sckw.payment.dao.KwpLedgerLogisticsOrderMapper;
-import com.sckw.payment.dao.KwpLedgerLogisticsTrackMapper;
-import com.sckw.payment.dao.KwpSettlementLogisticsMapper;
 import com.sckw.payment.model.KwpLedgerLogistics;
 import com.sckw.payment.model.KwpLedgerLogisticsOrder;
 import com.sckw.payment.model.KwpLedgerLogisticsTrack;
 import com.sckw.payment.model.KwpSettlementLogistics;
-import com.sckw.payment.model.constant.LedgerLicEnum;
+import com.sckw.payment.model.constant.LedgerEnum;
+import com.sckw.payment.model.constant.LedgerTrackEnum;
 import com.sckw.payment.model.dto.LedgerLogisticsDto;
 import com.sckw.payment.model.vo.req.*;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -35,12 +31,11 @@ import java.util.Objects;
  */
 @Service
 @AllArgsConstructor
-public class KwpLedgerLogisticsService {
-
+public class KwpLedgerLogisticsService extends AbsLedger {
+    private final KwpLedgerLogisticsTrackService logisticsTrackService;
+    private final KwpSettlementLogisticsService settlementLogisticsService;
     private final KwpLedgerLogisticsMapper logisticsMapper;
-    private final KwpLedgerLogisticsTrackMapper logisticsTrackMapper;
     private final KwpLedgerLogisticsOrderMapper logisticsOrderMapper;
-    private final KwpSettlementLogisticsMapper settlementLogisticsMapper;
 
     /**
      * 分页查询物流对账单列表
@@ -90,8 +85,6 @@ public class KwpLedgerLogisticsService {
         KwpLedgerLogistics kwpLedgerLogistics = new KwpLedgerLogistics();
         kwpLedgerLogistics.setId(new IdWorker(1).nextId());
         kwpLedgerLogistics.setEntId(0L);//todo
-        kwpLedgerLogistics.setCheckEntId(logisticsReq.getCheckEntId());
-        kwpLedgerLogistics.setCarrierEntId(logisticsReq.getCarrierEntId());//todo
         kwpLedgerLogistics.setLLedgerNo("");//todo
         kwpLedgerLogistics.setName(logisticsReq.getName());
         kwpLedgerLogistics.setStartTime(logisticsReq.getStartTime());
@@ -107,14 +100,10 @@ public class KwpLedgerLogisticsService {
         kwpLedgerLogistics.setDeficitAmount(new BigDecimal("0"));
         kwpLedgerLogistics.setLoseAmount(new BigDecimal("0"));
         kwpLedgerLogistics.setActualPrice(new BigDecimal("0"));
-        kwpLedgerLogistics.setCheckPhone("");//todo 取配置的数据
-        kwpLedgerLogistics.setCheckUser("");
-        kwpLedgerLogistics.setCarrierPhone("");
-        kwpLedgerLogistics.setCarrierUser("");
         kwpLedgerLogistics.setGenerateTime(null);
         kwpLedgerLogistics.setUrl("");
         kwpLedgerLogistics.setRemark(logisticsReq.getRemark());
-        kwpLedgerLogistics.setStatus(LedgerLicEnum.SAVE.getStatus());
+        kwpLedgerLogistics.setStatus(LedgerEnum.SAVE.getStatus());
         kwpLedgerLogistics.setCreateBy(0L);//todo
         kwpLedgerLogistics.setCreateTime(LocalDateTime.now());
         kwpLedgerLogistics.setUpdateBy(0L);
@@ -132,6 +121,7 @@ public class KwpLedgerLogisticsService {
             kwpLedgerLogisticsOrder.setStatus(0);
             logisticsOrderMapper.insert(kwpLedgerLogisticsOrder);
         }
+        logisticsTrackService.saveTrack(kwpLedgerLogistics.getId(), "", LedgerTrackEnum.SAVE);
         return "保存成功";
     }
 
@@ -146,12 +136,10 @@ public class KwpLedgerLogisticsService {
         if (Objects.isNull(kwpLedgerLogistics)) {
             throw new BusinessException("对账单不存在!");
         }
-        List<Integer> objects = Lists.newArrayList(LedgerLicEnum.BACK.getStatus(), LedgerLicEnum.SAVE.getStatus());
-        if (!objects.contains(kwpLedgerLogistics.getStatus())) {
-            throw new BusinessException("只有【已保存】和【已退回】的单据才支持删除!");
-        }
+        deleteCheck(kwpLedgerLogistics.getStatus());
         kwpLedgerLogistics.setDelFlag(1);
-        return logisticsMapper.updateById(kwpLedgerLogistics);
+        logisticsMapper.updateById(kwpLedgerLogistics);
+        return logisticsTrackService.saveTrack(id, "", LedgerTrackEnum.DELETE);
     }
 
     /**
@@ -165,11 +153,11 @@ public class KwpLedgerLogisticsService {
         if (Objects.isNull(kwpLedgerLogistics)) {
             throw new BusinessException("对账单不存在!");
         }
-        if (LedgerLicEnum.TO_LEDGER.getStatus() != kwpLedgerLogistics.getStatus()) {
-            throw new BusinessException("只有【待对账】的单据才支持撤销!");
-        }
-        kwpLedgerLogistics.setStatus(LedgerLicEnum.BACK.getStatus());
-        return logisticsMapper.updateById(kwpLedgerLogistics);
+        revokeCheck(kwpLedgerLogistics.getStatus());
+
+        kwpLedgerLogistics.setStatus(LedgerEnum.BACK.getStatus());
+        logisticsMapper.updateById(kwpLedgerLogistics);
+        return logisticsTrackService.saveTrack(id, "", LedgerTrackEnum.REVOKE);
     }
 
     /**
@@ -179,10 +167,7 @@ public class KwpLedgerLogisticsService {
      * @return 物流对账单驳回记录
      */
     public List<KwpLedgerLogisticsTrack> queryBack(Long id) {
-        LambdaQueryWrapper<KwpLedgerLogisticsTrack> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(KwpLedgerLogisticsTrack::getLLedgerId, id);
-        wrapper.eq(KwpLedgerLogisticsTrack::getDelFlag, 0);
-        return logisticsTrackMapper.selectList(wrapper);
+        return logisticsTrackService.selectList(id, LedgerTrackEnum.REJECT);
     }
 
     /**
@@ -196,12 +181,7 @@ public class KwpLedgerLogisticsService {
         if (Objects.isNull(kwpLedgerLogistics)) {
             throw new BusinessException("对账单不存在!");
         }
-        KwpLedgerLogisticsTrack kwpLedgerLogisticsTrack = new KwpLedgerLogisticsTrack();
-        kwpLedgerLogisticsTrack.setId(new IdWorker(1).nextId());
-        kwpLedgerLogisticsTrack.setLLedgerId(ledgerReq.getId());
-        kwpLedgerLogisticsTrack.setRemark(ledgerReq.getRemark());
-        kwpLedgerLogisticsTrack.setStatus(0);
-        return logisticsTrackMapper.insert(kwpLedgerLogisticsTrack);
+        return logisticsTrackService.saveTrack(ledgerReq.getId(), ledgerReq.getRemark(), LedgerTrackEnum.REJECT);
     }
 
     /**
@@ -211,17 +191,18 @@ public class KwpLedgerLogisticsService {
      * @param confirmReq
      * @return
      */
-    public Integer confirmOrder(LogisticsConfirmReq confirmReq) {
+    public Integer confirmOrder(LedgerConfirmReq confirmReq) {
         KwpLedgerLogistics kwpLedgerLogistics = logisticsMapper.selectById(confirmReq.getId());
         if (Objects.isNull(kwpLedgerLogistics)) {
             throw new BusinessException("对账单不存在!");
         }
-        kwpLedgerLogistics.setStatus(LedgerLicEnum.LEDGERED.getStatus());
+        kwpLedgerLogistics.setStatus(LedgerEnum.LEDGERED.getStatus());
         kwpLedgerLogistics.setAuditPhone(confirmReq.getAuditPhone());
         kwpLedgerLogistics.setAuditUser(confirmReq.getAuditUser());
         kwpLedgerLogistics.setUrl(confirmReq.getUrl());
         kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
-        return logisticsMapper.updateById(kwpLedgerLogistics);
+        logisticsMapper.updateById(kwpLedgerLogistics);
+        return logisticsTrackService.saveTrack(confirmReq.getId(), "", LedgerTrackEnum.CONFIRM);
     }
 
     /**
@@ -236,12 +217,9 @@ public class KwpLedgerLogisticsService {
         if (Objects.isNull(kwpLedgerLogistics)) {
             throw new BusinessException("对账单不存在!");
         }
-        if (LedgerLicEnum.LEDGERED.getStatus() != kwpLedgerLogistics.getStatus()) {
-            throw new BusinessException("只有【已对账】的订单支持完成对账!");
-        }
-        kwpLedgerLogistics.setStatus(LedgerLicEnum.SUCCESS.getStatus());
-        kwpLedgerLogistics.setAuditPhone(ledgerReq.getSuccessPhone());
-        kwpLedgerLogistics.setAuditUser(ledgerReq.getSuccessUser());
+        successCheck(kwpLedgerLogistics.getStatus());
+
+        kwpLedgerLogistics.setStatus(LedgerEnum.SUCCESS.getStatus());
         kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
         logisticsMapper.updateById(kwpLedgerLogistics);
         //生成结算单
@@ -266,7 +244,9 @@ public class KwpLedgerLogisticsService {
         kwpSettlementLogistics.setUpdateTime(LocalDateTime.now());
         kwpSettlementLogistics.setDelFlag(0);
 
-        settlementLogisticsMapper.insert(kwpSettlementLogistics);
+        settlementLogisticsService.save(kwpSettlementLogistics);
+
+        logisticsTrackService.saveTrack(ledgerReq.getId(), "", LedgerTrackEnum.SUCCESS);
         return "对账完成";
     }
 }

+ 45 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsTrackService.java

@@ -1,11 +1,56 @@
 package com.sckw.payment.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.sckw.core.utils.IdWorker;
+import com.sckw.payment.dao.KwpLedgerLogisticsTrackMapper;
+import com.sckw.payment.model.KwpLedgerLogisticsTrack;
+import com.sckw.payment.model.constant.LedgerTrackEnum;
+import jakarta.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Objects;
+
 /**
  * @author xucaiqin
  * @date 2023-07-10 16:38:36
  */
 @Service
+@AllArgsConstructor
 public class KwpLedgerLogisticsTrackService {
+    private final KwpLedgerLogisticsTrackMapper logisticsTrackMapper;
+
+    /**
+     * 保存操作日志
+     *
+     * @param l_ledger_id 对账单id
+     * @param remark      备注
+     * @param status      状态值
+     */
+    public Integer saveTrack(Long l_ledger_id, String remark, LedgerTrackEnum status) {
+        KwpLedgerLogisticsTrack kwpLedgerLogisticsTrack = new KwpLedgerLogisticsTrack();
+        kwpLedgerLogisticsTrack.setId(new IdWorker(1).nextId());
+        kwpLedgerLogisticsTrack.setLLedgerId(l_ledger_id);
+        kwpLedgerLogisticsTrack.setRemark(remark);
+        kwpLedgerLogisticsTrack.setStatus(status.getStatus());
+        return logisticsTrackMapper.insert(kwpLedgerLogisticsTrack);
+    }
+
+    /**
+     * 查询订单记录
+     *
+     * @param id     物流对账单id notnull
+     * @param status 流程状态
+     * @return
+     */
+    public List<KwpLedgerLogisticsTrack> selectList(@NotNull Long id, LedgerTrackEnum status) {
+        LambdaQueryWrapper<KwpLedgerLogisticsTrack> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwpLedgerLogisticsTrack::getLLedgerId, id);
+        wrapper.eq(Objects.nonNull(status), KwpLedgerLogisticsTrack::getStatus, status.getStatus());
+        wrapper.eq(KwpLedgerLogisticsTrack::getDelFlag, 0);
+        return logisticsTrackMapper.selectList(wrapper);
+    }
+
 
 }

+ 18 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeOrderService.java

@@ -1,11 +1,29 @@
 package com.sckw.payment.service;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.sckw.payment.dao.KwpLedgerTradeOrderMapper;
+import com.sckw.payment.model.KwpLedgerTradeOrder;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+
 /**
  * @author xucaiqin
  * @date 2023-07-10 16:38:36
  */
 @Service
+@AllArgsConstructor
 public class KwpLedgerTradeOrderService {
+    private final KwpLedgerTradeOrderMapper tradeOrderMapper;
 
+    public void remove(Long tLedgerId) {
+        KwpLedgerTradeOrder kwpLedgerTradeOrder = new KwpLedgerTradeOrder();
+        kwpLedgerTradeOrder.setDelFlag(1);
+        kwpLedgerTradeOrder.setUpdateTime(LocalDateTime.now());
+        LambdaUpdateWrapper<KwpLedgerTradeOrder> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(KwpLedgerTradeOrder::getTLedgerId, tLedgerId);
+        wrapper.eq(KwpLedgerTradeOrder::getDelFlag, 0);
+        tradeOrderMapper.update(kwpLedgerTradeOrder, wrapper);
+    }
 }

+ 262 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java

@@ -1,12 +1,273 @@
 package com.sckw.payment.service;
 
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.sckw.core.exception.BusinessException;
+import com.sckw.core.model.page.PageRes;
+import com.sckw.core.utils.IdWorker;
+import com.sckw.payment.dao.KwpLedgerTradeMapper;
+import com.sckw.payment.model.KwpLedgerTrade;
+import com.sckw.payment.model.KwpLedgerTradeTrack;
+import com.sckw.payment.model.KwpLedgerTradeUnit;
+import com.sckw.payment.model.KwpSettlementTrade;
+import com.sckw.payment.model.constant.LedgerEnum;
+import com.sckw.payment.model.constant.LedgerTrackEnum;
+import com.sckw.payment.model.constant.TradeUnitType;
+import com.sckw.payment.model.dto.LedgerTradeDto;
+import com.sckw.payment.model.vo.req.*;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
 /**
  * @author xucaiqin
  * @date 2023-07-10 16:38:36
  */
 
 @Service
-public class KwpLedgerTradeService  {
+@AllArgsConstructor
+public class KwpLedgerTradeService extends AbsLedger {
+    private final KwpLedgerTradeMapper tradeMapper;
+    private final KwpLedgerTradeTrackService tradeTrackService;
+    private final KwpLedgerTradeOrderService tradeOrderService;
+    private final KwpSettlementTradeService settlementTradeService;
+    private final KwpLedgerTradeUnitService tradeUnitService;
+
+    /**
+     * 分页查询对账单列表
+     *
+     * @param tradeReq
+     * @return
+     */
+    public PageRes<LedgerTradeDto> pageList(TradeReq tradeReq) {
+        String keywords = tradeReq.getKeywords();
+        if (StringUtils.isNotBlank(keywords)) {
+
+        }
+        PageHelper.startPage(tradeReq.getPage(), tradeReq.getPageSize());
+        List<LedgerTradeDto> ledgerTradeDto = tradeMapper.pageSelect(tradeReq, new ArrayList<>());
+
+        return new PageRes<>(new PageInfo<>(ledgerTradeDto));
+
+    }
+
+    private void removeDraft(Long id) {
+        //删除kwp_ledger_trade_order
+        tradeOrderService.remove(id);
+        //删除kwp_ledger_trade_track
+        tradeTrackService.remove(id);
+        //删除kwp_ledger_trade_unit
+        tradeUnitService.remove(id);
+    }
+
+    /**
+     * 保存对账单
+     *
+     * @param tradeSendReq
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public String sendLedger(TradeSendReq tradeSendReq) {
+        Long id = tradeSendReq.getId();
+        if (Objects.isNull(id)) {
+            //新增
+            sendLedgerDraft(tradeSendReq);
+        } else {
+            //先删除
+            removeDraft(id);
+            //在新增
+            sendLedgerDraft(tradeSendReq);
+        }
+        return null;
+    }
+
+    /**
+     * 保存草稿
+     *
+     * @param tradeSendReq
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public String sendLedgerDraft(TradeSendReq tradeSendReq) {
+        KwpLedgerTrade kwpLedgerTrade = new KwpLedgerTrade();
+        kwpLedgerTrade.setId(Objects.isNull(tradeSendReq.getId()) ? new IdWorker(1).nextId() : tradeSendReq.getId());
+        kwpLedgerTrade.setEntId(0L);//todo
+        kwpLedgerTrade.setTLedgerNo("");
+        kwpLedgerTrade.setName(tradeSendReq.getName());
+        kwpLedgerTrade.setStartTime(tradeSendReq.getStartTime());
+        kwpLedgerTrade.setEndTime(tradeSendReq.getEndTime());
+        kwpLedgerTrade.setTaxRate(tradeSendReq.getTaxRate());
+        kwpLedgerTrade.setTrading(0L);
+        kwpLedgerTrade.setTotalPrice(tradeSendReq.getTotalPrice());
+        kwpLedgerTrade.setSettlePrice(tradeSendReq.getSettlePrice());
+        kwpLedgerTrade.setActualPrice(new BigDecimal("0.0"));
+        kwpLedgerTrade.setAuditUser("");
+        kwpLedgerTrade.setAuditPhone("");
+        kwpLedgerTrade.setUrl("");
+        kwpLedgerTrade.setRemark("");
+        kwpLedgerTrade.setStatus(LedgerEnum.SAVE.getStatus());
+        kwpLedgerTrade.setCreateBy(0L);
+        kwpLedgerTrade.setCreateTime(LocalDateTime.now());
+        kwpLedgerTrade.setUpdateBy(0L);
+        kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
+        kwpLedgerTrade.setDelFlag(0);
+        if (Objects.isNull(tradeSendReq.getId())) {
+            tradeMapper.insert(kwpLedgerTrade);
+        } else {
+            tradeMapper.updateById(kwpLedgerTrade);
+        }
+
+        /*保存贸易订单关联数据*/
+        List<Long> ids = tradeSendReq.getIds();
+        //todo dubbo拿取销售订单数据
+        /*保存企业单位相关信息*/
+        //todo dubbo拿取采购客户单位的信息
+        Long purchaseEntId = tradeSendReq.getPurchaseEntId();
+        List<KwpLedgerTradeUnit> list = new ArrayList<>();
+        KwpLedgerTradeUnit kwpLedgerTradeUnit = new KwpLedgerTradeUnit();
+        kwpLedgerTradeUnit.setId(new IdWorker(1).nextId());
+        kwpLedgerTradeUnit.setTLedgerId(kwpLedgerTrade.getId());
+        kwpLedgerTradeUnit.setTLedgerNo(kwpLedgerTrade.getTLedgerNo());
+        kwpLedgerTradeUnit.setUnitType(TradeUnitType.PURCHASE);
+        kwpLedgerTradeUnit.setEntId(purchaseEntId);
+        kwpLedgerTradeUnit.setTopEntId(0L);
+        kwpLedgerTradeUnit.setFirmName("");
+        kwpLedgerTradeUnit.setContacts("");
+        kwpLedgerTradeUnit.setPhone("");
+        kwpLedgerTradeUnit.setRemark("");
+        kwpLedgerTradeUnit.setStatus(0);
+        kwpLedgerTradeUnit.setCreateBy(0L);
+        kwpLedgerTradeUnit.setCreateTime(LocalDateTime.now());
+        kwpLedgerTradeUnit.setUpdateBy(0L);
+        kwpLedgerTradeUnit.setUpdateTime(LocalDateTime.now());
+        kwpLedgerTradeUnit.setDelFlag(0);
+
+        list.add(kwpLedgerTradeUnit);
+        tradeUnitService.saveList(list);
+        /*保存操作记录*/
+        tradeTrackService.saveTrack(kwpLedgerTrade.getId(), "", LedgerTrackEnum.SAVE);
+        return null;
+    }
+
+
+    public String remove(Long id) {
+        KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(id);
+        if (Objects.isNull(kwpLedgerTrade)) {
+            throw new BusinessException("对账单不存在!");
+        }
+        deleteCheck(kwpLedgerTrade.getStatus());
+        kwpLedgerTrade.setDelFlag(1);
+        tradeMapper.updateById(kwpLedgerTrade);
+        tradeTrackService.saveTrack(kwpLedgerTrade.getId(), "", LedgerTrackEnum.DELETE);
+        return "删除成功";
+    }
+
+    /**
+     * 撤回对账单
+     *
+     * @param id
+     * @return
+     */
+    public Integer backOrder(Long id) {
+        KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(id);
+        if (Objects.isNull(kwpLedgerTrade)) {
+            throw new BusinessException("对账单不存在!");
+        }
+        revokeCheck(kwpLedgerTrade.getStatus());
+        kwpLedgerTrade.setStatus(LedgerEnum.BACK.getStatus());
+        tradeMapper.updateById(kwpLedgerTrade);
+
+        return tradeTrackService.saveTrack(id, "", LedgerTrackEnum.REVOKE);
+    }
+
+    /**
+     * 查询贸易对账单驳回记录
+     *
+     * @param id
+     * @return
+     */
+    public List<KwpLedgerTradeTrack> queryBack(Long id) {
+        return tradeTrackService.selectList(id, LedgerTrackEnum.REJECT);
+
+    }
+
+    /**
+     * 驳回贸易对账单
+     *
+     * @param ledgerReq
+     * @return
+     */
+    public Integer doBack(LedgerReq ledgerReq) {
+        KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(ledgerReq.getId());
+        if (Objects.isNull(kwpLedgerTrade)) {
+            throw new BusinessException("对账单不存在!");
+        }
+        return tradeTrackService.saveTrack(ledgerReq.getId(), ledgerReq.getRemark(), LedgerTrackEnum.REJECT);
+    }
+
+    /**
+     * 对账确认
+     *
+     * @param confirmReq
+     * @return
+     */
+    public Integer confirmOrder(LedgerConfirmReq confirmReq) {
+        KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(confirmReq.getId());
+        if (Objects.isNull(kwpLedgerTrade)) {
+            throw new BusinessException("对账单不存在!");
+        }
+        kwpLedgerTrade.setStatus(LedgerEnum.LEDGERED.getStatus());
+        kwpLedgerTrade.setAuditPhone(confirmReq.getAuditPhone());
+        kwpLedgerTrade.setAuditUser(confirmReq.getAuditUser());
+        kwpLedgerTrade.setUrl(confirmReq.getUrl());
+        kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
+        tradeMapper.updateById(kwpLedgerTrade);
+        return tradeTrackService.saveTrack(confirmReq.getId(), "", LedgerTrackEnum.CONFIRM);
+    }
+
+    /**
+     * 对账完成
+     *
+     * @param ledgerReq
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public String orderSuccess(LedgerSuccessReq ledgerReq) {
+        KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(ledgerReq.getId());
+        if (Objects.isNull(kwpLedgerTrade)) {
+            throw new BusinessException("对账单不存在!");
+        }
+        successCheck(kwpLedgerTrade.getStatus());
+
+        kwpLedgerTrade.setStatus(LedgerEnum.SUCCESS.getStatus());
+        kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
+        tradeMapper.updateById(kwpLedgerTrade);
+        //生成结算单
+        KwpSettlementTrade kwpSettlementTrade = new KwpSettlementTrade();
+        kwpSettlementTrade.setId(new IdWorker(1).nextId());
+        kwpSettlementTrade.setEntId(0L);//todo
+        kwpSettlementTrade.setTLedgerId(kwpLedgerTrade.getId());
+        kwpSettlementTrade.setStOrderNo(String.valueOf(new IdWorker(1).nextId()));
+        kwpSettlementTrade.setName(kwpLedgerTrade.getName());
+        kwpSettlementTrade.setTotalPrice(kwpLedgerTrade.getTotalPrice());
+        kwpSettlementTrade.setActualPrice(kwpLedgerTrade.getActualPrice());
+        kwpSettlementTrade.setRemark("");
+        kwpSettlementTrade.setStatus(0);
+        kwpSettlementTrade.setCreateBy(0L);
+        kwpSettlementTrade.setCreateTime(LocalDateTime.now());
+        kwpSettlementTrade.setUpdateBy(0L);
+        kwpSettlementTrade.setUpdateTime(LocalDateTime.now());
+        kwpSettlementTrade.setDelFlag(0);
+        settlementTradeService.save(kwpSettlementTrade);
 
+        tradeTrackService.saveTrack(ledgerReq.getId(), "", LedgerTrackEnum.SUCCESS);
+        return "对账完成";
+    }
 }

+ 54 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeTrackService.java

@@ -1,12 +1,66 @@
 package com.sckw.payment.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.sckw.core.utils.IdWorker;
+import com.sckw.payment.dao.KwpLedgerTradeTrackMapper;
+import com.sckw.payment.model.KwpLedgerTradeTrack;
+import com.sckw.payment.model.constant.LedgerTrackEnum;
+import jakarta.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Objects;
+
 /**
  * @author xucaiqin
  * @date 2023-07-10 16:38:36
  */
 
 @Service
+@AllArgsConstructor
 public class KwpLedgerTradeTrackService {
+    private final KwpLedgerTradeTrackMapper tradeTrackMapper;
+
+    /**
+     * 保存操作日志
+     *
+     * @param t_ledger_id 对账单id
+     * @param remark      备注
+     * @param status      状态值
+     */
+    public Integer saveTrack(Long t_ledger_id, String remark, LedgerTrackEnum status) {
+        KwpLedgerTradeTrack tradeTrack = new KwpLedgerTradeTrack();
+        tradeTrack.setId(new IdWorker(1).nextId());
+        tradeTrack.setTLedgerId(t_ledger_id);
+        tradeTrack.setRemark(remark);
+        tradeTrack.setStatus(status.getStatus());
+        return tradeTrackMapper.insert(tradeTrack);
+    }
+
+    /**
+     * 查询订单记录
+     *
+     * @param id     物流对账单id notnull
+     * @param status 流程状态
+     * @return
+     */
+    public List<KwpLedgerTradeTrack> selectList(@NotNull Long id, LedgerTrackEnum status) {
+        LambdaQueryWrapper<KwpLedgerTradeTrack> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwpLedgerTradeTrack::getId, id);
+        wrapper.eq(Objects.nonNull(status), KwpLedgerTradeTrack::getStatus, status.getStatus());
+        wrapper.eq(KwpLedgerTradeTrack::getDelFlag, 0);
+        return tradeTrackMapper.selectList(wrapper);
+    }
 
+    public void remove(Long tLedgerId) {
+        LambdaQueryWrapper<KwpLedgerTradeTrack> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwpLedgerTradeTrack::getTLedgerId, tLedgerId);
+        wrapper.eq(KwpLedgerTradeTrack::getDelFlag, 0);
+        KwpLedgerTradeTrack tradeTrack = new KwpLedgerTradeTrack();
+        tradeTrack.setUpdateTime(LocalDateTime.now());
+        tradeTrack.setDelFlag(1);
+        tradeTrackMapper.update(tradeTrack, wrapper);
+    }
 }

+ 11 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementLogisticsService.java

@@ -1,12 +1,21 @@
 package com.sckw.payment.service;
 
+import com.sckw.payment.dao.KwpSettlementLogisticsMapper;
+import com.sckw.payment.model.KwpSettlementLogistics;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+
 /**
  * @author xucaiqin
  * @date 2023-07-10 16:38:36
  */
-
+@AllArgsConstructor
 @Service
-public class KwpSettlementLogisticsService  {
+public class KwpSettlementLogisticsService {
+    private final KwpSettlementLogisticsMapper settlementLogisticsMapper;
+
+    public void save(KwpSettlementLogistics kwpSettlementLogistics) {
+        settlementLogisticsMapper.insert(kwpSettlementLogistics);
+    }
 
 }

+ 9 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementTradeService.java

@@ -1,12 +1,20 @@
 package com.sckw.payment.service;
 
+import com.sckw.payment.dao.KwpSettlementTradeMapper;
+import com.sckw.payment.model.KwpSettlementTrade;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+
 /**
  * @author xucaiqin
  * @date 2023-07-10 16:38:36
  */
-
 @Service
+@AllArgsConstructor
 public class KwpSettlementTradeService {
+    private final KwpSettlementTradeMapper settlementTradeMapper;
 
+    public void save(KwpSettlementTrade kwpSettlementTrade) {
+        settlementTradeMapper.insert(kwpSettlementTrade);
+    }
 }

+ 53 - 85
sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerLogisticsMapper.xml

@@ -1,82 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sckw.payment.dao.KwpLedgerLogisticsMapper">
-    <resultMap id="BaseResultMap" type="com.sckw.payment.model.KwpLedgerLogistics">
-        <!--@mbg.generated-->
-        <!--@Table kwp_ledger_logistics-->
-        <id column="id" jdbcType="BIGINT" property="id"/>
-        <result column="ent_id" jdbcType="BIGINT" property="entId"/>
-        <result column="check_ent_id" jdbcType="BIGINT" property="checkEntId"/>
-        <result column="carrier_ent_id" jdbcType="BIGINT" property="carrierEntId"/>
-        <result column="l_ledger_no" jdbcType="VARCHAR" property="lLedgerNo"/>
-        <result column="name" jdbcType="VARCHAR" property="name"/>
-        <result column="start_time" jdbcType="TIMESTAMP" property="startTime"/>
-        <result column="end_time" jdbcType="TIMESTAMP" property="endTime"/>
-        <result column="tax_rate" jdbcType="DECIMAL" property="taxRate"/>
-        <result column="trading" jdbcType="INTEGER" property="trading"/>
-        <result column="unload_amount" jdbcType="DECIMAL" property="unloadAmount"/>
-        <result column="load_amount" jdbcType="DECIMAL" property="loadAmount"/>
-        <result column="deficit_amount" jdbcType="DECIMAL" property="deficitAmount"/>
-        <result column="lose_amount" jdbcType="DECIMAL" property="loseAmount"/>
-        <result column="total_price" jdbcType="DECIMAL" property="totalPrice"/>
-        <result column="settle_price" jdbcType="DECIMAL" property="settlePrice"/>
-        <result column="actual_price" jdbcType="DECIMAL" property="actualPrice"/>
-        <result column="check_user" jdbcType="VARCHAR" property="checkUser"/>
-        <result column="check_phone" jdbcType="VARCHAR" property="checkPhone"/>
-        <result column="carrier_user" jdbcType="VARCHAR" property="carrierUser"/>
-        <result column="carrier_phone" jdbcType="VARCHAR" property="carrierPhone"/>
-        <result column="audit_user" jdbcType="VARCHAR" property="auditUser"/>
-        <result column="audit_phone" jdbcType="VARCHAR" property="auditPhone"/>
-        <result column="url" jdbcType="VARCHAR" property="url"/>
-        <result column="generate_time" jdbcType="TIMESTAMP" property="generateTime"/>
-        <result column="remark" jdbcType="VARCHAR" property="remark"/>
-        <result column="status" jdbcType="INTEGER" property="status"/>
-        <result column="create_by" jdbcType="BIGINT" property="createBy"/>
-        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
-        <result column="update_by" jdbcType="BIGINT" property="updateBy"/>
-        <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
-        <result column="del_flag" jdbcType="INTEGER" property="delFlag"/>
-    </resultMap>
-    <sql id="Base_Column_List">
-        <!--@mbg.generated-->
-        id,
-        ent_id,
-        check_ent_id,
-        carrier_ent_id,
-        l_ledger_no,
-        `name`,
-        start_time,
-        end_time,
-        tax_rate,
-        trading,
-        unload_amount,
-        load_amount,
-        deficit_amount,
-        lose_amount,
-        total_price,
-        settle_price,
-        actual_price,
-        check_user,
-        check_phone,
-        carrier_user,
-        carrier_phone,
-        audit_user,
-        audit_phone,
-        url,
-        generate_time,
-        remark,
-        `status`,
-        create_by,
-        create_time,
-        update_by,
-        update_time,
-        del_flag
-    </sql>
+  <resultMap id="BaseResultMap" type="com.sckw.payment.model.KwpLedgerLogistics">
+    <!--@mbg.generated-->
+    <!--@Table kwp_ledger_logistics-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="ent_id" jdbcType="BIGINT" property="entId" />
+    <result column="l_ledger_no" jdbcType="VARCHAR" property="lLedgerNo" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="start_time" jdbcType="TIMESTAMP" property="startTime" />
+    <result column="end_time" jdbcType="TIMESTAMP" property="endTime" />
+    <result column="tax_rate" jdbcType="INTEGER" property="taxRate" />
+    <result column="trading" jdbcType="INTEGER" property="trading" />
+    <result column="unload_amount" jdbcType="DECIMAL" property="unloadAmount" />
+    <result column="load_amount" jdbcType="DECIMAL" property="loadAmount" />
+    <result column="deficit_amount" jdbcType="DECIMAL" property="deficitAmount" />
+    <result column="lose_amount" jdbcType="DECIMAL" property="loseAmount" />
+    <result column="total_price" jdbcType="DECIMAL" property="totalPrice" />
+    <result column="settle_price" jdbcType="DECIMAL" property="settlePrice" />
+    <result column="actual_price" jdbcType="DECIMAL" property="actualPrice" />
+    <result column="audit_user" jdbcType="VARCHAR" property="auditUser" />
+    <result column="audit_phone" jdbcType="VARCHAR" property="auditPhone" />
+    <result column="url" jdbcType="VARCHAR" property="url" />
+    <result column="generate_time" jdbcType="TIMESTAMP" property="generateTime" />
+    <result column="remark" jdbcType="VARCHAR" property="remark" />
+    <result column="status" jdbcType="INTEGER" property="status" />
+    <result column="create_by" jdbcType="BIGINT" property="createBy" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_by" jdbcType="BIGINT" property="updateBy" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, ent_id, l_ledger_no, `name`, start_time, end_time, tax_rate, trading, unload_amount, 
+    load_amount, deficit_amount, lose_amount, total_price, settle_price, actual_price, 
+    audit_user, audit_phone, url, generate_time, remark, `status`, create_by, create_time, 
+    update_by, update_time, del_flag
+  </sql>
 
     <select id="pageSelect" resultType="com.sckw.payment.model.dto.LedgerLogisticsDto">
         select kll.id,
-               kll.check_ent_id   checkEntId,
-               kll.carrier_ent_id carrierEntId,
                kll.l_ledger_no    lLedgerNo,
                kll.name,
                kll.start_time     startTime,
@@ -90,10 +54,6 @@
                kll.total_price    totalPrice,
                kll.settle_price   settlePrice,
                kll.actual_price   actualPrice,
-               kll.check_phone    checkPhone,
-               kll.check_user     checkUser,
-               kll.carrier_phone  carrierPhone,
-               kll.carrier_user   carrierUser,
                kll.url,
                kll.generate_time  generateTime,
                kll.remark,
@@ -105,26 +65,34 @@
             <choose>
                 <when test="ids != null and ids.size() != 0">
                     kll.id in
-                    <foreach collection="ids" item="id" separator="," open="" close=")">
-                    #{id,jdbcType=BIGINT}
+                    <foreach close=")" collection="ids" item="id" open="" separator=",">
+                        #{id,jdbcType=BIGINT}
                     </foreach>
                 </when>
                 <otherwise>
+
                     kll.del_flag = 0
                       and kllo.del_flag = 0
+
                     <if test="logisticsReq.status != null">
+
                         and kll.status = #{logisticsReq.status}
                     </if>
                     <if test="logisticsReq.trading != null">
                         and kll.trading = #{logisticsReq.trading,jdbcType=INTEGER}
                     </if>
                     <if test="logisticsReq.startCreateTime != null and logisticsReq.endCreateTime != null">
-                        and kll.generate_time between #{logisticsReq.startCreateTime,jdbcType=TIMESTAMP} and #{logisticsReq.endCreateTime,jdbcType=TIMESTAMP}
+                        and kll.generate_time between #{logisticsReq.startCreateTime,jdbcType=TIMESTAMP}
+                        and #{logisticsReq.endCreateTime,jdbcType=TIMESTAMP}
                     </if>
                     <if test="logisticsReq.keywords != null and logisticsReq.keywords != ''">
                         and (
-                                kll.l_ledger_no like concat('%', #{logisticsReq.keywords}, '%')
-                            or kll.check_user like concat('%', #{logisticsReq.keywords}, '%')
+                            kll.l_ledger_no like concat('%'
+                          , #{logisticsReq.keywords}
+                          , '%')
+                         or kll.check_user like concat('%'
+                          , #{logisticsReq.keywords}
+                          , '%')
                         <if test="ids != null and ids.size() != 0">
                             or kll.check_ent_id in
                             <foreach close=")" collection="ids" item="item" open="(" separator=",">
@@ -137,9 +105,9 @@
             </choose>
         </where>
         group by kll.id, kll.check_ent_id, kll.carrier_ent_id, kll.l_ledger_no, kll.name, kll.start_time, kll.end_time,
-                 kll.tax_rate, kll.trading, kll.unload_amount, kll.load_amount, kll.deficit_amount, kll.lose_amount,
-                 kll.total_price, kll.settle_price, kll.actual_price, kll.check_phone, kll.check_user,
-                 kll.carrier_phone, kll.carrier_user, kll.url, kll.generate_time, kll.remark, kll.status
+            kll.tax_rate, kll.trading, kll.unload_amount, kll.load_amount, kll.deficit_amount, kll.lose_amount,
+            kll.total_price, kll.settle_price, kll.actual_price, kll.check_phone, kll.check_user,
+            kll.carrier_phone, kll.carrier_user, kll.url, kll.generate_time, kll.remark, kll.status
         order by kll.generate_time desc
     </select>
 </mapper>

+ 53 - 7
sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerTradeMapper.xml

@@ -6,16 +6,18 @@
     <!--@Table kwp_ledger_trade-->
     <id column="id" jdbcType="BIGINT" property="id" />
     <result column="ent_id" jdbcType="BIGINT" property="entId" />
-    <result column="procure_ent_id" jdbcType="BIGINT" property="procureEntId" />
-    <result column="supply_ent_id" jdbcType="BIGINT" property="supplyEntId" />
+    <result column="t_ledger_no" jdbcType="VARCHAR" property="tLedgerNo" />
     <result column="name" jdbcType="VARCHAR" property="name" />
     <result column="start_time" jdbcType="TIMESTAMP" property="startTime" />
     <result column="end_time" jdbcType="TIMESTAMP" property="endTime" />
-    <result column="price" jdbcType="DECIMAL" property="price" />
-    <result column="tax_rate" jdbcType="DECIMAL" property="taxRate" />
+    <result column="tax_rate" jdbcType="INTEGER" property="taxRate" />
     <result column="trading" jdbcType="BIGINT" property="trading" />
     <result column="total_price" jdbcType="DECIMAL" property="totalPrice" />
+    <result column="settle_price" jdbcType="DECIMAL" property="settlePrice" />
     <result column="actual_price" jdbcType="DECIMAL" property="actualPrice" />
+    <result column="audit_user" jdbcType="VARCHAR" property="auditUser" />
+    <result column="audit_phone" jdbcType="VARCHAR" property="auditPhone" />
+    <result column="generate_time" jdbcType="TIMESTAMP" property="generateTime" />
     <result column="url" jdbcType="VARCHAR" property="url" />
     <result column="remark" jdbcType="VARCHAR" property="remark" />
     <result column="status" jdbcType="INTEGER" property="status" />
@@ -27,8 +29,52 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, ent_id, procure_ent_id, supply_ent_id, `name`, start_time, end_time, price, tax_rate, 
-    trading, total_price, actual_price, url, remark, `status`, create_by, create_time, 
-    update_by, update_time, del_flag
+    id, ent_id, t_ledger_no, `name`, start_time, end_time, tax_rate, trading, total_price, 
+    settle_price, actual_price, audit_user, audit_phone, generate_time, url, remark, 
+    `status`, create_by, create_time, update_by, update_time, del_flag
   </sql>
+
+  <select id="pageSelect" resultType="com.sckw.payment.model.dto.LedgerTradeDto">
+      select klt.id,
+             klt.t_ledger_no   tLedgerNo,
+             klt.name,
+             klt.start_time    startTime,
+             klt.end_time      endTime,
+             klt.tax_rate      taxRate,
+             klt.trading,
+             klt.total_price   totalPrice,
+             klt.settle_price  settlePrice,
+             klt.actual_price  actualPrice,
+             klt.url,
+             klt.generate_time generateTime,
+             klt.remark,
+             klt.status,
+             kltu.contacts,
+             kltu.phone,
+             kltu.firm_name    firmName,
+             count(klto.id)    orderCount
+      from kwp_ledger_trade klt
+               inner join kwp_ledger_trade_order klto on klt.id = klto.t_ledger_id and klto.del_flag = 0
+               inner join kwp_ledger_trade_unit kltu on klt.id = kltu.t_ledger_id and kltu.del_flag = 0
+      <where>
+          klt.del_flag = 0
+          <if test="tradeReq.status != null">
+              and klt.status = #{tradeReq.status}
+          </if>
+          <if test="tradeReq.trading != null">
+              and klt.trading = #{tradeReq.trading,jdbcType=INTEGER}
+          </if>
+          <if test="tradeReq.startCreateTime != null and tradeReq.endCreateTime != null">
+              and klt.generate_time between #{tradeReq.startCreateTime,jdbcType=TIMESTAMP} and #{tradeReq.endCreateTime,jdbcType=TIMESTAMP}
+          </if>
+          <if test="tradeReq.keywords != null and tradeReq.keywords != ''">
+              and (
+                          klt.t_ledger_no like concat('%', #{tradeReq.keywords,jdbcType=VARCHAR}, '%')
+                      or kltu.firm_name like concat('%', #{tradeReq.keywords,jdbcType=VARCHAR}, '%')
+                      or kltu.contacts like concat('%', #{tradeReq.keywords,jdbcType=VARCHAR}, '%')
+                  )
+          </if>
+      </where>
+      group by
+  </select>
 </mapper>