Browse Source

订单调整;费率调整

v1.0
Yen 2 years ago
parent
commit
f4ff938d23
  1. 4
      src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java
  2. 40
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  3. 1
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java
  4. 15
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java
  5. 6
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java
  6. 20
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java
  7. 5
      src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java
  8. 5
      src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java
  9. 4
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderModifyParam.java
  10. 5
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderSkuBo.java
  11. 4
      src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java
  12. 7
      src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java
  13. 62
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

4
src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java

@ -340,14 +340,14 @@ public class BirCenterRateServiceImpl implements BirCenterRateService {
BigDecimal cusDispatchTargetQty = BigDecimal.ZERO;
BigDecimal cusCostTargetQty = BigDecimal.ZERO;
for (BmsSupplierTarget supplierTarget : supplierTargetList) {
cusDispatchTarget = cusDispatchTarget.add(supplierTarget.getTargetCostAmount());
cusDispatchTarget = cusDispatchTarget.add(supplierTarget.getTargetDispatchAmount());
cusCostTarget = cusCostTarget.add(supplierTarget.getTargetCostAmount());
TbsScheduleItem itm = scheduleItems.get(supplierTarget.getScheduleItemId());
int itmYear =itm.getStartDate().getYear();
if(itmYear==curYear){
int itmMonth =itm.getStartDate().getMonthValue();
if(Arrays.stream(currQ).anyMatch(i->itmMonth==i)){
cusDispatchTargetQty = cusDispatchTargetQty.add(supplierTarget.getTargetCostAmount());
cusDispatchTargetQty = cusDispatchTargetQty.add(supplierTarget.getTargetDispatchAmount());
cusCostTargetQty = cusCostTargetQty.add(supplierTarget.getTargetCostAmount());
}
}

40
src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java

@ -7,20 +7,21 @@ import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.common.util.ValidateTools;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.goods.common.GoodsConst;
import com.qs.serve.modules.goods.entity.*;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuBatchTasteBo;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuBo;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuEditBo;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuTasteBo;
import com.qs.serve.modules.goods.entity.dto.InventoryCusPrice;
import com.qs.serve.modules.goods.entity.so.InventoryCusPriceQuery;
import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo;
import com.qs.serve.modules.goods.service.*;
import com.qs.serve.modules.oms.entity.dto.OmsSpuToSkuKey;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.TbsActivityGoods;
import com.qs.serve.modules.tbs.service.TbsActivityGoodsService;
import com.qs.serve.modules.tbs.service.TbsBudgetConditionService;
@ -31,6 +32,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
@ -53,6 +55,7 @@ public class GoodsSpuController {
private TbsActivityGoodsService activityGoodsService;
private TbsBudgetConditionService budgetConditionService;
private GoodsCategoryService goodsCategoryService;
private SeeYonRequestBaseService seeYonRequestBaseService;
/**
* 翻页搜索
@ -88,15 +91,44 @@ public class GoodsSpuController {
List<GoodsSpu> goodsSpuList = result.getList();
List<String> spuCodes = goodsSpuList.stream().map(GoodsSpu::getSpuCode).collect(Collectors.toList());
List<OmsSpuToSkuKey> toSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_BOOK,spuCodes);
List<InventoryCusPrice> inventoryCusPrices = null;
try {
String supplierCode = param.getSupplierCode();
List<String> skuCodes = toSkuKeys.stream().map(OmsSpuToSkuKey::getInvCode).collect(Collectors.toList());
InventoryCusPriceQuery query = new InventoryCusPriceQuery();
query.setCusCode(supplierCode);
query.setInvCodes(skuCodes);
R<String> res = seeYonRequestBaseService.postBase(TbsSeeYonConst.ERP_CUS_INV_PRICE,query,"查询客户特殊价");
if(res.getStatus().equals(200)){
inventoryCusPrices = JsonUtil.jsonToList(res.getData(), InventoryCusPrice.class);
}
} catch (Exception e) {
log.error("客户特殊价异常:{}",e.getMessage());
}
for (GoodsSpu spu : goodsSpuList) {
for (OmsSpuToSkuKey skuKey : toSkuKeys) {
if(spu.getSpuCode().equals(skuKey.getSkuCode())){
GoodsSku goodsSku = goodsSkuService.getByCode(skuKey.getInvCode());
spu.setSkuPrice(goodsSku.getSalesPrice());
spu.setVolume(skuKey.getVolume());
spu.setWeight(skuKey.getWeight());
if(inventoryCusPrices!=null){
for (InventoryCusPrice cusPrice : inventoryCusPrices) {
if(cusPrice.getInvCode().equals(skuKey.getInvCode())){
spu.setSkuPrice(cusPrice.getPrice());
break;
}
}
}
break;
}
}
}
result.setList(goodsSpuList);
return R.ok(result);
}

1
src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java

@ -139,6 +139,5 @@ public class GoodsSku implements Serializable {
@TableField(exist = false)
private Integer qty;
}

15
src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java

@ -146,5 +146,20 @@ public class GoodsSpu implements Serializable {
@TableField(exist = false)
private BigDecimal skuPrice;
/** 重量(kg) */
@TableField(exist = false)
@NotNull(message = "重量(kg)不能为空")
private String weight;
/** 体积(m³) */
@TableField(exist = false)
@NotNull(message = "体积(m³)不能为空")
private String volume;
/** 用于查询客户的sku价格 */
@TableField(exist = false)
private String supplierCode;
}

6
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java

@ -15,6 +15,7 @@ import com.qs.serve.modules.goods.entity.vo.GoodsSkuSpecValueVo;
import com.qs.serve.modules.goods.service.GoodsSkuSpecValueService;
import com.qs.serve.modules.goods.service.GoodsSpecValueService;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -28,7 +29,6 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_CUS_INV_PRICE;
/**
* sku 服务实现类
@ -83,7 +83,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> im
query.setCusCode(supplierCode);
query.setInvCodes(codes);
try {
R<String> res = seeYonRequestBaseService.postBase(ERP_CUS_INV_PRICE,query,"查询客户特殊价");
R<String> res = seeYonRequestBaseService.postBase(TbsSeeYonConst.ERP_CUS_INV_PRICE,query,"查询客户特殊价");
if(res.getStatus().equals(200)){
List<InventoryCusPrice> inventoryCusPrices = JsonUtil.jsonToList(res.getData(), InventoryCusPrice.class);
assert inventoryCusPrices != null;
@ -110,7 +110,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> im
query.setCusCode(supplierCode);
query.setInvCodes(codes);
try {
R<String> res = seeYonRequestBaseService.postBase(ERP_CUS_INV_PRICE,query,"查询客户特殊价");
R<String> res = seeYonRequestBaseService.postBase(TbsSeeYonConst.ERP_CUS_INV_PRICE,query,"查询客户特殊价");
if(res.getStatus().equals(200)){
List<InventoryCusPrice> inventoryCusPrices = JsonUtil.jsonToList(res.getData(), InventoryCusPrice.class);
assert inventoryCusPrices != null;

20
src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java

@ -107,19 +107,12 @@ public class OmsOrderApi {
@PostMapping("/cancelOrder")
public R<?> cancelOrder(@RequestBody @Valid OmsCancelOrder omsOrderBo){
OmsOrder omsOrder = omsOrderService.getById(omsOrderBo.getOrderId());
omsOrderService.checkMsOrderStatus(omsOrder);
if(omsOrder.getStatus().equals(1)){
//检索是否能取消
String status = seeYonRequestBaseService.postBase(ERP_ORDER_STATUS+"/"+omsOrder.getOrderSn()
,null
,"获取订单状态"
).getData();
if(!status.equals("0")){
omsOrder.setStatus(6);
omsOrderService.updateById(omsOrder);
return R.ok();
}
omsOrder.setStatus(6);
omsOrderService.updateById(omsOrder);
}
return R.error("取消失败");
return R.error("取消订单失败");
}
/**
@ -134,6 +127,9 @@ public class OmsOrderApi {
PageUtil.startPage();
LambdaQueryWrapper<OmsOrder> orderWrapper = new LambdaQueryWrapper<>(param);
List<OmsOrder> list = omsOrderService.list(orderWrapper);
for (OmsOrder omsOrder : list) {
omsOrderService.checkMsOrderStatus(omsOrder);
}
return R.byPageHelperList(list);
}
@ -150,6 +146,7 @@ public class OmsOrderApi {
orderWrapper.orderByDesc(OmsOrder::getId);
List<OmsOrder> list = omsOrderService.list(orderWrapper);
for (OmsOrder order : list) {
omsOrderService.checkMsOrderStatus(order);
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(order.getSupplierAddrId());
order.setAddressInfo(supplierAddress);
SysUser sysUser = sysUserService.getById(order.getCheckUserId());
@ -226,6 +223,7 @@ public class OmsOrderApi {
@SysLog(module = SystemModule.BASE, title = "订单", biz = BizType.DELETE)
public R<?> deleteById(@PathVariable("id") Long id){
OmsOrder dbOmsOrder = omsOrderService.getById(id);
omsOrderService.checkMsOrderStatus(dbOmsOrder);
if(dbOmsOrder.getStatus().equals(0)&&dbOmsOrder.getCheckState().equals(0)){
boolean result = omsOrderService.removeById(id);
return R.isTrue(result);

5
src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java

@ -80,6 +80,11 @@ public class OmsOrderItem implements Serializable {
/** 市场价 */
private BigDecimal marketPrice;
private BigDecimal weight;
private BigDecimal volume;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;

5
src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java

@ -133,5 +133,10 @@ public class OmsShoppingCart implements Serializable {
@TableField(exist = false)
private GoodSkuVo goodSkuVo;
@TableField(exist = false)
private BigDecimal weight;
@TableField(exist = false)
private BigDecimal volume;
}

4
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderModifyParam.java

@ -63,6 +63,10 @@ public class OmsOrderModifyParam {
/** 数量 */
private Integer quantity;
private BigDecimal weight;
private BigDecimal volume;
}
}

5
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderSkuBo.java

@ -3,6 +3,7 @@ package com.qs.serve.modules.oms.entity.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
/**
@ -38,6 +39,10 @@ public class OmsOrderSkuBo {
/** 数量 */
private Integer qty;
private BigDecimal weight;
private BigDecimal volume;
}
}

4
src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java

@ -19,4 +19,8 @@ public class OmsSpuToSkuKey {
*/
private String invCode;
private String weight;
private String volume;
}

7
src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java

@ -45,7 +45,12 @@ public interface OmsOrderService extends IService<OmsOrder> {
*/
void modifyOrder(OmsOrderModifyParam param);
/**
* 检测订单状态
* @param order
* @return 是否进行更新是则说明状态1->2
*/
boolean checkMsOrderStatus(OmsOrder order);
/**
* 创建订单 PC

62
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

@ -3,6 +3,7 @@ package com.qs.serve.modules.oms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.config.properties.ProjectApisProperties;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsSupplier;
@ -48,6 +49,7 @@ import java.util.*;
import java.util.stream.Collectors;
import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_ORDER_CREATE;
import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_ORDER_STATUS;
/**
* 订单 服务实现类
@ -149,22 +151,29 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
//构建临时购物车列表
List<OmsShoppingCart> shoppingCartList = new ArrayList<>();
for (GoodsSpu goodsSpu : spuList) {
int qty = 1;
for (OmsOrderSkuBo.SpuParam spuParam : confirmOrder.getSpuParamList()) {
if(spuParam.getSpuId().equals(goodsSpu.getId())){
qty = spuParam.getQty();
}
}
String skuCode = spuGetSkuMap.get(goodsSpu.getSpuCode());
GoodsSku goodsSku = goodsSkuService.getByCode(skuCode);
OmsShoppingCart shoppingCart = new OmsShoppingCart();
shoppingCart.setSpuId(goodsSpu.getId());
shoppingCart.setSpuCode(goodsSpu.getSpuCode());
int qty = 1;
for (OmsOrderSkuBo.SpuParam spuParam : confirmOrder.getSpuParamList()) {
if(spuParam.getSpuId().equals(goodsSpu.getId())){
if(spuParam.getQty()!=null){
qty = spuParam.getQty();
}
shoppingCart.setVolume(spuParam.getVolume());
shoppingCart.setWeight(spuParam.getWeight());
}
}
shoppingCart.setQuantity(qty);
shoppingCart.setSkuId(goodsSku.getId());
shoppingCart.setSkuCode(goodsSku.getSkuCode());
shoppingCart.setSpecInfo(goodsSku.getSpecInfos());
shoppingCart.setAddPrice(goodsSku.getSalesPrice());
if(goodsSku!=null){
shoppingCart.setSkuId(goodsSku.getId());
shoppingCart.setSkuCode(goodsSku.getSkuCode());
shoppingCart.setSpecInfo(goodsSku.getSpecInfos());
shoppingCart.setAddPrice(goodsSku.getSalesPrice());
}
shoppingCartList.add(shoppingCart);
}
@ -199,7 +208,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
public void modifyOrder(OmsOrderModifyParam param) {
OmsOrder order = super.getById(param.getId());
if(!order.getStatus().equals(0)){
Assert.throwEx("非草稿状态订单无法修改");
Assert.throwEx("非草稿状态无法修改");
}
order.setId(param.getId());
order.setOrderType(param.getOrderType());
@ -258,6 +267,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
orderItem.setSpuId(goodsSpu.getId());
orderItem.setSpuCode(goodsSpu.getSpuCode());
orderItem.setSpuTitle(goodsSpu.getName());
orderItem.setWeight(modifyItem.getWeight());
orderItem.setVolume(modifyItem.getVolume());
if(goodsSku!=null){
orderItem.setSkuId(goodsSku.getId());
orderItem.setSkuCode(goodsSku.getSkuCode());
@ -342,6 +353,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
OmsOrderItem orderItem = new OmsOrderItem();
orderItem.setOrderId(order.getId());
orderItem.setOrderSn(order.getOrderSn());
orderItem.setWeight(shoppingCart.getWeight());
orderItem.setVolume(shoppingCart.getVolume());
if(confirmOrder.getLatitudeFrom()!=null&&confirmOrder.getLatitudeFrom().equals("SPU")){
// spu维度
orderItem.setSpuId(shoppingCart.getSpuId());
@ -422,9 +435,13 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
public void buildPriceOrder(String id,String amount) {
OmsOrder omsOrder = super.getById(id);
String userId = AuthContextUtils.getSysUserId();
// if(omsOrder==null || !omsOrder.getUserId().equals(userId)){
// Assert.throwEx("订单不存在或被移除");
// }
if(omsOrder==null || !omsOrder.getUserId().equals(userId)){
Assert.throwEx("订单不存在或被移除");
}
this.checkMsOrderStatus(omsOrder);
if(!omsOrder.getStatus().equals(0)&&!omsOrder.getStatus().equals(6)){
Assert.throwEx("订单状态不支持下单");
}
LambdaQueryWrapper<OmsOrderItem> iteLqw = new LambdaQueryWrapper<>();
iteLqw.eq(OmsOrderItem::getOrderId,id);
List<OmsOrderItem> orderItemList = omsOrderItemService.list(iteLqw);
@ -512,6 +529,23 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
}
@Override
public boolean checkMsOrderStatus(OmsOrder omsOrder) {
if(omsOrder.getStatus().equals(1)){
//检索是否能取消
String status = seeYonRequestBaseService.postBase(ERP_ORDER_STATUS+"/"+omsOrder.getOrderSn()
,null
,"获取订单状态"
).getData();
if(!status.equals("0")){
omsOrder.setStatus(2);
super.updateById(omsOrder);
return true;
}
}
return false;
}
private void toU8Api(OmsOrder omsOrder, SysUser sysUser, SysDept dept, List<OmsOrderItem> list) {
List<ErpOfferOrderParam.InventoryItem> inventoryItemList = new ArrayList<>();
for (OmsOrderItem orderItem : list) {

Loading…
Cancel
Save