调整结算模块

This commit is contained in:
2026-09-07 22:26:47 +08:00
parent 4d34525b7b
commit 7afd243a80
3 changed files with 55 additions and 23 deletions
@@ -1112,20 +1112,7 @@ public class ReceivablePayableDetailServiceImpl
if ("receivable".equals(targetSettlementType)) {
wrapper.eq(Waybill::getContractId, contract.getId());
} else {
List<Long> customerContractIds = contractManageService.list(Wrappers.<ContractManage>lambdaQuery()
.select(ContractManage::getId)
.eq(ContractManage::getIsDeleted, 0)
.eq(ContractManage::getProjectId, contract.getProjectId())
.eq(ContractManage::getContractCategory, "客户合同")
.eq(ContractManage::getPartyA, contract.getPartyA()))
.stream().map(ContractManage::getId).toList();
if (customerContractIds.isEmpty()) {
wrapper.eq(Waybill::getId, -1L);
} else {
wrapper.in(Waybill::getContractId, customerContractIds)
.eq(Waybill::getProjectId, contract.getProjectId())
.eq(Waybill::getCarrierName, contract.getPartyB());
}
wrapper.eq(Waybill::getCarrierContractId, contract.getId());
wrapper.and(item -> item.isNull(Waybill::getTransportType)
.or().ne(Waybill::getTransportType, TRANSPORT_TYPE_SELF));
wrapper.and(item -> item.isNull(Waybill::getCarrierType)
@@ -1134,7 +1121,7 @@ public class ReceivablePayableDetailServiceImpl
wrapper.notInSql(Waybill::getId,
"select waybill_id from blade_receivable_payable_detail"
+ " where is_deleted = 0 and waybill_id is not null"
+ " and settlement_type in ('receivable', 'payable')");
+ " and settlement_type = '" + targetSettlementType + "'");
if (Func.isNotEmpty(request.getBatchNo())) {
wrapper.like(Waybill::getBatchNo, request.getBatchNo());
}
@@ -81,6 +81,7 @@ public class TransportPlanServiceImpl extends BaseServiceImpl<TransportPlanMappe
public IPage<TransportPlanVO> selectTransportPlanPage(IPage<TransportPlan> page, TransportPlanVO transportPlan) {
IPage<TransportPlan> entityPage = page(page, buildQuery(transportPlan));
IPage<TransportPlanVO> resultPage = TransportPlanWrapper.build().pageVO(entityPage);
fillCustomerNamesFromContracts(resultPage.getRecords());
fillDispatchRows(resultPage.getRecords());
return resultPage;
}
@@ -88,26 +89,47 @@ public class TransportPlanServiceImpl extends BaseServiceImpl<TransportPlanMappe
@Override
public TransportPlanVO detail(Long id) {
TransportPlanVO transportPlan = TransportPlanWrapper.build().entityVO(loadEditable(id, false));
fillContractNo(transportPlan);
fillContractInfo(transportPlan);
fillDispatchRows(Collections.singletonList(transportPlan));
return transportPlan;
}
private void fillContractNo(TransportPlanVO transportPlan) {
private void fillContractInfo(TransportPlanVO transportPlan) {
ContractManage contract = resolveContract(transportPlan);
transportPlan.setContractNo(contract == null ? null : contract.getContractNo());
fillCustomerNameFromContract(transportPlan, contract);
}
private void fillCustomerNamesFromContracts(List<TransportPlanVO> transportPlans) {
transportPlans.forEach(transportPlan ->
fillCustomerNameFromContract(transportPlan, resolveContract(transportPlan)));
}
private void fillCustomerNameFromContract(TransportPlan transportPlan, ContractManage contract) {
if (contract != null && "客户合同".equals(contract.getContractCategory())
&& Func.isNotEmpty(contract.getPartyA())) {
transportPlan.setCustomerName(TransportBusinessSupport.trimToNull(contract.getPartyA()));
}
}
private ContractManage resolveContract(TransportPlanVO transportPlan) {
if (Func.isNotEmpty(transportPlan.getContractId())) {
ContractManage contract = contractManageService.getById(transportPlan.getContractId());
return resolveContract(transportPlan.getContractId(), transportPlan.getContractName(), transportPlan.getProjectId());
}
private ContractManage resolveContract(TransportPlan transportPlan) {
return resolveContract(transportPlan.getContractId(), transportPlan.getContractName(), transportPlan.getProjectId());
}
private ContractManage resolveContract(Long contractId, String contractName, Long projectId) {
if (Func.isNotEmpty(contractId)) {
ContractManage contract = contractManageService.getById(contractId);
if (contract != null) return contract;
}
if (Func.isEmpty(transportPlan.getContractName())) return null;
if (Func.isEmpty(contractName)) return null;
LambdaQueryWrapper<ContractManage> query = new LambdaQueryWrapper<ContractManage>()
.eq(ContractManage::getContractName, transportPlan.getContractName());
if (Func.isNotEmpty(transportPlan.getProjectId())) {
query.eq(ContractManage::getProjectId, transportPlan.getProjectId());
.eq(ContractManage::getContractName, contractName);
if (Func.isNotEmpty(projectId)) {
query.eq(ContractManage::getProjectId, projectId);
}
return contractManageService.getOne(query, false);
}
@@ -123,6 +145,7 @@ public class TransportPlanServiceImpl extends BaseServiceImpl<TransportPlanMappe
transportPlan.setDeptName(oldRecord.getDeptName());
}
prepare(transportPlan);
fillCustomerNameFromContract(transportPlan, resolveContract(transportPlan));
if (created) {
transportPlan.setPlanNo(nextCode());
}
@@ -105,6 +105,7 @@ public class WaybillServiceImpl extends BaseServiceImpl<WaybillMapper, Waybill>
@Override
public WaybillVO detail(Long id) {
WaybillVO result = WaybillWrapper.build().entityVO(loadEditable(id, false));
fillCustomerNameFromContract(result);
fillMileageMaintainable(List.of(result));
return result;
}
@@ -148,6 +149,13 @@ public class WaybillServiceImpl extends BaseServiceImpl<WaybillMapper, Waybill>
}
private void fillCustomerName(Waybill waybill) {
if (Func.isNotEmpty(waybill.getContractId())) {
ContractManage contract = contractManageService.getById(waybill.getContractId());
if (isCustomerContract(contract) && Func.isNotEmpty(contract.getPartyA())) {
waybill.setCustomerName(TransportBusinessSupport.trimToNull(contract.getPartyA()));
return;
}
}
if (Func.isNotEmpty(waybill.getCustomerName()) || Func.isEmpty(waybill.getProjectId())) {
return;
}
@@ -157,6 +165,20 @@ public class WaybillServiceImpl extends BaseServiceImpl<WaybillMapper, Waybill>
}
}
private void fillCustomerNameFromContract(WaybillVO waybill) {
if (waybill == null || Func.isEmpty(waybill.getContractId())) {
return;
}
ContractManage contract = contractManageService.getById(waybill.getContractId());
if (isCustomerContract(contract) && Func.isNotEmpty(contract.getPartyA())) {
waybill.setCustomerName(TransportBusinessSupport.trimToNull(contract.getPartyA()));
}
}
private boolean isCustomerContract(ContractManage contract) {
return contract != null && "客户合同".equals(contract.getContractCategory());
}
private void fillProjectProcessConfig(Waybill waybill) {
if (Func.isNotEmpty(waybill.getProcessJson()) || Func.isEmpty(waybill.getProjectId())) {
return;