Commit b0abec2333d2bb0a9ee95f4248046d2695340b31
1 parent
c1876224
refactor(order): 优化订单成本信息编辑逻辑
- 修改了编辑逻辑,根据订单 ID 查询成本信息 - 使用 Optional 处理可能的空值情况,提高代码可读性 - 在复制属性时添加了忽略空值的选项,避免不必要的覆盖
Showing
1 changed file
with
13 additions
and
10 deletions
src/main/java/com/order/erp/service/order/impl/OrderCostInfoServiceImpl.java
1 | package com.order.erp.service.order.impl; | 1 | package com.order.erp.service.order.impl; |
2 | 2 | ||
3 | import cn.hutool.core.bean.BeanUtil; | 3 | import cn.hutool.core.bean.BeanUtil; |
4 | +import cn.hutool.core.bean.copier.CopyOptions; | ||
4 | import cn.hutool.core.collection.CollUtil; | 5 | import cn.hutool.core.collection.CollUtil; |
5 | import com.alibaba.fastjson.JSONObject; | 6 | import com.alibaba.fastjson.JSONObject; |
6 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 7 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
@@ -36,10 +37,7 @@ import org.springframework.stereotype.Service; | @@ -36,10 +37,7 @@ import org.springframework.stereotype.Service; | ||
36 | import javax.annotation.Resource; | 37 | import javax.annotation.Resource; |
37 | import java.math.BigDecimal; | 38 | import java.math.BigDecimal; |
38 | import java.math.RoundingMode; | 39 | import java.math.RoundingMode; |
39 | -import java.util.List; | ||
40 | -import java.util.Map; | ||
41 | -import java.util.Objects; | ||
42 | -import java.util.Set; | 40 | +import java.util.*; |
43 | import java.util.stream.Collectors; | 41 | import java.util.stream.Collectors; |
44 | 42 | ||
45 | /** | 43 | /** |
@@ -67,14 +65,19 @@ public class OrderCostInfoServiceImpl extends ServiceImpl<OrderCostInfoMapper, O | @@ -67,14 +65,19 @@ public class OrderCostInfoServiceImpl extends ServiceImpl<OrderCostInfoMapper, O | ||
67 | 65 | ||
68 | @Override | 66 | @Override |
69 | public ServerResult edit(OrderCostInfoVO vo) { | 67 | public ServerResult edit(OrderCostInfoVO vo) { |
70 | - Long id = vo.getId(); | ||
71 | - OrderCostInfoDO byId = this.getById(id); | ||
72 | - if (Objects.isNull(byId)) { | ||
73 | - byId = BeanUtil.copyProperties(vo, OrderCostInfoDO.class); | 68 | + Long id = vo.getOrderId(); |
69 | + Optional<OrderCostInfoDO> orderCostInfoDOOpt = this.lambdaQuery() | ||
70 | + .eq(OrderCostInfoDO::getOrderId, id) | ||
71 | + .last(" limit 1 ") | ||
72 | + .oneOpt(); | ||
73 | + OrderCostInfoDO orderCostInfoDO = null; | ||
74 | + if (!orderCostInfoDOOpt.isPresent()) { | ||
75 | + orderCostInfoDO = BeanUtil.copyProperties(vo, OrderCostInfoDO.class); | ||
74 | }else { | 76 | }else { |
75 | - BeanUtil.copyProperties(vo, byId); | 77 | + orderCostInfoDO = orderCostInfoDOOpt.get(); |
78 | + BeanUtil.copyProperties(vo, orderCostInfoDO, CopyOptions.create().ignoreNullValue()); | ||
76 | } | 79 | } |
77 | - return ServerResult.success(this.saveOrUpdate(byId)); | 80 | + return ServerResult.success(this.saveOrUpdate(orderCostInfoDO)); |
78 | } | 81 | } |
79 | @Override | 82 | @Override |
80 | public ServerResult applyEditFileds(OrderCostInfolockFieldVO vo) { | 83 | public ServerResult applyEditFileds(OrderCostInfolockFieldVO vo) { |