diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMORowFinishBP.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMORowFinishBP.java index db866484..5a4626fd 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMORowFinishBP.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMORowFinishBP.java @@ -5,10 +5,7 @@ package nc.bs.mmpac.pmo.pac0002.bp; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import nc.bs.mmpac.pmo.pac0002.bp.rule.AfterPmoSyncJmQMSRule; import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService; import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil; import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint; @@ -31,6 +28,11 @@ import nc.vo.pub.BusinessException; import nc.vo.pub.CircularlyAccessibleValueObject; import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + public class PMORowFinishBP { public PMORowFinishBP() { } @@ -40,14 +42,14 @@ public class PMORowFinishBP { CompareAroundProcesser processer = bp.getAroundProcesser(); this.addRowFinishBeforeRule(processer); this.addRowFinishAfterRule(processer); - PMOAggVO[] returnvos = (PMOAggVO[])processer.before(vos, vos); + PMOAggVO[] returnvos = (PMOAggVO[]) processer.before(vos, vos); List upditemList = new ArrayList(); Map upditemMap = new HashMap(); - for(PMOAggVO aggvo : returnvos) { + for (PMOAggVO aggvo : returnvos) { PMOItemVO[] items = aggvo.getChildrenVO(); - for(PMOItemVO item : items) { + for (PMOItemVO item : items) { upditemList.add(item); upditemMap.put(item.getCmoid(), item); } @@ -58,32 +60,32 @@ public class PMORowFinishBP { PMOItemVO[] olditems = aggvo.getChildrenVO(); List tempitems = new ArrayList(); - for(PMOItemVO item : olditems) { + for (PMOItemVO item : olditems) { if (!upditemMap.containsKey(item.getCmoid())) { tempitems.add(item); } else { - ((PMOItemVO)upditemMap.get(item.getCmoid())).setStatus(1); - PMOBPUtil.setGrandVOStatusUpdate((PMOItemVO)upditemMap.get(item.getCmoid())); - tempitems.add((PMOItemVO)upditemMap.get(item.getCmoid())); + ((PMOItemVO) upditemMap.get(item.getCmoid())).setStatus(1); + PMOBPUtil.setGrandVOStatusUpdate((PMOItemVO) upditemMap.get(item.getCmoid())); + tempitems.add((PMOItemVO) upditemMap.get(item.getCmoid())); } } - aggvo.setChildrenVO((CircularlyAccessibleValueObject[])tempitems.toArray(new PMOItemVO[tempitems.size()])); + aggvo.setChildrenVO((CircularlyAccessibleValueObject[]) tempitems.toArray(new PMOItemVO[tempitems.size()])); PMOAggVO[] aggvos = new PMOAggVO[]{aggvo}; GCBillTransferTool transferTool = new GCBillTransferTool(aggvos); - PMOAggVO[] originBills = (PMOAggVO[])transferTool.getOriginBills(); + PMOAggVO[] originBills = (PMOAggVO[]) transferTool.getOriginBills(); GCBillUpdate billupdate = new GCBillUpdate(); - PMOAggVO[] newaggvos = (PMOAggVO[])billupdate.update(aggvos, originBills); + PMOAggVO[] newaggvos = (PMOAggVO[]) billupdate.update(aggvos, originBills); PMOItemVO[] totalitems = newaggvos[0].getChildrenVO(); Map newitemMap = new HashMap(); - for(PMOItemVO item : totalitems) { + for (PMOItemVO item : totalitems) { if (upditemMap.containsKey(item.getCmoid())) { newitemMap.put(item.getCmoid(), item); } } - returnvos[0].setChildrenVO((CircularlyAccessibleValueObject[])newitemMap.values().toArray(new PMOItemVO[0])); + returnvos[0].setChildrenVO((CircularlyAccessibleValueObject[]) newitemMap.values().toArray(new PMOItemVO[0])); processer.after(returnvos, returnvos); // /** 同步修改备料计划完成(生产订单强制完工时) */ @@ -109,5 +111,7 @@ public class PMORowFinishBP { private void addRowFinishAfterRule(CompareAroundProcesser processer) { processer.addAfterRule(new PMOFinishAutoFinishPutPlanRule()); + IRule rule = new AfterPmoSyncJmQMSRule("finish"); + processer.addAfterRule(rule); } } diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMORowFinishCancelBP.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMORowFinishCancelBP.java new file mode 100644 index 00000000..82e9532e --- /dev/null +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMORowFinishCancelBP.java @@ -0,0 +1,89 @@ +package nc.bs.mmpac.pmo.pac0002.bp; + +import nc.bs.mmpac.pmo.pac0002.bp.rule.AfterPmoSyncJmQMSRule; +import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService; +import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil; +import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint; +import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterBillStatusRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterRowStatusRule; +import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillFinishValueRule; +import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser; +import nc.util.mmf.framework.gc.GCBillTransferTool; +import nc.util.mmf.framework.gc.GCBillUpdate; +import nc.util.mmf.framework.gc.GCUpdateBPTemplate; +import nc.vo.mmpac.pmo.pac0002.constant.PMOConstLang; +import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; +import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; +import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFBillstatusEnum; +import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFItemStatusEnum; +import nc.vo.pub.BusinessException; +import nc.vo.pub.CircularlyAccessibleValueObject; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class PMORowFinishCancelBP { + public PMORowFinishCancelBP() { + } + + public PMOAggVO[] rowfinishcancel(PMOAggVO[] vos) { + GCUpdateBPTemplate bp = new GCUpdateBPTemplate(PMOPluginPoint.ROWUNFINISH); + CompareAroundProcesser processer = bp.getAroundProcesser(); + this.addRowFinishCancelBeforeRule(processer); + PMOAggVO[] returnvos = (PMOAggVO[]) processer.before(vos, vos); + List upditemList = new ArrayList(); + Map upditemMap = new HashMap(); + + for (PMOAggVO aggvo : returnvos) { + PMOItemVO[] items = aggvo.getChildrenVO(); + + for (PMOItemVO item : items) { + upditemList.add(item); + upditemMap.put(item.getCmoid(), item); + } + } + + try { + PMOAggVO aggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid()); + PMOItemVO[] olditems = aggvo.getChildrenVO(); + List tempitems = new ArrayList(); + + for (PMOItemVO item : olditems) { + if (!upditemMap.containsKey(item.getCmoid())) { + tempitems.add(item); + } else { + ((PMOItemVO) upditemMap.get(item.getCmoid())).setStatus(1); + PMOBPUtil.setGrandVOStatusUpdate((PMOItemVO) upditemMap.get(item.getCmoid())); + tempitems.add((PMOItemVO) upditemMap.get(item.getCmoid())); + } + } + + aggvo.setChildrenVO((CircularlyAccessibleValueObject[]) tempitems.toArray(new PMOItemVO[tempitems.size()])); + PMOAggVO[] aggvos = new PMOAggVO[]{aggvo}; + GCBillTransferTool transferTool = new GCBillTransferTool(aggvos); + PMOAggVO[] originBills = (PMOAggVO[]) transferTool.getOriginBills(); + GCBillUpdate billupdate = new GCBillUpdate(); + billupdate.update(aggvos, originBills); + processer.after(returnvos, returnvos); + return aggvos; + } catch (BusinessException e) { + ExceptionUtils.wrappException(e); + return returnvos; + } + } + + private void addRowFinishCancelBeforeRule(CompareAroundProcesser processer) { + IRule checkFrozenRule = new MMVOSagaFrozenValidateRule(true); + processer.addBeforeRule(checkFrozenRule); + processer.addBeforeRule(new PMOFilterBillStatusRule(PMOConstLang.getMSG_ACTION_NO_AUDIT(), PMOFBillstatusEnum.AUDIT)); + processer.addBeforeRule(new PMOFilterRowStatusRule(PMOConstLang.getMSG_RULE_NO_ROWDATA(), PMOFItemStatusEnum.FINISH)); + processer.addBeforeRule(new PMOFillFinishValueRule(true)); + IRule rule = new AfterPmoSyncJmQMSRule("finishCancel"); + processer.addAfterRule(rule); + } +} diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterPmoSyncJmQMSRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterPmoSyncJmQMSRule.java index a80366cc..a66511f8 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterPmoSyncJmQMSRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterPmoSyncJmQMSRule.java @@ -98,9 +98,9 @@ public class AfterPmoSyncJmQMSRule implements IRule { String mocloser = item.getMocloser();// BIP关闭人 String mocloserName = MyHelper.getStrValByCondition("sm_user", UserVO.USER_NAME, UserVO.CUSERID + " = '" + mocloser + "'"); - String cprojectid = item.getCprojectid();// 项目id - String projectCode = MyHelper.getStrValByCondition(ProjectHeadVO.getDefaultTableName(), ProjectHeadVO.PROJECT_CODE, - ProjectHeadVO.PK_PROJECT + " = '" + cprojectid + "'"); + // String cprojectid = item.getCprojectid();// 项目id + // String projectCode = MyHelper.getStrValByCondition(ProjectHeadVO.getDefaultTableName(), ProjectHeadVO.PROJECT_CODE, + // ProjectHeadVO.PK_PROJECT + " = '" + cprojectid + "'"); // 行状态 0=自由;4=审批通过;1=投放;2=完工;3=关闭; Integer fitemstatus = item.getFitemstatus(); @@ -121,23 +121,20 @@ public class AfterPmoSyncJmQMSRule implements IRule { tplanendtimeStr = tplanendtime.toString(); } itemObj.put("jhrq", tplanendtimeStr);// 计划日期,该产品的计划生产日期 + // BIP-行状态 0=自由;4=审批通过;1=投放;2=完工;3=关闭; + // 生产订单从BIP传启源,强制关闭、取消投放、强制完工都传1,反向操作传0 int flag_wg = 0; int flag_jqbz = 0; if (fitemstatus == 2) { flag_wg = 1; + flag_jqbz = 1; } if (fitemstatus == 3) { flag_wg = 1; flag_jqbz = 1; } - if ("putCancel".equals(flag)) { - flag_jqbz = 2;// 2.取消投放 - } - if ("close".equals(flag)) {// 关闭 - flag_jqbz = 1; - } - if ("closeCancel".equals(flag)) {// 取消关闭 - flag_jqbz = 0; + if ("putCancel".equals(flag) || "close".equals(flag) || "finish".equals(flag)) { + flag_jqbz = 1;// 结清 } itemObj.put("flag_wg", flag_wg);// 完工标志 1/0 1.完工 itemObj.put("flag_jqbz", flag_jqbz);// 结清标志 1 代表结清 0 或者空代表非结清 @@ -149,6 +146,7 @@ public class AfterPmoSyncJmQMSRule implements IRule { } itemObj.put("jqrq", tmoclosedtimeStr);// 结清日期-BIP关闭日期 itemObj.put("bz", item.getVnote());// 清单备注 + itemObj.put("ddlx", vtrantypecode);// 单据类型 contentArray.add(itemObj); }