|
|
@@ -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);
|
|
|
}
|
|
|
}
|