diff --git a/mmpac/src/client/nccloud/web/mmpac/pickm/query/PickmDeliverAction.java b/mmpac/src/client/nccloud/web/mmpac/pickm/query/PickmDeliverAction.java index 484ffea..2392086 100644 --- a/mmpac/src/client/nccloud/web/mmpac/pickm/query/PickmDeliverAction.java +++ b/mmpac/src/client/nccloud/web/mmpac/pickm/query/PickmDeliverAction.java @@ -9,14 +9,20 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; + +import nc.bs.dao.BaseDAO; import nc.bs.framework.common.InvocationInfoProxy; import nc.itf.mmpac.pickm.IPickmBusinessService; +import nc.jdbc.framework.processor.ColumnProcessor; +import nc.jdbc.framework.processor.MapProcessor; import nc.pubitf.mmpac.pickm.mo.IPickmQueryServiceForMO; import nc.util.mmf.framework.base.MMValueCheck; import nc.vo.ml.NCLangRes4VoTransl; import nc.vo.mmpac.pickm.entity.AggPickmVO; import nc.vo.mmpac.pickm.entity.PickmItemVO; import nc.vo.mmpac.pickm.param.PickmTransParam; +import nc.vo.pub.BusinessException; +import nc.vo.pub.lang.UFDate; import nc.vo.pubapp.res.NCModule; import nccloud.dto.mmpac.pickm.pub.entity.PickmQueryInfoDTO; import nccloud.framework.core.exception.ExceptionUtils; @@ -89,6 +95,22 @@ public class PickmDeliverAction implements ICommonAction { for(AggPickmVO agg : aggVOs) { for(PickmItemVO item : (PickmItemVO[])agg.getChildrenVO()) { +// 流程生产订单明细表 + String id=agg.getParentVO().getVfirstmorowid(); + if(null != id &&!id.isEmpty()){ + String sql = "SELECT m.twillendtime from mm_mo m "+ + "WHERE\n" + + "\tm.cmoid = '"+id+"' "; + BaseDAO dao = new BaseDAO(); + String data =(String) dao.executeQuery(sql, new ColumnProcessor()); + + UFDate now=new UFDate(); +// 领料校验 当前时间必须在计划结束时间前七天 + if(null!=data && (now.compareTo(new UFDate(data)) >0 || now.getDateAfter(7).compareTo(new UFDate(data)) >0)){ + continue; + }; + + } pks.add(item.getCpickm_bid()); } } @@ -102,6 +124,9 @@ public class PickmDeliverAction implements ICommonAction { deliverAppcode = "400802808"; deliverPagecode = "5008010501"; } + if(pks.isEmpty()){ + pks.add(""); + } Map returnMap = new HashMap(); returnMap.put("pks", pks.toArray(new String[0])); diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMODeleteBP.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMODeleteBP.java new file mode 100644 index 0000000..6dfe476 --- /dev/null +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMODeleteBP.java @@ -0,0 +1,102 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.mmpac.pmo.pac0002.bp; + +import nc.bs.mmpac.pmo.pac0002.bp.rule.WithUpdatePickmRule; +import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint; +import nc.bs.mmpac.pmo.pac0002.rule.PMOATPUpdateWithParaRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMODeleteAutoDeleteMosRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMODeleteAutoDeletePutPlanRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMODeleteBatchCodeRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMODeletePickmRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMODeleteSNRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMOMarkWrSNWhenDeleteRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckDeleteHaveSubRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckDeleteStatusRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckSnBindRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckTurnedDeleteRule; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteDeleteNum4INVP; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteDeleteNum4MPS; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteDeleteNum4PMO; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteDeleteNum4PSCRecive; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteDeleteNum4PSM; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteDeleteNum4Renovate; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteDeleteNum4SFC; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteDeleteNum4SO; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteDeleteNum4TO; +import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule; +import nc.bs.pubapp.pub.rule.ReturnBillCodeRule; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.impl.pubapp.pattern.rule.processer.AroundProcesser; +import nc.util.mmf.framework.gc.GCDeleteBPTemplate; +import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; +import nc.vo.mmpac.pmo.pac0002.util.PmoSagaUtil; + +public class PMODeleteBP { + public PMODeleteBP() { + } + + public void delete(PMOAggVO[] bills) { + GCDeleteBPTemplate bp = new GCDeleteBPTemplate(PMOPluginPoint.DELETE); + IRule checkFrozenRule = new MMVOSagaFrozenValidateRule(true); + checkFrozenRule.process(bills); + PmoSagaUtil.addSagaAndCompensate4Delete(bills); + this.addBeforeRule(bp.getAroundProcesser()); + this.addAfterRule(bp.getAroundProcesser()); + bp.delete(bills); + } + + private void addBeforeRule(AroundProcesser processer) { + IRule statusRule = new PMOCheckDeleteStatusRule(); + processer.addBeforeRule(statusRule); + IRule checkturnrule = new PMOCheckTurnedDeleteRule(); + processer.addBeforeRule(checkturnrule); + IRule snBindRule = new PMOCheckSnBindRule(); + processer.addBeforeRule(snBindRule); + IRule checkFactoryrule = new PMOATPUpdateWithParaRule(true, "55A2"); + processer.addBeforeRule(checkFactoryrule); + IRule rewritePSCRecive = new RewriteDeleteNum4PSCRecive(); + processer.addBeforeRule(rewritePSCRecive); + IRule rewritewr = new RewriteDeleteNum4Renovate(); + processer.addBeforeRule(rewritewr); + IRule rewriteso = new RewriteDeleteNum4SO(); + processer.addBeforeRule(rewriteso); + IRule rewritepsm = new RewriteDeleteNum4PSM(); + processer.addBeforeRule(rewritepsm); + IRule rewritepo = new RewriteDeleteNum4MPS(); + processer.addBeforeRule(rewritepo); + IRule rewriteinvp = new RewriteDeleteNum4INVP(); + processer.addBeforeRule(rewriteinvp); + IRule rewriteto = new RewriteDeleteNum4TO(); + processer.addBeforeRule(rewriteto); + IRule rewritesfc = new RewriteDeleteNum4SFC(); + processer.addBeforeRule(rewritesfc); + } + + private void addAfterRule(AroundProcesser processer) { + IRule checksubbill = new PMOCheckDeleteHaveSubRule(); + processer.addAfterRule(checksubbill); + IRule pmorule = new RewriteDeleteNum4PMO(); + processer.addAfterRule(pmorule); + IRule deletePickmRule = new PMODeletePickmRule(); + processer.addAfterRule(deletePickmRule); + IRule deletebatchbill = new PMODeleteBatchCodeRule(); + processer.addAfterRule(deletebatchbill); + IRule autoDeletePutPlan = new PMODeleteAutoDeletePutPlanRule(); + processer.addAfterRule(autoDeletePutPlan); + IRule autoDeleteMos = new PMODeleteAutoDeleteMosRule(); + processer.addAfterRule(autoDeleteMos); + IRule snDeleteRule = new PMODeleteSNRule(); + processer.addAfterRule(snDeleteRule); + IRule wrMarkRule = new PMOMarkWrSNWhenDeleteRule(); + processer.addAfterRule(wrMarkRule); + IRule checkFactoryrule = new PMOATPUpdateWithParaRule(false, "55A2"); + processer.addAfterRule(checkFactoryrule); + IRule billcoderule = new ReturnBillCodeRule("55A2", "vbillcode", "pk_group", "pk_org"); + processer.addAfterRule(billcoderule); + processer.addAfterRule(new WithUpdatePickmRule()); + } +} diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/WithUpdatePickmRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/WithUpdatePickmRule.java new file mode 100644 index 0000000..c8a3977 --- /dev/null +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/WithUpdatePickmRule.java @@ -0,0 +1,79 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.mmpac.pmo.pac0002.bp.rule; + +import java.util.ArrayList; +import java.util.List; + +import nc.bs.dao.BaseDAO; +import nc.bs.dao.DAOException; +import nc.bs.mmpac.pmo.pac0002.bp.service.PMOSNServiceAdapter; +import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPSNUtil; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.util.mmf.framework.base.MMValueCheck; +import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; +import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; +import nc.vo.mmpac.wr.param.WrSerialCodeMarkParamForMO; +import nc.vo.pu.m20.entity.PraybillItemVO; +import nc.vo.pu.m20.entity.PraybillVO; +import nc.vo.pub.BusinessException; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nccloud.commons.lang.ArrayUtils; + +/** + * 娴佺▼鐢熸垚璁㈠崟鍒犻櫎鏃跺洖鍐欏鏂欒鍒掓槸鍚︿笅杈惧瓧娈 + */ +public class WithUpdatePickmRule implements IRule { + public WithUpdatePickmRule() { + } + + public void process(PMOAggVO[] vos) { + if (!ArrayUtils.isEmpty(vos)) { + try { + List pk= new ArrayList(); + for (PMOAggVO vo : vos) { + PMOItemVO[] praybillItemVOS=vo.getChildrenVO(); + for (PMOItemVO praybillItemVO : praybillItemVOS) { + if("55A3".equals(praybillItemVO.getVsrctype())){ + pk.add(praybillItemVO.getVsrcbid()); + } + } + } + if(!pk.isEmpty()){ + //鍥炲啓鏄惁涓嬫柟涓烘槸 + updetaPmo(pk); + } + + + } catch (Exception e) { + ExceptionUtils.wrappException(e); + } + + } + } + private void updetaPmo(List arrayList) throws DAOException { + String result = ""; + StringBuilder sb = new StringBuilder(); + if (arrayList.size() > 1) { + for (int i = 0; i < arrayList.size(); i++) { + + + sb.append("'").append(arrayList.get(i)).append("'"); + if (i < arrayList.size() - 1) { + sb.append(","); + } + } + + result = sb.toString(); + } else { + result = "'" + (String) arrayList.get(0) + "'"; + } + String sql = " update mm_pickm_b set vbdef13='N' where mm_pickm_b.cpickm_bid in(" + result + ")"; + + BaseDAO dao = new BaseDAO(); + dao.executeUpdate(sql); + } +} diff --git a/pu/src/private/nc/bs/pu/m20/maintain/PraybillDeleteBP.java b/pu/src/private/nc/bs/pu/m20/maintain/PraybillDeleteBP.java new file mode 100644 index 0000000..17f1350 --- /dev/null +++ b/pu/src/private/nc/bs/pu/m20/maintain/PraybillDeleteBP.java @@ -0,0 +1,95 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.pu.m20.maintain; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import nc.bs.pu.m20.maintain.rule.ATPAfterUpdateRule; +import nc.bs.pu.m20.maintain.rule.ATPBeforeUpdateRule; +import nc.bs.pu.m20.maintain.rule.ReturnBillCodeRule; +import nc.bs.pu.m20.maintain.rule.delete.*; +import nc.bs.pu.m20.plugin.PraybillPluginPoint; +import nc.bs.scmpub.rule.VOSagaFrozenValidateRule; +import nc.impl.pubapp.pattern.data.bill.BillDelete; +import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser; +import nc.itf.pu.m20.compenstate.IBuyingreqM4A08SagasCompensate; +import nc.vo.pu.m20.entity.PraybillItemVO; +import nc.vo.pu.m20.entity.PraybillVO; +import nc.vo.pu.m20.enumeration.EnumOperate; +import nc.vo.pu.pub.rule.WriteBack422xRule; +import nc.vo.pu.pub.rule.WriteBackPIMRule; +import nc.vo.pub.BusinessException; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nc.vo.scmpub.res.billtype.POBillType; +import nccloud.commons.lang.ArrayUtils; +import nccloud.pubitf.pu.pub.util.PuSagasUtil; + +public class PraybillDeleteBP { + public PraybillDeleteBP() { + } + + public void delete(PraybillVO[] vos) { + CompareAroundProcesser processer = new CompareAroundProcesser(PraybillPluginPoint.DELETE); + this.addBeforeRule(processer); + this.addAfterRule(processer); + processer.before(vos, vos); + this.addSagaAndCompensate(vos); + BillDelete bo = new BillDelete(); + bo.delete(vos); + processer.after(vos, vos); + } + + private void addAfterRule(CompareAroundProcesser processer) { + processer.addAfterRule(new DelOldVersionRule()); + processer.addAfterRule(new PraybillWriteBackSourceRule(EnumOperate.DELETE)); + processer.addAfterRule(new ATPAfterUpdateRule()); + processer.addAfterRule(new ReturnBillCodeRule()); + processer.addAfterRule(new WriteBackPIMRule(POBillType.PrayBill.getCode())); + processer.addAfterRule(new WriteBack422xRule(POBillType.PrayBill.getCode())); + processer.addAfterRule(new DeleteAfterEventRule()); + + processer.addAfterRule(new UpdatePickmRule()); + } + + private void addBeforeRule(CompareAroundProcesser processer) { + processer.addBeforeRule(new VOSagaFrozenValidateRule(true)); + processer.addBeforeFinalRule(new BillStatusRule()); + processer.addBeforeFinalRule(new CheckSrcRule()); + processer.addBeforeRule(new ATPBeforeUpdateRule()); + processer.addBeforeRule(new DeleteBeforeEventRule()); + } + + private void addSagaAndCompensate(PraybillVO[] vos) { + try { + PuSagasUtil.frozenAndAddSaga(vos, POBillType.PrayBill.getCode()); + List hList = new ArrayList(); + List bList = new ArrayList(); + + for(PraybillVO praybillVO : vos) { + PraybillItemVO[] praybillItemVOs = praybillVO.getBVO(); + if (!ArrayUtils.isEmpty(praybillItemVOs)) { + hList.add(praybillVO.getHVO().getPk_praybill()); + + for(PraybillItemVO praybillItemVO : praybillItemVOs) { + bList.add(praybillItemVO.getPk_praybill_b()); + } + } + } + + Map map = new HashMap(); + map.put("opertaion", "praybillDelete"); + map.put("pk_praybill_b", bList.toArray(new String[bList.size()])); + map.put("pk_praybill", hList.toArray(new String[hList.size()])); + PuSagasUtil.compensate(IBuyingreqM4A08SagasCompensate.class, map); + } catch (BusinessException e) { + ExceptionUtils.wrappException(e); + } + + } +} diff --git a/pu/src/private/nc/bs/pu/m20/maintain/rule/delete/UpdatePickmRule.java b/pu/src/private/nc/bs/pu/m20/maintain/rule/delete/UpdatePickmRule.java new file mode 100644 index 0000000..9280eeb --- /dev/null +++ b/pu/src/private/nc/bs/pu/m20/maintain/rule/delete/UpdatePickmRule.java @@ -0,0 +1,75 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.pu.m20.maintain.rule.delete; + +import nc.bs.businessevent.BusinessEvent; +import nc.bs.businessevent.EventDispatcher; +import nc.bs.dao.BaseDAO; +import nc.bs.dao.DAOException; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.vo.pu.m20.entity.PraybillItemVO; +import nc.vo.pu.m20.entity.PraybillVO; +import nc.vo.pu.pub.constant.PUMDValue; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nccloud.commons.lang.ArrayUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * 璇疯喘鍗曞垹闄ゆ椂鍥炲啓澶囨枡璁″垝鏄惁涓嬭揪瀛楁 + */ +public class UpdatePickmRule implements IRule { + public UpdatePickmRule() { + } + + public void process(PraybillVO[] vos) { + if (!ArrayUtils.isEmpty(vos)) { + try { + List pk= new ArrayList(); + for (PraybillVO vo : vos) { + PraybillItemVO[] praybillItemVOS=vo.getBVO(); + for (PraybillItemVO praybillItemVO : praybillItemVOS) { + if("55A3".equals(praybillItemVO.getCsourcetypecode())){ + pk.add(praybillItemVO.getCsourcebid()); + } + } + } + if(!pk.isEmpty()){ + //鍥炲啓鏄惁涓嬫柟涓烘槸 + updetaPmo(pk); + } + + + } catch (Exception e) { + ExceptionUtils.wrappException(e); + } + + } + } + private void updetaPmo(List arrayList) throws DAOException { + String result = ""; + StringBuilder sb = new StringBuilder(); + if (arrayList.size() > 1) { + for (int i = 0; i < arrayList.size(); i++) { + + + sb.append("'").append(arrayList.get(i)).append("'"); + if (i < arrayList.size() - 1) { + sb.append(","); + } + } + + result = sb.toString(); + } else { + result = "'" + (String) arrayList.get(0) + "'"; + } + String sql = " update mm_pickm_b set vbdef13='N' where mm_pickm_b.cpickm_bid in(" + result + ")"; + + BaseDAO dao = new BaseDAO(); + dao.executeUpdate(sql); + } +}