PMOApproveBP-代码同步

This commit is contained in:
mzr 2025-10-31 19:31:52 +08:00
parent bb40b3e24c
commit dacd990975
2 changed files with 70 additions and 0 deletions

View File

@ -40,6 +40,9 @@ public class PMOApproveBP {
processer.addBeforeRule(operTypeRule);
IRule<PMOAggVO> mmatoMaterialCheckRule = new MMATOMaterialCheckRule((String) null, "cmaterialvid", "cffileid");
processer.addBeforeRule(mmatoMaterialCheckRule);
//提交前根据组织参数判断备料计划表体是否存在仓库 zhangxinah
IRule<PMOAggVO> coutstockidCheckRule = new CoutstockidCheckBeforeRule();
processer.addBeforeRule(coutstockidCheckRule);
}
private void addApproveAfterRule(CompareAroundProcesser<PMOAggVO> processer) {

View File

@ -0,0 +1,67 @@
package nc.bs.mmpac.pmo.pac0002.bp.rule;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.itf.mmpac.pickm.IPickmQueryService;
import nc.util.mmf.framework.base.MMArrayUtil;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
import nc.vo.pub.BusinessException;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.bc.pub.util.SysParaInitQuery;
import nc.vo.mmpac.pickm.entity.AggPickmVO;
import nc.vo.mmpac.pickm.entity.PickmHeadVO;
import nc.vo.mmpac.pickm.entity.PickmItemVO;
import java.util.List;
import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.NCLocator;
public class CoutstockidCheckBeforeRule extends Object implements IRule<PMOAggVO> {
public void process(PMOAggVO[] bills) {
if (MMArrayUtil.isEmpty(bills)) {
return;
}
for (PMOAggVO bill : bills) {
try {
checkStockid(bill);
} catch (BusinessException e) {
ExceptionUtils.wrappException(e);
}
}
}
private void checkStockid(PMOAggVO bill) throws BusinessException {
String targetCode = SysParaInitQuery.getParaString(bill.getParentVO().getPk_org(), "Beiliao_Warehouse");
// 根据组织判断是否启用组织参数对应各行产品的备料计划行上的发料仓库不能为空如果为空不能提交给予报错
if ("Y".equals(targetCode)) {
String scddno = bill.getParentVO().getVbillcode();
PMOItemVO[] bodys = bill.getChildrenVO();
IPickmQueryService service = NCLocator.getInstance().lookup(IPickmQueryService.class);
for (PMOItemVO pmoItemVO : bodys) {
String cmoid = pmoItemVO.getPrimaryKey();
String sql = " csourcebillrowid='" + cmoid + "' and nvl(dr,0)=0 ";
List<PickmHeadVO> pickmList = (List<PickmHeadVO>) new BaseDAO().retrieveByClause(PickmHeadVO.class,
sql);
if (pickmList != null && pickmList.size() == 1) {
String cpickmid = pickmList.get(0).getPrimaryKey();
String vbillno = pickmList.get(0).getVbillcode();
AggPickmVO pickmaggvo = service.querySingleBillByPk(cpickmid);
if (pickmaggvo != null) {
PickmItemVO[] bvos = (PickmItemVO[]) pickmaggvo.getChildrenVO();
if (bvos != null && bvos.length > 0) {
for (PickmItemVO bvo : bvos) {
if (bvo.getCoutstockid() == null) {
throw new BusinessException(
"生产订单单号:"+scddno+",备料计划单号:" + vbillno + ",行号:" + bvo.getVrowno() + ",发料仓库为空,不允许提交!");
}
}
}
}
} else {
throw new BusinessException("未找到该生产订单对应的备料计划!!");
}
}
}
}
}