From d71a4428f252dff452d4c6916f691adfbc14c051 Mon Sep 17 00:00:00 2001 From: jiyufei <67400194@qq.com> Date: Thu, 27 Jun 2024 13:30:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(order):=E6=8A=95=E8=BF=90=E3=80=81?= =?UTF-8?q?=E6=B8=85=E8=BF=90=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=AE=8C=E5=96=84;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CleanOrderController.java | 111 +++++++++++++++++- .../controller/DeliveryOrderController.java | 96 ++++++++++++++- .../vo/recycleorder/RecycleCleanOrderVO.java | 14 ++- .../recycleorder/RecycleDeliveryOrderVO.java | 12 ++ .../java/cc/yunxi/service/IClientService.java | 25 +++- .../yunxi/service/impl/ClientServiceImpl.java | 9 ++ 6 files changed, 263 insertions(+), 4 deletions(-) diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/CleanOrderController.java b/nxhs-service/src/main/java/cc/yunxi/controller/CleanOrderController.java index 8c7957f..d93bb5f 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/CleanOrderController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/CleanOrderController.java @@ -2,10 +2,16 @@ package cc.yunxi.controller; import cc.yunxi.common.domain.CommonResult; import cc.yunxi.common.domain.PageDTO; +import cc.yunxi.common.utils.BeanUtils; +import cc.yunxi.common.utils.CollUtils; +import cc.yunxi.domain.po.Product; import cc.yunxi.domain.po.RecycleCleanOrder; +import cc.yunxi.domain.po.Recycler; import cc.yunxi.domain.query.RecycleCleanOrderQuery; import cc.yunxi.domain.vo.recycleorder.RecycleCleanOrderVO; +import cc.yunxi.service.IPriceProductService; import cc.yunxi.service.IRecycleCleanOrderService; +import cc.yunxi.service.IRecyclerService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -14,6 +20,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; @Api(tags = "清运订单接口") @RestController @@ -24,11 +32,23 @@ public class CleanOrderController { @Resource private IRecycleCleanOrderService iRecycleCleanOrderService; + @Resource + private IRecyclerService recyclerService; + + @Resource + private IPriceProductService priceProductService; + @ApiOperation("分页查询清运订单") @PostMapping("/page") private CommonResult> queryOrderByPage(@RequestBody @Validated RecycleCleanOrderQuery cleanOrderQuery) { Page result = iRecycleCleanOrderService.queryOrderByPage(cleanOrderQuery); - PageDTO orderVOPageDTO = PageDTO.of(result, RecycleCleanOrderVO.class); + //组装数据 + List records = result.getRecords(); + List cleanOrderVOList = new ArrayList<>(); + if (CollUtils.isNotEmpty(records)) { + cleanOrderVOList = this.buildData(records); + } + PageDTO orderVOPageDTO = PageDTO.of(result, cleanOrderVOList); return CommonResult.success(orderVOPageDTO); } @@ -36,6 +56,95 @@ public class CleanOrderController { @GetMapping("/{id}") private CommonResult detailById(@PathVariable String id) { RecycleCleanOrderVO recycleCleanOrderVO = iRecycleCleanOrderService.detailById(id); + List recycleCleanOrderVOS = new ArrayList<>(); + if (Objects.nonNull(recycleCleanOrderVO)) { + recycleCleanOrderVOS.add(recycleCleanOrderVO); + this.handleProduct(recycleCleanOrderVOS); + this.handleStatus(recycleCleanOrderVOS); + this.handleCleaner(recycleCleanOrderVOS); + return CommonResult.success(recycleCleanOrderVOS.get(0)); + } return CommonResult.success(recycleCleanOrderVO); } + + private List buildData(List records) { + List cleanOrderVOList = BeanUtils.copyList(records, RecycleCleanOrderVO.class); + this.handleProduct(cleanOrderVOList); + this.handleStatus(cleanOrderVOList); + this.handleCleaner(cleanOrderVOList); + return cleanOrderVOList; + } + + /** + * 产品类型 + * + * @param cleanOrderVOList 源数据 + */ + private void handleProduct(List cleanOrderVOList) { + Set productCode = cleanOrderVOList.stream().map(RecycleCleanOrderVO::getProductCode).collect(Collectors.toSet()); + Set productSubCode = cleanOrderVOList.stream().map(RecycleCleanOrderVO::getProductSubCode).collect(Collectors.toSet()); + if (CollUtils.isNotEmpty(productSubCode)) { + productCode.addAll(productSubCode); + } + List productList = priceProductService.getProductListByIds(productCode); + if (CollUtils.isNotEmpty(productList)) { + Map collect = productList.stream().collect(Collectors.toMap(Product::getId, Product::getName)); + cleanOrderVOList.forEach(obj -> { + if (collect.containsKey(obj.getProductCode())) { + obj.setProductCodeDesc(collect.get(obj.getProductCode())); + } + if (collect.containsKey(obj.getProductSubCode())) { + obj.setProductSubCodeDesc(collect.get(obj.getProductSubCode())); + } + }); + } + } + + /** + * 审核状态 + * + * @param cleanOrderVOList 源数据 + */ + private void handleStatus(List cleanOrderVOList) { +// 审核状态 0:未审核 1:通过 2:调整通过 3:拒绝 + cleanOrderVOList.forEach(obj -> { + String result; + switch (obj.getAdjustStatus()) { + case 0: + result = "未审核"; + break; + case 1: + result = "通过"; + break; + case 2: + result = "调整通过"; + break; + case 3: + result = "拒绝"; + break; + default: + result = "状态未知"; + break; + } + obj.setAdjustStatusDesc(result); + }); + } + + /** + * 清运人 + * + * @param cleanOrderVOList 源数据 + */ + private void handleCleaner(List cleanOrderVOList) { + Set ids = cleanOrderVOList.stream().map(RecycleCleanOrderVO::getCleanUserId).collect(Collectors.toSet()); + List recyclerByIds = recyclerService.getRecyclerByIds(ids); + if (CollUtils.isNotEmpty(recyclerByIds)) { + Map collect = recyclerByIds.stream().collect(Collectors.toMap(Recycler::getId, Recycler::getStaffsName)); + cleanOrderVOList.forEach(obj -> { + if (collect.containsKey(obj.getCleanUserId())) { + obj.setCleanUserName(collect.get(obj.getCleanUserId())); + } + }); + } + } } diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/DeliveryOrderController.java b/nxhs-service/src/main/java/cc/yunxi/controller/DeliveryOrderController.java index fc8a367..ecfd1e0 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/DeliveryOrderController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/DeliveryOrderController.java @@ -3,9 +3,16 @@ package cc.yunxi.controller; import cc.yunxi.common.domain.CommonResult; import cc.yunxi.common.domain.PageDTO; +import cc.yunxi.common.utils.BeanUtils; +import cc.yunxi.common.utils.CollUtils; +import cc.yunxi.domain.po.Client; +import cc.yunxi.domain.po.Product; import cc.yunxi.domain.po.RecycleDeliveryOrder; import cc.yunxi.domain.query.DeliveryOrderQuery; +import cc.yunxi.domain.vo.recycleorder.RecycleCleanOrderVO; import cc.yunxi.domain.vo.recycleorder.RecycleDeliveryOrderVO; +import cc.yunxi.service.IClientService; +import cc.yunxi.service.IPriceProductService; import cc.yunxi.service.IRecycleDeliveryOrderService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; @@ -15,6 +22,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; @Api(tags = "投运订单接口") @RestController @@ -25,11 +34,23 @@ public class DeliveryOrderController { @Resource private IRecycleDeliveryOrderService iRecycleDeliveryOrderService; + @Resource + private IPriceProductService priceProductService; + + @Resource + private IClientService iClientService; + @ApiOperation("分页查询投运订单") @PostMapping("/page") private CommonResult> queryOrderByPage(@RequestBody @Validated DeliveryOrderQuery deliveryOrderQuery) { Page result = iRecycleDeliveryOrderService.queryOrderByPage(deliveryOrderQuery); - PageDTO orderVOPageDTO = PageDTO.of(result, RecycleDeliveryOrderVO.class); + //组装数据 + List records = result.getRecords(); + List deliveryOrderVOS = new ArrayList<>(); + if (CollUtils.isNotEmpty(records)) { + deliveryOrderVOS = this.buildData(records); + } + PageDTO orderVOPageDTO = PageDTO.of(result, deliveryOrderVOS); return CommonResult.success(orderVOPageDTO); } @@ -37,7 +58,80 @@ public class DeliveryOrderController { @GetMapping("/{id}") private CommonResult detailById(@PathVariable String id) { RecycleDeliveryOrderVO recycleDeliveryOrderVO = iRecycleDeliveryOrderService.detailById(id); + List deliveryOrderVOS = new ArrayList<>(); + if (Objects.nonNull(recycleDeliveryOrderVO)) { + deliveryOrderVOS.add(recycleDeliveryOrderVO); + this.handleProduct(deliveryOrderVOS); + this.handleStatus(deliveryOrderVOS); + this.handleDeliver(deliveryOrderVOS); + return CommonResult.success(deliveryOrderVOS.get(0)); + } return CommonResult.success(recycleDeliveryOrderVO); } + private List buildData(List records) { + List deliveryOrderVOS = BeanUtils.copyList(records, RecycleDeliveryOrderVO.class); + this.handleProduct(deliveryOrderVOS); + this.handleStatus(deliveryOrderVOS); + this.handleDeliver(deliveryOrderVOS); + return deliveryOrderVOS; + } + + private void handleDeliver(List deliveryOrderVOS) { + Set ids = deliveryOrderVOS.stream().map(RecycleDeliveryOrderVO::getDeliverId).collect(Collectors.toSet()); + List clientByIds = iClientService.getClientByIds(ids); + if (CollUtils.isNotEmpty(clientByIds)) { + Map collect = clientByIds.stream().collect(Collectors.toMap(Client::getId, Client::getNickName)); + deliveryOrderVOS.forEach(obj -> { + if (collect.containsKey(obj.getDeliverId())) { + obj.setDeliverName(collect.get(obj.getDeliverId())); + } + }); + } + } + + private void handleStatus(List deliveryOrderVOS) { + // 审核状态 0:未审核 1:通过 2:调整通过 3:拒绝 + deliveryOrderVOS.forEach(obj -> { + String result; + switch (obj.getAdjustStatus()) { + case 0: + result = "未审核"; + break; + case 1: + result = "通过"; + break; + case 2: + result = "调整通过"; + break; + case 3: + result = "拒绝"; + break; + default: + result = "状态未知"; + break; + } + obj.setAdjustStatusDesc(result); + }); + } + + private void handleProduct(List deliveryOrderVOS) { + Set productCode = deliveryOrderVOS.stream().map(RecycleDeliveryOrderVO::getProductCode).collect(Collectors.toSet()); + Set productSubCode = deliveryOrderVOS.stream().map(RecycleDeliveryOrderVO::getProductSubCode).collect(Collectors.toSet()); + if (CollUtils.isNotEmpty(productSubCode)) { + productCode.addAll(productSubCode); + } + List productList = priceProductService.getProductListByIds(productCode); + if (CollUtils.isNotEmpty(productList)) { + Map collect = productList.stream().collect(Collectors.toMap(Product::getId, Product::getName)); + deliveryOrderVOS.forEach(obj -> { + if (collect.containsKey(obj.getProductCode())) { + obj.setProductCodeDesc(collect.get(obj.getProductCode())); + } + if (collect.containsKey(obj.getProductSubCode())) { + obj.setProductSubCodeDesc(collect.get(obj.getProductSubCode())); + } + }); + } + } } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleCleanOrderVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleCleanOrderVO.java index 261142d..5ad1548 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleCleanOrderVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleCleanOrderVO.java @@ -82,7 +82,7 @@ public class RecycleCleanOrderVO implements Serializable { @ApiModelProperty("投递员id") - private String deliverId; + private String cleanUserId; @ApiModelProperty("投递员手机") @@ -125,4 +125,16 @@ public class RecycleCleanOrderVO implements Serializable { @ApiModelProperty("上报时间") private Date reportTime; + + @ApiModelProperty("回收大类") + private String productCodeDesc; + + @ApiModelProperty("回收子类") + private String productSubCodeDesc; + + @ApiModelProperty("审核状态说明") + private String adjustStatusDesc; + + @ApiModelProperty("清运员名称") + private String cleanUserName; } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleDeliveryOrderVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleDeliveryOrderVO.java index 84d6009..44be343 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleDeliveryOrderVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleDeliveryOrderVO.java @@ -108,4 +108,16 @@ public class RecycleDeliveryOrderVO implements Serializable { @ApiModelProperty("上报时间") private Date reportTime; + @ApiModelProperty("回收大类") + private String productCodeDesc; + + @ApiModelProperty("回收子类") + private String productSubCodeDesc; + + @ApiModelProperty("审核状态说明") + private String adjustStatusDesc; + + @ApiModelProperty("投递员名称") + private String deliverName; + } diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IClientService.java b/nxhs-service/src/main/java/cc/yunxi/service/IClientService.java index 113272a..fe7274b 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/IClientService.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/IClientService.java @@ -14,6 +14,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import javax.validation.Valid; import java.math.BigDecimal; +import java.util.Collection; +import java.util.Collections; +import java.util.List; /** *

@@ -27,6 +30,7 @@ public interface IClientService extends IService { /** * 分页查询散户 + * * @param clientQuery * @return Page */ @@ -34,6 +38,7 @@ public interface IClientService extends IService { /** * 根据id获取散户信息 + * * @param id * @return Client */ @@ -42,6 +47,7 @@ public interface IClientService extends IService { /** * 根据openid获取散户信息 + * * @param openid * @return Client */ @@ -49,6 +55,7 @@ public interface IClientService extends IService { /** * 根据id或openId获取散户信息 + * * @param keyId * @return Client */ @@ -56,14 +63,17 @@ public interface IClientService extends IService { /** * 根据手机号获取散户信息 + * * @param mobile * @return Client */ Client getClientByMobile(String mobile); + Client getLastestClientByPhone(String phone); /** * 根据手机号注册散户信息 + * * @param phoneNumber * @param openId * @return Client @@ -72,14 +82,15 @@ public interface IClientService extends IService { /** * 根据手机号注册散户信息 + * * @param phoneNumber - * @param openId * @return Client */ String isClientUnit(String phoneNumber); /** * 更新散户信息 + * * @param clientUpdateVO */ void updateClient(@Valid ClientUpdateVO clientUpdateVO); @@ -87,6 +98,7 @@ public interface IClientService extends IService { /** * 分页查询散户余额流水 + * * @param clientAccountQuery * @return Page */ @@ -95,6 +107,7 @@ public interface IClientService extends IService { /** * 散户收入 + * * @param clientId * @param amount * @param orderNo @@ -105,6 +118,7 @@ public interface IClientService extends IService { /** * 散户提现 + * * @param openId * @param amount */ @@ -113,6 +127,7 @@ public interface IClientService extends IService { /** * 散户退款 + * * @param clientId * @param amount * @param orderNo @@ -120,4 +135,12 @@ public interface IClientService extends IService { */ void reduceBalance(String clientId, BigDecimal amount, String orderNo, String enterpriseId); + /** + * 根据投运人id查询投运人信息 + * + * @param deliverIds 投运人id + * @return list + */ + List getClientByIds(Collection deliverIds); + } diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java index 19d9a71..efa4eb2 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java @@ -52,7 +52,9 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.security.cert.X509Certificate; import java.time.LocalDateTime; +import java.util.Collection; import java.util.Collections; +import java.util.List; /** *

@@ -199,6 +201,13 @@ public class ClientServiceImpl extends ServiceImpl impleme this.changeBalance(clientId, amount, orderNo, enterpriseId, BalanceChangeTypeEnum.REFUND); } + @Override + public List getClientByIds(Collection deliverIds) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(Client.class) + .in(Client::getId, deliverIds); + return this.list(wrapper); + } + @Override @Transactional(rollbackFor = Exception.class)