Merge remote-tracking branch 'origin/feature/REQ-3300' into feature/REQ-3300
This commit is contained in:
commit
f9f3fd79f5
@ -45,8 +45,14 @@ public interface VisaConstant {
|
|||||||
String FORM_FIELD_REASON = "reason";
|
String FORM_FIELD_REASON = "reason";
|
||||||
// 发生区域
|
// 发生区域
|
||||||
String FORM_FIELD_RELATION_AREA = "relationArea";
|
String FORM_FIELD_RELATION_AREA = "relationArea";
|
||||||
// 发生内容
|
// 发生内容及说明
|
||||||
String FORM_FIELD_CONTEXT_DESCRIPTION = "contextDescription";
|
String FORM_FIELD_CONTEXT_DESCRIPTION = "contextDescription";
|
||||||
|
String FORM_FIELD_CONTEXT = "context";
|
||||||
|
String FORM_FIELD_DESCRIPTION = "description";
|
||||||
|
// 相关单位和人员
|
||||||
|
String FORM_FIELD_UNIT_PERSON = "unitPerson";
|
||||||
|
String FORM_FIELD_UNIT = "unit";
|
||||||
|
String FORM_FIELD_PERSON = "person";
|
||||||
// 变更金额
|
// 变更金额
|
||||||
String FORM_FIELD_AMOUNT_CHANGE = "amountChange";
|
String FORM_FIELD_AMOUNT_CHANGE = "amountChange";
|
||||||
// 关联的任务单单据
|
// 关联的任务单单据
|
||||||
|
|||||||
@ -357,7 +357,12 @@ public class VisaDetailByIdResponse {
|
|||||||
if (CollectionUtils.isEmpty(professionalList)) {
|
if (CollectionUtils.isEmpty(professionalList)) {
|
||||||
return Lists.newArrayList();
|
return Lists.newArrayList();
|
||||||
}
|
}
|
||||||
return professionalList;
|
|
||||||
|
List<RelationProfessionalDetail> filter = professionalList.stream().filter(item -> Objects.nonNull(item) && StringUtils.isNotBlank(item.getCode())).collect(Collectors.toList());
|
||||||
|
if (CollectionUtils.isEmpty(filter)) {
|
||||||
|
return Lists.newArrayList();
|
||||||
|
}
|
||||||
|
return filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -407,7 +412,11 @@ public class VisaDetailByIdResponse {
|
|||||||
if (CollectionUtils.isEmpty(relationAreaList)) {
|
if (CollectionUtils.isEmpty(relationAreaList)) {
|
||||||
return Lists.newArrayList();
|
return Lists.newArrayList();
|
||||||
}
|
}
|
||||||
return relationAreaList;
|
List<RelationAreaDetail> filter = relationAreaList.stream().filter(item -> Objects.nonNull(item) && Objects.nonNull(item.getAreaId())).collect(Collectors.toList());
|
||||||
|
if (CollectionUtils.isEmpty(filter)) {
|
||||||
|
return Lists.newArrayList();
|
||||||
|
}
|
||||||
|
return filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Long> buildAreaWithId(JSONArray relationArea) {
|
public static List<Long> buildAreaWithId(JSONArray relationArea) {
|
||||||
|
|||||||
@ -87,8 +87,8 @@ public class ChangeRecordController implements ChangeRecordApi {
|
|||||||
@Override
|
@Override
|
||||||
public ApiResult<VisaDetailByIdResponse> visaDetailById(@RequestBody @Valid VisaDetailByIdRequest req) {
|
public ApiResult<VisaDetailByIdResponse> visaDetailById(@RequestBody @Valid VisaDetailByIdRequest req) {
|
||||||
VisaDetailByIdResponse resp = changeRecordService.detailById(req.getVisaId());
|
VisaDetailByIdResponse resp = changeRecordService.detailById(req.getVisaId());
|
||||||
resp.setBtnList(VisaButtonTypeEnum.all());
|
// resp.setBtnList(VisaButtonTypeEnum.all());
|
||||||
// resp.setBtnList(changeRecordConfirmService.fetchBtnsByCondition(req.getVisaId(), req.getPersonId(), req.getOuId(), req.getWorkspaceId(), resp.getStatus()));
|
resp.setBtnList(changeRecordConfirmService.fetchBtnsByCondition(req.getVisaId(), req.getPersonId(), req.getOuId(), req.getWorkspaceId(), resp.getStatus()));
|
||||||
return ApiResult.ok(resp);
|
return ApiResult.ok(resp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
|
|||||||
import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum;
|
import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.annotation.FieldStrategy;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||||
@ -127,7 +128,7 @@ public class ChangeRecord extends BaseEntity<ChangeRecord> {
|
|||||||
/**
|
/**
|
||||||
* 最终审批时间
|
* 最终审批时间
|
||||||
*/
|
*/
|
||||||
@TableField(value = "approval_complete_time")
|
@TableField(value = "approval_complete_time", updateStrategy = FieldStrategy.IGNORED)
|
||||||
private Date approvalCompleteTime;
|
private Date approvalCompleteTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -29,7 +29,7 @@ public abstract class BasicLogSupport {
|
|||||||
return buildLogUserInfo(oneUserInfo);
|
return buildLogUserInfo(oneUserInfo);
|
||||||
}
|
}
|
||||||
protected String buildLogUserInfo(OrgNodeUserBriefInfoResp user) {
|
protected String buildLogUserInfo(OrgNodeUserBriefInfoResp user) {
|
||||||
String userInfo = "";
|
String userInfo = "";
|
||||||
if (Objects.nonNull(user)) {
|
if (Objects.nonNull(user)) {
|
||||||
userInfo = user.getRealName() + "(" + user.getJob().getName() + "-" + user.getOrganizationalUnitName() + ")";
|
userInfo = user.getRealName() + "(" + user.getJob().getName() + "-" + user.getOrganizationalUnitName() + ")";
|
||||||
}
|
}
|
||||||
@ -37,10 +37,15 @@ public abstract class BasicLogSupport {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected OrgNodeUserBriefInfoResp getOneUserInfo(BpmnTaskDelegateAssigner assigner) {
|
protected OrgNodeUserBriefInfoResp getOneUserInfo(BpmnTaskDelegateAssigner assigner) {
|
||||||
|
if (Objects.isNull(assigner)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
List<OrgNodeUserBriefInfoResp> users = visaOrganizationalNodeUserGateway.listOrgNodeUsers(OrgNodeUserBriefInfoListReq.builder()
|
List<OrgNodeUserBriefInfoResp> users = visaOrganizationalNodeUserGateway.listOrgNodeUsers(OrgNodeUserBriefInfoListReq.builder()
|
||||||
.workspaceId(Long.valueOf(assigner.getTenantId()))
|
.workspaceId(Long.valueOf(assigner.getTenantId()))
|
||||||
.ouId(Long.valueOf(assigner.getOuId()))
|
.ouId(Long.valueOf(assigner.getOuId()))
|
||||||
.personIds(Lists.newArrayList(Long.valueOf(assigner.getPersonId())))
|
.personIds(Lists.newArrayList(Long.valueOf(assigner.getPersonId())))
|
||||||
|
.needUnit(true)
|
||||||
|
.needJob(true)
|
||||||
.build());
|
.build());
|
||||||
return CollectionUtils.isEmpty(users) ? null : users.get(0);
|
return CollectionUtils.isEmpty(users) ? null : users.get(0);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -86,6 +86,7 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P
|
|||||||
String visaType = (String) dto.getVariables().getOrDefault(WORKFLOW_VAR_VISA_TYPE_KEY, "");
|
String visaType = (String) dto.getVariables().getOrDefault(WORKFLOW_VAR_VISA_TYPE_KEY, "");
|
||||||
return StringUtils.hasText(visaType) ? VisaTypeEnum.valueOf(visaType).getDesc() : "";
|
return StringUtils.hasText(visaType) ? VisaTypeEnum.valueOf(visaType).getDesc() : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCompleted(ProcessInstanceDTO dto) {
|
public void onCompleted(ProcessInstanceDTO dto) {
|
||||||
String visaTypeDesc = parseVisaType(dto);
|
String visaTypeDesc = parseVisaType(dto);
|
||||||
@ -157,15 +158,21 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P
|
|||||||
.eq(ChangeRecord::getIsDelete, 0)
|
.eq(ChangeRecord::getIsDelete, 0)
|
||||||
.oneOpt()
|
.oneOpt()
|
||||||
.ifPresent(changeRecord -> {
|
.ifPresent(changeRecord -> {
|
||||||
changeRecord.setApprovalStatus(resultEnum.getStatus());
|
if (Objects.equals(resultEnum, BpmnProcessInstanceResultEnum.APPROVED)) {
|
||||||
changeRecord.setApprovalCompleteTime(new Date());
|
changeRecord.setApprovalStatus(resultEnum.getStatus());
|
||||||
|
changeRecord.setApprovalCompleteTime(new Date());
|
||||||
|
} else {
|
||||||
|
changeRecord.setApprovalId("");
|
||||||
|
changeRecord.setApprovalStatus("");
|
||||||
|
changeRecord.setApprovalCompleteTime(null);
|
||||||
|
}
|
||||||
changeRecordService.updateById(changeRecord);
|
changeRecordService.updateById(changeRecord);
|
||||||
});
|
});
|
||||||
|
|
||||||
// 更新关联表审批信息
|
// 更新关联表审批信息
|
||||||
changeRecordRelationService.lambdaQuery()
|
changeRecordRelationService.lambdaQuery()
|
||||||
.eq(ChangeRecordRelation::getVisaId, visaId)
|
.eq(ChangeRecordRelation::getVisaId, visaId)
|
||||||
.eq(ChangeRecordRelation::getVarName, PROCESS_INSTANCE.getCode())
|
.eq(ChangeRecordRelation::getVarName, PROCESS_INSTANCE.name())
|
||||||
.eq(ChangeRecordRelation::getContent, dto.getProcessInstanceId())
|
.eq(ChangeRecordRelation::getContent, dto.getProcessInstanceId())
|
||||||
.oneOpt()
|
.oneOpt()
|
||||||
.ifPresent(changeRecordRelation -> {
|
.ifPresent(changeRecordRelation -> {
|
||||||
@ -173,11 +180,15 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P
|
|||||||
changeRecordRelationService.updateById(changeRecordRelation);
|
changeRecordRelationService.updateById(changeRecordRelation);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ChangeRecord visa = changeRecordService.getById(visaId);
|
||||||
if (Objects.equals(resultEnum, BpmnProcessInstanceResultEnum.APPROVED)) {
|
if (Objects.equals(resultEnum, BpmnProcessInstanceResultEnum.APPROVED)) {
|
||||||
|
changeRecordService.changeStatus(ChangeStatusRequest.builder()
|
||||||
|
.visaId(visaId)
|
||||||
|
.updateStatus(VisaStatusEnum.COMPLETED)
|
||||||
|
.build());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 回退到待提报或决策中
|
// 回退到待提报或决策中
|
||||||
ChangeRecord visa = changeRecordService.getById(visaId);
|
|
||||||
changeRecordService.changeStatus(ChangeStatusRequest.builder()
|
changeRecordService.changeStatus(ChangeStatusRequest.builder()
|
||||||
.visaId(visaId)
|
.visaId(visaId)
|
||||||
.updateStatus(Objects.isNull(visa.getImGroupId()) ? VisaStatusEnum.REPORT_FROM_APPROVE : VisaStatusEnum.DECIDING_FROM_APPROVE)
|
.updateStatus(Objects.isNull(visa.getImGroupId()) ? VisaStatusEnum.REPORT_FROM_APPROVE : VisaStatusEnum.DECIDING_FROM_APPROVE)
|
||||||
|
|||||||
@ -10,6 +10,8 @@ import cn.axzo.workflow.common.model.response.mq.ProcessTaskDTO;
|
|||||||
import cn.axzo.workflow.starter.handler.ProcessTaskEventHandler;
|
import cn.axzo.workflow.starter.handler.ProcessTaskEventHandler;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVED_AGRESS;
|
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVED_AGRESS;
|
||||||
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TRANSMIT_APPROVE;
|
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TRANSMIT_APPROVE;
|
||||||
|
|
||||||
@ -53,8 +55,8 @@ public class ProcessTaskAllEventHandler extends BasicLogSupport implements Proce
|
|||||||
ChangeRecordLog log = ChangeRecordLog.builder()
|
ChangeRecordLog log = ChangeRecordLog.builder()
|
||||||
.visaId(Long.valueOf(dto.getBusinessKey()))
|
.visaId(Long.valueOf(dto.getBusinessKey()))
|
||||||
.action(dto.getType().getTag())
|
.action(dto.getType().getTag())
|
||||||
.title(String.format(APPROVED_AGRESS.getTitle(), user.getRealName()))
|
.title(String.format(APPROVED_AGRESS.getTitle(), Objects.isNull(user) ? "" : user.getRealName()))
|
||||||
.content(String.format(APPROVED_AGRESS.getContent(), buildLogUserInfo(user)))
|
.content(String.format(APPROVED_AGRESS.getContent(), Objects.isNull(user) ? "系统自动通过" : buildLogUserInfo(user)))
|
||||||
.build();
|
.build();
|
||||||
eventProducer.send(VisaChangeLogPayload.form(log));
|
eventProducer.send(VisaChangeLogPayload.form(log));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import cn.axzo.apollo.workspace.api.workspace.res.GetDetailRes;
|
|||||||
import cn.axzo.apollo.workspace.api.workspace.res.ProjectBriefResp;
|
import cn.axzo.apollo.workspace.api.workspace.res.ProjectBriefResp;
|
||||||
import cn.axzo.apollo.workspace.api.workspace.res.ProjectDetailRes;
|
import cn.axzo.apollo.workspace.api.workspace.res.ProjectDetailRes;
|
||||||
import cn.axzo.basics.common.constant.enums.OrganizationalNodeTypeEnum;
|
import cn.axzo.basics.common.constant.enums.OrganizationalNodeTypeEnum;
|
||||||
|
import cn.axzo.basics.common.constant.enums.OrganizationalUnitTypeEnum;
|
||||||
import cn.axzo.basics.common.util.AssertUtil;
|
import cn.axzo.basics.common.util.AssertUtil;
|
||||||
import cn.axzo.basics.common.util.NumberUtil;
|
import cn.axzo.basics.common.util.NumberUtil;
|
||||||
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
||||||
@ -26,6 +27,7 @@ import cn.axzo.im.center.common.enums.AppTypeEnum;
|
|||||||
import cn.axzo.im.center.common.enums.GroupType;
|
import cn.axzo.im.center.common.enums.GroupType;
|
||||||
import cn.axzo.maokai.api.vo.request.CooperateShipQueryReq;
|
import cn.axzo.maokai.api.vo.request.CooperateShipQueryReq;
|
||||||
import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq;
|
import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq;
|
||||||
|
import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery;
|
||||||
import cn.axzo.maokai.api.vo.response.CooperateShipResp;
|
import cn.axzo.maokai.api.vo.response.CooperateShipResp;
|
||||||
import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp;
|
import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp;
|
||||||
import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO;
|
import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO;
|
||||||
@ -90,7 +92,6 @@ import cn.axzo.nanopart.visa.server.utils.Constants;
|
|||||||
import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO;
|
import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO;
|
||||||
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
|
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
|
||||||
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
|
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
|
||||||
import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
|
|
||||||
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO;
|
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO;
|
||||||
import cn.axzo.workflow.common.model.dto.UploadFieldDTO;
|
import cn.axzo.workflow.common.model.dto.UploadFieldDTO;
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO;
|
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO;
|
||||||
@ -136,9 +137,12 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_AMOUNT_CHANGE;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_AMOUNT_CHANGE;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_ATTACH;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_ATTACH;
|
||||||
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_CONTEXT;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_CONTEXT_DESCRIPTION;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_CONTEXT_DESCRIPTION;
|
||||||
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_DESCRIPTION;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_HAPPEN_TIME;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_HAPPEN_TIME;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_NO;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_NO;
|
||||||
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_PERSON;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_REASON;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_REASON;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_AREA;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_AREA;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_PROFESSIONAL;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_PROFESSIONAL;
|
||||||
@ -147,6 +151,8 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATIO
|
|||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_TASK_ORDER;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_TASK_ORDER;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_VISA_ORDER;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_VISA_ORDER;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC;
|
||||||
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_UNIT;
|
||||||
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_UNIT_PERSON;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE;
|
||||||
@ -154,6 +160,7 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.MSG_CENTER_APP_COD
|
|||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY;
|
||||||
import static cn.axzo.nanopart.visa.server.utils.Constants.DATE_FORMAT;
|
import static cn.axzo.nanopart.visa.server.utils.Constants.DATE_FORMAT;
|
||||||
|
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author xudawei
|
* @author xudawei
|
||||||
@ -714,19 +721,21 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
final SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
|
final SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
|
||||||
formVariables.put(FORM_FIELD_HAPPEN_TIME, sdf.format(req.getHappenTime()));
|
formVariables.put(FORM_FIELD_HAPPEN_TIME, sdf.format(req.getHappenTime()));
|
||||||
formVariables.put(FORM_FIELD_TOPIC, req.getTopic());
|
formVariables.put(FORM_FIELD_TOPIC, req.getTopic());
|
||||||
formVariables.put(FORM_FIELD_RELATION_PROJECT, req.getRelationProject());
|
ProjectDetailRes projectDetailRes = visaProjectApiGateway.getProjectById(req.getRelationProject());
|
||||||
|
formVariables.put(FORM_FIELD_RELATION_PROJECT, projectDetailRes.getProjectInfo().getName());
|
||||||
formVariables.put(FORM_FIELD_RELATION_PROFESSIONAL, visaHelper.buildProfessionalName(req.getRelationProject(), req.getRelationProfessional()));
|
formVariables.put(FORM_FIELD_RELATION_PROFESSIONAL, visaHelper.buildProfessionalName(req.getRelationProject(), req.getRelationProfessional()));
|
||||||
formVariables.put(FORM_FIELD_REASON, req.getReason());
|
formVariables.put(FORM_FIELD_REASON, req.getReason());
|
||||||
formVariables.put(FORM_FIELD_RELATION_AREA, visaHelper.buildAreaName(req.getRelationArea()));
|
formVariables.put(FORM_FIELD_RELATION_AREA, visaHelper.buildAreaName(req.getRelationArea()));
|
||||||
formVariables.put(FORM_FIELD_CONTEXT_DESCRIPTION, req.getChangeContextAndDescriptionList());
|
formVariables.put(FORM_FIELD_CONTEXT_DESCRIPTION, buildContextDescription(req.getChangeContextAndDescriptionList()));
|
||||||
|
formVariables.put(FORM_FIELD_UNIT_PERSON, buildUnitPerson(req.getRelationUnitAndPersonList(), req.getRelationWorkspaceId()));
|
||||||
|
|
||||||
// 非必填项
|
// 非必填项
|
||||||
if (Objects.nonNull(req.getAmountChange())) {
|
if (Objects.nonNull(req.getAmountChange())) {
|
||||||
String amountDesc = "不变";
|
String amountDesc = "不变";
|
||||||
if (req.getAmountChange().compareTo(BigDecimal.ZERO) > 0) {
|
if (req.getAmountChange().compareTo(BigDecimal.ZERO) > 0) {
|
||||||
amountDesc = "增加" + req.getAmountChange().toPlainString() + "元";
|
amountDesc = "增加" + req.getAmountChange().abs().toPlainString() + "元";
|
||||||
} else if (req.getAmountChange().compareTo(BigDecimal.ZERO) < 0) {
|
} else if (req.getAmountChange().compareTo(BigDecimal.ZERO) < 0) {
|
||||||
amountDesc = "减少" + req.getAmountChange().toPlainString() + "元";
|
amountDesc = "减少" + req.getAmountChange().abs().toPlainString() + "元";
|
||||||
}
|
}
|
||||||
formVariables.put(FORM_FIELD_AMOUNT_CHANGE, amountDesc);
|
formVariables.put(FORM_FIELD_AMOUNT_CHANGE, amountDesc);
|
||||||
}
|
}
|
||||||
@ -765,6 +774,76 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
return workflowGateway.processInstanceCreate(processDto);
|
return workflowGateway.processInstanceCreate(processDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<Map<String, Object>> buildUnitPerson(List<VisaChangeTempCreateReq.RelationUnitAndPerson> list, Long workspaceId) {
|
||||||
|
if (CollectionUtils.isEmpty(list)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
List<Long> ouIds = list.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getOuId).distinct().collect(Collectors.toList());
|
||||||
|
Map<Long, OrganizationalUnitVO> unitMap = organizationalUnitGateway.list(OrganizationalUnitQuery.builder().unitIds(ouIds).build())
|
||||||
|
.stream().collect(Collectors.toMap(OrganizationalUnitVO::getId, Function.identity(), (s, t) -> s));
|
||||||
|
|
||||||
|
Map<Long, List<VisaChangeTempCreateReq.RelationUnitAndPerson>> unitGroupBy = list.stream().collect(Collectors.groupingBy(VisaChangeTempCreateReq.RelationUnitAndPerson::getOuId, Collectors.toList()));
|
||||||
|
List<Map<String, Object>> unitPersons = new ArrayList<>();
|
||||||
|
|
||||||
|
unitGroupBy.forEach((unitId, persons) -> {
|
||||||
|
Map<String, Object> unitPerson = new HashMap<>();
|
||||||
|
OrganizationalUnitVO unitVo = unitMap.get(unitId);
|
||||||
|
unitPerson.put(FORM_FIELD_UNIT, Objects.isNull(unitVo) ? "" : unitVo.getName() + "(" + OrganizationalUnitTypeEnum.getByType(unitVo.getType()).getDesc() + ")");
|
||||||
|
List<OrgNodeUserDTO> personInfos = getPersonInfos(workspaceId, unitId, persons);
|
||||||
|
unitPerson.put(FORM_FIELD_PERSON, buildPersonInfosStr(personInfos));
|
||||||
|
unitPersons.add(unitPerson);
|
||||||
|
});
|
||||||
|
|
||||||
|
return unitPersons;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildPersonInfosStr(List<OrgNodeUserDTO> personInfos) {
|
||||||
|
StringBuilder personInfosStr = new StringBuilder();
|
||||||
|
if (CollectionUtils.isEmpty(personInfos)) {
|
||||||
|
return personInfosStr.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (OrgNodeUserDTO info : personInfos) {
|
||||||
|
if (personInfosStr.length() > 0) {
|
||||||
|
personInfosStr.append(",");
|
||||||
|
}
|
||||||
|
personInfosStr.append(info.getPersonProfile().getRealName())
|
||||||
|
.append("-")
|
||||||
|
.append(info.getJob().getName());
|
||||||
|
}
|
||||||
|
return personInfosStr.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<OrgNodeUserDTO> getPersonInfos(Long workspaceId, Long unitId, List<VisaChangeTempCreateReq.RelationUnitAndPerson> persons) {
|
||||||
|
PageResp<OrgNodeUserDTO> pageResp = visaOrganizationalNodeUserGateway.list(ListOrgNodeUserReq.builder()
|
||||||
|
.personIds(persons.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getPersonId).collect(Collectors.toList()))
|
||||||
|
.organizationalUnitId(unitId)
|
||||||
|
.workspaceId(workspaceId)
|
||||||
|
.needs(ListNodeUserReq.Needs.builder().job(true).personProfile(true).build()).build());
|
||||||
|
if (Objects.isNull(pageResp) || CollectionUtils.isEmpty(pageResp.getData())) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return pageResp.getData();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Map<String, Object>> buildContextDescription(List<VisaChangeTempCreateReq.ChangeContextAndDescription> list) {
|
||||||
|
if (CollectionUtils.isEmpty(list)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
List<Map<String, Object>> contextDescriptions = new ArrayList<>();
|
||||||
|
list.forEach(i -> {
|
||||||
|
Map<String, Object> contextDescription = new HashMap<>();
|
||||||
|
UploadFieldDTO uploadFieldDTO = new UploadFieldDTO();
|
||||||
|
uploadFieldDTO.setFileKey(i.getFileKey());
|
||||||
|
uploadFieldDTO.setFileName(i.getFileName());
|
||||||
|
uploadFieldDTO.setFileUrl(i.getFileUrl());
|
||||||
|
contextDescription.put(FORM_FIELD_CONTEXT, uploadFieldDTO);
|
||||||
|
contextDescription.put(FORM_FIELD_DESCRIPTION, i.getText());
|
||||||
|
contextDescriptions.add(contextDescription);
|
||||||
|
});
|
||||||
|
return contextDescriptions;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新
|
* 更新
|
||||||
*
|
*
|
||||||
@ -776,16 +855,16 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
ChangeRecord changeRecord = new ChangeRecord();
|
ChangeRecord changeRecord = new ChangeRecord();
|
||||||
changeRecord.setId(visaId);
|
changeRecord.setId(visaId);
|
||||||
changeRecord.setApprovalId(processInstanceId);
|
changeRecord.setApprovalId(processInstanceId);
|
||||||
changeRecord.setApprovalStatus(BpmnProcessInstanceResultEnum.PROCESSING.getStatus());
|
changeRecord.setApprovalStatus(PROCESSING.getStatus());
|
||||||
updateById(changeRecord);
|
updateById(changeRecord);
|
||||||
|
|
||||||
// 设置关联表的审批信息
|
// 设置关联表的审批信息
|
||||||
ChangeRecordRelation processRelation = new ChangeRecordRelation();
|
ChangeRecordRelation processRelation = new ChangeRecordRelation();
|
||||||
processRelation.setVisaId(visaId);
|
processRelation.setVisaId(visaId);
|
||||||
processRelation.setVarName(VisaRelationFieldEnum.PROCESS_INSTANCE.getCode());
|
processRelation.setVarName(VisaRelationFieldEnum.PROCESS_INSTANCE.name());
|
||||||
processRelation.setVarType(VisaRelationVarTypeEnum.STRING.getType());
|
processRelation.setVarType(VisaRelationVarTypeEnum.STRING.getType());
|
||||||
processRelation.setContent(processInstanceId);
|
processRelation.setContent(processInstanceId);
|
||||||
processRelation.setContentExt(BpmnProcessInstanceResultEnum.PROCESSING.getStatus());
|
processRelation.setContentExt(PROCESSING.getStatus());
|
||||||
changeRecordRelationService.save(processRelation);
|
changeRecordRelationService.save(processRelation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1391,11 +1470,16 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Long approveCreateOnlyVisaChangeRecord(VisaChangeApproveOnlyReq req) {
|
public Long approveCreateOnlyVisaChangeRecord(VisaChangeApproveOnlyReq req) {
|
||||||
ChangeRecord visa = getById(req.getVisaId());
|
ChangeRecord visa = getById(req.getVisaId());
|
||||||
req.setOperatorWorkspaceId(visa.getRelationWorkspaceId());
|
req.setOperatorWorkspaceId(visa.getRelationWorkspaceId());
|
||||||
validOperationPermission(req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getOperatorWorkspaceId());
|
validOperationPermission(req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getOperatorWorkspaceId());
|
||||||
|
|
||||||
|
AssertUtil.isTrue(!StringUtils.hasText(visa.getApprovalId())
|
||||||
|
|| (StringUtils.hasText(visa.getApprovalId()) && !Objects.equals(VisaStatusEnum.APPROVING.name(), visa.getApprovalStatus())),
|
||||||
|
"当前单据审批中,不允许操作");
|
||||||
|
|
||||||
// 组装 REQ 参数
|
// 组装 REQ 参数
|
||||||
VisaChangeApproveCreateReq createReq = buildVisaChangeApproveCreateReqByVisaId(req.getVisaId());
|
VisaChangeApproveCreateReq createReq = buildVisaChangeApproveCreateReqByVisaId(req.getVisaId());
|
||||||
AssertUtil.notNull(createReq, "未找到变洽签单据");
|
AssertUtil.notNull(createReq, "未找到变洽签单据");
|
||||||
@ -1408,10 +1492,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
createReq.setOperatorOuId(req.getOperatorOuId());
|
createReq.setOperatorOuId(req.getOperatorOuId());
|
||||||
createReq.setOperatorPersonId(req.getOperatorPersonId());
|
createReq.setOperatorPersonId(req.getOperatorPersonId());
|
||||||
createReq.setRelationWorkspaceId(req.getOperatorWorkspaceId());
|
createReq.setRelationWorkspaceId(req.getOperatorWorkspaceId());
|
||||||
String processInstanceId = createProcessInstance(createReq, req.getVisaId());
|
|
||||||
|
|
||||||
// 更新主表中的审批字段,记录变量表的审批的信息
|
|
||||||
updateApprovalInfo(visa.getId(), processInstanceId);
|
|
||||||
|
|
||||||
// 更新主表状态
|
// 更新主表状态
|
||||||
changeStatus(ChangeStatusRequest.builder()
|
changeStatus(ChangeStatusRequest.builder()
|
||||||
@ -1421,6 +1501,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
.ouId(req.getOperatorOuId())
|
.ouId(req.getOperatorOuId())
|
||||||
.workspaceId(req.getOperatorWorkspaceId())
|
.workspaceId(req.getOperatorWorkspaceId())
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
|
String processInstanceId = createProcessInstance(createReq, req.getVisaId());
|
||||||
|
// 更新主表中的审批字段,记录变量表的审批的信息
|
||||||
|
updateApprovalInfo(visa.getId(), processInstanceId);
|
||||||
return req.getVisaId();
|
return req.getVisaId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user