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

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");
// 构建node
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));
nodeList.add(makeNode(EMemberChildNodeType.NODE2.getId(), EMemberChildNodeType.NODE2.getParentId(), EMemberChildNodeType.NODE2.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint12(),sdf),cuMemberRetailDetail.getPoint12(),cuMemberRetailDetail.getPointMember12(), memberMap));
Integer point = (Integer) type.getPointValue(cuMemberRetailDetail);
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(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));
nodeList.add(makeNode(
type.getId(),
type.getParentId(),
type.getLabel(),
safeFormatTime(collect, point, sdf),
safeStageSort(collect,point),
point,
pointMember,
safeStage(collect,point),
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) -> {
@ -117,8 +148,27 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
tree.putExtra("pointMember", node.get("pointMember"));
tree.putExtra("creationTime", node.get("creationTime"));
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) {
var detail = collect.get(pointKey);
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,
Long memberId, Map<Long, CuMember> memberMap) {
private Map<String, Object> makeNode(String id, String parentId, String label,String creationTime,Integer stageSort,Integer pointMember,
Long memberId, Integer stage,Map<Long, CuMember> memberMap) {
Map<String, Object> map = new HashMap<>();
map.put("id", id);
map.put("parentId", parentId);
@ -187,8 +237,10 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
map.put("memberCode", member.getMemberCode());
map.put("memberName", member.getMemberName());
map.put("pointMember", pointMember);
map.put("position",member.getMemberName() + "-" + pointMember);
map.put("position",member.getMemberCode() + "-" + stage + "-" + stageSort + "(" + pointMember + ")");
map.put("creationTime", creationTime);
map.put("stageSort", stageSort);
map.put("stage", stage);
} else {
// 没有信息置空
map.put("memberCode", "");
@ -196,6 +248,8 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
map.put("pointMember", "");
map.put("position", "");
map.put("creationTime", "");
map.put("stageSort", "");
map.put("stage", "");
}
return map;
}

View File

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

View File

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

View File

@ -76,8 +76,10 @@
<select id="getPointDetailListByPoints"
resultType="com.hzs.member.structure.controller.dto.CuMemberPointDTO">
SELECT
cur.STAGE_SORT,
cur.CHILD_NODE,
cur.CREATION_TIME
cur.CREATION_TIME,
cur.STAGE
FROM
${settleTableName} cur
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
*/
NODE1("1-1", "0-root", "1-1"),
NODE1("1-1", "0-root", "1-1", "point11", "pointMember11"),
/**
* 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"),
NODE4("2-2", "1-1", "2-2"),
NODE5("2-3", "1-2", "2-3"),
NODE6("2-4", "1-2", "2-4"),
NODE3("2-1", "1-1", "2-1", "point21", "pointMember21"),
NODE4("2-2", "1-1", "2-2", "point22", "pointMember22"),
NODE5("2-3", "1-2", "2-3", "point23", "pointMember23"),
NODE6("2-4", "1-2", "2-4", "point24", "pointMember24"),
/**
* 第三层
*/
NODE7("3-1", "2-1", "3-1"),
NODE8("3-2", "2-1", "3-2"),
NODE9("3-3", "2-2", "3-3"),
NODE10("3-4", "2-2", "3-4"),
NODE11("3-5", "2-3", "3-5"),
NODE12("3-6", "2-3", "3-6"),
NODE13("3-7", "2-4", "3-7"),
NODE14("3-8", "2-4", "3-8");
NODE7("3-1", "2-1", "3-1", "point31", "pointMember31"),
NODE8("3-2", "2-1", "3-2", "point32", "pointMember32"),
NODE9("3-3", "2-2", "3-3", "point33", "pointMember33"),
NODE10("3-4", "2-2", "3-4", "point34", "pointMember34"),
NODE11("3-5", "2-3", "3-5", "point35", "pointMember35"),
NODE12("3-6", "2-3", "3-6", "point36", "pointMember36"),
NODE13("3-7", "2-4", "3-7", "point37", "pointMember37"),
NODE14("3-8", "2-4", "3-8", "point38", "pointMember38");
/**
* 点位子会员节点
@ -62,4 +62,28 @@ public enum EMemberChildNodeType {
* 节点显示名称
*/
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)
private Integer updateBool;
/**
* 阶段节点顺序
*/
@TableField("STAGE_SORT")
private Integer stageSort;
}