## 阶段架构查询bug修改

This commit is contained in:
zhangheng 2025-10-24 10:54:38 +08:00
parent e3af3db152
commit 6bf2125a18
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.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.vo.ChildCodeVO;
import com.hzs.member.structure.controller.vo.CuMemberPointDetailVO;
@ -42,8 +43,7 @@ public interface CuMemberRetailDetailMapper extends BaseMapper<CuMemberRetailDet
@Param("point") Integer point,
@Param("settleTableName") String settleTableName);
List<CuMemberPointDTO> getPointDetailListByPoints(@Param("pkMember") Long pkMember,
@Param("points") Set<Integer> points,
List<CuMemberPointDTO> getPointDetailListByPoints(@Param("pairList") List<CuMemberPointPairParam> pairList,
@Param("stage") Integer stage,
@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 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.vo.ChildCodeVO;
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);
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.base.CuMember;
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.ICumemberRetailDetailService;
import com.hzs.member.structure.controller.dto.CuMemberDetailDTO;
@ -47,7 +48,7 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
@Override
public List<Tree<String>> convertToNodeList(CuMemberRetailDetail cuMemberRetailDetail,String settleTableName) {
// 所有会员id
Set<Long> ids = new LinkedHashSet<>();
List<Long> ids = new ArrayList<>();
ids.add(cuMemberRetailDetail.getPkMember());
// 过滤空的会员id
Stream.of(
@ -67,7 +68,7 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
Map<Long, CuMember> memberMap = members.stream()
.collect(Collectors.toMap(CuMember::getPkId, Function.identity(), (a, b) -> a));
// 所有点位信息
Set<Integer> points = new LinkedHashSet<>();
List<Integer> points = new ArrayList<>();
// 过滤所有空的点位信息
Stream.of(
cuMemberRetailDetail.getPoint11(), cuMemberRetailDetail.getPoint12(),
@ -77,13 +78,24 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
).filter(Objects::nonNull).forEach(points::add);
// 查询所有点位信息创建时间
List<CuMemberPointDTO> cuMemberPointDTOList;
if (points.isEmpty()) {
if (points.isEmpty() || ids.isEmpty()) {
cuMemberPointDTOList = Collections.emptyList();
}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()));
}
Map<Integer, CuMemberPointDTO> collect = cuMemberPointDTOList.stream()
.collect(Collectors.toMap(CuMemberPointDTO::getChildNode, Function.identity(), (a, b) -> a));
cuMemberPointDTOList = iCumemberRetailDetailService.getPointDetailListByPoints(pairList,cuMemberRetailDetail.getStage(),settleTableName);
}
Map<String, CuMemberPointDTO> collect = cuMemberPointDTOList.stream()
.collect(Collectors.toMap(
dto -> dto.getPkMember() + "-" + dto.getChildNode(),
Function.identity(),
(a, b) -> a
));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 构建node
List<Map<String, Object>> nodeList = new ArrayList<>();
@ -110,11 +122,11 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
type.getId(),
type.getParentId(),
type.getLabel(),
safeFormatTime(collect, point, sdf),
safeStageSort(collect,point),
safeFormatTime(collect, pointMember,point, sdf),
safeStageSort(collect,pointMember,point),
point,
pointMember,
safeStage(collect,point),
safeStage(collect,pointMember,point),
memberMap
));
}
@ -153,24 +165,24 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
});
}
private Integer safeStage(Map<Integer, CuMemberPointDTO> collect, Integer point) {
CuMemberPointDTO cuMemberPointDTO = collect.get(point);
private Integer safeStage(Map<String, CuMemberPointDTO> collect,Long pkMember, Integer point) {
CuMemberPointDTO cuMemberPointDTO = collect.get(pkMember + "-" + 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);
private Integer safeStageSort(Map<String, CuMemberPointDTO> collect,Long pkMember, Integer point) {
CuMemberPointDTO cuMemberPointDTO = collect.get(pkMember + "-" + 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);
private String safeFormatTime(Map<String, CuMemberPointDTO> collect,Long pkMember, Integer pointKey, SimpleDateFormat sdf) {
var detail = collect.get(pkMember + "-" + pointKey);
if (detail == null || detail.getCreationTime() == null) {
return "";
}
@ -209,8 +221,8 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
}
@Override
public List<CuMemberPointDTO> getPointDetailListByPoints(Long pkMember, Set<Integer> points, Integer stage, String settleTableName) {
return baseMapper.getPointDetailListByPoints(pkMember,points,stage,settleTableName);
public List<CuMemberPointDTO> getPointDetailListByPoints(List<CuMemberPointPairParam> pairList, Integer stage, String settleTableName) {
return baseMapper.getPointDetailListByPoints(pairList,stage,settleTableName);
}
private CuMemberPointDetailVO makeCuMemberPointDetailVO(CuMemberDetailDTO cuMemberDetailDTO, CuMemberPointDTO cuMemberPointDTO,Integer point) {

View File

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

View File

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