提交 dd1f5b1e authored 作者: 艾庆国's avatar 艾庆国

Merge branch 'refs/heads/v17.5_order_child_sync_broker_20240617' into dev

......@@ -100,6 +100,7 @@ public enum SettlementOwnerEnum {
IMMEDIATE(1, "拉运完成结算"),
MONTH(2, "月结"),
DAILY(3, "日结"),
;
......
......@@ -40,6 +40,7 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
.set(SettlementOwner::getInvoiceFreight, item.getInvoiceFreight())
.set(SettlementOwner::getLoanFreight, item.getLoanFreight())
.set(SettlementOwner::getPrepayFreight, item.getPrepayFreight())
.set(SettlementOwner::getInvoiceServiceFee, item.getInvoiceServiceFee())
);
}
......@@ -175,7 +176,22 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
public Optional<SettlementOwner> selectUnlockOfSettlementPeriodMonth(String orderNo, LocalDateTime settlementPeriodTime, Integer invoiceType) {
return Optional.of(lQrWrapper()
.eq(SettlementOwner::getOrderNo, orderNo)
.eq(SettlementOwner::getSettlementPeriodType, SettlementOwnerEnum.SettlementPeriodType.MONTH.getCode())
.eq(SettlementOwner::getSettlementPeriodType,
SettlementOwnerEnum.SettlementPeriodType.MONTH.getCode())
.eq(SettlementOwner::getSettlementPeriodTime, settlementPeriodTime)
.eq(SettlementOwner::getInvoiceType, invoiceType)
.eq(SettlementOwner::getStatus, SettlementOwnerEnum.Status.TO_BE_LOCKED.getCode())
)
.map(super::getOne);
}
@Override
public Optional<SettlementOwner> selectUnlockOfSettlementPeriodDaily(String orderNo,
LocalDateTime settlementPeriodTime,
Integer invoiceType) {
return Optional.of(lQrWrapper()
.eq(SettlementOwner::getOrderNo, orderNo)
.eq(SettlementOwner::getSettlementPeriodType,
SettlementOwnerEnum.SettlementPeriodType.DAILY.getCode())
.eq(SettlementOwner::getSettlementPeriodTime, settlementPeriodTime)
.eq(SettlementOwner::getInvoiceType, invoiceType)
.eq(SettlementOwner::getStatus, SettlementOwnerEnum.Status.TO_BE_LOCKED.getCode())
......
......@@ -38,6 +38,11 @@ public interface SettlementOwnerDao extends BaseDao<SettlementOwnerMapper, Settl
Optional<SettlementOwner> selectUnlockOfSettlementPeriodMonth(@Param("orderNo")String orderNo,
@Param("settlementPeriodTime") LocalDateTime settlementPeriodTime,
@Param("invoiceType")Integer invoiceType);
Optional<SettlementOwner> selectUnlockOfSettlementPeriodDaily(String orderNo,
LocalDateTime settlementPeriodTime,
Integer invoiceType);
Optional<SettlementOwner> selectUnlockOfSettlementPeriodImmediate(@Param("orderNo")String orderNo,
@Param("invoiceType")Integer invoiceType);
List<SettlementOwner> listToBeLockOfSettlementPeriodMonth(@Param("settlementPeriodTime") LocalDateTime settlementPeriodTime);
......
......@@ -131,24 +131,43 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
if (Objects.equals(orderGoods.getSettlementAccountPeriod(),2)){ //月结
log.info("月结初始化货主结算单");
LocalDateTime settlementPeriodTime = LocalDateTimeUtils.getBeginMonthDate();
settlementOwner = settlementOwnerDao.selectUnlockOfSettlementPeriodMonth(settlementOwnerDetail.getOrderNo(), settlementPeriodTime, settlementOwnerDetail.getInvoiceType()).orNull();
settlementOwner = settlementOwnerDao.selectUnlockOfSettlementPeriodMonth(settlementOwnerDetail.getOrderNo(),
settlementPeriodTime, settlementOwnerDetail.getInvoiceType()).orNull();
if (settlementOwner == null){ // 月结初始化
settlementNo = settlementPeriodMonthInit(settlementOwnerDetail, settlementPeriodTime,ownerInfo);
settlementNo = settlementPeriodMonthInit(settlementOwnerDetail, settlementPeriodTime,
SettlementOwnerEnum.SettlementPeriodType.MONTH.getCode(), ownerInfo);
}
else { // 月结更新
settlementPeriodMonthUpdate(settlementOwner, settlementOwnerDetail);
settlementNo = settlementOwner.getSettlementNo();
}
}
else if (Objects.equals(orderGoods.getSettlementAccountPeriod(),
SettlementOwnerEnum.SettlementPeriodType.DAILY.getCode())){ //日结
log.info("日结初始化货主结算单");
LocalDateTime settlementPeriodTime = LocalDateTimeUtils.getDayStart();
settlementOwner = settlementOwnerDao.selectUnlockOfSettlementPeriodDaily(settlementOwnerDetail.getOrderNo(),
settlementPeriodTime, settlementOwnerDetail.getInvoiceType()).orNull();
if (settlementOwner == null){ // 日结初始化
settlementNo = settlementPeriodMonthInit(settlementOwnerDetail, settlementPeriodTime,
SettlementOwnerEnum.SettlementPeriodType.DAILY.getCode(), ownerInfo);
}
else { // 日结更新
settlementPeriodMonthUpdate(settlementOwner, settlementOwnerDetail);
settlementNo = settlementOwner.getSettlementNo();
}
}
else {
log.info("拉运完成结初始化货主结算单");
settlementOwner = settlementOwnerDao.selectUnlockOfSettlementPeriodImmediate(settlementOwnerDetail.getOrderNo(), settlementOwnerDetail.getInvoiceType()).orNull();
settlementOwner = settlementOwnerDao.selectUnlockOfSettlementPeriodImmediate(settlementOwnerDetail.getOrderNo(),
settlementOwnerDetail.getInvoiceType()).orNull();
if (settlementOwner == null){ // 拉运完成初始化
settlementNo = settlementPeriodImmediateInit(settlementOwnerDetail,ownerInfo);
settlementNo = settlementPeriodMonthInit(settlementOwnerDetail, null,
SettlementOwnerEnum.SettlementPeriodType.IMMEDIATE.getCode(),ownerInfo);
}
else { // 拉运完成更新
settlementPeriodImmediateUpdate(settlementOwner, settlementOwnerDetail);
settlementPeriodMonthUpdate(settlementOwner, settlementOwnerDetail);
settlementNo = settlementOwner.getSettlementNo();
}
}
......@@ -299,7 +318,10 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
/**
* 月结初始化
*/
private String settlementPeriodMonthInit(SettlementOwnerDetail settlementOwnerDetail, LocalDateTime settlementPeriodTime,OwnerInfoFeignVO ownerInfo){
private String settlementPeriodMonthInit(SettlementOwnerDetail settlementOwnerDetail,
LocalDateTime settlementPeriodTime,
Integer settlementPeriodType,
OwnerInfoFeignVO ownerInfo){
FeignOrderInfoVO orderInfo = orderService.getOrderInfo(settlementOwnerDetail.getOrderNo()).orElseThrow(PerformanceResultEnum.ORDER_INVALID);
......@@ -371,6 +393,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwner.setSettlementFreight(settlementOwnerDetail.getSettlementFreight());
settlementOwner.setLoanFreight(settlementOwnerDetail.getLoanFreight());
settlementOwner.setInvoiceFreight(settlementOwnerDetail.getInvoiceFreight());
settlementOwner.setInvoiceServiceFee(settlementOwnerDetail.getInvoiceServiceFee());
List<SettlementOwnerDetail> details = settlementOwnerDetailDao.getBySettlementNo(settlementOwner.getSettlementNo());
......@@ -383,99 +406,12 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwner.setPrepayFreight(settlementOwner.getPrepayFreight().add(item.getPrepayFreight()));
settlementOwner.setSettlementFreight(settlementOwner.getSettlementFreight().add(item.getSettlementFreight()));
settlementOwner.setInvoiceFreight(settlementOwner.getInvoiceFreight().add(item.getInvoiceFreight()));
settlementOwner.setInvoiceServiceFee(settlementOwner.getInvoiceServiceFee().add(item.getInvoiceServiceFee()));
});
settlementOwnerDao.updateSettlementPeriodMonth(settlementOwner);
}
/**
* 拉运完成结 初始化
*/
private String settlementPeriodImmediateInit(SettlementOwnerDetail settlementOwnerDetail,OwnerInfoFeignVO ownerInfo){
FeignOrderInfoVO orderInfo = orderService.getOrderInfo(settlementOwnerDetail.getOrderNo()).orElseThrow(PerformanceResultEnum.ORDER_INVALID);
SettlementOwner settlementOwner = new SettlementOwner();
String settlementNo = settlementNoGenerate();
settlementOwner.setSettlementNo(settlementNo);
settlementOwner.setOwnerUserNo(settlementOwnerDetail.getOwnerUserNo());
settlementOwner.setOwnerName(settlementOwnerDetail.getOwnerName());
settlementOwner.setOrderNo(settlementOwnerDetail.getOrderNo());
settlementOwner.setSettlementPeriodType(SettlementOwnerEnum.SettlementPeriodType.IMMEDIATE.getCode());
settlementOwner.setWeight(settlementOwnerDetail.getWeight());
settlementOwner.setFreight(settlementOwnerDetail.getFreight());
settlementOwner.setLossWeight(settlementOwnerDetail.getLossWeight());
settlementOwner.setLossFreight(settlementOwnerDetail.getLossFreight());
settlementOwner.setSettlementFreight(settlementOwnerDetail.getSettlementFreight());
settlementOwner.setLoanFreight(settlementOwnerDetail.getLoanFreight());
settlementOwner.setInvoiceType(settlementOwnerDetail.getInvoiceType());
settlementOwner.setInvoiceFreight(settlementOwnerDetail.getInvoiceFreight());
settlementOwner.setPrepayFreight(settlementOwnerDetail.getPrepayFreight());
settlementOwner.setStatus(SettlementOwnerEnum.Status.TO_BE_LOCKED.getCode());
settlementOwner.setCompanyName(ownerInfo.getCompanyName());
settlementOwner.setCompanyTaxCode(ownerInfo.getCompanyTaxCode());
settlementOwner.setCompanyAddress(ownerInfo.getCompanyAddress());
settlementOwner.setCompanyMobile(ownerInfo.getCompanyTelephone());
settlementOwner.setCompanyBankNo(ownerInfo.getCompanyBankAccount());
settlementOwner.setCompanyBankName(ownerInfo.getCompanyOpenBank());
settlementOwner.setCompanyContact(ownerInfo.getContactsName());
settlementOwner.setCompanyContactMobile(ownerInfo.getContactsTelephone());
settlementOwner.setCompanyContactAddress(ownerInfo.getContactsAddress());
settlementOwner.setSettlementWay(settlementOwnerDetail.getSettlementWay());
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.NOT_INVOICE.getCode());
//设置开票公司
settlementOwner.setInvoicingCompanyId(orderInfo.getInvoicingCompanyId());
settlementOwner.setInvoicingCompanyShorterName(orderInfo.getInvoicingCompanyShorterName());
settlementOwner.setInvoicingCompanyGroupCode(orderInfo.getInvoicingCompanyGroupCode());
settlementOwner.setReportFlag(orderInfo.getReportFlag());
settlementOwnerDao.saveEntity(settlementOwner);
//保存结算单日志----创建结算单
settlementLogService.saveSettlementLog(settlementNo,
SettlementLogEnum.Type.CREATE_SETTLEMENT.getCode(),SettlementLogEnum.Type.CREATE_SETTLEMENT.getMsg(),
OrderChildLogEnum.CreateType.PLATFORM.getCode(),0L,"系统");
return settlementNo;
}
/**
* 拉运完成结 更新
*/
private void settlementPeriodImmediateUpdate(SettlementOwner settlementOwner,SettlementOwnerDetail settlementOwnerDetail){
settlementOwner.setWeight(settlementOwnerDetail.getWeight());
settlementOwner.setFreight(settlementOwnerDetail.getFreight());
settlementOwner.setLossWeight(settlementOwnerDetail.getLossWeight());
settlementOwner.setLoanFreight(settlementOwnerDetail.getLoanFreight());
settlementOwner.setLossFreight(settlementOwnerDetail.getLossFreight());
settlementOwner.setPrepayFreight(settlementOwnerDetail.getPrepayFreight());
settlementOwner.setSettlementFreight(settlementOwnerDetail.getSettlementFreight());
settlementOwner.setInvoiceFreight(settlementOwnerDetail.getInvoiceFreight());
List<SettlementOwnerDetail> details = settlementOwnerDetailDao.getBySettlementNo(settlementOwner.getSettlementNo());
details.forEach(item->{
settlementOwner.setWeight(settlementOwner.getWeight().add(item.getWeight()));
settlementOwner.setFreight(settlementOwner.getFreight().add(item.getFreight()));
settlementOwner.setLossWeight(settlementOwner.getLossWeight().add(item.getLossWeight()));
settlementOwner.setLossFreight(settlementOwner.getLossFreight().add(item.getLossFreight()));
settlementOwner.setPrepayFreight(settlementOwner.getPrepayFreight().add(item.getPrepayFreight()));
settlementOwner.setLoanFreight(settlementOwner.getLoanFreight().add(item.getLoanFreight()));
settlementOwner.setSettlementFreight(settlementOwner.getSettlementFreight().add(item.getSettlementFreight()));
settlementOwner.setInvoiceFreight(settlementOwner.getInvoiceFreight().add(item.getInvoiceFreight()));
});
settlementOwnerDao.updateSettlementPeriodMonth(settlementOwner);
}
/**
* 创建结算单号
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论