订单创建
parent
c6385f4c06
commit
fb4ed3c5a3
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,7 @@ import com.njzscloud.common.core.utils.R;
|
||||||
import com.njzscloud.common.mp.support.PageParam;
|
import com.njzscloud.common.mp.support.PageParam;
|
||||||
import com.njzscloud.common.mp.support.PageResult;
|
import com.njzscloud.common.mp.support.PageResult;
|
||||||
import com.njzscloud.dispose.cst.order.pojo.entity.OrderEntity;
|
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 com.njzscloud.dispose.cst.order.service.OrderService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
@ -13,6 +14,7 @@ import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收/销订单
|
* 收/销订单
|
||||||
|
*
|
||||||
* @author ljw
|
* @author ljw
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|
@ -27,8 +29,8 @@ public class OrderController {
|
||||||
* 新增
|
* 新增
|
||||||
*/
|
*/
|
||||||
@PostMapping("/add")
|
@PostMapping("/add")
|
||||||
public R<?> add(@RequestBody OrderEntity orderEntity) {
|
public synchronized R<?> add(@RequestBody CreateOrderParam param) {
|
||||||
orderService.add(orderEntity);
|
orderService.add(param);
|
||||||
return R.success();
|
return R.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@ import lombok.Setter;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收/销订单
|
* 收/销订单
|
||||||
|
*
|
||||||
* @author ljw
|
* @author ljw
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
|
|
@ -84,7 +84,7 @@ public class OrderEntity extends BaseEntity {
|
||||||
/**
|
/**
|
||||||
* 指派清运公司时间
|
* 指派清运公司时间
|
||||||
*/
|
*/
|
||||||
private BigDecimal assignmentTransTime;
|
private LocalDateTime assignmentTransTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 站点 Id;cst_station.id
|
* 站点 Id;cst_station.id
|
||||||
|
|
|
||||||
|
|
@ -32,11 +32,6 @@ public class OrderTransEntity extends BaseEntity {
|
||||||
*/
|
*/
|
||||||
private Long orderId;
|
private Long orderId;
|
||||||
|
|
||||||
/**
|
|
||||||
* 站点 Id
|
|
||||||
*/
|
|
||||||
private Long stationId;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 运输状态;字典代码:trans_status,DaiPaiDan-->待派单、DaiJieDan-->待接单、YiJieDan-->已接单、YunShuZhong-->运输中、YiJinChang-->已进场、YiChuChang-->已出场、YiWanCheng-->已完成、YiQuXiao-->已取消
|
* 运输状态;字典代码:trans_status,DaiPaiDan-->待派单、DaiJieDan-->待接单、YiJieDan-->已接单、YunShuZhong-->运输中、YiJinChang-->已进场、YiChuChang-->已出场、YiWanCheng-->已完成、YiQuXiao-->已取消
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
package com.njzscloud.dispose.cst.order.pojo.param;
|
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.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -15,29 +11,13 @@ import java.time.LocalDateTime;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
public class CreateOrderParam {
|
||||||
public class CreateOrderParamEntity extends BaseEntity {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单编号
|
|
||||||
*/
|
|
||||||
private String sn;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目 Id
|
* 项目 Id
|
||||||
*/
|
*/
|
||||||
private Long projectId;
|
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 String phone;
|
||||||
|
|
||||||
/**
|
|
||||||
* 下单时间
|
|
||||||
*/
|
|
||||||
private LocalDateTime orderTime;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单类型;字典代码:order_category,HuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出
|
* 订单类型;字典代码: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
|
* 站点 Id;cst_station.id
|
||||||
|
|
@ -129,9 +104,9 @@ public class CreateOrderParamEntity extends BaseEntity {
|
||||||
private String customerMemo;
|
private String customerMemo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目信息
|
* 装卸货信息
|
||||||
*/
|
*/
|
||||||
private ProjectEntity projectInfo;
|
private CreateOrderCargoPlaceParam cargoPlaceParam;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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<Long> ids;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -4,16 +4,18 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.njzscloud.common.mp.support.PageParam;
|
import com.njzscloud.common.mp.support.PageParam;
|
||||||
import com.njzscloud.common.mp.support.PageResult;
|
import com.njzscloud.common.mp.support.PageResult;
|
||||||
import com.njzscloud.dispose.cst.order.pojo.entity.OrderEntity;
|
import com.njzscloud.dispose.cst.order.pojo.entity.OrderEntity;
|
||||||
|
import com.njzscloud.dispose.cst.order.pojo.param.CreateOrderParam;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收/销订单
|
* 收/销订单
|
||||||
|
*
|
||||||
* @author ljw
|
* @author ljw
|
||||||
*/
|
*/
|
||||||
public interface OrderService extends IService<OrderEntity> {
|
public interface OrderService extends IService<OrderEntity> {
|
||||||
|
|
||||||
void add(OrderEntity orderEntity);
|
void add(CreateOrderParam param);
|
||||||
|
|
||||||
void modify(OrderEntity orderEntity);
|
void modify(OrderEntity orderEntity);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,42 @@
|
||||||
package com.njzscloud.dispose.cst.order.service.impl;
|
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.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
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.PageParam;
|
||||||
import com.njzscloud.common.mp.support.PageResult;
|
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.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.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.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.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收/销订单
|
* 收/销订单
|
||||||
|
*
|
||||||
* @author ljw
|
* @author ljw
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|
@ -23,10 +44,56 @@ import java.util.List;
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderEntity> implements OrderService {
|
public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderEntity> implements OrderService {
|
||||||
|
|
||||||
|
private final OrderCargoPlaceService orderCargoPlaceService;
|
||||||
|
private final OrderTransService orderTransService;
|
||||||
|
private final ExpenseItemService expenseItemService;
|
||||||
|
private final OrderExpenseItemsService orderExpenseItemsService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@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);
|
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
|
@Override
|
||||||
|
|
@ -50,6 +117,100 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderEntity> impl
|
||||||
public PageResult<OrderEntity> paging(PageParam pageParam, OrderEntity orderEntity) {
|
public PageResult<OrderEntity> paging(PageParam pageParam, OrderEntity orderEntity) {
|
||||||
return PageResult.of(this.page(pageParam.toPage(), Wrappers.query(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.<OrderEntity>lambdaQuery().eq(OrderEntity::getSn, sn).eq(OrderEntity::getDeleted, Boolean.FALSE))) {
|
||||||
|
this.generateSn();
|
||||||
|
}
|
||||||
|
return sn;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建订单付费项
|
||||||
|
*
|
||||||
|
* @param orderEntity 订单信息
|
||||||
|
*/
|
||||||
|
public void createOrderExpenseItems(OrderEntity orderEntity) {
|
||||||
|
// 读取启用的付费项配置,并按过滤
|
||||||
|
List<ExpenseItemEntity> itemEntityList = expenseItemService.list(Wrappers.<ExpenseItemEntity>lambdaQuery()
|
||||||
|
.eq(ExpenseItemEntity::getCanuse, Boolean.TRUE)
|
||||||
|
.eq(ExpenseItemEntity::getDeleted, Boolean.FALSE));
|
||||||
|
Long transOrgId = orderEntity.getTransOrgId();
|
||||||
|
Long goodsId = orderEntity.getGoodsId();
|
||||||
|
Long stationId = orderEntity.getStationId();
|
||||||
|
List<ExpenseItemEntity> 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<OrderExpenseItemsEntity> 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<Long> companyIds = userScope != null ? userScope.getIds() : null;
|
||||||
|
List<Long> goodsIds = goodsScope != null ? goodsScope.getIds() : null;
|
||||||
|
List<Long> 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
package com.njzscloud.dispose.finance.constant;
|
package com.njzscloud.dispose.finance.constant;
|
||||||
|
|
||||||
|
import com.njzscloud.common.core.ienum.DictStr;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import com.njzscloud.common.core.ienum.DictStr;
|
|
||||||
/**
|
/**
|
||||||
* 字典代码:payer
|
* 字典代码:payer
|
||||||
* 字典名称:付费方
|
* 字典名称:付费方
|
||||||
|
*
|
||||||
* @author ljw
|
* @author ljw
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
|
|
@ -15,7 +17,7 @@ public enum Payer implements DictStr {
|
||||||
|
|
||||||
ChanFei("ChanFei", "产废方"),
|
ChanFei("ChanFei", "产废方"),
|
||||||
|
|
||||||
QingYun("QingYun", "清运方"),
|
QingYun("YunShuFang", "运输方"),
|
||||||
|
|
||||||
XiaoNa("XiaoNa", "消纳方"),
|
XiaoNa("XiaoNa", "消纳方"),
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,21 @@
|
||||||
package com.njzscloud.dispose.finance.constant;
|
package com.njzscloud.dispose.finance.constant;
|
||||||
|
|
||||||
|
import com.njzscloud.common.core.ienum.DictStr;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import com.njzscloud.common.core.ienum.DictStr;
|
|
||||||
/**
|
/**
|
||||||
* 字典代码:scope_strategy
|
* 字典代码:scope_strategy
|
||||||
* 字典名称:适用用户
|
* 字典名称:适用用户
|
||||||
|
*
|
||||||
* @author ljw
|
* @author ljw
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public enum ScopeStrategy implements DictStr {
|
public enum ScopeStrategy implements DictStr {
|
||||||
|
|
||||||
|
Wu("Wu", "无"),
|
||||||
|
|
||||||
ZhiDing("ZhiDing", "指定"),
|
ZhiDing("ZhiDing", "指定"),
|
||||||
|
|
||||||
SuoYou("SuoYou", "所有"),
|
SuoYou("SuoYou", "所有"),
|
||||||
|
|
|
||||||
|
|
@ -38,8 +38,6 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, GoodsEntity> impl
|
||||||
expenseItem.setGoodsId(goodsEntity.getId());
|
expenseItem.setGoodsId(goodsEntity.getId());
|
||||||
expenseItem.setExpenseItemCategory(ExpenseItemCategory.ChanPin.getVal());
|
expenseItem.setExpenseItemCategory(ExpenseItemCategory.ChanPin.getVal());
|
||||||
expenseItem.setExpenseItemName(goodsEntity.getGoodsName());
|
expenseItem.setExpenseItemName(goodsEntity.getGoodsName());
|
||||||
// goodsScope默认传{strategy: 'ZhiDing',ids:[goodsEntity.getId()]}
|
|
||||||
expenseItem.setGoodsScope("{\"strategy\":\"ZhiDing\",\"ids\":[" + goodsEntity.getId() + "]}");
|
|
||||||
expenseItemService.save(expenseItem);
|
expenseItemService.save(expenseItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue