|
@@ -1,26 +1,27 @@
|
|
|
package com.fjhx.wms.service.stock.impl;
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
-import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
|
+import com.fjhx.wms.entity.stock.dto.StockDto;
|
|
|
import com.fjhx.wms.entity.stock.dto.StockJournalDetailsDto;
|
|
|
+import com.fjhx.wms.entity.stock.dto.StockSelectDto;
|
|
|
import com.fjhx.wms.entity.stock.po.Stock;
|
|
|
import com.fjhx.wms.entity.stock.po.StockJournal;
|
|
|
import com.fjhx.wms.entity.stock.po.StockJournalDetails;
|
|
|
+import com.fjhx.wms.entity.stock.vo.StockVo;
|
|
|
+import com.fjhx.wms.entity.warehouse.po.Warehouse;
|
|
|
import com.fjhx.wms.mapper.stock.StockMapper;
|
|
|
import com.fjhx.wms.service.stock.StockJournalDetailsService;
|
|
|
import com.fjhx.wms.service.stock.StockJournalService;
|
|
|
import com.fjhx.wms.service.stock.StockService;
|
|
|
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.fjhx.wms.entity.stock.dto.StockSelectDto;
|
|
|
+import com.fjhx.wms.service.warehouse.WarehouseService;
|
|
|
import com.obs.services.internal.ServiceException;
|
|
|
-import com.ruoyi.common.core.domain.BaseSelectDto;
|
|
|
+import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
-import com.fjhx.wms.entity.stock.vo.StockVo;
|
|
|
-import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
-import com.fjhx.wms.entity.stock.dto.StockDto;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
@@ -46,6 +47,8 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
|
|
|
StockJournalDetailsService stockJournalDetailsService;
|
|
|
@Autowired
|
|
|
ProductInfoService productInfoService;
|
|
|
+ @Autowired
|
|
|
+ WarehouseService warehouseService;
|
|
|
|
|
|
@Override
|
|
|
public Page<StockVo> getPage(StockSelectDto dto) {
|
|
@@ -65,15 +68,95 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
|
|
|
item.setProductName(productInfo.getName());
|
|
|
});
|
|
|
}
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 维多利亚 按仓库库存查询
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Page<StockVo> pageByWarehouse(StockSelectDto dto) {
|
|
|
+ Page<StockVo> page = getPage(dto);
|
|
|
+ List<StockVo> stockVos = page.getRecords();
|
|
|
+
|
|
|
+ //获取产品id列表
|
|
|
+ List<Long> productIds = stockVos.stream().map(Stock::getProductId).collect(Collectors.toList());
|
|
|
+ if (ObjectUtil.isNotEmpty(productIds)) {
|
|
|
+ //赋值产品名称
|
|
|
+ productInfoService.attributeAssign(stockVos, StockVo::getProductId, (item, productInfo) -> {
|
|
|
+ //赋值维多利亚扩展产品信息
|
|
|
+ String victoriatouristJson = item.getVictoriatouristJson();
|
|
|
+ if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
|
|
|
+ JSONObject json = JSONObject.parseObject(victoriatouristJson);
|
|
|
+ json.put("code", productInfo.getCode());
|
|
|
+ json.put("spec", productInfo.getSpec());
|
|
|
+ json.put("unit", productInfo.getUnit());
|
|
|
+ item.setVictoriatouristJson(json.toJSONString());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
//维多利亚扩展
|
|
|
+ List<Long> warehouseIds = new ArrayList<>();
|
|
|
+ for (StockVo stockVo : stockVos) {
|
|
|
+ String victoriatouristJson = stockVo.getVictoriatouristJson();
|
|
|
+ if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
|
|
|
+ JSONObject json = JSONObject.parseObject(victoriatouristJson);
|
|
|
+ //遍历仓库id
|
|
|
+ warehouseIds.add(json.getLong("warehouseId"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //如果仓库id列表为空直接返回
|
|
|
+ if (ObjectUtil.isEmpty(warehouseIds)) {
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+ List<Warehouse> warehouses = warehouseService.listByIds(warehouseIds);
|
|
|
+ Map<Long, String> warehouseMap = warehouses.stream().collect(Collectors.toMap(Warehouse::getId, Warehouse::getName));
|
|
|
+ for (StockVo stockVo : stockVos) {
|
|
|
+ String victoriatouristJson = stockVo.getVictoriatouristJson();
|
|
|
+ if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
|
|
|
+ JSONObject json = JSONObject.parseObject(victoriatouristJson);
|
|
|
+ String warehouseName = warehouseMap.get(json.getLong("warehouseId"));
|
|
|
+ json.put("warehouseName", warehouseName);
|
|
|
+ stockVo.setVictoriatouristJson(json.toJSONString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return page;
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ public Page<StockVo> pageByProduct(StockSelectDto dto) {
|
|
|
+ IWrapper<Stock> wrapper = getWrapper();
|
|
|
+ wrapper.orderByDesc("s", Stock::getId);
|
|
|
+ wrapper.eq(Stock::getWarehouseId, dto.getId());
|
|
|
+ wrapper.like(Stock::getQuantity, dto.getKeyword());
|
|
|
|
|
|
+ Page<StockVo> page = this.baseMapper.pageByProduct(dto.getPage(), wrapper);
|
|
|
+ List<StockVo> stockVos = page.getRecords();
|
|
|
+ //获取产品id列表
|
|
|
+ List<Long> productIds = stockVos.stream().map(Stock::getProductId).collect(Collectors.toList());
|
|
|
+ if (ObjectUtil.isNotEmpty(productIds)) {
|
|
|
+ //赋值产品名称
|
|
|
+ productInfoService.attributeAssign(stockVos, StockVo::getProductId, (item, productInfo) -> {
|
|
|
+ item.setType(productInfo.getType());
|
|
|
+ item.setProductName(productInfo.getName());
|
|
|
+ //赋值维多利亚扩展产品信息
|
|
|
+ String victoriatouristJson = item.getVictoriatouristJson();
|
|
|
+ if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
|
|
|
+ JSONObject json = JSONObject.parseObject(victoriatouristJson);
|
|
|
+ json.put("code", productInfo.getCode());
|
|
|
+ json.put("spec", productInfo.getSpec());
|
|
|
+ json.put("unit", productInfo.getUnit());
|
|
|
+ item.setVictoriatouristJson(json.toJSONString());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Stock detail(StockDto dto) {
|
|
|
- return getOne(q->q.eq(Stock::getWarehouseId,dto.getWarehouseId()).eq(Stock::getProductId,dto.getProductId()));
|
|
|
+ return getOne(q -> q.eq(Stock::getWarehouseId, dto.getWarehouseId()).eq(Stock::getProductId, dto.getProductId()));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -191,5 +274,45 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
|
|
|
return stockJournalDetailsList;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 次品转良品
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void defectiveToQualified(Stock stock) {
|
|
|
+ if (ObjectUtil.isEmpty(stock.getId())) {
|
|
|
+ throw new ServiceException("库存id不能为空");
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isEmpty(stock.getQuantity())) {
|
|
|
+ throw new ServiceException("要转换的数量不能为空");
|
|
|
+ }
|
|
|
+ Stock stock1 = getById(stock.getId());
|
|
|
+ String victoriatouristJson = stock1.getVictoriatouristJson();
|
|
|
+ JSONObject json = JSONObject.parseObject(victoriatouristJson);
|
|
|
+ json.put("quantity", json.getBigDecimal("quantity").add(stock.getQuantity()));
|
|
|
+ json.put("defectiveQuantity", json.getBigDecimal("defectiveQuantity").subtract(stock.getQuantity()));
|
|
|
+ stock1.setVictoriatouristJson(json.toJSONString());
|
|
|
+ updateById(stock1);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 良品转次品
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void qualifiedToDefective(Stock stock) {
|
|
|
+ if (ObjectUtil.isEmpty(stock.getId())) {
|
|
|
+ throw new ServiceException("库存id不能为空");
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isEmpty(stock.getQuantity())) {
|
|
|
+ throw new ServiceException("要转换的数量不能为空");
|
|
|
+ }
|
|
|
+ Stock stock1 = getById(stock.getId());
|
|
|
+ String victoriatouristJson = stock1.getVictoriatouristJson();
|
|
|
+ JSONObject json = JSONObject.parseObject(victoriatouristJson);
|
|
|
+ json.put("quantity", json.getBigDecimal("quantity").subtract(stock.getQuantity()));
|
|
|
+ json.put("defectiveQuantity", json.getBigDecimal("defectiveQuantity").add(stock.getQuantity()));
|
|
|
+ stock1.setVictoriatouristJson(json.toJSONString());
|
|
|
+ updateById(stock1);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|