diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java index 08c52b37..c845bd4f 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordApi.java @@ -124,16 +124,19 @@ public interface ChangeRecordApi { /** * IM 变洽签群,“重新发起”按钮 + * * @return */ @PostMapping("/api/visa/change/reDecision") ApiResult reDecisionChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req); /** - * IM 变洽签全,“发起执行”按钮 + * IM 变洽签群,“发起执行”按钮 + * * @param req * @return */ @PostMapping("/api/visa/change/execute") ApiResult executeChangeRecord(@Validated @RequestBody ChangeRecordButtonOperationReq req); + } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java index 33b2d56e..e6f09f10 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/changerecord/ChangeRecordRelationApi.java @@ -1,10 +1,11 @@ package cn.axzo.nanopart.visa.api.changerecord; import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.nanopart.visa.api.request.ChangeRecordAppendAttachReq; +import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq; import cn.axzo.nanopart.visa.api.request.VisaRelationReq; import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp; -import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; import cn.axzo.nanopart.visa.api.response.VisaRelationResp; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; @@ -30,4 +31,12 @@ public interface ChangeRecordRelationApi { @PostMapping("/api/visa/relation/im/tips") ApiResult queryImGroupTips(@Validated @RequestBody ImGroupTipsQueryReq req); + /** + * 变洽签追加附件 + * + * @param req + * @return + */ + @PostMapping("/api/visa/relation/attach/append") + ApiResult appendAttachment(@Validated @RequestBody ChangeRecordAppendAttachReq req); } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java new file mode 100644 index 00000000..5e82d694 --- /dev/null +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ChangeRecordAppendAttachReq.java @@ -0,0 +1,39 @@ +package cn.axzo.nanopart.visa.api.request; + +import cn.axzo.workflow.common.model.dto.UploadFieldDTO; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 变洽签增加附件 + * + * @author wangli + * @since 2025-02-08 14:19 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ChangeRecordAppendAttachReq { + + /** + * 变洽签主键 ID + */ + @NotNull(message = "变洽签主键 ID") + private Long visaId; + + /** + * 新增的附件 + */ + private List attach; + + private Long operatorPersonId; + + private Long operatorOuId; + +} diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java index 0e1bc9df..c298ba66 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/controller/ChangeRecordRelationController.java @@ -2,6 +2,7 @@ package cn.axzo.nanopart.visa.server.controller; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordRelationApi; +import cn.axzo.nanopart.visa.api.request.ChangeRecordAppendAttachReq; import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq; import cn.axzo.nanopart.visa.api.request.VisaRelationReq; @@ -45,4 +46,10 @@ public class ChangeRecordRelationController implements ChangeRecordRelationApi { public ApiResult queryImGroupTips(ImGroupTipsQueryReq req) { return ApiResult.ok(changeRecordRelationService.queryImGroupTips(req)); } + + @Override + public ApiResult appendAttachment(ChangeRecordAppendAttachReq req) { + changeRecordRelationService.appendAttachment(req); + return ApiResult.ok(); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java index 587e4025..a97e148e 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/WorkflowGateway.java @@ -1,9 +1,9 @@ package cn.axzo.nanopart.visa.server.rpc; -import cn.axzo.pokonyan.util.RpcUtil; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO; +import cn.axzo.workflow.common.model.request.form.instance.FormVariablesUpdateDTO; import cn.axzo.workflow.starter.api.WorkflowCoreService; import cn.axzo.workflow.starter.api.WorkflowManageService; import cn.azxo.framework.common.logger.MethodAroundLog; @@ -48,4 +48,8 @@ public class WorkflowGateway { } + @MethodAroundLog(target = "workflow-engine", source = "nanopart", value = "更新指定流程表单最后一次编辑的内容") + public Boolean updateInstanceFormData(FormVariablesUpdateDTO dto) { + return workflowCoreService.updateInstanceFormVariables(dto); + } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java index bc2d79c3..25577540 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/ChangeRecordRelationService.java @@ -1,6 +1,7 @@ package cn.axzo.nanopart.visa.server.service; import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum; +import cn.axzo.nanopart.visa.api.request.ChangeRecordAppendAttachReq; import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq; import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq; import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq; @@ -33,6 +34,7 @@ public interface ChangeRecordRelationService extends IService findByVisaAndVarName(Long visaId, String varName); boolean deleteByVisaId(Long visaId, List relationTypes); + /** * IM 群聊中,保存 IM 用户操作横条的人 * @@ -43,6 +45,7 @@ public interface ChangeRecordRelationService extends IService existsAttach = findByCondition(VisaRelationDto.builder() + .visaId(req.getVisaId()) + .varName(VisaRelationFieldEnum.ATTACHMENT.name()) + .build()); + AssertUtil.isTrue(existsAttach.size() < 30, "已达到附件数量限制"); + AssertUtil.isTrue(existsAttach.size() + req.getAttach().size() <= 30, "新增的附件数量超过限制"); + + List attach = req.getAttach().stream() + .map(item -> { + ChangeRecordRelation changeRecordRelation = new ChangeRecordRelation(); + changeRecordRelation.setVisaId(req.getVisaId()); + changeRecordRelation.setVarName(VisaRelationFieldEnum.ATTACHMENT.name()); + changeRecordRelation.setVarType(VisaRelationVarTypeEnum.JSON.getType()); + changeRecordRelation.setContent(JSON.toJSONString(item)); + changeRecordRelation.setCreateBy(req.getOperatorPersonId()); + changeRecordRelation.setUpdateBy(req.getOperatorPersonId()); + return changeRecordRelation; + }) + .collect(Collectors.toList()); + saveBatch(attach); + + if (Objects.equals(PROCESSING.getStatus(), visa.getApprovalStatus())) { + FormVariablesUpdateDTO formUpdateDto = new FormVariablesUpdateDTO(); + formUpdateDto.setProcessInstanceId(visa.getApprovalId()); + formUpdateDto.setFormVariables(Maps.of(FORM_FIELD_ATTACH, req.getAttach())); + workflowGateway.updateInstanceFormData(formUpdateDto); + } + + } }