Commit 73aa00d6 authored by 刘帅's avatar 刘帅

1.交车后为出库的出库单库存扣减

2.报修单作废出库单库存还原
parent 25cc5dcc
...@@ -110,7 +110,7 @@ public class ErpMaterialPickingInfo extends BaseEntity { ...@@ -110,7 +110,7 @@ public class ErpMaterialPickingInfo extends BaseEntity {
*/ */
private BigDecimal putawayMoney; private BigDecimal putawayMoney;
/** /**
* 状态(1已领料 2已退料) * 状态(1登记中 2已完成 3已退料)
*/ */
private Integer state; private Integer state;
......
...@@ -3,12 +3,16 @@ package com.maintain.business.service.impl; ...@@ -3,12 +3,16 @@ package com.maintain.business.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.maintain.business.domain.*; 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.ErpUserVo;
import com.maintain.business.domain.vo.ErpWarehouseVo;
import com.maintain.business.mapper.*; import com.maintain.business.mapper.*;
import com.maintain.business.service.IErpMaterialService; import com.maintain.business.service.IErpMaterialService;
import com.maintain.common.enums.InventoryType;
import com.maintain.common.enums.IsEnableStatus; import com.maintain.common.enums.IsEnableStatus;
import com.maintain.common.enums.PickingState; import com.maintain.common.enums.PickingState;
import com.maintain.common.enums.RepairFormState; import com.maintain.common.enums.RepairFormState;
import com.maintain.common.exception.ServiceException;
import com.maintain.common.utils.StringUtils; import com.maintain.common.utils.StringUtils;
import com.maintain.common.core.page.TableDataInfo; import com.maintain.common.core.page.TableDataInfo;
import com.maintain.common.core.domain.PageQuery; import com.maintain.common.core.domain.PageQuery;
...@@ -44,6 +48,9 @@ public class ErpRepairFormDeliveryServiceImpl implements IErpRepairFormDeliveryS ...@@ -44,6 +48,9 @@ public class ErpRepairFormDeliveryServiceImpl implements IErpRepairFormDeliveryS
private final ErpMaterialPickingMapper pickingMapper; private final ErpMaterialPickingMapper pickingMapper;
private final ErpMaterialPickingInfoMapper pickingInfoMapper; private final ErpMaterialPickingInfoMapper pickingInfoMapper;
private final IErpMaterialService materialService; 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 ...@@ -116,15 +123,37 @@ public class ErpRepairFormDeliveryServiceImpl implements IErpRepairFormDeliveryS
pickingInfoLambdaQueryWrapper.eq(ErpMaterialPickingInfo::getRepairFormId, add.getRepairFormId()).eq(ErpMaterialPickingInfo::getState, PickingState.ONE.getCode()); pickingInfoLambdaQueryWrapper.eq(ErpMaterialPickingInfo::getRepairFormId, add.getRepairFormId()).eq(ErpMaterialPickingInfo::getState, PickingState.ONE.getCode());
List<ErpMaterialPickingInfo> pickingInfoList = pickingInfoMapper.selectList(pickingInfoLambdaQueryWrapper); List<ErpMaterialPickingInfo> pickingInfoList = pickingInfoMapper.selectList(pickingInfoLambdaQueryWrapper);
if (!pickingInfoList.isEmpty()) { if (!pickingInfoList.isEmpty()) {
for (ErpMaterialPickingInfo pickingInfo : pickingInfoList) { List<ErpMaterialInventoryRecord> inventoryRecordList = pickingInfoList.stream().map(item -> {
materialService.modifyMaterialInventory(pickingInfo.getMaterialId(), pickingInfo.getCollectNumber(), false); ErpMaterialInventoryRecordVo recordVo = materialInventoryRecordMapper.customQueryInventoryById(item.getRecordId());
if (null == recordVo) {
throw new ServiceException("仓库["+item.getWarehouseName()+"]中物料["+item.getMaterialName()+"]库存异常,请联系管理员!");
} }
pickingInfoMapper.updateBatchById(pickingInfoList.stream().map(item -> { if (item.getCollectNumber().compareTo(recordVo.getInventory()) > 0) {
ErpMaterialPickingInfo pickingInfo = new ErpMaterialPickingInfo(); throw new ServiceException("仓库["+item.getWarehouseName()+"]中物料["+item.getMaterialName()+"]库存不足,请调整后重试!");
pickingInfo.setId(item.getId()); }
pickingInfo.setState(PickingState.TWO.getCode()); /* 记录已出数量 */
return pickingInfo; ErpMaterialInventoryRecord inventoryRecord = materialInventoryRecordMapper.selectById(item.getRecordId());
}).collect(Collectors.toList())); 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; return flag;
......
package com.maintain.business.service.impl; package com.maintain.business.service.impl;
import cn.hutool.core.bean.BeanUtil; 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.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 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.*;
import com.maintain.business.domain.bo.ErpRepairFormBo;
import com.maintain.business.domain.vo.ErpGroupVo; 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.ErpRepairFormDeliveryVo;
import com.maintain.business.domain.vo.ErpRepairFormVo;
import com.maintain.business.mapper.*; import com.maintain.business.mapper.*;
import com.maintain.business.service.IErpMaterialService; 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.domain.entity.SysDept;
import com.maintain.common.core.page.TableDataInfo;
import com.maintain.common.enums.PickingState; import com.maintain.common.enums.PickingState;
import com.maintain.common.enums.RepairFormState; import com.maintain.common.enums.RepairFormState;
import com.maintain.common.helper.LoginHelper; import com.maintain.common.helper.LoginHelper;
import com.maintain.common.utils.StringUtils; 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.common.utils.redis.RedisUtils;
import com.maintain.system.mapper.SysDeptMapper; import com.maintain.system.mapper.SysDeptMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; 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 org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -55,6 +56,9 @@ public class ErpRepairFormServiceImpl implements IErpRepairFormService { ...@@ -55,6 +56,9 @@ public class ErpRepairFormServiceImpl implements IErpRepairFormService {
private final ErpMaterialPickingInfoMapper pickingInfoMapper; private final ErpMaterialPickingInfoMapper pickingInfoMapper;
private final ErpMaterialPickingMapper pickingMapper; private final ErpMaterialPickingMapper pickingMapper;
private final IErpMaterialService materialService; 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 { ...@@ -289,18 +293,27 @@ public class ErpRepairFormServiceImpl implements IErpRepairFormService {
LambdaQueryWrapper<ErpMaterialPickingInfo> pickingInfoLambdaQueryWrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<ErpMaterialPickingInfo> pickingInfoLambdaQueryWrapper = Wrappers.lambdaQuery();
pickingInfoLambdaQueryWrapper.eq(ErpMaterialPickingInfo::getRepairFormId, repairForm.getId()).eq(ErpMaterialPickingInfo::getState, PickingState.TWO.getCode()); pickingInfoLambdaQueryWrapper.eq(ErpMaterialPickingInfo::getRepairFormId, repairForm.getId()).eq(ErpMaterialPickingInfo::getState, PickingState.TWO.getCode());
List<ErpMaterialPickingInfo> pickingInfoList = pickingInfoMapper.selectList(pickingInfoLambdaQueryWrapper); List<ErpMaterialPickingInfo> pickingInfoList = pickingInfoMapper.selectList(pickingInfoLambdaQueryWrapper);
for (ErpMaterialPickingInfo pickingInfo : pickingInfoList) { List<Long> pickingInfoIds = pickingInfoList.stream().map(item -> {
materialService.modifyMaterialInventory(pickingInfo.getMaterialId(), pickingInfo.getCollectNumber(), true); /* 回退入库明细中已出数量 */
} 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<ErpMaterialPicking> pickingLambdaUpdateWrapper = Wrappers.lambdaUpdate(); pickingMapper.delete(
pickingLambdaUpdateWrapper.eq(ErpMaterialPicking::getRepairFormId, repairForm.getId()); new LambdaUpdateWrapper<ErpMaterialPicking>()
pickingLambdaUpdateWrapper.set(ErpMaterialPicking::getState, PickingState.THREE.getCode()); .eq(ErpMaterialPicking::getRepairFormId, repairForm.getId())
pickingMapper.update(pickingLambdaUpdateWrapper); );
LambdaUpdateWrapper<ErpMaterialPickingInfo> pickingInfoLambdaUpdateWrapper = Wrappers.lambdaUpdate(); pickingInfoMapper.delete(
pickingInfoLambdaUpdateWrapper.eq(ErpMaterialPickingInfo::getRepairFormId, repairForm.getId()); new LambdaUpdateWrapper<ErpMaterialPickingInfo>()
pickingInfoLambdaUpdateWrapper.set(ErpMaterialPickingInfo::getState, PickingState.THREE.getCode()); .eq(ErpMaterialPickingInfo::getRepairFormId, repairForm.getId())
pickingInfoMapper.update(pickingInfoLambdaUpdateWrapper); );
// 删除库存记录表数据
LambdaUpdateWrapper<ErpMaterialInventoryRecord> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
lambdaUpdateWrapper.in(ErpMaterialInventoryRecord::getInfoId, pickingInfoIds);
materialInventoryRecordMapper.delete(lambdaUpdateWrapper);
} }
return flag; return flag;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment