feat(REQ-3300) - 增加变洽签废止功能
This commit is contained in:
parent
984af6df3e
commit
ac46449b80
@ -2,6 +2,7 @@ package cn.axzo.nanopart.visa.api.changerecord;
|
||||
|
||||
import cn.axzo.framework.domain.web.result.ApiPageResult;
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq;
|
||||
@ -10,10 +11,10 @@ import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaDetailByIdRequest;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq;
|
||||
import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaRecordSelectReq;
|
||||
import cn.axzo.nanopart.visa.api.response.VisaChangeInitiatorResp;
|
||||
import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp;
|
||||
import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@ -104,4 +105,12 @@ public interface ChangeRecordApi {
|
||||
*/
|
||||
@PostMapping("/api/visa/change/initiator/list")
|
||||
ApiResult<List<VisaChangeInitiatorResp>> listInitiator(@RequestBody @Validated VisaInitiatorListReq req);
|
||||
|
||||
/**
|
||||
* 变洽签废止
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api/visa/change/record/forbid")
|
||||
ApiResult<Void> forbidChangeRecord(@Validated @RequestBody ChangeRecordForbidReq req);
|
||||
}
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
package cn.axzo.nanopart.visa.api.request;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 变洽签废止
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2025-02-05 20:26
|
||||
*/
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class ChangeRecordForbidReq {
|
||||
|
||||
/**
|
||||
* 变洽签主键 ID
|
||||
*/
|
||||
@NotNull(message = "变洽签 ID 不能为空")
|
||||
private Long visaId;
|
||||
|
||||
/**
|
||||
* 操作人 personId
|
||||
*/
|
||||
@NotNull(message = "操作人 personId 不能为空")
|
||||
private Long operatorPersonId;
|
||||
|
||||
/**
|
||||
* 操作人 ouId
|
||||
*/
|
||||
@NotNull(message = "操作人 ouId 不能为空")
|
||||
private Long operatorOuId;
|
||||
|
||||
/**
|
||||
* 操作人 workspaceId
|
||||
*/
|
||||
@NotNull(message = "操作人 workspaceId 不能为空")
|
||||
private Long operatorWorkspaceId;
|
||||
}
|
||||
@ -4,6 +4,7 @@ import cn.axzo.framework.domain.web.result.ApiPageResult;
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.framework.domain.web.result.PageData;
|
||||
import cn.axzo.nanopart.visa.api.changerecord.ChangeRecordApi;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq;
|
||||
@ -97,4 +98,10 @@ public class ChangeRecordController implements ChangeRecordApi {
|
||||
public ApiResult<List<VisaChangeInitiatorResp>> listInitiator(VisaInitiatorListReq req) {
|
||||
return ApiResult.ok(changeRecordService.listInitiator(req));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Void> forbidChangeRecord(ChangeRecordForbidReq req) {
|
||||
changeRecordService.forbid(req);
|
||||
return ApiResult.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
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.starter.api.WorkflowCoreService;
|
||||
@ -28,6 +29,11 @@ public class WorkflowGateway {
|
||||
return workflowCoreService.createProcessInstance(dto);
|
||||
}
|
||||
|
||||
@MethodAroundLog(target = "workflow-engine", source = "nanopart", value = "中止流程实例")
|
||||
public void processInstanceAbort(BpmnProcessInstanceAbortDTO dto) {
|
||||
workflowCoreService.abortProcessInstance(dto);
|
||||
}
|
||||
|
||||
@MethodAroundLog(target = "workflow-engine", source = "nanopart", value = "查询某个人是否是指定流程的审批人")
|
||||
public Boolean checkInstanceApprover(BpmnProcessInstanceCheckApproverDTO dto) {
|
||||
try {
|
||||
|
||||
@ -2,6 +2,7 @@ package cn.axzo.nanopart.visa.server.service;
|
||||
|
||||
import cn.axzo.framework.domain.web.result.PageData;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq;
|
||||
@ -95,4 +96,11 @@ public interface ChangeRecordService {
|
||||
* @param req 筛查条件和导出字段
|
||||
*/
|
||||
void export(VisaChangeExportReq req);
|
||||
|
||||
/**
|
||||
* 变洽签单据废止,并解散 IM 群聊,中止审批
|
||||
*
|
||||
* @param req
|
||||
*/
|
||||
void forbid(ChangeRecordForbidReq req);
|
||||
}
|
||||
|
||||
@ -14,7 +14,9 @@ import cn.axzo.framework.domain.ServiceException;
|
||||
import cn.axzo.framework.domain.web.result.PageData;
|
||||
import cn.axzo.im.center.api.vo.PersonAccountAttribute;
|
||||
import cn.axzo.im.center.api.vo.req.GroupCreateRequest;
|
||||
import cn.axzo.im.center.api.vo.req.GroupDismissRequest;
|
||||
import cn.axzo.im.center.api.vo.resp.GroupCreateResponse;
|
||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
||||
import cn.axzo.im.center.common.enums.GroupType;
|
||||
import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq;
|
||||
import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp;
|
||||
@ -26,6 +28,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeRecordForbidReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq;
|
||||
@ -63,6 +66,7 @@ import cn.axzo.nanopart.visa.server.service.ChangeRecordService;
|
||||
import cn.axzo.nanopart.visa.server.service.VisaHelper;
|
||||
import cn.axzo.thor.client.model.DrawingMajorResp;
|
||||
import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
@ -153,6 +157,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
||||
private ReportServiceSDK reportServiceSDK;
|
||||
@Resource
|
||||
private WorkflowGateway workflowGateway;
|
||||
@Resource
|
||||
private MsgCenterGateway msgCenterGateway;
|
||||
|
||||
/**
|
||||
* 相关单位确认人人数限制
|
||||
@ -174,8 +180,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
||||
|
||||
@Resource
|
||||
private WorkspaceGateway workspaceGateway;
|
||||
@Resource
|
||||
private MsgCenterGateway msgCenterGateway;
|
||||
|
||||
@Resource
|
||||
private VisaHelper visaHelper;
|
||||
@ -483,15 +487,26 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
||||
request.setGroupType(GroupType.VISA);
|
||||
request.setBizCode(String.valueOf(visaId));
|
||||
request.setName(req.getTopic());
|
||||
// TODO
|
||||
request.setOwner(PersonAccountAttribute.builder().build());
|
||||
// 群主
|
||||
request.setOwner(PersonAccountAttribute.builder()
|
||||
.personId(String.valueOf(req.getOperatorPersonId()))
|
||||
.ouId(req.getOperatorOuId())
|
||||
.workspaceId(req.getRelationWorkspaceId())
|
||||
.appType(AppTypeEnum.CMP)
|
||||
.build());
|
||||
// 群成员
|
||||
if (CollectionUtils.isNotEmpty(req.getDiscussPersonInfoList())) {
|
||||
request.setMembers(req.getDiscussPersonInfoList().stream()
|
||||
.filter(i -> !i.getIsAdmin())
|
||||
.map(i -> PersonAccountAttribute.builder()
|
||||
// TODO
|
||||
.personId(String.valueOf(i.getPersonId()))
|
||||
.ouId(i.getUnitId())
|
||||
.workspaceId(i.getWorkspaceId())
|
||||
.appType(AppTypeEnum.CMP)
|
||||
.build())
|
||||
.collect(Collectors.toSet()));
|
||||
}
|
||||
// 群头像
|
||||
request.setAvatar("");
|
||||
request.setMemberLimit(100L);
|
||||
request.setBizGroupInfo(Maps.of(IM_GROUP_BIZ_INFO_RECORD_ID, visaId));
|
||||
@ -956,5 +971,34 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
||||
.eq(ChangeRecord::getId, visaId).one();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void forbid(ChangeRecordForbidReq req) {
|
||||
ChangeRecord record = getById(req.getVisaId());
|
||||
ChangeStatusRequest changeStatusRequest = new ChangeStatusRequest();
|
||||
changeStatusRequest.setVisaId(req.getVisaId());
|
||||
changeStatusRequest.setUpdateStatus(VisaStatusEnum.FORBIDED);
|
||||
changeStatusRequest.setPersonId(req.getOperatorPersonId());
|
||||
changeStatusRequest.setOuId(req.getOperatorOuId());
|
||||
changeStatusRequest.setWorkspaceId(req.getOperatorWorkspaceId());
|
||||
changeStatus(changeStatusRequest);
|
||||
if (Objects.nonNull(record.getImGroupId())) {
|
||||
GroupDismissRequest request = new GroupDismissRequest();
|
||||
req.setVisaId(req.getVisaId());
|
||||
// 解散 IM 群聊
|
||||
msgCenterGateway.dismissImGroup(request);
|
||||
}
|
||||
if (StringUtils.hasText(record.getApprovalId())) {
|
||||
BpmnProcessInstanceAbortDTO abort = new BpmnProcessInstanceAbortDTO();
|
||||
abort.setProcessInstanceId(record.getApprovalId());
|
||||
// TODO 中止审批的原因
|
||||
abort.setReason("");
|
||||
abort.setAssigner(BpmnTaskDelegateAssigner.builder()
|
||||
.personId(String.valueOf(req.getOperatorPersonId()))
|
||||
.ouId(String.valueOf(req.getOperatorOuId()))
|
||||
.tenantId(String.valueOf(req.getOperatorWorkspaceId()))
|
||||
.build());
|
||||
workflowGateway.processInstanceAbort(abort);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user