diff --git a/maintain-business/src/main/java/com/maintain/business/domain/ErpMaterialPickingInfo.java b/maintain-business/src/main/java/com/maintain/business/domain/ErpMaterialPickingInfo.java index 510397eefb4f58d0e7d1ff04f9ba51979210a64d..5bf547146934c25a56bb0626011ffbcd83c949b3 100644 --- a/maintain-business/src/main/java/com/maintain/business/domain/ErpMaterialPickingInfo.java +++ b/maintain-business/src/main/java/com/maintain/business/domain/ErpMaterialPickingInfo.java @@ -110,7 +110,7 @@ public class ErpMaterialPickingInfo extends BaseEntity { */ private BigDecimal putawayMoney; /** - * 状态(1已领料 2已退料) + * 状态(1登记中 2已完成 3已退料) */ private Integer state; diff --git a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpRepairFormDeliveryServiceImpl.java b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpRepairFormDeliveryServiceImpl.java index ad42cb61512d76a8e456d5b84e617b3f075263d5..9f2bb812970ed64f65c79fce0218b44f881a0299 100644 --- a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpRepairFormDeliveryServiceImpl.java +++ b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpRepairFormDeliveryServiceImpl.java @@ -3,12 +3,16 @@ package com.maintain.business.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.maintain.business.domain.*; +import com.maintain.business.domain.vo.ErpMaterialInventoryRecordVo; import com.maintain.business.domain.vo.ErpUserVo; +import com.maintain.business.domain.vo.ErpWarehouseVo; import com.maintain.business.mapper.*; import com.maintain.business.service.IErpMaterialService; +import com.maintain.common.enums.InventoryType; import com.maintain.common.enums.IsEnableStatus; import com.maintain.common.enums.PickingState; import com.maintain.common.enums.RepairFormState; +import com.maintain.common.exception.ServiceException; import com.maintain.common.utils.StringUtils; import com.maintain.common.core.page.TableDataInfo; import com.maintain.common.core.domain.PageQuery; @@ -44,6 +48,9 @@ public class ErpRepairFormDeliveryServiceImpl implements IErpRepairFormDeliveryS private final ErpMaterialPickingMapper pickingMapper; private final ErpMaterialPickingInfoMapper pickingInfoMapper; private final IErpMaterialService materialService; + private final ErpMaterialInventoryRecordMapper materialInventoryRecordMapper; + private final ErpMaterialPutawayInfoMapper putawayInfoMapper; + private final ErpWarehouseMapper warehouseMapper; /** * 查询报修单-交车信息 @@ -116,15 +123,37 @@ public class ErpRepairFormDeliveryServiceImpl implements IErpRepairFormDeliveryS pickingInfoLambdaQueryWrapper.eq(ErpMaterialPickingInfo::getRepairFormId, add.getRepairFormId()).eq(ErpMaterialPickingInfo::getState, PickingState.ONE.getCode()); List pickingInfoList = pickingInfoMapper.selectList(pickingInfoLambdaQueryWrapper); if (!pickingInfoList.isEmpty()) { - for (ErpMaterialPickingInfo pickingInfo : pickingInfoList) { - materialService.modifyMaterialInventory(pickingInfo.getMaterialId(), pickingInfo.getCollectNumber(), false); - } - pickingInfoMapper.updateBatchById(pickingInfoList.stream().map(item -> { - ErpMaterialPickingInfo pickingInfo = new ErpMaterialPickingInfo(); - pickingInfo.setId(item.getId()); - pickingInfo.setState(PickingState.TWO.getCode()); - return pickingInfo; - }).collect(Collectors.toList())); + List inventoryRecordList = pickingInfoList.stream().map(item -> { + ErpMaterialInventoryRecordVo recordVo = materialInventoryRecordMapper.customQueryInventoryById(item.getRecordId()); + if (null == recordVo) { + throw new ServiceException("仓库["+item.getWarehouseName()+"]中物料["+item.getMaterialName()+"]库存异常,请联系管理员!"); + } + if (item.getCollectNumber().compareTo(recordVo.getInventory()) > 0) { + throw new ServiceException("仓库["+item.getWarehouseName()+"]中物料["+item.getMaterialName()+"]库存不足,请调整后重试!"); + } + /* 记录已出数量 */ + ErpMaterialInventoryRecord inventoryRecord = materialInventoryRecordMapper.selectById(item.getRecordId()); + if (null == inventoryRecord) { + throw new ServiceException("库存存在异常,请联系管理员!!!"); + } + ErpMaterialPutawayInfo putawayInfo = putawayInfoMapper.selectById(inventoryRecord.getInfoId()); + putawayInfo.setIssuedNumber(putawayInfo.getIssuedNumber().add(item.getCollectNumber())); + putawayInfoMapper.updateById(putawayInfo); + /* 创建库存记录 */ + ErpMaterialInventoryRecord record = new ErpMaterialInventoryRecord(); + record.setInfoId(item.getId()); + record.setMaterialId(item.getMaterialId()); + ErpWarehouseVo warehouseVo = warehouseMapper.selectVoById(item.getWarehouseId()); + record.setWarehouseId(warehouseVo.getId()); + record.setDeptId(warehouseVo.getDeptId()); + record.setVendorId(item.getVendorId()); + record.setNumber(item.getCollectNumber()); + record.setPrice(item.getPrice()); + record.setMoney(item.getMoney()); + record.setType(InventoryType.picking.getCode()); + return record; + }).collect(Collectors.toList()); + materialInventoryRecordMapper.insertBatch(inventoryRecordList); } } return flag; diff --git a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpRepairFormServiceImpl.java b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpRepairFormServiceImpl.java index d9799afc55c211c97a94673314388f8c36876e72..442d23206cbb7cf78e4ee3eb08a140390213a673 100644 --- a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpRepairFormServiceImpl.java +++ b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpRepairFormServiceImpl.java @@ -1,35 +1,36 @@ package com.maintain.business.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.maintain.business.domain.*; +import com.maintain.business.domain.bo.ErpRepairFormBo; import com.maintain.business.domain.vo.ErpGroupVo; +import com.maintain.business.domain.vo.ErpMaterialInventoryRecordVo; import com.maintain.business.domain.vo.ErpRepairFormDeliveryVo; +import com.maintain.business.domain.vo.ErpRepairFormVo; import com.maintain.business.mapper.*; import com.maintain.business.service.IErpMaterialService; +import com.maintain.business.service.IErpRepairFormService; +import com.maintain.common.core.domain.PageQuery; import com.maintain.common.core.domain.entity.SysDept; +import com.maintain.common.core.page.TableDataInfo; import com.maintain.common.enums.PickingState; import com.maintain.common.enums.RepairFormState; import com.maintain.common.helper.LoginHelper; import com.maintain.common.utils.StringUtils; -import com.maintain.common.core.page.TableDataInfo; -import com.maintain.common.core.domain.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.maintain.common.utils.redis.RedisUtils; import com.maintain.system.mapper.SysDeptMapper; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import com.maintain.business.domain.bo.ErpRepairFormBo; -import com.maintain.business.domain.vo.ErpRepairFormVo; -import com.maintain.business.service.IErpRepairFormService; import org.springframework.transaction.annotation.Transactional; +import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Collection; import java.util.stream.Collectors; /** @@ -55,6 +56,9 @@ public class ErpRepairFormServiceImpl implements IErpRepairFormService { private final ErpMaterialPickingInfoMapper pickingInfoMapper; private final ErpMaterialPickingMapper pickingMapper; private final IErpMaterialService materialService; + private final ErpMaterialInventoryRecordMapper materialInventoryRecordMapper; + private final ErpMaterialPutawayInfoMapper putawayInfoMapper; + private final ErpWarehouseMapper warehouseMapper; /** * 查询报修单 @@ -289,18 +293,27 @@ public class ErpRepairFormServiceImpl implements IErpRepairFormService { LambdaQueryWrapper pickingInfoLambdaQueryWrapper = Wrappers.lambdaQuery(); pickingInfoLambdaQueryWrapper.eq(ErpMaterialPickingInfo::getRepairFormId, repairForm.getId()).eq(ErpMaterialPickingInfo::getState, PickingState.TWO.getCode()); List pickingInfoList = pickingInfoMapper.selectList(pickingInfoLambdaQueryWrapper); - for (ErpMaterialPickingInfo pickingInfo : pickingInfoList) { - materialService.modifyMaterialInventory(pickingInfo.getMaterialId(), pickingInfo.getCollectNumber(), true); - } + List pickingInfoIds = pickingInfoList.stream().map(item -> { + /* 回退入库明细中已出数量 */ + ErpMaterialInventoryRecordVo recordVo = materialInventoryRecordMapper.customQueryInventoryById(item.getRecordId()); + ErpMaterialPutawayInfo putawayInfo = putawayInfoMapper.selectById(recordVo.getInfoId()); + putawayInfo.setIssuedNumber(putawayInfo.getIssuedNumber().subtract(item.getCollectNumber())); + putawayInfoMapper.updateById(putawayInfo); + return item.getId(); + }).collect(Collectors.toList()); // 将出库单以及出库明细所有状态全部更新为已退料 - LambdaUpdateWrapper pickingLambdaUpdateWrapper = Wrappers.lambdaUpdate(); - pickingLambdaUpdateWrapper.eq(ErpMaterialPicking::getRepairFormId, repairForm.getId()); - pickingLambdaUpdateWrapper.set(ErpMaterialPicking::getState, PickingState.THREE.getCode()); - pickingMapper.update(pickingLambdaUpdateWrapper); - LambdaUpdateWrapper pickingInfoLambdaUpdateWrapper = Wrappers.lambdaUpdate(); - pickingInfoLambdaUpdateWrapper.eq(ErpMaterialPickingInfo::getRepairFormId, repairForm.getId()); - pickingInfoLambdaUpdateWrapper.set(ErpMaterialPickingInfo::getState, PickingState.THREE.getCode()); - pickingInfoMapper.update(pickingInfoLambdaUpdateWrapper); + pickingMapper.delete( + new LambdaUpdateWrapper() + .eq(ErpMaterialPicking::getRepairFormId, repairForm.getId()) + ); + pickingInfoMapper.delete( + new LambdaUpdateWrapper() + .eq(ErpMaterialPickingInfo::getRepairFormId, repairForm.getId()) + ); + // 删除库存记录表数据 + LambdaUpdateWrapper lambdaUpdateWrapper = Wrappers.lambdaUpdate(); + lambdaUpdateWrapper.in(ErpMaterialInventoryRecord::getInfoId, pickingInfoIds); + materialInventoryRecordMapper.delete(lambdaUpdateWrapper); } return flag; }