feat(REQ-3300) - 添加 IM 群聊Tips 的提交审批按钮
This commit is contained in:
parent
f5a7ba894d
commit
7a7aae20c0
@ -112,7 +112,7 @@ public interface ChangeRecordApi {
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api/visa/change/approve/only/create")
|
||||
ApiResult<Long> approveExistsVisaChangeRecord(@Validated @RequestBody VisaChangeApproveOnlyReq req);
|
||||
ApiResult<Long> approveCreateOnlyVisaChangeRecord(@Validated @RequestBody VisaChangeApproveOnlyReq req);
|
||||
|
||||
/**
|
||||
* IM 变洽签群,“废止”按钮
|
||||
|
||||
@ -38,4 +38,10 @@ public class VisaChangeApproveOnlyReq {
|
||||
*/
|
||||
private List<VisaChangeApproveCreateReq.ApprovePersonInfo> approvePersonInfoList;
|
||||
|
||||
private Long operatorPersonId;
|
||||
|
||||
private Long operatorOuId;
|
||||
|
||||
private Long operatorWorkspaceId;
|
||||
|
||||
}
|
||||
|
||||
@ -64,6 +64,11 @@ public class VisaChangeTempCreateReq {
|
||||
@NotNull(message = "请选择工程")
|
||||
@Min(value = 1, message = "请选择工程")
|
||||
private Long relationProject;
|
||||
/**
|
||||
* 工程名称
|
||||
*/
|
||||
@NotBlank(message = "工程名称不能为空")
|
||||
private String relationProjectName;
|
||||
|
||||
/**
|
||||
* 区域集合
|
||||
@ -108,6 +113,7 @@ public class VisaChangeTempCreateReq {
|
||||
/**
|
||||
* 有符号的变更金额
|
||||
*/
|
||||
@NotNull(message = "变更金额不能为空")
|
||||
private BigDecimal amountChange;
|
||||
|
||||
/**
|
||||
|
||||
@ -103,8 +103,8 @@ public class ChangeRecordController implements ChangeRecordApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Long> approveExistsVisaChangeRecord(VisaChangeApproveOnlyReq req) {
|
||||
return null;
|
||||
public ApiResult<Long> approveCreateOnlyVisaChangeRecord(VisaChangeApproveOnlyReq req) {
|
||||
return ApiResult.ok(changeRecordService.approveCreateOnlyVisaChangeRecord(req));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -58,8 +58,29 @@ public class ChangeRecord extends BaseEntity<ChangeRecord> {
|
||||
|
||||
/**
|
||||
* 区域集合
|
||||
* <pre>
|
||||
* [
|
||||
* {
|
||||
* "areaId": 249556,
|
||||
* "childrenAreaList": [
|
||||
* {
|
||||
* "areaId": 249739,
|
||||
* "childrenAreaList": []
|
||||
* }
|
||||
* ]
|
||||
* },
|
||||
* {
|
||||
* "areaId": 249556,
|
||||
* "childrenAreaList": [
|
||||
* {
|
||||
* "areaId": 249739,
|
||||
* "childrenAreaList": []
|
||||
* }
|
||||
* ]
|
||||
* }
|
||||
* ]
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
@TableField(value = "relation_area", typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONArray relationArea;
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ 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.VisaChangeApproveOnlyReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq;
|
||||
@ -104,4 +105,12 @@ public interface ChangeRecordService extends IService<ChangeRecord> {
|
||||
* @param req
|
||||
*/
|
||||
void forbid(ChangeRecordForbidReq req);
|
||||
|
||||
/**
|
||||
* IM 群聊中提交审批
|
||||
*
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
Long approveCreateOnlyVisaChangeRecord(VisaChangeApproveOnlyReq req);
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
|
||||
import cn.axzo.nanopart.visa.server.dto.VisaAddLogContext;
|
||||
import cn.axzo.nanopart.visa.server.dto.VisaLogParam;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
||||
@ -37,7 +37,6 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
@ -360,8 +359,16 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl<ChangeRecordConf
|
||||
Map<Long, PersonProfileDto> personMap = buildPersonDtoMap(list.stream()
|
||||
.map(ChangeRecordConfirm::getPersonId)
|
||||
.collect(Collectors.toSet()));
|
||||
list.stream().map(i-> VisaChangeApproveCreateReq.ApprovePersonInfo.builder().build())
|
||||
return list.stream().map(i -> VisaChangeApproveCreateReq.ApprovePersonInfo.builder()
|
||||
.workspaceId(i.getWorkspaceId())
|
||||
.ouId(i.getOuId())
|
||||
.nodeId(i.getNodeId())
|
||||
.personId(i.getPersonId())
|
||||
.realName(personMap.getOrDefault(i.getPersonId(), new PersonProfileDto())
|
||||
.getRealName())
|
||||
.avatarUrl(personMap.getOrDefault(i.getPersonId(), new PersonProfileDto())
|
||||
.getAvatarUrl())
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,6 +31,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum;
|
||||
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.VisaChangeApproveOnlyReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeExportReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangePageSearchReq;
|
||||
@ -552,7 +553,25 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
||||
/*保存签证信息*/
|
||||
Long visaId = tempCreateVisaChangeRecord(req);
|
||||
|
||||
/*提交审批 TODO 应该可以抽取,在IM 中“重新发起”可复用*/
|
||||
/*提交审批*/
|
||||
String processInstanceId = createProcessInstance(req, visaId);
|
||||
AssertUtil.isTrue(StringUtils.hasText(processInstanceId), "创建审批异常");
|
||||
|
||||
// 更新主表中的审批字段,记录变量表的审批的信息
|
||||
updateApprovalInfo(visaId, processInstanceId);
|
||||
|
||||
// 更新主表状态
|
||||
changeStatus(ChangeStatusRequest.builder()
|
||||
.visaId(visaId)
|
||||
.updateStatus(VisaStatusEnum.APPROVING)
|
||||
.personId(req.getOperatorPersonId())
|
||||
.ouId(req.getOperatorOuId())
|
||||
.workspaceId(req.getRelationWorkspaceId())
|
||||
.build());
|
||||
return visaId;
|
||||
}
|
||||
|
||||
private String createProcessInstance(VisaChangeApproveCreateReq req, Long visaId) {
|
||||
BpmnProcessInstanceCreateDTO processDto = new BpmnProcessInstanceCreateDTO();
|
||||
// 发起时指定审批人
|
||||
processDto.setSpecifyAssignerMap(ImmutableMap.of(req.getActivityId(), buildApprovers(req.getApprovePersonInfoList())));
|
||||
@ -574,12 +593,17 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
||||
formVariables.put(FORM_FIELD_HAPPEN_TIME, req.getHappenTime());
|
||||
formVariables.put(FORM_FIELD_TOPIC, req.getTopic());
|
||||
formVariables.put(FORM_FIELD_RELATION_PROJECT, req.getRelationProject());
|
||||
formVariables.put(FORM_FIELD_RELATION_PROFESSIONAL, req.getRelationProject());
|
||||
formVariables.put(FORM_FIELD_RELATION_PROFESSIONAL, req.getRelationProfessional());
|
||||
formVariables.put(FORM_FIELD_REASON, req.getReason());
|
||||
formVariables.put(FORM_FIELD_RELATION_AREA, req.getRelationArea());
|
||||
formVariables.put(FORM_FIELD_CONTEXT_DESCRIPTION, req.getChangeContextAndDescriptionList());
|
||||
// TODO 变更金额
|
||||
formVariables.put(FORM_FIELD_AMOUNT_CHANGE, "");
|
||||
String amountDesc = "不变";
|
||||
if (req.getAmountChange().compareTo(BigDecimal.ZERO) > 0) {
|
||||
amountDesc = "增加" + req.getAmountChange().toPlainString() + "元";
|
||||
} else if (req.getAmountChange().compareTo(BigDecimal.ZERO) < 0) {
|
||||
amountDesc = "减少" + req.getAmountChange().toPlainString() + "元";
|
||||
}
|
||||
formVariables.put(FORM_FIELD_AMOUNT_CHANGE, amountDesc);
|
||||
|
||||
// 三种单据
|
||||
if (MapUtils.isNotEmpty(req.getRelationOrderMap())) {
|
||||
@ -604,20 +628,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
||||
Map<String, Object> pendingVariables = new HashMap<>();
|
||||
pendingVariables.put(WORKFLOW_PENDING_TOPIC, req.getTopic());
|
||||
processDto.setPendingVariables(pendingVariables);
|
||||
String processInstanceId = workflowGateway.processInstanceCreate(processDto);
|
||||
|
||||
// 更新主表中的审批字段,记录变量表的审批的信息
|
||||
updateApprovalInfo(visaId, processInstanceId);
|
||||
|
||||
// 更新主表状态
|
||||
changeStatus(ChangeStatusRequest.builder()
|
||||
.visaId(visaId)
|
||||
.updateStatus(VisaStatusEnum.APPROVING)
|
||||
.personId(req.getOperatorPersonId())
|
||||
.ouId(req.getOperatorOuId())
|
||||
.workspaceId(req.getRelationWorkspaceId())
|
||||
.build());
|
||||
return visaId;
|
||||
return workflowGateway.processInstanceCreate(processDto);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1045,6 +1056,18 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long approveCreateOnlyVisaChangeRecord(VisaChangeApproveOnlyReq req) {
|
||||
VisaChangeApproveCreateReq createReq = buildVisaChangeApproveCreateReqByVisaId(req.getVisaId());
|
||||
AssertUtil.notNull(createReq, "未找到变洽签单据");
|
||||
createReq.setApprovePersonInfoList(req.getApprovePersonInfoList());
|
||||
createReq.setOperatorOuId(req.getOperatorOuId());
|
||||
createReq.setOperatorPersonId(req.getOperatorPersonId());
|
||||
createReq.setRelationWorkspaceId(req.getOperatorWorkspaceId());
|
||||
createProcessInstance(createReq, req.getVisaId());
|
||||
return req.getVisaId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过变更单id构建审批提交对象
|
||||
*
|
||||
|
||||
Loading…
Reference in New Issue
Block a user