Merge remote-tracking branch 'origin/feature/REQ-3300' into feature/REQ-3300

This commit is contained in:
wangli 2025-02-08 17:36:34 +08:00
commit 6113aaeab8
2 changed files with 45 additions and 22 deletions

View File

@ -32,4 +32,16 @@ public class RefreshableConfiguration {
*/
@Value("${visa.im.event.addMember:visaNegotiation}")
private String imGroupAddMemberNoticeEventCode;
/**
* 相关单位确认人人数限制
*/
@Value("${visa.verifyPersonLimit: 8}")
private Integer verifyPersonLimit;
/**
* 关联变更单个数限制
*/
@Value("${visa.verifyVisaLimit: 5}")
private Integer verifyVisaLimit;
}

View File

@ -18,7 +18,9 @@ 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.CooperateShipQueryReq;
import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq;
import cn.axzo.maokai.api.vo.response.CooperateShipResp;
import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp;
import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaBillTypeEnum;
@ -42,6 +44,7 @@ import cn.axzo.nanopart.visa.api.request.VisaInitiatorListReq;
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 cn.axzo.nanopart.visa.server.config.RefreshableConfiguration;
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
import cn.axzo.nanopart.visa.server.domain.ChangeRecordBill;
import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm;
@ -56,6 +59,7 @@ import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway;
import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway;
import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway;
import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway;
import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway;
import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway;
import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway;
import cn.axzo.nanopart.visa.server.rpc.VisaProjectApiGateway;
@ -94,8 +98,6 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.groovy.util.Maps;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
@ -139,7 +141,6 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_
*/
@Slf4j
@Service
@RefreshScope
public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, ChangeRecord> implements ChangeRecordService {
@Resource
@ -171,17 +172,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
@Resource
private MsgCenterGateway msgCenterGateway;
/**
* 相关单位确认人人数限制
*/
@Value("${visa.verifyPersonLimit: 8}")
private Integer verifyPersonLimit;
/**
* 关联变更单个数限制
*/
@Value("${visa.verifyVisaLimit: 5}")
private Integer verifyVisaLimit;
/**
* 最大变化金额
*/
@ -207,6 +197,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
@Resource
private VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway;
@Resource
private RefreshableConfiguration refreshableConfiguration;
@Resource
private VisaCooperateShipGateway visaCooperateShipGateway;
/**
* 状态变更
@ -465,6 +460,19 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
@Override
@Transactional(rollbackFor = Exception.class)
public Long tempCreateVisaChangeRecord(VisaChangeTempCreateReq req) {
AssertUtil.isTrue(NumberUtil.isPositiveNumber(req.getRelationWorkspaceId()), "关联项目不能为空");
AssertUtil.isTrue(NumberUtil.isPositiveNumber(req.getOperatorOuId()) && NumberUtil.isPositiveNumber(req.getOperatorPersonId()),
"操作人信息不能为空");
if (NumberUtil.isNotPositiveNumber(req.getOperatorOuType())) {
CooperateShipQueryReq shipQueryReq = CooperateShipQueryReq.builder()
.personId(req.getOperatorPersonId())
.workspaceId(req.getRelationWorkspaceId())
.ouId(req.getOperatorOuId())
.build();
List<CooperateShipResp> shipRespList = visaCooperateShipGateway.genericQuery(shipQueryReq);
AssertUtil.notEmpty(shipRespList, "操作人所在单位信息不能为空");
req.setOperatorOuType(shipRespList.get(0).getCooperateType());
}
ChangeRecord changeRecord;
List<VisaConfirmDto> confirmPerson = Lists.newArrayList();
VisaAddLogContext oldContext = null;
@ -509,9 +517,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
/*保存附加关联信息*/
// 相关单位与人员
if (CollectionUtils.isNotEmpty(req.getRelationUnitAndPersonList())) {
confirmPerson = req.getRelationUnitAndPersonList().stream()
confirmPerson.addAll(req.getRelationUnitAndPersonList().stream()
.map(p -> buildConfirmVisaConfirmDto(p, changeRecord, req.getOperatorPersonId()))
.collect(Collectors.toList());
.collect(Collectors.toList()));
}
changeRecordConfirmService.addConfirm(confirmPerson);
// 保存发生内容及说明
@ -810,7 +818,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
// }
/*获取数据*/
changeRecordList = getFilter(filter,Sets.newHashSet()).list();
changeRecordList = getFilter(filter, Sets.newHashSet()).list();
AssertUtil.isTrue(CollUtil.isNotEmpty(changeRecordList), "");
/*数据转换*/
@ -823,7 +831,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
// reportServiceSDK.asyncUploadReportPsw(scene, fileName, null, false, );
}
private LambdaQueryChainWrapper<ChangeRecord> getFilter(VisaChangePageSearchReq filter,Set<Long> permissionVisaIdSet) {
private LambdaQueryChainWrapper<ChangeRecord> getFilter(VisaChangePageSearchReq filter, Set<Long> permissionVisaIdSet) {
LambdaQueryChainWrapper<ChangeRecord> queryChainWrapper = lambdaQuery()
// .in(ChangeRecord::getId, permissionVisaIdSet)
@ -1053,7 +1061,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
List<OrgNodeUserBriefInfoResp> nodeUserBriefInfoResps = nodeUserGateway.listOrgNodeUsers(infoListReq);
AssertUtil.notEmpty(nodeUserBriefInfoResps, "所有单位确认人均已退场");
cooperateTypeMap.forEach((k, v) -> {
AssertUtil.isTrue(v.size() <= verifyPersonLimit, String.format(k.getDesc() + "确认人,最多支持%d个", verifyPersonLimit));
AssertUtil.isTrue(v.size() <= refreshableConfiguration.getVerifyPersonLimit(), String.format(k.getDesc() + "确认人,最多支持%d个", refreshableConfiguration.getVerifyPersonLimit()));
boolean noExit = v.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getPersonId)
.anyMatch(p -> nodeUserBriefInfoResps.stream().anyMatch(u -> Objects.equals(u.getPersonId(), p)));
AssertUtil.isTrue(noExit, String.format(k.getDesc() + "确认人,存在已退场人员,请重新选择"));
@ -1067,18 +1075,21 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
if (Objects.equals(VisaRelationFieldEnum.TASK_ORDER.name(), key)) {
/*任务单*/
// 关联单据数量限制
AssertUtil.isTrue(value.size() <= verifyVisaLimit, String.format("最多可关联%d个变更单请重新选择", verifyVisaLimit));
AssertUtil.isTrue(value.size() <= refreshableConfiguration.getVerifyVisaLimit(),
String.format("最多可关联%d个变更单请重新选择", refreshableConfiguration.getVerifyVisaLimit()));
validBillIfRelated(VisaBillTypeEnum.TASK, value, req.getType());
} else if (Objects.equals(VisaRelationFieldEnum.RECTIFICATION_ORDER.name(), key)) {
/*整改单*/
// 关联单据数量限制
AssertUtil.isTrue(value.size() <= verifyVisaLimit, String.format("最多可关联%d个变更单请重新选择", verifyVisaLimit));
AssertUtil.isTrue(value.size() <= refreshableConfiguration.getVerifyVisaLimit(),
String.format("最多可关联%d个变更单请重新选择", refreshableConfiguration.getVerifyVisaLimit()));
validBillIfRelated(VisaBillTypeEnum.RECTIFY, value, req.getType());
} else if (Objects.equals(VisaRelationFieldEnum.VISA_ORDER.name(), key)) {
/*变更单*/
AssertUtil.isTrue(VisaTypeEnum.TECHNOLOGY_APPROVED.equals(req.getType()) || VisaTypeEnum.PROJECT_VISA.equals(req.getType()), "变更单关联单据仅支持技术核定/工程签证");
// 关联单据数量限制
AssertUtil.isTrue(value.size() <= verifyVisaLimit, String.format("最多可关联%d个变更单请重新选择", verifyVisaLimit));
AssertUtil.isTrue(value.size() <= refreshableConfiguration.getVerifyVisaLimit(),
String.format("最多可关联%d个变更单请重新选择", refreshableConfiguration.getVerifyVisaLimit()));
// 关联单据合法性是否存在状态是否合法
List<ChangeRecord> relationVisa = listByIds(value);
AssertUtil.notEmpty(relationVisa, "关联的单据不存在");