From d68f36811120aa53aabedde91c2644c2f62b3b95 Mon Sep 17 00:00:00 2001 From: lihao Date: Mon, 20 Oct 2025 20:31:58 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=B4=A8=E6=A3=80=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E6=8E=A8=E9=80=81qms=E4=BC=98=E5=8C=96=EF=BC=8C=E5=A4=87?= =?UTF-8?q?=E6=B3=A8=E5=AD=97=E6=AE=B5=E6=94=B9=E4=B8=BA=E4=BB=8E=E6=94=B6?= =?UTF-8?q?=E8=B4=A7=E5=8D=95=E5=AD=90=E8=A1=A8=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/QCRptDataPushtoQmsAction.java | 120 ++++-------------- .../maintain/rule/SyncDeleteQcQmsRule.java | 19 ++- .../qc/c003/maintain/rule/SyncQcQmsRule.java | 100 +++------------ 3 files changed, 59 insertions(+), 180 deletions(-) diff --git a/qc/src/client/nccloud/web/qc/qcconclusion/action/QCRptDataPushtoQmsAction.java b/qc/src/client/nccloud/web/qc/qcconclusion/action/QCRptDataPushtoQmsAction.java index 79502026..53f65154 100644 --- a/qc/src/client/nccloud/web/qc/qcconclusion/action/QCRptDataPushtoQmsAction.java +++ b/qc/src/client/nccloud/web/qc/qcconclusion/action/QCRptDataPushtoQmsAction.java @@ -81,16 +81,16 @@ public class QCRptDataPushtoQmsAction implements ICommonAction { boolean needSkip = false; // 标记是否需要跳过当前ArriveVO // 检查当前到货单的所有明细,只要有一个明细的vbdef23为Y/y,就跳过整个到货单 - if (bvos != null && bvos.length > 0) { - for (ArriveItemVO itemVO : bvos) { - // 获取vbdef23字段值,处理null情况 - String vbdef23 = (String) itemVO.getAttributeValue("vbdef23"); - if (vbdef23 != null && "Y".equalsIgnoreCase(vbdef23)) { - needSkip = true; - break; // 只要有一个明细符合,直接跳出明细循环 - } - } - } + // if (bvos != null && bvos.length > 0) { + // for (ArriveItemVO itemVO : bvos) { + // // 获取vbdef32字段值,处理null情况 + // String vbdef32 = (String) itemVO.getAttributeValue("vbdef32"); + // if (vbdef32 != null && "Y".equalsIgnoreCase(vbdef32)) { + // needSkip = true; + // break; // 只要有一个明细符合,直接跳出明细循环 + // } + // } + // } // 不需要跳过的,加入有效列表 if (!needSkip) { @@ -166,22 +166,29 @@ public class QCRptDataPushtoQmsAction implements ICommonAction { itemObj.put("wlxhgg", materialtype + materialspec); // 物料型号规格 itemObj.put("sjsl", reportHeaderVO.getNapplynum().toString()); // 送检数量(设计单位),按设计计量单位统计的送检数量 itemObj.put("jldw", cunitname); // 计量单位 - itemObj.put("bz", reportItemVO.getVbdef1()); // 明细备注,用于填写该送检物料的补充说明 + itemObj.put("bz", getBz(bvo,reportItemVO.getCfirstbid())); // 明细备注,用于填写该送检物料的补充说明 itemObj.put("bipzyid", pkReportbill); // 质检报告ID itemObj.put("bipqdid", reportItemVO.getPk_reportbill_b()); // 质检报告明细ID contentArray.add(itemObj); } singleObj.put("Content", contentArray); -// pushData(singleObj); -// update.add(hvo.getPk_arriveorder()); -// updateArrveOrder(hvo.getPk_arriveorder()); + pushData(singleObj); + update.add(hvo.getPk_arriveorder()); + updateArrveOrder(hvo.getPk_arriveorder()); } } - + private Object getBz(ArriveItemVO[] bvo, String cfirstbid) { + for (ArriveItemVO arriveItemVO : bvo) { + if(arriveItemVO.getPk_arriveorder_b().equals(cfirstbid)) { + return arriveItemVO.getVmemob(); + } + } + return null; + } private void updateArrveOrder(String pkArriveorder) throws DAOException { BaseDAO dao = new BaseDAO(); - String sql = "update po_arriveorder_b set vbdef23='Y' where pk_arriveorder='" + String sql = "update po_arriveorder_b set vbdef32='Y' where pk_arriveorder='" + pkArriveorder + "'"; dao.executeUpdate(sql); } @@ -215,87 +222,6 @@ public class QCRptDataPushtoQmsAction implements ICommonAction { return cghth; } - private void buildSyncData1(ReportVO[] useVOs) throws BusinessException { - for (ReportVO vo : useVOs) { - ReportHeaderVO hvo = vo.getHVO(); - ReportItemVO[] bvo = vo.getBVO(); - // 判断物料的业务单元是否是箱变公司,不是则跳过 - String pkOrg = hvo.getPk_org(); - String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); - if (checkIfOrg(orgCode, configParams)) { - continue; - } - // 查询供应商信息 - String pk_supplier_v = hvo.getPk_supplier_v(); - SupplierVersionVO supplierVersionVO = new SupplierVersionVO(); - if (pk_supplier_v != null && !pk_supplier_v.isEmpty() && !"~".equals(pk_supplier_v)) { - ISupplierBaseInfoQryService baseQryService = NCLocator.getInstance().lookup(ISupplierBaseInfoQryService.class); - supplierVersionVO = baseQryService.querySupplierVersionByVID(pk_supplier_v); - } - // 查询人员信息 - String pkApplyer = hvo.getPk_applyer(); - String applyerName = MyHelper.getStrValByCondition(PsndocVO.getDefaultTableName(), PsndocVO.NAME, - PsndocVO.PK_PSNDOC + " = '" + pkApplyer + "'"); - String bz = "", cghth = ""; - if (bvo != null && bvo.length > 0) { - bz = bvo[0].getVbdef1(); // BOM备注 - cghth = bvo[0].getVbdef2(); // 采购单号 - } - // 组装数据 - JSONObject singleObj = new JSONObject(); - long cts = System.currentTimeMillis(); - singleObj.put("batchid", cts); - singleObj.put("csdh", hvo.getVapplybillcode());// 送检单号,采购送检单的唯一标识编号 - singleObj.put("sjrq", hvo.getDapplydate().toString());// 送检日期,格式建议为 yyyy-MM-dd - singleObj.put("wlgysid", supplierVersionVO.getCode());// 供应商编码 - singleObj.put("wlgysmc", supplierVersionVO.getName());// 供应商名称 - singleObj.put("sjr", applyerName);// 送检人,负责提交送检单的人员姓名 - singleObj.put("cghth", cghth);// 采购合同号,关联对应的采购合同 - singleObj.put("bz", hvo.getVmemo());// 摘要备注,用于填写送检单的补充说明信息 - - String pkMaterial = hvo.getPk_material(); - Map materialMap = MyHelper.getMapValByCondition(MaterialVO.getDefaultTableName(), "code,name,materialspec,materialtype", - "pk_material = '" + pkMaterial + "'"); - String cunitid = hvo.getCunitid();// 主单位 - String cunitname = MyHelper.getStrValByCondition(MeasdocVO.getDefaultTableName(), MeasdocVO.NAME, - MeasdocVO.PK_MEASDOC + " = '" + cunitid + "'"); - // 处理Content数组 - JSONArray contentArray = new JSONArray(); - JSONObject itemObj = new JSONObject(); - itemObj.put("wlbh", materialMap.getOrDefault("code", "")); // 物料编码 - itemObj.put("wlmc", materialMap.getOrDefault("name", "")); // 物料名称 - String materialtype = skipNull(materialMap.get("materialtype")); - String materialspec = skipNull(materialMap.get("materialspec")); - itemObj.put("wlxhgg", materialtype + materialspec); // 物料型号规格 - itemObj.put("sjsl", hvo.getNapplynum().toString()); // 送检数量(设计单位),按设计计量单位统计的送检数量 - itemObj.put("jldw", cunitname); // 计量单位 - itemObj.put("bz", bz); // 明细备注,用于填写该送检物料的补充说明 - contentArray.add(itemObj); - - singleObj.put("Content", contentArray); -/* { - "batchid": "10002", - "csdh": "SJ202405001", - "sjrq": "2024-05-20", - "wlgysid": "GY001", - "wlgysmc": "XX 金属材料有限公司", - "sjr": "张三", - "cghth": "HT202405003", - "bz": "紧急送检,需优先检测", - "Content": [ - { - "wlbh": "ACC26711", - "wlmc": "铜排", - "wlxhgg": "15558190831", - "jldw": "米", - "sjsl": "50", - "bz": "无特殊要求" - } - ] - }*/ - pushData(singleObj); - } - } /** * 推送同步数据 diff --git a/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncDeleteQcQmsRule.java b/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncDeleteQcQmsRule.java index 6b68c180..63e71796 100644 --- a/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncDeleteQcQmsRule.java +++ b/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncDeleteQcQmsRule.java @@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; +import nc.bs.dao.BaseDAO; +import nc.bs.dao.DAOException; import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.bs.trade.business.HYPubBO; @@ -169,15 +171,30 @@ public class SyncDeleteQcQmsRule implements IRule { } itemObj.put("jldw", cunitname); // 计量单位 - itemObj.put("bz", reportItemVO.getVbdef1()); // 明细备注 + itemObj.put("bz", getBz(bvo,reportItemVO.getCfirstbid())); // 明细备注 送货单备注 itemObj.put("bipzyid", pkReportbill); // 质检报告ID itemObj.put("bipqdid", reportItemVO.getPk_reportbill_b()); // 质检报告明细ID contentArray.add(itemObj); } singleObj.put("Content", contentArray); pushData(singleObj); + updateArrveOrder(hvo.getPk_arriveorder()); } } + private void updateArrveOrder(String pkArriveorder) throws DAOException { + BaseDAO dao = new BaseDAO(); + String sql = "update po_arriveorder_b set vbdef32='Y' where pk_arriveorder='" + + pkArriveorder + "'"; + dao.executeUpdate(sql); + } + private Object getBz(ArriveItemVO[] bvo, String cfirstbid) { + for (ArriveItemVO arriveItemVO : bvo) { + if(arriveItemVO.getPk_arriveorder_b().equals(cfirstbid)) { + return arriveItemVO.getVmemob(); + } + } + return null; + } // 以下方法与原逻辑一致,未做修改 private String getCghthVal(ArriveHeaderVO hvo, ArriveItemVO[] bvo) throws BusinessException { diff --git a/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncQcQmsRule.java b/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncQcQmsRule.java index b814bf5b..3ead97ec 100644 --- a/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncQcQmsRule.java +++ b/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncQcQmsRule.java @@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; +import nc.bs.dao.BaseDAO; +import nc.bs.dao.DAOException; import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.bs.trade.business.HYPubBO; @@ -139,15 +141,30 @@ public class SyncQcQmsRule implements IRule { itemObj.put("wlxhgg", materialtype + materialspec); // 物料型号规格 itemObj.put("sjsl", reportHeaderVO.getNapplynum().toString()); // 送检数量(设计单位),按设计计量单位统计的送检数量 itemObj.put("jldw", cunitname); // 计量单位 - itemObj.put("bz", reportItemVO.getVbdef1()); // 明细备注,用于填写该送检物料的补充说明 + itemObj.put("bz", getBz(bvo,reportItemVO.getCfirstbid())); // 明细备注,送货单备注 itemObj.put("bipzyid", pkReportbill); // 质检报告ID itemObj.put("bipqdid", reportItemVO.getPk_reportbill_b()); // 质检报告明细ID contentArray.add(itemObj); } singleObj.put("Content", contentArray); pushData(singleObj); + updateArrveOrder(hvo.getPk_arriveorder()); } } + private void updateArrveOrder(String pkArriveorder) throws DAOException { + BaseDAO dao = new BaseDAO(); + String sql = "update po_arriveorder_b set vbdef32='Y' where pk_arriveorder='" + + pkArriveorder + "'"; + dao.executeUpdate(sql); + } + private Object getBz(ArriveItemVO[] bvo, String cfirstbid) { + for (ArriveItemVO arriveItemVO : bvo) { + if(arriveItemVO.getPk_arriveorder_b().equals(cfirstbid)) { + return arriveItemVO.getVmemob(); + } + } + return null; + } private String getCghthVal(ArriveHeaderVO hvo, ArriveItemVO[] bvo) throws BusinessException { String cghth = ""; @@ -178,87 +195,6 @@ public class SyncQcQmsRule implements IRule { return cghth; } - private void buildSyncData1(ReportVO[] useVOs) throws BusinessException { - for (ReportVO vo : useVOs) { - ReportHeaderVO hvo = vo.getHVO(); - ReportItemVO[] bvo = vo.getBVO(); - // 判断物料的业务单元是否是箱变公司,不是则跳过 - String pkOrg = hvo.getPk_org(); - String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); - if (checkIfOrg(orgCode, configParams)) { - continue; - } - // 查询供应商信息 - String pk_supplier_v = hvo.getPk_supplier_v(); - SupplierVersionVO supplierVersionVO = new SupplierVersionVO(); - if (pk_supplier_v != null && !pk_supplier_v.isEmpty() && !"~".equals(pk_supplier_v)) { - ISupplierBaseInfoQryService baseQryService = NCLocator.getInstance().lookup(ISupplierBaseInfoQryService.class); - supplierVersionVO = baseQryService.querySupplierVersionByVID(pk_supplier_v); - } - // 查询人员信息 - String pkApplyer = hvo.getPk_applyer(); - String applyerName = MyHelper.getStrValByCondition(PsndocVO.getDefaultTableName(), PsndocVO.NAME, - PsndocVO.PK_PSNDOC + " = '" + pkApplyer + "'"); - String bz = "", cghth = ""; - if (bvo != null && bvo.length > 0) { - bz = bvo[0].getVbdef1(); // BOM备注 - cghth = bvo[0].getVbdef2(); // 采购单号 - } - // 组装数据 - JSONObject singleObj = new JSONObject(); - long cts = System.currentTimeMillis(); - singleObj.put("batchid", cts); - singleObj.put("csdh", hvo.getVapplybillcode());// 送检单号,采购送检单的唯一标识编号 - singleObj.put("sjrq", hvo.getDapplydate().toString());// 送检日期,格式建议为 yyyy-MM-dd - singleObj.put("wlgysid", supplierVersionVO.getCode());// 供应商编码 - singleObj.put("wlgysmc", supplierVersionVO.getName());// 供应商名称 - singleObj.put("sjr", applyerName);// 送检人,负责提交送检单的人员姓名 - singleObj.put("cghth", cghth);// 采购合同号,关联对应的采购合同 - singleObj.put("bz", hvo.getVmemo());// 摘要备注,用于填写送检单的补充说明信息 - - String pkMaterial = hvo.getPk_material(); - Map materialMap = MyHelper.getMapValByCondition(MaterialVO.getDefaultTableName(), "code,name,materialspec,materialtype", - "pk_material = '" + pkMaterial + "'"); - String cunitid = hvo.getCunitid();// 主单位 - String cunitname = MyHelper.getStrValByCondition(MeasdocVO.getDefaultTableName(), MeasdocVO.NAME, - MeasdocVO.PK_MEASDOC + " = '" + cunitid + "'"); - // 处理Content数组 - JSONArray contentArray = new JSONArray(); - JSONObject itemObj = new JSONObject(); - itemObj.put("wlbh", materialMap.getOrDefault("code", "")); // 物料编码 - itemObj.put("wlmc", materialMap.getOrDefault("name", "")); // 物料名称 - String materialtype = skipNull(materialMap.get("materialtype")); - String materialspec = skipNull(materialMap.get("materialspec")); - itemObj.put("wlxhgg", materialtype + materialspec); // 物料型号规格 - itemObj.put("sjsl", hvo.getNapplynum().toString()); // 送检数量(设计单位),按设计计量单位统计的送检数量 - itemObj.put("jldw", cunitname); // 计量单位 - itemObj.put("bz", bz); // 明细备注,用于填写该送检物料的补充说明 - contentArray.add(itemObj); - - singleObj.put("Content", contentArray); -/* { - "batchid": "10002", - "csdh": "SJ202405001", - "sjrq": "2024-05-20", - "wlgysid": "GY001", - "wlgysmc": "XX 金属材料有限公司", - "sjr": "张三", - "cghth": "HT202405003", - "bz": "紧急送检,需优先检测", - "Content": [ - { - "wlbh": "ACC26711", - "wlmc": "铜排", - "wlxhgg": "15558190831", - "jldw": "米", - "sjsl": "50", - "bz": "无特殊要求" - } - ] - }*/ - pushData(singleObj); - } - } /** * 推送同步数据 From 11b094294a60019f815835d693f08660d5df3eb2 Mon Sep 17 00:00:00 2001 From: lihao Date: Mon, 20 Oct 2025 20:33:48 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/mmpac/pmo/action/PmoToQmsAction.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoToQmsAction.java b/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoToQmsAction.java index a5b21882..171e1ffd 100644 --- a/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoToQmsAction.java +++ b/mmpac/src/client/nccloud/web/mmpac/pmo/action/PmoToQmsAction.java @@ -87,6 +87,10 @@ public class PmoToQmsAction implements ICommonAction { if (checkIfOrg(orgCode, configParams)) { continue; } + String billType = vo.getParentVO().getVtrantypecode(); + if (checkBillType(billType, configParams)) { + continue; + } if (vo.getChildrenVO().length >= 0) { if (null != vo.getChildrenVO()[0].getAttributeValue("vdef32") && vo.getChildrenVO()[0].getAttributeValue("vdef32").equals("Y")) { continue; @@ -211,4 +215,17 @@ public class PmoToQmsAction implements ICommonAction { } return true; } + private boolean checkBillType(String code, Map configParams) throws BusinessException { + String targetCode = configParams.get("xbBillType"); + if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) { + throw new BusinessException("未配置单据类型参数"); + } + String[] types = targetCode.split(","); + for (String type : types) { + if (!type.isEmpty() && type.equals(code)) { + return false; + } + } + return true; + } } From d0754dfa77f206a103e599cf48e6de03d4dfd340 Mon Sep 17 00:00:00 2001 From: lihao Date: Mon, 20 Oct 2025 20:35:30 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E7=89=A9=E6=96=99?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E4=BF=A1=E6=81=AF=E6=89=B9=E6=AC=A1=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E8=BF=9B=E8=A1=8C=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mmpac/pmo/pac0002/bp/util/PMOBPUtil.java | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/util/PMOBPUtil.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/util/PMOBPUtil.java index 149678e5..4287b30e 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/util/PMOBPUtil.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/util/PMOBPUtil.java @@ -23,6 +23,7 @@ import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService; import nc.bs.pubapp.AppBsContext; import nc.bs.trade.business.HYPubBO; import nc.impl.pubapp.bd.userdef.UserDefSaveRule; +import nc.itf.bd.material.baseinfo.IMaterialBaseInfoQueryService; import nc.itf.uap.rbac.IUserManageQuery_C; import nc.jdbc.framework.generator.SequenceGenerator; import nc.jdbc.framework.processor.ColumnListProcessor; @@ -42,6 +43,7 @@ import nc.util.mmf.framework.base.MMMapUtil; import nc.util.mmf.framework.base.MMNumberUtil; import nc.util.mmf.framework.base.MMValueCheck; import nc.util.mmf.framework.db.MMSqlBuilder; +import nc.vo.bd.material.MaterialVO; import nc.vo.bd.material.prod.MaterialProdVO; import nc.vo.bd.material.stock.MaterialStockVO; import nc.vo.bd.vermatch.enumeration.MfgTypeEnum; @@ -855,7 +857,13 @@ public class PMOBPUtil { for (PMOAggVO vo : aggvos) { for(PMOItemVO itemVO : vo.getChildrenVO()) { if(itemVO.getPk_org().equals(org)) { - xbitemList.add(itemVO); +// 只有实际独立需求的流程生产订单生成相同批次号 根据上游单据类型为销售订单进行判断 +// if(itemVO.getVsrctype().equals("30")){ +// xbitemList.add(itemVO); +// } + if(checkMaterial(itemVO.getCmaterialvid(),itemVO.getPk_org())){ + xbitemList.add(itemVO); + } } } } @@ -891,6 +899,31 @@ public class PMOBPUtil { } } + private boolean checkMaterial(String cmaterialid,String org) throws BusinessException { + // 根据物料档案库存信息页签批次管理字段判断是否生成批次号,只有勾选批次管理的物料才生成生产批次号 + + MaterialVO[] vos = NCLocator.getInstance().lookup(IMaterialBaseInfoQueryService.class).queryDataByPks(new String[]{cmaterialid}); + for (MaterialVO vo : vos) { + String whereSql = " pk_material='" + vo.getPk_material() + "' and pk_org='" + org + "' and nvl(dr,0)=0 "; + List list = null; + try { + list = (List) new BaseDAO().retrieveByClause(MaterialStockVO.class, whereSql); + } catch (DAOException e) { + e.printStackTrace(); + } + if(!list.isEmpty()){ + for (MaterialStockVO materialStockVO:list){ + if(materialStockVO.getWholemanaflag().booleanValue()) { + return true; + } + } + } + + } + + return false; + } + public Map getInwarehouseid(String[] cmaterialvids, String pk_org) { Map stockMap = new HashMap(); if (MMArrayUtil.isEmpty(cmaterialvids)) { From 9aba447f085676b9bf32c2daa4d5bcf413c72b73 Mon Sep 17 00:00:00 2001 From: lihao Date: Mon, 20 Oct 2025 20:39:15 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=8E=A8=E9=80=81=E8=AF=B7=E8=B4=AD?= =?UTF-8?q?=E6=97=B6=E5=80=99=E9=83=A8=E5=88=86=E9=83=A8=E9=97=A8=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E5=A4=84=E7=90=86=E8=BF=9B=E5=85=A5=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E4=B8=AD=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pickm/action/PickmToBuyingreqAction.java | 46 ++++++++++++++++++- .../action/QCRptDataPushtoQmsAction.java | 6 +-- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToBuyingreqAction.java b/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToBuyingreqAction.java index 485b3e97..ba077cd5 100644 --- a/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToBuyingreqAction.java +++ b/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToBuyingreqAction.java @@ -1,14 +1,18 @@ package nccloud.web.mmpac.pickm.action; + import nc.bs.dao.BaseDAO; import nc.bs.dao.DAOException; import nc.bs.framework.common.InvocationInfoProxy; +import nc.bs.framework.common.NCLocator; import nc.bs.uapbd.util.MyHelper; import nc.itf.ic.m4a.IGeneralInMaintain; import nc.itf.mmpac.pickm.IPickmQueryService; import nc.itf.pu.m20.IPraybillApprove; import nc.itf.pu.m20.IPraybillMaintain; import nc.itf.scctpub.reference.uap.pf.PfServiceScmUtil; +import nc.itf.uap.pf.IPFBusiAction; +import nc.itf.uap.pf.IWorkflowMachine; import nc.itf.uap.pf.busiflow.PfButtonClickContext; import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.MapListProcessor; @@ -29,6 +33,8 @@ import nc.vo.pub.ISuperVO; import nc.vo.pub.compiler.PfParameterVO; import nc.vo.pub.lang.UFDate; import nc.vo.pub.lang.UFDouble; +import nc.vo.pub.pf.workflow.IPFActionName; +import nc.vo.pub.workflownote.WorkflownoteVO; import nccloud.api.rest.utils.ResultMessageUtil; import nccloud.dto.mmpac.pickm.pub.entity.PickmQueryInfoDTO; import nccloud.framework.core.exception.ExceptionUtils; @@ -37,6 +43,7 @@ import nccloud.framework.service.ServiceLocator; import nccloud.framework.web.action.itf.ICommonAction; import nccloud.framework.web.container.IRequest; import nccloud.framework.web.json.JsonFactory; +import nccloud.pubitf.riart.approve.IApproveService; import java.util.*; @@ -106,7 +113,31 @@ public class PickmToBuyingreqAction implements ICommonAction { updetaPmoNum(updateList); } IPraybillApprove approve= ServiceLocator.find(IPraybillApprove.class); - Object res= PfServiceScmUtil.processBatch("APPROVE", "20", insertVos, null, null); + List approveVos=new ArrayList<>(); + Map configParams = MyHelper.getConfigParams("zdh-config", null); + for (PraybillVO prayVO : insertVos) { + String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, prayVO.getHVO().getPk_org()); + if (!checkIfOrg(orgCode, configParams)) { + IApproveService appService = NCLocator.getInstance().lookup(IApproveService.class); + boolean flag=appService.hasApproveFlow(prayVO.getHVO().getVtrantypecode(), prayVO.getHVO().getPk_praybill()); + if(flag){ + Object res1= PfServiceScmUtil.processBatch("SAVE", "20", new PraybillVO[]{prayVO}, null, null); + }else{ + approveVos.add(prayVO); + } + + }else{ + approveVos.add(prayVO); + } + } + if(approveVos.isEmpty()){ + Map returnMap = new HashMap<>(); + returnMap.put("data", insertVos); + returnMap.put("success", true); + + return returnMap; + } + Object res= PfServiceScmUtil.processBatch("APPROVE", "20", approveVos.toArray(new PraybillVO[0]), null, null); Map returnMap = new HashMap<>(); returnMap.put("data", res); @@ -122,6 +153,19 @@ public class PickmToBuyingreqAction implements ICommonAction { } } + private boolean checkIfOrg(String code, Map configParams) throws BusinessException { + String targetCode = configParams.get("org"); + if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) { + throw new BusinessException("未配置组织参数"); + } + String[] orgItem = targetCode.split(","); + for (String orgCode : orgItem) { + if (!orgCode.isEmpty() && orgCode.equals(code)) { + return false; + } + } + return true; + } private void updetaPmoNum(List> updateList) throws DAOException { BaseDAO dao = new BaseDAO(); for (Map updateMap : updateList) { diff --git a/pu/src/client/nccloud/web/pu/arrival/action/QCRptDataPushtoQmsAction.java b/pu/src/client/nccloud/web/pu/arrival/action/QCRptDataPushtoQmsAction.java index 41587652..927086a6 100644 --- a/pu/src/client/nccloud/web/pu/arrival/action/QCRptDataPushtoQmsAction.java +++ b/pu/src/client/nccloud/web/pu/arrival/action/QCRptDataPushtoQmsAction.java @@ -84,8 +84,8 @@ public class QCRptDataPushtoQmsAction implements ICommonAction { if (bvos != null && bvos.length > 0) { for (ArriveItemVO itemVO : bvos) { // 获取vbdef23字段值,处理null情况 - String vbdef23 = (String) itemVO.getAttributeValue("vbdef23"); - if (vbdef23 != null && "Y".equalsIgnoreCase(vbdef23)) { + String vbdef32 = (String) itemVO.getAttributeValue("vbdef32"); + if (vbdef32 != null && "Y".equalsIgnoreCase(vbdef32)) { needSkip = true; break; // 只要有一个明细符合,直接跳出明细循环 } @@ -181,7 +181,7 @@ public class QCRptDataPushtoQmsAction implements ICommonAction { private void updateArrveOrder(String pkArriveorder) throws DAOException { BaseDAO dao = new BaseDAO(); - String sql = "update po_arriveorder_b set vbdef23='Y' where pk_arriveorder='" + String sql = "update po_arriveorder_b set vbdef32='Y' where pk_arriveorder='" + pkArriveorder + "'"; dao.executeUpdate(sql); }