Bläddra i källkod

物流对账列表字段缺少、转换贸易订单返回的订单详情数据、备注提交时取值错误

xucaiqin 2 år sedan
förälder
incheckning
51e9be6a91
15 ändrade filer med 255 tillägg och 66 borttagningar
  1. 3 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageRes.java
  2. 9 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerLogisticsController.java
  3. 9 3
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerTradeController.java
  4. 24 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerCarrierDto.java
  5. 1 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerTradeDto.java
  6. 52 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/OrderDto.java
  7. 3 4
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerConfirmReq.java
  8. 3 4
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerSuccessReq.java
  9. 8 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerLogisticsDetailVo.java
  10. 11 3
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerTradeDetailVo.java
  11. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/AbsLedger.java
  12. 21 4
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java
  13. 108 44
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java
  14. 1 0
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerLogisticsMapper.xml
  15. 1 0
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerTradeMapper.xml

+ 3 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageRes.java

@@ -1,6 +1,7 @@
 package com.sckw.core.model.page;
 
 import com.github.pagehelper.PageInfo;
+import com.sckw.core.utils.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -51,7 +52,7 @@ public class PageRes<T> {
         this.pageSize = pageInfo.getPageSize();
         this.size = pageInfo.getTotal();
         this.pages = pageInfo.getPages();
-        this.list = pageInfo.getList();
+        this.list = CollectionUtils.isEmpty(pageInfo.getList()) ? new ArrayList<>() : pageInfo.getList();
     }
 
     public PageRes(PageInfo<T> pageInfo, List<T> list) {
@@ -73,6 +74,7 @@ public class PageRes<T> {
 
     /**
      * 构建返回数据
+     *
      * @param pagInfo pageHelper的分页对象
      * @param list    实际返回的数据集
      * @return

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

@@ -1,8 +1,10 @@
 package com.sckw.payment.controller;
 
 import com.sckw.core.model.page.PageRes;
+import com.sckw.core.model.vo.TableTop;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.ExcelUtil;
+import com.sckw.payment.model.constant.LedgerEnum;
 import com.sckw.payment.model.constant.LogisticsUnitType;
 import com.sckw.payment.model.dto.ILedger;
 import com.sckw.payment.model.vo.req.*;
@@ -17,6 +19,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -141,7 +144,12 @@ public class KwpLedgerLogisticsController {
     public HttpResult shipperCount(@RequestBody @Valid LogisticsReq logisticsReq) {
         logisticsReq.setUnitType(LogisticsUnitType.CARRIER);
         logisticsReq.setUnitTypeTwo(LogisticsUnitType.SHIPPER);
-        return HttpResult.ok(kwpLedgerLogisticsService.orderCount(logisticsReq));
+        List<TableTop> tableTops = kwpLedgerLogisticsService.orderCount(logisticsReq);
+        List<Integer> re = new ArrayList<>() {{
+            add(LedgerEnum.SAVE.getStatus());
+            add(LedgerEnum.REVOCATION.getStatus());
+        }};
+        return HttpResult.ok(tableTops.stream().filter(a -> !re.contains(a.getValue())).collect(Collectors.toList()));
     }
 
     /**

+ 9 - 3
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerTradeController.java

@@ -1,14 +1,15 @@
 package com.sckw.payment.controller;
 
 import com.sckw.core.model.page.PageRes;
+import com.sckw.core.model.vo.TableTop;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.ExcelUtil;
+import com.sckw.payment.model.constant.LedgerEnum;
 import com.sckw.payment.model.constant.TradeUnitType;
 import com.sckw.payment.model.dto.ILedger;
 import com.sckw.payment.model.vo.req.*;
 import com.sckw.payment.model.vo.res.LedgerTradeVo;
 import com.sckw.payment.service.KwpLedgerTradeService;
-import io.seata.spring.annotation.GlobalTransactional;
 import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
@@ -18,6 +19,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -154,7 +156,12 @@ public class KwpLedgerTradeController {
     public HttpResult purchaseCount(@RequestBody @Valid TradeReq tradeReq) {
         tradeReq.setUnitType(TradeUnitType.SELL);
         tradeReq.setUnitTypeTwo(TradeUnitType.PURCHASE);
-        return HttpResult.ok(kwpLedgerTradeService.orderCount(tradeReq));
+        List<TableTop> tableTops = kwpLedgerTradeService.orderCount(tradeReq);
+        List<Integer> re = new ArrayList<>() {{
+            add(LedgerEnum.SAVE.getStatus());
+            add(LedgerEnum.REVOCATION.getStatus());
+        }};
+        return HttpResult.ok(tableTops.stream().filter(a -> !re.contains(a.getValue())).collect(Collectors.toList()));
     }
 
     /**
@@ -222,7 +229,6 @@ public class KwpLedgerTradeController {
      * @return
      */
     @PostMapping("success")
-    @GlobalTransactional(name = "default_tx_group", rollbackFor = Exception.class)
     public HttpResult orderSuccess(@RequestBody @Valid LedgerSuccessReq ledgerReq) {
         return HttpResult.ok(kwpLedgerTradeService.orderSuccess(ledgerReq));
     }

+ 24 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerCarrierDto.java

@@ -87,7 +87,15 @@ public class LedgerCarrierDto implements ILedger {
      * 已收款/元
      */
     private BigDecimal actualPrice;
+    /**
+     * 对账审核人电话
+     */
+    private String auditPhone;
 
+    /**
+     * 对账审核人名称
+     */
+    private String auditUser;
     /**
      * 对账清单凭证
      */
@@ -161,6 +169,22 @@ public class LedgerCarrierDto implements ILedger {
         this.entId = entId;
     }
 
+    public String getAuditPhone() {
+        return auditPhone;
+    }
+
+    public void setAuditPhone(String auditPhone) {
+        this.auditPhone = auditPhone;
+    }
+
+    public String getAuditUser() {
+        return auditUser;
+    }
+
+    public void setAuditUser(String auditUser) {
+        this.auditUser = auditUser;
+    }
+
     public Long getCheckEntId() {
         return checkEntId;
     }

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

@@ -20,6 +20,7 @@ public class LedgerTradeDto implements ILedger {
      * 主键
      */
     private Long id;
+    private Long purchaseEntId;
     /**
      * 贸易对账单编号
      */

+ 52 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/OrderDto.java

@@ -0,0 +1,52 @@
+package com.sckw.payment.model.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+@Data
+public class OrderDto {
+    private Long id;
+    private Long entId;
+    private String trading;
+    private String tradingLabel;
+    private Long torderId;
+    private String tOrderNo;
+    private String contractNo;
+    private Long goodsId;
+    private String remark;
+    private String source;
+    private String sourceLabel;
+    private String consignmentStatus;
+    private String unloadDetailAddressInfo;
+    private BigDecimal price;
+    private String contractName;
+    private LocalDate startTime;
+    private LocalDate endTime;
+    private Long procureEntId;
+    private String goodsName;
+    private String unloadName;
+    private BigDecimal unitPrice;
+    private BigDecimal amount;
+    private Long createBy;
+    private String createByName;
+    private String pickupTypeLabel;
+    private String contractSigningWay;
+    private BigDecimal actualAmount;
+    private String deliveryType;
+    private String deliveryTypeLabel;
+    private Long supplyEntId;
+    private String pickupType;
+    private String statusLabel;
+    private String goodsSpec;
+    private String loadName;
+    private String supplyFirmName;
+    private String createTime;
+    private String procureFirmName;
+    private String loadDetailAddressInfo;
+    private Long contractId;
+    private BigDecimal entrustAmount;
+    private String projectName;
+    private Integer status;
+}

+ 3 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerConfirmReq.java

@@ -1,7 +1,6 @@
 package com.sckw.payment.model.vo.req;
 
 import com.sckw.core.model.base.IdsList;
-import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Getter;
@@ -21,15 +20,15 @@ public class LedgerConfirmReq implements IdsList {
     /**
      * 对账审核人
      */
-    @NotBlank(message = "对账审核人不能为空")
+//    @NotBlank(message = "对账审核人不能为空")
     @Size(max = 25, message = "对账审核人不能超过25个字符")
     private String auditUser;
     /**
      * 对账审核人联系方式
      */
-    @NotBlank(message = "对账审核人联系方式为空")
+//    @NotBlank(message = "对账审核人联系方式为空")
     @Size(max = 11, message = "对账审核人联系方式不能超过11个字符")
     private String auditPhone;
-    @NotBlank(message = "对账清单凭证不能为空")
+//    @NotBlank(message = "对账清单凭证不能为空")
     private String url;
 }

+ 3 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerSuccessReq.java

@@ -2,7 +2,6 @@ package com.sckw.payment.model.vo.req;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.sckw.core.model.base.IdsList;
-import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Getter;
@@ -21,15 +20,15 @@ import java.time.LocalDate;
 public class LedgerSuccessReq implements IdsList {
     @NotNull(message = "物流对账单id不能为空")
     private String id;
-    @NotBlank(message = "财务联系人不能为空")
+//    @NotBlank(message = "财务联系人不能为空")
     @Size(max = 25, message = "财务联系人不能超过25个字符")
     private String successUser;
 
-    @NotNull(message = "预计收款日期不能为空")
+//    @NotNull(message = "预计收款日期不能为空")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate receiptTime;
 
-    @NotBlank(message = "财务联系电话不能为空")
+//    @NotBlank(message = "财务联系电话不能为空")
     @Size(max = 11, message = "财务联系电话不能超过11个字符")
     private String successPhone;
 

+ 8 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerLogisticsDetailVo.java

@@ -7,6 +7,7 @@ import lombok.Setter;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -20,18 +21,24 @@ import java.util.List;
 public class LedgerLogisticsDetailVo {
     private Long id;
     private String lLedgerNo;
+    private Long checkEntId;
     private String name;
     private String firmName;
     private String trading;
+    private String tradingLabel;
+
     private Integer taxRate;
+    private String taxRateLabel;
+
     private BigDecimal totalPrice;
+    private BigDecimal settlePrice;
     private BigDecimal actualPrice;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime startTime;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime endTime;
 
-    private List<LogisticsOrderVO> orderList;
+    private List<LogisticsOrderVO> orderList = new ArrayList<>();
     private String remark;
 
 

+ 11 - 3
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerTradeDetailVo.java

@@ -1,7 +1,7 @@
 package com.sckw.payment.model.vo.res;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.sckw.order.api.model.OrderDetailRes;
+import com.sckw.payment.model.dto.OrderDto;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -19,19 +19,27 @@ import java.util.List;
 @Setter
 public class LedgerTradeDetailVo {
     private Long id;
+    //客户企业id
+    private Long purchaseEntId;
+    //客户企业名称
+    private String firmName;
     private String tLedgerNo;
     private String name;
-    private String firmName;
+
     private String trading;
+    private String tradingLabel;
+
     private Integer taxRate;
+    private String taxRateLabel;
     private BigDecimal totalPrice;
+    private BigDecimal settlePrice;
     private BigDecimal actualPrice;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime startTime;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime endTime;
 
-    private List<OrderDetailRes> orderList;
+    private List<OrderDto> orderList;
     private String remark;
 
 }

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

@@ -74,7 +74,7 @@ public abstract class AbsLedger {
      * @param status 订单状态
      */
     public void deleteCheck(Integer status) {
-        List<Integer> objects = Lists.newArrayList(LedgerEnum.BACK.getStatus(), LedgerEnum.REVOCATION.getStatus());
+        List<Integer> objects = Lists.newArrayList(LedgerEnum.SAVE.getStatus(), LedgerEnum.BACK.getStatus(), LedgerEnum.REVOCATION.getStatus());
         if (Objects.nonNull(status) && !objects.contains(status)) {
             throw new BusinessException("只有【已保存】、【已撤回】和【已退回】的单据才支持删除!");
         }

+ 21 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java

@@ -197,7 +197,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         kwpLedgerLogistics.setOrderCount(logisticsSendReq.getIdList().size());
         kwpLedgerLogistics.setUrl(Global.EMPTY_STRING);
         kwpLedgerLogistics.setGenerateTime(logisticsSendReq.getGenerateTime());
-        kwpLedgerLogistics.setRemark(Global.EMPTY_STRING);
+        kwpLedgerLogistics.setRemark(logisticsSendReq.getRemark());
         kwpLedgerLogistics.setStatus(logisticsSendReq.getStatus());
         kwpLedgerLogistics.setDelFlag(Global.UN_DELETED);
         //id为空,新增对账单
@@ -424,7 +424,12 @@ public class KwpLedgerLogisticsService extends AbsLedger {
 
         successCheck(kwpLedgerLogistics.getStatus());
         //更新对账单状态
-        kwpLedgerLogistics.setReceiptTime(LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN));
+        LocalDateTime receiptTime = null;
+
+        if (Objects.nonNull(ledgerReq.getReceiptTime())) {
+            receiptTime = LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN);
+            kwpLedgerLogistics.setReceiptTime(receiptTime);
+        }
         kwpLedgerLogistics.setStatus(LedgerEnum.SUCCESS.getStatus());
         kwpLedgerLogistics.setUpdateBy(LoginUserHolder.getUserId());
         kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
@@ -443,7 +448,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         kwpSettlementLogistics.setAuditPhone(kwpLedgerLogistics.getAuditPhone());
         kwpSettlementLogistics.setSuccessUser(ledgerReq.getSuccessUser());
         kwpSettlementLogistics.setSuccessPhone(ledgerReq.getSuccessPhone());
-        kwpSettlementLogistics.setReceiptTime(LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN));
+        kwpSettlementLogistics.setReceiptTime(receiptTime);
         kwpSettlementLogistics.setStatus(SettlementEnum.WAITING_PAYMENT.getStatus());//1-待结算
         kwpSettlementLogistics.setCreateBy(LoginUserHolder.getUserId());
         kwpSettlementLogistics.setCreateTime(LocalDateTime.now());
@@ -542,13 +547,21 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         /*获取物流对账单关联的物流订单*/
         List<KwpLedgerLogisticsOrder> kwpLedgerLogisticsOrders = logisticsOrderService.queryList(ledgerLogisticsDto.getId());
         LedgerLogisticsDetailVo ledgerLogisticsDetailVo = new LedgerLogisticsDetailVo();
+        SysDictResDto trading = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TRADE_TYPE.getType(), ledgerLogisticsDto.getTrading());
+        SysDictResDto taxRate = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TRADE_TYPE.getType(), String.valueOf(ledgerLogisticsDto.getTaxRate()));
+
         ledgerLogisticsDetailVo.setId(ledgerLogisticsDto.getId());
+        ledgerLogisticsDetailVo.setCheckEntId(ledgerLogisticsDto.getCheckEntId());
         ledgerLogisticsDetailVo.setLLedgerNo(ledgerLogisticsDto.getLLedgerNo());
         ledgerLogisticsDetailVo.setName(ledgerLogisticsDto.getName());
         ledgerLogisticsDetailVo.setFirmName(ledgerLogisticsDto.getFirmName());
         ledgerLogisticsDetailVo.setTrading(ledgerLogisticsDto.getTrading());
+        ledgerLogisticsDetailVo.setTradingLabel(Objects.nonNull(trading) ? trading.getLabel() : "");
+
         ledgerLogisticsDetailVo.setTaxRate(ledgerLogisticsDto.getTaxRate());
+        ledgerLogisticsDetailVo.setTaxRateLabel(Objects.nonNull(taxRate) ? taxRate.getLabel() : "");
         ledgerLogisticsDetailVo.setTotalPrice(ledgerLogisticsDto.getTotalPrice());
+        ledgerLogisticsDetailVo.setSettlePrice(ledgerLogisticsDto.getSettlePrice());
         ledgerLogisticsDetailVo.setActualPrice(ledgerLogisticsDto.getActualPrice());
         ledgerLogisticsDetailVo.setStartTime(ledgerLogisticsDto.getStartTime());
         ledgerLogisticsDetailVo.setEndTime(ledgerLogisticsDto.getEndTime());
@@ -556,7 +569,11 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         /*查询物流订单详情*/
         if (!CollectionUtils.isEmpty(kwpLedgerLogisticsOrders)) {
             List<LogisticsOrderVO> acceptCarriageOrderList = transportDubboService.getAcceptCarriageOrderList(kwpLedgerLogisticsOrders.stream().map(a -> Long.toString(a.getLOrderId())).collect(Collectors.toList()));
-            ledgerLogisticsDetailVo.setOrderList(acceptCarriageOrderList);
+            if (CollectionUtils.isEmpty(acceptCarriageOrderList)) {
+                ledgerLogisticsDetailVo.setOrderList(new ArrayList<>());
+            } else {
+                ledgerLogisticsDetailVo.setOrderList(acceptCarriageOrderList);
+            }
         }
         return ledgerLogisticsDetailVo;
     }

+ 108 - 44
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java

@@ -1,6 +1,6 @@
 package com.sckw.payment.service;
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.sckw.core.common.enums.NumberConstant;
@@ -10,29 +10,23 @@ import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.page.PageRes;
 import com.sckw.core.model.vo.TableTop;
-import com.sckw.core.utils.CollectionUtils;
-import com.sckw.core.utils.IdWorker;
-import com.sckw.core.utils.OrderGenerateUtils;
-import com.sckw.core.utils.StringTimeUtil;
+import com.sckw.core.utils.*;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
-import com.sckw.order.api.model.OrderDetailRes;
-import com.sckw.order.api.model.UpdateOrderStatusParam;
+import com.sckw.order.api.model.*;
 import com.sckw.payment.dao.KwpLedgerTradeMapper;
 import com.sckw.payment.model.*;
 import com.sckw.payment.model.constant.LedgerEnum;
 import com.sckw.payment.model.constant.LedgerTrackEnum;
 import com.sckw.payment.model.constant.SettlementEnum;
 import com.sckw.payment.model.constant.TradeUnitType;
-import com.sckw.payment.model.dto.ILedger;
-import com.sckw.payment.model.dto.LedgerPurchaseDto;
-import com.sckw.payment.model.dto.LedgerSellDto;
-import com.sckw.payment.model.dto.LedgerTradeDto;
+import com.sckw.payment.model.dto.*;
 import com.sckw.payment.model.vo.req.*;
 import com.sckw.payment.model.vo.res.LedgerTradeDetailVo;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
+import io.seata.spring.annotation.GlobalTransactional;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -186,7 +180,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         kwpLedgerTrade.setReceiptTime(null);
         kwpLedgerTrade.setOrderCount(tradeSendReq.getIdList().size());
         kwpLedgerTrade.setUrl(Global.EMPTY_STRING);
-        kwpLedgerTrade.setRemark(Global.EMPTY_STRING);
+        kwpLedgerTrade.setRemark(tradeSendReq.getRemark());
         kwpLedgerTrade.setStatus(tradeSendReq.getStatus());
 
         kwpLedgerTrade.setDelFlag(Global.UN_DELETED);
@@ -208,7 +202,7 @@ public class KwpLedgerTradeService extends AbsLedger {
 
         /*保存贸易订单关联数据*/
         List<Long> ids = tradeSendReq.getIdList();
-        //todo-xcq 校验当前订单是否已存在绑定的对账单
+        //校验当前订单是否已存在绑定的对账单
         tradeOrderService.check(ids);
         List<OrderDetailRes> resList = new ArrayList<>();
         for (Long id : ids) {
@@ -218,6 +212,16 @@ public class KwpLedgerTradeService extends AbsLedger {
             }
             resList.add(orderDetailById);
         }
+        for (Long id : ids) {
+            //dubbo 更新关联订单状态为已绑定
+            UpdateAssociateStatementParam updateAssociateStatementParam = new UpdateAssociateStatementParam();
+            updateAssociateStatementParam.setTOrderId(id);
+            updateAssociateStatementParam.setAssociateStatement(1);
+            updateAssociateStatementParam.setUpdateBy(LoginUserHolder.getUserId());
+            updateAssociateStatementParam.setUpdateByName(LoginUserHolder.getUserName());
+            tradeOrderInfoService.updateAssociateStatement(updateAssociateStatementParam);
+        }
+
         List<KwpLedgerTradeOrder> collect = resList.stream().map(a -> {
             KwpLedgerTradeOrder kwpLedgerTradeOrder = new KwpLedgerTradeOrder();
             kwpLedgerTradeOrder.setId(new IdWorker(NumberConstant.ONE).nextId());
@@ -235,7 +239,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         }).collect(Collectors.toList());
         tradeOrderService.saveList(collect);
         /*保存企业单位相关信息*/
-        //todo-xcq dubbo拿取采购客户单位的信息
+        // dubbo拿取采购客户单位的信息
         Long purchaseEntId = Long.parseLong(tradeSendReq.getPurchaseEntId());
         Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(Collections.singletonList(purchaseEntId));
         EntCacheResDto entCacheResDto = entMap.get(purchaseEntId);
@@ -345,13 +349,29 @@ public class KwpLedgerTradeService extends AbsLedger {
      */
     @Transactional(rollbackFor = Exception.class)
     public String remove(Long id) {
+        log.info("删除贸易对账单:{}", id);
         KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(id);
         orderCheck(kwpLedgerTrade);
         deleteCheck(kwpLedgerTrade.getStatus());
+
+        List<KwpLedgerTradeOrder> kwpLedgerTradeOrders = tradeOrderService.queryList(id);
+        if (CollectionUtils.isEmpty(kwpLedgerTradeOrders)) {
+            throw new BusinessException("未找到关联订单!");
+        }
         kwpLedgerTrade.setDelFlag(Global.DELETED);
         kwpLedgerTrade.setUpdateBy(LoginUserHolder.getUserId());
         kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
         tradeMapper.updateById(kwpLedgerTrade);
+        //更新贸易订单状态为未绑定对账单
+        for (KwpLedgerTradeOrder kwpLedgerTradeOrder : kwpLedgerTradeOrders) {
+            UpdateAssociateStatementParam updateAssociateStatementParam = new UpdateAssociateStatementParam();
+            updateAssociateStatementParam.setTOrderId(kwpLedgerTradeOrder.getTOrderId());
+            updateAssociateStatementParam.setAssociateStatement(0);
+            updateAssociateStatementParam.setUpdateBy(LoginUserHolder.getUserId());
+            updateAssociateStatementParam.setUpdateByName(LoginUserHolder.getUserName());
+            tradeOrderInfoService.updateAssociateStatement(updateAssociateStatementParam);
+        }
+        //记录操作记录
         tradeTrackService.saveTrack(kwpLedgerTrade.getId(), Global.EMPTY_STRING, LedgerTrackEnum.DELETE);
         return "删除成功";
     }
@@ -364,6 +384,7 @@ public class KwpLedgerTradeService extends AbsLedger {
      */
     @Transactional(rollbackFor = Exception.class)
     public String backOrder(Long id) {
+        log.info("撤回贸易对账单:{}", id);
         KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(id);
         orderCheck(kwpLedgerTrade);
         revokeCheck(kwpLedgerTrade.getStatus());
@@ -397,6 +418,7 @@ public class KwpLedgerTradeService extends AbsLedger {
      */
     @Transactional(rollbackFor = Exception.class)
     public String doBack(LedgerReq ledgerReq) {
+        log.info("驳回贸易对账单:{}", JSONObject.toJSONString(ledgerReq));
         KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(ledgerReq.getIdLong());
         orderCheck(kwpLedgerTrade);
         backCheck(kwpLedgerTrade.getStatus());
@@ -416,6 +438,7 @@ public class KwpLedgerTradeService extends AbsLedger {
      */
     @Transactional(rollbackFor = Exception.class)
     public String confirmOrder(LedgerConfirmReq confirmReq) {
+        log.info("贸易对账单对账确认:{}", JSONObject.toJSONString(confirmReq));
         KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(confirmReq.getIdLong());
         orderCheck(kwpLedgerTrade);
         confirmCheck(kwpLedgerTrade.getStatus());
@@ -436,7 +459,9 @@ public class KwpLedgerTradeService extends AbsLedger {
      * @param ledgerReq 对账完成参数
      * @return
      */
+    @GlobalTransactional(name = "default_tx_group", rollbackFor = Exception.class)
     public String orderSuccess(LedgerSuccessReq ledgerReq) {
+        log.info("贸易对账单对账完成:{}", JSONObject.toJSONString(ledgerReq));
         Long id = ledgerReq.getIdLong();
         //校验对账单状态
         KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(id);
@@ -448,7 +473,11 @@ public class KwpLedgerTradeService extends AbsLedger {
             throw new BusinessException("未找到关联的贸易订单");
         }
         //更新对账单
-        kwpLedgerTrade.setReceiptTime(LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN));
+        LocalDateTime receiptTime = null;
+        if (Objects.nonNull(ledgerReq.getReceiptTime())) {
+            receiptTime = LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN);
+            kwpLedgerTrade.setReceiptTime(receiptTime);
+        }
         kwpLedgerTrade.setStatus(LedgerEnum.SUCCESS.getStatus());
         kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
         tradeMapper.updateById(kwpLedgerTrade);
@@ -466,7 +495,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         kwpSettlementTrade.setAuditPhone(kwpLedgerTrade.getAuditPhone());
         kwpSettlementTrade.setSuccessUser(ledgerReq.getSuccessUser());
         kwpSettlementTrade.setSuccessPhone(ledgerReq.getSuccessPhone());
-        kwpSettlementTrade.setReceiptTime(LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN));
+        kwpSettlementTrade.setReceiptTime(receiptTime);
         kwpSettlementTrade.setStatus(SettlementEnum.WAITING_PAYMENT.getStatus());//1-待结算
         kwpSettlementTrade.setCreateBy(LoginUserHolder.getUserId());
         kwpSettlementTrade.setCreateTime(LocalDateTime.now());
@@ -554,31 +583,87 @@ public class KwpLedgerTradeService extends AbsLedger {
         orderCheck(ledgerTradeDto);
         updateCheck(ledgerTradeDto.getStatus());
         //查询对账单关联的订单
+        return getDetail(ledgerTradeDto);
+    }
+
+    private LedgerTradeDetailVo getDetail(LedgerTradeDto ledgerTradeDto) {
         List<KwpLedgerTradeOrder> kwpLedgerTradeOrders = tradeOrderService.queryList(ledgerTradeDto.getId());
         LedgerTradeDetailVo ledgerTradeDetailVo = new LedgerTradeDetailVo();
         ledgerTradeDetailVo.setId(ledgerTradeDto.getId());
+        ledgerTradeDetailVo.setPurchaseEntId(ledgerTradeDto.getPurchaseEntId());
         ledgerTradeDetailVo.setTLedgerNo(ledgerTradeDto.getTLedgerNo());
         ledgerTradeDetailVo.setName(ledgerTradeDto.getName());
         ledgerTradeDetailVo.setFirmName(ledgerTradeDto.getFirmName());
+        SysDictResDto trading = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TRADE_TYPE.getType(), ledgerTradeDto.getTrading());
         ledgerTradeDetailVo.setTrading(ledgerTradeDto.getTrading());
+        ledgerTradeDetailVo.setTradingLabel(Objects.nonNull(trading) ? trading.getLabel() : "");//
+        SysDictResDto taxRate = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TAX_RATE.getType(), String.valueOf(ledgerTradeDto.getTaxRate()));
         ledgerTradeDetailVo.setTaxRate(ledgerTradeDto.getTaxRate());
+        ledgerTradeDetailVo.setTaxRateLabel(Objects.nonNull(taxRate) ? taxRate.getLabel() : "");//
         ledgerTradeDetailVo.setTotalPrice(ledgerTradeDto.getTotalPrice());
+        ledgerTradeDetailVo.setSettlePrice(ledgerTradeDto.getSettlePrice());
         ledgerTradeDetailVo.setActualPrice(ledgerTradeDto.getActualPrice());
         ledgerTradeDetailVo.setStartTime(ledgerTradeDto.getStartTime());
         ledgerTradeDetailVo.setEndTime(ledgerTradeDto.getEndTime());
         ledgerTradeDetailVo.setRemark(ledgerTradeDto.getRemark());
         List<Long> collect = kwpLedgerTradeOrders.stream().map(KwpLedgerTradeOrder::getTOrderId).toList();
-        List<OrderDetailRes> detailRes = new ArrayList<>();
+        List<OrderDto> detailRes = new ArrayList<>();
         OrderDetailRes orderDetailById;
         //查询贸易订单详情
         for (Long aLong : collect) {
             orderDetailById = tradeOrderInfoService.getOrderDetailById(aLong);
-            detailRes.add(orderDetailById);
+            detailRes.add(changeOrder(orderDetailById));
         }
         ledgerTradeDetailVo.setOrderList(detailRes);
         return ledgerTradeDetailVo;
     }
 
+    private OrderDto changeOrder(OrderDetailRes orderDetailRes) {
+        OrderDto orderDto = new OrderDto();
+        BeanUtils.copyProperties(orderDetailRes, orderDto);
+        List<UnitInfoDetailRes> unitInfo = orderDetailRes.getUnitInfo();
+        if (!CollectionUtils.isEmpty(unitInfo)) {
+            for (UnitInfoDetailRes unitInfoDetailRes : unitInfo) {
+                if (StringUtils.equals(unitInfoDetailRes.getUnitType(), "1")) {
+                    orderDto.setSupplyEntId(unitInfoDetailRes.getEntId());
+                    orderDto.setSupplyFirmName(unitInfoDetailRes.getFirmName());
+                }
+                if (StringUtils.equals(unitInfoDetailRes.getUnitType(), "2")) {
+                    orderDto.setProcureEntId(unitInfoDetailRes.getEntId());
+                    orderDto.setProcureFirmName(unitInfoDetailRes.getFirmName());
+                }
+            }
+        }
+        ContractInfo contractInfo = orderDetailRes.getContractInfo();
+        if (Objects.nonNull(contractInfo)) {
+            orderDto.setContractId(contractInfo.getContractId());
+            orderDto.setContractNo(contractInfo.getContractNo());
+            orderDto.setContractName(contractInfo.getContractName());
+            orderDto.setContractSigningWay(contractInfo.getContractSigningWay());
+        }
+        GoodsInfoDetailRes goodsInfo = orderDetailRes.getGoodsInfo();
+        if (Objects.nonNull(goodsInfo)) {
+            orderDto.setGoodsId(goodsInfo.getGoodsId());
+            orderDto.setGoodsSpec(goodsInfo.getSpec());
+            orderDto.setGoodsName(goodsInfo.getName());
+        }
+        List<AddressInfoDetail> addressInfo = orderDetailRes.getAddressInfo();
+        if (!CollectionUtils.isEmpty(addressInfo)) {
+            for (AddressInfoDetail addressInfoDetail : addressInfo) {
+                if (StringUtils.equals(addressInfoDetail.getAddressType(), "1")) {
+                    orderDto.setLoadName(addressInfoDetail.getName());
+                    orderDto.setLoadDetailAddressInfo(addressInfoDetail.getDetailAddress());
+                }
+                if (StringUtils.equals(addressInfoDetail.getAddressType(), "2")) {
+                    orderDto.setUnloadName(addressInfoDetail.getName());
+                    orderDto.setUnloadDetailAddressInfo(addressInfoDetail.getDetailAddress());
+                }
+            }
+        }
+        orderDto.setTorderId(orderDetailRes.getId());
+        return orderDto;
+    }
+
     /**
      * 查询对账单详情
      *
@@ -590,42 +675,21 @@ public class KwpLedgerTradeService extends AbsLedger {
         LedgerTradeDto ledgerTradeDto = tradeMapper.selectId(id, unitType);
         orderCheck(ledgerTradeDto);
         //查询对账单关联的贸易订单
-        List<KwpLedgerTradeOrder> kwpLedgerTradeOrders = tradeOrderService.queryList(ledgerTradeDto.getId());
-        LedgerTradeDetailVo ledgerTradeDetailVo = new LedgerTradeDetailVo();
-        ledgerTradeDetailVo.setId(ledgerTradeDto.getId());
-        ledgerTradeDetailVo.setTLedgerNo(ledgerTradeDto.getTLedgerNo());
-        ledgerTradeDetailVo.setName(ledgerTradeDto.getName());
-        ledgerTradeDetailVo.setFirmName(ledgerTradeDto.getFirmName());
-        ledgerTradeDetailVo.setTrading(ledgerTradeDto.getTrading());
-        ledgerTradeDetailVo.setTaxRate(ledgerTradeDto.getTaxRate());
-        ledgerTradeDetailVo.setTotalPrice(ledgerTradeDto.getTotalPrice());
-        ledgerTradeDetailVo.setActualPrice(ledgerTradeDto.getActualPrice());
-        ledgerTradeDetailVo.setStartTime(ledgerTradeDto.getStartTime());
-        ledgerTradeDetailVo.setEndTime(ledgerTradeDto.getEndTime());
-        ledgerTradeDetailVo.setRemark(ledgerTradeDto.getRemark());
-        List<Long> collect = kwpLedgerTradeOrders.stream().map(KwpLedgerTradeOrder::getTOrderId).toList();
-        List<OrderDetailRes> detailRes = new ArrayList<>();
-        OrderDetailRes orderDetailById;
-        for (Long aLong : collect) {
-            orderDetailById = tradeOrderInfoService.getOrderDetailById(aLong);
-            detailRes.add(orderDetailById);
-        }
-        ledgerTradeDetailVo.setOrderList(detailRes);
-        return ledgerTradeDetailVo;
+        return getDetail(ledgerTradeDto);
     }
 
-    public PageRes<OrderDetailRes> orderList(LedgerListReq ledgerListReq) {
+    public PageRes<OrderDto> orderList(LedgerListReq ledgerListReq) {
         PageHelper.startPage(ledgerListReq.getPage(), ledgerListReq.getPageSize());
         List<KwpLedgerTradeOrder> kwpLedgerLogisticsOrders = tradeOrderService.queryList(ledgerListReq.getIdLong());
         if (CollectionUtils.isEmpty(kwpLedgerLogisticsOrders)) {
             return new PageRes<>();
         }
         PageInfo<KwpLedgerTradeOrder> pageInfo = new PageInfo<>(kwpLedgerLogisticsOrders);
-        List<OrderDetailRes> list = new ArrayList<>();
+        List<OrderDto> detailRes = new ArrayList<>();
         for (KwpLedgerTradeOrder kwpLedgerLogisticsOrder : kwpLedgerLogisticsOrders) {
             OrderDetailRes orderDetailById = tradeOrderInfoService.getOrderDetailById(kwpLedgerLogisticsOrder.getTOrderId());
-            list.add(orderDetailById);
+            detailRes.add(changeOrder(orderDetailById));
         }
-        return PageRes.build(pageInfo, list);
+        return PageRes.build(pageInfo, detailRes);
     }
 }

+ 1 - 0
sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerLogisticsMapper.xml

@@ -77,6 +77,7 @@
         kll.receipt_time  receiptTime,
         kll.remark,
         kll.status,
+        kllu.top_ent_id   checkEntId,
         kllu.contacts,
         kllu.phone,
         kllu.firm_name    firmName,

+ 1 - 0
sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerTradeMapper.xml

@@ -319,6 +319,7 @@
                klt.remark,
                klt.status,
                kltu.contacts,
+               kltu.top_ent_id purchaseEntId,
                kltu.phone,
                kltu.firm_name    firmName,
                klt.order_count   orderCount