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 a828c62b..066dbc62 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 @@ -2,11 +2,15 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule; import nc.bs.dao.BaseDAO; import nc.bs.dao.DAOException; +import nc.bs.uapbd.util.MyHelper; import nc.jdbc.framework.processor.ColumnProcessor; 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.pub.BusinessException; import nc.vo.pub.lang.UFDouble; import java.math.BigDecimal; @@ -17,13 +21,28 @@ import java.util.Map; * 备料重算后更新请购单 */ public class AfterPickmRecalUpdateBuyingreqRule implements IRule { + private Map configParams; @Override 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; + } + String material= pmoItemVO.getCmaterialvid(); + if(!checkProdect(material,pkOrg)){ + continue; + } try { String pmoid=pmoItemVO.getCmoid(); UFDouble nastnum=pmoItemVO.getNastnum(); @@ -80,5 +99,41 @@ public class AfterPickmRecalUpdateBuyingreqRule implements IRule { } } } + } catch (BusinessException e) { + throw new RuntimeException(e); + } + } + /** + * 根据物料查询物料库存信息页签-是否项目专用料进行判断 + * + * @param cmaterialvid + * @param pk_org + * @return + */ + private Boolean checkProdect(String cmaterialvid, String pk_org) { + String whereSql = " pk_material='" + cmaterialvid + "' and pk_org='" + pk_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 != null && list.size() > 0) { + 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)) { + throw new BusinessException("未配置组织参数"); + } + String[] orgItem = targetCode.split(","); + for (String orgCode : orgItem) { + if (!orgCode.isEmpty() && orgCode.equals(code)) { + return false; + } + } + return true; } }