fix: 字典字段lombok冲突

This commit is contained in:
2024-08-06 16:43:43 +08:00
parent 1fb23a7245
commit 3c9825aea8
9 changed files with 187 additions and 14 deletions
@@ -179,12 +179,12 @@ public class SysDictItem implements TreeNode {
private List<SysDictItem> childrenList;
@Override
public String getTreeNodeId() {
public String obtainTreeNodeId() {
return id;
}
@Override
public String getTreeNodeParentId() {
public String obtainTreeNodeParentId() {
return parentId;
}
}
@@ -1,6 +1,6 @@
package com.jero.modules.system.service;
public interface TreeNode {
String getTreeNodeId(); // 返回节点的唯一标识
String getTreeNodeParentId(); // 返回父节点的唯一标识
String obtainTreeNodeId(); // 返回节点的唯一标识
String obtainTreeNodeParentId(); // 返回父节点的唯一标识
}
@@ -2239,7 +2239,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
}
// 如果value不为null和"",则拼接查询条件
if (StringUtils.isNotBlank(value)) {
jointSelectCondition(fieldList, selectCondition, key, value, tableName);
jointSelectCondition(fieldList, selectCondition, key, value, tableName, parameterMap);
}
}
@@ -2279,6 +2279,79 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
return selectCondition.toString();
}
@NotNull
private String getTreeFatherChild(String tableName, String key, String value, String dicId) {
LambdaQueryWrapper<SysDictItem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysDictItem::getDictId, dicId);
wrapper.eq(SysDictItem::getItemValue, value);
SysDictItem targetNode = sysDictItemService.getOne(wrapper);
List<SysDictItem> resultNodeList = new ArrayList<>();
// 获取所有数据
wrapper.clear();
wrapper.eq(SysDictItem::getDictId, dicId);
List<SysDictItem> allNodeList = sysDictItemService.list(wrapper);
TreePage<SysDictItem> treePage = new TreePage<>();
treePage.setRecords(allNodeList);
// 获取当前
Set<SysDictItem> allChildren = treePage.findAllChildren(allNodeList, targetNode);
Set<SysDictItem> pathToRoot = treePage.findPathToRoot(allNodeList, targetNode);
resultNodeList.addAll(allChildren);
resultNodeList.addAll(pathToRoot);
if (resultNodeList.isEmpty()) {
return "";
}
List<String> valueList = resultNodeList.stream().map(SysDictItem::getItemValue).collect(Collectors.toList());
StringBuilder sql = new StringBuilder(" AND (");
for (int i = 0; i < valueList.size(); i++) {
sql.append("FIND_IN_SET('").append(valueList.get(i))
.append("', ").append(tableName).append(".").append(key).append(")");
if (i < valueList.size() - 1) {
sql.append(" OR ");
}
}
sql.append(")");
return sql.toString();
}
@NotNull
private String getTreeChild(String tableName, String key, String value, String dicId) {
LambdaQueryWrapper<SysDictItem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysDictItem::getDictId, dicId);
wrapper.eq(SysDictItem::getItemValue, value);
SysDictItem targetNode = sysDictItemService.getOne(wrapper);
// 获取整颗零部件树
wrapper.clear();
wrapper.eq(SysDictItem::getDictId, dicId);
List<SysDictItem> allNodeList = sysDictItemService.list(wrapper);
TreePage<SysDictItem> treePage = new TreePage<>();
treePage.setRecords(allNodeList);
// 获取当前
Set<SysDictItem> allChildren = treePage.findAllChildren(allNodeList, targetNode);
List<SysDictItem> resultNodeList = new ArrayList<>(allChildren);
if (resultNodeList.isEmpty()) {
return "";
}
List<String> valueList = resultNodeList.stream().map(SysDictItem::getItemValue).collect(Collectors.toList());
StringBuilder sql = new StringBuilder(" AND (");
for (int i = 0; i < valueList.size(); i++) {
sql.append("FIND_IN_SET('").append(valueList.get(i))
.append("', ").append(tableName).append(".").append(key).append(")");
if (i < valueList.size() - 1) {
sql.append(" OR ");
}
}
sql.append(")");
return sql.toString();
}
@NotNull
private List<String> getLawsPartNameStandard(String partName) {
PartName targetNode = partNameService.getById(partName);
@@ -2384,7 +2457,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
* @Date: 2023/8/25 10:58
* @Description: 拼接查询条件
**/
private void jointSelectCondition(List<LawsTag> fieldList, StringBuilder selectCondition, String key, String value, String tableName) {
private void jointSelectCondition(List<LawsTag> fieldList, StringBuilder selectCondition, String key, String value,
String tableName, Map<String, Object> parameterMap) {
for (LawsTag lawsTag : fieldList) {
String dbFieldName = lawsTag.getDbFieldName();
if (Objects.equals(key, "standard_state")) {
@@ -2414,6 +2488,14 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
} else if (LawsFieldTypeEnum.DATE_MANY.getValue().equals(fieldShowType)) {
// 多日期查询
processDateManyTypeCondition(selectCondition, key, value);
}else if (FieldShowTypeEnum.TREE_FATHER_CHILD.getValue().equals(fieldShowType)) {
String sql = getTreeFatherChild(tableName, key, value, lawsTag.getDictId());
selectCondition.append(sql);
parameterMap.remove(key);
} else if (FieldShowTypeEnum.TREE_CHILD.getValue().equals(fieldShowType)) {
String sql = getTreeChild(tableName, key, value, lawsTag.getDictId());
selectCondition.append(sql);
parameterMap.remove(key);
}
// 处理其他类型
}
@@ -347,7 +347,9 @@ public class ImportUtil {
// 树形单选
if ((FieldShowTypeEnum.TREE_STRUCTURE_SINGLE_SELECT.getValue().equals(tag.getFieldShowType()) ||
FieldShowTypeEnum.TREE_STRUCTURE_MULTI_SELECT.getValue().equals(tag.getFieldShowType())) &&
FieldShowTypeEnum.TREE_STRUCTURE_MULTI_SELECT.getValue().equals(tag.getFieldShowType()) ||
FieldShowTypeEnum.TREE_FATHER_CHILD.getValue().equals(tag.getFieldShowType()) ||
FieldShowTypeEnum.TREE_CHILD.getValue().equals(tag.getFieldShowType())) &&
(!FieldCommon.STANDARD_SYSTEM.equals(tag.getDbFieldName()))
) {
// 根据tag找到dictCode
@@ -0,0 +1,58 @@
package com.jero.modules.laws.standard.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.modules.laws.standard.entity.TreePage;
import com.jero.modules.laws.standard.service.DictTreeService;
import com.jero.modules.system.entity.SysDictItem;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @author: Mzaxd
* @Date: 2024/1/19 10:42
*/
@Api(tags = "树形结构")
@RestController
@RequestMapping("/laws/dictTree")
@Slf4j
public class LawsDictTreeController {
@Resource
private DictTreeService dictTreeService;
@AutoLog(value = "树形结构-获取一级树")
@ApiOperation(value = "树形结构-零部件树", notes = "树形结构-零部件树")
@GetMapping("/page")
public Result<TreePage<SysDictItem>> queryTreeList(
@RequestParam(name = "nodeName", required = false, defaultValue = "") @ApiParam("一级节点名称") String nodeName,
@RequestParam(name = "pageNo", defaultValue = "1") @ApiParam("页码") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") @ApiParam("页面大小") Integer pageSize) {
TreePage<SysDictItem> list = dictTreeService.queryTreeList(nodeName, pageNo, pageSize);
return Result.OK(list);
}
@AutoLog(value = "树形结构-零部件树选中回显")
@ApiOperation(value = "树形结构-零部件树选中回显", notes = "树形结构-零部件树选中回显")
@PostMapping("/echo")
public Result<List<SysDictItem>> queryEcho(@RequestBody Map<String, String> selectNodeCodes) {
List<SysDictItem> list = dictTreeService.queryEcho(selectNodeCodes.get("selectNodeCodes"));
return Result.OK(list);
}
@AutoLog(value = "树形结构-零部件树历史数据处理")
@ApiOperation(value = "树形结构-零部件树历史数据处理", notes = "树形结构-零部件树历史数据处理")
@GetMapping("/getChild")
public Result<List<SysDictItem>> getChild(@RequestParam("dictItemId") String dictItemId) {
return Result.OK(dictTreeService.getChild(dictItemId));
}
}
@@ -115,11 +115,11 @@ public class PartName implements Serializable, TreeNode {
private String levelPath;
@Override
public String getTreeNodeId() {
public String obtainTreeNodeId() {
return code;
}
public String getTreeNodeParentId() {
public String obtainTreeNodeParentId() {
return parentCode;
}
}
@@ -24,9 +24,9 @@ public class TreePage<T extends TreeNode> {
T current = node;
while (current != null) {
pathNodes.add(current);
String parentCode = current.getTreeNodeParentId();
String parentCode = current.obtainTreeNodeParentId();
current = allNodes.stream()
.filter(n -> n.getTreeNodeId().equals(parentCode))
.filter(n -> n.obtainTreeNodeId().equals(parentCode))
.findFirst().orElse(null);
}
return pathNodes;
@@ -36,7 +36,7 @@ public class TreePage<T extends TreeNode> {
public Set<T> findAllChildren(List<T> allNodes, T node) {
Set<T> childrenSet = new HashSet<>();
List<T> directChildren = allNodes.stream()
.filter(n -> n.getTreeNodeParentId().equals(node.getTreeNodeId()))
.filter(n -> n.obtainTreeNodeParentId().equals(node.obtainTreeNodeId()))
.collect(Collectors.toList());
for (T child : directChildren) {
@@ -0,0 +1,32 @@
package com.jero.modules.laws.standard.service;
import com.jero.modules.laws.standard.entity.TreePage;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.service.ISysDictItemService;
import com.jero.modules.system.service.ISysDictService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class DictTreeService {
@Resource
private ISysDictService dictService;
@Resource
private ISysDictItemService dictItemService;
public TreePage<SysDictItem> queryTreeList(String nodeName, Integer pageNo, Integer pageSize) {
return null;
}
public List<SysDictItem> queryEcho(String selectNodeCodes) {
return null;
}
public List<SysDictItem> getChild(String dictItemId) {
return null;
}
}
@@ -131,8 +131,7 @@ public class PartNameServiceImpl extends ServiceImpl<PartNameMapper, PartName>
public List<PartName> queryEcho(String selectNodeCodes) {
List<String> codeList = StrUtil.split(selectNodeCodes, ',');
LambdaQueryWrapper<PartName> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PartName::getDelFlag, YesOrNoEnum.NO.getValue())
.in(PartName::getCode, codeList);
queryWrapper.in(PartName::getCode, codeList);
return partNameMapper.selectList(queryWrapper);
}