Browse Source

feat(order): 临时保存,销售订单异常

muti_db
Yen 7 months ago
parent
commit
e37d509fa6
  1. 3
      src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrder.java
  2. 24
      src/main/java/com/qs/serve/modules/oms/event/OrderCreateCacheEvent.java
  3. 53
      src/main/java/com/qs/serve/modules/oms/listener/OrderCreateCacheListener.java
  4. 16
      src/main/java/com/qs/serve/modules/oms/mapper/ErpSaleOrderItemMapper.java
  5. 21
      src/main/java/com/qs/serve/modules/oms/mapper/ErpSaleOrderMapper.java
  6. 1
      src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderItemMapper.java
  7. 4
      src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderMapper.java
  8. 105
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java
  9. 3
      src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

3
src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrder.java

@ -135,7 +135,8 @@ public class OmsSaleOrder implements Serializable {
/** 订单状态
* 0->草稿
* 1->下单(同步到调度系统)
* 1->已确认下单
* 2->同步到调度系统
* 2->已确认(已生成报价单);
* 6->已取消
**/

24
src/main/java/com/qs/serve/modules/oms/event/OrderCreateCacheEvent.java

@ -0,0 +1,24 @@
package com.qs.serve.modules.oms.event;
import org.springframework.context.ApplicationEvent;
/**
* 监听事件
* @author YenHex
* @since 2024/12/17
*/
public class OrderCreateCacheEvent extends ApplicationEvent {
private String orderId;
public OrderCreateCacheEvent(Object source,String orderId) {
super(source);
this.orderId = orderId;
}
public String getOrderId(){
return orderId;
}
}

53
src/main/java/com/qs/serve/modules/oms/listener/OrderCreateCacheListener.java

@ -0,0 +1,53 @@
package com.qs.serve.modules.oms.listener;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.modules.oms.entity.OmsSaleOrder;
import com.qs.serve.modules.oms.entity.OmsSaleOrderItem;
import com.qs.serve.modules.oms.event.OrderCreateCacheEvent;
import com.qs.serve.modules.oms.mapper.ErpSaleOrderItemMapper;
import com.qs.serve.modules.oms.mapper.ErpSaleOrderMapper;
import com.qs.serve.modules.oms.service.OmsSaleOrderItemService;
import com.qs.serve.modules.oms.service.OmsSaleOrderService;
import lombok.AllArgsConstructor;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author YenHex
* @since 2024/12/17
*/
@Component
@AllArgsConstructor
public class OrderCreateCacheListener {
private OmsSaleOrderService omsSaleOrderService;
private OmsSaleOrderItemService omsSaleOrderItemService;
private ErpSaleOrderMapper erpSaleOrderMapper;
private ErpSaleOrderItemMapper erpSaleOrderItemMapper;
/**
* 监听订单创建事件将订单信息保存到ERP系统
* @param event 订单创建事件
*/
@Async
@EventListener
public void handle(OrderCreateCacheEvent event) {
AuthContextUtils.setTenant("001");
// 1.查询订单信息
OmsSaleOrder omsSaleOrder = omsSaleOrderService.getById(event.getOrderId());
// 2.查询订单明细
List<OmsSaleOrderItem> orderItemList = omsSaleOrderItemService.listByOrderId(omsSaleOrder.getId());
// 3.保存到ERP订单
erpSaleOrderMapper.insert(omsSaleOrder);
for (OmsSaleOrderItem orderItem : orderItemList) {
erpSaleOrderItemMapper.insert(orderItem);
}
omsSaleOrder.setStatus(2);
omsSaleOrderService.updateById(omsSaleOrder);
}
}

16
src/main/java/com/qs/serve/modules/oms/mapper/ErpSaleOrderItemMapper.java

@ -0,0 +1,16 @@
package com.qs.serve.modules.oms.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.oms.entity.OmsSaleOrderItem;
/**
* 订单明细 Mapper
* @author YenHex
* @date 2022-10-14
*/
@DS("qisheng")
public interface ErpSaleOrderItemMapper extends BaseMapper<OmsSaleOrderItem> {
}

21
src/main/java/com/qs/serve/modules/oms/mapper/ErpSaleOrderMapper.java

@ -0,0 +1,21 @@
package com.qs.serve.modules.oms.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.modules.oms.entity.OmsSaleOrder;
import org.apache.ibatis.annotations.Select;
import java.math.BigDecimal;
import java.util.List;
/**
* 订单 Mapper
* @author YenHex
* @date 2022-10-14
*/
@DS("qisheng")
public interface ErpSaleOrderMapper extends BaseMapper<OmsSaleOrder> {
}

1
src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderItemMapper.java

@ -9,7 +9,6 @@ import com.qs.serve.modules.oms.entity.OmsSaleOrderItem;
* @author YenHex
* @date 2022-10-14
*/
@DS("qisheng")
public interface OmsSaleOrderItemMapper extends BaseMapper<OmsSaleOrderItem> {
}

4
src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderMapper.java

@ -14,18 +14,14 @@ import java.util.List;
* @author YenHex
* @date 2022-10-14
*/
@DS("qisheng")
public interface OmsSaleOrderMapper extends BaseMapper<OmsSaleOrder> {
@DS("crm_db")
@Select("SELECT rate FROM `ext_expire_order_rate` where oa_id = #{oaId} and del_flag = 0 ")
BigDecimal getExpiredOrderRates(String oaId);
@DS("crm_db")
@Select("SELECT oa_id as `value`,`name` as label,rate as value2 FROM `ext_expire_order_rate` where del_flag = 0 order by rate")
List<SimpleKeyValue<String>> selectExpiredOrderRates();
@DS("crm_db")
@Select("SELECT oa_id as `value`,`name` as label,rate as value2 FROM `ext_expire_order_rate` where del_flag = 0 and oa_id = #{oaId} ")
SimpleKeyValue<String> getExpiredRateInfo(String oaId);

105
src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java

@ -31,6 +31,7 @@ import com.qs.serve.modules.oms.entity.dto.ShoppingCartsCheckResult;
import com.qs.serve.modules.oms.entity.dto.XltOrderDTO;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo;
import com.qs.serve.modules.oms.event.OrderCreateCacheEvent;
import com.qs.serve.modules.oms.mapper.OmsSaleOrderMapper;
import com.qs.serve.modules.oms.service.*;
import com.qs.serve.modules.oms.utils.OmsOrderUtil;
@ -46,6 +47,7 @@ import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -91,6 +93,7 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
private GoodsAccreditService goodsAccreditService;
private GoodsImminentBatchService goodsImminentBatchService;
private RedisService redisService;
private ApplicationEventPublisher applicationEventPublisher;
@Override
public BigDecimal getExpiredOrderRateById(String oaId) {
@ -579,11 +582,11 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
order.setLatitudeFrom(confirmOrder.getLatitudeFrom().toLowerCase(Locale.ROOT));
String orderPrefix = null;
if (order.getOrderType() == null || order.getOrderType().equals(0)) {
orderPrefix = "SN";
orderPrefix = "RSN";
} else if (order.getOrderType().equals(1)) {
orderPrefix = "ZP";
orderPrefix = "RZP";
} else if (order.getOrderType().equals(2)) {
orderPrefix = "SC";
orderPrefix = "RSC";
}
order.setOrderSn(orderPrefix + CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder));
@ -883,7 +886,7 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
}
} else {
order = new OmsSaleOrder();
order.setOrderSn("SP" + CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder));
order.setOrderSn("SSP" + CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder));
}
order.setLatitudeFrom("sp");
order.setCdOrderRemark(param.getCdOrderRemark());
@ -1076,10 +1079,10 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
//更新最新的用户特殊价格
this.updateCusPrice(omsOrder.getSupplierCode(), orderItemList);
//补充:调度系统写报价单给ERP时,要把地址ID写过去
if (supplierAddress.getTmsSysId() == null) {
Assert.throwEx("地址缺失TmsSysId关联");
}
//DEV补充:调度系统写报价单给ERP时,要把地址ID写过去
// if (supplierAddress.getTmsSysId() == null) {
// Assert.throwEx("地址缺失TmsSysId关联");
// }
//保存到ERP中间表
this.saveToErpOrder(omsOrder, orderItemList, brands, supplierAddress, bmsRegion);
@ -1094,8 +1097,88 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
BmsRegion bmsRegion) {
SysUser sysUser = sysUserService.getById(omsOrder.getCreateBy());
//保存到临时表-主表
LocalDateTime nowTime = LocalDateTime.now();
//更新订单
// LocalDateTime nowTime = LocalDateTime.now();
// OmsXltOrder xltOrder = new OmsXltOrder();
// xltOrder.setId(IdUtil.getSnowFlakeId() + "");
// xltOrder.setOrderType(omsOrder.getOrderType());
// xltOrder.setDingDanHao(omsOrder.getOrderSn());
// xltOrder.setShenQingRiQi(nowTime);
// xltOrder.setKeHuBianHao(omsOrder.getSupplierCode());
// xltOrder.setShouHuoDiZhi(supplierAddress.getDetail());
// xltOrder.setRenYuanBianHao(omsOrder.getUserCode());
// xltOrder.setCdOrderRemark(omsOrder.getCdOrderRemark());
// xltOrder.setDiscountRate(omsOrder.getDiscountRate());
// String remark = sysUser.getName() + "(" + sysUser.getMobile() + ")" + omsOrder.getRemark() + supplierAddress.getDetail();
// if (remark.length() > 120) {
// remark = remark.substring(0, 120);
// }
// xltOrder.setZhuYiShiXian(remark);
// xltOrder.setXieRuShiJian(nowTime);
// xltOrder.setChuLiShiJian(null);
// xltOrder.setRowCreateDate(nowTime);
// xltOrder.setRenYuanXingMing(omsOrder.getUserName());
// xltOrder.setRenYuanDianHua(omsOrder.getUserPhone());
// xltOrder.setXianZhiWeiDu("品牌");
// xltOrder.setXianZhiWeiDuMingChen(brands);
// xltOrder.setZhuangTai(0);
// //状态:0未使用;1报价单;2销售订单
// xltOrder.setStatus(0);
//
// xltOrder.setTmsSysId(supplierAddress.getId() + "");
// xltOrder.setEmpName(omsOrder.getUserName());
// xltOrder.setCusCode(omsOrder.getSupplierCode());
// xltOrder.setCusName(omsOrder.getSupplierName());
//
// try {
// String[] regions = bmsRegion.getPathNames().split("_");
// if (regions.length > 1) {
// xltOrder.setDealerProvince(regions[1]);
// }
// if (regions.length > 0) {
// xltOrder.setDealerCity(regions[0]);
// }
// } catch (Exception e) {
// log.warn("区域档案异常:{}",bmsRegion.getName());
// }
// xltOrder.setDealerArea(bmsRegion.getPathNames());
//
// //保存到临时表-明细表
// List<OmsXltOrderItem> xltOrderItemList = new ArrayList<>();
// for (int i = 0; i < orderItemList.size(); i++) {
// OmsSaleOrderItem orderItem = orderItemList.get(i);
// OmsXltOrderItem xltOrderItem = new OmsXltOrderItem();
// xltOrderItem.setId(xltOrder.getId() + "_" + (i + 1));
// xltOrderItem.setDingDanID(xltOrder.getId());
// xltOrderItem.setSpuCode(orderItem.getSpuCode());
// boolean eq = orderItem.getSkuCode().equals(orderItem.getSpuCode());
// if (!StringUtils.hasText(orderItem.getSkuCode()) || eq) {
// GoodsSku sku = goodsSkuService.getById(orderItem.getSkuId());
// GoodsSpu spu = goodsSpuService.getById(orderItem.getSpuId());
// if (!sku.getSkuCode().equals(spu.getSpuCode())) {
// Assert.throwEx("SKU【" + orderItem.getSpuCode() + "】存货缺失,请联系档案负责人");
// }
// }
// xltOrderItem.setChanPinBianHao(orderItem.getSkuCode());
// xltOrderItem.setChanPinDanWei(orderItem.getSkuUnit());
// xltOrderItem.setDingHuoShuLiang(orderItem.getQuantity());
// xltOrderItem.setDaZengShuLiang(BigDecimal.ZERO);
// xltOrderItem.setChanPinYuanJia(orderItem.getMarketPrice());
// xltOrderItem.setChanPinXianJia(orderItem.getSalesPrice());
// xltOrderItem.setXieRuShiJian(nowTime);
// xltOrderItem.setChuLiShiJian(null);
// xltOrderItem.setRowCreateDate(nowTime);
// if (omsOrder.getOrderType().equals(3)) {
// String itemRm = orderItem.getRemark() == null ? "" : orderItem.getRemark();
// xltOrderItem.setBeiZhu("批号[" + orderItem.getSkuBatchCode() + "]" + itemRm);
// } else {
// xltOrderItem.setBeiZhu(orderItem.getRemark());
// }
// xltOrderItem.setZhuangTai(0);
// xltOrderItemList.add(xltOrderItem);
// }
// XltOrderDTO xltOrderDTO = new XltOrderDTO(xltOrder, xltOrderItemList);
// //请求到中间服务保存
// seeYonRequestBaseService.postBase(ERP_ORDER_CREATE, xltOrderDTO, "创建订单:" + xltOrder.getDingDanHao());
omsOrder.setStatus(1);
omsOrder.setCheckTime(LocalDateTime.now());
omsOrder.setCheckUserId(omsOrder.getCreateBy());
@ -1103,6 +1186,8 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
omsOrder.setCheckUserId(AuthContextUtils.getSysUserId());
}
this.updateById(omsOrder);
//更新订单
applicationEventPublisher.publishEvent(new OrderCreateCacheEvent(this,omsOrder.getId().toString()));
}
@Override

3
src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

@ -209,6 +209,9 @@ public class PortalOfCostApplication {
log.error("获取SysConfig政策延迟时间异常: PolicyDelayDays");
}
}
if(nowTime.isAfter(policyItem.getPolicyStartDate().atStartOfDay())){
Assert.throwEx("政策活动未开始");
}
if(nowTime.isBefore(policyItem.getPolicyEndDate().plusDays(-delayDays).atStartOfDay())){
Assert.throwEx("政策活动已截止于"+policyItem.getPolicyEndDate());
}

Loading…
Cancel
Save