diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java index a388363e..ef470887 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java @@ -40,6 +40,9 @@ public class PMOApproveBP { processer.addBeforeRule(operTypeRule); IRule mmatoMaterialCheckRule = new MMATOMaterialCheckRule((String) null, "cmaterialvid", "cffileid"); processer.addBeforeRule(mmatoMaterialCheckRule); + //提交前根据组织参数判断备料计划表体是否存在仓库 zhangxinah + IRule coutstockidCheckRule = new CoutstockidCheckBeforeRule(); + processer.addBeforeRule(coutstockidCheckRule); } private void addApproveAfterRule(CompareAroundProcesser processer) { diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/CoutstockidCheckBeforeRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/CoutstockidCheckBeforeRule.java new file mode 100644 index 00000000..68f19175 --- /dev/null +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/CoutstockidCheckBeforeRule.java @@ -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 { + + 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 pickmList = (List) 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("未找到该生产订单对应的备料计划!!"); + } + } + } + } + +}