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

This commit is contained in:
chenwenjian 2025-02-08 15:59:08 +08:00
commit a83ad7b79b
7 changed files with 100 additions and 9 deletions

View File

@ -1,10 +1,12 @@
package cn.axzo.nanopart.visa.api.enums;
import com.google.common.collect.Sets;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Set;
/**
* 签证业务类型
@ -24,7 +26,25 @@ public enum VisaTypeEnum {
private final String code;
private final String desc;
private static final Set<VisaTypeEnum> changeApprovedSet = Sets.newHashSet(DESIGN_CHANGE, TECHNOLOGY_APPROVED);
private static final Set<VisaTypeEnum> projectVisaSet = Sets.newHashSet(PROJECT_VISA);
public static VisaTypeEnum valueOfCode(String code) {
return Arrays.stream(VisaTypeEnum.values()).filter(item -> item.getCode().equals(code)).findFirst().orElse(null);
}
/**
* 设计变更/技术核定
*/
public static Set<VisaTypeEnum> fetchChangeApprovedSet() {
return changeApprovedSet;
}
/**
* 工程签证
*/
public static Set<VisaTypeEnum> fetchProjectVisaSet() {
return projectVisaSet;
}
}

View File

@ -1,6 +1,7 @@
package cn.axzo.nanopart.visa.server.domain;
import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum;
import com.alibaba.fastjson.JSONObject;
@ -46,6 +47,13 @@ public class ChangeRecordConfirm extends BaseEntity<ChangeRecordConfirm> {
@TableField(value = "biz_type")
private VisaConfirmBizTypeEnum bizType;
/**
* 业务类型,CONFIRM:确认;CREATE:创建
*/
@TableField(value = "visa_type")
private VisaTypeEnum visaType;
/**
* 确认人
*/

View File

@ -3,6 +3,7 @@ package cn.axzo.nanopart.visa.server.dto;
import cn.axzo.karma.client.feign.tyr.response.MergeMatchDataResp;
import cn.axzo.maokai.common.enums.SaasCooperateShipCooperateTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -89,10 +90,20 @@ public class VisaConfirmDto {
private Long operator;
/**
* 变更签证类型集合
*/
private Set<VisaTypeEnum> visaTypes;
/**
* 变更签证类型
*/
private VisaTypeEnum visaType;
/**
* 根据DataItem创建Dto
*/
public static VisaConfirmDto create(List<MergeMatchDataResp.DataItem> dataItems) {
public static VisaConfirmDto create(List<MergeMatchDataResp.DataItem> dataItems, Set<VisaTypeEnum> visaTypes) {
VisaConfirmDto dto = new VisaConfirmDto();
@ -119,6 +130,7 @@ public class VisaConfirmDto {
dto.setNodeIds(nodeIds);
}
}
dto.setVisaTypes(visaTypes);
return dto;
}

View File

@ -3,6 +3,7 @@ package cn.axzo.nanopart.visa.server.service;
import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum;
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq;
import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse;
import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm;
@ -67,7 +68,7 @@ public interface ChangeRecordConfirmService {
* @param currentOuId 当前登录人的单位Id
* @return 变更签证visaId集合
*/
Set<Long> permissionVisaData(String dataObjectCode, Long currentPersonId, Long currentWorkspaceId, Long currentOuId);
Set<Long> permissionVisaData(String dataObjectCode, Long currentPersonId, Long currentWorkspaceId, Long currentOuId, Set<VisaTypeEnum> visaTypes);
/**
* 获取指定的变洽签所有的确认人

View File

@ -11,6 +11,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum;
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq;
import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse;
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
@ -80,6 +81,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl<ChangeRecordConf
List<ChangeRecordConfirm> visaConfirmDtos = BeanMapper.copyList(dtoList, ChangeRecordConfirm.class, (s, t) -> {
t.setCreateBy(s.getOperator());
t.setUpdateBy(s.getOperator());
t.setVisaType(s.getVisaType());
});
return this.saveOrUpdateBatch(visaConfirmDtos);
}
@ -303,6 +305,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl<ChangeRecordConf
.eq(Objects.nonNull(dto.getProjectId()), ChangeRecordConfirm::getProjectId, dto.getProjectId())
.eq(Objects.nonNull(dto.getType()), ChangeRecordConfirm::getType, dto.getType())
.eq(Objects.nonNull(dto.getBizType()), ChangeRecordConfirm::getBizType, dto.getBizType())
.in(CollectionUtils.isNotEmpty(dto.getVisaTypes()), ChangeRecordConfirm::getVisaType, dto.getVisaTypes())
.eq(ChangeRecordConfirm::getIsDelete, 0);
}
@ -315,7 +318,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl<ChangeRecordConf
* @param currentOuId 当前登录人的单位Id
* @return 变更签证visaId集合
*/
public Set<Long> permissionVisaData(String dataObjectCode, Long currentPersonId, Long currentWorkspaceId, Long currentOuId) {
public Set<Long> permissionVisaData(String dataObjectCode, Long currentPersonId, Long currentWorkspaceId, Long currentOuId, Set<VisaTypeEnum> visaTypes) {
MatchDataObjectReq req = new MatchDataObjectReq();
req.setDataObjectCode(dataObjectCode);
req.setPersonId(currentPersonId);
@ -325,7 +328,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl<ChangeRecordConf
MergeMatchDataResp mergedDataObject = match.getMergedDataObject();
List<MergeMatchDataResp.DataItem> dataItems = mergedDataObject.getDataItems();
List<ChangeRecordConfirm> confirmList = this.findByCondition(VisaConfirmDto.create(dataItems));
List<ChangeRecordConfirm> confirmList = this.findByCondition(VisaConfirmDto.create(dataItems, visaTypes));
Set<Long> visaIdList = confirmList.stream().map(ChangeRecordConfirm::getVisaId).collect(Collectors.toSet());
if (CollectionUtils.isEmpty(visaIdList)) {
return Sets.newHashSet();

View File

@ -68,6 +68,7 @@ import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService;
import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService;
import cn.axzo.nanopart.visa.server.service.ChangeRecordService;
import cn.axzo.nanopart.visa.server.service.VisaHelper;
import cn.axzo.nanopart.visa.server.utils.Constants;
import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO;
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
@ -89,6 +90,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
@ -102,6 +104,7 @@ import java.math.BigDecimal;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@ -742,8 +745,18 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
public PageData<VisaChangePageSearchResp> page(VisaChangePageSearchReq req) {
/*筛查条件校验*/
validSearchCondition(req);
// Set<Long> permissionVisaIdSet = this.fetchPermissionVisaIdSet(req);
// if (CollectionUtils.isEmpty(permissionVisaIdSet)) {
// return PageData.<VisaChangePageSearchResp>builder()
// .page(Math.toIntExact(req.getPage()))
// .pageSize(Math.toIntExact(req.getPageSize()))
// .totalCount(0L)
// .list(Lists.newArrayList())
// .build();
// }
/*数据查询*/
Page<ChangeRecord> page = getFilter(req).page(new Page<>(req.getPage(), req.getPageSize()));
Page<ChangeRecord> page = getFilter(req, Sets.newHashSet()).page(new Page<>(req.getPage(), req.getPageSize()));
return PageData.<VisaChangePageSearchResp>builder()
.page(Math.toIntExact(page.getCurrent()))
.pageSize(Math.toIntExact(page.getSize()))
@ -778,8 +791,17 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
public void export(VisaChangeExportReq req) {
VisaChangePageSearchReq filter = req.getFilter();
List<VisaChangeFieldEnum> fields = req.getFields();
// Set<Long> permissionVisaIdSet = this.fetchPermissionVisaIdSet(filter);
List<ChangeRecord> changeRecordList = Lists.newArrayList();
// if (CollectionUtils.isNotEmpty(permissionVisaIdSet)) {
// /*获取数据*/
// changeRecordList = getFilter(filter,permissionVisaIdSet).list();
// }
/*获取数据*/
List<ChangeRecord> changeRecordList = getFilter(filter).list();
changeRecordList = getFilter(filter,Sets.newHashSet()).list();
AssertUtil.isTrue(CollUtil.isNotEmpty(changeRecordList), "");
/*数据转换*/
/*导出文excel并上传至云*/
@ -791,11 +813,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
// reportServiceSDK.asyncUploadReportPsw(scene, fileName, null, false, );
}
private LambdaQueryChainWrapper<ChangeRecord> getFilter(VisaChangePageSearchReq filter) {
private LambdaQueryChainWrapper<ChangeRecord> getFilter(VisaChangePageSearchReq filter,Set<Long> permissionVisaIdSet) {
// Set<Long> visaList = changeRecordConfirmService.permissionVisaData("", filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId());
LambdaQueryChainWrapper<ChangeRecord> queryChainWrapper = lambdaQuery()
// .in(ChangeRecord::getId, visaList)
// .in(ChangeRecord::getId, permissionVisaIdSet)
.eq(NumberUtil.isPositiveNumber(filter.getWorkspaceId()), ChangeRecord::getRelationWorkspaceId, filter.getWorkspaceId())
.eq(Objects.nonNull(filter.getType()), ChangeRecord::getType, filter.getType())
.eq(StringUtils.hasText(filter.getKeyword()), ChangeRecord::getNo, filter.getKeyword())
@ -817,6 +838,21 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
return queryChainWrapper;
}
/**
* 获取权限的变更签证Id集合
*/
private Set<Long> fetchPermissionVisaIdSet(VisaChangePageSearchReq filter) {
Set<Long> changeApproveVisaIdSet = changeRecordConfirmService.permissionVisaData(Constants.CHANGE_APPROVED_DATA_OBJECT, filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId(), VisaTypeEnum.fetchChangeApprovedSet());
Set<Long> projectVisaIdSet = changeRecordConfirmService.permissionVisaData(Constants.PROJECT_VISA_DATA_OBJECT, filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId(), VisaTypeEnum.fetchProjectVisaSet());
HashSet<Long> permissionIdSet = Sets.newHashSet();
permissionIdSet.addAll(changeApproveVisaIdSet);
permissionIdSet.addAll(projectVisaIdSet);
if (CollectionUtils.isEmpty(permissionIdSet)) {
return Sets.newHashSet();
}
return permissionIdSet;
}
private Map<Long, OrgNodeUserBriefInfoResp> getPersonBriefInfoMap(Long workspaceId, List<Long> initiatorPersonIds) {
OrgNodeUserBriefInfoListReq nodeUserReq = OrgNodeUserBriefInfoListReq.builder()
@ -946,6 +982,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
.visaId(changeRecord.getId())
.type(SaasCooperateShipCooperateTypeEnum.getByCode(req.getOperatorOuType()))
.bizType(VisaConfirmBizTypeEnum.CREATE)
.visaType(changeRecord.getType())
.personId(req.getOperatorPersonId())
.ouId(req.getOperatorOuId())
.workspaceId(req.getRelationWorkspaceId())
@ -959,6 +996,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
.visaId(changeRecord.getId())
.type(person.getType())
.bizType(VisaConfirmBizTypeEnum.CONFIRM)
.visaType(changeRecord.getType())
.personId(person.getPersonId())
.ouId(person.getOuId())
.workspaceId(changeRecord.getRelationWorkspaceId())

View File

@ -36,4 +36,13 @@ public class Constants {
*/
public static final Integer APPROVE_ORDER_BY = 5;
/**
* 变更核定数据权限的code
*/
public static final String CHANGE_APPROVED_DATA_OBJECT = "change_approved";
/**
* 工程签证数据权限的code
*/
public static final String PROJECT_VISA_DATA_OBJECT = "project_visa";
}