diff --git a/pu/src/private/nc/bs/pu/m21/plugin/BatchTransferToPurchaseOrder.java b/pu/src/private/nc/bs/pu/m21/plugin/BatchTransferToPurchaseOrder.java index 23fb636..a1f35f6 100644 --- a/pu/src/private/nc/bs/pu/m21/plugin/BatchTransferToPurchaseOrder.java +++ b/pu/src/private/nc/bs/pu/m21/plugin/BatchTransferToPurchaseOrder.java @@ -1,6 +1,7 @@ package nc.bs.pu.m21.plugin; import java.util.*; +import java.util.stream.Collectors; import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; @@ -11,6 +12,7 @@ import nc.bs.pub.taskcenter.BgWorkingContext; import nc.bs.pub.taskcenter.IBackgroundWorkPlugin; import nc.bs.pubapp.AppBsContext; import nc.impl.pubapp.pattern.data.vo.VOQuery; +import nc.impl.pubapp.pattern.data.vo.VOUpdate; import nc.impl.pubapp.pattern.page.db.IDDBPage; import nc.itf.uap.pf.IPfExchangeService; import nc.util.mmf.framework.base.MMArrayUtil; @@ -26,6 +28,7 @@ import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.model.entity.bill.AbstractBill; import nc.vo.scmpub.res.billtype.POBillType; import nc.vo.scmpub.util.AppInfoContext; +import nccloud.commons.lang.ArrayUtils; import nccloud.dto.scmpub.script.entity.SCMScriptResultDTO; import nccloud.pubitf.riart.pflow.CloudPFlowContext; import nccloud.pubitf.scmpub.commit.service.IBatchRunScriptService; @@ -42,7 +45,7 @@ public class BatchTransferToPurchaseOrder implements IBackgroundWorkPlugin { // 1. 查询满足条件的请购单聚合VO PraybillVO[] purchaseRequestVOs = getQualifiedPurchaseRequests(bgWorkingContext); logger.info("查询到满足条件的请购单数量: " + purchaseRequestVOs.length, this.getClass(), "executeTask"); - if (purchaseRequestVOs.length <= 0) { + if (purchaseRequestVOs.length == 0) { logger.info("未找到满足条件的请购单,任务结束", this.getClass(), "executeTask"); return null; } @@ -186,35 +189,52 @@ public class BatchTransferToPurchaseOrder implements IBackgroundWorkPlugin { for (OrderVO orderVO : orderVOs) { // 对采购订单赋值行号 OrderHeaderVO hvo = orderVO.getHVO(); + hvo.setStatus(2); OrderItemVO[] bvo = orderVO.getBVO(); for (int j = 0; j < bvo.length; j++) { int rowNum = (j + 1) * 10; - // 设置pk_order - bvo[j].setPk_order(hvo.getPk_order()); + bvo[j].setStatus(2); bvo[j].setCrowno(String.valueOf(rowNum)); } } CloudPFlowContext cloudContext = this.getCloudPFlowContext(orderVOs); - AppInfoContext.setBtnCode("Save"); SCMScriptResultDTO scriptResult = ((IBatchRunScriptService) NCLocator.getInstance().lookup(IBatchRunScriptService.class)).runBacth(cloudContext, OrderVO.class); AbstractBill[] sucessVOs = scriptResult.getSucessVOs(); - // TODO sucessVOs 获取成功保存的采购订单 但是无法保存 无法获取 暂时无法测试 + // 要进行批量更新的数组 + List hvoList = new ArrayList<>(vos.length - sucessVOs.length); Map errorMessageMap = scriptResult.getErrorMessageMap(); if (!errorMessageMap.isEmpty()) { errorMessageMap.keySet().forEach(key -> { String errMsg = errorMessageMap.get(key); - if (errMsg.isEmpty()) return; - // TODO 此处逻辑有问题 采购订单转换 不成功的需要和错误信息一一对应后 才能设置错误信息 - OrderVO orderVO = orderVOs[key]; - // 给单据设置错误信息 - orderVO.getHVO().setVdef30(errMsg); - orderVO.getHVO().setVdef31("N"); + if (errMsg.isEmpty()) { + return; + } + PraybillVO vo = vos[key]; + // TODO 后面需要把确定的字段长度扩充一下 errMsg也需要截取一下 + vo.getHVO().setVdef30(errMsg); + vo.getHVO().setVdef31("N"); + hvoList.add(vo); logger.warn("单据转换生成采购订单时发生错误: " + scriptResult.getErrorMessage(), this.getClass(), "processBatchTransfer"); }); } + // 进行批量更新 + PraybillHeaderVO[] hvoBatchUpdatedList = {}; + if (hvoList.isEmpty()) { + logger.warn("批量更新请购单表头失败,获取表头数组长度为0", this.getClass(), "processBatchTransfer"); + return; + } + for (PraybillVO hvo : hvoList) { + hvoBatchUpdatedList = ArrayUtils.add(hvoBatchUpdatedList, hvo.getHVO()); + logger.info("循环更新请购单表头: " + hvo.getHVO().getPk_praybill(), this.getClass(), "processBatchTransfer"); + } + if (hvoBatchUpdatedList.length == 0) { + logger.warn("批量更新请购单表头失败,需要更新的数组为0", this.getClass(), "processBatchTransfer"); + } + String[] headupname = new String[]{"fbillstatus"}; + VOUpdate headupsrv = new VOUpdate<>(); + headupsrv.update(hvoBatchUpdatedList, headupname); } catch (Exception e) { logger.error("批量转换请购单到采购订单失败", e, this.getClass(), "processBatchTransfer"); - ExceptionUtils.marsh(e); } } diff --git a/so/src/private/nc/bs/so/m30/rule/approve/AfterApprovingSynchronizeRuleMES.java b/so/src/private/nc/bs/so/m30/rule/approve/AfterApprovingSynchronizeRuleMES.java index 20c8d94..7fc9532 100644 --- a/so/src/private/nc/bs/so/m30/rule/approve/AfterApprovingSynchronizeRuleMES.java +++ b/so/src/private/nc/bs/so/m30/rule/approve/AfterApprovingSynchronizeRuleMES.java @@ -146,7 +146,7 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { if (bodys != null) { for (SaleOrderBVO body : bodys) { JSONObject detailItem = new JSONObject(); - detailItem.put("productNum", head.getVbillcode()); + detailItem.put("productNum", head.getVdef6()); // 以下字段需要表体的字段 // 需求日期 表体dreceivedate UFDate dreceivedate = body.getDreceivedate();