diff --git a/nxhs-common/src/main/java/cc/yunxi/common/domain/LambdaUpdateWrapperX.java b/nxhs-common/src/main/java/cc/yunxi/common/domain/LambdaUpdateWrapperX.java new file mode 100644 index 0000000..b38cec8 --- /dev/null +++ b/nxhs-common/src/main/java/cc/yunxi/common/domain/LambdaUpdateWrapperX.java @@ -0,0 +1,30 @@ +package cc.yunxi.common.domain; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; + +public class LambdaUpdateWrapperX extends LambdaUpdateWrapper { + + public LambdaUpdateWrapperX() { + super(); + } + + public LambdaUpdateWrapperX(Class entityClass) { + super(entityClass); + } + + + public LambdaUpdateWrapperX incrField(SFunction columns, Object value) { + String columnsToString = super.columnToString(columns); + String format = String.format("%s = %s + %s", columnsToString,columnsToString, value); + setSql(format); + return this; + } + + public LambdaUpdateWrapperX descField(SFunction columns, Object value) { + String columnsToString = super.columnToString(columns); + String format = String.format("%s = %s - %s", columnsToString,columnsToString, value); + setSql(format); + return this; + } +} diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java index d16e9d1..1436729 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java @@ -200,7 +200,8 @@ public class RecycleOrderController { String orderLongitude = orderRespVO.getLocation().getLongitude(); String orderLatitude = orderRespVO.getLocation().getLatitude(); BigDecimal distance = CommonUtil.getDistance(longitude, latitude, orderLongitude, orderLatitude); - orderRespVO.setDistance(distance.toString().concat("km")); +// orderRespVO.setDistance(distance.toString().concat("km")); + orderRespVO.setDistance(distance.doubleValue()); } } diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleStationController.java b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleStationController.java index 107b4ed..d3dfbad 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleStationController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleStationController.java @@ -49,6 +49,11 @@ public class RecycleStationController { } Page result = recycleStationService.queryStationByPage(recycleStationQuery); PageDTO recycleStationPageVO = PageDTO.of(result, RecycleStationRespVO.class); + List recycleStationRespVOList = recycleStationPageVO.getList(); + recycleStationRespVOList.forEach(stationRespVO -> { + List produceList = recycleStationService.getStationProduct(stationRespVO.getId()); + stationRespVO.setStationProducts(produceList); + }); // 性能优化 todo return CommonResult.success(recycleStationPageVO); } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/EnterpriseAccountBill.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/EnterpriseAccountBill.java index e2c1f75..5283001 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/po/EnterpriseAccountBill.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/EnterpriseAccountBill.java @@ -64,7 +64,7 @@ public class EnterpriseAccountBill { @ApiModelProperty("创建时间") - @TableField("creator_time") + @TableField("f_creator_time") private LocalDateTime creatorTime; @ApiModelProperty("备注") diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleOrder.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleOrder.java index cb06e34..1faab69 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleOrder.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleOrder.java @@ -91,6 +91,10 @@ public class RecycleOrder { @TableField("staffs_name") private String staffsName; + @ApiModelProperty("订单距离(回收员专用)") + @TableField("distance") + private Double distance; + @ApiModelProperty("下单时间") @TableField("f_creator_time") private LocalDateTime creatorTime; @@ -163,8 +167,4 @@ public class RecycleOrder { // @TableField("is_deleted") // private Integer isDeleted; - @ApiModelProperty("订单距离(回收员专用)") - @TableField(exist = false) - private String distance; - } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleStation.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleStation.java index 203ce86..5d55de4 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleStation.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleStation.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; import io.swagger.annotations.ApiModel; diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleOrderRespVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleOrderRespVO.java index 8b70d19..c77939f 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleOrderRespVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleOrderRespVO.java @@ -124,7 +124,7 @@ public class RecycleOrderRespVO { // private Integer isDeleted; @ApiModelProperty("订单距离(回收员专用)") - private String distance; + private Double distance; @ApiModelProperty("散户地址信息") private ClientAddressSimpleVO addressInfo; diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IRecyclerService.java b/nxhs-service/src/main/java/cc/yunxi/service/IRecyclerService.java index 79acf3e..f7ce999 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/IRecyclerService.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/IRecyclerService.java @@ -8,6 +8,8 @@ import cc.yunxi.domain.vo.recycler.RecyclerUpdateVO; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import java.math.BigDecimal; + /** * 测试表 业务接口 */ @@ -48,4 +50,13 @@ public interface IRecyclerService extends IService { * @param recyclerUpdateVO */ void updateRecycler(RecyclerUpdateVO recyclerUpdateVO); + + + /** + * 更新回收员累计信息 + * @param recyclerId + * @param distance + * @param amount + */ + void totalTick(String recyclerId, Double distance, BigDecimal amount); } 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 0af975e..24b0001 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 @@ -247,9 +247,10 @@ public class ClientServiceImpl extends ServiceImpl impleme BigDecimal balance = client.getBanlance(); String remark; LocalDateTime now = LocalDateTime.now(); + String amountStr = String.valueOf(amount.setScale(2)); if (changeTypeEnum.equals(BalanceChangeTypeEnum.INCOME)) { // 收入 balance = balance.add(amount); - remark = "废品回收结算,收入" + amount + "元"; + remark = "废品回收结算,收入" + amountStr + "元"; // 更新商户资金 Enterprise enterprise = enterpriseService.getEnterpriseByStationId(stationId); @@ -268,7 +269,7 @@ public class ClientServiceImpl extends ServiceImpl impleme accountBill.setAccountBalance(fund); accountBill.setPayoutAmount(amount); accountBill.setOrderNumber(orderNo); - accountBill.setRemark("支付给散户"+ amount + "元"); + accountBill.setRemark("支付给散户"+ amountStr + "元"); accountBill.setCreatorTime(now); accountBillMapper.insert(accountBill); @@ -277,7 +278,7 @@ public class ClientServiceImpl extends ServiceImpl impleme throw new BizIllegalException("余额不足"); } balance = balance.subtract(amount); - remark = "微信提现" + amount + "元"; + remark = "微信提现" + amountStr + "元"; } // 更新散户余额 client.setBanlance(balance); diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java index 26a0f1b..e81bd1f 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java @@ -13,10 +13,7 @@ import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailCreateVO; import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailUpdateVO; import cc.yunxi.enums.*; import cc.yunxi.mapper.RecycleOrderMapper; -import cc.yunxi.service.IClientService; -import cc.yunxi.service.IRecycleOrderProductService; -import cc.yunxi.service.IRecycleOrderService; -import cc.yunxi.service.IRecycleStationService; +import cc.yunxi.service.*; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -49,6 +46,9 @@ public class RecycleOrderServiceImpl extends ServiceImpl getStationProduct(String stationId) { QueryWrapper wrapper = new QueryWrapper().eq("a.status", GlobalStatusEnum.VALID); String priceId = recycleStationPriceMapper.getLatestPriceByStationId(stationId,wrapper); +// if (ObjectUtil.isEmpty(priceId)) { +// throw new BizIllegalException("回收站点未配置有效价目信息"); +// } + List productRespVOList = new ArrayList<>(20); if (ObjectUtil.isEmpty(priceId)) { - throw new BizIllegalException("回收站点未配置有效价目信息"); + return productRespVOList; } - List productRespVOList = new ArrayList<>(20); List priceProductList = new LambdaQueryChainWrapper<>(priceProductMapper) .eq(PriceProduct::getPriceId, priceId).list(); if (CollectionUtil.isNotEmpty(priceProductList)) { diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecyclerServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecyclerServiceImpl.java index f49aaaf..4ebc103 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecyclerServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecyclerServiceImpl.java @@ -1,6 +1,7 @@ package cc.yunxi.service.impl; import cc.yunxi.common.domain.LambdaQueryWrapperX; +import cc.yunxi.common.domain.LambdaUpdateWrapperX; import cc.yunxi.common.exception.BizIllegalException; import cc.yunxi.common.exception.DbException; import cc.yunxi.common.utils.BeanUtils; @@ -16,6 +17,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.injector.methods.SelectPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -23,6 +25,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; /** * 回收员 服务实现类 @@ -88,6 +91,17 @@ public class RecyclerServiceImpl extends ServiceImpl i return recycler; } + @Override + public void totalTick(String recyclerId, Double distance, BigDecimal amount) { + LambdaUpdateWrapperX wrapperX = new LambdaUpdateWrapperX<>(); + wrapperX.eq(Recycler::getId, recyclerId); + wrapperX.incrField(Recycler::getRecycleMiles, distance); + wrapperX.incrField(Recycler::getOrderTotal, 1); + wrapperX.incrField(Recycler::getOrderAmount, amount); + this.update(wrapperX); + } + + // 校验散户是否存在 private void validateRecyclerExists(String id) { if (this.getRecyclerById(id) == null) {