|
@@ -17,6 +17,7 @@ import com.fjhx.mapper.jd.JdBackMapper;
|
|
|
import com.fjhx.params.jd.JdBackEx;
|
|
|
import com.fjhx.params.jd.JdBackPageDto;
|
|
|
import com.fjhx.params.jd.JdBackVo;
|
|
|
+import com.fjhx.params.product.ProductInfoVo;
|
|
|
import com.fjhx.service.jd.JdBackDetailsService;
|
|
|
import com.fjhx.service.jd.JdBackService;
|
|
|
import com.fjhx.service.logistics.LogisticsInfoService;
|
|
@@ -25,6 +26,7 @@ import com.fjhx.service.quality.QualityInfoService;
|
|
|
import com.fjhx.service.stock.StockService;
|
|
|
import com.fjhx.service.warehouse.WarehouseService;
|
|
|
import com.fjhx.uitl.code.CodeEnum;
|
|
|
+import com.fjhx.uitl.kd100.KD100Util;
|
|
|
import com.fjhx.utils.Assert;
|
|
|
import org.springblade.core.excel.util.ExcelUtil;
|
|
|
import org.springblade.core.log.exception.ServiceException;
|
|
@@ -39,6 +41,7 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.StringJoiner;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -72,22 +75,33 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
|
|
|
@Override
|
|
|
public void add(JdBackVo jdBackVo) {
|
|
|
//根据物流id查询退货商品列表
|
|
|
- List<ProductInfo> productInfos = baseMapper.getProductInfoByLogisticsInfoId(jdBackVo.getLogisticsId());
|
|
|
+ List<ProductInfoVo> productInfos = baseMapper.getProductInfoByLogisticsInfoId(jdBackVo.getLogisticsId());
|
|
|
List<Long> productInfoIds = productInfos.stream().map(ProductInfo::getId).distinct().collect(Collectors.toList());
|
|
|
+
|
|
|
//根据商品id和仓库id查出所有商品库存信息
|
|
|
- Stock stock = stockService.getOne(q -> q.eq(Stock::getGoodsId, productInfoIds.get(0)).eq(Stock::getWarehouseId, jdBackVo.getWarehouseId()));
|
|
|
- if(ObjectUtil.isEmpty(stock)){
|
|
|
- stock=new Stock();
|
|
|
- stock.setGoodsId(productInfos.get(0).getId());
|
|
|
- stock.setQuantity(stock.getQuantity());
|
|
|
- stock.setDefectiveQuantity(BigDecimal.ZERO);
|
|
|
- stock.setWarehouseId(jdBackVo.getWarehouseId());
|
|
|
- stockService.save(stock);
|
|
|
- }else {
|
|
|
- //增加库存
|
|
|
- stock.setQuantity(stock.getQuantity().add(BigDecimal.ONE));
|
|
|
- stockService.updateById(stock);
|
|
|
+ List<Stock> stocks = stockService.list(q -> q.in(Stock::getGoodsId, productInfoIds).eq(Stock::getWarehouseId, jdBackVo.getWarehouseId()));
|
|
|
+ Map<Long, List<Stock>> stockMap = stocks.stream().collect(Collectors.groupingBy(Stock::getGoodsId));
|
|
|
+
|
|
|
+ List<Stock> stockLists = new ArrayList<>();
|
|
|
+ for (ProductInfoVo productInfoVo : productInfos) {
|
|
|
+ List<Stock> stockList = stockMap.get(productInfoVo.getId());
|
|
|
+ if (ObjectUtil.isEmpty(stockList)) {
|
|
|
+ Stock stock = new Stock();
|
|
|
+ stock.setGoodsId(productInfoVo.getId());
|
|
|
+ stock.setQuantity(productInfoVo.getQuantity());
|
|
|
+ stock.setDefectiveQuantity(BigDecimal.ZERO);
|
|
|
+ stock.setWarehouseId(jdBackVo.getWarehouseId());
|
|
|
+ stockLists.add(stock);
|
|
|
+ } else {
|
|
|
+ Stock stock = stockList.get(0);
|
|
|
+ //增加库存
|
|
|
+ stock.setQuantity(stock.getQuantity().add(productInfoVo.getQuantity()));
|
|
|
+ stockLists.add(stock);
|
|
|
+ }
|
|
|
}
|
|
|
+ stockService.saveOrUpdateBatch(stockLists);
|
|
|
+
|
|
|
+
|
|
|
//更新入库状态
|
|
|
LogisticsInfo logisticsInfo = logisticsInfoService.getById(jdBackVo.getLogisticsId());
|
|
|
logisticsInfo.setInStockStatus(30);
|
|
@@ -95,6 +109,53 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void addBack(JdBackVo jdBackVo) {
|
|
|
+ //创建京东退货信息
|
|
|
+ save(jdBackVo);
|
|
|
+ //创建退货明细
|
|
|
+ List<ProductInfoVo> productInfoVoList = jdBackVo.getList();
|
|
|
+ //根据id获取商品信息
|
|
|
+ List<Long> productIds = productInfoVoList.stream().map(ProductInfoVo::getId).distinct().collect(Collectors.toList());
|
|
|
+ List<ProductInfo> productInfos = productInfoService.listByIds(productIds);
|
|
|
+ Map<Long, List<ProductInfo>> productInfosMap = productInfos.stream().collect(Collectors.groupingBy(ProductInfo::getId));
|
|
|
+ List<JdBackDetails> jdBackDetailsList = new ArrayList<>();
|
|
|
+ for (ProductInfoVo productInfoVo : productInfoVoList) {
|
|
|
+ JdBackDetails jdBackDetails = new JdBackDetails();
|
|
|
+ jdBackDetails.setJdBackId(jdBackVo.getId());
|
|
|
+ //根据id设置退货产品信息
|
|
|
+ ProductInfo byId = productInfosMap.get(productInfoVo.getId()).get(0);
|
|
|
+ jdBackDetails.setProductCode(byId.getCode());
|
|
|
+ jdBackDetails.setProductName(byId.getName());
|
|
|
+ jdBackDetails.setQuantity(productInfoVo.getQuantity());
|
|
|
+ jdBackDetailsList.add(jdBackDetails);
|
|
|
+ }
|
|
|
+ //创建物流信息
|
|
|
+ LogisticsInfo logisticsInfo = new LogisticsInfo();
|
|
|
+ logisticsInfo.setBusinessId(jdBackVo.getId());
|
|
|
+ logisticsInfo.setBusinessType(4);
|
|
|
+ logisticsInfo.setWarehouseId(jdBackVo.getWarehouseId());
|
|
|
+ logisticsInfo.setStatus(0);
|
|
|
+ logisticsInfo.setInStockStatus(10);
|
|
|
+ logisticsInfo.setCode(jdBackVo.getWaybill());
|
|
|
+ logisticsInfo.setLogisticsCompanyCode(jdBackVo.getLogisticsCompanyCode());
|
|
|
+ logisticsInfoService.save(logisticsInfo);
|
|
|
+
|
|
|
+ //创建质检信息
|
|
|
+ QualityInfo qualityInfo = new QualityInfo();
|
|
|
+ qualityInfo.setType(2);
|
|
|
+ qualityInfo.setCode(CodeEnum.QUALITY.getCode());
|
|
|
+ qualityInfo.setLogisticsInfoId(jdBackVo.getId());
|
|
|
+// qualityInfo.setLogisticsInfoCode(entry.getValue().get(0).getBackCode());
|
|
|
+ qualityInfo.setStatus(QualityStatusEnum.STATUS_1.getKey());
|
|
|
+ qualityInfo.setResultType(StatusConstant.YES);
|
|
|
+ qualityInfoService.save(qualityInfo);
|
|
|
+
|
|
|
+ //保存退货明细
|
|
|
+ jdBackDetailsService.saveBatch(jdBackDetailsList);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
public void edit(JdBackVo jdBackVo) {
|
|
|
updateById(jdBackVo);
|
|
|
}
|