Browse Source

feat(order): 搭赠通案对接订单;修复重大bug,临期品预算占用异常修复

master
Yen 4 weeks ago
parent
commit
ceb3f73c2e
  1. 2
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrderItem.java
  2. 178
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrderItemGift.java
  3. 32
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java
  4. 1
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java
  5. 4
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

2
cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrderItem.java

@ -8,6 +8,7 @@ import lombok.Data;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
@ -31,6 +32,7 @@ public class OmsSaleOrderItem implements Serializable {
private Long id; private Long id;
/** 订单id */ /** 订单id */
@NotNull(message = "")
private Long orderId; private Long orderId;
/** 订单sn */ /** 订单sn */

178
cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrderItemGift.java

@ -0,0 +1,178 @@
package com.qs.serve.modules.oms.entity;
import java.time.LocalDate;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* 订单明细 实体类
* @author YenHex
* @since 2025-06-23
*/
@Data
@TableName("oms_sale_order_item_gift")
public class OmsSaleOrderItemGift implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 订单id */
private Long orderId;
/** 订单sn */
@Length(max = 32,message = "订单sn长度不能超过32字")
private String orderSn;
/** erpId */
@Length(max = 36,message = "erpId长度不能超过36字")
private String orderErpId;
/** erp明细id */
@Length(max = 36,message = "erp明细id长度不能超过36字")
private String orderErpItemId;
/** 搭赠ItemId */
private Long giftItemId;
/** erp删除状态 */
private Integer erpDelFlag;
/** 商品id */
private Long spuId;
/** 商品编码 */
@Length(max = 20,message = "商品编码长度不能超过20字")
private String spuCode;
/** 商品名称 */
@Length(max = 100,message = "商品名称长度不能超过100字")
private String spuTitle;
/** */
@Length(max = 255,message = "长度不能超过255字")
private String skuTitle;
/** sku批次id */
private Long skuBatchId;
/** sku批次编码 */
@Length(max = 255,message = "sku批次编码长度不能超过255字")
private String skuBatchCode;
/** skuId */
private Long skuId;
/** sku编码 */
@Length(max = 50,message = "sku编码长度不能超过50字")
private String skuCode;
/** sku添加编码 */
@Length(max = 50,message = "sku添加编码长度不能超过50字")
private String skuAddCode;
/** sku单位 */
@Length(max = 20,message = "sku单位长度不能超过20字")
private String skuUnit;
/** sku图片 */
@Length(max = 255,message = "sku图片长度不能超过255字")
private String skuImg;
/** 产地 */
@Length(max = 255,message = "产地长度不能超过255字")
private String skuBelong;
/** 规格值 */
@Length(max = 255,message = "规格值长度不能超过255字")
private String specValues;
/** 数量 */
private Integer quantity;
/** 销售价 */
private BigDecimal salesPrice;
/** 客户价 */
private BigDecimal cusPrice;
/** 市场价 */
private BigDecimal marketPrice;
/** */
private BigDecimal weight;
/** */
private BigDecimal volume;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** */
@Length(max = 32,message = "长度不能超过32字")
private String grossWeight;
/** */
@Length(max = 255,message = "长度不能超过255字")
private String version;
/** */
private Integer erpDelStatus;
/** 预估排产时间 */
@Length(max = 0,message = "预估排产时间长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime preProductionDate;
/** 生产备注 */
@Length(max = 255,message = "生产备注长度不能超过255字")
private String productionRemark;
}

32
cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java

@ -1418,6 +1418,22 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
} }
checkGiftOrderAndBuildItems(omsOrder, orderItemList);
//更新最新的用户特殊价格
this.updateCusPrice(omsOrder.getSupplierCode(), orderItemList);
//DEV补充:调度系统写报价单给ERP时,要把地址ID写过去
// if (supplierAddress.getTmsSysId() == null) {
// Assert.throwEx("地址缺失TmsSysId关联");
// }
//保存到ERP中间表
this.saveToErpOrder(omsOrder, orderItemList, brands, supplierAddress, bmsRegion);
}
private void checkGiftOrderAndBuildItems(OmsSaleOrder omsOrder, List<OmsSaleOrderItem> orderItemList) {
// 校验订单的搭赠方案,并生成赠品列表 // 校验订单的搭赠方案,并生成赠品列表
Map<Long,List<OmsSaleOrderItem>> itemMap = orderItemList.stream().filter(a->a.getGiftItemId() != null) Map<Long,List<OmsSaleOrderItem>> itemMap = orderItemList.stream().filter(a->a.getGiftItemId() != null)
.collect(Collectors.groupingBy(OmsSaleOrderItem::getGiftItemId)); .collect(Collectors.groupingBy(OmsSaleOrderItem::getGiftItemId));
@ -1454,22 +1470,10 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
// // 加载默认赠送的商品 // // 加载默认赠送的商品
// if (CollUtil.isNotEmpty(currentItem.getGoodsList())){} // if (CollUtil.isNotEmpty(currentItem.getGoodsList())){}
// 生成搭赠订单 // 生成搭赠订单
OmsSaleOrderItemGift omsOrderItemGift = new OmsSaleOrderItemGift();
}
} }
//更新最新的用户特殊价格 }
this.updateCusPrice(omsOrder.getSupplierCode(), orderItemList);
//DEV补充:调度系统写报价单给ERP时,要把地址ID写过去
// if (supplierAddress.getTmsSysId() == null) {
// Assert.throwEx("地址缺失TmsSysId关联");
// }
//保存到ERP中间表
this.saveToErpOrder(omsOrder, orderItemList, brands, supplierAddress, bmsRegion);
} }
@Override @Override

1
cms-modules/cms-system/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java

@ -129,6 +129,7 @@ public class PortalOfCostController {
syncLog.setSuccessStatus(1); syncLog.setSuccessStatus(1);
} catch (Exception e) { } catch (Exception e) {
log.error("站式创建费用(费用申请)===>{}", JsonUtil.objectToJson(createBo)); log.error("站式创建费用(费用申请)===>{}", JsonUtil.objectToJson(createBo));
e.printStackTrace();
syncLog.setFailReason(e.getMessage()); syncLog.setFailReason(e.getMessage());
sysSyncLogService.save(syncLog); sysSyncLogService.save(syncLog);
return R.error(e.getMessage()); return R.error(e.getMessage());

4
cms-modules/cms-system/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

@ -783,7 +783,8 @@ public class PortalOfCostApplication {
centerGoods.setTargetLevelPathIds(activityGoods.getTargetLevelPathIds()); centerGoods.setTargetLevelPathIds(activityGoods.getTargetLevelPathIds());
centerGoods.setTargetLevelPathNames(activityGoods.getTargetLevelPathNames()); centerGoods.setTargetLevelPathNames(activityGoods.getTargetLevelPathNames());
// 分配金额 // 分配金额
if (costCode.contains("YX06")){ if (costCode.contains("YX06")||costCode.contains("DLHX")){
// 赔偿金额或临期品,不根据明细的金额分配
if(i+1==activityGoodsList.size()){ if(i+1==activityGoodsList.size()){
centerGoods.setCenterGoodsAmount(yx06Surplus); centerGoods.setCenterGoodsAmount(yx06Surplus);
centerGoods.setCenterGoodsRate(yx06SurplusRate); centerGoods.setCenterGoodsRate(yx06SurplusRate);
@ -796,6 +797,7 @@ public class PortalOfCostApplication {
centerGoods.setUsedAmount(yx06ItemAmt); centerGoods.setUsedAmount(yx06ItemAmt);
} }
}else { }else {
// 普通的费用,依据明细的金额分配
BigDecimal totalSkuAmt = BigDecimal.ZERO; BigDecimal totalSkuAmt = BigDecimal.ZERO;
for (ProcessGoodsItem goodsItem : processGoodsItems) { for (ProcessGoodsItem goodsItem : processGoodsItems) {
if(goodsItem.getInventoryCode().equals(activityGoods.getTargetCode())){ if(goodsItem.getInventoryCode().equals(activityGoods.getTargetCode())){

Loading…
Cancel
Save