diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberRetailDetailMapper.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberRetailDetailMapper.java index 95eecc55..cec34e3d 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberRetailDetailMapper.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberRetailDetailMapper.java @@ -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 getPointDetailListByPoints(@Param("pkMember") Long pkMember, - @Param("points") Set points, + List getPointDetailListByPoints(@Param("pairList") List pairList, @Param("stage") Integer stage, @Param("settleTableName") String settleTableName); diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/param/CuMemberPointPairParam.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/param/CuMemberPointPairParam.java new file mode 100644 index 00000000..379a688a --- /dev/null +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/param/CuMemberPointPairParam.java @@ -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; +} diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICumemberRetailDetailService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICumemberRetailDetailService.java index 2052c3e1..7dea0572 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICumemberRetailDetailService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICumemberRetailDetailService.java @@ -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 getPointDetailListByPoints(Long pkMember, Set points, Integer stage, String settleTableName); + List getPointDetailListByPoints(List pairList, Integer stage, String settleTableName); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/ICumemberRetailDetailServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/ICumemberRetailDetailServiceImpl.java index e3f36f8a..8f0de846 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/ICumemberRetailDetailServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/ICumemberRetailDetailServiceImpl.java @@ -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> convertToNodeList(CuMemberRetailDetail cuMemberRetailDetail,String settleTableName) { // 所有会员id - Set ids = new LinkedHashSet<>(); + List ids = new ArrayList<>(); ids.add(cuMemberRetailDetail.getPkMember()); // 过滤空的会员id Stream.of( @@ -67,7 +68,7 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl memberMap = members.stream() .collect(Collectors.toMap(CuMember::getPkId, Function.identity(), (a, b) -> a)); // 所有点位信息 - Set points = new LinkedHashSet<>(); + List points = new ArrayList<>(); // 过滤所有空的点位信息 Stream.of( cuMemberRetailDetail.getPoint11(), cuMemberRetailDetail.getPoint12(), @@ -77,13 +78,24 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl cuMemberPointDTOList; - if (points.isEmpty()) { + if (points.isEmpty() || ids.isEmpty()) { cuMemberPointDTOList = Collections.emptyList(); }else { - cuMemberPointDTOList = iCumemberRetailDetailService.getPointDetailListByPoints(cuMemberRetailDetail.getPkMember(),points,cuMemberRetailDetail.getStage(),settleTableName); + List pairList = new ArrayList<>(); + ids.remove(0); + Iterator idIter = ids.iterator(); + Iterator pointIter = points.iterator(); + while (idIter.hasNext() && pointIter.hasNext()) { + pairList.add(new CuMemberPointPairParam(idIter.next(), pointIter.next())); + } + cuMemberPointDTOList = iCumemberRetailDetailService.getPointDetailListByPoints(pairList,cuMemberRetailDetail.getStage(),settleTableName); } - Map collect = cuMemberPointDTOList.stream() - .collect(Collectors.toMap(CuMemberPointDTO::getChildNode, Function.identity(), (a, b) -> a)); + Map 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> nodeList = new ArrayList<>(); @@ -110,11 +122,11 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl collect, Integer point) { - CuMemberPointDTO cuMemberPointDTO = collect.get(point); + private Integer safeStage(Map 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 collect, Integer point) { - CuMemberPointDTO cuMemberPointDTO = collect.get(point); + private Integer safeStageSort(Map 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 collect, Integer pointKey, SimpleDateFormat sdf) { - var detail = collect.get(pointKey); + private String safeFormatTime(Map 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 getPointDetailListByPoints(Long pkMember, Set points, Integer stage, String settleTableName) { - return baseMapper.getPointDetailListByPoints(pkMember,points,stage,settleTableName); + public List getPointDetailListByPoints(List pairList, Integer stage, String settleTableName) { + return baseMapper.getPointDetailListByPoints(pairList,stage,settleTableName); } private CuMemberPointDetailVO makeCuMemberPointDetailVO(CuMemberDetailDTO cuMemberDetailDTO, CuMemberPointDTO cuMemberPointDTO,Integer point) { diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/structure/controller/dto/CuMemberPointDTO.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/structure/controller/dto/CuMemberPointDTO.java index 29fe5443..85b32291 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/structure/controller/dto/CuMemberPointDTO.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/structure/controller/dto/CuMemberPointDTO.java @@ -11,6 +11,10 @@ import java.util.Date; @AllArgsConstructor @NoArgsConstructor public class CuMemberPointDTO { + /** + * 会员编号 + */ + private Long pkMember; /** * 点位信息 */ diff --git a/bd-business/bd-business-member/src/main/resources/mapper/retail/member/CuMemberRetailDetailMapper.xml b/bd-business/bd-business-member/src/main/resources/mapper/retail/member/CuMemberRetailDetailMapper.xml index becb46e6..0e4bf304 100644 --- a/bd-business/bd-business-member/src/main/resources/mapper/retail/member/CuMemberRetailDetailMapper.xml +++ b/bd-business/bd-business-member/src/main/resources/mapper/retail/member/CuMemberRetailDetailMapper.xml @@ -63,7 +63,7 @@ and curd.STAGE_STATUS = #{stageStatus} ORDER BY - curd.CHILD_NODE + curd.STAGE_SORT 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 - - #{p} + + (cur.PK_MEMBER = #{pair.pkMember} AND cur.CHILD_NODE = #{pair.childNode}) AND cur.STAGE = #{ stage }