diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/ClearingBillDetailMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/ClearingBillDetailMapper.java index 1f70c280b..90ccf15c9 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/ClearingBillDetailMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/ClearingBillDetailMapper.java @@ -57,4 +57,7 @@ public interface ClearingBillDetailMapper { int batchInsert(@Param("list") List list); ClearingBillDetail selectClearingBillCode(String orderCode); + + // 根据清分编号删除 + int deleteByClearingBillCode(@Param("clearingBillCode") String clearingBillCode); } \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/ClearingBillInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/ClearingBillInfoMapper.java index 70e29c367..362ed1eef 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/ClearingBillInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/ClearingBillInfoMapper.java @@ -66,7 +66,7 @@ public interface ClearingBillInfoMapper { int batchInsert(@Param("list") List list); - List selectByMerchantId(@Param("merchantId") String merchantId, @Param("billStatus") String billStatus); + List selectByMerchantId(@Param("merchantId") String merchantId, @Param("billStatus") String billStatus, @Param("tradeDate") String tradeDate); void updateStatus(@Param("clearingBillIds") List clearingBillIds, @Param("billStatus") String billStatus); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillDetailService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillDetailService.java index bbb06e61a..c54551540 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillDetailService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillDetailService.java @@ -7,6 +7,8 @@ public interface ClearingBillDetailService{ int deleteByPrimaryKey(Integer id); + int deleteByClearingBillCode(String clearingBillCode); + int insert(ClearingBillDetail record); int insertOrUpdate(ClearingBillDetail record); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillInfoService.java index bb808777d..e5b2583c9 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillInfoService.java @@ -42,5 +42,7 @@ public interface ClearingBillInfoService { int updateBatchSelective(List list); int batchInsert(List list); + + ClearingBillInfo selectByMerchantIdAndTradeDate(String merchantId, String tradeDate); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillDetailServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillDetailServiceImpl.java index 0e043793c..efa3a509c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillDetailServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillDetailServiceImpl.java @@ -18,6 +18,11 @@ public class ClearingBillDetailServiceImpl implements ClearingBillDetailService{ return clearingBillDetailMapper.deleteByPrimaryKey(id); } + @Override + public int deleteByClearingBillCode(String clearingBillCode) { + return clearingBillDetailMapper.deleteByClearingBillCode(clearingBillCode); + } + @Override public int insert(ClearingBillDetail record) { return clearingBillDetailMapper.insert(record); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillInfoServiceImpl.java index 4f8e0ef19..2ccdddb1e 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillInfoServiceImpl.java @@ -1,5 +1,6 @@ package com.jsowell.pile.service.impl; +import com.jsowell.common.enums.DelFlagEnum; import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.ClearingBillInfo; import com.jsowell.pile.dto.GetClearingBillDTO; @@ -11,6 +12,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; @Service public class ClearingBillInfoServiceImpl implements ClearingBillInfoService { @@ -50,7 +53,7 @@ public class ClearingBillInfoServiceImpl implements ClearingBillInfoService { @Override public List selectByMerchantId(String merchantId, String billStatus) { - return clearingBillInfoMapper.selectByMerchantId(merchantId, billStatus); + return clearingBillInfoMapper.selectByMerchantId(merchantId, billStatus, null); } @Override @@ -96,5 +99,26 @@ public class ClearingBillInfoServiceImpl implements ClearingBillInfoService { public int batchInsert(List list) { return clearingBillInfoMapper.batchInsert(list); } + + @Override + public ClearingBillInfo selectByMerchantIdAndTradeDate(String merchantId, String tradeDate) { + ClearingBillInfo result = null; + List list = clearingBillInfoMapper.selectByMerchantId(merchantId, null, tradeDate); + if (CollectionUtils.isNotEmpty(list)) { + result = list.get(0); + if (list.size() > 1) { + // 原来存在多条清分账单,逻辑删除掉 + ClearingBillInfo finalResult = result; + List collect = list.stream() + .filter(x -> !Objects.equals(x.getId(), finalResult.getId())) + .collect(Collectors.toList()); + for (ClearingBillInfo clearingBillInfo : collect) { + clearingBillInfo.setDelFlag(DelFlagEnum.DELETE.getValue()); + } + clearingBillInfoMapper.updateBatch(collect); + } + } + return result; + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index ae61d0680..1e8ffbd5d 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -160,6 +160,9 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { @Autowired private MemberAdapayRecordService memberAdapayRecordService; + @Autowired + private ClearingBillInfoService clearingBillInfoService; + /** * 条件查询订单基本信息 * @@ -1304,8 +1307,6 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { */ @Override public void orderSplittingOperations(AdapayMemberAccount adapayMemberAccount, List stationReportList) { - logger.info("运营商:{}, 交易日期:{}, 进行分账处理start", adapayMemberAccount, JSON.toJSONString(stationReportList)); - // 运营商有没有开通结算账户 if (adapayMemberAccount == null) { logger.error("订单分账逻辑error-运营商有没有开通结算账户"); @@ -1316,6 +1317,8 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { logger.error("订单分账逻辑error-stationReportList为空"); return; } + String tradeDate = stationReportList.get(0).getTradeDate(); + logger.info("运营商:{}, 交易日期:{}, 进行分账处理start", adapayMemberAccount, JSON.toJSONString(stationReportList)); String merchantId = adapayMemberAccount.getMerchantId(); String appId = pileMerchantInfoService.queryAppIdByMerchantId(merchantId); @@ -1403,13 +1406,18 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { clearingBillInfo.setCreateTime(DateUtils.getNowDate()); clearingBillInfo.setDelFlag(DelFlagEnum.NORMAL.getValue()); clearingBillInfo.setBillStatus("2"); - clearingBillInfo.setTradeDate(stationReportList.get(0).getTradeDate()); + clearingBillInfo.setTradeDate(tradeDate); + // 根据运营商id和结算日期查询清分账单 + ClearingBillInfo queryBillInfo = clearingBillInfoService.selectByMerchantIdAndTradeDate(merchantId, tradeDate); + if (queryBillInfo != null) { + clearingBillInfo.setId(queryBillInfo.getId()); + } // 保存清分账单 ClearingBillTransactionDTO dto = new ClearingBillTransactionDTO(); dto.setClearingBillInfo(clearingBillInfo); dto.setBillDetailList(billDetailList); - transactionService.createClearingBill(dto); + transactionService.saveClearingBill(dto); } @Override diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/transaction/service/TransactionService.java b/jsowell-pile/src/main/java/com/jsowell/pile/transaction/service/TransactionService.java index f26a0c8be..6faaf37ce 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/transaction/service/TransactionService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/transaction/service/TransactionService.java @@ -1,16 +1,11 @@ package com.jsowell.pile.transaction.service; import com.google.common.collect.Lists; -import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.util.DateUtils; +import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.PileBasicInfo; import com.jsowell.pile.domain.PileConnectorInfo; -import com.jsowell.pile.mapper.MemberBasicInfoMapper; -import com.jsowell.pile.mapper.MemberWalletInfoMapper; -import com.jsowell.pile.mapper.OrderBasicInfoMapper; -import com.jsowell.pile.mapper.PileBasicInfoMapper; -import com.jsowell.pile.mapper.PileBillingTemplateMapper; -import com.jsowell.pile.mapper.PileConnectorInfoMapper; +import com.jsowell.pile.mapper.*; import com.jsowell.pile.service.ClearingBillDetailService; import com.jsowell.pile.service.ClearingBillInfoService; import com.jsowell.pile.service.IOrderBasicInfoService; @@ -60,9 +55,6 @@ public class TransactionService { @Autowired private ClearingBillDetailService clearingBillDetailService; - @Autowired - private RedisCache redisCache; - /** * 批量新增充电桩和充电桩接口 * @param dto @@ -196,11 +188,20 @@ public class TransactionService { /** * 保存清分账单 */ - public void createClearingBill(ClearingBillTransactionDTO dto) { + public void saveClearingBill(ClearingBillTransactionDTO dto) { + String clearingBillCode = null; if (Objects.nonNull(dto.getClearingBillInfo())) { - clearingBillInfoService.insertSelective(dto.getClearingBillInfo()); + if (dto.getClearingBillInfo().getId() != null) { + // 如果id不为空,就给clearingBillCode赋值 + clearingBillCode = dto.getClearingBillInfo().getClearingBillCode(); + } + clearingBillInfoService.insertOrUpdateSelective(dto.getClearingBillInfo()); } if (CollectionUtils.isNotEmpty(dto.getBillDetailList())) { + if (StringUtils.isNotBlank(clearingBillCode)) { + // clearingBillCode不为空,就根据clearingBillCode删除后新增数据 + clearingBillDetailService.deleteByClearingBillCode(clearingBillCode); + } clearingBillDetailService.batchInsert(dto.getBillDetailList()); } } diff --git a/jsowell-pile/src/main/resources/mapper/pile/ClearingBillDetailMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/ClearingBillDetailMapper.xml index 42d7624ef..d4511fc0f 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/ClearingBillDetailMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/ClearingBillDetailMapper.xml @@ -303,4 +303,9 @@ where del_flag = '0' and order_code = #{orderCode,jdbcType=VARCHAR} + + + delete from clearing_bill_detail + where clearing_bill_code = #{clearingBillCode,jdbcType=VARCHAR} + \ No newline at end of file diff --git a/jsowell-pile/src/main/resources/mapper/pile/ClearingBillInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/ClearingBillInfoMapper.xml index 652189fff..744e62530 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/ClearingBillInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/ClearingBillInfoMapper.xml @@ -746,6 +746,10 @@ and bill_status = #{billStatus,jdbcType=VARCHAR} + + and trade_date = #{tradeDate,jdbcType=VARCHAR} + + order by create_time DESC