|
|
|
|
@ -19,17 +19,22 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.dataobject.warehousearea.WarehouseAreaDO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.mold.MoldBrandService;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.mold.MoldService;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.stock.ErpStockInService;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.stock.ErpWarehouseService;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.warehousearea.WarehouseAreaService;
|
|
|
|
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
|
|
|
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
|
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
@ -66,6 +71,10 @@ public class ErpStockInController {
|
|
|
|
|
private ErpProductService productService;
|
|
|
|
|
@Resource
|
|
|
|
|
private ErpSupplierService supplierService;
|
|
|
|
|
@Resource
|
|
|
|
|
private ErpWarehouseService warehouseService;
|
|
|
|
|
@Resource
|
|
|
|
|
private WarehouseAreaService warehouseAreaService;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private MoldBrandService moldBrandService;
|
|
|
|
|
@ -120,6 +129,10 @@ public class ErpStockInController {
|
|
|
|
|
return success(null);
|
|
|
|
|
}
|
|
|
|
|
List<ErpStockInItemDO> stockInItemList = stockInService.getStockInItemListByInId(id);
|
|
|
|
|
Map<Long, ErpWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
|
|
|
|
|
convertSet(stockInItemList, ErpStockInItemDO::getWarehouseId));
|
|
|
|
|
Map<Long, WarehouseAreaDO> areaMap = warehouseAreaService.getWarehouseAreaMap(
|
|
|
|
|
convertSet(stockInItemList, ErpStockInItemDO::getAreaId));
|
|
|
|
|
if (Objects.equals(stockIn.getInType(), "模具入库")) {
|
|
|
|
|
Map<Long, MoldBrandDO> moldMap = moldBrandService.getMoldVOMap(
|
|
|
|
|
convertSet(stockInItemList, ErpStockInItemDO::getMoldSetId));
|
|
|
|
|
@ -133,6 +146,7 @@ public class ErpStockInController {
|
|
|
|
|
ErpStockDO stock = stockService.getStock(source.getMoldSetId(), source.getWarehouseId());
|
|
|
|
|
item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
|
|
|
|
|
item.setMoldList(moldListMap.getOrDefault(source.getMoldSetId(), new ArrayList<>()));
|
|
|
|
|
fillWarehouseInfo(item, source, warehouseMap, areaMap);
|
|
|
|
|
MapUtils.findAndThen(moldMap, source.getMoldSetId(), mold -> item.setMoldSetName(mold.getName())
|
|
|
|
|
.setProductName(mold.getName())
|
|
|
|
|
.setProductBarCode(mold.getCode()));
|
|
|
|
|
@ -148,6 +162,12 @@ public class ErpStockInController {
|
|
|
|
|
stockInVO.setItems(BeanUtils.toBean(stockInItemList, ErpStockInRespVO.Item.class, item -> {
|
|
|
|
|
ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId());
|
|
|
|
|
item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
|
|
|
|
|
if (StringUtils.isBlank(item.getWarehouseName())) {
|
|
|
|
|
MapUtils.findAndThen(warehouseMap, item.getWarehouseId(), warehouse -> item.setWarehouseName(warehouse.getName()));
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isBlank(item.getAreaName())) {
|
|
|
|
|
MapUtils.findAndThen(areaMap, item.getAreaId(), area -> item.setAreaName(area.getAreaName()));
|
|
|
|
|
}
|
|
|
|
|
MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
|
|
|
|
|
.setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()));
|
|
|
|
|
}))));
|
|
|
|
|
@ -194,6 +214,10 @@ public class ErpStockInController {
|
|
|
|
|
convertSet(stockInItemList, ErpStockInItemDO::getProductId));
|
|
|
|
|
Map<Long, ErpSupplierDO> supplierMap = supplierService.getSupplierMap(
|
|
|
|
|
convertSet(pageResult.getList(), ErpStockInDO::getSupplierId));
|
|
|
|
|
Map<Long, ErpWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
|
|
|
|
|
convertSet(stockInItemList, ErpStockInItemDO::getWarehouseId));
|
|
|
|
|
Map<Long, WarehouseAreaDO> areaMap = warehouseAreaService.getWarehouseAreaMap(
|
|
|
|
|
convertSet(stockInItemList, ErpStockInItemDO::getAreaId));
|
|
|
|
|
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
|
|
|
|
|
convertSet(pageResult.getList(), stockIn -> Long.parseLong(stockIn.getCreator())));
|
|
|
|
|
Map<Long, MoldBrandDO> moldMap = moldBrandService.getMoldVOMap(
|
|
|
|
|
@ -209,6 +233,7 @@ public class ErpStockInController {
|
|
|
|
|
item.setMoldSetId(source.getMoldSetId());
|
|
|
|
|
item.setMoldSetName(source.getMoldSetName());
|
|
|
|
|
item.setMoldList(moldListMap.getOrDefault(source.getMoldSetId(), new ArrayList<>()));
|
|
|
|
|
fillWarehouseInfo(item, source, warehouseMap, areaMap);
|
|
|
|
|
MapUtils.findAndThen(moldMap, source.getMoldSetId(), mold -> item.setMoldSetName(mold.getName())
|
|
|
|
|
.setProductName(mold.getName())
|
|
|
|
|
.setProductBarCode(mold.getCode()));
|
|
|
|
|
@ -220,6 +245,14 @@ public class ErpStockInController {
|
|
|
|
|
stockIn.setItems(BeanUtils.toBean(stockInItemMap.get(stockIn.getId()), ErpStockInRespVO.Item.class,
|
|
|
|
|
item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
|
|
|
|
|
.setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
|
|
|
|
|
stockIn.getItems().forEach(item -> {
|
|
|
|
|
if (StringUtils.isBlank(item.getWarehouseName())) {
|
|
|
|
|
MapUtils.findAndThen(warehouseMap, item.getWarehouseId(), warehouse -> item.setWarehouseName(warehouse.getName()));
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isBlank(item.getAreaName())) {
|
|
|
|
|
MapUtils.findAndThen(areaMap, item.getAreaId(), area -> item.setAreaName(area.getAreaName()));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
stockIn.setProductNames(CollUtil.join(stockIn.getItems(), ",", ErpStockInRespVO.Item::getProductName));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@ -228,6 +261,19 @@ public class ErpStockInController {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void fillWarehouseInfo(ErpStockInRespVO.Item item, ErpStockInItemDO source,
|
|
|
|
|
Map<Long, ErpWarehouseDO> warehouseMap,
|
|
|
|
|
Map<Long, WarehouseAreaDO> areaMap) {
|
|
|
|
|
item.setWarehouseName(ObjectUtils.defaultIfNull(source.getWarehouseName(), item.getWarehouseName()));
|
|
|
|
|
item.setAreaName(ObjectUtils.defaultIfNull(source.getAreaName(), item.getAreaName()));
|
|
|
|
|
if (StringUtils.isBlank(item.getWarehouseName())) {
|
|
|
|
|
MapUtils.findAndThen(warehouseMap, source.getWarehouseId(), warehouse -> item.setWarehouseName(warehouse.getName()));
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isBlank(item.getAreaName())) {
|
|
|
|
|
MapUtils.findAndThen(areaMap, source.getAreaId(), area -> item.setAreaName(area.getAreaName()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@PostMapping("/createMesStockIn")
|
|
|
|
|
@Operation(summary = "创建生产入库单")
|
|
|
|
|
@PreAuthorize("@ss.hasPermission('erp:stock-in:create')")
|
|
|
|
|
|