| | |
| | | } |
| | | |
| | | @Override |
| | | public Object[] callPdaReceiptBtn1(String deliveryNo, String userid) { |
| | | // 创建用于接收输出参数的变量 |
| | | Integer res = null; |
| | | String msg = null; |
| | | |
| | | try { |
| | | // 调用存储过程 |
| | | baseMapper.callPdaReceiptBtn1(deliveryNo, userid, res, msg); |
| | | |
| | | log.info("调用存储过程PRC_RF_PDA_RECEIPT_BTN_test001成功: 送货单号={}, 用户ID={}, 结果码={}, 消息={}", |
| | | deliveryNo, userid, res, msg); |
| | | |
| | | return new Object[]{res, msg}; |
| | | } catch (Exception e) { |
| | | log.error("调用存储过程PRC_RF_PDA_RECEIPT_BTN_test001失败: 送货单号={}, 用户ID={}, 异常={}", |
| | | deliveryNo, userid, e.getMessage(), e); |
| | | throw e; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public Integer processMesInvItemArnStatus(String factory, String company, String userCode, Long id) { |
| | | Integer poResult = 1; |
| | | String poText = ""; |
| | |
| | | log.info("【processAsyncBatch】异步处理{}条数据完成", batchItems.size()); |
| | | } |
| | | |
| | | @Override |
| | | public boolean setDeliveryNotice() { |
| | | LambdaQueryWrapper<DeliveryNoticeDetail> nullPoErpNoWrapper = new LambdaQueryWrapper<>(); |
| | | nullPoErpNoWrapper.isNull(DeliveryNoticeDetail::getPoErpNo); |
| | | nullPoErpNoWrapper.orderByAsc(DeliveryNoticeDetail::getPid, DeliveryNoticeDetail::getLineNo); |
| | | |
| | | List<DeliveryNoticeDetail> nullPoErpNoList = detailService.list(nullPoErpNoWrapper); |
| | | |
| | | if (CollUtil.isEmpty(nullPoErpNoList)) { |
| | | log.info("没有找到需要更新的PO_ERP_NO为null的记录"); |
| | | return true; |
| | | } |
| | | |
| | | log.info("找到{}条PO_ERP_NO为null的记录需要更新", nullPoErpNoList.size()); |
| | | |
| | | int updatedCount = 0; |
| | | |
| | | for (DeliveryNoticeDetail nullRecord : nullPoErpNoList) { |
| | | Integer currentLineNo; |
| | | try { |
| | | currentLineNo = Integer.parseInt(nullRecord.getLineNo()); |
| | | |
| | | // 如果LINE_NO为1,跳过这条记录,继续处理下一条 |
| | | if (currentLineNo == 1) { |
| | | log.info("跳过LINE_NO为1的记录: ID={}, 继续处理其他记录", nullRecord.getId()); |
| | | continue; |
| | | } |
| | | |
| | | } catch (NumberFormatException e) { |
| | | log.warn("无法解析LINE_NO为数字: {}, 跳过这条记录", nullRecord.getLineNo()); |
| | | continue; |
| | | } |
| | | |
| | | // 获取同一PID下所有记录 |
| | | LambdaQueryWrapper<DeliveryNoticeDetail> sameParentWrapper = new LambdaQueryWrapper<>(); |
| | | sameParentWrapper.eq(DeliveryNoticeDetail::getPid, nullRecord.getPid()); |
| | | |
| | | List<DeliveryNoticeDetail> allRecords = detailService.list(sameParentWrapper); |
| | | |
| | | // 按LINE_NO顺序依次向前查找第一个PO_ERP_NO不为null的记录 |
| | | DeliveryNoticeDetail nearestRecord = null; |
| | | |
| | | // 从当前LINE_NO-1开始向前查找 |
| | | for (int searchLineNo = currentLineNo - 1; searchLineNo >= 1; searchLineNo--) { |
| | | for (DeliveryNoticeDetail candidate : allRecords) { |
| | | try { |
| | | Integer candidateLineNo = Integer.parseInt(candidate.getLineNo()); |
| | | if (candidateLineNo.equals(searchLineNo) && StrUtil.isNotEmpty(candidate.getPoErpNo())) { |
| | | nearestRecord = candidate; |
| | | break; |
| | | } |
| | | } catch (NumberFormatException e) { |
| | | log.warn("无法解析候选记录LINE_NO为数字: {}", candidate.getLineNo()); |
| | | } |
| | | } |
| | | // 如果找到了就跳出外层循环 |
| | | if (nearestRecord != null) { |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (nearestRecord != null && StrUtil.isNotEmpty(nearestRecord.getPoErpNo())) { |
| | | LambdaUpdateWrapper<DeliveryNoticeDetail> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(DeliveryNoticeDetail::getId, nullRecord.getId()) |
| | | .set(DeliveryNoticeDetail::getPoErpNo, nearestRecord.getPoErpNo()) |
| | | .set(DeliveryNoticeDetail::getPurchaseType, nearestRecord.getPurchaseType()) |
| | | .set(DeliveryNoticeDetail::getPoLineNo, nearestRecord.getPoLineNo()); |
| | | |
| | | boolean updated = detailService.update(updateWrapper); |
| | | if (updated) { |
| | | updatedCount++; |
| | | log.info("更新记录ID: {}, LINE_NO: {}, 设置PO_ERP_NO为: {} (来源LINE_NO: {})", |
| | | nullRecord.getId(), nullRecord.getLineNo(), nearestRecord.getPoErpNo(), nearestRecord.getLineNo()); |
| | | |
| | | // LambdaQueryWrapper<DeliveryNotice> queryWrapper = new LambdaQueryWrapper<>(); |
| | | // queryWrapper.eq(DeliveryNotice::getId, nullRecord.getPid()); |
| | | // DeliveryNotice one = getOne(queryWrapper, false); |
| | | // |
| | | // callPdaReceiptBtn1(one.getDeliveryNo(), "PL017"); |
| | | } else { |
| | | log.error("更新记录ID: {} 失败", nullRecord.getId()); |
| | | } |
| | | } else { |
| | | log.error("记录ID: {}, LINE_NO: {} 找不到可用的PO_ERP_NO值,需要人工处理", |
| | | nullRecord.getId(), nullRecord.getLineNo()); |
| | | } |
| | | } |
| | | |
| | | log.info("共更新了{}条记录", updatedCount); |
| | | return updatedCount > 0; |
| | | } |
| | | |
| | | /** |
| | | * 批量处理MesInvItemArn数据 |
| | | * |