采购物料入库确认空指针错误修改

This commit is contained in:
yf001217 2026-03-31 14:22:23 +08:00
parent 6e6d36fa07
commit 38a9d0471f
1 changed files with 68 additions and 13 deletions

View File

@ -10,6 +10,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.DigestUtil;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.nflg.wms.admin.pojo.dto.*;
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
import com.nflg.wms.admin.repository.SrmMaterialReceiptNoScanCodesRepository;
@ -125,6 +126,7 @@ public class NormalPGIController extends BaseController {
/**
* 送货单列表
*
* @param request
* @return
*/
@ -136,6 +138,7 @@ public class NormalPGIController extends BaseController {
/**
* 送货单详情
*
* @param orderId 订单ID
* @return
*/
@ -152,6 +155,7 @@ public class NormalPGIController extends BaseController {
/**
* 获取扫码的详情信息
*
* @param orderItemId 订单项ID
* @return
*/
@ -166,6 +170,7 @@ public class NormalPGIController extends BaseController {
/**
* 扫描送货单号获取送货单详情PDA
*
* @param orderNo 送货单号
* @return
*/
@ -179,6 +184,7 @@ public class NormalPGIController extends BaseController {
/**
* 收货确认(PDA使用)
*
* @param request
* @return
*/
@ -315,6 +321,7 @@ public class NormalPGIController extends BaseController {
/**
* 普通物料的上架任务PDA
*
* @param orederNo 送货单号或是任务单号
* @return
*/
@ -342,6 +349,7 @@ public class NormalPGIController extends BaseController {
/**
* 采购物料入库确认PDA
*
* @param request
* @return
*/
@ -470,12 +478,34 @@ public class NormalPGIController extends BaseController {
.setSERNR(code.getSerialNumbers()));
scanCodes.add(code);
WmsQrCodeMaster wmsQrCodeMaster = new WmsQrCodeMaster()
// WmsQrCodeMaster wmsQrCodeMaster = new WmsQrCodeMaster()
// .setBarcodeCode(code.getCodeId())
// .setBarcodeType((short) 1)
// .setProcessStage(BarCodeProcessStage.InBound.getState())
// .setLastScanBy(UserUtil.getUserId())
// .setLastScanByname(UserUtil.getUserName())
// .setLastScanTime(LocalDateTime.now());
WmsQrCodeMaster wmsQrCodeMaster = new WmsQrCodeMaster();
WmsQrCodeMaster existCode = qrCodeMasterService.lambdaQuery()
.eq(WmsQrCodeMaster::getBarcodeCode, code.getCodeId())
.one();
if (existCode != null) {
wmsQrCodeMaster = existCode;
} else {
wmsQrCodeMaster.setId(IdWorker.getId());
}
wmsQrCodeMaster
.setBarcodeCode(code.getCodeId())
.setBarcodeType((short) 1)
.setMaterialCode(item.getItemCode())
.setMaterialDescription(item.getItemName())
.setProcessStage(BarCodeProcessStage.InBound.getState())
.setReceiptItemId(item.getId())
.setLastScanBy(UserUtil.getUserId())
.setLastScanByname(UserUtil.getUserName())
.setLastScanTime(LocalDateTime.now());
qrCodeMasters.add(wmsQrCodeMaster);
if (CollectionUtil.isNotEmpty(qo.getItems())) {
InCostCenterBackSubmitItemQRQO qrqo = qo.getItems()
@ -517,13 +547,26 @@ public class NormalPGIController extends BaseController {
// .filter(qrCode -> qrCode.getPackagingType() == 1)
.filter(qrCode -> qrCode.getPackagingType() != null && qrCode.getPackagingType() == 1)
.toList();
List<WmsQrCodeMaster> children = qrCodeMasterService.lambdaQuery()
.in(WmsQrCodeMaster::getParentBarcodeId, parents
.stream()
// List<WmsQrCodeMaster> children = qrCodeMasterService.lambdaQuery()
// .in(WmsQrCodeMaster::getParentBarcodeId, parents
// .stream()
// .map(WmsQrCodeMaster::getId)
// .toList()
// )
// .list();
List<WmsQrCodeMaster> children;
if (CollectionUtil.isNotEmpty(parents)) {
children = qrCodeMasterService.lambdaQuery()
.in(WmsQrCodeMaster::getParentBarcodeId,
parents.stream()
.map(WmsQrCodeMaster::getId)
.toList()
)
.list();
} else {
children = new ArrayList<>();
}
parents.forEach(p -> {
children.stream()
@ -540,7 +583,8 @@ public class NormalPGIController extends BaseController {
});
});
qrCodeMasters.addAll(children);
qrCodeMasterService.updateBarCode(qrCodeMasters);
// qrCodeMasterService.updateBarCode(qrCodeMasters);
qrCodeMasterService.saveOrUpdateBatch(qrCodeMasters);
}
normalPGIControllerService.takeDeliveryConfirm(receiptItems, storageLocationDTOS, inventories, zwm3A17DTOS, request.getTaskId(), scanCodes);
return ApiResult.success();
@ -565,6 +609,7 @@ public class NormalPGIController extends BaseController {
/**
* 收货直接入库的未启用储位管理
*
* @return
*/
private void setPoReceiveByIn(SrmMaterialReceiptQO item,
@ -814,6 +859,7 @@ public class NormalPGIController extends BaseController {
/**
* 一键收货查询
*
* @param request
* @return
*/
@ -867,7 +913,7 @@ public class NormalPGIController extends BaseController {
order.getSupplierNum(),
item.getItemCode(), item.getPoLineNumber());
VUtil.trueThrowBusinessError(Objects.isNull(materialInfoInOrder)).throwMessage("当前物料信息【" + item.getItemCode() + "】,订单号【" + item.getPoNum() + "】,供应商【" + order.getSupplierName() + "】在SAP中搜索不到有效信息");
String batchNumber =NoUtil.getBatchNo(order.getSupplierNum());
String batchNumber = NoUtil.getBatchNo(order.getSupplierNum());
/*
(materialInfoInOrder.getLbprt().equals("2")
|| materialInfoInOrder.getLbprt().equals("4")) ? NoUtil.getBatchNo(order.getSupplierNum()) : "";
@ -990,6 +1036,7 @@ public class NormalPGIController extends BaseController {
/**
* 一键收货无码
*
* @param request
* @return
*/
@ -1101,6 +1148,7 @@ public class NormalPGIController extends BaseController {
/**
* 采购物料上架确认无码
*
* @param request
* @return
*/
@ -1333,7 +1381,7 @@ public class NormalPGIController extends BaseController {
items.forEach(item -> {
RLock lock = redissonClient.getLock(StrUtil.format("lock:inventory:{}:{}:{}", item.getDwerk(), item.getLgort2(), item.getMatnr()));
try {
Long itemId=IdUtil.getSnowflakeNextId();
Long itemId = IdUtil.getSnowflakeNextId();
// 等待5秒获取锁10秒后自动释放
if (lock.tryLock(5, 10, TimeUnit.SECONDS)) {
WmsOutProduceItem data = Convert.convert(WmsOutProduceItem.class, item);
@ -1345,13 +1393,13 @@ public class NormalPGIController extends BaseController {
} else {
throw new NflgException(STATE.BusinessError, "获取锁失败");
}
WmsOutProduceTicketItem ticketItem=new WmsOutProduceTicketItem()
WmsOutProduceTicketItem ticketItem = new WmsOutProduceTicketItem()
.setId(IdUtil.getSnowflakeNextId())
.setTicketId(ticket.getId())
.setProduceItemId(itemId)
.setNum(item.getSqsl());
ticketItems.add(ticketItem);
item.getQrCodes().forEach(qr->{
item.getQrCodes().forEach(qr -> {
WmsQrCodeMaster qrCodeMaster = qrCodeMasters.stream()
.filter(qit -> qit.getBarcodeCode().equals(qr.getCodeId()))
.findFirst()
@ -1401,6 +1449,7 @@ public class NormalPGIController extends BaseController {
/**
* 通过打包码获取到打包码的信息
*
* @param request
* @return
*/
@ -1419,6 +1468,7 @@ public class NormalPGIController extends BaseController {
/**
* 获取打包码对应的送货单信息
*
* @param request
* @return
*/
@ -1431,6 +1481,7 @@ public class NormalPGIController extends BaseController {
/**
* 根据送货单单号和大码的ID获取到具体的物料信息
*
* @param request
* @return
*/
@ -1443,6 +1494,7 @@ public class NormalPGIController extends BaseController {
/**
* 根据送货单单号和大码的ID获取到具体的物料信息
*
* @param request id= 大码的ID
* @return
*/
@ -1464,6 +1516,7 @@ public class NormalPGIController extends BaseController {
/**
* 通过打包码获取到物料信息
*
* @param request
* @return
*/
@ -1482,6 +1535,7 @@ public class NormalPGIController extends BaseController {
/**
* 确认收货(无需扫码)
*
* @param request
* @return
*/
@ -1684,6 +1738,7 @@ public class NormalPGIController extends BaseController {
/**
* 确认收货(需扫码)
*
* @param request
* @return
*/