盘点审核流程修改

This commit is contained in:
liuhanqing
2025-07-23 15:09:22 +08:00
parent 302cddef41
commit cadf2c881c
5 changed files with 47 additions and 32 deletions

View File

@@ -5,7 +5,10 @@ import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.bas.basJobId.service.IBasJobIdService;
import com.ruoyi.bas.warehouse.domain.BasWarehouse;
import com.ruoyi.bas.warehouse.service.IBasWarehouseService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.BeanUtils;
@@ -42,6 +45,8 @@ import com.ruoyi.common.core.page.TableDataInfo;
public class CheckDifferenceRecordController extends BaseController {
@Autowired
private ICheckDifferenceRecordService checkDifferenceRecordService;
@Autowired
private IBasWarehouseService basWarehouseService;
/**
* 查询盘点差异列表
@@ -111,14 +116,14 @@ public class CheckDifferenceRecordController extends BaseController {
private ICheckDifferenceRecordFinishService checkDifferenceRecordFinishService;
@Autowired
private IBasJobIdService basJobIdService;
/**
* 审核盘点差异
*/
@PreAuthorize("@ss.hasPermi('check:difference:audit')")
@Log(title = "盘点差异", businessType = BusinessType.UPDATE)
@PutMapping("/audit")
public AjaxResult audit(@RequestBody String[] checkGuids)
{
public AjaxResult audit(@RequestBody String[] checkGuids) {
List<CheckDifferenceRecord> records = new ArrayList<>();
for (String checkGuid : checkGuids) {
CheckDifferenceRecord record = checkDifferenceRecordService.selectCheckDifferenceRecordByCheckGuid(checkGuid);
@@ -132,6 +137,13 @@ public class CheckDifferenceRecordController extends BaseController {
if ("1".equals(recordType)) { // 更新数据
// 根据stockId、trayCode、oldQuantity查找库存记录
if (StrUtil.isEmpty(record.getStockId())) {
return AjaxResult.error("没有找到该库存ID:" + record.getStockId());
}
if (StrUtil.isEmpty(record.getTrayCode())) {
return AjaxResult.error("没有找到该托盘号:" + record.getTrayCode());
}
BasStock queryStock = new BasStock();
queryStock.setStockId(record.getStockId());
queryStock.setTrayCode(record.getTrayCode());
@@ -147,18 +159,12 @@ public class CheckDifferenceRecordController extends BaseController {
stock.setQuantity(record.getNewQuantity());
stock.setProductStatus("1");
basStockService.updateBasStock(stock);
}
else if ("2".equals(recordType)) { // 新增数据
} else if ("2".equals(recordType)) { // 新增数据
// 检查物料ID是否存在
if (record.getProductId() == null || record.getProductId().trim().isEmpty()) {
return AjaxResult.error("物料ID不能为空");
}
// 检查库存是否已存在
BasStock queryStock = new BasStock();
queryStock.setStockId(record.getStockId());
queryStock.setTrayCode(record.getTrayCode());
List<BasStock> stocks = basStockService.selectBasStockList(queryStock);
// 创建新的库存记录
BasStock newStock = new BasStock();
// 先设置必要字段
@@ -179,8 +185,7 @@ public class CheckDifferenceRecordController extends BaseController {
// 最后设置库存ID
newStock.setStockId(basJobIdService.getJobId("KC"));
basStockService.insertBasStock(newStock);
}
else if ("3".equals(recordType)) { // 删除数据
} else if ("3".equals(recordType)) { // 删除数据
// 检查要删除的库存是否存在
BasStock queryStock = new BasStock();
queryStock.setStockId(record.getStockId());
@@ -191,15 +196,27 @@ public class CheckDifferenceRecordController extends BaseController {
return AjaxResult.error("没有在库存中找到该条记录:库存ID=" + record.getStockId() + ", 托盘号=" + record.getTrayCode());
}
basStockService.deleteBasStockByStockId(record.getStockId());
//查询该料箱是否存在库存 如果不存在 则创建空料箱库存
BasStock queryStock2 = new BasStock();
queryStock2.setTrayCode(record.getTrayCode());
List<BasStock> stocks2 = basStockService.selectBasStockList(queryStock2);
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(record.getWarehouseId());
if (stocks2.isEmpty() && ("1".equals(basWarehouse.getWarehouseType()) || "2".equals(basWarehouse.getWarehouseType()))) {
BasStock basStock = stocks.get(0);
basStock.setProductId("KTP000001");
basStock.setProductGuid("KTP000001");
basStock.setQuantity("1");
basStock.setStockStatus("1");
basStockService.insertBasStock(basStock);
}
}
// 设置审核状态为已审核
record.setStatus("1");
// 创建历史记录前先检查是否已存在
CheckDifferenceRecordFinish queryFinish = checkDifferenceRecordFinishService.selectCheckDifferenceRecordFinishByCheckGuid(record.getCheckGuid());
// 创建历史记录
CheckDifferenceRecordFinish finishRecord = new CheckDifferenceRecordFinish();
BeanUtils.copyProperties(record, finishRecord);
@@ -207,6 +224,8 @@ public class CheckDifferenceRecordController extends BaseController {
// 删除原记录
checkDifferenceRecordService.deleteCheckDifferenceRecordByCheckGuid(record.getCheckGuid());
}
return AjaxResult.success();

View File

@@ -334,11 +334,6 @@ public class MydoJobServiceImpl implements IMydoJobService {
checkDifferenceRecordParam.setWarehouseId(job.getWarehouseId());
List<CheckDifferenceRecord> checkDifferenceRecords = checkDifferenceRecordService.selectCheckDifferenceRecordList(checkDifferenceRecordParam);
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
//修改单据实际数量
String inOrOutDId = mydoJobDetail.getInOrOutDId();
InStockinDetail inStockinDetail = inStockinDetailService.selectInStockinDetailByStockinDetailId(inOrOutDId);
inStockinDetail.setAssignNum(Convert.toStr(Convert.toBigDecimal(inStockinDetail.getAssignNum()).add(Convert.toBigDecimal(mydoJobDetail.getInQuantity()))));
inStockinDetailService.updateInStockinDetail(inStockinDetail);
//如果存在盘点异常信息 根据托盘条码和物料id 筛选异常信息
Optional<CheckDifferenceRecord> first = checkDifferenceRecords.stream().filter(x -> x.getTrayCode().equals(job.getTrayCode()) && x.getProductId().equals(mydoJobDetail.getProductId())).findFirst();
if (first.isPresent()) {

View File

@@ -23,4 +23,5 @@ public class TrayCodeMakeSure {
private String exitId;
//拣选列表
private List<MydoJobDetail> mydoJobDetailList;
private List<MydoJobDetail> materials;
}

View File

@@ -401,7 +401,7 @@ public class PdaServiceImp implements PdaService {
return AjaxResult.warn("任务不存在");
}
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(mydoJob.getWarehouseId());
List<MydoJobDetail> mydoJobDetailList = trayCodeMakeSure.getMydoJobDetailList();
List<MydoJobDetail> mydoJobDetailList = trayCodeMakeSure.getMaterials();
if (CollUtil.isNotEmpty(mydoJobDetailList)) {
boolean flag = mydoJobDetailList.stream().anyMatch(x -> StrUtil.isEmpty(x.getStockId()) && "0".equals(x.getInQuantity()));
if (flag) {

View File

@@ -227,6 +227,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectByTrayCode" resultMap="MydoJobResult">
<include refid="selectMydoJobVo"/>
where tray_code = #{trayCode}
where mj.tray_code = #{trayCode}
</select>
</mapper>