盘点审核流程修改
This commit is contained in:
@@ -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);
|
||||
@@ -126,39 +131,40 @@ public class CheckDifferenceRecordController extends BaseController {
|
||||
records.add(record);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (CheckDifferenceRecord record : records) {
|
||||
String recordType = String.valueOf(record.getRecordType());
|
||||
|
||||
|
||||
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());
|
||||
queryStock.setQuantity(record.getOldQuantity());
|
||||
List<BasStock> stocks = basStockService.selectBasStockList(queryStock);
|
||||
|
||||
|
||||
if (stocks.isEmpty()) {
|
||||
return AjaxResult.error("没有在库存中找到该条记录:库存ID=" + record.getStockId() + ", 托盘号=" + record.getTrayCode());
|
||||
}
|
||||
|
||||
|
||||
// 更新库存数量和状态
|
||||
BasStock stock = stocks.get(0);
|
||||
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();
|
||||
// 先设置必要字段
|
||||
@@ -175,40 +181,53 @@ public class CheckDifferenceRecordController extends BaseController {
|
||||
extraField.setProductId(record.getProductId());
|
||||
// 物料名称和其他信息会通过关联查询自动填充
|
||||
newStock.setExtraField(extraField);
|
||||
|
||||
|
||||
// 最后设置库存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());
|
||||
queryStock.setTrayCode(record.getTrayCode());
|
||||
List<BasStock> stocks = basStockService.selectBasStockList(queryStock);
|
||||
|
||||
|
||||
if (stocks.isEmpty()) {
|
||||
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);
|
||||
checkDifferenceRecordFinishService.insertCheckDifferenceRecordFinish(finishRecord);
|
||||
|
||||
|
||||
// 删除原记录
|
||||
checkDifferenceRecordService.deleteCheckDifferenceRecordByCheckGuid(record.getCheckGuid());
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -23,4 +23,5 @@ public class TrayCodeMakeSure {
|
||||
private String exitId;
|
||||
//拣选列表
|
||||
private List<MydoJobDetail> mydoJobDetailList;
|
||||
private List<MydoJobDetail> materials;
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user