From 0685e67bd97ff5dc94997dc7e4b62c7637bcc082 Mon Sep 17 00:00:00 2001 From: mzr Date: Tue, 18 Nov 2025 13:43:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B7=E8=B4=AD=E5=8D=95=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=97=97=E8=88=B0=E7=89=88SRM-=E6=9B=B4=E6=96=B0=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E9=9C=80=E6=B1=82=E6=95=B0=E9=87=8F-=E8=A7=84?= =?UTF-8?q?=E5=88=99=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AfterPickmRecalUpdateBuyingreqRule.java | 169 +++++++++--------- 1 file changed, 89 insertions(+), 80 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterPickmRecalUpdateBuyingreqRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterPickmRecalUpdateBuyingreqRule.java index e5c9973b..4b713bf0 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterPickmRecalUpdateBuyingreqRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterPickmRecalUpdateBuyingreqRule.java @@ -1,14 +1,16 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule; +import com.alibaba.fastjson.JSONObject; import nc.bs.dao.BaseDAO; import nc.bs.dao.DAOException; import nc.bs.framework.common.NCLocator; +import nc.bs.mmpac.pmo.pac0002.bp.rule.util.SyncSrmPrayBillUtil; import nc.bs.uapbd.util.MyHelper; +import nc.impl.pubapp.pattern.rule.IRule; import nc.itf.pu.m20.IPraybillMaintain; import nc.jdbc.framework.processor.MapListProcessor; import nc.vo.bd.material.stock.MaterialStockVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; -import nc.impl.pubapp.pattern.rule.IRule; import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; import nc.vo.org.OrgVO; import nc.vo.pu.m20.entity.PraybillItemVO; @@ -16,7 +18,6 @@ import nc.vo.pu.m20.entity.PraybillVO; import nc.vo.pub.BusinessException; import nc.vo.pub.lang.UFDouble; import nc.vo.pubapp.pattern.model.transfer.bill.ClientBillToServer; -import nccloud.framework.service.ServiceLocator; import nccloud.pubitf.pu.buyingreq.service.IBuyingReqQueryCardInfoService; import nccloud.web.pu.buyingreq.util.PublicUtil; @@ -36,89 +37,97 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule { public void process(PMOAggVO[] pmoAggVOS) { BaseDAO dao = new BaseDAO(); try { - for (PMOAggVO pmoAggVO : pmoAggVOS) { - for (PMOItemVO pmoItemVO : pmoAggVO.getChildrenVO()) { - configParams = MyHelper.getConfigParams("xb-config", null); - if (configParams.isEmpty()) { - throw new BusinessException("箱变的QMS接口缺少配置"); - } - String pkOrg = pmoAggVO.getParentVO().getPk_org(); - String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); - if (checkIfOrg(orgCode, configParams)) { - continue; - } + for (PMOAggVO pmoAggVO : pmoAggVOS) { + for (PMOItemVO pmoItemVO : pmoAggVO.getChildrenVO()) { + configParams = MyHelper.getConfigParams("xb-config", null); + if (configParams.isEmpty()) { + throw new BusinessException("箱变的QMS接口缺少配置"); + } + String pkOrg = pmoAggVO.getParentVO().getPk_org(); + String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); + if (checkIfOrg(orgCode, configParams)) { + continue; + } - try { - String pmoid = pmoItemVO.getCmoid(); - UFDouble nastnum = pmoItemVO.getNastnum(); - // 查询备料计划 - String pickmsql = "select cpickm_bid,cbmaterialvid,nplanoutnum from mm_pickm_b where cpickmid in ( select cpickmid from mm_pickm where csourcebillrowid='" + pmoid + "' and dr=0) and dr = 0"; - List> hmateral = (List>) dao.executeQuery(pickmsql, new MapListProcessor()); + try { + String pmoid = pmoItemVO.getCmoid(); + UFDouble nastnum = pmoItemVO.getNastnum(); + // 查询备料计划 + String pickmsql = "select cpickm_bid,cbmaterialvid,nplanoutnum from mm_pickm_b where cpickmid in ( select cpickmid from mm_pickm where csourcebillrowid='" + pmoid + "' and dr=0) and dr = 0"; + List> hmateral = (List>) dao.executeQuery(pickmsql, new MapListProcessor()); - List pmobids = new ArrayList(); - List pmoids = new ArrayList(); - // 根据 生产订单-备料计划-计划订单-请购单-采购订单-到货单-采购入库 依次更新下游单据 - for (Map map : hmateral) { - if (null == map.get("cbmaterialvid")) { + List pmobids = new ArrayList(); + List pmoids = new ArrayList(); + // 根据 生产订单-备料计划-计划订单-请购单-采购订单-到货单-采购入库 依次更新下游单据 + for (Map map : hmateral) { + if (null == map.get("cbmaterialvid")) { + continue; + } + String material = map.get("cbmaterialvid").toString(); + if (!checkProdect(material, pkOrg)) { continue; - } - String material = map.get("cbmaterialvid").toString(); - if (!checkProdect(material, pkOrg)) { - continue; - } - // 查询计划订单 - String plosql = "select cpoid from mm_plo where vsrcbid ='" + map.get("cpickm_bid") + "' and dr = 0"; - List> ploList = (List>) dao.executeQuery(plosql, new MapListProcessor()); - for (Map plo : ploList) { - // 查询请购单 - String buyingreqsql = "select pk_praybill,pk_praybill_b,nnum from po_praybill_b where csourcebid ='" + plo.get("cpoid") + "' and dr = 0"; - List> buyingreq = (List>) dao.executeQuery(buyingreqsql, new MapListProcessor()); - for (Map map2 : buyingreq) { + } + // 查询计划订单 + String plosql = "select cpoid from mm_plo where vsrcbid ='" + map.get("cpickm_bid") + "' and dr = 0"; + List> ploList = (List>) dao.executeQuery(plosql, new MapListProcessor()); + for (Map plo : ploList) { + // 查询请购单 + String buyingreqsql = "select pk_praybill,pk_praybill_b,nnum from po_praybill_b where csourcebid ='" + plo.get("cpoid") + "' and dr = 0"; + List> buyingreq = (List>) dao.executeQuery(buyingreqsql, new MapListProcessor()); + for (Map map2 : buyingreq) { - if (UFDouble.ZERO_DBL.compareTo(new UFDouble(map.get("nplanoutnum").toString())) == 0) { - pmobids.add(map2.get("pk_praybill_b").toString()); - pmoids.add(map2.get("pk_praybill").toString()); - } - if (new UFDouble((BigDecimal) map2.get("nnum")).compareTo(new UFDouble((BigDecimal) map.get("nplanoutnum"))) > 0) { - // 更新请购单 - String sql = "update po_praybill_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_praybill_b='" - + map2.get("pk_praybill_b") + "'"; - dao.executeUpdate(sql); - // 查询采购订单 - String ordersql = "select pk_order_b from po_order_b where csourcebid ='" + map2.get("pk_praybill_b") + "' and dr = 0"; - List> orders = (List>) dao.executeQuery(ordersql, new MapListProcessor()); - for (Map order : orders) { - // 更新采购订单 - String updateOrderSql = "update po_order_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_order_b='" - + order.get("pk_order_b") + "'"; - dao.executeUpdate(updateOrderSql); - // 查询到货单 - String arriveordersql = "select pk_arriveorder_b from po_arriveorder_b where csourcebid ='" + order.get("pk_order_b") + "' and dr = 0"; - List> arriveorders = (List>) dao.executeQuery(arriveordersql, new MapListProcessor()); - for (Map arriveorder : arriveorders) { - // 更新到货单 - String updatearriveorderSql = "update po_arriveorder_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_arriveorder_b='" - + arriveorder.get("pk_arriveorder_b") + "'"; - dao.executeUpdate(updatearriveorderSql); - // 已经采购入库的数据不处理 + if (UFDouble.ZERO_DBL.compareTo(new UFDouble(map.get("nplanoutnum").toString())) == 0) { + pmobids.add(map2.get("pk_praybill_b").toString()); + pmoids.add(map2.get("pk_praybill").toString()); + } + if (new UFDouble((BigDecimal) map2.get("nnum")).compareTo(new UFDouble((BigDecimal) map.get("nplanoutnum"))) > 0) { + // 更新请购单 + String sql = "update po_praybill_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_praybill_b='" + + map2.get("pk_praybill_b") + "'"; + int num = dao.executeUpdate(sql); + if (num > 0 && "C030".equals(orgCode)) { + SyncSrmPrayBillUtil billUtil = new SyncSrmPrayBillUtil(); + JSONObject reqData = new JSONObject(); + reqData.put("org", "C030");// 组织编码 + reqData.put("erpId", map2.get("pk_praybill_b"));// 请购单表体主键 + reqData.put("mainNum", map.get("nplanoutnum"));// 主数量 + billUtil.reqBIPBill(reqData); + } + // 查询采购订单 + String ordersql = "select pk_order_b from po_order_b where csourcebid ='" + map2.get("pk_praybill_b") + "' and dr = 0"; + List> orders = (List>) dao.executeQuery(ordersql, new MapListProcessor()); + for (Map order : orders) { + // 更新采购订单 + String updateOrderSql = "update po_order_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_order_b='" + + order.get("pk_order_b") + "'"; + dao.executeUpdate(updateOrderSql); + // 查询到货单 + String arriveordersql = "select pk_arriveorder_b from po_arriveorder_b where csourcebid ='" + order.get("pk_order_b") + "' and dr = 0"; + List> arriveorders = (List>) dao.executeQuery(arriveordersql, new MapListProcessor()); + for (Map arriveorder : arriveorders) { + // 更新到货单 + String updatearriveorderSql = "update po_arriveorder_b set vbdef33='" + map.get("nplanoutnum") + "' where pk_arriveorder_b='" + + arriveorder.get("pk_arriveorder_b") + "'"; + dao.executeUpdate(updatearriveorderSql); + // 已经采购入库的数据不处理 + } } } } } + if (pmobids.size() > 0) { + buyingreqRowClose(pmobids, pmoids); + } } - if (pmobids.size() > 0) { - buyingreqRowClose(pmobids,pmoids); - } + + + } catch (DAOException ex) { + throw new RuntimeException(ex); + } catch (BusinessException ex) { + throw new RuntimeException(ex); } - - - } catch (DAOException ex) { - throw new RuntimeException(ex); - } catch (BusinessException ex) { - throw new RuntimeException(ex); } } - } } catch (BusinessException e) { throw new RuntimeException(e); } @@ -134,14 +143,14 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule { } for (PraybillVO vo : rvo) { ClientBillToServer tool = new ClientBillToServer(); - PraybillVO[] lightVOs = (PraybillVO[])tool.construct(new PraybillVO[]{vo}, new PraybillVO[]{vo}); + PraybillVO[] lightVOs = (PraybillVO[]) tool.construct(new PraybillVO[]{vo}, new PraybillVO[]{vo}); // 过滤需要关闭的请购单行 - for(PraybillVO storeReqAppVO : lightVOs) { + for (PraybillVO storeReqAppVO : lightVOs) { PraybillItemVO[] bvos = storeReqAppVO.getBVO(); List newItemVo = new ArrayList<>(lightVOs.length); if (bvos != null && bvos.length > 0) { - for(int i = 0; i < bvos.length; ++i) { - if (pmobids.contains(bvos[i].getPk_praybill_b()) ) { + for (int i = 0; i < bvos.length; ++i) { + if (pmobids.contains(bvos[i].getPk_praybill_b())) { bvos[i].setAttributeValue("vclosereason", reason); newItemVo.add(bvos[i]); } @@ -149,12 +158,11 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule { } storeReqAppVO.setBVO(newItemVo.toArray(new PraybillItemVO[0])); } - IPraybillMaintain orderCloseService =NCLocator.getInstance().lookup(IPraybillMaintain.class); + IPraybillMaintain orderCloseService = NCLocator.getInstance().lookup(IPraybillMaintain.class); orderCloseService.closeBillRow(lightVOs); } - } /** @@ -173,10 +181,11 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule { e.printStackTrace(); } if (list != null && list.size() > 0) { - return list.get(0).getFixasst2()==null?false:list.get(0).getFixasst2().booleanValue(); + return list.get(0).getFixasst2() == null ? false : list.get(0).getFixasst2().booleanValue(); } return false; } + private boolean checkIfOrg(String code, Map configParams) throws BusinessException { String targetCode = configParams.get("xbOrg"); if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) {