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

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

2.报修单作废出库单库存还原
parent 25cc5dcc
......@@ -110,7 +110,7 @@ public class ErpMaterialPickingInfo extends BaseEntity {
*/
private BigDecimal putawayMoney;
/**
* 状态(1已领料 2已退料)
* 状态(1登记中 2已完成 3已退料)
*/
private Integer state;
......
......@@ -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<ErpMaterialPickingInfo> 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<ErpMaterialInventoryRecord> 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;
......
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<ErpMaterialPickingInfo> pickingInfoLambdaQueryWrapper = Wrappers.lambdaQuery();
pickingInfoLambdaQueryWrapper.eq(ErpMaterialPickingInfo::getRepairFormId, repairForm.getId()).eq(ErpMaterialPickingInfo::getState, PickingState.TWO.getCode());
List<ErpMaterialPickingInfo> pickingInfoList = pickingInfoMapper.selectList(pickingInfoLambdaQueryWrapper);
for (ErpMaterialPickingInfo pickingInfo : pickingInfoList) {
materialService.modifyMaterialInventory(pickingInfo.getMaterialId(), pickingInfo.getCollectNumber(), true);
}
List<Long> 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<ErpMaterialPicking> pickingLambdaUpdateWrapper = Wrappers.lambdaUpdate();
pickingLambdaUpdateWrapper.eq(ErpMaterialPicking::getRepairFormId, repairForm.getId());
pickingLambdaUpdateWrapper.set(ErpMaterialPicking::getState, PickingState.THREE.getCode());
pickingMapper.update(pickingLambdaUpdateWrapper);
LambdaUpdateWrapper<ErpMaterialPickingInfo> pickingInfoLambdaUpdateWrapper = Wrappers.lambdaUpdate();
pickingInfoLambdaUpdateWrapper.eq(ErpMaterialPickingInfo::getRepairFormId, repairForm.getId());
pickingInfoLambdaUpdateWrapper.set(ErpMaterialPickingInfo::getState, PickingState.THREE.getCode());
pickingInfoMapper.update(pickingInfoLambdaUpdateWrapper);
pickingMapper.delete(
new LambdaUpdateWrapper<ErpMaterialPicking>()
.eq(ErpMaterialPicking::getRepairFormId, repairForm.getId())
);
pickingInfoMapper.delete(
new LambdaUpdateWrapper<ErpMaterialPickingInfo>()
.eq(ErpMaterialPickingInfo::getRepairFormId, repairForm.getId())
);
// 删除库存记录表数据
LambdaUpdateWrapper<ErpMaterialInventoryRecord> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
lambdaUpdateWrapper.in(ErpMaterialInventoryRecord::getInfoId, pickingInfoIds);
materialInventoryRecordMapper.delete(lambdaUpdateWrapper);
}
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