diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java index 9e9eb341..23ef2965 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceAllEventHandler.java @@ -176,6 +176,8 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P // 取消当前主单据关联的其他单据的关联状态 changeRecordBillService.billRelationStatus(visaId, false); + // 取消图纸绑定关系 + changeRecordService.syncDrawAnnotationUnBindRelation(visaId); } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DrawingAnnotationApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DrawingAnnotationApiGateway.java new file mode 100644 index 00000000..b7b5e19c --- /dev/null +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/DrawingAnnotationApiGateway.java @@ -0,0 +1,45 @@ +package cn.axzo.nanopart.visa.server.rpc; + +import cn.axzo.nanopart.visa.server.utils.RpcUtil; +import cn.axzo.thor.client.enums.DrawingAnnotationBizEnum; +import cn.axzo.thor.client.feign.DrawingAnnotationApi; +import cn.axzo.thor.client.model.BindDrawingAnnotationDTO; +import cn.axzo.thor.client.model.UnbindDrawingAnnotationDTO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Set; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2025/2/19 20:09 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class DrawingAnnotationApiGateway { + + private final DrawingAnnotationApi drawingAnnotationApi; + + public void bindBusiness(Long visasId, Set annotationIds) { + BindDrawingAnnotationDTO bindDrawingAnnotationDTO = BindDrawingAnnotationDTO.builder() + .drawingAnnotationIds(annotationIds) + .businessType(DrawingAnnotationBizEnum.VISA_CHANGE) + .businessId(String.valueOf(visasId)) + .build(); + RpcUtil.rpcCommonProcessor(()->drawingAnnotationApi.bindBusiness(bindDrawingAnnotationDTO), + "sync visa and drawing annotation bind relation to thor", bindDrawingAnnotationDTO); + } + + public void unbindBusiness(Long visasId, Set annotationIds) { + UnbindDrawingAnnotationDTO unbindDrawingAnnotationDTO = UnbindDrawingAnnotationDTO.builder() + .drawingAnnotationIds(annotationIds) + .businessType(DrawingAnnotationBizEnum.VISA_CHANGE) + .businessId(String.valueOf(visasId)) + .build(); + RpcUtil.rpcCommonProcessor(()->drawingAnnotationApi.unbindBusiness(unbindDrawingAnnotationDTO), + "sync visa and drawing annotation unbind relation to thor", unbindDrawingAnnotationDTO); + } +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java index cf46aa92..89de40e2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordService.java @@ -134,4 +134,16 @@ public interface ChangeRecordService extends IService { */ PageData list(VisaSearchReq req); + /** + * 同步图纸与变更签证单关联关系 + * @param visaId 变更签证Id + */ + void syncDrawAnnotationBindRelation(Long visaId); + + /** + * 同步图纸与变更签证单解除关联关系 + * @param visaId 变更签证Id + */ + void syncDrawAnnotationUnBindRelation(Long visaId); + } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index da06caa5..da5f64c4 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -74,6 +74,7 @@ import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordDao; import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; import cn.axzo.nanopart.visa.server.rpc.ApolloTaskOrderApiGateway; +import cn.axzo.nanopart.visa.server.rpc.DrawingAnnotationApiGateway; import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway; import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway; import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway; @@ -240,6 +241,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl relationDrawAnnotation = getRelationDrawAnnotation(visaId); + if (CollectionUtils.isNotEmpty(relationDrawAnnotation)) { + Set annotationIds = relationDrawAnnotation.stream() + .map(VisaChangeTempCreateReq.ChangeContextAndDescription::getAnnotationId) + .collect(Collectors.toSet()); + drawingAnnotationApiGateway.bindBusiness(visaId, annotationIds); + } + } + + @Override + public void syncDrawAnnotationUnBindRelation(Long visaId) { + List relationDrawAnnotation = getRelationDrawAnnotation(visaId); + if (CollectionUtils.isNotEmpty(relationDrawAnnotation)) { + Set annotationIds = relationDrawAnnotation.stream() + .map(VisaChangeTempCreateReq.ChangeContextAndDescription::getAnnotationId) + .collect(Collectors.toSet()); + drawingAnnotationApiGateway.unbindBusiness(visaId, annotationIds); + } } private List buildApprovers(List approvePersonInfoList) { @@ -1537,6 +1565,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl getRelationDrawAnnotation(Long visaId) { + List contentDescription = changeRecordRelationService.findByVisaAndVarName(visaId, VisaRelationFieldEnum.CONTENT_DESCRIPTION.name()); + if (CollectionUtils.isNotEmpty(contentDescription)) { + return contentDescription.stream() + .map(item -> { + try { + return JSONObject.parseObject(item.getContent(), VisaChangeTempCreateReq.ChangeContextAndDescription.class); + } catch (Exception e) { + throw new ServiceException("发生内容说明解析失败"); + } + }) + .filter(item -> Objects.nonNull(item) && Objects.equals(item.getType(), 2)) + .collect(Collectors.toList()); + } + return Collections.emptyList(); + } + private void validOperationPermission(Long visaId, Long personId, Long ouId, Long workspaceId) { List confirmUsers = changeRecordConfirmService.findByCondition(VisaConfirmDto.builder() .visaId(visaId) @@ -1709,6 +1761,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl