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 7dea0572..cd627f93 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 @@ -6,6 +6,7 @@ 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; +import com.hzs.member.structure.controller.vo.CuMemberPointListVO; import com.hzs.member.structure.controller.vo.CuMemberThreeFrameworkVO; import java.util.List; @@ -28,4 +29,6 @@ public interface ICumemberRetailDetailService { CuMemberPointDetailVO getPointDetailByUserId(Long userId, Long pointMember,Integer stage, Integer point, String settleTableName); List getPointDetailListByPoints(List pairList, Integer stage, String settleTableName); + + List convertToList(CuMemberRetailDetail cuMemberRetailDetail, 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 8f0de846..7c2bb97b 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 @@ -17,6 +17,7 @@ import com.hzs.member.structure.controller.dto.CuMemberDetailDTO; import com.hzs.member.structure.controller.dto.CuMemberPointDTO; import com.hzs.member.structure.controller.vo.ChildCodeVO; import com.hzs.member.structure.controller.vo.CuMemberPointDetailVO; +import com.hzs.member.structure.controller.vo.CuMemberPointListVO; import com.hzs.member.structure.controller.vo.CuMemberThreeFrameworkVO; import lombok.var; import org.springframework.beans.factory.annotation.Autowired; @@ -47,55 +48,8 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl> convertToNodeList(CuMemberRetailDetail cuMemberRetailDetail,String settleTableName) { - // 所有会员id - List ids = new ArrayList<>(); - ids.add(cuMemberRetailDetail.getPkMember()); - // 过滤空的会员id - Stream.of( - cuMemberRetailDetail.getPointMember11(), cuMemberRetailDetail.getPointMember12(), - cuMemberRetailDetail.getPointMember21(), cuMemberRetailDetail.getPointMember22(), cuMemberRetailDetail.getPointMember23(), cuMemberRetailDetail.getPointMember24(), - cuMemberRetailDetail.getPointMember31(), cuMemberRetailDetail.getPointMember32(), cuMemberRetailDetail.getPointMember33(), cuMemberRetailDetail.getPointMember34(), - cuMemberRetailDetail.getPointMember35(), cuMemberRetailDetail.getPointMember36(), cuMemberRetailDetail.getPointMember37(), cuMemberRetailDetail.getPointMember38() - ).filter(Objects::nonNull).forEach(ids::add); - // 查找对应会员信息 - List members; - if (ids.isEmpty()) { - members = Collections.emptyList(); - } else { - members = iCuMemberService.listByIds(new ArrayList<>(ids)); - } - - Map memberMap = members.stream() - .collect(Collectors.toMap(CuMember::getPkId, Function.identity(), (a, b) -> a)); - // 所有点位信息 - List points = new ArrayList<>(); - // 过滤所有空的点位信息 - Stream.of( - cuMemberRetailDetail.getPoint11(), cuMemberRetailDetail.getPoint12(), - cuMemberRetailDetail.getPoint21(), cuMemberRetailDetail.getPoint22(), cuMemberRetailDetail.getPoint23(), cuMemberRetailDetail.getPoint24(), - cuMemberRetailDetail.getPoint31(), cuMemberRetailDetail.getPoint32(), cuMemberRetailDetail.getPoint33(), cuMemberRetailDetail.getPoint34(), - cuMemberRetailDetail.getPoint35(), cuMemberRetailDetail.getPoint36(), cuMemberRetailDetail.getPoint37(), cuMemberRetailDetail.getPoint38() - ).filter(Objects::nonNull).forEach(points::add); - // 查询所有点位信息创建时间 - List cuMemberPointDTOList; - if (points.isEmpty() || ids.isEmpty()) { - cuMemberPointDTOList = Collections.emptyList(); - }else { - 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( - dto -> dto.getPkMember() + "-" + dto.getChildNode(), - Function.identity(), - (a, b) -> a - )); + Map memberMap = createMemberMap(cuMemberRetailDetail); + Map collect = createPointMap(cuMemberRetailDetail,settleTableName); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 构建node List> nodeList = new ArrayList<>(); @@ -130,25 +84,6 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl { tree.setId((String) node.get("id")); @@ -184,7 +119,7 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl collect,Long pkMember, Integer pointKey, SimpleDateFormat sdf) { var detail = collect.get(pkMember + "-" + pointKey); if (detail == null || detail.getCreationTime() == null) { - return ""; + return null; } return sdf.format(detail.getCreationTime()); } @@ -225,6 +160,98 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl convertToList(CuMemberRetailDetail cuMemberRetailDetail, String settleTableName) { + ArrayList list = new ArrayList<>(); + Map memberMap = createMemberMap(cuMemberRetailDetail); + Map collect = createPointMap(cuMemberRetailDetail,settleTableName); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + for (EMemberChildNodeType type : EMemberChildNodeType.values()) { + if (type == EMemberChildNodeType.ROOT) { + continue; + } + Integer point = (Integer) type.getPointValue(cuMemberRetailDetail); + Long pointMember = (Long) type.getPointMemberValue(cuMemberRetailDetail); + CuMemberPointListVO build = CuMemberPointListVO.builder() + .point(type.getId()) + .pkMember(pointMember) + .childNode(point) + .build(); + if (pointMember != null && memberMap.containsKey(pointMember)) { + build.setMemberCode(memberMap.get(pointMember).getMemberCode()); + build.setMemberName(memberMap.get(pointMember).getMemberName()); + } + build.setStage(safeStage(collect,pointMember,point)); + build.setStageSort(safeStageSort(collect,pointMember,point)); + build.setCreationTime(safeFormatTime(collect,pointMember,point,sdf)); + list.add(build); + } + return list; + } + + private Map createPointMap(CuMemberRetailDetail cuMemberRetailDetail,String settleTableName){ + // 所有会员id + List ids = new ArrayList<>(); + // 过滤空的会员id + Stream.of( + cuMemberRetailDetail.getPointMember11(), cuMemberRetailDetail.getPointMember12(), + cuMemberRetailDetail.getPointMember21(), cuMemberRetailDetail.getPointMember22(), cuMemberRetailDetail.getPointMember23(), cuMemberRetailDetail.getPointMember24(), + cuMemberRetailDetail.getPointMember31(), cuMemberRetailDetail.getPointMember32(), cuMemberRetailDetail.getPointMember33(), cuMemberRetailDetail.getPointMember34(), + cuMemberRetailDetail.getPointMember35(), cuMemberRetailDetail.getPointMember36(), cuMemberRetailDetail.getPointMember37(), cuMemberRetailDetail.getPointMember38() + ).filter(Objects::nonNull).forEach(ids::add); + // 所有点位信息 + List points = new ArrayList<>(); + // 过滤所有空的点位信息 + Stream.of( + cuMemberRetailDetail.getPoint11(), cuMemberRetailDetail.getPoint12(), + cuMemberRetailDetail.getPoint21(), cuMemberRetailDetail.getPoint22(), cuMemberRetailDetail.getPoint23(), cuMemberRetailDetail.getPoint24(), + cuMemberRetailDetail.getPoint31(), cuMemberRetailDetail.getPoint32(), cuMemberRetailDetail.getPoint33(), cuMemberRetailDetail.getPoint34(), + cuMemberRetailDetail.getPoint35(), cuMemberRetailDetail.getPoint36(), cuMemberRetailDetail.getPoint37(), cuMemberRetailDetail.getPoint38() + ).filter(Objects::nonNull).forEach(points::add); + // 查询所有点位信息创建时间 + List cuMemberPointDTOList; + if (points.isEmpty() || ids.isEmpty()) { + cuMemberPointDTOList = Collections.emptyList(); + }else { + List pairList = new ArrayList<>(); + 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); + } + return cuMemberPointDTOList.stream() + .collect(Collectors.toMap( + dto -> dto.getPkMember() + "-" + dto.getChildNode(), + Function.identity(), + (a, b) -> a + )); + } + + private Map createMemberMap(CuMemberRetailDetail cuMemberRetailDetail){ + // 所有会员id + List ids = new ArrayList<>(); + ids.add(cuMemberRetailDetail.getPkMember()); + // 过滤空的会员id + Stream.of( + cuMemberRetailDetail.getPointMember11(), cuMemberRetailDetail.getPointMember12(), + cuMemberRetailDetail.getPointMember21(), cuMemberRetailDetail.getPointMember22(), cuMemberRetailDetail.getPointMember23(), cuMemberRetailDetail.getPointMember24(), + cuMemberRetailDetail.getPointMember31(), cuMemberRetailDetail.getPointMember32(), cuMemberRetailDetail.getPointMember33(), cuMemberRetailDetail.getPointMember34(), + cuMemberRetailDetail.getPointMember35(), cuMemberRetailDetail.getPointMember36(), cuMemberRetailDetail.getPointMember37(), cuMemberRetailDetail.getPointMember38() + ).filter(Objects::nonNull).forEach(ids::add); + // 查找对应会员信息 + List members; + if (ids.isEmpty()) { + members = Collections.emptyList(); + } else { + members = iCuMemberService.listByIds(new ArrayList<>(ids)); + } + + return members.stream() + .collect(Collectors.toMap(CuMember::getPkId, Function.identity(), (a, b) -> a)); + } + private CuMemberPointDetailVO makeCuMemberPointDetailVO(CuMemberDetailDTO cuMemberDetailDTO, CuMemberPointDTO cuMemberPointDTO,Integer point) { return CuMemberPointDetailVO.builder() .memberCode(cuMemberDetailDTO.getMemberCode()) diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/structure/controller/api/ApiMemberStructureController.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/structure/controller/api/ApiMemberStructureController.java index ae0186aa..eef9e854 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/structure/controller/api/ApiMemberStructureController.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/structure/controller/api/ApiMemberStructureController.java @@ -16,8 +16,10 @@ import com.hzs.common.security.utils.SecurityUtils; import com.hzs.member.achieve.service.ICuMemberSettlePeriodService; import com.hzs.member.base.service.ICuMemberService; import com.hzs.member.base.service.ICumemberRetailDetailService; +import com.hzs.member.structure.controller.dto.CuMemberPointDTO; import com.hzs.member.structure.controller.vo.ChildCodeVO; import com.hzs.member.structure.controller.vo.CuMemberPointDetailVO; +import com.hzs.member.structure.controller.vo.CuMemberPointListVO; import com.hzs.member.structure.controller.vo.CuMemberThreeFrameworkVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -82,7 +84,7 @@ public class ApiMemberStructureController extends BaseController { return AjaxResult.error("数据查询错误,请联系客服处理"); } // 拼接树形结构 - List> cuMemberRetailTree = iCumemberRetailDetailService.convertToNodeList(cuMemberRetailDetail,settleTableName); + List cuMemberRetailTree = iCumemberRetailDetailService.convertToList(cuMemberRetailDetail,settleTableName); return AjaxResult.success(cuMemberRetailTree); } /** diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/structure/controller/vo/CuMemberPointListVO.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/structure/controller/vo/CuMemberPointListVO.java new file mode 100644 index 00000000..0d8f6a99 --- /dev/null +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/structure/controller/vo/CuMemberPointListVO.java @@ -0,0 +1,51 @@ +package com.hzs.member.structure.controller.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class CuMemberPointListVO { + /** + * 会员编号 + */ + private String memberCode; + /** + * 会员姓名 + */ + private String memberName; + /** + * 点位位置 + */ + private String point; + /** + * 会员主键信息 + */ + private Long pkMember; + /** + * 点位信息 + */ + private Integer stageSort; + + /** + * 点位信息 + */ + private Integer childNode; + /** + * 阶段信息 + */ + private Integer stage; + /** + * 点位创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private String creationTime; + +}