Browse Source

最近两个月发货单spu查询

v1.0
Yen 2 years ago
parent
commit
f04b126adf
  1. 7
      src/main/java/com/qs/serve/modules/erp/mapper/ErpDispatchDataMapper.java
  2. 145
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  3. 16
      src/main/java/com/qs/serve/modules/goods/entity/so/GoodsHisOrderQuery.java

7
src/main/java/com/qs/serve/modules/erp/mapper/ErpDispatchDataMapper.java

@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.erp.entity.ErpDispatchData; import com.qs.serve.modules.erp.entity.ErpDispatchData;
import com.qs.serve.modules.erp.entity.dto.ErpDispatchSumVo; import com.qs.serve.modules.erp.entity.dto.ErpDispatchSumVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List; import java.util.List;
/** /**
@ -33,5 +35,10 @@ public interface ErpDispatchDataMapper extends BaseMapper<ErpDispatchData> {
@Param("endNumber")Integer endNumber, @Param("endNumber")Integer endNumber,
@Param("cusCodes")List<String> cusCodes); @Param("cusCodes")List<String> cusCodes);
@InterceptorIgnore(tenantLine = "1")
@Select("SELECT inv_code FROM `erp_dispatch_data` where `date` > #{lastTowMonth}")
List<String> selectLast2MonthInvCode(@Param("lastTowMonth") LocalDate lastTowMonth);
} }

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

@ -8,10 +8,12 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.*; import com.qs.serve.common.util.*;
import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper;
import com.qs.serve.modules.goods.common.GoodsConst; import com.qs.serve.modules.goods.common.GoodsConst;
import com.qs.serve.modules.goods.entity.*; import com.qs.serve.modules.goods.entity.*;
import com.qs.serve.modules.goods.entity.bo.*; import com.qs.serve.modules.goods.entity.bo.*;
import com.qs.serve.modules.goods.entity.dto.InventoryCusPrice; import com.qs.serve.modules.goods.entity.dto.InventoryCusPrice;
import com.qs.serve.modules.goods.entity.so.GoodsHisOrderQuery;
import com.qs.serve.modules.goods.entity.so.InventoryCusPriceQuery; import com.qs.serve.modules.goods.entity.so.InventoryCusPriceQuery;
import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo; import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo;
import com.qs.serve.modules.goods.service.*; import com.qs.serve.modules.goods.service.*;
@ -25,10 +27,12 @@ import com.qs.serve.modules.tbs.service.TbsBudgetConditionService;
import io.netty.util.internal.StringUtil; import io.netty.util.internal.StringUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -53,6 +57,7 @@ public class GoodsSpuController {
private TbsBudgetConditionService budgetConditionService; private TbsBudgetConditionService budgetConditionService;
private GoodsCategoryService goodsCategoryService; private GoodsCategoryService goodsCategoryService;
private SeeYonRequestBaseService seeYonRequestBaseService; private SeeYonRequestBaseService seeYonRequestBaseService;
private ErpDispatchDataMapper dispatchDataMapper;
/** /**
* 翻页搜索 * 翻页搜索
@ -85,63 +90,35 @@ public class GoodsSpuController {
@GetMapping("/shelfPageToSku") @GetMapping("/shelfPageToSku")
public R<PageVo<GoodsSpu>> shelfPageToSku(GoodsSpu param){ public R<PageVo<GoodsSpu>> shelfPageToSku(GoodsSpu param){
PageVo<GoodsSpu> result = this.getShelfPage(param).getData(); PageVo<GoodsSpu> result = this.getShelfPage(param).getData();
List<GoodsSpu> goodsSpuList = result.getList(); List<GoodsSpu> goodsSpuList = this.buildGoodsSpuInfo(param.getSupplierCode(),param.getSelectSpecialFlag(), result.getList());
List<String> spuCodes = goodsSpuList.stream().map(GoodsSpu::getSpuCode).collect(Collectors.toList()); result.setList(goodsSpuList);
List<OmsSpuToSkuKey> toSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_PlaCE,spuCodes); return R.ok(result);
List<InventoryCusPrice> inventoryCusPrices = null;
try {
String supplierCode = param.getSupplierCode();
List<String> skuCodes = toSkuKeys.stream().map(OmsSpuToSkuKey::getInvCode).collect(Collectors.toList());
if(skuCodes.size()>0){
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) {
//兼容特殊sku
if(param.getSelectSpecialFlag()!=null&&param.getSelectSpecialFlag().equals(1)){
if(!spu.getSpecialSkuId().equals(0L)){
GoodsSku goodsSku = goodsSkuService.getById(spu.getSpecialSkuId());
spu.setSkuCode(goodsSku.getSkuCode());
spu.setSkuPrice(goodsSku.getSalesPrice());
spu.setVolume(goodsSku.getVolume().toString());
spu.setWeight(goodsSku.getWeight().toString());
continue;
}
}
for (OmsSpuToSkuKey skuKey : toSkuKeys) {
if(spu.getSpuCode().equals(skuKey.getSkuCode())){
GoodsSku goodsSku = goodsSkuService.getByCode(skuKey.getInvCode());
spu.setSkuCode(goodsSku.getSkuCode());
spu.setSkuPrice(goodsSku.getSalesPrice());
spu.setVolume(goodsSku.getVolume().toString());
spu.setWeight(goodsSku.getWeight().toString());
if(inventoryCusPrices!=null){
for (InventoryCusPrice cusPrice : inventoryCusPrices) {
if(cusPrice.getPrice()!=null&&cusPrice.getInvCode().equals(skuKey.getInvCode())){
spu.setSkuPrice(cusPrice.getPrice());
break;
}
}
}
break;
}
}
} }
result.setList(goodsSpuList); /**
return R.ok(result); * 获取最近两个月发货spu
* @param query
* @return
*/
@PostMapping("listLast2Month")
public R<List<GoodsSpu>> listLast2Month(@RequestBody @Valid GoodsHisOrderQuery query){
LocalDate date = LocalDate.now().plusMonths(-2);
List<String> invCodes = dispatchDataMapper.selectLast2MonthInvCode(date);
if(CollectionUtil.isNotEmpty(invCodes)){
List<GoodsSku> goodsSkus = goodsSkuService.getByCodes(invCodes);
List<Long> goodsSpuIds = goodsSkus.stream().map(GoodsSku::getSpuId).distinct().collect(Collectors.toList());
GoodsSpu param = new GoodsSpu();
param.setSelectIds(goodsSpuIds);
param.setSelectCateIds(query.getCateIds());
param.setShelf(1);
List<GoodsSpu> list = goodsSpuService.selectSpuList(param);
List<GoodsSpu> goodsSpuList = this.buildGoodsSpuInfo(query.getSupplierCode(),0, list);
return R.ok(goodsSpuList);
}
return R.ok(new ArrayList<>());
} }
/** /**
@ -436,5 +413,67 @@ public class GoodsSpuController {
} }
} }
/**
* 封装通用的spu信息客户特殊价转换并关联开平产SKU
* @param supplierCode 客户编码
* @param selectSpecialFlag 兼容特殊sku
* @param goodsSpuList
* @return
*/
@NotNull
private List<GoodsSpu> buildGoodsSpuInfo(String supplierCode,Integer selectSpecialFlag, List<GoodsSpu> goodsSpuList) {
List<String> spuCodes = goodsSpuList.stream().map(GoodsSpu::getSpuCode).collect(Collectors.toList());
List<OmsSpuToSkuKey> toSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_PlaCE,spuCodes);
List<InventoryCusPrice> inventoryCusPrices = null;
try {
List<String> skuCodes = toSkuKeys.stream().map(OmsSpuToSkuKey::getInvCode).collect(Collectors.toList());
if(skuCodes.size()>0){
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) {
//兼容特殊sku
if(selectSpecialFlag!=null&& selectSpecialFlag.equals(1)){
if(!spu.getSpecialSkuId().equals(0L)){
GoodsSku goodsSku = goodsSkuService.getById(spu.getSpecialSkuId());
spu.setSkuCode(goodsSku.getSkuCode());
spu.setSkuPrice(goodsSku.getSalesPrice());
spu.setVolume(goodsSku.getVolume().toString());
spu.setWeight(goodsSku.getWeight().toString());
continue;
}
}
for (OmsSpuToSkuKey skuKey : toSkuKeys) {
if(spu.getSpuCode().equals(skuKey.getSkuCode())){
GoodsSku goodsSku = goodsSkuService.getByCode(skuKey.getInvCode());
spu.setSkuCode(goodsSku.getSkuCode());
spu.setSkuPrice(goodsSku.getSalesPrice());
spu.setVolume(goodsSku.getVolume().toString());
spu.setWeight(goodsSku.getWeight().toString());
if(inventoryCusPrices!=null){
for (InventoryCusPrice cusPrice : inventoryCusPrices) {
if(cusPrice.getPrice()!=null&&cusPrice.getInvCode().equals(skuKey.getInvCode())){
spu.setSkuPrice(cusPrice.getPrice());
break;
}
}
}
break;
}
}
}
return goodsSpuList;
}
} }

16
src/main/java/com/qs/serve/modules/goods/entity/so/GoodsHisOrderQuery.java

@ -0,0 +1,16 @@
package com.qs.serve.modules.goods.entity.so;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2023/11/16
*/
@Data
public class GoodsHisOrderQuery {
String supplierCode;
List<Long> cateIds;
}
Loading…
Cancel
Save