## 架构树调整(添加阶段顺序)

This commit is contained in:
zhangheng 2025-10-23 16:03:22 +08:00
parent 27f921e8bd
commit c067138773
6 changed files with 133 additions and 36 deletions

View File

@ -87,24 +87,55 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 构建node // 构建node
List<Map<String, Object>> nodeList = new ArrayList<>(); List<Map<String, Object>> nodeList = new ArrayList<>();
nodeList.add(makeNode(EMemberChildNodeType.ROOT.getId(), EMemberChildNodeType.ROOT.getParentId(), EMemberChildNodeType.ROOT.getLabel(), sdf.format(cuMemberRetailDetail.getCreationTime()),cuMemberRetailDetail.getChildNode(),cuMemberRetailDetail.getPkMember(), memberMap)); for (EMemberChildNodeType type : EMemberChildNodeType.values()) {
if (type == EMemberChildNodeType.ROOT) {
nodeList.add(makeNode(
type.getId(),
type.getParentId(),
type.getLabel(),
sdf.format(cuMemberRetailDetail.getCreationTime()),
cuMemberRetailDetail.getStageSort(),
cuMemberRetailDetail.getChildNode(),
cuMemberRetailDetail.getPkMember(),
cuMemberRetailDetail.getStage(),
memberMap
));
continue;
}
nodeList.add(makeNode(EMemberChildNodeType.NODE1.getId(), EMemberChildNodeType.NODE1.getParentId(), EMemberChildNodeType.NODE1.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint11(),sdf),cuMemberRetailDetail.getPoint11(), cuMemberRetailDetail.getPointMember11(), memberMap)); Integer point = (Integer) type.getPointValue(cuMemberRetailDetail);
nodeList.add(makeNode(EMemberChildNodeType.NODE2.getId(), EMemberChildNodeType.NODE2.getParentId(), EMemberChildNodeType.NODE2.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint12(),sdf),cuMemberRetailDetail.getPoint12(),cuMemberRetailDetail.getPointMember12(), memberMap)); Long pointMember = (Long) type.getPointMemberValue(cuMemberRetailDetail);
nodeList.add(makeNode(EMemberChildNodeType.NODE3.getId(), EMemberChildNodeType.NODE3.getParentId(), EMemberChildNodeType.NODE3.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint21(),sdf),cuMemberRetailDetail.getPoint21(),cuMemberRetailDetail.getPointMember21(), memberMap)); nodeList.add(makeNode(
nodeList.add(makeNode(EMemberChildNodeType.NODE4.getId(), EMemberChildNodeType.NODE4.getParentId(), EMemberChildNodeType.NODE4.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint22(),sdf),cuMemberRetailDetail.getPoint22(),cuMemberRetailDetail.getPointMember22(), memberMap)); type.getId(),
nodeList.add(makeNode(EMemberChildNodeType.NODE5.getId(), EMemberChildNodeType.NODE5.getParentId(), EMemberChildNodeType.NODE5.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint23(),sdf),cuMemberRetailDetail.getPoint23(),cuMemberRetailDetail.getPointMember23(), memberMap)); type.getParentId(),
nodeList.add(makeNode(EMemberChildNodeType.NODE6.getId(), EMemberChildNodeType.NODE6.getParentId(), EMemberChildNodeType.NODE6.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint24(),sdf),cuMemberRetailDetail.getPoint24(),cuMemberRetailDetail.getPointMember24(), memberMap)); type.getLabel(),
safeFormatTime(collect, point, sdf),
nodeList.add(makeNode(EMemberChildNodeType.NODE7.getId(), EMemberChildNodeType.NODE7.getParentId(), EMemberChildNodeType.NODE7.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint31(),sdf),cuMemberRetailDetail.getPoint31(),cuMemberRetailDetail.getPointMember31(), memberMap)); safeStageSort(collect,point),
nodeList.add(makeNode(EMemberChildNodeType.NODE8.getId(), EMemberChildNodeType.NODE8.getParentId(), EMemberChildNodeType.NODE8.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint32(),sdf),cuMemberRetailDetail.getPoint32(),cuMemberRetailDetail.getPointMember32(), memberMap)); point,
nodeList.add(makeNode(EMemberChildNodeType.NODE9.getId(), EMemberChildNodeType.NODE9.getParentId(), EMemberChildNodeType.NODE9.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint33(),sdf),cuMemberRetailDetail.getPoint33(),cuMemberRetailDetail.getPointMember33(), memberMap)); pointMember,
nodeList.add(makeNode(EMemberChildNodeType.NODE10.getId(), EMemberChildNodeType.NODE10.getParentId(), EMemberChildNodeType.NODE10.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint34(),sdf),cuMemberRetailDetail.getPoint34(),cuMemberRetailDetail.getPointMember34(), memberMap)); safeStage(collect,point),
nodeList.add(makeNode(EMemberChildNodeType.NODE11.getId(), EMemberChildNodeType.NODE11.getParentId(), EMemberChildNodeType.NODE11.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint35(),sdf),cuMemberRetailDetail.getPoint35(),cuMemberRetailDetail.getPointMember35(), memberMap)); memberMap
nodeList.add(makeNode(EMemberChildNodeType.NODE12.getId(), EMemberChildNodeType.NODE12.getParentId(), EMemberChildNodeType.NODE12.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint36(),sdf),cuMemberRetailDetail.getPoint36(),cuMemberRetailDetail.getPointMember36(), memberMap)); ));
nodeList.add(makeNode(EMemberChildNodeType.NODE13.getId(), EMemberChildNodeType.NODE13.getParentId(), EMemberChildNodeType.NODE13.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint37(),sdf),cuMemberRetailDetail.getPoint37(),cuMemberRetailDetail.getPointMember37(), memberMap)); }
nodeList.add(makeNode(EMemberChildNodeType.NODE14.getId(), EMemberChildNodeType.NODE14.getParentId(), EMemberChildNodeType.NODE14.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint38(),sdf),cuMemberRetailDetail.getPoint38(),cuMemberRetailDetail.getPointMember38(), memberMap)); // nodeList.add(makeNode(EMemberChildNodeType.ROOT.getId(), EMemberChildNodeType.ROOT.getParentId(), EMemberChildNodeType.ROOT.getLabel(), sdf.format(cuMemberRetailDetail.getCreationTime()),cuMemberRetailDetail.getChildNode(),cuMemberRetailDetail.getPkMember(), memberMap));
//
// nodeList.add(makeNode(EMemberChildNodeType.NODE1.getId(), EMemberChildNodeType.NODE1.getParentId(), EMemberChildNodeType.NODE1.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint11(),sdf),cuMemberRetailDetail.getPoint11(), cuMemberRetailDetail.getPointMember11(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE2.getId(), EMemberChildNodeType.NODE2.getParentId(), EMemberChildNodeType.NODE2.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint12(),sdf),cuMemberRetailDetail.getPoint12(),cuMemberRetailDetail.getPointMember12(), memberMap));
//
// nodeList.add(makeNode(EMemberChildNodeType.NODE3.getId(), EMemberChildNodeType.NODE3.getParentId(), EMemberChildNodeType.NODE3.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint21(),sdf),cuMemberRetailDetail.getPoint21(),cuMemberRetailDetail.getPointMember21(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE4.getId(), EMemberChildNodeType.NODE4.getParentId(), EMemberChildNodeType.NODE4.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint22(),sdf),cuMemberRetailDetail.getPoint22(),cuMemberRetailDetail.getPointMember22(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE5.getId(), EMemberChildNodeType.NODE5.getParentId(), EMemberChildNodeType.NODE5.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint23(),sdf),cuMemberRetailDetail.getPoint23(),cuMemberRetailDetail.getPointMember23(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE6.getId(), EMemberChildNodeType.NODE6.getParentId(), EMemberChildNodeType.NODE6.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint24(),sdf),cuMemberRetailDetail.getPoint24(),cuMemberRetailDetail.getPointMember24(), memberMap));
//
// nodeList.add(makeNode(EMemberChildNodeType.NODE7.getId(), EMemberChildNodeType.NODE7.getParentId(), EMemberChildNodeType.NODE7.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint31(),sdf),cuMemberRetailDetail.getPoint31(),cuMemberRetailDetail.getPointMember31(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE8.getId(), EMemberChildNodeType.NODE8.getParentId(), EMemberChildNodeType.NODE8.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint32(),sdf),cuMemberRetailDetail.getPoint32(),cuMemberRetailDetail.getPointMember32(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE9.getId(), EMemberChildNodeType.NODE9.getParentId(), EMemberChildNodeType.NODE9.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint33(),sdf),cuMemberRetailDetail.getPoint33(),cuMemberRetailDetail.getPointMember33(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE10.getId(), EMemberChildNodeType.NODE10.getParentId(), EMemberChildNodeType.NODE10.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint34(),sdf),cuMemberRetailDetail.getPoint34(),cuMemberRetailDetail.getPointMember34(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE11.getId(), EMemberChildNodeType.NODE11.getParentId(), EMemberChildNodeType.NODE11.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint35(),sdf),cuMemberRetailDetail.getPoint35(),cuMemberRetailDetail.getPointMember35(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE12.getId(), EMemberChildNodeType.NODE12.getParentId(), EMemberChildNodeType.NODE12.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint36(),sdf),cuMemberRetailDetail.getPoint36(),cuMemberRetailDetail.getPointMember36(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE13.getId(), EMemberChildNodeType.NODE13.getParentId(), EMemberChildNodeType.NODE13.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint37(),sdf),cuMemberRetailDetail.getPoint37(),cuMemberRetailDetail.getPointMember37(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE14.getId(), EMemberChildNodeType.NODE14.getParentId(), EMemberChildNodeType.NODE14.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint38(),sdf),cuMemberRetailDetail.getPoint38(),cuMemberRetailDetail.getPointMember38(), memberMap));
// 构造树结构 // 构造树结构
return TreeUtil.build(nodeList, EMemberChildNodeType.ROOT.getParentId(), (node, tree) -> { return TreeUtil.build(nodeList, EMemberChildNodeType.ROOT.getParentId(), (node, tree) -> {
@ -117,8 +148,27 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
tree.putExtra("pointMember", node.get("pointMember")); tree.putExtra("pointMember", node.get("pointMember"));
tree.putExtra("creationTime", node.get("creationTime")); tree.putExtra("creationTime", node.get("creationTime"));
tree.putExtra("position", node.get("position")); tree.putExtra("position", node.get("position"));
tree.putExtra("stage", node.get("stage"));
tree.putExtra("stageSort", node.get("stageSort"));
}); });
} }
private Integer safeStage(Map<Integer, CuMemberPointDTO> collect, Integer point) {
CuMemberPointDTO cuMemberPointDTO = collect.get(point);
if (cuMemberPointDTO == null || cuMemberPointDTO.getStage() == null) {
return null;
}
return cuMemberPointDTO.getStage();
}
private Integer safeStageSort(Map<Integer, CuMemberPointDTO> collect, Integer point) {
CuMemberPointDTO cuMemberPointDTO = collect.get(point);
if (cuMemberPointDTO == null || cuMemberPointDTO.getStageSort() == null) {
return null;
}
return cuMemberPointDTO.getStageSort();
}
private String safeFormatTime(Map<Integer, CuMemberPointDTO> collect, Integer pointKey, SimpleDateFormat sdf) { private String safeFormatTime(Map<Integer, CuMemberPointDTO> collect, Integer pointKey, SimpleDateFormat sdf) {
var detail = collect.get(pointKey); var detail = collect.get(pointKey);
if (detail == null || detail.getCreationTime() == null) { if (detail == null || detail.getCreationTime() == null) {
@ -174,8 +224,8 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
} }
private Map<String, Object> makeNode(String id, String parentId, String label,String creationTime,Integer pointMember, private Map<String, Object> makeNode(String id, String parentId, String label,String creationTime,Integer stageSort,Integer pointMember,
Long memberId, Map<Long, CuMember> memberMap) { Long memberId, Integer stage,Map<Long, CuMember> memberMap) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("id", id); map.put("id", id);
map.put("parentId", parentId); map.put("parentId", parentId);
@ -187,8 +237,10 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
map.put("memberCode", member.getMemberCode()); map.put("memberCode", member.getMemberCode());
map.put("memberName", member.getMemberName()); map.put("memberName", member.getMemberName());
map.put("pointMember", pointMember); map.put("pointMember", pointMember);
map.put("position",member.getMemberName() + "-" + pointMember); map.put("position",member.getMemberCode() + "-" + stage + "-" + stageSort + "(" + pointMember + ")");
map.put("creationTime", creationTime); map.put("creationTime", creationTime);
map.put("stageSort", stageSort);
map.put("stage", stage);
} else { } else {
// 没有信息置空 // 没有信息置空
map.put("memberCode", ""); map.put("memberCode", "");
@ -196,6 +248,8 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
map.put("pointMember", ""); map.put("pointMember", "");
map.put("position", ""); map.put("position", "");
map.put("creationTime", ""); map.put("creationTime", "");
map.put("stageSort", "");
map.put("stage", "");
} }
return map; return map;
} }

View File

@ -11,12 +11,19 @@ import java.util.Date;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class CuMemberPointDTO { public class CuMemberPointDTO {
/**
* 点位信息
*/
private Integer stageSort;
/** /**
* 点位信息 * 点位信息
*/ */
private Integer childNode; private Integer childNode;
/**
* 阶段信息
*/
private Integer stage;
/** /**
* 点位创建时间 * 点位创建时间
*/ */

View File

@ -249,5 +249,9 @@ public class CuMemberThreeFrameworkVO implements Serializable {
* 更新标记不为null则需要入库 * 更新标记不为null则需要入库
*/ */
private Integer updateBool; private Integer updateBool;
/**
* 节点顺序
*/
private Integer stageSort;
} }

View File

@ -76,8 +76,10 @@
<select id="getPointDetailListByPoints" <select id="getPointDetailListByPoints"
resultType="com.hzs.member.structure.controller.dto.CuMemberPointDTO"> resultType="com.hzs.member.structure.controller.dto.CuMemberPointDTO">
SELECT SELECT
cur.STAGE_SORT,
cur.CHILD_NODE, cur.CHILD_NODE,
cur.CREATION_TIME cur.CREATION_TIME,
cur.STAGE
FROM FROM
${settleTableName} cur ${settleTableName} cur
WHERE WHERE

View File

@ -14,7 +14,7 @@ public enum EMemberChildNodeType {
/** /**
* 根节点 * 根节点
*/ */
ROOT("0-root", "0", "0-root"), ROOT("0-root", "0", "0-root", null, null),
/** /**
* 第一层根的子节点 * 第一层根的子节点
@ -22,31 +22,31 @@ public enum EMemberChildNodeType {
/** /**
* 1-1 * 1-1
*/ */
NODE1("1-1", "0-root", "1-1"), NODE1("1-1", "0-root", "1-1", "point11", "pointMember11"),
/** /**
* 1-2 * 1-2
*/ */
NODE2("1-2", "0-root", "1-2"), NODE2("1-2", "0-root", "1-2", "point12", "pointMember12"),
/** /**
* 第二层 * 第二层
*/ */
NODE3("2-1", "1-1", "2-1"), NODE3("2-1", "1-1", "2-1", "point21", "pointMember21"),
NODE4("2-2", "1-1", "2-2"), NODE4("2-2", "1-1", "2-2", "point22", "pointMember22"),
NODE5("2-3", "1-2", "2-3"), NODE5("2-3", "1-2", "2-3", "point23", "pointMember23"),
NODE6("2-4", "1-2", "2-4"), NODE6("2-4", "1-2", "2-4", "point24", "pointMember24"),
/** /**
* 第三层 * 第三层
*/ */
NODE7("3-1", "2-1", "3-1"), NODE7("3-1", "2-1", "3-1", "point31", "pointMember31"),
NODE8("3-2", "2-1", "3-2"), NODE8("3-2", "2-1", "3-2", "point32", "pointMember32"),
NODE9("3-3", "2-2", "3-3"), NODE9("3-3", "2-2", "3-3", "point33", "pointMember33"),
NODE10("3-4", "2-2", "3-4"), NODE10("3-4", "2-2", "3-4", "point34", "pointMember34"),
NODE11("3-5", "2-3", "3-5"), NODE11("3-5", "2-3", "3-5", "point35", "pointMember35"),
NODE12("3-6", "2-3", "3-6"), NODE12("3-6", "2-3", "3-6", "point36", "pointMember36"),
NODE13("3-7", "2-4", "3-7"), NODE13("3-7", "2-4", "3-7", "point37", "pointMember37"),
NODE14("3-8", "2-4", "3-8"); NODE14("3-8", "2-4", "3-8", "point38", "pointMember38");
/** /**
* 点位子会员节点 * 点位子会员节点
@ -62,4 +62,28 @@ public enum EMemberChildNodeType {
* 节点显示名称 * 节点显示名称
*/ */
private final String label; private final String label;
private final String pointField;
private final String pointMemberField;
public Object getFieldValue(Object target, String fieldName) {
if (target == null || fieldName == null) {
return null;
}
try {
String methodName = "get" + Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1);
return target.getClass().getMethod(methodName).invoke(target);
} catch (Exception e) {
return null;
}
}
public Object getPointValue(Object target) {
return getFieldValue(target, this.pointField);
}
public Object getPointMemberValue(Object target) {
return getFieldValue(target, this.pointMemberField);
}
} }

View File

@ -294,4 +294,10 @@ public class CuMemberRetailDetail {
@TableField(exist = false) @TableField(exist = false)
private Integer updateBool; private Integer updateBool;
/**
* 阶段节点顺序
*/
@TableField("STAGE_SORT")
private Integer stageSort;
} }