feat(mmpac): 优化流程生产订单赋值生产BOM字段逻辑
- 增加配置参数检查,只处理指定的组织 - 查询并赋值生产BOM版本号和ID - 添加异常处理和日志记录
This commit is contained in:
parent
9bb3a751d8
commit
071394bf64
|
@ -3,11 +3,16 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule;
|
||||||
import nc.bs.logging.Logger;
|
import nc.bs.logging.Logger;
|
||||||
import nc.bs.uapbd.util.MyHelper;
|
import nc.bs.uapbd.util.MyHelper;
|
||||||
import nc.impl.pubapp.pattern.rule.IRule;
|
import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
import nc.vo.bd.bom.bom0202.entity.BomVO;
|
||||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
|
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
|
||||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO;
|
import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO;
|
||||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
|
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
|
||||||
import nc.vo.org.FactoryVO;
|
import nc.vo.org.FactoryVO;
|
||||||
import nc.vo.pub.BusinessException;
|
import nc.vo.pub.BusinessException;
|
||||||
|
import nc.vo.am.common.util.StringUtils;
|
||||||
|
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流程生产订单赋值生产BOM字段
|
* 流程生产订单赋值生产BOM字段
|
||||||
|
@ -20,29 +25,55 @@ public class BeforePmoBomRule implements IRule<PMOAggVO> {
|
||||||
@Override
|
@Override
|
||||||
public void process(PMOAggVO[] vos) {
|
public void process(PMOAggVO[] vos) {
|
||||||
try {
|
try {
|
||||||
|
Map<String, String> configParams = MyHelper.getConfigParams("xb-config", null);
|
||||||
|
if (configParams.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (PMOAggVO vo : vos) {
|
for (PMOAggVO vo : vos) {
|
||||||
PMOHeadVO headVO = vo.getParentVO();
|
PMOHeadVO headVO = vo.getParentVO();
|
||||||
String pkOrg = headVO.getPk_org();
|
String pkOrg = headVO.getPk_org();
|
||||||
|
|
||||||
MyHelper.getStrValByCondition(FactoryVO.getDefaultTableName(), FactoryVO.CODE,
|
String orgCode = MyHelper.getStrValByCondition(FactoryVO.getDefaultTableName(), FactoryVO.CODE,
|
||||||
FactoryVO.PK_FACTORY + " = '" + pkOrg + "'");
|
FactoryVO.PK_FACTORY + " = '" + pkOrg + "'");
|
||||||
// 只有箱变公司才赋值生产BOM字段
|
// 只有箱变公司才赋值生产BOM字段
|
||||||
if (!"C030".equals(pkOrg)) {
|
if (checkIfOrg(orgCode, configParams)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// 箱变公司赋值生产BOM的相关字段 cbomversionid vbomversion
|
// 箱变公司赋值生产BOM的相关字段
|
||||||
PMOItemVO[] pmoItemVOS = vo.getChildrenVO();
|
PMOItemVO[] pmoItemVOS = vo.getChildrenVO();
|
||||||
for (PMOItemVO pmoItemVO : pmoItemVOS) {
|
for (PMOItemVO pmoItemVO : pmoItemVOS) {
|
||||||
// vsrctype 来源单据类型 来源销售订单的需要赋值
|
// vsrctype 来源单据类型 来源销售订单的需要赋值
|
||||||
if ("30".equals(pmoItemVO.getVsrctype())) {
|
if ("30".equals(pmoItemVO.getVsrctype())) {
|
||||||
pmoItemVO.setVbomversion(""); // 生产BOM版本号
|
// BOM状态 (FBomBillstatusEnum) 是否需要判断BOM的状态
|
||||||
pmoItemVO.setCbomversionid(""); // 生产BOM版本
|
// 根据bom版本号查询BOM(销售订单号+行号)
|
||||||
|
String bomVersion = pmoItemVO.getVsrccode() + pmoItemVO.getVsrcrowno();
|
||||||
|
String whereSql = BomVO.PK_ORG + " = '" + pkOrg + "' AND " + BomVO.HVERSION + " = '" + bomVersion + "'";
|
||||||
|
String bomId = MyHelper.getStrValByCondition(BomVO.TABLE_NAME, BomVO.CBOMID, whereSql);
|
||||||
|
if (StringUtils.isEmpty(bomId)) {
|
||||||
|
throw new BusinessException("未找到对应的BOM");
|
||||||
|
}
|
||||||
|
pmoItemVO.setVbomversion(bomVersion); // 生产BOM版本号
|
||||||
|
pmoItemVO.setCbomversionid(bomId); // 生产BOM版本
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (BusinessException e) {
|
} catch (BusinessException e) {
|
||||||
Logger.error("BeforePmoBomRule-exp:" + e.getMessage(), e);
|
Logger.error("BeforePmoBomRule-exp:" + e.getMessage(), e);
|
||||||
throw new RuntimeException(e);
|
ExceptionUtils.wrappException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean checkIfOrg(String code, Map<String, String> configParams) throws BusinessException {
|
||||||
|
String targetCode = configParams.get("xbOrg");
|
||||||
|
if (targetCode == null || StringUtils.isEmpty(targetCode)) {
|
||||||
|
throw new BusinessException("未配置组织参数");
|
||||||
|
}
|
||||||
|
String[] orgItem = targetCode.split(",");
|
||||||
|
for (String orgCode : orgItem) {
|
||||||
|
if (!orgCode.isEmpty() && orgCode.equals(code)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue