diff --git a/blade-service-api/blade-transport-api/src/main/java/org/springblade/transport/pojo/vo/BusinessRemoveResultVO.java b/blade-service-api/blade-transport-api/src/main/java/org/springblade/transport/pojo/vo/BusinessRemoveResultVO.java index 9e1816d..ac8f537 100644 --- a/blade-service-api/blade-transport-api/src/main/java/org/springblade/transport/pojo/vo/BusinessRemoveResultVO.java +++ b/blade-service-api/blade-transport-api/src/main/java/org/springblade/transport/pojo/vo/BusinessRemoveResultVO.java @@ -52,4 +52,7 @@ public class BusinessRemoveResultVO implements Serializable { @Schema(description = "跳过编号") private List skippedCodes = new ArrayList<>(); + @Schema(description = "跳过原因") + private List skippedReasons = new ArrayList<>(); + } diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/LoadingManageController.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/LoadingManageController.java index 39b5263..b1d29f9 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/LoadingManageController.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/LoadingManageController.java @@ -56,10 +56,9 @@ public class LoadingManageController extends BladeController { @GetMapping("/carrier-contracts") @ApiOperationSupport(order = 13) - @Operation(summary = "可选承运商合同", description = "根据运单ID集合查询共同可用的承运商合同") - public R> carrierContracts( - @Parameter(description = "运单ID集合", required = true) @RequestParam List waybillIds) { - return R.data(loadingManageService.carrierContracts(waybillIds)); + @Operation(summary = "可选承运商合同", description = "查询已审核生效的承运商合同") + public R> carrierContracts() { + return R.data(loadingManageService.carrierContracts()); } @GetMapping("/list") diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/ILoadingManageService.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/ILoadingManageService.java index dbb4539..73f4123 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/ILoadingManageService.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/ILoadingManageService.java @@ -25,7 +25,7 @@ public interface ILoadingManageService extends BaseService { LoadingManageVO detail(Long id); - List carrierContracts(List waybillIds); + List carrierContracts(); boolean saveDraft(LoadingManage loadingManage); diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/LoadingManageServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/LoadingManageServiceImpl.java index 28cf212..a6b2113 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/LoadingManageServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/LoadingManageServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.jackson.JsonUtil; @@ -39,10 +40,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.Objects; -import java.util.function.Function; -import java.util.stream.Collectors; /** * 配载管理 服务实现类 @@ -50,6 +48,7 @@ import java.util.stream.Collectors; * @author Chill */ @Service +@Slf4j public class LoadingManageServiceImpl extends BaseServiceImpl implements ILoadingManageService { private static final String STATUS_DRAFT = "draft"; @@ -86,8 +85,8 @@ public class LoadingManageServiceImpl extends BaseServiceImpl carrierContracts(List waybillIds) { - return findCarrierContracts(waybillIds).stream().map(contract -> { + public List carrierContracts() { + return availableCarrierContracts().stream().map(contract -> { LoadingCarrierContractVO option = new LoadingCarrierContractVO(); option.setId(contract.getId()); option.setContractName(contract.getContractName()); @@ -292,9 +291,8 @@ public class LoadingManageServiceImpl extends BaseServiceImpl waybillIdList = waybillIds(loadingManage.getWaybillIdsJson()); - if (Func.isEmpty(waybillIdList)) { - return false; - } - List waybillList = waybillMapper.selectList(Wrappers.lambdaQuery() - .eq(Waybill::getIsDeleted, 0) - .in(Waybill::getId, waybillIdList)); - if (waybillList.size() != waybillIdList.size()) { - return false; - } - return waybillList.stream().allMatch(waybill -> Objects.equals(waybill.getBusinessStatus(), STATUS_RUNNING)) - || waybillList.stream().allMatch(waybill -> Objects.equals(waybill.getBusinessStatus(), STATUS_COMPLETED)); - } - private LambdaQueryWrapper buildQuery(LoadingManageVO loadingManage) { TransportBusinessSupport.validateAllDept(loadingManage.getAllDept(), "配载管理"); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery().eq(LoadingManage::getIsDeleted, 0); @@ -604,11 +591,10 @@ public class LoadingManageServiceImpl extends BaseServiceImpl Objects.equals(contract.getId(), loadingManage.getCarrierContractId())) .findFirst() - .orElseThrow(() -> new ServiceException("所选承运商合同与运单绑定的客户合同不匹配或已失效")); + .orElseThrow(() -> new ServiceException("所选承运商合同不存在、未审核通过或已失效")); loadingManage.setCarrierName(carrierContract.getPartyB()); } @@ -623,58 +609,10 @@ public class LoadingManageServiceImpl extends BaseServiceImpl findCarrierContracts(List waybillIds) { - if (Func.isEmpty(waybillIds)) { - return new ArrayList<>(); - } - List distinctWaybillIds = waybillIds.stream() - .filter(Objects::nonNull) - .distinct() - .toList(); - if (Func.isEmpty(distinctWaybillIds)) { - return new ArrayList<>(); - } - List waybillList = waybillMapper.selectList(Wrappers.lambdaQuery() - .eq(Waybill::getIsDeleted, 0) - .in(Waybill::getId, distinctWaybillIds)); - if (waybillList.size() != distinctWaybillIds.size()) { - throw new ServiceException("待配载运单不存在或已删除"); - } - waybillList.forEach(waybill -> - TransportBusinessSupport.assertCurrentDept(waybill.getDeptId(), "运单管理")); - if (waybillList.stream().anyMatch(waybill -> Func.isEmpty(waybill.getContractId()))) { - throw new ServiceException("所选运单存在未绑定客户合同的数据"); - } - List customerContractIds = waybillList.stream() - .map(Waybill::getContractId) - .distinct() - .toList(); - Map customerContractMap = contractManageService.listByIds(customerContractIds) - .stream() - .filter(contract -> Objects.equals(contract.getIsDeleted(), 0)) - .collect(Collectors.toMap(ContractManage::getId, Function.identity())); - if (customerContractMap.size() != customerContractIds.size()) { - throw new ServiceException("所选运单绑定的客户合同不存在或已删除"); - } - Waybill firstWaybill = waybillList.get(0); - ContractManage firstCustomerContract = customerContractMap.get(firstWaybill.getContractId()); - if (!Objects.equals(firstCustomerContract.getContractCategory(), "客户合同") - || Func.isEmpty(firstCustomerContract.getPartyA())) { - throw new ServiceException("所选运单绑定的客户合同信息不完整"); - } - boolean relationMismatch = waybillList.stream().anyMatch(waybill -> { - ContractManage customerContract = customerContractMap.get(waybill.getContractId()); - return !Objects.equals(customerContract.getContractCategory(), "客户合同") - || !Objects.equals(waybill.getProjectId(), firstWaybill.getProjectId()) - || !Objects.equals(customerContract.getPartyA(), firstCustomerContract.getPartyA()); - }); - if (relationMismatch) { - throw new ServiceException("所选运单的客户合同不属于同一项目和甲方,无法共用承运商合同"); - } + private List availableCarrierContracts() { return contractManageService.list(Wrappers.lambdaQuery() .eq(ContractManage::getIsDeleted, 0) - .eq(ContractManage::getProjectId, firstWaybill.getProjectId()) - .eq(ContractManage::getPartyA, firstCustomerContract.getPartyA()) + .eq(ContractManage::getStatus, 1) .eq(ContractManage::getContractCategory, "承运商合同") .in(ContractManage::getApprovalStatus, "approved", "change_approved") .and(wrapper -> wrapper.isNull(ContractManage::getContractStage) @@ -697,6 +635,7 @@ public class LoadingManageServiceImpl extends BaseServiceImpllambdaUpdate() .in(Waybill::getId, waybillIds) .set(Waybill::getLoadingNo, null) + .set(Waybill::getCarrierContractId, null) + .set(Waybill::getCarrierName, null) .set(Waybill::getBusinessStatus, status)); } diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/MasterOrderServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/MasterOrderServiceImpl.java index 38cdfa5..782c24b 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/MasterOrderServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/MasterOrderServiceImpl.java @@ -428,18 +428,19 @@ public class MasterOrderServiceImpl extends BaseServiceImpl