备料重算后更新请购单 增加组织和项目专用料过滤

This commit is contained in:
lihao 2025-10-29 16:55:04 +08:00
parent 6a77360408
commit 23dfbb2e05
1 changed files with 55 additions and 0 deletions

View File

@ -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<PMOAggVO> {
private Map<String, String> 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<PMOAggVO> {
}
}
}
} 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<MaterialStockVO> list = null;
try {
list = (List<MaterialStockVO>) 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<String, String> 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;
}
}