Browse Source

feat(order): 搭赠通案对接订单;修复审批列表重复异常

master
Yen 4 weeks ago
parent
commit
6198f83535
  1. 8
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/controller/OmsSaleOrderController.java
  2. 2
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrderItem.java
  3. 70
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrderItemGift.java
  4. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderItemGiftMapper.java
  5. 4
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/OmsSaleOrderService.java
  6. 27
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java
  7. 9
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java

8
cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/controller/OmsSaleOrderController.java

@ -70,6 +70,14 @@ public class OmsSaleOrderController {
public R<?> getTransports(){
return R.ok(omsTransportMapper.selectList(null));
}
@GetMapping("getOrderGiftItems/{orderId}")
public R<List<OmsSaleOrderItemGift>> getOrderGiftItems(@PathVariable("orderId")Long orderId){
List<OmsSaleOrderItemGift> gifts = omsSaleOrderService.checkGiftOrderAndBuildItems(omsSaleOrderService.getById(orderId),
omsSaleOrderItemService.list(new LambdaQueryWrapper<OmsSaleOrderItem>().eq(OmsSaleOrderItem::getOrderId, orderId)));
return R.ok(gifts);
}
/**
* 查看排产预估计划
* @param param

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

@ -153,7 +153,7 @@ public class OmsSaleOrderItem implements Serializable {
private Object spuInfo;
/** skuBelong */
private Object skuBelong;
private String skuBelong;
/** 分类 */
@TableField(exist = false)

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

@ -19,7 +19,7 @@ import javax.validation.constraints.NotBlank;
/**
* 订单明细 实体类
* @author YenHex
* @since 2025-06-23
* @since 2025-06-25
*/
@Data
@TableName("oms_sale_order_item_gift")
@ -38,20 +38,9 @@ public class OmsSaleOrderItemGift implements Serializable {
@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;
@ -63,8 +52,8 @@ public class OmsSaleOrderItemGift implements Serializable {
@Length(max = 100,message = "商品名称长度不能超过100字")
private String spuTitle;
/** */
@Length(max = 255,message = "长度不能超过255字")
/** sku标题 */
@Length(max = 255,message = "sku标题长度不能超过255字")
private String skuTitle;
/** sku批次id */
@ -113,10 +102,14 @@ public class OmsSaleOrderItemGift implements Serializable {
/** 市场价 */
private BigDecimal marketPrice;
/** */
/** 重量 */
private BigDecimal weight;
/** */
/** 毛重 */
@Length(max = 32,message = "毛重长度不能超过32字")
private String grossWeight;
/** 体积 */
private BigDecimal volume;
/** 备注 */
@ -153,26 +146,45 @@ public class OmsSaleOrderItemGift implements Serializable {
@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;
private LocalDate preProductionDate;
/** 生产备注 */
@Length(max = 255,message = "生产备注长度不能超过255字")
private String productionRemark;
public static OmsSaleOrderItemGift toNewObject(OmsSaleOrderItem source){
OmsSaleOrderItemGift saleOrderItemGift = new OmsSaleOrderItemGift();
saleOrderItemGift.setId(source.getId());
saleOrderItemGift.setOrderId(source.getOrderId());
saleOrderItemGift.setOrderSn(source.getOrderSn());
saleOrderItemGift.setGiftItemId(source.getGiftItemId());
saleOrderItemGift.setSpuId(source.getSpuId());
saleOrderItemGift.setSpuCode(source.getSpuCode());
saleOrderItemGift.setSpuTitle(source.getSpuTitle());
saleOrderItemGift.setSkuTitle(source.getSkuTitle());
saleOrderItemGift.setSkuBatchId(source.getSkuBatchId());
saleOrderItemGift.setSkuBatchCode(source.getSkuBatchCode());
saleOrderItemGift.setSkuId(source.getSkuId());
saleOrderItemGift.setSkuCode(source.getSkuCode());
saleOrderItemGift.setSkuAddCode(source.getSkuAddCode());
saleOrderItemGift.setSkuUnit(source.getSkuUnit());
saleOrderItemGift.setSkuImg(source.getSkuImg());
saleOrderItemGift.setSkuBelong(source.getSkuBelong());
saleOrderItemGift.setSpecValues(source.getSpecValues());
//saleOrderItemGift.setQuantity(source.getQuantity());
saleOrderItemGift.setSalesPrice(source.getSalesPrice());
saleOrderItemGift.setCusPrice(source.getCusPrice());
saleOrderItemGift.setMarketPrice(source.getMarketPrice());
saleOrderItemGift.setWeight(source.getWeight());
saleOrderItemGift.setVolume(source.getVolume());
saleOrderItemGift.setPreProductionDate(source.getPreProductionDate());
saleOrderItemGift.setProductionRemark(source.getProductionRemark());
return saleOrderItemGift;
}
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderItemGiftMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.oms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.oms.entity.OmsSaleOrderItemGift;
/**
* 订单明细 Mapper
* @author YenHex
* @date 2025-06-25
*/
public interface OmsSaleOrderItemGiftMapper extends BaseMapper<OmsSaleOrderItemGift> {
}

4
cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/OmsSaleOrderService.java

@ -7,6 +7,7 @@ import com.qs.serve.modules.bms.entity.BmsSupplierAddress;
import com.qs.serve.modules.goods.entity.GoodsCategoryRule;
import com.qs.serve.modules.oms.entity.OmsSaleOrder;
import com.qs.serve.modules.oms.entity.OmsSaleOrderItem;
import com.qs.serve.modules.oms.entity.OmsSaleOrderItemGift;
import com.qs.serve.modules.oms.entity.bo.*;
import com.qs.serve.modules.oms.entity.dto.OmsSaleOrderChange;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
@ -36,6 +37,9 @@ public interface OmsSaleOrderService extends IService<OmsSaleOrder> {
List<SimpleKeyValue<String>> selectExpiredOrderRates();
List<OmsSaleOrderItemGift> checkGiftOrderAndBuildItems(OmsSaleOrder omsOrder, List<OmsSaleOrderItem> orderItemList);
/**
* 确认订单 H5
* @param confirmOrder

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

@ -40,10 +40,7 @@ import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
import com.qs.serve.modules.oms.entity.vo.OmsPlanResult;
import com.qs.serve.modules.oms.entity.vo.OmsPromotionGiftItemVo;
import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo;
import com.qs.serve.modules.oms.mapper.OmsSaleOrderMapper;
import com.qs.serve.modules.oms.mapper.OmsSeaTankMapper;
import com.qs.serve.modules.oms.mapper.OmsTransportMapper;
import com.qs.serve.modules.oms.mapper.OmsVerSaleOrderMapper;
import com.qs.serve.modules.oms.mapper.*;
import com.qs.serve.modules.oms.service.*;
import com.qs.serve.modules.oms.utils.OmsOrderUtil;
import com.qs.serve.modules.sale.entity.SalePlan;
@ -92,6 +89,7 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
private GoodsCategoryRuleMapper goodsCategoryRuleMapper;
private GoodsCustomerPriceService goodsCustomerPriceService;
private OmsSaleOrderItemGiftMapper omsSaleOrderItemGiftMapper;
private BmsSupplierMapper bmsSupplierMapper;
private BmsRegionMapper bmsRegionMapper;
private BmsSupplierAddressService bmsSupplierAddressService;
@ -431,6 +429,7 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
orderItem.setWeight(modifyItem.getWeight());
orderItem.setVolume(modifyItem.getVolume());
orderItem.setRemark(modifyItem.getRemark());
orderItem.setGiftItemId(modifyItem.getGiftItemId());
orderItem.setVersion("cms");
if (goodsSku != null) {
orderItem.setSkuId(goodsSku.getId());
@ -1417,12 +1416,15 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
Assert.throwEx("客户档案[" + supplier.getCode() + "]缺失销售区域数据,请联系管理员");
}
checkGiftOrderAndBuildItems(omsOrder, orderItemList);
//更新最新的用户特殊价格
this.updateCusPrice(omsOrder.getSupplierCode(), orderItemList);
// 搭赠的明细
List<OmsSaleOrderItemGift> orderItemGiftList = checkGiftOrderAndBuildItems(omsOrder, orderItemList);
for (OmsSaleOrderItemGift gift : orderItemGiftList) {
omsSaleOrderItemGiftMapper.insert(gift);
}
//DEV补充:调度系统写报价单给ERP时,要把地址ID写过去
// if (supplierAddress.getTmsSysId() == null) {
// Assert.throwEx("地址缺失TmsSysId关联");
@ -1433,7 +1435,9 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
}
private void checkGiftOrderAndBuildItems(OmsSaleOrder omsOrder, List<OmsSaleOrderItem> orderItemList) {
@Override
public List<OmsSaleOrderItemGift> checkGiftOrderAndBuildItems(OmsSaleOrder omsOrder, List<OmsSaleOrderItem> orderItemList) {
List<OmsSaleOrderItemGift> giftItemList = new ArrayList<>();
// 校验订单的搭赠方案,并生成赠品列表
Map<Long,List<OmsSaleOrderItem>> itemMap = orderItemList.stream().filter(a->a.getGiftItemId() != null)
.collect(Collectors.groupingBy(OmsSaleOrderItem::getGiftItemId));
@ -1469,11 +1473,14 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
}
// // 加载默认赠送的商品
// if (CollUtil.isNotEmpty(currentItem.getGoodsList())){}
OmsSaleOrderItem orderItem = items.get(0);
// 生成搭赠订单
OmsSaleOrderItemGift omsOrderItemGift = new OmsSaleOrderItemGift();
OmsSaleOrderItemGift omsOrderItemGift = OmsSaleOrderItemGift.toNewObject(orderItem);
omsOrderItemGift.setQuantity(giftQty);
giftItemList.add(omsOrderItemGift);
}
}
return giftItemList;
}
@Override

9
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java

@ -220,7 +220,16 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
List<SysPostUser> postUserList = postUserService.listByUserIds(userIds);
Map<String,List<SysPostUser>> postMap = postUserList.stream().collect(Collectors.groupingBy(SysPostUser::getUserId));
List<CtpAffairVo> result = new ArrayList<>();
// 用于去重
Set<String> existAffairIds = new HashSet<>();
for (CtpAffair ctpAffair : ctpAffairs) {
if (existAffairIds.contains(ctpAffair.getAffairId())){
continue;
}else {
existAffairIds.add(ctpAffair.getAffairId());
}
if (StringUtils.isNotEmpty(ctpAffair.getComment())&&ctpAffair.getComment().contains("同意说明:")){
ctpAffair.setComment(ctpAffair.getComment().replace("同意说明:",""));
}

Loading…
Cancel
Save