|
|
|
|
@ -14,6 +14,7 @@ import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProduc
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutAuditReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVOItem;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSubmitReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutApproveRecordDO;
|
|
|
|
|
@ -132,15 +133,14 @@ public class ErpStockOutServiceImpl implements ErpStockOutService {
|
|
|
|
|
.setStatus(status)
|
|
|
|
|
.setTotalCount(getSumValue(stockOutItems, ErpStockOutItemDO::getCount, BigDecimal::add))
|
|
|
|
|
.setTotalPrice(getSumValue(stockOutItems, ErpStockOutItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)));
|
|
|
|
|
fillUsageSnapshot(stockOut, createReqVO.getOutUsageType(), createReqVO.getRepairId(),
|
|
|
|
|
createReqVO.getRepairDeviceId(), createReqVO.getMaintenanceId());
|
|
|
|
|
fillUsageSnapshot(stockOutItems, createReqVO.getItems());
|
|
|
|
|
stockOutMapper.insert(stockOut);
|
|
|
|
|
stockOutItems.forEach(item -> item.setOutId(stockOut.getId()));
|
|
|
|
|
stockOutItemMapper.insertBatch(stockOutItems);
|
|
|
|
|
|
|
|
|
|
if (createReqVO.getOutType().equals("模具出库")) {
|
|
|
|
|
//修改模具组状态
|
|
|
|
|
for (ErpStockOutSaveReqVO.Item item : createReqVO.getItems()) {
|
|
|
|
|
for (ErpStockOutSaveReqVOItem item : createReqVO.getItems()) {
|
|
|
|
|
MoldBrandDO moldBrandDO = moldBrandMapper.selectById(item.getMoldSetId());
|
|
|
|
|
moldBrandDO.setStatus(MoldBrandStatusEnum.STANDBY.getStatus());
|
|
|
|
|
moldBrandMapper.updateById(moldBrandDO);
|
|
|
|
|
@ -176,8 +176,7 @@ public class ErpStockOutServiceImpl implements ErpStockOutService {
|
|
|
|
|
.setNeedAudit(needAudit)
|
|
|
|
|
.setTotalCount(getSumValue(stockOutItems, ErpStockOutItemDO::getCount, BigDecimal::add))
|
|
|
|
|
.setTotalPrice(getSumValue(stockOutItems, ErpStockOutItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)));
|
|
|
|
|
fillUsageSnapshot(updateObj, updateReqVO.getOutUsageType(), updateReqVO.getRepairId(),
|
|
|
|
|
updateReqVO.getRepairDeviceId(), updateReqVO.getMaintenanceId());
|
|
|
|
|
fillUsageSnapshot(stockOutItems, updateReqVO.getItems());
|
|
|
|
|
stockOutMapper.updateById(updateObj);
|
|
|
|
|
updateStockOutItemList(updateReqVO.getId(), stockOutItems);
|
|
|
|
|
}
|
|
|
|
|
@ -415,29 +414,33 @@ public class ErpStockOutServiceImpl implements ErpStockOutService {
|
|
|
|
|
return !AUDIT_CONFIG_DISABLE_VALUE.equals(configApi.getConfigValueByCategoryAndKey(AUDIT_CONFIG_CATEGORY, AUDIT_CONFIG_KEY));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void fillUsageSnapshot(ErpStockOutDO stockOut, Integer outUsageType, Long repairId,
|
|
|
|
|
Long repairDeviceId, Long maintenanceId) {
|
|
|
|
|
stockOut.setOutUsageType(outUsageType);
|
|
|
|
|
stockOut.setRepairId(null);
|
|
|
|
|
stockOut.setRepairName(null);
|
|
|
|
|
stockOut.setRepairDeviceId(null);
|
|
|
|
|
stockOut.setRepairDeviceName(null);
|
|
|
|
|
stockOut.setMaintenanceId(null);
|
|
|
|
|
stockOut.setMaintenanceName(null);
|
|
|
|
|
|
|
|
|
|
if (ErpStockOutUsageTypeEnum.REPAIR_RECEIVE.getType().equals(outUsageType) && repairId != null) {
|
|
|
|
|
DvRepairRespDTO repair = dvRepairApi.getDvRepair(repairId);
|
|
|
|
|
if (repair != null) {
|
|
|
|
|
stockOut.setRepairId(repair.getId());
|
|
|
|
|
stockOut.setRepairName(repair.getRepairName());
|
|
|
|
|
stockOut.setRepairDeviceId(repairDeviceId != null ? repairDeviceId : repair.getMachineryId());
|
|
|
|
|
stockOut.setRepairDeviceName(repair.getMachineryName());
|
|
|
|
|
}
|
|
|
|
|
} else if (ErpStockOutUsageTypeEnum.MAINTENANCE_RECEIVE.getType().equals(outUsageType) && maintenanceId != null) {
|
|
|
|
|
TicketManagementRespDTO maintenance = ticketManagementApi.getTicketManagement(maintenanceId);
|
|
|
|
|
if (maintenance != null) {
|
|
|
|
|
stockOut.setMaintenanceId(maintenance.getId());
|
|
|
|
|
stockOut.setMaintenanceName(maintenance.getPlanNo());
|
|
|
|
|
private void fillUsageSnapshot(List<ErpStockOutItemDO> stockOutItems, List<ErpStockOutSaveReqVOItem> items) {
|
|
|
|
|
for (int i = 0; i < stockOutItems.size(); i++) {
|
|
|
|
|
ErpStockOutItemDO stockOutItem = stockOutItems.get(i);
|
|
|
|
|
ErpStockOutSaveReqVOItem item = items.get(i);
|
|
|
|
|
stockOutItem.setOutUsageType(item.getOutUsageType());
|
|
|
|
|
stockOutItem.setOutUsageTypeName(ErpStockOutUsageTypeEnum.getNameByType(item.getOutUsageType()));
|
|
|
|
|
stockOutItem.setRepairId(null);
|
|
|
|
|
stockOutItem.setRepairName(null);
|
|
|
|
|
stockOutItem.setRepairDeviceId(null);
|
|
|
|
|
stockOutItem.setRepairDeviceName(null);
|
|
|
|
|
stockOutItem.setMaintenanceId(null);
|
|
|
|
|
stockOutItem.setMaintenanceName(null);
|
|
|
|
|
|
|
|
|
|
if (ErpStockOutUsageTypeEnum.REPAIR_RECEIVE.getType().equals(item.getOutUsageType()) && item.getRepairId() != null) {
|
|
|
|
|
DvRepairRespDTO repair = dvRepairApi.getDvRepair(item.getRepairId());
|
|
|
|
|
if (repair != null) {
|
|
|
|
|
stockOutItem.setRepairId(repair.getId());
|
|
|
|
|
stockOutItem.setRepairName(repair.getRepairName());
|
|
|
|
|
stockOutItem.setRepairDeviceId(item.getRepairDeviceId() != null ? item.getRepairDeviceId() : repair.getMachineryId());
|
|
|
|
|
stockOutItem.setRepairDeviceName(repair.getMachineryName());
|
|
|
|
|
}
|
|
|
|
|
} else if (ErpStockOutUsageTypeEnum.MAINTENANCE_RECEIVE.getType().equals(item.getOutUsageType()) && item.getMaintenanceId() != null) {
|
|
|
|
|
TicketManagementRespDTO maintenance = ticketManagementApi.getTicketManagement(item.getMaintenanceId());
|
|
|
|
|
if (maintenance != null) {
|
|
|
|
|
stockOutItem.setMaintenanceId(maintenance.getId());
|
|
|
|
|
stockOutItem.setMaintenanceName(maintenance.getPlanNo());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -454,13 +457,13 @@ public class ErpStockOutServiceImpl implements ErpStockOutService {
|
|
|
|
|
.build());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<ErpStockOutItemDO> validateStockOutItems(List<ErpStockOutSaveReqVO.Item> list, String outType) {
|
|
|
|
|
private List<ErpStockOutItemDO> validateStockOutItems(List<ErpStockOutSaveReqVOItem> list, String outType) {
|
|
|
|
|
validateWarehouseAreas(list);
|
|
|
|
|
if (Objects.equals(outType, "模具出库")) {
|
|
|
|
|
List<MoldBrandDO> moldList = moldBrandService.validMoldList(convertSet(list, ErpStockOutSaveReqVO.Item::getMoldSetId));
|
|
|
|
|
List<MoldBrandDO> moldList = moldBrandService.validMoldList(convertSet(list, ErpStockOutSaveReqVOItem::getMoldSetId));
|
|
|
|
|
Map<Long, MoldBrandDO> moldMap = convertMap(moldList, MoldBrandDO::getId);
|
|
|
|
|
Map<Long, WarehouseAreaDO> areaMap = warehouseAreaService.getWarehouseAreaMap(
|
|
|
|
|
convertSet(list, ErpStockOutSaveReqVO.Item::getAreaId));
|
|
|
|
|
convertSet(list, ErpStockOutSaveReqVOItem::getAreaId));
|
|
|
|
|
return convertList(list, item -> {
|
|
|
|
|
MoldBrandDO moldBrand = moldMap.get(item.getMoldSetId());
|
|
|
|
|
return ErpStockOutItemDO.builder()
|
|
|
|
|
@ -475,26 +478,39 @@ public class ErpStockOutServiceImpl implements ErpStockOutService {
|
|
|
|
|
.productPrice(item.getProductPrice())
|
|
|
|
|
.count(item.getCount())
|
|
|
|
|
.totalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()))
|
|
|
|
|
.outUsageType(item.getOutUsageType())
|
|
|
|
|
.outUsageTypeName(ErpStockOutUsageTypeEnum.getNameByType(item.getOutUsageType()))
|
|
|
|
|
.repairId(item.getRepairId())
|
|
|
|
|
.repairDeviceId(item.getRepairDeviceId())
|
|
|
|
|
.maintenanceId(item.getMaintenanceId())
|
|
|
|
|
.remark(item.getRemark())
|
|
|
|
|
.build();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
List<ErpProductDO> productList = productService.validProductList(convertSet(list, ErpStockOutSaveReqVO.Item::getProductId));
|
|
|
|
|
List<ErpProductDO> productList = productService.validProductList(convertSet(list, ErpStockOutSaveReqVOItem::getProductId));
|
|
|
|
|
Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
|
|
|
|
|
Map<Long, WarehouseAreaDO> areaMap = warehouseAreaService.getWarehouseAreaMap(
|
|
|
|
|
convertSet(list, ErpStockOutSaveReqVO.Item::getAreaId));
|
|
|
|
|
convertSet(list, ErpStockOutSaveReqVOItem::getAreaId));
|
|
|
|
|
return convertList(list, item -> BeanUtils.toBean(item, ErpStockOutItemDO.class, target -> target
|
|
|
|
|
.setAreaName(areaMap.containsKey(target.getAreaId()) ? areaMap.get(target.getAreaId()).getAreaName() : null)
|
|
|
|
|
.setProductUnitId(productMap.get(target.getProductId()).getUnitId())
|
|
|
|
|
.setTotalPrice(MoneyUtils.priceMultiply(target.getProductPrice(), target.getCount()))));
|
|
|
|
|
.setTotalPrice(MoneyUtils.priceMultiply(target.getProductPrice(), target.getCount()))
|
|
|
|
|
.setOutUsageType(item.getOutUsageType())
|
|
|
|
|
.setOutUsageTypeName(ErpStockOutUsageTypeEnum.getNameByType(item.getOutUsageType()))
|
|
|
|
|
.setRepairId(item.getRepairId())
|
|
|
|
|
.setRepairDeviceId(item.getRepairDeviceId())
|
|
|
|
|
.setRepairName(null)
|
|
|
|
|
.setRepairDeviceName(null)
|
|
|
|
|
.setMaintenanceId(item.getMaintenanceId())
|
|
|
|
|
.setMaintenanceName(null)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void validateWarehouseAreas(List<ErpStockOutSaveReqVO.Item> list) {
|
|
|
|
|
private void validateWarehouseAreas(List<ErpStockOutSaveReqVOItem> list) {
|
|
|
|
|
Map<Long, ErpWarehouseDO> warehouseMap = convertMap(
|
|
|
|
|
warehouseService.validWarehouseList(convertSet(list, ErpStockOutSaveReqVO.Item::getWarehouseId)),
|
|
|
|
|
warehouseService.validWarehouseList(convertSet(list, ErpStockOutSaveReqVOItem::getWarehouseId)),
|
|
|
|
|
ErpWarehouseDO::getId);
|
|
|
|
|
Map<Long, WarehouseAreaDO> areaMap = warehouseAreaService.getWarehouseAreaMap(
|
|
|
|
|
convertSet(list, ErpStockOutSaveReqVO.Item::getAreaId));
|
|
|
|
|
convertSet(list, ErpStockOutSaveReqVOItem::getAreaId));
|
|
|
|
|
list.forEach(item -> {
|
|
|
|
|
if (item.getAreaId() == null) {
|
|
|
|
|
return;
|
|
|
|
|
|