修改bug
This commit is contained in:
@@ -68,7 +68,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
* 查询钢卷物料表
|
* 查询钢卷物料表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public WmsMaterialCoilVo queryById(Long coilId){
|
public WmsMaterialCoilVo queryById(Long coilId) {
|
||||||
WmsMaterialCoilVo vo = baseMapper.selectVoById(coilId);
|
WmsMaterialCoilVo vo = baseMapper.selectVoById(coilId);
|
||||||
if (vo == null) {
|
if (vo == null) {
|
||||||
return null;
|
return null;
|
||||||
@@ -79,8 +79,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
// 根据入场钢卷号查找当前数据
|
// 根据入场钢卷号查找当前数据
|
||||||
LambdaQueryWrapper<WmsMaterialCoil> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<WmsMaterialCoil> lqw = Wrappers.lambdaQuery();
|
||||||
lqw.eq(WmsMaterialCoil::getEnterCoilNo, vo.getEnterCoilNo())
|
lqw.eq(WmsMaterialCoil::getEnterCoilNo, vo.getEnterCoilNo())
|
||||||
.eq(WmsMaterialCoil::getDataType, 1) // 查找当前数据
|
.eq(WmsMaterialCoil::getDataType, 1) // 查找当前数据
|
||||||
.orderByDesc(WmsMaterialCoil::getCreateTime); // 按创建时间倒序,获取最新的
|
.orderByDesc(WmsMaterialCoil::getCreateTime); // 按创建时间倒序,获取最新的
|
||||||
|
|
||||||
List<WmsMaterialCoilVo> currentDataList = baseMapper.selectVoList(lqw);
|
List<WmsMaterialCoilVo> currentDataList = baseMapper.selectVoList(lqw);
|
||||||
if (!currentDataList.isEmpty()) {
|
if (!currentDataList.isEmpty()) {
|
||||||
@@ -136,7 +136,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
if ("product".equals(vo.getItemType()) && vo.getItemId() != null) {
|
if ("product".equals(vo.getItemType()) && vo.getItemId() != null) {
|
||||||
// 产品和原材料的查询逻辑相同,都通过itemId查询
|
// 产品和原材料的查询逻辑相同,都通过itemId查询
|
||||||
WmsRawMaterialVo rawMaterial = rawMaterialService.queryById(vo.getItemId());
|
WmsRawMaterialVo rawMaterial = rawMaterialService.queryById(vo.getItemId());
|
||||||
|
|
||||||
// 查询原材料对应的BOM信息(通过bomId查询BomItem列表)
|
// 查询原材料对应的BOM信息(通过bomId查询BomItem列表)
|
||||||
if (rawMaterial != null && rawMaterial.getBomId() != null) {
|
if (rawMaterial != null && rawMaterial.getBomId() != null) {
|
||||||
WmsBomItemBo bomItemBo = new WmsBomItemBo();
|
WmsBomItemBo bomItemBo = new WmsBomItemBo();
|
||||||
@@ -189,11 +189,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
Long qrcodeRecordId = generateQrcodeForInsert(bo);
|
Long qrcodeRecordId = generateQrcodeForInsert(bo);
|
||||||
bo.setQrcodeRecordId(qrcodeRecordId);
|
bo.setQrcodeRecordId(qrcodeRecordId);
|
||||||
|
|
||||||
// 2. 如果warehouseId为空,查找或创建stock
|
// 2. 查找或创建stock
|
||||||
if (bo.getWarehouseId() == null) {
|
Long warehouseId = findOrCreateStock(bo);
|
||||||
Long warehouseId = findOrCreateStock(bo);
|
bo.setWarehouseId(warehouseId);
|
||||||
bo.setWarehouseId(warehouseId);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. 插入钢卷数据
|
// 3. 插入钢卷数据
|
||||||
WmsMaterialCoil add = BeanUtil.toBean(bo, WmsMaterialCoil.class);
|
WmsMaterialCoil add = BeanUtil.toBean(bo, WmsMaterialCoil.class);
|
||||||
@@ -269,7 +268,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
throw new RuntimeException("物品类型和物品ID不能为空");
|
throw new RuntimeException("物品类型和物品ID不能为空");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询是否存在相同的stock
|
// 查询是否存在相同的stock(匹配itemType和itemId)
|
||||||
WmsStockBo stockBo = new WmsStockBo();
|
WmsStockBo stockBo = new WmsStockBo();
|
||||||
stockBo.setItemType(bo.getItemType());
|
stockBo.setItemType(bo.getItemType());
|
||||||
stockBo.setItemId(bo.getItemId());
|
stockBo.setItemId(bo.getItemId());
|
||||||
@@ -279,13 +278,21 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
// 如果找到相同的stock,返回第一个的warehouseId
|
// 如果找到相同的stock,返回第一个的warehouseId
|
||||||
return stockList.get(0).getWarehouseId();
|
return stockList.get(0).getWarehouseId();
|
||||||
} else {
|
} else {
|
||||||
// 如果没有找到,创建一个新的stock
|
// 如果没有找到匹配的stock,新增一条stock记录
|
||||||
WmsStock newStock = new WmsStock();
|
WmsStockBo newStockBo = new WmsStockBo();
|
||||||
newStock.setItemType(bo.getItemType());
|
newStockBo.setItemType(bo.getItemType());
|
||||||
newStock.setItemId(bo.getItemId());
|
newStockBo.setItemId(bo.getItemId());
|
||||||
// 新创建的stock没有指定warehouse,可以为null
|
// 如果有指定warehouseId,使用指定的;否则为null
|
||||||
stockMapper.insert(newStock);
|
if (bo.getWarehouseId() != null) {
|
||||||
return newStock.getWarehouseId();
|
newStockBo.setWarehouseId(bo.getWarehouseId());
|
||||||
|
}
|
||||||
|
// 调用stockService新增stock
|
||||||
|
Boolean insertResult = stockService.insertByBo(newStockBo);
|
||||||
|
if (!insertResult) {
|
||||||
|
throw new RuntimeException("新增库存记录失败");
|
||||||
|
}
|
||||||
|
// 返回新创建的stock的warehouseId
|
||||||
|
return newStockBo.getWarehouseId();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -353,7 +360,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
// 2. 将原数据更新为历史数据(data_type=0)
|
// 2. 将原数据更新为历史数据(data_type=0)
|
||||||
LambdaUpdateWrapper<WmsMaterialCoil> updateWrapper = new LambdaUpdateWrapper<>();
|
LambdaUpdateWrapper<WmsMaterialCoil> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
updateWrapper.eq(WmsMaterialCoil::getCoilId, bo.getCoilId())
|
updateWrapper.eq(WmsMaterialCoil::getCoilId, bo.getCoilId())
|
||||||
.set(WmsMaterialCoil::getDataType, 0); // 设置为历史数据
|
.set(WmsMaterialCoil::getDataType, 0); // 设置为历史数据
|
||||||
baseMapper.update(null, updateWrapper);
|
baseMapper.update(null, updateWrapper);
|
||||||
|
|
||||||
// 3. 插入一条新的当前数据(data_type=1)
|
// 3. 插入一条新的当前数据(data_type=1)
|
||||||
@@ -419,7 +426,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
if (bo.getCoilId() != null) {
|
if (bo.getCoilId() != null) {
|
||||||
LambdaUpdateWrapper<WmsMaterialCoil> updateWrapper = new LambdaUpdateWrapper<>();
|
LambdaUpdateWrapper<WmsMaterialCoil> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
updateWrapper.eq(WmsMaterialCoil::getCoilId, bo.getCoilId())
|
updateWrapper.eq(WmsMaterialCoil::getCoilId, bo.getCoilId())
|
||||||
.set(WmsMaterialCoil::getDataType, 0); // 设置为历史数据
|
.set(WmsMaterialCoil::getDataType, 0); // 设置为历史数据
|
||||||
baseMapper.update(null, updateWrapper);
|
baseMapper.update(null, updateWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -440,33 +447,33 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
|
|
||||||
// 1. 将原始钢卷更新为历史数据(已在上面完成)
|
// 1. 将原始钢卷更新为历史数据(已在上面完成)
|
||||||
|
|
||||||
// 2. 为每个分卷后的子钢卷生成独立的二维码并插入数据库
|
// 2. 为每个分卷后的子钢卷生成独立的二维码并插入数据库
|
||||||
for (WmsMaterialCoilBo newCoilBo : bo.getNewCoils()) {
|
for (WmsMaterialCoilBo newCoilBo : bo.getNewCoils()) {
|
||||||
WmsMaterialCoil newCoil = BeanUtil.toBean(newCoilBo, WmsMaterialCoil.class);
|
WmsMaterialCoil newCoil = BeanUtil.toBean(newCoilBo, WmsMaterialCoil.class);
|
||||||
newCoil.setCoilId(null);
|
newCoil.setCoilId(null);
|
||||||
newCoil.setDataType(1);
|
newCoil.setDataType(1);
|
||||||
// 继承原钢卷的基本信息
|
// 继承原钢卷的基本信息
|
||||||
newCoil.setEnterCoilNo(oldCoil.getEnterCoilNo());
|
newCoil.setEnterCoilNo(oldCoil.getEnterCoilNo());
|
||||||
newCoil.setSupplierCoilNo(oldCoil.getSupplierCoilNo()); // 保留厂家原料卷号
|
newCoil.setSupplierCoilNo(oldCoil.getSupplierCoilNo()); // 保留厂家原料卷号
|
||||||
newCoil.setItemType(oldCoil.getItemType());
|
newCoil.setItemType(oldCoil.getItemType());
|
||||||
newCoil.setItemId(oldCoil.getItemId());
|
newCoil.setItemId(oldCoil.getItemId());
|
||||||
newCoil.setTeam(oldCoil.getTeam());
|
newCoil.setTeam(oldCoil.getTeam());
|
||||||
// 如果没有指定库区,使用原库区
|
// 如果没有指定库区,使用原库区
|
||||||
if (newCoil.getWarehouseId() == null) {
|
if (newCoil.getWarehouseId() == null) {
|
||||||
newCoil.setWarehouseId(oldCoil.getWarehouseId());
|
newCoil.setWarehouseId(oldCoil.getWarehouseId());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 为每个子钢卷生成独立二维码
|
// 为每个子钢卷生成独立二维码
|
||||||
Long newQrcodeId = generateQrcodeForSplit(oldCoil, newCoilBo, allNewCoilNos);
|
Long newQrcodeId = generateQrcodeForSplit(oldCoil, newCoilBo, allNewCoilNos);
|
||||||
newCoil.setQrcodeRecordId(newQrcodeId);
|
newCoil.setQrcodeRecordId(newQrcodeId);
|
||||||
|
|
||||||
validEntityBeforeSave(newCoil);
|
validEntityBeforeSave(newCoil);
|
||||||
baseMapper.insert(newCoil);
|
baseMapper.insert(newCoil);
|
||||||
newCoils.add(newCoil);
|
newCoils.add(newCoil);
|
||||||
|
|
||||||
// 更新二维码内容中的coilId
|
// 更新二维码内容中的coilId
|
||||||
updateQrcodeCoilId(newQrcodeId, newCoil.getCoilId());
|
updateQrcodeCoilId(newQrcodeId, newCoil.getCoilId());
|
||||||
}
|
}
|
||||||
} else if (isMerge) {
|
} else if (isMerge) {
|
||||||
// 合卷:将bo作为合卷后的新钢卷,newCoils中的对象作为参与合卷的原始钢卷
|
// 合卷:将bo作为合卷后的新钢卷,newCoils中的对象作为参与合卷的原始钢卷
|
||||||
// 1. 将参与合卷的原始钢卷更新为历史数据
|
// 1. 将参与合卷的原始钢卷更新为历史数据
|
||||||
@@ -474,7 +481,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
if (originalCoilBo.getCoilId() != null) {
|
if (originalCoilBo.getCoilId() != null) {
|
||||||
LambdaUpdateWrapper<WmsMaterialCoil> originalUpdateWrapper = new LambdaUpdateWrapper<>();
|
LambdaUpdateWrapper<WmsMaterialCoil> originalUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||||
originalUpdateWrapper.eq(WmsMaterialCoil::getCoilId, originalCoilBo.getCoilId())
|
originalUpdateWrapper.eq(WmsMaterialCoil::getCoilId, originalCoilBo.getCoilId())
|
||||||
.set(WmsMaterialCoil::getDataType, 0); // 设置为历史数据
|
.set(WmsMaterialCoil::getDataType, 0); // 设置为历史数据
|
||||||
baseMapper.update(null, originalUpdateWrapper);
|
baseMapper.update(null, originalUpdateWrapper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -672,6 +679,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
throw new RuntimeException("生成合卷二维码失败: " + e.getMessage());
|
throw new RuntimeException("生成合卷二维码失败: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新二维码内容中的coilId
|
* 更新二维码内容中的coilId
|
||||||
*/
|
*/
|
||||||
@@ -766,7 +774,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
/**
|
/**
|
||||||
* 保存前的数据校验
|
* 保存前的数据校验
|
||||||
*/
|
*/
|
||||||
private void validEntityBeforeSave(WmsMaterialCoil entity){
|
private void validEntityBeforeSave(WmsMaterialCoil entity) {
|
||||||
//TODO 做一些数据校验,如唯一约束
|
//TODO 做一些数据校验,如唯一约束
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -775,7 +783,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||||
if(isValid){
|
if (isValid) {
|
||||||
//TODO 做一些业务上的校验,判断是否需要校验
|
//TODO 做一些业务上的校验,判断是否需要校验
|
||||||
}
|
}
|
||||||
return baseMapper.deleteBatchIds(ids) > 0;
|
return baseMapper.deleteBatchIds(ids) > 0;
|
||||||
@@ -785,7 +793,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
* 钢卷溯源查询
|
* 钢卷溯源查询
|
||||||
* 根据入场钢卷号查询二维码,解析content中的steps,然后根据steps中的钢卷号反向查询数据库
|
* 根据入场钢卷号查询二维码,解析content中的steps,然后根据steps中的钢卷号反向查询数据库
|
||||||
*
|
*
|
||||||
* @param enterCoilNo 入场钢卷号
|
* @param enterCoilNo 入场钢卷号
|
||||||
* @param currentCoilNo 当前钢卷号(可选,用于查询特定子钢卷)
|
* @param currentCoilNo 当前钢卷号(可选,用于查询特定子钢卷)
|
||||||
* @return 溯源结果(包含二维码信息和数据库记录)
|
* @return 溯源结果(包含二维码信息和数据库记录)
|
||||||
*/
|
*/
|
||||||
@@ -1013,7 +1021,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
* 按库区分组,统计每种物品类型和物品ID的钢卷数量和重量
|
* 按库区分组,统计每种物品类型和物品ID的钢卷数量和重量
|
||||||
*
|
*
|
||||||
* @param itemType 物品类型(可选)
|
* @param itemType 物品类型(可选)
|
||||||
* @param itemId 物品ID(可选)
|
* @param itemId 物品ID(可选)
|
||||||
* @return 分布情况列表,包含库区信息、物品类型、物品ID、数量、重量等
|
* @return 分布情况列表,包含库区信息、物品类型、物品ID、数量、重量等
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@@ -1027,7 +1035,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
* 按物品类型和物品ID分组,统计每个库区的钢卷数量和重量
|
* 按物品类型和物品ID分组,统计每个库区的钢卷数量和重量
|
||||||
*
|
*
|
||||||
* @param itemType 物品类型(可选)
|
* @param itemType 物品类型(可选)
|
||||||
* @param itemId 物品ID(可选)
|
* @param itemId 物品ID(可选)
|
||||||
* @return 分布情况列表,包含物品类型、物品ID、库区信息、数量、重量等
|
* @return 分布情况列表,包含物品类型、物品ID、库区信息、数量、重量等
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user