diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java index 773465e9..05f09862 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java +++ b/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()); } } diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java index 9242039a..2f3c4c17 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java +++ b/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 goodsSpuList = result.getList(); List spuCodes = goodsSpuList.stream().map(GoodsSpu::getSpuCode).collect(Collectors.toList()); List toSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_BOOK,spuCodes); + + List inventoryCusPrices = null; + try { + String supplierCode = param.getSupplierCode(); + List skuCodes = toSkuKeys.stream().map(OmsSpuToSkuKey::getInvCode).collect(Collectors.toList()); + InventoryCusPriceQuery query = new InventoryCusPriceQuery(); + query.setCusCode(supplierCode); + query.setInvCodes(skuCodes); + R 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); } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java index 2eade53e..0e964870 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java +++ b/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; - } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java index 718e910e..5bac3780 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java +++ b/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; + } diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java index 70ab17ea..e84d49b2 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java +++ b/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 im query.setCusCode(supplierCode); query.setInvCodes(codes); try { - R res = seeYonRequestBaseService.postBase(ERP_CUS_INV_PRICE,query,"查询客户特殊价"); + R res = seeYonRequestBaseService.postBase(TbsSeeYonConst.ERP_CUS_INV_PRICE,query,"查询客户特殊价"); if(res.getStatus().equals(200)){ List inventoryCusPrices = JsonUtil.jsonToList(res.getData(), InventoryCusPrice.class); assert inventoryCusPrices != null; @@ -110,7 +110,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl im query.setCusCode(supplierCode); query.setInvCodes(codes); try { - R res = seeYonRequestBaseService.postBase(ERP_CUS_INV_PRICE,query,"查询客户特殊价"); + R res = seeYonRequestBaseService.postBase(TbsSeeYonConst.ERP_CUS_INV_PRICE,query,"查询客户特殊价"); if(res.getStatus().equals(200)){ List inventoryCusPrices = JsonUtil.jsonToList(res.getData(), InventoryCusPrice.class); assert inventoryCusPrices != null; diff --git a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java index ba1f0ad1..d85ba8e5 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java +++ b/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 orderWrapper = new LambdaQueryWrapper<>(param); List 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 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); diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java index 751c98f6..4c806f6e 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java +++ b/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; diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java index 31c4d323..2fefc00b 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java +++ b/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; } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderModifyParam.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderModifyParam.java index 7eb2b311..df590c8e 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderModifyParam.java +++ b/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; + } } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderSkuBo.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderSkuBo.java index 593dacc7..ae8ef12b 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderSkuBo.java +++ b/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; } } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java b/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java index aeb29b41..1226c471 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java +++ b/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; + } diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java index 83f23ebb..4546c9c2 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java +++ b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java @@ -45,7 +45,12 @@ public interface OmsOrderService extends IService { */ void modifyOrder(OmsOrderModifyParam param); - + /** + * 检测订单状态 + * @param order + * @return 是否进行更新,是则说明状态1->2 + */ + boolean checkMsOrderStatus(OmsOrder order); /** * 创建订单 PC diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index e2fb5072..66dc8a0f 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/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 im //构建临时购物车列表 List 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 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 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 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 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 iteLqw = new LambdaQueryWrapper<>(); iteLqw.eq(OmsOrderItem::getOrderId,id); List orderItemList = omsOrderItemService.list(iteLqw); @@ -512,6 +529,23 @@ public class OmsOrderServiceImpl extends ServiceImpl 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 list) { List inventoryItemList = new ArrayList<>(); for (OmsOrderItem orderItem : list) {