From fb4ed3c5a3da5e891d2b3197e2493ee5212e9e0e Mon Sep 17 00:00:00 2001 From: ljw Date: Sat, 20 Dec 2025 17:41:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cst/order/constant/CheckStatus.java | 24 +++ .../cst/order/constant/PaymentStatus.java | 26 +++ .../cst/order/constant/SettlementWay.java | 24 +++ .../cst/order/constant/TransStatus.java | 34 ++++ .../dispose/cst/order/constant/Zx.java | 22 +++ .../cst/order/controller/OrderController.java | 6 +- .../cst/order/pojo/entity/OrderEntity.java | 4 +- .../order/pojo/entity/OrderTransEntity.java | 5 - .../param/CreateOrderCargoPlaceParam.java | 67 +++++++ ...ParamEntity.java => CreateOrderParam.java} | 33 +--- .../dispose/cst/order/pojo/vo/Scope.java | 22 +++ .../cst/order/service/OrderService.java | 4 +- .../order/service/impl/OrderServiceImpl.java | 163 +++++++++++++++++- .../dispose/finance/constant/Payer.java | 6 +- .../finance/constant/ScopeStrategy.java | 6 +- .../goods/service/impl/GoodsServiceImpl.java | 2 - 16 files changed, 403 insertions(+), 45 deletions(-) create mode 100644 njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/CheckStatus.java create mode 100644 njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/PaymentStatus.java create mode 100644 njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/SettlementWay.java create mode 100644 njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/TransStatus.java create mode 100644 njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/Zx.java create mode 100644 njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/param/CreateOrderCargoPlaceParam.java rename njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/param/{CreateOrderParamEntity.java => CreateOrderParam.java} (72%) create mode 100644 njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/vo/Scope.java diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/CheckStatus.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/CheckStatus.java new file mode 100644 index 0000000..55c9a59 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/CheckStatus.java @@ -0,0 +1,24 @@ +package com.njzscloud.dispose.cst.order.constant; + +import com.njzscloud.common.core.ienum.DictStr; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 字典代码:check_status + * 字典名称:勘料状态 + */ +@Getter +@RequiredArgsConstructor +public enum CheckStatus implements DictStr { + Wu("Wu", "无需勘料"), + + YiKanLiao("YiKanLiao", "已勘料"), + + WeiKanLiao("WeiKanLiao", "未勘料"), + + ; + private final String val; + + private final String txt; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/PaymentStatus.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/PaymentStatus.java new file mode 100644 index 0000000..715a94b --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/PaymentStatus.java @@ -0,0 +1,26 @@ +package com.njzscloud.dispose.cst.order.constant; + +import com.njzscloud.common.core.ienum.DictStr; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 字典代码:payment_status + * 字典名称:支付状态 + */ +@Getter +@RequiredArgsConstructor +public enum PaymentStatus implements DictStr { + MianFei("MianFei", "免费"), + + WeiZhiFu("WeiZhiFu", "未支付"), + + YiZhiFu("YiZhiFu", "已支付"), + + YiTuiKuan("YiTuiKuan", "已退款"), + + ; + private final String val; + + private final String txt; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/SettlementWay.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/SettlementWay.java new file mode 100644 index 0000000..9303803 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/SettlementWay.java @@ -0,0 +1,24 @@ +package com.njzscloud.dispose.cst.order.constant; + +import com.njzscloud.common.core.ienum.DictStr; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 字典代码:settlement_way + * 字典名称:结算方式 + */ +@Getter +@RequiredArgsConstructor +public enum SettlementWay implements DictStr { + YueJie("YueJie", "月结"), + + YuE("YuE", "余额"), + + XianFu("XianFu", "现付"), + + ; + private final String val; + + private final String txt; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/TransStatus.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/TransStatus.java new file mode 100644 index 0000000..96e8095 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/TransStatus.java @@ -0,0 +1,34 @@ +package com.njzscloud.dispose.cst.order.constant; + +import com.njzscloud.common.core.ienum.DictStr; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 字典代码:trans_status + * 字典名称:运输状态 + */ +@Getter +@RequiredArgsConstructor +public enum TransStatus implements DictStr { + DaiPaiDan("DaiPaiDan", "待派单"), + + DaiJieDan("DaiJieDan", "待接单"), + + YiJieDan("YiJieDan", "已接单"), + + YunShuZhong("YunShuZhong", "运输中"), + + YiJinChang("YiJinChang", "已进场"), + + YiChuChang("YiChuChang", "已出场"), + + YiWanCheng("YiWanCheng", "已完成"), + + YiQuXiao("YiQuXiao", "已取消"), + + ; + private final String val; + + private final String txt; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/Zx.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/Zx.java new file mode 100644 index 0000000..4cd26c5 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/constant/Zx.java @@ -0,0 +1,22 @@ +package com.njzscloud.dispose.cst.order.constant; + +import com.njzscloud.common.core.ienum.DictStr; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 字典代码:zx + * 字典名称:装/卸货 + */ +@Getter +@RequiredArgsConstructor +public enum Zx implements DictStr { + ZhuangHuo("ZhuangHuo", "装货地址"), + + XieHuo("XieHuo", "卸货地址"), + + ; + private final String val; + + private final String txt; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/controller/OrderController.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/controller/OrderController.java index e6c6286..fd61096 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/controller/OrderController.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/controller/OrderController.java @@ -4,6 +4,7 @@ import com.njzscloud.common.core.utils.R; import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.dispose.cst.order.pojo.entity.OrderEntity; +import com.njzscloud.dispose.cst.order.pojo.param.CreateOrderParam; import com.njzscloud.dispose.cst.order.service.OrderService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -13,6 +14,7 @@ import java.util.List; /** * 收/销订单 + * * @author ljw */ @Slf4j @@ -27,8 +29,8 @@ public class OrderController { * 新增 */ @PostMapping("/add") - public R add(@RequestBody OrderEntity orderEntity) { - orderService.add(orderEntity); + public synchronized R add(@RequestBody CreateOrderParam param) { + orderService.add(param); return R.success(); } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/entity/OrderEntity.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/entity/OrderEntity.java index b601de4..f47f1c5 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/entity/OrderEntity.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/entity/OrderEntity.java @@ -7,11 +7,11 @@ import lombok.Setter; import lombok.ToString; import lombok.experimental.Accessors; -import java.math.BigDecimal; import java.time.LocalDateTime; /** * 收/销订单 + * * @author ljw */ @Getter @@ -84,7 +84,7 @@ public class OrderEntity extends BaseEntity { /** * 指派清运公司时间 */ - private BigDecimal assignmentTransTime; + private LocalDateTime assignmentTransTime; /** * 站点 Id;cst_station.id diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/entity/OrderTransEntity.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/entity/OrderTransEntity.java index 6efd573..8d49d6e 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/entity/OrderTransEntity.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/entity/OrderTransEntity.java @@ -32,11 +32,6 @@ public class OrderTransEntity extends BaseEntity { */ private Long orderId; - /** - * 站点 Id - */ - private Long stationId; - /** * 运输状态;字典代码:trans_status,DaiPaiDan-->待派单、DaiJieDan-->待接单、YiJieDan-->已接单、YunShuZhong-->运输中、YiJinChang-->已进场、YiChuChang-->已出场、YiWanCheng-->已完成、YiQuXiao-->已取消 */ diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/param/CreateOrderCargoPlaceParam.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/param/CreateOrderCargoPlaceParam.java new file mode 100644 index 0000000..848045f --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/param/CreateOrderCargoPlaceParam.java @@ -0,0 +1,67 @@ +package com.njzscloud.dispose.cst.order.pojo.param; + +import lombok.Data; + +/** + * 装/卸货地信息 + * + * @author ljw + */ +@Data +public class CreateOrderCargoPlaceParam { + + /** + * 省;代码 + */ + private String province; + + /** + * 市;代码 + */ + private String city; + + /** + * 区县;代码 + */ + private String area; + + /** + * 乡镇街道;代码 + */ + private String town; + + /** + * 省;名称 + */ + private String provinceName; + + /** + * 市;名称 + */ + private String cityName; + + /** + * 区县;名称 + */ + private String areaName; + + /** + * 乡镇街道;名称 + */ + private String townName; + + /** + * 详细地址 + */ + private String address; + + /** + * 经度 + */ + private Double lng; + + /** + * 纬度 + */ + private Double lat; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/param/CreateOrderParamEntity.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/param/CreateOrderParam.java similarity index 72% rename from njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/param/CreateOrderParamEntity.java rename to njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/param/CreateOrderParam.java index 353a5b9..75558e0 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/param/CreateOrderParamEntity.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/param/CreateOrderParam.java @@ -1,11 +1,7 @@ package com.njzscloud.dispose.cst.order.pojo.param; -import com.njzscloud.dispose.common.pojo.entity.BaseEntity; -import com.njzscloud.dispose.cst.project.pojo.entity.ProjectEntity; import lombok.Data; -import lombok.EqualsAndHashCode; -import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -15,29 +11,13 @@ import java.time.LocalDateTime; */ @Data -@EqualsAndHashCode(callSuper = true) -public class CreateOrderParamEntity extends BaseEntity { - - /** - * 订单编号 - */ - private String sn; +public class CreateOrderParam { /** * 项目 Id */ private Long projectId; - /** - * 下单人 Id;sys_user.id - */ - private Long userId; - - /** - * 下单人客户 Id;cst_customer.id - */ - private Long customerId; - /** * 下单人姓名 */ @@ -48,11 +28,6 @@ public class CreateOrderParamEntity extends BaseEntity { */ private String phone; - /** - * 下单时间 - */ - private LocalDateTime orderTime; - /** * 订单类型;字典代码:order_category,HuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出 */ @@ -81,7 +56,7 @@ public class CreateOrderParamEntity extends BaseEntity { /** * 指派清运公司时间 */ - private BigDecimal assignmentTransTime; + private LocalDateTime assignmentTransTime; /** * 站点 Id;cst_station.id @@ -129,9 +104,9 @@ public class CreateOrderParamEntity extends BaseEntity { private String customerMemo; /** - * 项目信息 + * 装卸货信息 */ - private ProjectEntity projectInfo; + private CreateOrderCargoPlaceParam cargoPlaceParam; } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/vo/Scope.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/vo/Scope.java new file mode 100644 index 0000000..f20cf53 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/pojo/vo/Scope.java @@ -0,0 +1,22 @@ +package com.njzscloud.dispose.cst.order.pojo.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.njzscloud.common.mp.support.handler.j.JsonTypeHandler; +import lombok.Data; + +import java.util.List; + +/** + * @author ljw + * @apiNote + * @date 2025/12/20 + */ +@Data +public class Scope { + + private String strategy; + + @TableField(typeHandler = JsonTypeHandler.class) + private List ids; + +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/service/OrderService.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/service/OrderService.java index 20e7c25..dceabe6 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/service/OrderService.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/service/OrderService.java @@ -4,16 +4,18 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.dispose.cst.order.pojo.entity.OrderEntity; +import com.njzscloud.dispose.cst.order.pojo.param.CreateOrderParam; import java.util.List; /** * 收/销订单 + * * @author ljw */ public interface OrderService extends IService { - void add(OrderEntity orderEntity); + void add(CreateOrderParam param); void modify(OrderEntity orderEntity); diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/service/impl/OrderServiceImpl.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/service/impl/OrderServiceImpl.java index 39868b0..40b7570 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/service/impl/OrderServiceImpl.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/order/service/impl/OrderServiceImpl.java @@ -1,21 +1,42 @@ package com.njzscloud.dispose.cst.order.service.impl; +import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njzscloud.common.core.fastjson.Fastjson; import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.common.security.util.SecurityUtil; +import com.njzscloud.common.sn.support.SnUtil; +import com.njzscloud.dispose.cst.order.constant.*; import com.njzscloud.dispose.cst.order.mapper.OrderMapper; +import com.njzscloud.dispose.cst.order.pojo.entity.OrderCargoPlaceEntity; import com.njzscloud.dispose.cst.order.pojo.entity.OrderEntity; +import com.njzscloud.dispose.cst.order.pojo.entity.OrderExpenseItemsEntity; +import com.njzscloud.dispose.cst.order.pojo.entity.OrderTransEntity; +import com.njzscloud.dispose.cst.order.pojo.param.CreateOrderCargoPlaceParam; +import com.njzscloud.dispose.cst.order.pojo.param.CreateOrderParam; +import com.njzscloud.dispose.cst.order.pojo.vo.Scope; +import com.njzscloud.dispose.cst.order.service.OrderCargoPlaceService; +import com.njzscloud.dispose.cst.order.service.OrderExpenseItemsService; import com.njzscloud.dispose.cst.order.service.OrderService; +import com.njzscloud.dispose.cst.order.service.OrderTransService; +import com.njzscloud.dispose.finance.constant.ScopeStrategy; +import com.njzscloud.dispose.finance.pojo.entity.ExpenseItemEntity; +import com.njzscloud.dispose.finance.service.ExpenseItemService; +import com.njzscloud.dispose.sys.auth.pojo.result.MyResult; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.List; +import java.util.stream.Collectors; /** * 收/销订单 + * * @author ljw */ @Slf4j @@ -23,10 +44,56 @@ import java.util.List; @RequiredArgsConstructor public class OrderServiceImpl extends ServiceImpl implements OrderService { + private final OrderCargoPlaceService orderCargoPlaceService; + private final OrderTransService orderTransService; + private final ExpenseItemService expenseItemService; + private final OrderExpenseItemsService orderExpenseItemsService; + @Override @Transactional(rollbackFor = Exception.class) - public void add(OrderEntity orderEntity) { + public void add(CreateOrderParam param) { + // 订单信息 + param.setOrderStatus(OrderStatus.YiYuYue.getVal()); + Long transOrgId = param.getTransOrgId(); + OrderStatus orderStatus = transOrgId == null ? OrderStatus.YiYuYue : OrderStatus.JinXingZhong; + MyResult userDetail = SecurityUtil.loginUser(); + OrderEntity orderEntity = BeanUtil.copyProperties(param, OrderEntity.class) + .setSn(this.generateSn()) + .setUserId(SecurityUtil.currentUserId()) + .setCustomerId(userDetail.getCurrentCustomerId()) + .setOrderTime(LocalDateTime.now()) + .setOrderStatus(orderStatus.getVal()) + .setAssignmentTransTime(transOrgId == null ? null : LocalDateTime.now()); this.save(orderEntity); + + // 装卸货信息 + CreateOrderCargoPlaceParam cargoPlace = param.getCargoPlaceParam(); + OrderCargoPlaceEntity placeEntity = BeanUtil.copyProperties(cargoPlace, OrderCargoPlaceEntity.class) + .setOrderId(orderEntity.getId()); + if (OrderCategory.HuiShouYuYue.getVal().equals(param.getOrderCategory())) { + placeEntity.setZx(Zx.ZhuangHuo.getVal()); + } else if (OrderCategory.XiaoShouYuYue.getVal().equals(param.getOrderCategory())) { + placeEntity.setZx(Zx.XieHuo.getVal()); + } + orderCargoPlaceService.add(placeEntity); + + // 运输信息 + int transNum = orderEntity.getEstimatedTrainNum(); + OrderTransEntity transEntity = new OrderTransEntity(); + transEntity.setOrderId(orderEntity.getId()); + for (int i = 1; i <= transNum; i++) { + transEntity.setTrainNum(i); + transEntity.setTransStatus(transOrgId == null ? null : TransStatus.DaiPaiDan.getVal()); + transEntity.setTransTime(transOrgId == null ? null : LocalDateTime.now()); + transEntity.setCheckStatus(CheckStatus.WeiKanLiao.getVal()); + transEntity.setPaymentStatus(PaymentStatus.WeiZhiFu.getVal()); + orderTransService.add(transEntity); + } + + // 付费项 + if (transOrgId != null) { + this.createOrderExpenseItems(orderEntity); + } } @Override @@ -50,6 +117,100 @@ public class OrderServiceImpl extends ServiceImpl impl public PageResult paging(PageParam pageParam, OrderEntity orderEntity) { return PageResult.of(this.page(pageParam.toPage(), Wrappers.query(orderEntity))); } + + /** + * 生成订单号 + * + * @return sn 订单号 + */ + public String generateSn() { + String sn = SnUtil.next("Booking-Order-SN"); + if (this.exists(Wrappers.lambdaQuery().eq(OrderEntity::getSn, sn).eq(OrderEntity::getDeleted, Boolean.FALSE))) { + this.generateSn(); + } + return sn; + } + + /** + * 创建订单付费项 + * + * @param orderEntity 订单信息 + */ + public void createOrderExpenseItems(OrderEntity orderEntity) { + // 读取启用的付费项配置,并按过滤 + List itemEntityList = expenseItemService.list(Wrappers.lambdaQuery() + .eq(ExpenseItemEntity::getCanuse, Boolean.TRUE) + .eq(ExpenseItemEntity::getDeleted, Boolean.FALSE)); + Long transOrgId = orderEntity.getTransOrgId(); + Long goodsId = orderEntity.getGoodsId(); + Long stationId = orderEntity.getStationId(); + List goodsItems = itemEntityList.stream().filter(item -> + item.getGoodsId().equals(goodsId)).toList(); + + OrderExpenseItemsEntity goodsOrderItem = null; + if (!goodsItems.isEmpty()) { + goodsOrderItem = BeanUtil.copyProperties(goodsItems.getFirst(), OrderExpenseItemsEntity.class) + .setOrderId(orderEntity.getId()) + .setPaymentStatus(PaymentStatus.WeiZhiFu.getVal()); + } + + List extraItems = itemEntityList.stream() + .filter(cfg -> { + Scope userScope = Fastjson.toBean(cfg.getUserScope(), Scope.class); + Scope goodsScope = Fastjson.toBean(cfg.getGoodsScope(), Scope.class); + Scope stationsScope = Fastjson.toBean(cfg.getStationScope(), Scope.class); + List companyIds = userScope != null ? userScope.getIds() : null; + List goodsIds = goodsScope != null ? goodsScope.getIds() : null; + List stationsIds = stationsScope != null ? stationsScope.getIds() : null; + + // 判断客户范围 + boolean isComTrue; + if (userScope != null && ScopeStrategy.SuoYou.getVal().equals(userScope.getStrategy())) { + isComTrue = true; // 所有客户都匹配 + } else { + isComTrue = companyIds != null && transOrgId != null && companyIds.contains(transOrgId); + } + + // 判断产品范围 + boolean isGoodsTrue; + if (goodsScope != null && ScopeStrategy.SuoYou.getVal().equals(goodsScope.getStrategy())) { + isGoodsTrue = true; // 所有产品都匹配 + } else { + isGoodsTrue = goodsIds != null && goodsId != null && goodsIds.contains(goodsId); + } + + // 判断站点范围 + boolean isStationsTrue; + if (stationsScope != null && ScopeStrategy.SuoYou.getVal().equals(stationsScope.getStrategy())) { + isStationsTrue = true; // 所有站点都匹配 + } else { + isStationsTrue = stationsIds != null && stationId != null && stationsIds.contains(stationId); + } + + // 只有当三个条件都为true时,才返回true + return isComTrue && isGoodsTrue && isStationsTrue; + }) + // 复制配置为订单付费项(数量口径与产品一致:按车=1,否则=settleWeight) + .map(cfg -> { + OrderExpenseItemsEntity entity = BeanUtil.copyProperties(cfg, OrderExpenseItemsEntity.class); + entity.setOrderId(orderEntity.getId()); + entity.setPaymentStatus(PaymentStatus.WeiZhiFu.getVal()); + return entity; + }) + .collect(Collectors.toList()); + + // 第三步:合并集合并计算金额,然后批量落库 + if (goodsOrderItem != null) { + extraItems.addFirst(goodsOrderItem); + } + + if (extraItems.isEmpty()) { + return; + } + + // 批量保存付费项 + orderExpenseItemsService.saveBatch(extraItems); + } } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/constant/Payer.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/constant/Payer.java index 4a15caa..38d9051 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/constant/Payer.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/constant/Payer.java @@ -1,11 +1,13 @@ package com.njzscloud.dispose.finance.constant; +import com.njzscloud.common.core.ienum.DictStr; import lombok.Getter; import lombok.RequiredArgsConstructor; -import com.njzscloud.common.core.ienum.DictStr; + /** * 字典代码:payer * 字典名称:付费方 + * * @author ljw */ @Getter @@ -15,7 +17,7 @@ public enum Payer implements DictStr { ChanFei("ChanFei", "产废方"), - QingYun("QingYun", "清运方"), + QingYun("YunShuFang", "运输方"), XiaoNa("XiaoNa", "消纳方"), diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/constant/ScopeStrategy.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/constant/ScopeStrategy.java index b229a6e..4614746 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/constant/ScopeStrategy.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/constant/ScopeStrategy.java @@ -1,17 +1,21 @@ package com.njzscloud.dispose.finance.constant; +import com.njzscloud.common.core.ienum.DictStr; import lombok.Getter; import lombok.RequiredArgsConstructor; -import com.njzscloud.common.core.ienum.DictStr; + /** * 字典代码:scope_strategy * 字典名称:适用用户 + * * @author ljw */ @Getter @RequiredArgsConstructor public enum ScopeStrategy implements DictStr { + Wu("Wu", "无"), + ZhiDing("ZhiDing", "指定"), SuoYou("SuoYou", "所有"), diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/goods/service/impl/GoodsServiceImpl.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/goods/service/impl/GoodsServiceImpl.java index bc4a5be..6ddd423 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/goods/service/impl/GoodsServiceImpl.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/goods/service/impl/GoodsServiceImpl.java @@ -38,8 +38,6 @@ public class GoodsServiceImpl extends ServiceImpl impl expenseItem.setGoodsId(goodsEntity.getId()); expenseItem.setExpenseItemCategory(ExpenseItemCategory.ChanPin.getVal()); expenseItem.setExpenseItemName(goodsEntity.getGoodsName()); - // goodsScope默认传{strategy: 'ZhiDing',ids:[goodsEntity.getId()]} - expenseItem.setGoodsScope("{\"strategy\":\"ZhiDing\",\"ids\":[" + goodsEntity.getId() + "]}"); expenseItemService.save(expenseItem); }