盘点逻辑修改 出库异常逻辑修改

This commit is contained in:
liuhanqing
2025-07-01 11:08:29 +08:00
parent 1804b7c34b
commit 9a47afb341
12 changed files with 1022 additions and 77 deletions

View File

@@ -5,6 +5,8 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
@@ -12,6 +14,8 @@ import com.ruoyi.bas.basJobId.service.IBasJobIdService;
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService;
import com.ruoyi.bas.taskNo.service.IBasTaskNoService;
import com.ruoyi.check.difference.domain.CheckDifferenceRecord;
import com.ruoyi.check.difference.service.ICheckDifferenceRecordService;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
@@ -19,8 +23,10 @@ import com.ruoyi.in.stockindetail.domain.InStockinDetail;
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail;
import com.ruoyi.job.mydojobdetail.service.IMydoJobDetailService;
import com.ruoyi.out.domain.OutExceptionRecord;
import com.ruoyi.out.outStockoutDetail.domain.OutStockoutDetail;
import com.ruoyi.out.outStockoutDetail.service.IOutStockoutDetailService;
import com.ruoyi.out.service.IOutExceptionRecordService;
import com.ruoyi.stock.stock.domain.BasStock;
import com.ruoyi.stock.stock.service.IBasStockService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -55,6 +61,10 @@ public class MydoJobServiceImpl implements IMydoJobService {
private IOutStockoutDetailService outStockoutDetailService;
@Autowired
private IBasCargoSpaceService basCargoSpaceService;
@Autowired
private ICheckDifferenceRecordService checkDifferenceRecordService;
@Autowired
private IOutExceptionRecordService outExceptionRecordService;
/**
@@ -138,6 +148,9 @@ public class MydoJobServiceImpl implements IMydoJobService {
if (job == null) {
return AjaxResult.warn("任务不存在");
}
if(!"1".equals(job.getStatus())) {
return AjaxResult.warn("任务已开始");
}
MydoJobDetail param = new MydoJobDetail();
param.setJobId(jobId);
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
@@ -181,88 +194,85 @@ public class MydoJobServiceImpl implements IMydoJobService {
if (job == null) {
return AjaxResult.warn("任务不存在");
}
if ("6".equals(job.getInOrOut())){
//托盘盘点入库,放入原货位,直接修改货位状态,库存状态
//入库作业
MydoJobDetail param = new MydoJobDetail();
param.setJobId(jobId);
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(job.getCargoSpaceId());
if (CollUtil.isNotEmpty(mydoJobDetails)) {
List<BasStock> list = new ArrayList<>();
//修改货位
BasCargoSpace basCargoSpace = new BasCargoSpace();
basCargoSpace.setStatus("8");
if ("5".equals(job.getInOrOut()) || "6".equals(job.getInOrOut())) {
//查询盘点信息中的异常信息
CheckDifferenceRecord checkDifferenceRecordParam = new CheckDifferenceRecord();
checkDifferenceRecordParam.setTrayCode(job.getTrayCode());
checkDifferenceRecordParam.setWarehouseId(job.getWarehouseId());
List<CheckDifferenceRecord> checkDifferenceRecords = checkDifferenceRecordService.selectCheckDifferenceRecordList(checkDifferenceRecordParam);
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
//如果存在盘点异常信息 根据托盘条码和物料id 筛选异常信息
Optional<CheckDifferenceRecord> first = checkDifferenceRecords.stream().filter(x -> x.getTrayCode().equals(job.getTrayCode()) && x.getProductId().equals(mydoJobDetail.getProductId())).findFirst();
if (first.isPresent()) {
//生成盘点待审批库存
BasStock stockByInStockinDetail = getStockByInStockinDetail(mydoJobDetail, job, "2");
list.add(stockByInStockinDetail);
//修改异常记录中的库存id
CheckDifferenceRecord checkDifferenceRecord = first.get();
checkDifferenceRecord.setStockId(stockByInStockinDetail.getStockId());
checkDifferenceRecordService.updateCheckDifferenceRecord(checkDifferenceRecord);
} else {
//正常库存
list.add(getStockByInStockinDetail(mydoJobDetail, job, "1"));
}
}
} else {
//查找是否存在异常信息
OutExceptionRecord outExceptionRecordParam = new OutExceptionRecord();
outExceptionRecordParam.setTrayCode(job.getTrayCode());
outExceptionRecordParam.setWarehouseId(job.getWarehouseId());
List<OutExceptionRecord> outExceptionRecords = outExceptionRecordService.selectOutExceptionRecordList(outExceptionRecordParam);
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
Optional<OutExceptionRecord> first = outExceptionRecords.stream().filter(x -> x.getTrayCode().equals(job.getTrayCode()) && x.getProductId().equals(mydoJobDetail.getProductId())).findFirst();
if (first.isPresent()){
//生成异常库存
BasStock stockByInStockinDetail = getStockByInStockinDetail(mydoJobDetail, job, "2");
list.add(stockByInStockinDetail);
//修改异常记录中的库存id
OutExceptionRecord outExceptionRecord = first.get();
outExceptionRecord.setStockId(stockByInStockinDetail.getStockId());
outExceptionRecordService.updateOutExceptionRecord(outExceptionRecord);
}else {
//正常库存
list.add(getStockByInStockinDetail(mydoJobDetail, job, "1"));
}
}
//删除异常库存记录
Long[] outExceptionIds = (Long[]) outExceptionRecords.stream().map(OutExceptionRecord::getOutGuid).toArray();
if (outExceptionIds.length>0){
outExceptionRecordService.deleteOutExceptionRecordByOutGuids(outExceptionIds);
}
}
//修改货位状态
basCargoSpace.setStatus("2");
basCargoSpace.setTrayCode(job.getTrayCode());
basCargoSpace.setCargoSpaceId(job.getCargoSpaceId());
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
//插入库存信息
basStockService.insertBasStockList(list);
//修改物料状态
BasStock basStockParam = new BasStock();
basStockParam.setTrayCode(job.getTrayCode());
List<BasStock> basStocks = basStockService.selectBasStockList(basStockParam);
for (BasStock basStock : basStocks) {
basStock.setProductStatus("2");
basStockService.updateBasStock(basStock);
}
//插入历史表
//结束任务
mydoJob.setStatus("4");
updateMydoJob(mydoJob);
// 插入任务历史表 删除任务
insertHistory(mydoJob.getJobId());
return AjaxResult.success();
}else if ("5".equals(job.getInOrOut())){
//料箱盘点入库
MydoJobDetail param = new MydoJobDetail();
param.setJobId(jobId);
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
if (CollUtil.isNotEmpty(mydoJobDetails)) {
List<BasStock> list = new ArrayList<>();
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
list.add(getStockByInStockinDetail(mydoJobDetail, job,"2"));
}
basStockService.insertBasStockList(list);
mydoJob.setStatus("4");
updateMydoJob(mydoJob);
//修改货位
BasCargoSpace basCargoSpace = new BasCargoSpace();
basCargoSpace.setStatus("8");
basCargoSpace.setTrayCode(job.getTrayCode());
basCargoSpace.setCargoSpaceId(job.getCargoSpaceId());
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
//插入历史表
insertHistory(mydoJob.getJobId());
}
return AjaxResult.success();
}else {
//正常入库作业
MydoJobDetail param = new MydoJobDetail();
param.setJobId(jobId);
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(job.getCargoSpaceId());
if (CollUtil.isNotEmpty(mydoJobDetails)) {
List<BasStock> list = new ArrayList<>();
//修改货位
if ("7".equals(basCargoSpace.getStatus())){
//异常待盘点
basCargoSpace.setStatus("7");
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
//修改库存状态为异常
list.add(getStockByInStockinDetail(mydoJobDetail, job,"3"));
}
}else if ("3".equals(basCargoSpace.getStatus())){
//正常入库
basCargoSpace.setStatus("2");
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
//修改库存状态为正常
list.add(getStockByInStockinDetail(mydoJobDetail, job,"1"));
}
}
basCargoSpace.setTrayCode(job.getTrayCode());
basCargoSpace.setCargoSpaceId(job.getCargoSpaceId());
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
basStockService.insertBasStockList(list);
mydoJob.setStatus("4");
updateMydoJob(mydoJob);
//插入历史表
insertHistory(mydoJob.getJobId());
}
return AjaxResult.success();
} else {
return AjaxResult.warn("子任务不存在");
}
}