Merge remote-tracking branch 'origin/feature/REQ-3982' into feature/REQ-3982

This commit is contained in:
yanglin 2025-04-29 15:34:21 +08:00
commit 9fb4a349d6

View File

@ -1524,10 +1524,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
AssertUtil.isTrue(req.getAmountChange().compareTo(maxAmount) <= 0 && req.getAmountChange().compareTo(minAmount) >= 0, "金额变化超出范围"); AssertUtil.isTrue(req.getAmountChange().compareTo(maxAmount) <= 0 && req.getAmountChange().compareTo(minAmount) >= 0, "金额变化超出范围");
} }
// 关联单据合法性 // 关联单据合法性
validRelationOrder(req.getRelationOrderMap(), req.getRelationWorkspaceId(), req.getType()); validRelationOrder(req.getRelationOrderMap(), req.getRelationWorkspaceId(), req.getType(), req.getId());
} }
private void validRelationOrder(Map<String, List<VisaChangeTempCreateReq.OrderSimpleModel>> relationOrderMap, Long workspaceId, VisaTypeEnum type) { private void validRelationOrder(Map<String, List<VisaChangeTempCreateReq.OrderSimpleModel>> relationOrderMap, Long workspaceId, VisaTypeEnum type, Long visaId) {
if (CollUtil.isNotEmpty(relationOrderMap)) { if (CollUtil.isNotEmpty(relationOrderMap)) {
relationOrderMap.forEach((key, value) -> { relationOrderMap.forEach((key, value) -> {
if (CollectionUtils.isNotEmpty(value)) { if (CollectionUtils.isNotEmpty(value)) {
@ -1549,7 +1549,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
queryOrderToBasicReq.setPageSize(taskNos.size()); queryOrderToBasicReq.setPageSize(taskNos.size());
List<TaskOrderToBasicRes> taskOrders = taskOrderApiGateway.pageOrderByForBasic(queryOrderToBasicReq).getData(); List<TaskOrderToBasicRes> taskOrders = taskOrderApiGateway.pageOrderByForBasic(queryOrderToBasicReq).getData();
AssertUtil.isTrue(CollectionUtils.isNotEmpty(taskOrders) && taskOrders.size() == taskNos.size(), "关联任务单单据不存在,请检查后重试"); AssertUtil.isTrue(CollectionUtils.isNotEmpty(taskOrders) && taskOrders.size() == taskNos.size(), "关联任务单单据不存在,请检查后重试");
validTaskBillIfRelated(taskNos, type); validTaskBillIfRelated(taskNos, type, visaId);
} }
} else if (Objects.equals(VisaBillTypeEnum.RECTIFY.name(), key)) { } else if (Objects.equals(VisaBillTypeEnum.RECTIFY.name(), key)) {
/*整改单*/ /*整改单*/
@ -1564,7 +1564,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
.build(); .build();
List<RectifyOrderResp> rectifyOrders = rectifyApiGateway.listRectifyOrders(rectifyOrderReq); List<RectifyOrderResp> rectifyOrders = rectifyApiGateway.listRectifyOrders(rectifyOrderReq);
AssertUtil.isTrue(CollectionUtils.isNotEmpty(rectifyOrders) && rectifyOrders.size() == billIds.size(), "关联整改单单据不存在,请检查后重试"); AssertUtil.isTrue(CollectionUtils.isNotEmpty(rectifyOrders) && rectifyOrders.size() == billIds.size(), "关联整改单单据不存在,请检查后重试");
validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, type); validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, type, visaId);
} }
} else if (Objects.equals(VisaBillTypeEnum.DESIGN_VISA.name(), key)) { } else if (Objects.equals(VisaBillTypeEnum.DESIGN_VISA.name(), key)) {
/*变更单*/ /*变更单*/
@ -1581,7 +1581,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), workspaceId), "关联的单据所属项目不匹配"); AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), workspaceId), "关联的单据所属项目不匹配");
AssertUtil.isTrue(VisaStatusEnum.COMPLETED.equals(r.getStatus()), String.format("%s单据%s状态为%s不允许被关联", VisaBillTypeEnum.DESIGN_VISA.getDesc(), r.getNo(), r.getStatus().getDesc())); AssertUtil.isTrue(VisaStatusEnum.COMPLETED.equals(r.getStatus()), String.format("%s单据%s状态为%s不允许被关联", VisaBillTypeEnum.DESIGN_VISA.getDesc(), r.getNo(), r.getStatus().getDesc()));
}); });
validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, billIds, type); validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, billIds, type, visaId);
} }
} else { } else {
throw new ServiceException("不支持的关联单据类型"); throw new ServiceException("不支持的关联单据类型");
@ -1599,12 +1599,13 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
.one(); .one();
} }
private void validBillIfRelated(VisaBillTypeEnum billType, List<String> value, VisaTypeEnum visaType) { private void validBillIfRelated(VisaBillTypeEnum billType, List<String> value, VisaTypeEnum visaType, Long visaId) {
AssertUtil.notNull(billType, "关联单据类型不能为空"); AssertUtil.notNull(billType, "关联单据类型不能为空");
AssertUtil.notEmpty(value, "关联单据Id不能为空"); AssertUtil.notEmpty(value, "关联单据Id不能为空");
AssertUtil.notNull(visaType, "单据类型不能为空"); AssertUtil.notNull(visaType, "单据类型不能为空");
List<ChangeRecordBill> mainBill = changeRecordBillService.getRelatedMainBill(billType, value); List<ChangeRecordBill> mainBill = changeRecordBillService.getRelatedMainBill(billType, value);
mainBill.stream() mainBill.stream()
.filter(i -> !Objects.equals(visaId, i.getVisaId()))
.collect(Collectors.groupingBy(ChangeRecordBill::getBillId)) .collect(Collectors.groupingBy(ChangeRecordBill::getBillId))
.forEach((k, v) -> v.stream() .forEach((k, v) -> v.stream()
.filter(m -> Objects.equals(m.getVisaType(), visaType)) .filter(m -> Objects.equals(m.getVisaType(), visaType))
@ -1615,7 +1616,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
})); }));
} }
private void validTaskBillIfRelated(List<String> taskNos, VisaTypeEnum visaType) { private void validTaskBillIfRelated(List<String> taskNos, VisaTypeEnum visaType, Long visaId) {
AssertUtil.notEmpty(taskNos, "关联单据Id不能为空"); AssertUtil.notEmpty(taskNos, "关联单据Id不能为空");
AssertUtil.notNull(visaType, "单据类型不能为空"); AssertUtil.notNull(visaType, "单据类型不能为空");
List<ChangeRecordBill> mainBill = changeRecordBillService.getRelatedMainBill(VisaBillTypeEnum.TASK, taskNos); List<ChangeRecordBill> mainBill = changeRecordBillService.getRelatedMainBill(VisaBillTypeEnum.TASK, taskNos);
@ -1623,6 +1624,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
return; return;
} }
mainBill.stream() mainBill.stream()
.filter(i -> !Objects.equals(visaId, i.getVisaId()))
.collect(Collectors.groupingBy(ChangeRecordBill::getBillNo)) .collect(Collectors.groupingBy(ChangeRecordBill::getBillNo))
.forEach((k, v) -> v.stream() .forEach((k, v) -> v.stream()
.filter(m -> Objects.equals(m.getVisaType(), visaType)) .filter(m -> Objects.equals(m.getVisaType(), visaType))
@ -2138,6 +2140,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void approveCreateVisaPay(VisaPayApproveCreateReq req) { public void approveCreateVisaPay(VisaPayApproveCreateReq req) {
ChangeRecord visa = changeRecordService.getById(req.getVisaId()); ChangeRecord visa = changeRecordService.getById(req.getVisaId());
AssertUtil.notNull(visa, "未找到变洽签单据");
check(req, visa); check(req, visa);
// 更新主业务单据中的相关数据数据 // 更新主业务单据中的相关数据数据
@ -2185,7 +2188,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
private void check(VisaPayApproveCreateReq req, ChangeRecord visa) { private void check(VisaPayApproveCreateReq req, ChangeRecord visa) {
// 验证单据 // 验证单据
validRelationOrder(req.getRelationOrderMap(), visa.getRelationWorkspaceId(), visa.getType()); validRelationOrder(req.getRelationOrderMap(), visa.getRelationWorkspaceId(), visa.getType(), visa.getId());
// 校验是否已经发起过价款申请审批中和已通过 // 校验是否已经发起过价款申请审批中和已通过
List<BpmnProcessInstanceResultEnum> checkResults = Lists.newArrayList(PROCESSING, APPROVED); List<BpmnProcessInstanceResultEnum> checkResults = Lists.newArrayList(PROCESSING, APPROVED);
boolean checkResult = StringUtils.hasText(visa.getApprovalIdPay()) && checkResults.contains(BpmnProcessInstanceResultEnum.valueOfStatus(visa.getApprovalStatusPay())); boolean checkResult = StringUtils.hasText(visa.getApprovalIdPay()) && checkResults.contains(BpmnProcessInstanceResultEnum.valueOfStatus(visa.getApprovalStatusPay()));