feat: (REQ-3300) 列表页重新复制属性,待提报:TO_REPORT/REPORT_FROM_APPROVE,决策中:DECIDING/DECIDING_FROM_APPROVE
This commit is contained in:
parent
5ed8b6775e
commit
a791c7180c
@ -35,6 +35,7 @@ public enum VisaButtonTypeEnum {
|
||||
APPROVAL_RECORD("approval_record", "查看审批记录"),
|
||||
TO_HANDLE("to_handle", "去处理"),
|
||||
PRINT("print", "打印"),
|
||||
DETAIL("detail", "详情"),
|
||||
;
|
||||
|
||||
|
||||
@ -42,10 +43,11 @@ public enum VisaButtonTypeEnum {
|
||||
|
||||
private String desc;
|
||||
|
||||
//分页列表页Map,key:角色+单据状态,value:功能权限的按钮列表
|
||||
private static Map<String, Set<VisaButtonTypeEnum>> bizTypeBtnMap = Maps.newHashMap();
|
||||
|
||||
static {
|
||||
// 发起人不同状态按钮权限
|
||||
// 发起人不同状态按钮权限-详情页
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.TO_REPORT.name(), Sets.newHashSet(UPDATE, DELETE));
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.REPORT_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, FORBID));
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, EXECUTE, TO_APPROVE, FORBID, CHAT_GROUP_RECORD,PRINT));
|
||||
@ -55,7 +57,7 @@ public enum VisaButtonTypeEnum {
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD,PRINT));
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD));
|
||||
|
||||
// 决策人不同状态按钮权限
|
||||
// 决策人不同状态按钮权限-详情页
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD,PRINT));
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD,PRINT));
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(UPDATE, CHAT_GROUP_RECORD,PRINT));
|
||||
@ -63,10 +65,10 @@ public enum VisaButtonTypeEnum {
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(UPLOAD_FILE, CHAT_GROUP_RECORD, APPROVAL_RECORD,PRINT));
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD));
|
||||
|
||||
//审核人不同状态按钮权限
|
||||
//审核人不同状态按钮权限-详情页
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.APPROVE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(TO_HANDLE, CHAT_GROUP_RECORD,PRINT));
|
||||
|
||||
//其他不同状态按钮权限
|
||||
//其他不同状态按钮权限-详情页
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD));
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD));
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(PRINT, CHAT_GROUP_RECORD));
|
||||
@ -75,6 +77,44 @@ public enum VisaButtonTypeEnum {
|
||||
bizTypeBtnMap.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(CHAT_GROUP_RECORD, APPROVAL_RECORD));
|
||||
|
||||
//[打印]按钮是通过OMS统一配置,故此处不处理
|
||||
|
||||
|
||||
}
|
||||
|
||||
//分页列表页Map,key:角色+单据状态,value:功能权限的按钮列表
|
||||
private static Map<String, Set<VisaButtonTypeEnum>> bizTypeBtnMapWhenPage = Maps.newHashMap();
|
||||
|
||||
static {
|
||||
// 发起人不同状态按钮权限-分页列表页
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.TO_REPORT.name(), Sets.newHashSet(DETAIL, UPDATE));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.REPORT_FROM_APPROVE.name(), Sets.newHashSet(DETAIL, UPDATE));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(DETAIL, UPDATE));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(DETAIL, UPDATE));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(DETAIL, UPDATE));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(DETAIL));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(DETAIL));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CREATE.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(DETAIL));
|
||||
|
||||
|
||||
// 确认人不同状态按钮权限-分页列表页
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.TO_REPORT.name(), Sets.newHashSet(DETAIL));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.REPORT_FROM_APPROVE.name(), Sets.newHashSet(DETAIL));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(DETAIL, UPDATE));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(DETAIL, UPDATE));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(DETAIL, UPDATE));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(DETAIL));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(DETAIL));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.CONFIRM.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(DETAIL));
|
||||
|
||||
// 其他人不同状态按钮权限-分页列表页
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.TO_REPORT.name(), Sets.newHashSet(DETAIL));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.REPORT_FROM_APPROVE.name(), Sets.newHashSet(DETAIL));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING.name(), Sets.newHashSet(DETAIL));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.DECIDING_FROM_APPROVE.name(), Sets.newHashSet(DETAIL));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.EXECUTING.name(), Sets.newHashSet(DETAIL));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.APPROVING.name(), Sets.newHashSet(DETAIL, APPROVAL_RECORD));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.COMPLETED.name(), Sets.newHashSet(DETAIL));
|
||||
bizTypeBtnMapWhenPage.put(VisaConfirmBizTypeEnum.OTHER.name() + VisaStatusEnum.FORBIDED.name(), Sets.newHashSet(DETAIL));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -117,6 +157,32 @@ public enum VisaButtonTypeEnum {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据角色与单据状态获取按钮权限
|
||||
*/
|
||||
public static Set<VisaButtonTypeEnum> fetchBtnsByBizTypeAndStatusWhenPage(Set<VisaConfirmBizTypeEnum> bizTypeSet, VisaStatusEnum status) {
|
||||
if (Objects.isNull(bizTypeSet) || Objects.isNull(status)) {
|
||||
return Sets.newHashSet();
|
||||
}
|
||||
|
||||
Set<VisaButtonTypeEnum> returnBtnSet = Sets.newHashSet();
|
||||
|
||||
bizTypeSet.stream().filter(Objects::nonNull).forEach(item -> {
|
||||
switch (item) {
|
||||
case CREATE:
|
||||
case CONFIRM:
|
||||
case OTHER:
|
||||
case APPROVE:
|
||||
Set<VisaButtonTypeEnum> buttonTypeEnumSet = bizTypeBtnMapWhenPage.get(item.name() + status.name());
|
||||
returnBtnSet.addAll(CollectionUtils.isNotEmpty(buttonTypeEnumSet) ? buttonTypeEnumSet : Sets.newHashSet());
|
||||
break;
|
||||
default:
|
||||
throw new ServiceException("单据确认业务类型不匹配");
|
||||
}
|
||||
});
|
||||
return returnBtnSet;
|
||||
}
|
||||
|
||||
public static Set<VisaButtonTypeEnum> all() {
|
||||
return Sets.newHashSet(VisaButtonTypeEnum.values());
|
||||
}
|
||||
|
||||
@ -1,9 +1,11 @@
|
||||
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.request.ChangeStatusRequest;
|
||||
import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse;
|
||||
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
|
||||
import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm;
|
||||
import cn.axzo.nanopart.visa.server.dto.VisaAddLogContext;
|
||||
import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto;
|
||||
@ -13,6 +15,7 @@ import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway;
|
||||
import cn.axzo.nanopart.visa.server.utils.Constants;
|
||||
import cn.axzo.thor.client.model.DrawingMajorResp;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
@ -27,6 +30,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -155,7 +159,17 @@ public class VisaHelper {
|
||||
/**
|
||||
* 查询单据与当前人的角色:[发起人|确认人|其他用户]
|
||||
*/
|
||||
public Map<Long,Set<VisaConfirmBizTypeEnum>> fetchConfirmBizTypes(Collection<Long> visaIds, Long personId, Long ouId, Long workspaceId) {
|
||||
public Map<Long,Set<VisaConfirmBizTypeEnum>> fetchConfirmBizTypes(Collection<ChangeRecord> visaList, Long personId, Long ouId, Long workspaceId) {
|
||||
|
||||
if (CollectionUtils.isEmpty(visaList)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
List<Long> visaIds = visaList.stream().filter(item -> Objects.nonNull(item.getId()))
|
||||
.map(ChangeRecord::getId).collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(visaIds)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
List<ChangeRecordConfirm> confirmList = changeRecordConfirmService.findByCondition(VisaConfirmDto.builder()
|
||||
.visaIds(visaIds)
|
||||
.personId(personId)
|
||||
@ -172,4 +186,33 @@ public class VisaHelper {
|
||||
return visaBizTypeMap;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取按钮集合
|
||||
* 确认人与发起人的不同的单据状态,按钮列表不相同
|
||||
*/
|
||||
public Map<Long, Set<VisaButtonTypeEnum>> fetchBtnsByCondition(Collection<ChangeRecord> visaList, Long personId, Long ouId, Long workspaceId) {
|
||||
if (CollectionUtils.isEmpty(visaList)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
Map<Long, ChangeRecord> visaIdMap = visaList.stream()
|
||||
.filter(item -> Objects.nonNull(item.getId()))
|
||||
.collect(Collectors.toMap(ChangeRecord::getId, Function.identity(), (x, y) -> x));
|
||||
Map<Long, Set<VisaConfirmBizTypeEnum>> visaIdBizTypeMap = fetchConfirmBizTypes(visaList, personId, ouId, workspaceId);
|
||||
if (Objects.isNull(visaIdBizTypeMap) || visaIdBizTypeMap.isEmpty()) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
Map<Long, Set<VisaButtonTypeEnum>> returnMap = Maps.newHashMap();
|
||||
|
||||
visaIdBizTypeMap.entrySet().stream().forEach(entry -> {
|
||||
Long key = entry.getKey();
|
||||
Set<VisaConfirmBizTypeEnum> value = entry.getValue();
|
||||
|
||||
ChangeRecord changeRecord = visaIdMap.get(key);
|
||||
if (Objects.nonNull(changeRecord) && Objects.nonNull(changeRecord.getStatus())) {
|
||||
returnMap.put(key, VisaButtonTypeEnum.fetchBtnsByBizTypeAndStatusWhenPage(value, changeRecord.getStatus()));
|
||||
}
|
||||
});
|
||||
return returnMap;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user