fix(标准化活动、资料中心): 79956

This commit is contained in:
yjz
2024-01-22 11:48:42 +08:00
parent f62bd3dcd0
commit b7ca65253d
5 changed files with 114 additions and 70 deletions
@@ -30,7 +30,6 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
import java.util.Objects;
/**
* @author liJiaRao
@@ -0,0 +1,48 @@
package com.jero.modules.laws.standardization.common;
/**
* @ClassName: LawsStandardizationCommon
* @Description:
* @Author: yjz
* @Date: 2024-01-22 09:36
* @Version: 1.0
**/
public class LawsStandardizationCommon {
private void LawsStandardization(){
}
/**
* 标准化活动节点类型 ROOT:总标委,WYH:委员会,FBW:委员会,GROUP:工作组
*/
public static final String ROOT = "ROOT";
/**
* 标准化活动节点类型 ROOT:总标委,WYH:委员会,FBW:委员会,GROUP:工作组
*/
public static final String WYH = "WYH";
/**
* 标准化活动节点类型 ROOT:总标委,WYH:委员会,FBW:委员会,GROUP:工作组
*/
public static final String FBW = "FBW";
/**
* 标准化活动节点类型 ROOT:总标委,WYH:委员会,FBW:委员会,GROUP:工作组
*/
public static final String GROUP = "GROUP";
/**
* 层级 0123
*/
public static final Long LEVEL_0 = 0L;
/**
* 层级 0123
*/
public static final Long LEVEL_1 = 1L;
/**
* 层级 0123
*/
public static final Long LEVEL_2 = 2L;
/**
* 层级 0123
*/
public static final Long LEVEL_3 = 3L;
}
@@ -50,6 +50,7 @@ public class LawsStandardizationController extends JeroController<LawsStandardiz
@ApiOperation(value="标准化活动-树结构查询", notes="标准化活动-树结构查询")
@GetMapping(value = "/queryTreeList")
@RequiresPermissions("standardActivity:search")
@Translation
public Result<LawsStandardization> queryTreeList() {
return Result.OK(lawsStandardizationService.queryTreeList());
}
@@ -62,6 +63,7 @@ public class LawsStandardizationController extends JeroController<LawsStandardiz
@ApiOperation(value="标准化活动-统计列表", notes="标准化活动-统计列表")
@GetMapping(value = "/queryStatistics")
@RequiresPermissions("standardActivity:statistical")
@Translation
public Result<List<LawsStandardization>> queryStatistics() {
return Result.OK(lawsStandardizationService.queryStatistics());
}
@@ -2,6 +2,7 @@ package com.jero.modules.laws.standardization.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jero.common.aspect.annotation.Dict;
import com.jero.modules.laws.documenttool.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -36,9 +37,10 @@ public class LawsStandardization extends BaseEntity {
@ApiModelProperty(value = "上级节点名称")
@TableField(exist = false)
private java.lang.String supperName;
/**节点类型(固定:分标委)*/
/**节点类型*/
@Excel(name = "节点类型", width = 15)
@ApiModelProperty(value = "节点类型(固定:分标委)")
@ApiModelProperty(value = "节点类型")
@Dict(dicCode = "standardization_type")
private java.lang.String standardizationType;
/**编号*/
@Excel(name = "编号", width = 15)
@@ -60,10 +62,11 @@ public class LawsStandardization extends BaseEntity {
@Excel(name = "部门code", width = 15)
@ApiModelProperty(value = "部门code")
private java.lang.String orgCode;
/**层级*/
@TableField(exist = false)
@Excel(name = "层级", width = 15)
@ApiModelProperty(value = "层级")
private Long level;
/**子节点*/
@TableField(exist = false)
private List<LawsStandardization> children;
@@ -10,7 +10,10 @@ import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.laws.dataCenter.entity.LawsDataCenterFile;
import com.jero.modules.laws.dataCenter.entity.LawsDataCenterFolder;
import com.jero.modules.laws.dataCenter.service.ILawsDataCenterFileService;
import com.jero.modules.laws.dataCenter.service.ILawsDataCenterFolderService;
import com.jero.modules.laws.standardization.common.LawsStandardizationCommon;
import com.jero.modules.laws.standardization.entity.*;
import com.jero.modules.laws.standardization.mapper.LawsStandardizationMapper;
import com.jero.modules.laws.standardization.service.*;
@@ -50,6 +53,7 @@ public class LawsStandardizationServiceImpl extends ServiceImpl<LawsStandardizat
private final ILawsStandardizationMeetingService lawsStandardizationMeetingService;
private final IOSSFileService ossFileService;
private final ILawsDataCenterFileService lawsDataCenterFileService;
private final ILawsDataCenterFolderService lawsDataCenterFolderService;
private final ISysUserService sysUserService;
private final ISysDepartService sysDepartService;
@@ -60,6 +64,7 @@ public class LawsStandardizationServiceImpl extends ServiceImpl<LawsStandardizat
ILawsStandardizationMeetingService lawsStandardizationMeetingService,
IOSSFileService ossFileService,
ILawsDataCenterFileService lawsDataCenterFileService,
ILawsDataCenterFolderService lawsDataCenterFolderService,
ISysUserService sysUserService,
ISysDepartService sysDepartService) {
this.lawsStandardizationService = lawsStandardizationService;
@@ -69,6 +74,7 @@ public class LawsStandardizationServiceImpl extends ServiceImpl<LawsStandardizat
this.lawsStandardizationMeetingService = lawsStandardizationMeetingService;
this.ossFileService = ossFileService;
this.lawsDataCenterFileService = lawsDataCenterFileService;
this.lawsDataCenterFolderService = lawsDataCenterFolderService;
this.sysUserService = sysUserService;
this.sysDepartService = sysDepartService;
}
@@ -194,8 +200,9 @@ public class LawsStandardizationServiceImpl extends ServiceImpl<LawsStandardizat
for (String meetingData : meetingDataList) {
LawsDataCenterFile lawsDataCenterFile = new LawsDataCenterFile();
lawsDataCenterFile.setFileId(meetingData);
// XXX(分标委名称)- XXXX(工作组名称)-会议名称
lawsDataCenterFile.setFileDescription(getFileDescription(lawsStandardization, standardizationMeeting.getName()));
// XXX(分标委名称)- XXX(工作组名称)-会议名称
String fileDescription = getAndSetFileDescription(lawsStandardization, standardizationMeeting.getName(), lawsDataCenterFile);
lawsDataCenterFile.setFileDescription(fileDescription);
lawsDataCenterFile.setCreateBy(standardizationMeeting.getCreateBy());
List<SysDepart> sysDeparts = sysDepartService.queryDepartsByUsername(standardizationMeeting.getCreateBy());
SysUser sysUser = sysUserService.getUserByName(standardizationMeeting.getCreateBy());
@@ -204,63 +211,58 @@ public class LawsStandardizationServiceImpl extends ServiceImpl<LawsStandardizat
lawsDataCenterFile.setOwnerId(Objects.isNull(sysUser) ? loginUser.getId() : sysUser.getId());
lawsDataCenterFile.setUploader(Objects.isNull(sysUser) ? loginUser.calcNameWorkNo() : sysUser.calcNameWorkNo());
lawsDataCenterFile.setOrgCode(String.join(",", orgCodeList));
lawsDataCenterFileService.add(lawsDataCenterFile);
String folderId = lawsDataCenterFile.getFolderId();
if (StringUtils.isNotBlank(folderId)){
for (String fId : folderId.split(",")) {
lawsDataCenterFile.setFolderId(fId);
lawsDataCenterFileService.add(lawsDataCenterFile);
}
}else {
lawsDataCenterFileService.add(lawsDataCenterFile);
}
}
}
private String getFileDescription(LawsStandardization lawsStandardization, String name) {
// 树形结构
LawsStandardization treeList = queryTreeList();
// 拆开为list结构
List<LawsStandardization> list = new ArrayList<>();
private String getAndSetFileDescription(LawsStandardization lawsStandardization, String name, LawsDataCenterFile lawsDataCenterFile) {
StringBuilder stringBuilder = new StringBuilder();
treeToList(treeList, list);
if (LawsStandardizationCommon.GROUP.equals(lawsStandardization.getStandardizationType())){
// 工作组层级:XXX(分标委名称)- XXX(工作组名称)-会议名称
LawsStandardization fatherNode = getOne(new LambdaQueryWrapper<LawsStandardization>()
.eq(LawsStandardization::getId, lawsStandardization.getPid()));
stringBuilder.append(fatherNode.getName()).append("-").append(lawsStandardization.getName());
// 获取一二级节点名称
Optional<LawsStandardization> optional = list.stream().filter(v -> v.getId().equals(lawsStandardization.getId())).findFirst();
optional.ifPresent(v -> {
if (optional.get().getLevel().equals(2L)){
Optional<LawsStandardization> optionalOne = list.stream().filter(o -> o.getId().equals(lawsStandardization.getPid())).findFirst();
optionalOne.ifPresent(l -> stringBuilder.append(l.getName()).append("-").append(v.getName()));
}else if (optional.get().getLevel().equals(1L)){
stringBuilder.append(v.getName());
}
});
if (stringBuilder.length() < 0){
getNodeName(lawsStandardization, list, stringBuilder);
}
if (stringBuilder.length() > 0){
stringBuilder.append("-");
}
return stringBuilder.append(name).toString();
}
private void getNodeName(LawsStandardization lawsStandardization, List<LawsStandardization> list, StringBuilder stringBuilder) {
Optional<LawsStandardization> first = list.stream().filter(v -> v.getId().equals(lawsStandardization.getPid())).findFirst();
first.ifPresent(v -> {
// 工作组
if (first.get().getLevel().equals(2L)){
stringBuilder.append(v.getName());
}
// 委员会
if (first.get().getLevel().equals(1L)){
stringBuilder.insert(0, v.getName() + "-");
}
getNodeName(v, list, stringBuilder);
});
}
private void treeToList(LawsStandardization treeList, List<LawsStandardization> list) {
if (!Objects.isNull(treeList)){
list.add(treeList);
if (!Objects.isNull(treeList.getChildren()) && !treeList.getChildren().isEmpty()) {
for (LawsStandardization tree : treeList.getChildren()) {
treeToList(tree, list);
// 绑定目录
// 先匹配分标委名称
List<LawsDataCenterFolder> fatherFolder = lawsDataCenterFolderService.list(
new LambdaQueryWrapper<LawsDataCenterFolder>()
.eq(LawsDataCenterFolder::getFolderName, fatherNode.getName()));
if (!fatherFolder.isEmpty()){
List<String> idList = fatherFolder.stream().map(LawsDataCenterFolder::getId).collect(Collectors.toList());
// 查询子集, 再匹配工作组名称
List<LawsDataCenterFolder> lawsDataCenterFolderList = lawsDataCenterFolderService.list(
new LambdaQueryWrapper<LawsDataCenterFolder>()
.in(LawsDataCenterFolder::getParentId, idList)
.eq(LawsDataCenterFolder::getFolderName, lawsStandardization.getName()));
if (!lawsDataCenterFolderList.isEmpty()){
lawsDataCenterFile.setFolderId(lawsDataCenterFolderList.stream().map(LawsDataCenterFolder::getId).collect(Collectors.joining(",")));
}else {
// 工作组不存在则绑定到分标委目录
lawsDataCenterFile.setFolderId(String.join(",", idList));
}
}
}else {
// (分标委/委员会/总标委名称)-会议名称
stringBuilder.append(lawsStandardization.getName());
// 绑定目录
List<LawsDataCenterFolder> lawsDataCenterFolderList = lawsDataCenterFolderService.list(
new LambdaQueryWrapper<LawsDataCenterFolder>()
.eq(LawsDataCenterFolder::getFolderName, lawsStandardization.getName()));
if (!lawsDataCenterFolderList.isEmpty()){
lawsDataCenterFile.setFolderId(lawsDataCenterFolderList.stream().map(LawsDataCenterFolder::getId).collect(Collectors.joining(",")));
}
}
return stringBuilder.append("-").append(name).toString();
}
/**
@@ -326,7 +328,7 @@ public class LawsStandardizationServiceImpl extends ServiceImpl<LawsStandardizat
if (standardizationGroupList.isEmpty()){
// 删除全部数据
lawsStandardizationGroupService.remove(new LambdaQueryWrapper<LawsStandardizationGroup>()
.eq(LawsStandardizationGroup::getStandardizationId, lawsStandardization.getId()));
.eq(LawsStandardizationGroup::getStandardizationId, lawsStandardization.getId()));
return;
}
@@ -414,12 +416,10 @@ public class LawsStandardizationServiceImpl extends ServiceImpl<LawsStandardizat
public LawsStandardization queryTreeList() {
// 查询所有数据
List<LawsStandardization> list = list(new LambdaQueryWrapper<LawsStandardization>().orderByAsc(LawsStandardization::getCreateTime));
Long level = 0L;
return list.stream()
.filter(v -> "0".equals(v.getPid()))
.map(v ->{
v.setLevel(level);
v.setChildren(createChildren(v, list, level));
v.setChildren(createChildren(v, list));
return v;
}).collect(Collectors.toList()).get(0);
}
@@ -590,21 +590,13 @@ public class LawsStandardizationServiceImpl extends ServiceImpl<LawsStandardizat
*
* @param tree 当前树节点
* @param treeList 树节点列表
* @param level 层级
* @return 子节点列表
*/
private List<LawsStandardization> createChildren(LawsStandardization tree, List<LawsStandardization> treeList, Long level){
private List<LawsStandardization> createChildren(LawsStandardization tree, List<LawsStandardization> treeList){
List<LawsStandardization> collect = treeList.stream().filter(v -> tree.getId().equals(v.getPid())).collect(Collectors.toList());
if (collect.isEmpty()){
level -= 1L;
}else {
level += 1L;
}
Long finalLevel = level;
return collect.stream()
.map(v -> {
v.setLevel(finalLevel);
v.setChildren(createChildren(v, treeList, finalLevel));
v.setChildren(createChildren(v, treeList));
return v;
})
.collect(Collectors.toList());