Merge remote-tracking branch 'origin/feature/REQ-3581' into feature/REQ-3581
This commit is contained in:
commit
8f61e4ed02
@ -2,6 +2,7 @@ package cn.axzo.nanopart.config.exception;
|
|||||||
|
|
||||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||||
import cn.axzo.pokonyan.exception.BusinessException;
|
import cn.axzo.pokonyan.exception.BusinessException;
|
||||||
|
import cn.axzo.workflow.common.exception.WorkflowEngineException;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.core.annotation.Order;
|
import org.springframework.core.annotation.Order;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
@ -37,13 +38,13 @@ public class ExceptionAdviceHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ExceptionHandler(cn.axzo.framework.domain.ServiceException.class)
|
@ExceptionHandler(cn.axzo.framework.domain.ServiceException.class)
|
||||||
public ApiResult<Void> domainServiceExceptionHandler(cn.axzo.framework.domain.ServiceException e){
|
public ApiResult<Void> domainServiceExceptionHandler(cn.axzo.framework.domain.ServiceException e) {
|
||||||
log.warn("业务异常", e);
|
log.warn("业务异常", e);
|
||||||
return ApiResult.err(e.getMessage());
|
return ApiResult.err(e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExceptionHandler(BusinessException.class)
|
@ExceptionHandler(BusinessException.class)
|
||||||
public ApiResult<Void> businessExceptionHandler(BusinessException e){
|
public ApiResult<Void> businessExceptionHandler(BusinessException e) {
|
||||||
log.warn("业务异常", e);
|
log.warn("业务异常", e);
|
||||||
return ApiResult.err(e.getErrorMsg());
|
return ApiResult.err(e.getErrorMsg());
|
||||||
}
|
}
|
||||||
@ -65,4 +66,10 @@ public class ExceptionAdviceHandler {
|
|||||||
log.warn("业务异常", e);
|
log.warn("业务异常", e);
|
||||||
return ApiResult.err(e.getErrorMsg());
|
return ApiResult.err(e.getErrorMsg());
|
||||||
}
|
}
|
||||||
|
@ExceptionHandler(WorkflowEngineException.class)
|
||||||
|
public ApiResult<Void> workflowExceptionHandler(WorkflowEngineException e) {
|
||||||
|
log.warn("业务异常", e);
|
||||||
|
return ApiResult.err(e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -211,6 +211,11 @@ public class VisaDetailByIdResponse {
|
|||||||
*/
|
*/
|
||||||
private String approvalStatus;
|
private String approvalStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前登录人的personId
|
||||||
|
*/
|
||||||
|
private Long currentPersonId;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
|||||||
@ -46,10 +46,16 @@ public class VisaExportDto {
|
|||||||
private String topic;
|
private String topic;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工程
|
* 有符号的变更金额
|
||||||
*/
|
*/
|
||||||
@ExcelProperty("所属工程")
|
@ExcelProperty("金额变化")
|
||||||
private String relationProject;
|
private BigDecimal amountChange;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发起人
|
||||||
|
*/
|
||||||
|
@ExcelProperty("发起人")
|
||||||
|
private String initiator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提出时间
|
* 提出时间
|
||||||
@ -57,12 +63,6 @@ public class VisaExportDto {
|
|||||||
@ExcelProperty("提出时间")
|
@ExcelProperty("提出时间")
|
||||||
private Date happenTime;
|
private Date happenTime;
|
||||||
|
|
||||||
/**
|
|
||||||
* 有符号的变更金额
|
|
||||||
*/
|
|
||||||
@ExcelProperty("金额变化")
|
|
||||||
private BigDecimal amountChange;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最终审批时间
|
* 最终审批时间
|
||||||
*/
|
*/
|
||||||
@ -70,8 +70,8 @@ public class VisaExportDto {
|
|||||||
private Date approvalCompleteTime;
|
private Date approvalCompleteTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发起人
|
* 工程
|
||||||
*/
|
*/
|
||||||
@ExcelProperty("发起人")
|
@ExcelProperty("所属工程")
|
||||||
private String initiator;
|
private String relationProject;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
package cn.axzo.nanopart.visa.server.rpc;
|
package cn.axzo.nanopart.visa.server.rpc;
|
||||||
|
|
||||||
|
import cn.axzo.foundation.result.ApiResult;
|
||||||
import cn.axzo.karma.client.feign.tyr.DataObjectApi;
|
import cn.axzo.karma.client.feign.tyr.DataObjectApi;
|
||||||
import cn.axzo.karma.client.feign.tyr.request.MatchDataObjectReq;
|
import cn.axzo.karma.client.feign.tyr.request.MatchDataObjectReq;
|
||||||
import cn.axzo.karma.client.feign.tyr.response.MatchDataObjectResp;
|
import cn.axzo.karma.client.feign.tyr.response.MatchDataObjectResp;
|
||||||
import cn.axzo.karma.client.feign.tyr.response.MergeMatchDataResp;
|
import cn.axzo.karma.client.feign.tyr.response.MergeMatchDataResp;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -27,11 +29,11 @@ public class DataObjectApiGateway {
|
|||||||
return MatchDataObjectResp.builder().build();
|
return MatchDataObjectResp.builder().build();
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
// log.info("DataObjectApiGateway match, params:{}", JSON.toJSONString(req));
|
log.info("DataObjectApiGateway match, params:{}", JSON.toJSONString(req));
|
||||||
// ApiResult<MatchDataObjectResp> match = dataObjectApi.match(req);
|
ApiResult<MatchDataObjectResp> match = dataObjectApi.match(req);
|
||||||
// log.info("DataObjectApiGateway match, result:{}", JSON.toJSONString(match));
|
log.info("DataObjectApiGateway match, result:{}", JSON.toJSONString(match));
|
||||||
// return match.getData();
|
return match.getData();
|
||||||
return mockDataObject();
|
// return mockDataObject();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.warn("DataObjectApiGateway match exception", e);
|
log.warn("DataObjectApiGateway match exception", e);
|
||||||
throw e;
|
throw e;
|
||||||
|
|||||||
@ -7,7 +7,6 @@ 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;
|
||||||
@ -30,7 +29,6 @@ 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.log.platform.client.model.req.LogAddReq;
|
import cn.axzo.log.platform.client.model.req.LogAddReq;
|
||||||
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.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;
|
||||||
import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum;
|
import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum;
|
||||||
@ -101,7 +99,6 @@ 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.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.request.bpmn.process.BpmnProcessInstanceAbortDTO;
|
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.process.BpmnProcessInstanceCreateDTO;
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||||
@ -119,7 +116,6 @@ import com.google.common.collect.Lists;
|
|||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.collections.MapUtils;
|
|
||||||
import org.apache.groovy.util.Maps;
|
import org.apache.groovy.util.Maps;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
@ -130,7 +126,6 @@ import org.springframework.util.StringUtils;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -141,30 +136,10 @@ import java.util.HashSet;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
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_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_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_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_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_PROJECT;
|
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_RECTIFICATION_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_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.FORM_FIELD_WORKSPACE_NAME;
|
|
||||||
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;
|
||||||
@ -176,7 +151,6 @@ import static cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq.VisaStampAct
|
|||||||
import static cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq.VisaStampAction.CANCEL;
|
import static cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq.VisaStampAction.CANCEL;
|
||||||
import static cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq.VisaStampAction.COMPLETE;
|
import static cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq.VisaStampAction.COMPLETE;
|
||||||
import static cn.axzo.nanopart.visa.server.config.BizResultCode.CHANGE_RECORD_NOT_FOUND;
|
import static cn.axzo.nanopart.visa.server.config.BizResultCode.CHANGE_RECORD_NOT_FOUND;
|
||||||
import static cn.axzo.nanopart.visa.server.service.VisaHelper.buildPersonInfosStr;
|
|
||||||
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;
|
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING;
|
||||||
|
|
||||||
@ -836,6 +810,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
PersonProfileDto profile = visaProfileGateway.getProfile(req.getOperatorPersonId());
|
PersonProfileDto profile = visaProfileGateway.getProfile(req.getOperatorPersonId());
|
||||||
pendingVariables.put(WORKFLOW_PENDING_INITIATOR_NAME, profile.getRealName());
|
pendingVariables.put(WORKFLOW_PENDING_INITIATOR_NAME, profile.getRealName());
|
||||||
pendingVariables.put(WORKFLOW_PENDING_TOPIC, req.getTopic());
|
pendingVariables.put(WORKFLOW_PENDING_TOPIC, req.getTopic());
|
||||||
|
pendingVariables.put(IM_GROUP_BIZ_INFO_VISA_ID, visaId);
|
||||||
|
pendingVariables.put(IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID, req.getRelationWorkspaceId());
|
||||||
processDto.setPendingVariables(pendingVariables);
|
processDto.setPendingVariables(pendingVariables);
|
||||||
processDto.setCooperationOrg(new CooperationOrgDTO());
|
processDto.setCooperationOrg(new CooperationOrgDTO());
|
||||||
return workflowGateway.processInstanceCreate(processDto);
|
return workflowGateway.processInstanceCreate(processDto);
|
||||||
@ -1049,10 +1025,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
String scene = "变更签证表";
|
String scene = "变更签证表";
|
||||||
String fileName = String.format("变更签证单%s", DateUtil.format(new Date(), "yyyyMMddHHmmss"));
|
String fileName = String.format("变更签证单%s", DateUtil.format(new Date(), "yyyyMMddHHmmss"));
|
||||||
String sheetName = "变更签证表";
|
String sheetName = "变更签证表";
|
||||||
String headerName = "变更签证单";
|
// String headerName = "变更签证单"; // 不同版本office打开表头合并单元格存在样式问题,暂不设置
|
||||||
SheetWrapper sheetWrapper = SheetWrapper.builder()
|
SheetWrapper sheetWrapper = SheetWrapper.builder()
|
||||||
.headClass(VisaExportDto.class)
|
.headClass(VisaExportDto.class)
|
||||||
.title(headerName)
|
// .title(headerName)
|
||||||
.sheetName(sheetName)
|
.sheetName(sheetName)
|
||||||
.includeColumnFieldNames(fields.stream()
|
.includeColumnFieldNames(fields.stream()
|
||||||
.map(VisaChangeFieldEnum::getValue)
|
.map(VisaChangeFieldEnum::getValue)
|
||||||
@ -1401,38 +1377,53 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
String.format("最多可关联%d个%s单,请重新选择", refreshableConfiguration.getVerifyVisaLimit(), VisaBillTypeEnum.valueOf(key).getDesc()));
|
String.format("最多可关联%d个%s单,请重新选择", refreshableConfiguration.getVerifyVisaLimit(), VisaBillTypeEnum.valueOf(key).getDesc()));
|
||||||
if (Objects.equals(VisaBillTypeEnum.TASK.name(), key)) {
|
if (Objects.equals(VisaBillTypeEnum.TASK.name(), key)) {
|
||||||
/*任务单*/
|
/*任务单*/
|
||||||
List<String> taskNos = value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getNo).collect(Collectors.toList());
|
List<String> taskNos = value.stream()
|
||||||
// 存在性
|
.map(VisaChangeTempCreateReq.OrderSimpleModel::getNo)
|
||||||
QueryOrderToBasicReq queryOrderToBasicReq = new QueryOrderToBasicReq();
|
.filter(StringUtils::hasText)
|
||||||
queryOrderToBasicReq.setWorkspaceId(req.getRelationWorkspaceId());
|
.collect(Collectors.toList());
|
||||||
queryOrderToBasicReq.setTaskNos(taskNos);
|
if (CollUtil.isNotEmpty(taskNos)) {
|
||||||
queryOrderToBasicReq.setPage(1);
|
// 存在性
|
||||||
queryOrderToBasicReq.setPageSize(taskNos.size());
|
QueryOrderToBasicReq queryOrderToBasicReq = new QueryOrderToBasicReq();
|
||||||
List<TaskOrderToBasicRes> taskOrders = taskOrderApiGateway.pageOrderByForBasic(queryOrderToBasicReq).getData();
|
queryOrderToBasicReq.setWorkspaceId(req.getRelationWorkspaceId());
|
||||||
AssertUtil.isTrue(taskOrders.size() == taskNos.size(), "关联任务单单据不存在,请检查后重试");
|
queryOrderToBasicReq.setTaskNos(taskNos);
|
||||||
validTaskBillIfRelated(taskNos, req.getType());
|
queryOrderToBasicReq.setPage(1);
|
||||||
|
queryOrderToBasicReq.setPageSize(taskNos.size());
|
||||||
|
List<TaskOrderToBasicRes> taskOrders = taskOrderApiGateway.pageOrderByForBasic(queryOrderToBasicReq).getData();
|
||||||
|
AssertUtil.isTrue(CollectionUtils.isNotEmpty(taskOrders) && taskOrders.size() == taskNos.size(), "关联任务单单据不存在,请检查后重试");
|
||||||
|
validTaskBillIfRelated(taskNos, req.getType());
|
||||||
|
}
|
||||||
} else if (Objects.equals(VisaBillTypeEnum.RECTIFY.name(), key)) {
|
} else if (Objects.equals(VisaBillTypeEnum.RECTIFY.name(), key)) {
|
||||||
/*整改单*/
|
/*整改单*/
|
||||||
List<String> billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList());
|
List<String> billIds = value.stream()
|
||||||
// 存在性
|
.map(v -> String.valueOf(v.getId()))
|
||||||
ListRectifyOrderReq rectifyOrderReq = ListRectifyOrderReq.builder()
|
.filter(StringUtils::hasText)
|
||||||
.ids(value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toSet()))
|
.collect(Collectors.toList());
|
||||||
.build();
|
if (CollUtil.isNotEmpty(billIds)) {
|
||||||
List<RectifyOrderResp> rectifyOrders = rectifyApiGateway.listRectifyOrders(rectifyOrderReq);
|
// 存在性
|
||||||
AssertUtil.isTrue(CollectionUtils.isNotEmpty(rectifyOrders) && rectifyOrders.size() == billIds.size(), "关联整改单单据不存在,请检查后重试");
|
ListRectifyOrderReq rectifyOrderReq = ListRectifyOrderReq.builder()
|
||||||
validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, req.getType());
|
.ids(value.stream().map(VisaChangeTempCreateReq.OrderSimpleModel::getId).collect(Collectors.toSet()))
|
||||||
|
.build();
|
||||||
|
List<RectifyOrderResp> rectifyOrders = rectifyApiGateway.listRectifyOrders(rectifyOrderReq);
|
||||||
|
AssertUtil.isTrue(CollectionUtils.isNotEmpty(rectifyOrders) && rectifyOrders.size() == billIds.size(), "关联整改单单据不存在,请检查后重试");
|
||||||
|
validBillIfRelated(VisaBillTypeEnum.RECTIFY, billIds, req.getType());
|
||||||
|
}
|
||||||
} else if (Objects.equals(VisaBillTypeEnum.DESIGN_VISA.name(), key)) {
|
} else if (Objects.equals(VisaBillTypeEnum.DESIGN_VISA.name(), key)) {
|
||||||
/*变更单*/
|
/*变更单*/
|
||||||
AssertUtil.isTrue(VisaTypeEnum.TECHNOLOGY_APPROVED.equals(req.getType()) || VisaTypeEnum.PROJECT_VISA.equals(req.getType()), "变更单关联单据仅支持技术核定/工程签证");
|
AssertUtil.isTrue(VisaTypeEnum.TECHNOLOGY_APPROVED.equals(req.getType()) || VisaTypeEnum.PROJECT_VISA.equals(req.getType()), "变更单关联单据仅支持技术核定/工程签证");
|
||||||
// 关联单据合法性,是否存在,状态是否合法
|
// 关联单据合法性,是否存在,状态是否合法
|
||||||
List<String> billIds = value.stream().map(v -> String.valueOf(v.getId())).collect(Collectors.toList());
|
List<String> billIds = value.stream()
|
||||||
List<ChangeRecord> relationVisa = listByIds(billIds);
|
.map(v -> String.valueOf(v.getId()))
|
||||||
AssertUtil.isTrue(CollectionUtils.isNotEmpty(relationVisa) && relationVisa.size() == billIds.size(), "关联的变更单单据不存在,请检查后重试");
|
.filter(StringUtils::hasText)
|
||||||
relationVisa.forEach(r -> {
|
.collect(Collectors.toList());
|
||||||
AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), req.getRelationWorkspaceId()), "关联的单据所属项目不匹配");
|
if (CollUtil.isNotEmpty(billIds)) {
|
||||||
AssertUtil.isTrue(VisaStatusEnum.COMPLETED.equals(r.getStatus()), String.format("%s单据%s状态为%s,不允许被关联", VisaBillTypeEnum.DESIGN_VISA.getDesc(), r.getNo(), r.getStatus().getDesc()));
|
List<ChangeRecord> relationVisa = listByIds(billIds);
|
||||||
});
|
AssertUtil.isTrue(CollectionUtils.isNotEmpty(relationVisa) && relationVisa.size() == billIds.size(), "关联的变更单单据不存在,请检查后重试");
|
||||||
validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, billIds, req.getType());
|
relationVisa.forEach(r -> {
|
||||||
|
AssertUtil.isTrue(Objects.equals(r.getRelationWorkspaceId(), req.getRelationWorkspaceId()), "关联的单据所属项目不匹配");
|
||||||
|
AssertUtil.isTrue(VisaStatusEnum.COMPLETED.equals(r.getStatus()), String.format("%s单据%s状态为%s,不允许被关联", VisaBillTypeEnum.DESIGN_VISA.getDesc(), r.getNo(), r.getStatus().getDesc()));
|
||||||
|
});
|
||||||
|
validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, billIds, req.getType());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new ServiceException("不支持的关联单据类型");
|
throw new ServiceException("不支持的关联单据类型");
|
||||||
}
|
}
|
||||||
@ -1469,6 +1460,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
AssertUtil.notEmpty(taskNos, "关联单据Id不能为空");
|
AssertUtil.notEmpty(taskNos, "关联单据Id不能为空");
|
||||||
AssertUtil.notNull(visaType, "单据类型不能为空");
|
AssertUtil.notNull(visaType, "单据类型不能为空");
|
||||||
List<ChangeRecordBill> mainBill = changeRecordBillService.getRelatedMainBill(VisaBillTypeEnum.TASK, taskNos);
|
List<ChangeRecordBill> mainBill = changeRecordBillService.getRelatedMainBill(VisaBillTypeEnum.TASK, taskNos);
|
||||||
|
if (CollectionUtils.isEmpty(mainBill)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
mainBill.stream()
|
mainBill.stream()
|
||||||
.collect(Collectors.groupingBy(ChangeRecordBill::getBillNo))
|
.collect(Collectors.groupingBy(ChangeRecordBill::getBillNo))
|
||||||
.forEach((k, v) -> v.stream()
|
.forEach((k, v) -> v.stream()
|
||||||
@ -1699,7 +1693,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
public void doExecute(ChangeRecordButtonOperationReq req) {
|
public void doExecute(ChangeRecordButtonOperationReq req) {
|
||||||
ChangeRecord visa = changeRecordService.getById(req.getVisaId());
|
ChangeRecord visa = changeRecordService.getById(req.getVisaId());
|
||||||
AssertUtil.notNull(visa, "未找到变洽签单据");
|
AssertUtil.notNull(visa, "未找到变洽签单据");
|
||||||
AssertUtil.isTrue(Objects.equals(visa.getStatus(), VisaStatusEnum.DECIDING), "单据未在决策中,不支持该操作");
|
AssertUtil.isTrue(Objects.equals(visa.getStatus(), VisaStatusEnum.DECIDING)
|
||||||
|
|| Objects.equals(visa.getStatus(), VisaStatusEnum.DECIDING_FROM_APPROVE), "单据未在决策中,不支持该操作");
|
||||||
validOperationPermission(req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getOperatorWorkspaceId());
|
validOperationPermission(req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getOperatorWorkspaceId());
|
||||||
|
|
||||||
changeStatus(ChangeStatusRequest.builder()
|
changeStatus(ChangeStatusRequest.builder()
|
||||||
@ -1745,7 +1740,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
public void checkVisaWithVisaId(CheckVisaWithVisaIdReq req) {
|
public void checkVisaWithVisaId(CheckVisaWithVisaIdReq req) {
|
||||||
VisaDetailByIdResponse response = this.detailById(req.getVisaId());
|
VisaDetailByIdResponse response = this.detailById(req.getVisaId());
|
||||||
req.check(response);
|
req.check(response);
|
||||||
// this.validVisaChangeForm(this.buildVisaChangeApproveCreateReqByVisaId(req.getVisaId()));
|
this.validVisaChangeForm(Objects.requireNonNull(visaHelper.buildVisaChangeApproveCreateReqByVisaId(req.getVisaId())));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user