Browse Source

贸易结算接口,线下付款、预付款、货到付款列表查询接口

xucaiqin 2 years ago
parent
commit
7bc40112ff
20 changed files with 451 additions and 228 deletions
  1. 16 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/base/IdsList.java
  2. 21 6
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpSettlementOfflineController.java
  3. 28 7
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpSettlementWalletController.java
  4. 3 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpSettlementOfflineMapper.java
  5. 1 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpSettlementTradeMapper.java
  6. 4 2
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpSettlementWalletMapper.java
  7. 15 75
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpSettlementOffline.java
  8. 51 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/TradingEnum.java
  9. 18 32
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/SettlementOfflinePayReq.java
  10. 14 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/SettlementOfflineReq.java
  11. 11 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/SettlementWalletReq.java
  12. 4 4
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/SettlementOfflineVo.java
  13. 0 6
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/SettlementWalletVo.java
  14. 95 36
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementOfflineService.java
  15. 6 2
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementTradeService.java
  16. 64 13
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementWalletService.java
  17. 3 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpWalletRelationService.java
  18. 41 41
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementOfflineMapper.xml
  19. 25 0
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementTradeMapper.xml
  20. 31 0
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementWalletMapper.xml

+ 16 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/base/IdsList.java

@@ -27,7 +27,22 @@ public interface IdsList {
     default Long getIdLong() {
         String s;
         if (StringUtils.isNotBlank(s = getId())) {
-            return Long.parseLong(s);
+            try {
+                return Long.parseLong(s);
+            } catch (NumberFormatException e) {
+                return null;
+            }
+        }
+        return null;
+    }
+
+    default Long changeId(String id) {
+        if (StringUtils.isNotBlank(id)) {
+            try {
+                return Long.parseLong(id);
+            } catch (NumberFormatException e) {
+                return null;
+            }
         }
         return null;
     }

+ 21 - 6
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpSettlementOfflineController.java

@@ -1,8 +1,9 @@
 package com.sckw.payment.controller;
 
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.payment.model.constant.SettlementOrderTypeEnum;
+import com.sckw.payment.model.vo.req.SettlementOfflinePayReq;
 import com.sckw.payment.model.vo.req.SettlementOfflineReq;
-import com.sckw.payment.model.vo.req.SettlementReq;
 import com.sckw.payment.service.KwpSettlementOfflineService;
 import jakarta.annotation.Resource;
 import jakarta.validation.Valid;
@@ -41,14 +42,28 @@ public class KwpSettlementOfflineController {
 
     //  =========  销售收款  =========
 
-    @PostMapping(name = "交易-线下付款(销售收款)记录-列表", path = "pageListTradeCollection")
-    public HttpResult pageListTradeCollection(@RequestBody @Valid SettlementOfflineReq settlementOfflineReq) {
+    /**
+     * 销售方-线下付款记录
+     *
+     * @param settlementOfflineReq
+     * @return
+     */
+    @GetMapping(name = "交易-线下付款(销售收款)记录-列表", path = "pageListTrade")
+    public HttpResult pageListTradeCollection(@Valid SettlementOfflineReq settlementOfflineReq) {
+        settlementOfflineReq.setOrderType(SettlementOrderTypeEnum.TRADE.getStatus());
         return HttpResult.ok(kwpSettlementOfflineService.pageListTradeCollection(settlementOfflineReq));
     }
 
-    @GetMapping(name = "交易-线下付款(销售收款)记录-新增",path = "confirmTradeCollection")
-    public HttpResult confirmTradeCollection(@RequestParam("id") Long id,@RequestParam("price") Float price){
-        return HttpResult.ok(kwpSettlementOfflineService.confirmTradeCollection(id,price));
+    /**
+     * 销售收款-收款确认-线下付款
+     *
+     * @param payReq
+     * @return
+     */
+    @PostMapping(name = "销售收款-收款确认-线下付款", path = "confirmTradeCollection")
+    public HttpResult confirmTradeCollection(@Valid @RequestBody SettlementOfflinePayReq payReq) {
+        payReq.setOrderType(SettlementOrderTypeEnum.TRADE.getStatus());
+        return HttpResult.ok(kwpSettlementOfflineService.confirmTradeCollection(payReq));
     }
 
 }

+ 28 - 7
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpSettlementWalletController.java

@@ -1,9 +1,12 @@
 package com.sckw.payment.controller;
 
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.payment.model.constant.SettlementOrderTypeEnum;
+import com.sckw.payment.model.constant.SettlementWalletPayTypeEnum;
 import com.sckw.payment.model.vo.req.SettlementWalletReq;
 import com.sckw.payment.service.KwpSettlementWalletService;
 import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
@@ -45,14 +48,23 @@ public class KwpSettlementWalletController {
     }
 
 
-
     //  =========  销售收付款  =========
-    @PostMapping(name = "销售-付款记录列表(采购电子钱包结算记录)", path = "pageListTradePayment")
-    public HttpResult pageListTradePayment(SettlementWalletReq settlementWalletReq) {
-        return HttpResult.ok(kwpSettlementWalletService.pageListTradePayment(settlementWalletReq));
+
+    /**
+     * 采购付款记录-货到付款查询列表
+     *
+     * @param settlementWalletReq
+     * @return
+     */
+    @GetMapping(name = "销售-付款记录列表(采购电子钱包结算记录)", path = "pageListTradePayment")
+    public HttpResult pageListTradePayment(@Valid SettlementWalletReq settlementWalletReq) {
+        settlementWalletReq.setPayType(SettlementWalletPayTypeEnum.CASH_ON_DELIVERY.getStatus());
+        settlementWalletReq.setOrderType(SettlementOrderTypeEnum.TRADE.getStatus());
+        return HttpResult.ok(kwpSettlementWalletService.pageList(settlementWalletReq));
     }
 
     /**
+     * 采购-货到付款
      * @param id    结算单id
      * @param price 本次付款金额
      * @author Aick Spt
@@ -63,12 +75,21 @@ public class KwpSettlementWalletController {
         return HttpResult.ok(kwpSettlementWalletService.confirmTradePayment(id, price));
     }
 
-    @PostMapping(name = "销售-收款记录列表-预付款(电子钱包)", path = "pageListTradeCollection")
-    public HttpResult pageListTradeCollection(SettlementWalletReq settlementWalletReq) {
-        return HttpResult.ok(kwpSettlementWalletService.pageListTradeCollection(settlementWalletReq));
+    /**
+     * 销售收款记录-预付款查询列表
+     *
+     * @param settlementWalletReq
+     * @return
+     */
+    @GetMapping(name = "销售-收款记录列表-预付款(电子钱包)", path = "pageListTradeCollection")
+    public HttpResult pageListTradeCollection(@Valid SettlementWalletReq settlementWalletReq) {
+        settlementWalletReq.setPayType(SettlementWalletPayTypeEnum.ADVANCE_PAYMENT.getStatus());
+        settlementWalletReq.setOrderType(SettlementOrderTypeEnum.TRADE.getStatus());
+        return HttpResult.ok(kwpSettlementWalletService.pageList(settlementWalletReq));
     }
 
     /**
+     * 销售-预付款
      * @param id    结算单id
      * @param price 本次付款金额
      * @author Aick Spt

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

@@ -20,5 +20,7 @@ public interface KwpSettlementOfflineMapper extends BaseMapper<KwpSettlementOffl
 
     SettlementOfflineDto detailLogisticsCollection(@Param("id") Long id);
 
-    Integer confirmLogisticsCollection(@Param("id") Long id,@Param("price") Float price);
+    Integer confirmLogisticsCollection(@Param("id") Long id, @Param("price") Float price);
+
+    List<SettlementOfflineDto> pageList(@Param("offlineReq") SettlementOfflineReq settlementOfflineReq);
 }

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

@@ -25,4 +25,5 @@ public interface KwpSettlementTradeMapper extends BaseMapper<KwpSettlementTrade>
     SettlementLogisticsStatusCountVo countOrder(@Param("settlementReq")SettlementTradeReq settlementReq);
 
     List<SettlementTradeDto> selectByIds(@Param("ids") List<Long> ids);
+    SettlementTradeDto getById(@Param("id") Long id);
 }

+ 4 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpSettlementWalletMapper.java

@@ -1,7 +1,5 @@
 package com.sckw.payment.dao;
 
-import java.util.List;
-
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.payment.model.KwpSettlementWallet;
 import com.sckw.payment.model.dto.SettlementWalletDto;
@@ -9,6 +7,8 @@ import com.sckw.payment.model.vo.req.SettlementWalletReq;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * @author Aick Spt
  * @date 2023-07-25 11:01
@@ -28,4 +28,6 @@ public interface KwpSettlementWalletMapper  extends BaseMapper<KwpSettlementWall
     SettlementWalletDto detailLogisticsPayment(@Param("id") Long id);
 
     Integer confirmLogisticsPayment(@Param("id") Long id, @Param("price") Float price);
+
+    List<SettlementWalletDto> pageList(@Param("walletReq")SettlementWalletReq walletReq);
 }

+ 15 - 75
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/KwpSettlementOffline.java

@@ -4,12 +4,13 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
 /**
  * 线下结算记录(交易订单结算/物流订单结算)
  * @author xucaiqin
@@ -36,52 +37,16 @@ public class KwpSettlementOffline {
     private Long settlementId;
 
     /**
-     * 收款企业id
-     */
-    @TableField(value = "coll_ent_id")
-    private Long collEntId;
-
-    /**
-     * 收款企业名称
-     */
-    @TableField(value = "coll_firm_name")
-    private String collFirmName;
-
-    /**
-     * 收款金额
-     */
-    @TableField(value = "coll_price")
-    private BigDecimal collPrice;
-
-    /**
-     * 预计收款日期
-     */
-    @TableField(value = "coll_time")
-    private LocalDateTime collTime;
-
-    /**
-     * 收款确认人
-     */
-    @TableField(value = "coll_user_id")
-    private Long collUserId;
-
-    /**
-     * 收款附件
-     */
-    @TableField(value = "coll_urls")
-    private String collUrls;
-
-    /**
-     * 付款企业id
+     * 结算单类型 1-物流 2-贸易
      */
-    @TableField(value = "pay_ent_id")
-    private Long payEntId;
+    @TableField(value = "order_type")
+    private Integer orderType;
 
     /**
-     * 付款企业名称
+     * 付款日期
      */
-    @TableField(value = "pay_firm_name")
-    private String payFirmName;
+    @TableField(value = "pay_time")
+    private LocalDateTime payTime;
 
     /**
      * 付款金额
@@ -90,22 +55,16 @@ public class KwpSettlementOffline {
     private BigDecimal payPrice;
 
     /**
-     * 付款日期
-     */
-    @TableField(value = "pay_time")
-    private LocalDateTime payTime;
-
-    /**
-     * 付款确认人
+     * 待付金额
      */
-    @TableField(value = "pay_user_id")
-    private Long payUserId;
+    @TableField(value = "topay_price")
+    private BigDecimal topayPrice;
 
     /**
      * 付款附件
      */
-    @TableField(value = "pay_urls")
-    private String payUrls;
+    @TableField(value = "url")
+    private String url;
 
     /**
      * 备注
@@ -114,7 +73,7 @@ public class KwpSettlementOffline {
     private String remark;
 
     /**
-     * 状态:0正常/1锁定
+     * 状态(1正常 、2异常)
      */
     @TableField(value = "`status`")
     private Integer status;
@@ -148,23 +107,4 @@ public class KwpSettlementOffline {
      */
     @TableField(value = "del_flag")
     private Integer delFlag;
-
-    /**
-     * 结算单类型 1-物流 2-贸易
-     */
-    @TableField(value = "order_type")
-    private Integer orderType;
-
-    /**
-     * 待付金额
-     */
-    @TableField(value = "topay_price")
-    private BigDecimal topayPrice;
-
-    /**
-     * 付款附件
-     */
-    @TableField(value = "url")
-    private String url;
-
 }

+ 51 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/TradingEnum.java

@@ -0,0 +1,51 @@
+package com.sckw.payment.model.constant;
+
+import java.util.Objects;
+
+/**
+ * 交易方式 枚举
+ *
+ * @author xucaiqin
+ * @date 2023-07-11 12:00:52
+ */
+public enum TradingEnum {
+    PRE_PAY(0, "预付款"),
+    RECEIVE_PAY(1, "货到付款"),
+    OFFLINE_PAY(2, "线下付款");
+
+    private int status;
+    private String desc;
+
+    TradingEnum(int status, String desc) {
+        this.status = status;
+        this.desc = desc;
+    }
+
+    public static String getDesc(Integer status) {
+        if (Objects.isNull(status)) {
+            return "";
+        }
+        for (TradingEnum value : values()) {
+            if (status == value.getStatus()) {
+                return value.getDesc();
+            }
+        }
+        return "";
+    }
+
+    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;
+    }
+}

+ 18 - 32
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/SettlementOfflinePayReq.java

@@ -1,17 +1,18 @@
 package com.sckw.payment.model.vo.req;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.sckw.core.model.vo.BasePara;
-import com.sckw.payment.model.constant.SettlementEnum;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
-import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serial;
-import java.time.LocalDateTime;
+import java.math.BigDecimal;
 
 /**
- * @author Aick Spt
+ * 回款确认-线下付款
+ *
+ * @author xucaiqin
  * @date 2023-07-18 11:29
  */
 @Getter
@@ -19,31 +20,16 @@ import java.time.LocalDateTime;
 public class SettlementOfflinePayReq extends BasePara {
     @Serial
     private static final long serialVersionUID = 6537008434516489423L;
-
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-//    @NotNull(message = "创建时间开始日期不能为空")
-    private LocalDateTime startCreateTime;
-
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-//    @NotNull(message = "创建时间结束日期不能为空")
-    private LocalDateTime endCreateTime;
-
-        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-//    @NotNull(message = "预计回款开始日期不能为空")
-    private LocalDateTime startReceiptTime;
-
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-//    @NotNull(message = "预计回款结束日期不能为空")
-    private LocalDateTime endReceiptTime;
-
-    /**
-     * @see SettlementEnum
-     */
-    private Integer status;
-
-    private String ids;
+    private Integer orderType;
+
+    @NotBlank(message = "结算单id不能为空")
+    private String settlementId;
+    @NotNull(message = "结算单金额不能为空")
+    private BigDecimal payPrice;
+    @NotBlank(message = "相关附近不能为空")
+    private String url;
+
+    public Long getSettlementIdLong(){
+        return changeId(settlementId);
+    }
 }

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

@@ -1,12 +1,25 @@
 package com.sckw.payment.model.vo.req;
 
 import com.sckw.core.model.vo.BasePara;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Getter;
+import lombok.Setter;
 
 /**
  * @author Aick Spt
  * @date 2023-07-24 16:52
  */
+@Getter
+@Setter
 public class SettlementOfflineReq extends BasePara {
+    /**
+     * 结算单id
+     */
+    @NotBlank(message = "结算单id不能为空")
+    private String settlementId;
 
-
+    /**
+     * 订单类型 1-物流 2-贸易
+     */
+    private Integer orderType;
 }

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

@@ -1,6 +1,7 @@
 package com.sckw.payment.model.vo.req;
 
 import com.sckw.core.model.vo.BasePara;
+import jakarta.validation.constraints.NotBlank;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -18,9 +19,18 @@ public class SettlementWalletReq extends BasePara {
     private Integer trading;
 
     /**
-     * 支付方式
+     * 支付方式 预付款、货到付款
      */
     private Integer payType;
+    /**
+     * 订单类型  1-物流 2-贸易
+     */
+    private Integer orderType;
+    /**
+     * 结算单id
+     */
+    @NotBlank(message = "结算单id不能为空")
+    private String settlementId;
 
 
 }

+ 4 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/SettlementOfflineVo.java

@@ -91,10 +91,10 @@ public class SettlementOfflineVo {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
 
-    /**
-     * 删除标识(0正常/1删除)
-     */
-    private Integer delFlag;
+//    /**
+//     * 删除标识(0正常/1删除)
+//     */
+//    private Integer delFlag;
 
     // 添加构造函数,getter和setter方法,以及其他业务逻辑方法(根据需要)
 

+ 0 - 6
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/SettlementWalletVo.java

@@ -74,10 +74,4 @@ public class SettlementWalletVo {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
 
-    /**
-     * 是否删除(0未删除,1删除)
-     */
-    private Integer delFlag;
-
-
 }

+ 95 - 36
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementOfflineService.java

@@ -2,37 +2,54 @@ 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.core.web.context.LoginUserHolder;
 import com.sckw.payment.dao.KwpSettlementOfflineMapper;
 import com.sckw.payment.model.KwpSettlementOffline;
-import com.sckw.payment.model.constant.SettlementWalletPayTypeEnum;
+import com.sckw.payment.model.KwpSettlementTrade;
+import com.sckw.payment.model.constant.TradingEnum;
 import com.sckw.payment.model.dto.SettlementOfflineDto;
+import com.sckw.payment.model.dto.SettlementTradeDto;
+import com.sckw.payment.model.vo.req.SettlementOfflinePayReq;
 import com.sckw.payment.model.vo.req.SettlementOfflineReq;
-import com.sckw.payment.model.vo.req.SettlementReq;
 import com.sckw.payment.model.vo.res.SettlementOfflineVo;
-import lombok.AllArgsConstructor;
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
+import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
  * @author xucaiqin
  * @date 2023-07-10 16:38:36
  */
-@AllArgsConstructor
 @Service
 @Slf4j
 public class KwpSettlementOfflineService {
-
-    private final KwpSettlementOfflineMapper settlementOfflineMapper;
+    @Resource
+    private KwpSettlementOfflineMapper settlementOfflineMapper;
+    @Resource
+    private KwpSettlementTradeService settlementTradeService;
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
 
     /**
      * 物流-线下付款(运费收款)记录-列表
+     *
      * @author Aick Spt
      * @date 2023-07-26 17:15
      */
@@ -107,50 +124,92 @@ public class KwpSettlementOfflineService {
     }
 
     public PageRes<SettlementOfflineVo> pageListTradeCollection(SettlementOfflineReq settlementOfflineReq) {
-        //        //todo 查询缓存,获取客户企业id
-//        String keywords = settlementReq.getKeywords();
-//        if (StringUtils.isNotBlank(keywords)) {
-//            System.out.println("关键之:" + keywords);
-//        }
         PageHelper.startPage(settlementOfflineReq.getPage(), settlementOfflineReq.getPageSize());
-
-        List<SettlementOfflineDto> settlementOfflineLogisticsList = settlementOfflineMapper.pageListLogisticsCollection(settlementOfflineReq);
-        for (SettlementOfflineDto entity : settlementOfflineLogisticsList) {
-            entity.setCreateByText("创建人名称");
-            entity.setUpdateByText("更新人名称");
+        List<SettlementOfflineDto> settlementOfflineDto = settlementOfflineMapper.pageList(settlementOfflineReq);
+        if (CollectionUtils.isEmpty(settlementOfflineDto)) {
+            return new PageRes<>();
         }
-
-        if (CollectionUtils.isEmpty(settlementOfflineLogisticsList)) {
-            return new PageRes<>(new PageInfo<>());
-        }
-
+        Map<Long, UserCacheResDto> map = new HashMap<>();
         //指定返回值
-        List<SettlementOfflineVo> collect = settlementOfflineLogisticsList.stream().map(a -> {
+        List<SettlementOfflineVo> collect = settlementOfflineDto.stream().map(a -> {
             SettlementOfflineVo settlementOfflineVo = new SettlementOfflineVo();
             BeanUtils.copyProperties(a, settlementOfflineVo);
+
+            Long createBy = a.getCreateBy();
+            Long updateBy = a.getUpdateBy();
+            UserCacheResDto userCacheResDto = map.get(createBy);
+            if (Objects.isNull(userCacheResDto)) {
+                userCacheResDto = remoteSystemService.queryUserCacheById(createBy);
+                map.put(createBy, userCacheResDto);
+            }
+            if (Objects.nonNull(userCacheResDto)) {
+                settlementOfflineVo.setCreateByText(userCacheResDto.getName());
+            }
+            userCacheResDto = map.get(updateBy);
+            if (Objects.isNull(userCacheResDto)) {
+                userCacheResDto = remoteSystemService.queryUserCacheById(updateBy);
+                map.put(updateBy, userCacheResDto);
+            }
+            if (Objects.nonNull(userCacheResDto)) {
+                settlementOfflineVo.setUpdateByText(userCacheResDto.getName());
+            }
             return settlementOfflineVo;
         }).collect(Collectors.toList());
-
         return new PageRes<>(new PageInfo<>(collect));
     }
 
-    public Integer confirmTradeCollection(Long id, Float price) {
-        log.info("接收到数据,开始物流-物流-线下付款(销售收款)记录-新增,待完善");
-        //todo 待完善
-        //先查询出结算单情况
-
-        //检查结算单状态和所差金额
-
-        //对比金额
-
-        //累加入库结算单
+    @Transactional(rollbackFor = Exception.class)
+    public String confirmTradeCollection(SettlementOfflinePayReq payReq) {
+        SettlementTradeDto byId = settlementTradeService.getById(payReq.getSettlementIdLong());
+        if (Objects.isNull(byId)) {
+            throw new BusinessException("结算单不存在");
+        }
+        if (TradingEnum.OFFLINE_PAY.getStatus() != byId.getTrading()) {
+            throw new BusinessException("只支持线下付款交易方法进行线下结算");
+        }
+        BigDecimal totalPrice = byId.getTotalPrice();
+        BigDecimal actualPrice = byId.getActualPrice();
+        if (Objects.isNull(totalPrice)) {
+            throw new BusinessException("总应收异常");
+        }
+        if (Objects.isNull(actualPrice)) {
+            throw new BusinessException("已收款金额异常");
+        }
+        //总应收-已收款=剩余待付款
+        BigDecimal subtract = totalPrice.subtract(actualPrice);
+        //本次付款金额
+        BigDecimal payPrice = payReq.getPayPrice();
+        //剩余待付款-本次付款=下次剩余待付款
+        BigDecimal subtract1 = subtract.subtract(payPrice);
+        if (subtract1.compareTo(new BigDecimal("0.0")) < 0) {
+            throw new BusinessException("实际付款金额大于剩余待付款金额");
+        }
+        KwpSettlementTrade kwpSettlementTrade = new KwpSettlementTrade();
+        kwpSettlementTrade.setId(byId.getId());
+        kwpSettlementTrade.setActualPrice(actualPrice.add(payPrice));//已收款加本次收款
+        kwpSettlementTrade.setStatus(1);
+        kwpSettlementTrade.setUpdateBy(LoginUserHolder.getUserId());
+        kwpSettlementTrade.setUpdateTime(LocalDateTime.now());
+        settlementTradeService.updateById(kwpSettlementTrade);
 
-        //新增电子钱包结算记录
         KwpSettlementOffline kwpSettlementOffline = new KwpSettlementOffline();
         kwpSettlementOffline.setId(new IdWorker(1).nextId());
+        kwpSettlementOffline.setEntId(LoginUserHolder.getEntId());
+        kwpSettlementOffline.setSettlementId(byId.getId());
+        kwpSettlementOffline.setOrderType(payReq.getOrderType());
+        kwpSettlementOffline.setPayTime(LocalDateTime.now());
+        kwpSettlementOffline.setPayPrice(payReq.getPayPrice());
+        kwpSettlementOffline.setTopayPrice(subtract1);
+        kwpSettlementOffline.setUrl(payReq.getUrl());
+        kwpSettlementOffline.setRemark("");
+        kwpSettlementOffline.setStatus(0);
+        kwpSettlementOffline.setCreateBy(LoginUserHolder.getUserId());
+        kwpSettlementOffline.setCreateTime(LocalDateTime.now());
+        kwpSettlementOffline.setUpdateBy(LoginUserHolder.getUserId());
+        kwpSettlementOffline.setUpdateTime(LocalDateTime.now());
+        kwpSettlementOffline.setDelFlag(0);
 
-        //todo 待完善
         settlementOfflineMapper.insert(kwpSettlementOffline);
-        return settlementOfflineMapper.confirmLogisticsCollection(id, price);
+        return "";
     }
 }

+ 6 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementTradeService.java

@@ -41,8 +41,8 @@ public class KwpSettlementTradeService {
     @DubboReference(version = "2.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
 
-    public KwpSettlementTrade getById(Long id) {
-        return settlementTradeMapper.selectById(id);
+    public SettlementTradeDto getById(Long id) {
+        return settlementTradeMapper.getById(id);
     }
 
     public void save(KwpSettlementTrade kwpSettlementTrade) {
@@ -179,4 +179,8 @@ public class KwpSettlementTradeService {
     public SettlementTradeDto detailPayment(Long id) {
         return null;
     }
+
+    public void updateById(KwpSettlementTrade kwpSettlementTrade) {
+        settlementTradeMapper.updateById(kwpSettlementTrade);
+    }
 }

+ 64 - 13
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementWalletService.java

@@ -20,8 +20,11 @@ import com.sckw.payment.model.dto.SettlementTradeDto;
 import com.sckw.payment.model.dto.SettlementWalletDto;
 import com.sckw.payment.model.vo.req.SettlementWalletReq;
 import com.sckw.payment.model.vo.res.SettlementWalletVo;
-import lombok.AllArgsConstructor;
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
+import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -29,28 +32,33 @@ import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
  * @author Aick Spt
  * @date 2023-07-20 14:55
  */
-@AllArgsConstructor
 @Service
 @Slf4j
 public class KwpSettlementWalletService {
-
-    private final KwpSettlementWalletMapper settlementWalletMapper;
-
-    private final KwpSettlementLogisticsMapper kwpSettlementLogisticsMapper;
-
-    private final KwpSettlementLogisticsService kwpSettlementLogisticsService;
-
-    private final KwpSettlementTradeService kwpSettlementTradeService;
-
-    private final KwpSettlementTradeMapper kwpSettlementTradeMapper;
-    private final KwpLedgerTradeService ledgerTradeService;
+    @Resource
+    private KwpSettlementWalletMapper settlementWalletMapper;
+    @Resource
+    private KwpSettlementLogisticsMapper kwpSettlementLogisticsMapper;
+    @Resource
+    private KwpSettlementLogisticsService kwpSettlementLogisticsService;
+    @Resource
+    private KwpSettlementTradeService kwpSettlementTradeService;
+    @Resource
+    private KwpSettlementTradeMapper kwpSettlementTradeMapper;
+    @Resource
+    private KwpLedgerTradeService ledgerTradeService;
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
 
     /**
      * 物流-电子钱包付款(货到付款)结算记录-列表
@@ -276,6 +284,49 @@ public class KwpSettlementWalletService {
         return null;
     }
 
+    /**
+     * 预付款、货到付款记录
+     * 前端接口分开
+     *
+     * @param settlementWalletReq
+     * @return
+     */
+    public PageRes<SettlementWalletVo> pageList(SettlementWalletReq settlementWalletReq) {
+        PageHelper.startPage(settlementWalletReq.getPage(), settlementWalletReq.getPageSize());
+        List<SettlementWalletDto> settlementWalletDto = settlementWalletMapper.pageList(settlementWalletReq);
+
+        if (CollectionUtils.isEmpty(settlementWalletDto)) {
+            return new PageRes<>();
+        }
+        Map<Long, UserCacheResDto> map = new HashMap<>();
+        //指定返回值
+        List<SettlementWalletVo> collect = settlementWalletDto.stream().map(a -> {
+            SettlementWalletVo settlementWalletVo = new SettlementWalletVo();
+            BeanUtils.copyProperties(a, settlementWalletVo);
+            Long createBy = a.getCreateBy();
+            Long updateBy = a.getUpdateBy();
+            UserCacheResDto userCacheResDto = map.get(createBy);
+            if (Objects.isNull(userCacheResDto)) {
+                userCacheResDto = remoteSystemService.queryUserCacheById(createBy);
+                map.put(createBy, userCacheResDto);
+            }
+            if (Objects.nonNull(userCacheResDto)) {
+                settlementWalletVo.setCreateByText(userCacheResDto.getName());
+            }
+            userCacheResDto = map.get(updateBy);
+            if (Objects.isNull(userCacheResDto)) {
+                userCacheResDto = remoteSystemService.queryUserCacheById(updateBy);
+                map.put(updateBy, userCacheResDto);
+            }
+            if (Objects.nonNull(userCacheResDto)) {
+                settlementWalletVo.setUpdateByText(userCacheResDto.getName());
+            }
+            return settlementWalletVo;
+        }).collect(Collectors.toList());
+
+        return new PageRes<>(new PageInfo<>(collect));
+    }
+
     public PageRes<SettlementWalletVo> pageListTradeCollection(SettlementWalletReq settlementWalletReq) {
 //        //todo 查询缓存,获取客户企业id
 //        String keywords = settlementReq.getKeywords();

+ 3 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpWalletRelationService.java

@@ -24,6 +24,9 @@ public class KwpWalletRelationService {
     private final ConcurrentHashMap<Long, String> map = new ConcurrentHashMap<>(12);
 
     public String getRelation(Long entId) {
+        if (Objects.isNull(entId)) {
+            return null;
+        }
         String uid = map.get(entId);
         if (StringUtils.isNotBlank(uid)) {
             log.debug("从缓存中加载企业用户关系:{}", JSONObject.toJSONString(map));

+ 41 - 41
sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementOfflineMapper.xml

@@ -1,50 +1,35 @@
 <?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.KwpSettlementOfflineMapper">
-    <resultMap id="BaseResultMap" type="com.sckw.payment.model.KwpSettlementOffline">
-        <!--@mbg.generated-->
-        <!--@Table kwp_settlement_offline-->
-        <id column="id" jdbcType="BIGINT" property="id"/>
-        <result column="ent_id" jdbcType="BIGINT" property="entId"/>
-        <result column="settlement_id" jdbcType="BIGINT" property="settlementId"/>
-        <result column="order_type" jdbcType="TINYINT" property="orderType"/>
-        <result column="pay_time" jdbcType="TIMESTAMP" property="payTime"/>
-        <result column="pay_price" jdbcType="DECIMAL" property="payPrice"/>
-        <result column="topay_price" jdbcType="DECIMAL" property="topayPrice"/>
-        <result column="url" jdbcType="VARCHAR" property="url"/>
-        <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,
-        settlement_id,
-        order_type,
-        pay_time,
-        pay_price,
-        topay_price,
-        url,
-        remark,
-        `status`,
-        create_by,
-        create_time,
-        update_by,
-        update_time,
-        del_flag
-    </sql>
+  <resultMap id="BaseResultMap" type="com.sckw.payment.model.KwpSettlementOffline">
+    <!--@mbg.generated-->
+    <!--@Table kwp_settlement_offline-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="ent_id" jdbcType="BIGINT" property="entId" />
+    <result column="settlement_id" jdbcType="BIGINT" property="settlementId" />
+    <result column="order_type" jdbcType="BOOLEAN" property="orderType" />
+    <result column="pay_time" jdbcType="TIMESTAMP" property="payTime" />
+    <result column="pay_price" jdbcType="DECIMAL" property="payPrice" />
+    <result column="topay_price" jdbcType="DECIMAL" property="topayPrice" />
+    <result column="url" jdbcType="VARCHAR" property="url" />
+    <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, settlement_id, order_type, pay_time, pay_price, topay_price, url, remark, 
+    `status`, create_by, create_time, update_by, update_time, del_flag
+  </sql>
 
     <!-- 物流-线下付款(运费收款)记录-列表 -->
     <select id="pageListLogisticsCollection" resultType="com.sckw.payment.model.dto.SettlementOfflineDto">
         select
-        <include refid="Base_Column_List"/>
+        <include refid="Base_Column_List" />
         FROM kwp_settlement_offline
         <where>
             order_type = 1
@@ -53,7 +38,7 @@
 
     <select id="detailLogisticsCollection" resultType="com.sckw.payment.model.dto.SettlementOfflineDto">
         select
-        <include refid="Base_Column_List"/>
+        <include refid="Base_Column_List" />
         FROM kwp_settlement_offline
         <where>
             order_type = 1
@@ -62,4 +47,19 @@
 
     <select id="confirmLogisticsCollection" resultType="java.lang.Integer">
     </select>
+
+    <select id="pageList" resultType="com.sckw.payment.model.dto.SettlementOfflineDto">
+        select
+        <include refid="Base_Column_List" />
+        FROM kwp_settlement_offline
+        <where>
+            del_flag = 0
+            <if test="offlineReq.orderType != null">
+                and order_type = #{offlineReq.orderType,jdbcType=INTEGER}
+            </if>
+            <if test="offlineReq.settlementId != null">
+                and settlement_id = #{offlineReq.settlementId,jdbcType=INTEGER}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 25 - 0
sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementTradeMapper.xml

@@ -139,4 +139,29 @@
             </foreach>
         </where>
     </select>
+    <select id="getById" resultType="com.sckw.payment.model.dto.SettlementTradeDto">
+        select kst.id,
+               kst.status,
+               kst.st_order_no,
+               kst.create_time,
+               kst.receipt_time,
+               cast(kst.actual_price as char)                     actualPrice,
+               cast(kst.total_price as char)                      totalPrice,
+               cast((kst.total_price - kst.actual_price) as char) waitPrice,
+               kst.audit_user,
+               kst.audit_phone,
+               kst.success_user,
+               kst.success_phone,
+               kst.create_time,
+               klt.name,
+               klt.trading,
+               kltu.firm_name
+        from kwp_settlement_trade kst
+                 inner join kwp_ledger_trade klt on kst.t_ledger_id = klt.id and klt.del_flag = 0
+                 inner join kwp_ledger_trade_unit kltu on klt.id = kltu.t_ledger_id and kltu.del_flag = 0
+        <where>
+            kst.del_flag = 0
+              and kst.id = #{id,jdbcType=BIGINT}
+        </where>
+    </select>
 </mapper>

+ 31 - 0
sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementWalletMapper.xml

@@ -81,4 +81,35 @@
     <select id="confirmLogisticsPayment" resultType="java.lang.Integer">
         insert into kwp_settlement_wallet ( <include refid="Base_Column_List"/>) value ();
     </select>
+
+    <select id="pageList" resultType="com.sckw.payment.model.dto.SettlementWalletDto">
+        select ksw.id,
+               ksw.ent_id,
+               ksw.settlement_id,
+               ksw.order_type,
+               ksw.channel,
+               ksw.order_type,
+               ksw.pay_time,
+               ksw.pay_price,
+               ksw.topay_price,
+               ksw.type,
+               ksw.remark,
+               ksw.create_by,
+               ksw.create_time,
+               ksw.update_by,
+               ksw.update_time
+        from kwp_settlement_wallet ksw
+        <where>
+            ksw.del_flag = 0
+            <if test="walletReq.settlementId != null and walletReq.settlementId != ''">
+                and ksw.settlement_id = #{walletReq.settlementId,jdbcType=INTEGER}
+            </if>
+            <if test="walletReq.orderType != null">
+                and ksw.order_type = #{walletReq.orderType,jdbcType=INTEGER}
+            </if>
+            <if test="walletReq.payType != null">
+                and ksw.type = #{walletReq.payType,jdbcType=INTEGER}
+            </if>
+        </where>
+    </select>
 </mapper>