feat(REQ-3300): 发生区域校验

This commit is contained in:
chenwenjian 2025-02-24 11:28:16 +08:00
parent ba5a641616
commit 05a8a3a52f

View File

@ -1,6 +1,7 @@
package cn.axzo.nanopart.visa.server.service.impl;
import cn.axzo.apollo.api.req.QueryOrderToBasicReq;
import cn.axzo.apollo.api.res.ConstructionAreaInfo;
import cn.axzo.apollo.api.res.TaskOrderToBasicRes;
import cn.axzo.apollo.workspace.api.workspace.res.GetDetailRes;
import cn.axzo.apollo.workspace.api.workspace.res.ProjectBriefResp;
@ -1443,6 +1444,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
ProjectDetailRes projectById = visaProjectApiGateway.getProjectById(req.getRelationProject());
AssertUtil.notNull(projectById, "工程不存在");
AssertUtil.isTrue(Objects.equals(projectById.getWorkspaceInfo().getWorkspaceId(), req.getRelationWorkspaceId()), "工程所属项目与关联项目不匹配");
// 发生区域存在性
if (CollectionUtils.isNotEmpty(req.getRelationArea())) {
List<ConstructionAreaInfo> areaByIds = apolloConstructionAreaGateway.getAllConstructionAreaByIds(req.getRelationArea().toJavaList(Long.class));
AssertUtil.isTrue(CollectionUtils.isNotEmpty(areaByIds) && areaByIds.size() == req.getRelationArea().size(), "存在发生区域已被删除");
}
// 提出时间合法性
Date now = new Date();
AssertUtil.notNull(req.getHappenTime(), "请选择提交日期");
@ -1496,10 +1502,24 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
if (Objects.equals(VisaBillTypeEnum.TASK.name(), key)) {
/*任务单*/
List<String> taskNos = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getNo).collect(Collectors.toList());
// 存在性
QueryOrderToBasicReq queryOrderToBasicReq = new QueryOrderToBasicReq();
queryOrderToBasicReq.setWorkspaceId(req.getRelationWorkspaceId());
queryOrderToBasicReq.setTaskNos(taskNos);
queryOrderToBasicReq.setPage(1);
queryOrderToBasicReq.setPageSize(taskNos.size());
List<TaskOrderToBasicRes> taskOrders = taskOrderApiGateway.pageOrderByForBasic(queryOrderToBasicReq).getData();
AssertUtil.isTrue(taskOrders.size() == taskNos.size(), "关联任务单单据不存在,请检查后重试");
validTaskBillIfRelated(taskNos, req.getType());
} else if (Objects.equals(VisaBillTypeEnum.RECTIFY.name(), key)) {
/*整改单*/
List<String> billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList());
// 存在性
ListRectifyOrderReq rectifyOrderReq = ListRectifyOrderReq.builder()
.ids(value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toSet()))
.build();
List<RectifyOrderResp> rectifyOrders = rectifyApiGateway.listRectifyOrders(rectifyOrderReq);
AssertUtil.isTrue(CollectionUtils.isNotEmpty(rectifyOrders) && rectifyOrders.size() == billIds.size(), "关联整改单单据不存在,请检查后重试");
validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, req.getType());
} else if (Objects.equals(VisaBillTypeEnum.DESIGN_VISA.name(), key)) {
/*变更单*/
@ -1507,7 +1527,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
// 关联单据合法性是否存在状态是否合法
List<String> billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList());
List<ChangeRecord> relationVisa = listByIds(billIds);
AssertUtil.notEmpty(relationVisa, "关联的单据不存在");
AssertUtil.isTrue(CollectionUtils.isNotEmpty(relationVisa) && relationVisa.size() == billIds.size(), "关联的变更单单据不存在,请检查后重试");
relationVisa.forEach(r -> {
AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), req.getRelationWorkspaceId()), "关联的单据所属项目不匹配");
AssertUtil.isFalse(Objects.equals(r.getStatus(), VisaStatusEnum.TO_REPORT) || Objects.equals(r.getStatus(), VisaStatusEnum.FORBIDED), String.format("%s单据%s状态为%s不允许被关联", VisaBillTypeEnum.DESIGN_VISA.getDesc(), r.getNo(), r.getStatus().getDesc()));