## 阶段架构查询bug修改

This commit is contained in:
zhangheng 2025-10-24 10:54:38 +08:00
parent 6ad38e9c5c
commit a91403a3ad
6 changed files with 56 additions and 25 deletions

View File

@ -2,6 +2,7 @@ package com.hzs.member.base.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail; import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.member.base.param.CuMemberPointPairParam;
import com.hzs.member.structure.controller.dto.CuMemberPointDTO; import com.hzs.member.structure.controller.dto.CuMemberPointDTO;
import com.hzs.member.structure.controller.vo.ChildCodeVO; import com.hzs.member.structure.controller.vo.ChildCodeVO;
import com.hzs.member.structure.controller.vo.CuMemberPointDetailVO; import com.hzs.member.structure.controller.vo.CuMemberPointDetailVO;
@ -42,8 +43,7 @@ public interface CuMemberRetailDetailMapper extends BaseMapper<CuMemberRetailDet
@Param("point") Integer point, @Param("point") Integer point,
@Param("settleTableName") String settleTableName); @Param("settleTableName") String settleTableName);
List<CuMemberPointDTO> getPointDetailListByPoints(@Param("pkMember") Long pkMember, List<CuMemberPointDTO> getPointDetailListByPoints(@Param("pairList") List<CuMemberPointPairParam> pairList,
@Param("points") Set<Integer> points,
@Param("stage") Integer stage, @Param("stage") Integer stage,
@Param("settleTableName") String settleTableName); @Param("settleTableName") String settleTableName);

View File

@ -0,0 +1,15 @@
package com.hzs.member.base.param;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CuMemberPointPairParam {
private Long pkMember;
private Integer childNode;
}

View File

@ -2,6 +2,7 @@ package com.hzs.member.base.service;
import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.Tree;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail; import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.member.base.param.CuMemberPointPairParam;
import com.hzs.member.structure.controller.dto.CuMemberPointDTO; import com.hzs.member.structure.controller.dto.CuMemberPointDTO;
import com.hzs.member.structure.controller.vo.ChildCodeVO; import com.hzs.member.structure.controller.vo.ChildCodeVO;
import com.hzs.member.structure.controller.vo.CuMemberPointDetailVO; import com.hzs.member.structure.controller.vo.CuMemberPointDetailVO;
@ -26,5 +27,5 @@ public interface ICumemberRetailDetailService {
CuMemberPointDetailVO getPointDetailByUserId(Long userId, Long pointMember,Integer stage, Integer point, String settleTableName); CuMemberPointDetailVO getPointDetailByUserId(Long userId, Long pointMember,Integer stage, Integer point, String settleTableName);
List<CuMemberPointDTO> getPointDetailListByPoints(Long pkMember, Set<Integer> points, Integer stage, String settleTableName); List<CuMemberPointDTO> getPointDetailListByPoints(List<CuMemberPointPairParam> pairList, Integer stage, String settleTableName);
} }

View File

@ -10,6 +10,7 @@ import com.hzs.common.core.enums.EMemberChildNodeType;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail; import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.base.CuMember;
import com.hzs.member.base.mapper.CuMemberRetailDetailMapper; import com.hzs.member.base.mapper.CuMemberRetailDetailMapper;
import com.hzs.member.base.param.CuMemberPointPairParam;
import com.hzs.member.base.service.ICuMemberService; import com.hzs.member.base.service.ICuMemberService;
import com.hzs.member.base.service.ICumemberRetailDetailService; import com.hzs.member.base.service.ICumemberRetailDetailService;
import com.hzs.member.structure.controller.dto.CuMemberDetailDTO; import com.hzs.member.structure.controller.dto.CuMemberDetailDTO;
@ -47,7 +48,7 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
@Override @Override
public List<Tree<String>> convertToNodeList(CuMemberRetailDetail cuMemberRetailDetail,String settleTableName) { public List<Tree<String>> convertToNodeList(CuMemberRetailDetail cuMemberRetailDetail,String settleTableName) {
// 所有会员id // 所有会员id
Set<Long> ids = new LinkedHashSet<>(); List<Long> ids = new ArrayList<>();
ids.add(cuMemberRetailDetail.getPkMember()); ids.add(cuMemberRetailDetail.getPkMember());
// 过滤空的会员id // 过滤空的会员id
Stream.of( Stream.of(
@ -67,7 +68,7 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
Map<Long, CuMember> memberMap = members.stream() Map<Long, CuMember> memberMap = members.stream()
.collect(Collectors.toMap(CuMember::getPkId, Function.identity(), (a, b) -> a)); .collect(Collectors.toMap(CuMember::getPkId, Function.identity(), (a, b) -> a));
// 所有点位信息 // 所有点位信息
Set<Integer> points = new LinkedHashSet<>(); List<Integer> points = new ArrayList<>();
// 过滤所有空的点位信息 // 过滤所有空的点位信息
Stream.of( Stream.of(
cuMemberRetailDetail.getPoint11(), cuMemberRetailDetail.getPoint12(), cuMemberRetailDetail.getPoint11(), cuMemberRetailDetail.getPoint12(),
@ -77,13 +78,24 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
).filter(Objects::nonNull).forEach(points::add); ).filter(Objects::nonNull).forEach(points::add);
// 查询所有点位信息创建时间 // 查询所有点位信息创建时间
List<CuMemberPointDTO> cuMemberPointDTOList; List<CuMemberPointDTO> cuMemberPointDTOList;
if (points.isEmpty()) { if (points.isEmpty() || ids.isEmpty()) {
cuMemberPointDTOList = Collections.emptyList(); cuMemberPointDTOList = Collections.emptyList();
}else { }else {
cuMemberPointDTOList = iCumemberRetailDetailService.getPointDetailListByPoints(cuMemberRetailDetail.getPkMember(),points,cuMemberRetailDetail.getStage(),settleTableName); List<CuMemberPointPairParam> pairList = new ArrayList<>();
ids.remove(0);
Iterator<Long> idIter = ids.iterator();
Iterator<Integer> pointIter = points.iterator();
while (idIter.hasNext() && pointIter.hasNext()) {
pairList.add(new CuMemberPointPairParam(idIter.next(), pointIter.next()));
}
cuMemberPointDTOList = iCumemberRetailDetailService.getPointDetailListByPoints(pairList,cuMemberRetailDetail.getStage(),settleTableName);
} }
Map<Integer, CuMemberPointDTO> collect = cuMemberPointDTOList.stream() Map<String, CuMemberPointDTO> collect = cuMemberPointDTOList.stream()
.collect(Collectors.toMap(CuMemberPointDTO::getChildNode, Function.identity(), (a, b) -> a)); .collect(Collectors.toMap(
dto -> dto.getPkMember() + "-" + dto.getChildNode(),
Function.identity(),
(a, b) -> a
));
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<>();
@ -110,11 +122,11 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
type.getId(), type.getId(),
type.getParentId(), type.getParentId(),
type.getLabel(), type.getLabel(),
safeFormatTime(collect, point, sdf), safeFormatTime(collect, pointMember,point, sdf),
safeStageSort(collect,point), safeStageSort(collect,pointMember,point),
point, point,
pointMember, pointMember,
safeStage(collect,point), safeStage(collect,pointMember,point),
memberMap memberMap
)); ));
} }
@ -153,24 +165,24 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
}); });
} }
private Integer safeStage(Map<Integer, CuMemberPointDTO> collect, Integer point) { private Integer safeStage(Map<String, CuMemberPointDTO> collect,Long pkMember, Integer point) {
CuMemberPointDTO cuMemberPointDTO = collect.get(point); CuMemberPointDTO cuMemberPointDTO = collect.get(pkMember + "-" + point);
if (cuMemberPointDTO == null || cuMemberPointDTO.getStage() == null) { if (cuMemberPointDTO == null || cuMemberPointDTO.getStage() == null) {
return null; return null;
} }
return cuMemberPointDTO.getStage(); return cuMemberPointDTO.getStage();
} }
private Integer safeStageSort(Map<Integer, CuMemberPointDTO> collect, Integer point) { private Integer safeStageSort(Map<String, CuMemberPointDTO> collect,Long pkMember, Integer point) {
CuMemberPointDTO cuMemberPointDTO = collect.get(point); CuMemberPointDTO cuMemberPointDTO = collect.get(pkMember + "-" + point);
if (cuMemberPointDTO == null || cuMemberPointDTO.getStageSort() == null) { if (cuMemberPointDTO == null || cuMemberPointDTO.getStageSort() == null) {
return null; return null;
} }
return cuMemberPointDTO.getStageSort(); return cuMemberPointDTO.getStageSort();
} }
private String safeFormatTime(Map<Integer, CuMemberPointDTO> collect, Integer pointKey, SimpleDateFormat sdf) { private String safeFormatTime(Map<String, CuMemberPointDTO> collect,Long pkMember, Integer pointKey, SimpleDateFormat sdf) {
var detail = collect.get(pointKey); var detail = collect.get(pkMember + "-" + pointKey);
if (detail == null || detail.getCreationTime() == null) { if (detail == null || detail.getCreationTime() == null) {
return ""; return "";
} }
@ -209,8 +221,8 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
} }
@Override @Override
public List<CuMemberPointDTO> getPointDetailListByPoints(Long pkMember, Set<Integer> points, Integer stage, String settleTableName) { public List<CuMemberPointDTO> getPointDetailListByPoints(List<CuMemberPointPairParam> pairList, Integer stage, String settleTableName) {
return baseMapper.getPointDetailListByPoints(pkMember,points,stage,settleTableName); return baseMapper.getPointDetailListByPoints(pairList,stage,settleTableName);
} }
private CuMemberPointDetailVO makeCuMemberPointDetailVO(CuMemberDetailDTO cuMemberDetailDTO, CuMemberPointDTO cuMemberPointDTO,Integer point) { private CuMemberPointDetailVO makeCuMemberPointDetailVO(CuMemberDetailDTO cuMemberDetailDTO, CuMemberPointDTO cuMemberPointDTO,Integer point) {

View File

@ -11,6 +11,10 @@ import java.util.Date;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class CuMemberPointDTO { public class CuMemberPointDTO {
/**
* 会员编号
*/
private Long pkMember;
/** /**
* 点位信息 * 点位信息
*/ */

View File

@ -63,7 +63,7 @@
and curd.STAGE_STATUS = #{stageStatus} and curd.STAGE_STATUS = #{stageStatus}
</if> </if>
ORDER BY ORDER BY
curd.CHILD_NODE curd.STAGE_SORT
</select> </select>
<select id="getPointDetailByUserId" <select id="getPointDetailByUserId"
resultType="com.hzs.member.structure.controller.dto.CuMemberPointDTO"> resultType="com.hzs.member.structure.controller.dto.CuMemberPointDTO">
@ -76,6 +76,7 @@
<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.PK_MEMBER,
cur.STAGE_SORT, cur.STAGE_SORT,
cur.CHILD_NODE, cur.CHILD_NODE,
cur.CREATION_TIME, cur.CREATION_TIME,
@ -83,10 +84,8 @@
FROM FROM
${settleTableName} cur ${settleTableName} cur
WHERE WHERE
cur.PK_MEMBER = #{ pkMember } <foreach collection="pairList" item="pair" separator=" OR ">
AND cur.CHILD_NODE IN (cur.PK_MEMBER = #{pair.pkMember} AND cur.CHILD_NODE = #{pair.childNode})
<foreach collection="points" item="p" open="(" separator="," close=")">
#{p}
</foreach> </foreach>
AND cur.STAGE = #{ stage } AND cur.STAGE = #{ stage }
</select> </select>