diff --git a/pu/src/private/nc/bs/pu/m23/writeback/ic/m45/Writeback23For45BP.java b/pu/src/private/nc/bs/pu/m23/writeback/ic/m45/Writeback23For45BP.java new file mode 100644 index 00000000..4c4081e9 --- /dev/null +++ b/pu/src/private/nc/bs/pu/m23/writeback/ic/m45/Writeback23For45BP.java @@ -0,0 +1,108 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.pu.m23.writeback.ic.m45; + +import java.util.HashSet; +import java.util.Set; +import nc.bs.pu.m23.plugin.ArriveBPPlugInPoint; +import nc.bs.pu.m23.writeback.ic.rule.*; +import nc.impl.pubapp.pattern.data.view.ViewQuery; +import nc.impl.pubapp.pattern.data.view.ViewUpdate; +import nc.impl.pubapp.pattern.rule.processer.AroundProcesser; +import nc.pubitf.pu.m23.ic.m45.IWriteback23For45Para; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pu.m23.entity.ArriveItemVO; +import nc.vo.pu.m23.entity.ArriveViewVO; +import nc.vo.pu.m23.utils.ArrivePublicUtil; +import nc.vo.pub.lang.UFBoolean; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nccloud.commons.lang.ArrayUtils; +import nccloud.commons.lang.StringUtils; + +public class Writeback23For45BP { + public Writeback23For45BP() { + } + + public void writeback(IWriteback23For45Para[] paras) { + if (!ArrayUtils.isEmpty(paras)) { + this.checkWritePara(paras); + String[] bidArray = ArrivePublicUtil.getWriteParaBidArray(paras); + ViewQuery q = new ViewQuery(ArriveViewVO.class); + q.setSharedHead(true); + Set bidSet = new HashSet(); + + for(int i = 0; i < bidArray.length; ++i) { + bidSet.add(bidArray[i]); + } + + ArriveViewVO[] oldViewVOArray = (ArriveViewVO[])q.query((String[])bidSet.toArray(new String[bidSet.size()])); + ArriveBPPlugInPoint point = ArriveBPPlugInPoint.Writeback23For45BP; + AroundProcesser pc = new AroundProcesser(point); + this.addBeforeFinalRule(pc, paras); + this.addAfterRule(pc, paras); + pc.before(oldViewVOArray); + String[] names = new String[]{"naccumstorenum", "bletgostate", "naccumletgoinnum"}; + ViewUpdate bo = new ViewUpdate(); + oldViewVOArray = (ArriveViewVO[])bo.update(oldViewVOArray, ArriveItemVO.class, names); + pc.after(oldViewVOArray); + } + } + + private void addAfterRule(AroundProcesser processer, IWriteback23For45Para[] paras) { + processer.addAfterRule(new ChkBStoreNumRule(UFBoolean.valueOf(paras[0].isNumUserConfirm()))); + + processer.addAfterRule(new ChknaccumstorenumRule()); + } + + private void addBeforeFinalRule(AroundProcesser processer, IWriteback23For45Para[] paras) { + processer.addBeforeFinalRule(new ChkBCreateFaCardRule()); + processer.addBeforeFinalRule(new UpdateBBStoreNumRule(paras)); + processer.addBeforeFinalRule(new UpdateViewStoreNumRule(paras)); + processer.addBeforeFinalRule(new WriteAccumLetgoInnumRule(paras)); + } + + private void checkWritePara(IWriteback23For45Para[] paras) { + for(IWriteback23For45Para para : paras) { + if (StringUtils.isEmpty(para.getHID())) { + String message = NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0092"); + ExceptionUtils.wrappBusinessException(message); + } + + if (StringUtils.isEmpty(para.getBID())) { + String message = NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0093"); + ExceptionUtils.wrappBusinessException(message); + } + } + + } + + public void writebackSagasCheck(IWriteback23For45Para[] paras) { + if (!ArrayUtils.isEmpty(paras)) { + this.checkWritePara(paras); + String[] bidArray = ArrivePublicUtil.getWriteParaBidArray(paras); + ViewQuery q = new ViewQuery(ArriveViewVO.class); + q.setSharedHead(true); + Set bidSet = new HashSet(); + + for(int i = 0; i < bidArray.length; ++i) { + bidSet.add(bidArray[i]); + } + + ArriveViewVO[] oldViewVOArray = (ArriveViewVO[])q.query((String[])bidSet.toArray(new String[bidSet.size()])); + ArriveBPPlugInPoint point = ArriveBPPlugInPoint.Writeback23For45BP; + AroundProcesser pc = new AroundProcesser(point); + this.addBeforeFinalSagasCheckRule(pc, paras); + pc.before(oldViewVOArray); + } + } + + private void addBeforeFinalSagasCheckRule(AroundProcesser processer, IWriteback23For45Para[] paras) { + processer.addBeforeFinalRule(new ChkBCreateFaCardRule()); + processer.addBeforeFinalRule(new UpdateBBStoreNumRule(paras, true)); + processer.addBeforeFinalRule(new UpdateViewStoreNumRule(paras)); + processer.addBeforeFinalRule(new WriteAccumLetgoInnumRule(paras, true)); + } +} diff --git a/pu/src/private/nc/bs/pu/m23/writeback/ic/rule/ChknaccumstorenumRule.java b/pu/src/private/nc/bs/pu/m23/writeback/ic/rule/ChknaccumstorenumRule.java new file mode 100644 index 00000000..354a1e21 --- /dev/null +++ b/pu/src/private/nc/bs/pu/m23/writeback/ic/rule/ChknaccumstorenumRule.java @@ -0,0 +1,56 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.pu.m23.writeback.ic.rule; + +import nc.bs.dao.BaseDAO; +import nc.bs.dao.DAOException; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.jdbc.framework.processor.ColumnProcessor; +import nc.jdbc.framework.processor.MapProcessor; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pu.m23.entity.ArriveItemVO; +import nc.vo.pu.m23.entity.ArriveViewVO; +import nc.vo.pub.BusinessException; +import nc.vo.pub.lang.UFDouble; +import nc.vo.pubapp.pattern.data.ValueUtils; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; + +import java.util.Map; + +public class ChknaccumstorenumRule implements IRule { + public ChknaccumstorenumRule() { + } + + public void process(ArriveViewVO[] vos) { + if (vos != null && vos.length != 0) { + for(ArriveViewVO view : vos) { + try { + UFDouble naccumstorenum1= getNaccumstorenum(view.getBVO().getPk_arriveorder_b()); + } catch (DAOException e) { + throw new RuntimeException(e); + } + UFDouble naccumstorenum = view.getBVO().getNaccumstorenum(); + Object vbdef33 = view.getBVO().getVbdef33(); + if(null != vbdef33 && null!=naccumstorenum && naccumstorenum.compareTo(new UFDouble(String.valueOf(vbdef33)))>0) { + try { + throw new BusinessException("累计入库主数量大于最终需求数量不能生成采购入库!"); + } catch (BusinessException e) { + throw new RuntimeException(e); + } + } + } + + } + } + + private UFDouble getNaccumstorenum(String pkArriveorderB) throws DAOException { + + // csourcebid + String mrlsql = "select naccumstorenum from po_arriveorder_b where pk_arriveorder_b = '" + pkArriveorderB + "' "; + Object mrl = new BaseDAO().executeQuery(mrlsql, new ColumnProcessor()); + return new UFDouble(String.valueOf(mrl)); + } +}