refactor(pmo):优化生产订单的行状态和订单类型同步启源
This commit is contained in:
parent
fb9e58e6ee
commit
bb40b3e24c
|
|
@ -5,10 +5,7 @@
|
||||||
|
|
||||||
package nc.bs.mmpac.pmo.pac0002.bp;
|
package nc.bs.mmpac.pmo.pac0002.bp;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import nc.bs.mmpac.pmo.pac0002.bp.rule.AfterPmoSyncJmQMSRule;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService;
|
import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService;
|
||||||
import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil;
|
import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil;
|
||||||
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
|
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.pub.CircularlyAccessibleValueObject;
|
||||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
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 class PMORowFinishBP {
|
||||||
public PMORowFinishBP() {
|
public PMORowFinishBP() {
|
||||||
}
|
}
|
||||||
|
|
@ -109,5 +111,7 @@ public class PMORowFinishBP {
|
||||||
|
|
||||||
private void addRowFinishAfterRule(CompareAroundProcesser<PMOAggVO> processer) {
|
private void addRowFinishAfterRule(CompareAroundProcesser<PMOAggVO> processer) {
|
||||||
processer.addAfterRule(new PMOFinishAutoFinishPutPlanRule());
|
processer.addAfterRule(new PMOFinishAutoFinishPutPlanRule());
|
||||||
|
IRule<PMOAggVO> rule = new AfterPmoSyncJmQMSRule("finish");
|
||||||
|
processer.addAfterRule(rule);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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<PMOAggVO> bp = new GCUpdateBPTemplate(PMOPluginPoint.ROWUNFINISH);
|
||||||
|
CompareAroundProcesser<PMOAggVO> processer = bp.getAroundProcesser();
|
||||||
|
this.addRowFinishCancelBeforeRule(processer);
|
||||||
|
PMOAggVO[] returnvos = (PMOAggVO[]) processer.before(vos, vos);
|
||||||
|
List<PMOItemVO> upditemList = new ArrayList();
|
||||||
|
Map<String, PMOItemVO> 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<PMOItemVO> 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<PMOAggVO> transferTool = new GCBillTransferTool(aggvos);
|
||||||
|
PMOAggVO[] originBills = (PMOAggVO[]) transferTool.getOriginBills();
|
||||||
|
GCBillUpdate<PMOAggVO> 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<PMOAggVO> processer) {
|
||||||
|
IRule<PMOAggVO> 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<PMOAggVO> rule = new AfterPmoSyncJmQMSRule("finishCancel");
|
||||||
|
processer.addAfterRule(rule);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -98,9 +98,9 @@ public class AfterPmoSyncJmQMSRule implements IRule<PMOAggVO> {
|
||||||
String mocloser = item.getMocloser();// BIP关闭人
|
String mocloser = item.getMocloser();// BIP关闭人
|
||||||
String mocloserName = MyHelper.getStrValByCondition("sm_user", UserVO.USER_NAME,
|
String mocloserName = MyHelper.getStrValByCondition("sm_user", UserVO.USER_NAME,
|
||||||
UserVO.CUSERID + " = '" + mocloser + "'");
|
UserVO.CUSERID + " = '" + mocloser + "'");
|
||||||
String cprojectid = item.getCprojectid();// 项目id
|
// String cprojectid = item.getCprojectid();// 项目id
|
||||||
String projectCode = MyHelper.getStrValByCondition(ProjectHeadVO.getDefaultTableName(), ProjectHeadVO.PROJECT_CODE,
|
// String projectCode = MyHelper.getStrValByCondition(ProjectHeadVO.getDefaultTableName(), ProjectHeadVO.PROJECT_CODE,
|
||||||
ProjectHeadVO.PK_PROJECT + " = '" + cprojectid + "'");
|
// ProjectHeadVO.PK_PROJECT + " = '" + cprojectid + "'");
|
||||||
|
|
||||||
// 行状态 0=自由;4=审批通过;1=投放;2=完工;3=关闭;
|
// 行状态 0=自由;4=审批通过;1=投放;2=完工;3=关闭;
|
||||||
Integer fitemstatus = item.getFitemstatus();
|
Integer fitemstatus = item.getFitemstatus();
|
||||||
|
|
@ -121,23 +121,20 @@ public class AfterPmoSyncJmQMSRule implements IRule<PMOAggVO> {
|
||||||
tplanendtimeStr = tplanendtime.toString();
|
tplanendtimeStr = tplanendtime.toString();
|
||||||
}
|
}
|
||||||
itemObj.put("jhrq", tplanendtimeStr);// 计划日期,该产品的计划生产日期
|
itemObj.put("jhrq", tplanendtimeStr);// 计划日期,该产品的计划生产日期
|
||||||
|
// BIP-行状态 0=自由;4=审批通过;1=投放;2=完工;3=关闭;
|
||||||
|
// 生产订单从BIP传启源,强制关闭、取消投放、强制完工都传1,反向操作传0
|
||||||
int flag_wg = 0;
|
int flag_wg = 0;
|
||||||
int flag_jqbz = 0;
|
int flag_jqbz = 0;
|
||||||
if (fitemstatus == 2) {
|
if (fitemstatus == 2) {
|
||||||
flag_wg = 1;
|
flag_wg = 1;
|
||||||
|
flag_jqbz = 1;
|
||||||
}
|
}
|
||||||
if (fitemstatus == 3) {
|
if (fitemstatus == 3) {
|
||||||
flag_wg = 1;
|
flag_wg = 1;
|
||||||
flag_jqbz = 1;
|
flag_jqbz = 1;
|
||||||
}
|
}
|
||||||
if ("putCancel".equals(flag)) {
|
if ("putCancel".equals(flag) || "close".equals(flag) || "finish".equals(flag)) {
|
||||||
flag_jqbz = 2;// 2.取消投放
|
flag_jqbz = 1;// 结清
|
||||||
}
|
|
||||||
if ("close".equals(flag)) {// 关闭
|
|
||||||
flag_jqbz = 1;
|
|
||||||
}
|
|
||||||
if ("closeCancel".equals(flag)) {// 取消关闭
|
|
||||||
flag_jqbz = 0;
|
|
||||||
}
|
}
|
||||||
itemObj.put("flag_wg", flag_wg);// 完工标志 1/0 1.完工
|
itemObj.put("flag_wg", flag_wg);// 完工标志 1/0 1.完工
|
||||||
itemObj.put("flag_jqbz", flag_jqbz);// 结清标志 1 代表结清 0 或者空代表非结清
|
itemObj.put("flag_jqbz", flag_jqbz);// 结清标志 1 代表结清 0 或者空代表非结清
|
||||||
|
|
@ -149,6 +146,7 @@ public class AfterPmoSyncJmQMSRule implements IRule<PMOAggVO> {
|
||||||
}
|
}
|
||||||
itemObj.put("jqrq", tmoclosedtimeStr);// 结清日期-BIP关闭日期
|
itemObj.put("jqrq", tmoclosedtimeStr);// 结清日期-BIP关闭日期
|
||||||
itemObj.put("bz", item.getVnote());// 清单备注
|
itemObj.put("bz", item.getVnote());// 清单备注
|
||||||
|
itemObj.put("ddlx", vtrantypecode);// 单据类型
|
||||||
contentArray.add(itemObj);
|
contentArray.add(itemObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue