feat(wms): 支持通过订单号查询无码操作功能

- 在多个控制器的 getListForNoScan 方法中添加订单号参数支持
- 修改数据库查询逻辑从 getById 改为 lambdaQuery 条件查询
- 新增 NoScanningRequest 类添加订单号字段
- 更新 Service 层接口和实现类添加订单号查询方法
- 完善 SRMController 中的日志记录和错误处理
- 修复转储和调拨相关的无码操作查询逻辑
This commit is contained in:
曹鹏飞 2026-06-03 14:55:22 +08:00
parent ee7568d987
commit 4f1980eb0f
22 changed files with 223 additions and 61 deletions

View File

@ -407,10 +407,15 @@ public class ComponentOutboundController extends BaseController {
/**
* 获取可无码发货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScan")
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam Long orderId) {
WmsComponentPacking order = wmscomponentPackingService.getById(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
WmsComponentPacking order = wmscomponentPackingService.lambdaQuery()
.eq(Objects.nonNull(orderId), WmsComponentPacking::getId, orderId)
.eq(StrUtil.isNotBlank(no), WmsComponentPacking::getNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<WmsComponentPackingItem> items = wmsComponentPackingItemService.lambdaQuery()
.eq(WmsComponentPackingItem::getPackingId, orderId)
@ -439,7 +444,10 @@ public class ComponentOutboundController extends BaseController {
@Transactional
@PostMapping("pda/confirmNoScanning")
public ApiResult<Void> confirmPdaNoScanning(@Valid @RequestBody NoScanningRequest request) {
WmsComponentPacking packing = wmscomponentPackingService.getById(request.getId());
WmsComponentPacking packing = wmscomponentPackingService.lambdaQuery()
.eq(Objects.nonNull(request.getId()), WmsComponentPacking::getId, request.getId())
.eq(StrUtil.isNotBlank(request.getNo()), WmsComponentPacking::getNo, request.getNo())
.one();
VUtil.trueThrowBusinessError(Objects.isNull(packing)).throwMessage("此装箱单不存在");
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request.getItems())).throwMessage("无发货详情信息");

View File

@ -206,10 +206,15 @@ public class InCostCenterBackController extends BaseController {
/**
* 获取可无码收货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScan")
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam Long orderId) {
WmsInCostcenterBack order = inCostcenterBackService.getById(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
WmsInCostcenterBack order = inCostcenterBackService.lambdaQuery()
.eq(Objects.nonNull(orderId), WmsInCostcenterBack::getId, orderId)
.eq(StrUtil.isNotBlank(no), WmsInCostcenterBack::getNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<WmsInCostcenterBackItem> items = inCostcenterBackItemService.lambdaQuery()
.eq(WmsInCostcenterBackItem::getOrderId, orderId)
@ -241,7 +246,10 @@ public class InCostCenterBackController extends BaseController {
VUtil.trueThrowBusinessError(noScanningBaseControllerService.existsQrCode(data.getMaterialNo()))
.throwMessage("物料" + data.getMaterialNo() + "已生成二维码不支持无码收货")
);
WmsInCostcenterBack order = inCostcenterBackService.getById(request.getId());
WmsInCostcenterBack order = inCostcenterBackService.lambdaQuery()
.eq(Objects.nonNull(request.getId()), WmsInCostcenterBack::getId, request.getId())
.eq(StrUtil.isNotBlank(request.getNo()), WmsInCostcenterBack::getNo, request.getNo())
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
VUtil.trueThrowBusinessError(Objects.equals(order.getState(), 2)).throwMessage("该订单已完成");
WmsInCostcenterBackTicket ticket = new WmsInCostcenterBackTicket()

View File

@ -215,10 +215,15 @@ public class InProduceBackController extends BaseController {
/**
* 获取可无码收货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScan")
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam Long orderId) {
WmsInProduceBack order = inProduceBackService.getById(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
WmsInProduceBack order = inProduceBackService.lambdaQuery()
.eq(Objects.nonNull(orderId), WmsInProduceBack::getId, orderId)
.eq(StrUtil.isNotBlank(no), WmsInProduceBack::getNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<WmsInProduceBackItem> items = inProduceBackItemService.lambdaQuery()
.eq(WmsInProduceBackItem::getOrderId, orderId)
@ -250,7 +255,10 @@ public class InProduceBackController extends BaseController {
VUtil.trueThrowBusinessError(noScanningBaseControllerService.existsQrCode(data.getMaterialNo()))
.throwMessage("物料" + data.getMaterialNo() + "已生成二维码不支持无码收货")
);
WmsInProduceBack order = inProduceBackService.getById(request.getId());
WmsInProduceBack order = inProduceBackService.lambdaQuery()
.eq(Objects.nonNull(request.getId()), WmsInProduceBack::getId, request.getId())
.eq(StrUtil.isNotBlank(request.getNo()), WmsInProduceBack::getNo, request.getNo())
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
WmsInProduceBackTicket ticket = new WmsInProduceBackTicket()
.setNo(serialNumberControllerService.generateSerialNumber(13))

View File

@ -421,10 +421,15 @@ public class InProduceOrderController extends BaseController {
/**
* 获取可无码收货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScan")
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam Long orderId) {
WmsInProduceOrder order = produceOrderService.getById(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
WmsInProduceOrder order = produceOrderService.lambdaQuery()
.eq(Objects.nonNull(orderId), WmsInProduceOrder::getId, orderId)
.eq(StrUtil.isNotBlank(no), WmsInProduceOrder::getNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<WmsInProduceOrderItem> items = produceOrderItemService.lambdaQuery()
.eq(WmsInProduceOrderItem::getOrderId, orderId)
@ -457,7 +462,10 @@ public class InProduceOrderController extends BaseController {
VUtil.trueThrowBusinessError(noScanningBaseControllerService.existsQrCode(data.getMaterialNo()))
.throwMessage("物料" + data.getMaterialNo() + "已生成二维码不支持无码收货")
);
WmsInProduceOrder order = produceOrderService.getById(request.getId());
WmsInProduceOrder order = produceOrderService.lambdaQuery()
.eq(Objects.nonNull(request.getId()), WmsInProduceOrder::getId, request.getId())
.eq(StrUtil.isNotBlank(request.getNo()), WmsInProduceOrder::getNo, request.getNo())
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
VUtil.trueThrowBusinessError(!Objects.equals(order.getState(), (short) 0))
.throwMessage("该订单非待收货状态");

View File

@ -480,25 +480,30 @@ public class InProduceOrderSurplusController extends BaseController {
/**
* 获取可无码收货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScan")
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam Long orderId) {
WmsInProduceOrder order = produceOrderService.getById(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
WmsInProduceOrderSurplus order = inProduceOrderSurplusService.lambdaQuery()
.eq(Objects.nonNull(orderId), WmsInProduceOrderSurplus::getId, orderId)
.eq(StrUtil.isNotBlank(no), WmsInProduceOrderSurplus::getNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<WmsInProduceOrderItem> items = produceOrderItemService.lambdaQuery()
.eq(WmsInProduceOrderItem::getOrderId, orderId)
List<WmsInProduceOrderSurplusItem> items = inProduceOrderSurplusItemService.lambdaQuery()
.eq(WmsInProduceOrderSurplusItem::getOrderId, orderId)
.list();
items.removeIf(item -> item.getNum().compareTo(BigDecimal.ZERO) <= 0
|| noScanningBaseControllerService.existsQrCode(item.getMaterialNo()));
items.removeIf(item -> item.getLeftNum().compareTo(BigDecimal.ZERO) <= 0
|| noScanningBaseControllerService.existsQrCode(item.getMatnr()));
return ApiResult.success(
items.stream()
.map(item -> new NoScanItemVO()
.setRowNo("")
.setRowNo(item.getRspos())
.setOrderItemId(item.getId())
.setMaterialNo(item.getMaterialNo())
.setMaterialDesc(item.getMaterialDesc())
.setFactoryNo(item.getFactoryNo())
.setWarehouseNo(item.getWarehouseNo())
.setMaterialNo(item.getMatnr())
.setMaterialDesc(item.getMaktx2())
.setFactoryNo(order.getDwerk())
.setWarehouseNo(order.getLgort2())
.setNum(item.getNum())
)
.toList()

View File

@ -190,10 +190,15 @@ public class NormalPGIController extends BaseController {
/**
* 获取可无码收货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScan")
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam Long orderId) {
WmsSrmOrder order = wmsSrmOrderService.getById(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery()
.eq(Objects.nonNull(orderId), WmsSrmOrder::getId, orderId)
.eq(StrUtil.isNotBlank(no), WmsSrmOrder::getNoteNum, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("收货单不存在");
List<WmsSrmOrderItem> items = wmsSrmOrderItemService.lambdaQuery()
.eq(WmsSrmOrderItem::getOrderId, orderId)
@ -225,7 +230,10 @@ public class NormalPGIController extends BaseController {
@PostMapping("noScanSubmit")
@ApiMark(moduleName = "送货单管理", apiName = "无码收货确认")
public ApiResult<Void> noScanSubmit(@Valid @RequestBody @NotNull NoScanningRequest request) {
WmsSrmOrder order = wmsSrmOrderService.getById(request.getId());
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery()
.eq(Objects.nonNull(request.getId()), WmsSrmOrder::getId, request.getId())
.eq(StrUtil.isNotBlank(request.getNo()), WmsSrmOrder::getNoteNum, request.getNo())
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("收货单不存在");
WmsPoReceipt wmsPoReceipt = new WmsPoReceipt()
@ -343,7 +351,7 @@ public class NormalPGIController extends BaseController {
.setItem2(new ArrayList<>());
SRMInspectionInputDTO srmDto = new SRMInspectionInputDTO();
srmDto.setCode("SCAN_RCV_RECEIVE_TO_SRM");
srmDto.setCode("WMS_RCV_RECEIVE_TO_SRM");
SRMInspectionContentDTO content = new SRMInspectionContentDTO();
content.setSupplierName(order.getSupplierName());
content.setSupplierNum(order.getSupplierNum());

View File

@ -284,10 +284,15 @@ public class OutAssistanceController extends BaseController {
/**
* 获取可无码发货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScan")
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam Long orderId) {
WmsOutAssistance order = outAssistanceService.getById(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
WmsOutAssistance order = outAssistanceService.lambdaQuery()
.eq(Objects.nonNull(orderId), WmsOutAssistance::getId, orderId)
.eq(StrUtil.isNotBlank(no), WmsOutAssistance::getNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<WmsOutAssistanceItem> items = outAssistanceItemService.lambdaQuery()
.eq(WmsOutAssistanceItem::getOrderId, orderId)
@ -315,7 +320,10 @@ public class OutAssistanceController extends BaseController {
@Transactional
@PostMapping("noScanSubmit")
public ApiResult<Void> noScanSubmit(@Valid @RequestBody @NotNull NoScanningRequest request) {
WmsOutAssistance order = outAssistanceService.getById(request.getId());
WmsOutAssistance order = outAssistanceService.lambdaQuery()
.eq(Objects.nonNull(request.getId()), WmsOutAssistance::getId, request.getId())
.eq(StrUtil.isNotBlank(request.getNo()), WmsOutAssistance::getNo, request.getNo())
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
request.getItems()
.forEach(data ->

View File

@ -285,10 +285,15 @@ public class OutCostCenterController extends BaseController {
/**
* 获取可无码发货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScan")
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam Long orderId) {
WmsOutCostcenter order = outCostcenterService.getById(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
WmsOutCostcenter order = outCostcenterService.lambdaQuery()
.eq(Objects.nonNull(orderId), WmsOutCostcenter::getId, orderId)
.eq(StrUtil.isNotBlank(no), WmsOutCostcenter::getNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<WmsOutCostcenterItem> items = outCostcenterItemService.lambdaQuery()
.eq(WmsOutCostcenterItem::getOrderId, orderId)
@ -316,7 +321,10 @@ public class OutCostCenterController extends BaseController {
@Transactional
@PostMapping("noScanSubmit")
public ApiResult<Void> noScanSubmit(@Valid @RequestBody @NotNull NoScanningRequest request) {
WmsOutCostcenter order = outCostcenterService.getById(request.getId());
WmsOutCostcenter order = outCostcenterService.lambdaQuery()
.eq(Objects.nonNull(request.getId()), WmsOutCostcenter::getId, request.getId())
.eq(StrUtil.isNotBlank(request.getNo()), WmsOutCostcenter::getNo, request.getNo())
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
request.getItems()
.forEach(data ->

View File

@ -412,10 +412,15 @@ public class OutProduceController extends BaseController {
/**
* 获取可无码发货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScan")
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam Long orderId) {
WmsOutProduce order = outProduceService.getById(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
WmsOutProduce order = outProduceService.lambdaQuery()
.eq(Objects.nonNull(orderId), WmsOutProduce::getId, orderId)
.eq(StrUtil.isNotBlank(no), WmsOutProduce::getNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<WmsOutProduceItem> items = outProduceItemService.lambdaQuery()
.eq(WmsOutProduceItem::getOrderId, orderId)
@ -443,7 +448,10 @@ public class OutProduceController extends BaseController {
@Transactional
@PostMapping("noScanSubmit")
public ApiResult<Void> noScanSubmit(@Valid @RequestBody @NotNull NoScanningRequest request) {
WmsOutProduce order = outProduceService.getById(request.getId());
WmsOutProduce order = outProduceService.lambdaQuery()
.eq(Objects.nonNull(request.getId()), WmsOutProduce::getId, request.getId())
.eq(StrUtil.isNotBlank(request.getNo()), WmsOutProduce::getNo, request.getNo())
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
request.getItems()
.forEach(data ->

View File

@ -143,10 +143,15 @@ public class OutPurchaseController extends BaseController {
/**
* 获取可无码发货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScan")
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam Long orderId) {
WmsReturnRequest order = returnRequestService.getById(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScan(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
WmsReturnRequest order = returnRequestService.lambdaQuery()
.eq(Objects.nonNull(orderId), WmsReturnRequest::getId, orderId)
.eq(StrUtil.isNotBlank(no), WmsReturnRequest::getApplicationNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<WmsReturnRequestItem> items = returnRequestItemService.lambdaQuery()
.eq(WmsReturnRequestItem::getApplicationId, orderId)
@ -174,7 +179,10 @@ public class OutPurchaseController extends BaseController {
@Transactional
@PostMapping("noScanSubmit")
public ApiResult<Void> noScanSubmit(@Valid @RequestBody @NotNull NoScanningRequest request) {
WmsReturnRequest returnRequest = returnRequestService.getById(request.getId());
WmsReturnRequest returnRequest = returnRequestService.lambdaQuery()
.eq(Objects.nonNull(request.getId()), WmsReturnRequest::getId, request.getId())
.eq(StrUtil.isNotBlank(request.getNo()), WmsReturnRequest::getApplicationNo, request.getNo())
.one();
VUtil.trueThrowBusinessError(Objects.isNull(returnRequest)).throwMessage("申请单不存在");
VUtil.trueThrowBusinessError(returnRequest.getApprovalStatus() != 1)
.throwMessage("申请单未审批");

View File

@ -493,10 +493,15 @@ public class TransferCompanyController extends BaseController {
/**
* 获取可无码发货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScanOut")
public ApiResult<List<NoScanItemVO>> getListForNoScanOut(@RequestParam Long orderId) {
WmsTransferCompany order = transferCompanyService.getById(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScanOut(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
WmsTransferCompany order = transferCompanyService.lambdaQuery()
.eq(Objects.nonNull(orderId), WmsTransferCompany::getId, orderId)
.eq(StrUtil.isNotBlank(no), WmsTransferCompany::getNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<WmsTransferCompanyItem> items = transferCompanyItemService.lambdaQuery()
.eq(WmsTransferCompanyItem::getOrderId, orderId)
@ -524,7 +529,10 @@ public class TransferCompanyController extends BaseController {
@Transactional
@PostMapping("pda/submitForOutNoScanning")
public ApiResult<Void> submitForOutNoScanning(@Valid @RequestBody NoScanningRequest request) {
WmsTransferCompany order = transferCompanyService.getById(request.getId());
WmsTransferCompany order = transferCompanyService.lambdaQuery()
.eq(Objects.nonNull(request.getId()), WmsTransferCompany::getId, request.getId())
.eq(StrUtil.isNotBlank(request.getNo()), WmsTransferCompany::getNo, request.getNo())
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("转储单不存在");
List<WmsTransferCompanyItem> datas = transferCompanyItemService.getList(order.getId());
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(datas)).throwMessage("转储单明细不存在");
@ -950,10 +958,15 @@ public class TransferCompanyController extends BaseController {
/**
* 获取可无码收货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScanIn")
public ApiResult<List<NoScanItemVO>> getListForNoScanIn(@RequestParam Long orderId) {
WmsTransferCompanyTicket order = transferCompanyTicketService.getById(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScanIn(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
WmsTransferCompanyTicket order = transferCompanyTicketService.lambdaQuery()
.eq(Objects.nonNull(orderId), WmsTransferCompanyTicket::getId, orderId)
.eq(StrUtil.isNotBlank(no), WmsTransferCompanyTicket::getNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<TransferCompanyItemVO> items = transferCompanyTicketItemService.getList(orderId);
items.removeIf(item -> item.getLeft().compareTo(BigDecimal.ZERO) <= 0
@ -979,7 +992,7 @@ public class TransferCompanyController extends BaseController {
@Transactional
@PostMapping("pda/submitForInNoScanning")
public ApiResult<Void> submitForInNoScanning(@Valid @RequestBody NoScanningRequest request) {
TransferCompanyTicketVO ticket = transferCompanyTicketService.getInfo(request.getId());
TransferCompanyTicketVO ticket = transferCompanyTicketService.getInfo(request.getId(),request.getNo());
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("出库单不存在");
VUtil.trueThrowBusinessError(!Objects.equals(ticket.getState(), 0)).throwMessage("出库单无效");

View File

@ -519,10 +519,15 @@ public class TransferFactoryController extends BaseController {
/**
* 获取可无码发货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScanOut")
public ApiResult<List<NoScanItemVO>> getListForNoScanOut(@RequestParam Long orderId) {
WmsTransferFactory order = transferFactoryService.getById(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScanOut(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
WmsTransferFactory order = transferFactoryService.lambdaQuery()
.eq(Objects.nonNull(orderId), WmsTransferFactory::getId, orderId)
.eq(StrUtil.isNotBlank(no), WmsTransferFactory::getNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<WmsTransferFactoryItem> items = transferFactoryItemService.lambdaQuery()
.eq(WmsTransferFactoryItem::getOrderId, orderId)
@ -550,7 +555,10 @@ public class TransferFactoryController extends BaseController {
@Transactional
@PostMapping("pda/submitForOutNoScanning")
public ApiResult<Void> submitForOutNoScanning(@Valid @RequestBody NoScanningRequest request) {
WmsTransferFactory order = transferFactoryService.getById(request.getId());
WmsTransferFactory order = transferFactoryService.lambdaQuery()
.eq(Objects.nonNull(request.getId()), WmsTransferFactory::getId, request.getId())
.eq(StrUtil.isNotBlank(request.getNo()), WmsTransferFactory::getNo, request.getNo())
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("调拨单不存在");
List<WmsTransferFactoryItem> datas = transferFactoryItemService.getList(order.getId());
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(datas)).throwMessage("调拨单明细不存在");
@ -904,7 +912,7 @@ public class TransferFactoryController extends BaseController {
)
);
OptRecordDTO optRecordDTO = new OptRecordDTO();
optRecordDTO.setOperationType((short)1)
optRecordDTO.setOperationType((short) 1)
.setOrderId(ticket.getNo());
optRecordService.add(optRecordDTO);
transferFactoryTicketService.lambdaUpdate()
@ -923,10 +931,12 @@ public class TransferFactoryController extends BaseController {
/**
* 获取可无码收货单项列表
* @param orderId 订单ID
* @param no 订单号
*/
@GetMapping("getListForNoScanIn")
public ApiResult<List<NoScanItemVO>> getListForNoScanIn(@RequestParam Long orderId) {
TransferFactoryTicketInfoVO order = transferFactoryTicketService.getInfo(orderId);
public ApiResult<List<NoScanItemVO>> getListForNoScanIn(@RequestParam(required = false) Long orderId
, @RequestParam(required = false) String no) {
TransferFactoryTicketInfoVO order = transferFactoryTicketService.getInfo(orderId, no);
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<TransferFactoryItemVO> items = transferFactoryTicketItemService.getList(orderId);
items.removeIf(item -> item.getLeft().compareTo(BigDecimal.ZERO) <= 0
@ -1049,7 +1059,7 @@ public class TransferFactoryController extends BaseController {
)
);
OptRecordDTO optRecordDTO = new OptRecordDTO();
optRecordDTO.setOperationType((short)1)
optRecordDTO.setOperationType((short) 1)
.setOrderId(ticket.getNo());
optRecordService.add(optRecordDTO);
transferFactoryTicketService.lambdaUpdate()

View File

@ -16,9 +16,13 @@ public class NoScanningRequest {
/**
* 订单id
*/
@NotNull
private Long id;
/**
* 订单号
*/
private String no;
@Valid
@NotEmpty
private List<NoScanningItemRequest> items;

View File

@ -25,4 +25,6 @@ public interface WmsTransferCompanyTicketMapper extends BaseMapper<WmsTransferCo
TransferCompanyTicketVO getByNo(String no);
List<TransferCompanyTicketVO> getVOByOrderNo(String no);
TransferCompanyTicketVO getInfo1(Long id, String no);
}

View File

@ -26,4 +26,6 @@ public interface WmsTransferFactoryTicketMapper extends BaseMapper<WmsTransferFa
TransferFactoryTicketInfoVO getByNo(String no);
List<TransferFactoryTicketVO> getVOByOrderNo(String no);
TransferFactoryTicketInfoVO getInfo1(Long id, String no);
}

View File

@ -24,6 +24,8 @@ public interface IWmsTransferCompanyTicketService extends IService<WmsTransferCo
TransferCompanyTicketVO getInfo(@Valid @NotNull Long id);
TransferCompanyTicketVO getInfo(Long id,String no);
TransferCompanyTicketVO getByNo(String no);
List<TransferCompanyTicketVO> getVOByOrderNo(@Valid @NotBlank String no);

View File

@ -21,11 +21,13 @@ import java.util.List;
*/
public interface IWmsTransferFactoryTicketService extends IService<WmsTransferFactoryTicket> {
IPage<TransferFactoryTicketVO> search(@Valid TransferFactorySearchQO request);
IPage<TransferFactoryTicketVO> search(TransferFactorySearchQO request);
TransferFactoryTicketInfoVO getInfo(@Valid @NotNull Long id);
TransferFactoryTicketInfoVO getInfo(Long id);
TransferFactoryTicketInfoVO getByNo(@Valid @NotBlank String no);
TransferFactoryTicketInfoVO getInfo(Long id,String no);
List<TransferFactoryTicketVO> getVOByOrderNo(@Valid @NotBlank String no);
TransferFactoryTicketInfoVO getByNo(String no);
List<TransferFactoryTicketVO> getVOByOrderNo(String no);
}

View File

@ -32,6 +32,11 @@ public class WmsTransferCompanyTicketServiceImpl extends ServiceImpl<WmsTransfer
return baseMapper.getInfo(id);
}
@Override
public TransferCompanyTicketVO getInfo(Long id, String no) {
return baseMapper.getInfo1(id,no);
}
@Override
public TransferCompanyTicketVO getByNo(String no) {
return baseMapper.getByNo(no);

View File

@ -33,6 +33,11 @@ public class WmsTransferFactoryTicketServiceImpl extends ServiceImpl<WmsTransfer
return baseMapper.getInfo(id);
}
@Override
public TransferFactoryTicketInfoVO getInfo(Long id, String no) {
return baseMapper.getInfo1(id, no);
}
@Override
public TransferFactoryTicketInfoVO getByNo(String no) {
return baseMapper.getByNo(no);

View File

@ -62,4 +62,12 @@
inner join wms_transfer_company_ticket tct on tc.id = tct.order_id
where tct.state=0 and tct.finish and tc."no"=#{no}
</select>
<select id="getInfo1" resultType="com.nflg.wms.common.pojo.vo.TransferCompanyTicketVO">
select tct.id,tct.no as "ticket_no",tct.create_by,tct.create_time,tct.update_by,tct.update_time,tct.mat_doc
,tct.doc_year,tct.state,tct.finish,tct.audit_state,tc.*
from wms_transfer_company tc
inner join wms_transfer_company_ticket tct on tc.id = tct.order_id
where tct.id=#{id} or tct.no= #{id}
</select>
</mapper>

View File

@ -55,4 +55,20 @@
INNER JOIN wms_transfer_factory tf ON tft.order_id=tf."id"
WHERE tft.state=0 and tft.finish AND tf."no"= #{no}
</select>
<select id="getInfo1" resultType="com.nflg.wms.common.pojo.vo.TransferFactoryTicketInfoVO">
SELECT tft."id",tft."no" AS "ticket_no",tft.create_by,tft.create_time,tft.doc_year,tft.mat_doc,tft.state
,tft.audit_state,tft.finish,tf.*
FROM wms_transfer_factory_ticket tft
INNER JOIN wms_transfer_factory tf ON tft.order_id=tf."id"
<where>
<if test="id!=null">
and tft."id"=#{id}
</if>
<if test="no!=null and no!=''">
and tft."no"= #{no}
</if>
</where>
LIMIT 1
</select>
</mapper>

View File

@ -134,16 +134,19 @@ public class SRMController extends BaseController {
/**
* SRM 推送质检单到WMS
*/
@PostMapping("/SendNFInspect")
@Transactional
public Object receiveQualityInspection(@RequestBody SRMQualityInspectionResult request) {
log.info("接收SRM质检单: {}", request.getJsonstring());
SRMQualityInspectionResultDTO data = JSONUtil.toBean(request.getJsonstring(), SRMQualityInspectionResultDTO.class);
log.info("质检单解析完成, 单号: {}, 物料: {}, 结果: {}", data.getInspectionNum(), data.getItemCode(), data.getInspectionResult());
List<WmsSrmQualityInspection> inspects = srmQualityInspectionService.lambdaQuery()
.eq(WmsSrmQualityInspection::getInspectionNum, data.getInspectionNum())
.list();
if (CollectionUtil.isNotEmpty(inspects))
if (CollectionUtil.isNotEmpty(inspects)) {
log.warn("质检单已存在, 跳过处理: {}", data.getInspectionNum());
return 2;
}
Integer result = 1;
// 找到入库的明细
@ -154,14 +157,17 @@ public class SRMController extends BaseController {
.eq(WmsQcReceiveItem::getNoteNum, data.getNoteNum())
.one();
if (Objects.isNull(receiveItem)) {
log.error("接收到无效的质检信息" + data.getInspectionNum());
log.error("未找到对应收货明细, 质检单号: {}, 物料: {}, 收货单: {}, 行号: {}",
data.getInspectionNum(), data.getItemCode(), data.getReceiveNum(), data.getLineNumber());
return 2;
}
log.info("匹配到收货明细, 质检单号: {}, 收货明细ID: {}", data.getInspectionNum(), receiveItem.getId());
// 检查物料是否生成过二维码
boolean hasQrCode = qrCodeMasterService.lambdaQuery()
.eq(WmsQrCodeMaster::getMaterialCode, data.getItemCode())
.exists();
log.info("物料 {} 是否已生成二维码: {}", data.getItemCode(), hasQrCode);
WmsSrmQualityInspection inspect = new WmsSrmQualityInspection()
.setId(IdUtil.getSnowflakeNextId())
@ -194,10 +200,12 @@ public class SRMController extends BaseController {
if (inspect.getInspectionResult().equals("合格")) {
isCheck = 1;
inspect.setReceiveQty(inspect.getQualifiedQty());
log.info("质检合格, 质检单号: {}, 合格数量: {}", data.getInspectionNum(), data.getQualifiedQty());
// 如果物料有二维码则直接入库参考NormalPGIController.takeDeliveryConfirm方法
if (hasQrCode) {
inspect.setIsIn(true);
log.info("物料有二维码, 执行直接入库, 质检单号: {}", data.getInspectionNum());
// 构建库存入库数据
InventoryInDTO inventoryDTO = new InventoryInDTO()
@ -232,10 +240,13 @@ public class SRMController extends BaseController {
}
// 执行库存入库
log.info("开始本地库存入库, 数量: {}", data.getQualifiedQty());
inventoryService.in(inventories);
// 推送到SAP
log.info("开始推送SAP入库, PO: {}, 物料: {}", data.getPoNum(), data.getItemCode());
Pair<Pair<String, String>, Pair<String, String>> returnDto = sapService.zwm3a17(zwm3A17DTO);
log.info("SAP入库返回, 物料凭证: {}, 年份: {}", returnDto.getKey().getKey(), returnDto.getValue().getValue());
// 更新收货明细的物料凭证和入库数量
qcReceiveItemService.lambdaUpdate()
.eq(WmsQcReceiveItem::getId, receiveItem.getId())
@ -255,13 +266,18 @@ public class SRMController extends BaseController {
.eq(WmsQcReceive::getId, receiveItem.getReceiveId())
.set(WmsQcReceive::getIsCompleted, (short) 2)
.update();
log.info("收货单全部完成, receiveId: {}", receiveItem.getReceiveId());
} else {
qcReceiveService.lambdaUpdate()
.eq(WmsQcReceive::getId, receiveItem.getReceiveId())
.set(WmsQcReceive::getIsCompleted, (short) 1)
.update();
log.info("收货单部分完成, receiveId: {}", receiveItem.getReceiveId());
}
}
} else {
log.warn("质检不合格, 质检单号: {}, 不合格数量: {}, 原因: {}",
data.getInspectionNum(), data.getUnqualifiedQty(), data.getUnqualifiedReason());
}
srmQualityInspectionService.save(inspect);
qcReceiveService.lambdaUpdate()
@ -269,7 +285,7 @@ public class SRMController extends BaseController {
.set(WmsQcReceive::getIsCheck, isCheck)
.update();
qcReceiveItemService.updateCheckNum(inspect.getInspectionQty(), inspect.getNoteNum(), inspect.getLineNumber(), inspect.getItemCode(), inspect.getReceiveNum());
log.error("质检单生成上架任务成功");
log.info("质检单处理完成: {}, 结果: {}", data.getInspectionNum(), inspect.getInspectionResult());
return 0;
} catch (Exception ex) {
log.error("SRM送货单保存失败", ex);