feat(REQ-3581) - 增加用印申请的逻辑
This commit is contained in:
parent
382a5e8de7
commit
f5fd872c3e
@ -45,6 +45,11 @@
|
||||
<artifactId>workflow-engine-common</artifactId>
|
||||
<version>${workflow-engine.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.axzo.nanopart</groupId>
|
||||
<artifactId>ess-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ 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.request.VisaRequestStampReq;
|
||||
import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp;
|
||||
import cn.axzo.nanopart.visa.api.response.VisaRelationResp;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
@ -39,4 +40,12 @@ public interface ChangeRecordRelationApi {
|
||||
*/
|
||||
@PostMapping("/api/visa/relation/attach/append")
|
||||
ApiResult<Void> appendAttachment(@Validated @RequestBody ChangeRecordAppendAttachReq req);
|
||||
|
||||
/**
|
||||
* 用印申请提交
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api/visa/stamp/request")
|
||||
ApiResult<Void> requestStamp(@Validated @RequestBody VisaRequestStampReq req);
|
||||
}
|
||||
|
||||
@ -24,6 +24,7 @@ public enum VisaRelationFieldEnum {
|
||||
PROCESS_INSTANCE_OF_ESS("process_instance_of_ess", "用印审批实例"),
|
||||
ORDER("order", "单据"),
|
||||
IM_GROUP_PARTICIPATE("im_group_participate", "im群聊参与人"),
|
||||
PRINT_PDF_FILE("print_pdf_file", "打印生成的PDF文件"),
|
||||
;
|
||||
private final String code;
|
||||
private final String desc;
|
||||
|
||||
@ -0,0 +1,79 @@
|
||||
package cn.axzo.nanopart.visa.api.request;
|
||||
|
||||
import cn.axzo.nanopart.ess.api.enums.EssSealType;
|
||||
import cn.axzo.workflow.common.model.dto.UploadFieldDTO;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用印申请入参模型
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2025-02-20 22:10
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class VisaRequestStampReq {
|
||||
|
||||
/**
|
||||
* 变洽签单据 ID
|
||||
*/
|
||||
@NotNull(message = "变洽签单据 ID 不能为空")
|
||||
private Long visaId;
|
||||
|
||||
/**
|
||||
* 变洽签打印 PDF 附件信息
|
||||
*/
|
||||
@NotNull(message = "PDF附件信息不能为空")
|
||||
private UploadFieldDTO pdfFile;
|
||||
|
||||
/**
|
||||
* 各单位申请印章信息
|
||||
*/
|
||||
@Valid
|
||||
@NotEmpty(message = "申请用印单位不能为空")
|
||||
private List<RequestStampModel> requestStamps;
|
||||
|
||||
@NotNull(message = "操作人 personId 不能为空")
|
||||
private Long operatorPersonId;
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class RequestStampModel {
|
||||
|
||||
/**
|
||||
* 单位 ID
|
||||
*/
|
||||
@NotNull(message = "单位 ID 不能为空")
|
||||
private Long ouId;
|
||||
|
||||
/**
|
||||
* 印章类型
|
||||
* <p>
|
||||
* OFFICIAL("公章"),
|
||||
* CONTRACT("合同专用章"),
|
||||
* FINANCE("财务专用章"),
|
||||
* PERSONNEL("人事专用章"),
|
||||
* INVOICE("发票专用章"),
|
||||
* LEGAL_PERSON_SEAL("法定代表人章"),
|
||||
* OTHER("其他");
|
||||
*/
|
||||
@NotNull(message = "印章类型不能为空")
|
||||
private EssSealType sealType;
|
||||
|
||||
/**
|
||||
* 审批实例 ID,前端不关心
|
||||
*/
|
||||
private String processInstanceId;
|
||||
}
|
||||
}
|
||||
@ -57,6 +57,10 @@ public class VisaChangePageSearchResp {
|
||||
*/
|
||||
private Date happenTime;
|
||||
|
||||
/**
|
||||
* 审批实例 ID
|
||||
*/
|
||||
private String approvalId;
|
||||
|
||||
/**
|
||||
* 最终审批时间
|
||||
|
||||
@ -6,6 +6,7 @@ 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.request.VisaRequestStampReq;
|
||||
import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp;
|
||||
import cn.axzo.nanopart.visa.api.response.VisaRelationResp;
|
||||
import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation;
|
||||
@ -70,4 +71,10 @@ public class ChangeRecordRelationController implements ChangeRecordRelationApi {
|
||||
changeRecordRelationService.appendAttachment(req);
|
||||
return ApiResult.ok();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Void> requestStamp(VisaRequestStampReq req) {
|
||||
changeRecordRelationService.requestStamp(req);
|
||||
return ApiResult.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaRequestStampReq;
|
||||
import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp;
|
||||
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
|
||||
import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation;
|
||||
@ -67,4 +68,10 @@ public interface ChangeRecordRelationService extends IService<ChangeRecordRelati
|
||||
void appendAttachment(ChangeRecordAppendAttachReq req);
|
||||
|
||||
boolean deleteByIds(List<Long> ids);
|
||||
|
||||
/**
|
||||
* 用印申请
|
||||
* @param req
|
||||
*/
|
||||
void requestStamp(VisaRequestStampReq req);
|
||||
}
|
||||
|
||||
@ -16,6 +16,7 @@ import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaRequestStampReq;
|
||||
import cn.axzo.nanopart.visa.api.response.ImGroupButton;
|
||||
import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp;
|
||||
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
|
||||
@ -27,6 +28,9 @@ import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway;
|
||||
import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway;
|
||||
import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService;
|
||||
import cn.axzo.nanopart.visa.server.service.ChangeRecordService;
|
||||
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import cn.axzo.workflow.common.model.request.form.instance.FormVariablesUpdateDTO;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@ -53,6 +57,8 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_OWNER_TIPS;
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPATE_TIPS;
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPATE_TIPS_OPERATED;
|
||||
import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PRINT_PDF_FILE;
|
||||
import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_ESS;
|
||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING;
|
||||
|
||||
/**
|
||||
@ -360,4 +366,49 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
|
||||
.setSql("is_delete = id")
|
||||
.update();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void requestStamp(VisaRequestStampReq req) {
|
||||
ChangeRecord visa = changeRecordService.getById(req.getVisaId());
|
||||
AssertUtil.notNull(visa, "变洽签单据不存在");
|
||||
|
||||
List<ChangeRecordRelation> relations = req.getRequestStamps().stream().map(i -> {
|
||||
ChangeRecordRelation stamp = new ChangeRecordRelation();
|
||||
stamp.setVisaId(req.getVisaId());
|
||||
stamp.setVarName(PROCESS_INSTANCE_OF_ESS.name());
|
||||
stamp.setVarType(VisaRelationVarTypeEnum.JSON.getType());
|
||||
// 发起用印的审批
|
||||
i.setProcessInstanceId(createEssProcessInstance(i, visa));
|
||||
stamp.setContent(JSON.toJSONString(i));
|
||||
stamp.setCreateBy(req.getOperatorPersonId());
|
||||
stamp.setUpdateBy(req.getOperatorPersonId());
|
||||
return stamp;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
ChangeRecordRelation relation = new ChangeRecordRelation();
|
||||
relation.setVisaId(req.getVisaId());
|
||||
relation.setVarName(PRINT_PDF_FILE.name());
|
||||
relation.setVarType(VisaRelationVarTypeEnum.JSON.getType());
|
||||
relation.setContent(JSON.toJSONString(req.getPdfFile()));
|
||||
relation.setCreateBy(req.getOperatorPersonId());
|
||||
relation.setUpdateBy(req.getOperatorPersonId());
|
||||
relations.add(relation);
|
||||
saveBatch(relations);
|
||||
|
||||
}
|
||||
|
||||
private String createEssProcessInstance(VisaRequestStampReq.RequestStampModel model, ChangeRecord visa) {
|
||||
BpmnProcessInstanceCreateDTO create = new BpmnProcessInstanceCreateDTO();
|
||||
create.setBusinessKey(String.valueOf(model.getOuId()));
|
||||
// TODO
|
||||
create.setSpecifyAssignerMap(Maps.of("", Lists.newArrayList()));
|
||||
create.setTenantId(String.valueOf(visa.getRelationWorkspaceId()));
|
||||
create.setProcessDefinitionKey("");
|
||||
create.setInitiator(BpmnTaskDelegateAssigner.builder()
|
||||
// TODO
|
||||
.build());
|
||||
create.setCooperationOrg(new CooperationOrgDTO());
|
||||
return workflowGateway.processInstanceCreate(create);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user