feat(sc/m61, mmpac/pickm): 新增委外订单和生产bom审批后同步至RZMOM的功能
- 新增 AfterApproceRuleSyncRZWMSProcess 类实现销售出库单审批后同步至RZMOM - 新增 AfterApproveRuleSyncRZWMS 类实现生产领料单审批后同步至RZMOM - 新增 PickmApproveBP 类实现生产领料单批量审批 - 新增 SCOrderApproveAction 类实现销售订单审批
This commit is contained in:
parent
61fe3c2d6b
commit
faa18d08c2
|
@ -100,6 +100,8 @@ public class AfterSignRuleSyncMesProcess implements IRule<GeneralOutVO> {
|
|||
requestData.put("operation_type", "I");// 固定给I 操作
|
||||
requestData.put("info", info);
|
||||
obmlog.debug("其它出库requestData:" + requestData.toJSONString());
|
||||
IHttpPostOtherSys httpService = NCLocator.getInstance().lookup(IHttpPostOtherSys.class);
|
||||
httpService.sendToExternalSystem("/GTHINKING/AjaxService/N_KCSJJS/101527004.ashx/gt_rec_api_qtckdj", requestData);
|
||||
}
|
||||
// 调拨出库/转库单
|
||||
if (generalOutVO.getHead().getVtrantypecode().equals("4I-02")) {
|
||||
|
@ -167,7 +169,7 @@ public class AfterSignRuleSyncMesProcess implements IRule<GeneralOutVO> {
|
|||
obmlog.debug("其它出库requestData:" + requestData.toJSONString());
|
||||
|
||||
IHttpPostOtherSys httpService = NCLocator.getInstance().lookup(IHttpPostOtherSys.class);
|
||||
httpService.sendToExternalSystem("test", requestData);
|
||||
httpService.sendToExternalSystem("/GTHINKING/AjaxService/N_KCSJJS/101527009.ashx/gt_rec_api_dbckdj", requestData);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
package nc.bs.mmpac.pickm.bp;
|
||||
|
||||
|
||||
import nc.bs.mmpac.pickm.plugin.PickmPluginPoint;
|
||||
import nc.bs.mmpac.pickm.rule.PickmApproveCheckStatusRule;
|
||||
import nc.bs.mmpac.pickm.rule.PickmCheckAuditRule;
|
||||
import nc.bs.mmpac.pickm.rule.PickmFbackflustimeCheckRule;
|
||||
import nc.bs.mmpac.pickm.rule.PickmSetStatusRule;
|
||||
import nc.bs.mmpub.rule.MMATOMaterialCheckRule;
|
||||
import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule;
|
||||
import nc.impl.pubapp.pattern.data.bill.template.UpdateBPTemplate;
|
||||
import nc.impl.pubapp.pattern.data.bill.tool.BillTransferTool;
|
||||
import nc.impl.pubapp.pattern.rule.ICompareRule;
|
||||
import nc.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser;
|
||||
import nc.util.mmf.framework.base.MMValueCheck;
|
||||
import nc.vo.mmpac.pickm.entity.AggPickmVO;
|
||||
import nc.vo.mmpac.pickm.enumeration.FbillstatusEnum;
|
||||
|
||||
public class PickmApproveBP {
|
||||
|
||||
private void addAfterRule(CompareAroundProcesser<AggPickmVO> processer) {
|
||||
}
|
||||
|
||||
private void addBeforeRule(CompareAroundProcesser<AggPickmVO> processer) {
|
||||
ICompareRule<AggPickmVO> pickmstatusFilterRule = new PickmApproveCheckStatusRule(true);
|
||||
processer.addBeforeRule(pickmstatusFilterRule);
|
||||
IRule<AggPickmVO> sagasCheckrule = new MMVOSagaFrozenValidateRule(true);
|
||||
processer.addBeforeRule(sagasCheckrule);
|
||||
IRule<AggPickmVO> pickmAuditCheckRule = new PickmCheckAuditRule();
|
||||
processer.addBeforeRule(pickmAuditCheckRule);
|
||||
IRule<AggPickmVO> mmatoMaterialCheckRule = new MMATOMaterialCheckRule("cmaterialvid", (String) null, "cffileid");
|
||||
processer.addBeforeRule(mmatoMaterialCheckRule);
|
||||
IRule<AggPickmVO> checkFbackFlusTime = new PickmFbackflustimeCheckRule();
|
||||
processer.addBeforeRule(checkFbackFlusTime);
|
||||
IRule<AggPickmVO> pickmSetStatusRule = new PickmSetStatusRule(FbillstatusEnum.AUDIT_STATE);
|
||||
processer.addBeforeRule(pickmSetStatusRule);
|
||||
}
|
||||
|
||||
public AggPickmVO[] batchApprovePickm(AggPickmVO[] vos) {
|
||||
if (MMValueCheck.isEmpty(vos)) {
|
||||
return null;
|
||||
} else {
|
||||
UpdateBPTemplate<AggPickmVO> bpTemplate = new UpdateBPTemplate(PickmPluginPoint.APPROVE);
|
||||
BillTransferTool<AggPickmVO> transTool = new BillTransferTool(vos);
|
||||
this.addBeforeRule(bpTemplate.getAroundProcesser());
|
||||
this.addAfterRule(bpTemplate.getAroundProcesser());
|
||||
AggPickmVO[] fullBills = (AggPickmVO[]) transTool.getClientFullInfoBill();
|
||||
AggPickmVO[] originBills = (AggPickmVO[]) transTool.getOriginBills();
|
||||
AggPickmVO[] retBills = (AggPickmVO[]) bpTemplate.update(fullBills, originBills);
|
||||
return retBills;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,127 @@
|
|||
package nc.bs.mmpac.pickm.bp.rule;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import nc.bs.dao.BaseDAO;
|
||||
import nc.bs.logging.Log;
|
||||
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
|
||||
import nc.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.jdbc.framework.processor.ColumnProcessor;
|
||||
import nc.pubitf.para.SysInitQuery;
|
||||
import nc.vo.bd.material.MaterialVO;
|
||||
import nc.vo.bd.rt.rt0004.entity.RcVO;
|
||||
import nc.vo.cmp.util.StringUtils;
|
||||
import nc.vo.mmpac.pickm.entity.AggPickmVO;
|
||||
import nc.vo.mmpac.pickm.entity.PickmHeadVO;
|
||||
import nc.vo.mmpac.pickm.entity.PickmItemVO;
|
||||
import nc.vo.org.OrgVO;
|
||||
import nc.vo.pub.BusinessException;
|
||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
import nc.vo.pubapp.pattern.pub.SqlBuilder;
|
||||
import nc.vo.scmpub.util.ArrayUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AfterApproveRuleSyncRZWMS implements IRule<AggPickmVO> {
|
||||
|
||||
private static Log log = Log.getInstance("rzmomlog");
|
||||
|
||||
private static BaseDAO dao = new BaseDAO();
|
||||
|
||||
@Override
|
||||
public void process(AggPickmVO[] vos) {
|
||||
if (ArrayUtil.isEmpty(vos)) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
// 检查并筛选领料组织
|
||||
List<AggPickmVO> newAggPickmVOS = checkAndFilterBillSrcOrg(vos);
|
||||
if (newAggPickmVOS.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
pushToRZMOM(newAggPickmVOS.toArray(new AggPickmVO[0]));
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.wrappException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void buildSyncData(PickmHeadVO head, PickmItemVO[] bodys, JSONArray details) throws BusinessException {
|
||||
for (PickmItemVO body : bodys) {
|
||||
JSONObject singleObj = new JSONObject();
|
||||
String vsourcebillcode = head.getVsourcebillcode();
|
||||
String wlbm_wbid = transferCodeByPk(MaterialVO.getDefaultTableName(), MaterialVO.CODE, MaterialVO.PK_MATERIAL, body.getCbmaterialvid());
|
||||
String scgx_wbid = transferCodeByPk(RcVO.getDefaultTableName(), RcVO.VRCCODE, RcVO.CRCID, head.getVstdprocid());
|
||||
String wbid = vsourcebillcode + "_" + wlbm_wbid + "_" + scgx_wbid;
|
||||
|
||||
singleObj.put("scgx_wbid", scgx_wbid); // 第三方系统使用工序id
|
||||
singleObj.put("scjh_wbid", vsourcebillcode); // 第三方系统生产计划ID
|
||||
singleObj.put("dwyl", body.getNplanoutastnum()); // 单位用量
|
||||
singleObj.put("djyl", body.getNplanoutastnum()); // 单据用量
|
||||
singleObj.put("clyl", body.getNplanoutastnum()); // 材料用量
|
||||
singleObj.put("wlbm_wbid", wlbm_wbid); // 第三方系统材料id
|
||||
singleObj.put("wbid", wbid); // 第三方系统主键id
|
||||
|
||||
details.add(singleObj);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private List<AggPickmVO> checkAndFilterBillSrcOrg(AggPickmVO[] aggPickmVOS) throws BusinessException {
|
||||
List<AggPickmVO> aggvoList = new ArrayList<>();
|
||||
for (AggPickmVO aggvo : aggPickmVOS) {
|
||||
String pkOrg = aggvo.getParentVO().getPk_org(); // 假设领料组织在表头
|
||||
String orgCode = transferCodeByPk(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
|
||||
if ("30401".equals(orgCode)) { // 示例组织编码
|
||||
aggvoList.add(aggvo);
|
||||
}
|
||||
}
|
||||
return aggvoList;
|
||||
}
|
||||
|
||||
private void pushToRZMOM(AggPickmVO[] aggPickmVOS) throws BusinessException {
|
||||
String rzwmsip = SysInitQuery.getParaString("GLOBLE00000000000000", "RZWMSIP");
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
JSONObject data = new JSONObject();
|
||||
JSONObject dataIn = new JSONObject();
|
||||
JSONObject dataIn2 = new JSONObject();
|
||||
JSONArray details = new JSONArray();
|
||||
jsonObject.put("dataflow", "泰开BIP→RZMOMv6");
|
||||
jsonObject.put("actionCode", "cpfhtzdb");
|
||||
|
||||
for (AggPickmVO aggPickmVO : aggPickmVOS) {
|
||||
PickmHeadVO head = aggPickmVO.getParentVO();
|
||||
PickmItemVO[] bodys = (PickmItemVO[]) aggPickmVO.getChildrenVO();
|
||||
buildSyncData(head, bodys, details);
|
||||
}
|
||||
dataIn2.put("Details", details);
|
||||
dataIn.put("Data", dataIn2);
|
||||
data.put("data", dataIn);
|
||||
jsonObject.put("data", data);
|
||||
log.error("生产BOW推送锐制请求报文:" + jsonObject.toJSONString());
|
||||
String result = ThirdPartyPostRequestUtil.sendPostRequest(rzwmsip, jsonObject.toJSONString());
|
||||
JSONObject resultObj = JSONObject.parseObject(result);
|
||||
if (resultObj == null || !"true".equals(resultObj.getString("success"))) {
|
||||
String errorMsg = resultObj == null ? "接口返回为空" : resultObj.getString("msg");
|
||||
throw new BusinessException("RZ同步失败,原因:" + errorMsg);
|
||||
}
|
||||
}
|
||||
|
||||
private String transferCodeByPk(String tableName, String selectField, String pkField, String pk) throws BusinessException {
|
||||
if (StringUtils.isEmpty(pk)) {
|
||||
return null;
|
||||
}
|
||||
SqlBuilder sqlBuilder = new SqlBuilder();
|
||||
sqlBuilder.append(" select " + selectField);
|
||||
sqlBuilder.append(" from " + tableName);
|
||||
sqlBuilder.append(" where ");
|
||||
sqlBuilder.append(pkField, pk);
|
||||
Object o = dao.executeQuery(sqlBuilder.toString(), new ColumnProcessor());
|
||||
if (o == null) {
|
||||
throw new BusinessException("未查询到编码信息,sql【" + sqlBuilder + "】");
|
||||
}
|
||||
return o.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,141 @@
|
|||
package nc.bs.sc.m61.referred.rule.pm;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import nc.bs.dao.BaseDAO;
|
||||
import nc.bs.logging.Log;
|
||||
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
|
||||
import nc.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.jdbc.framework.processor.ColumnProcessor;
|
||||
import nc.pubitf.para.SysInitQuery;
|
||||
import nc.vo.bd.material.MaterialVO;
|
||||
import nc.vo.bd.psn.PsndocVO;
|
||||
import nc.vo.bd.stordoc.StordocVO;
|
||||
import nc.vo.bd.supplier.SupplierVO;
|
||||
import nc.vo.cmp.util.StringUtils;
|
||||
import nc.vo.org.OrgVO;
|
||||
import nc.vo.pub.BusinessException;
|
||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
import nc.vo.pubapp.pattern.pub.SqlBuilder;
|
||||
import nc.vo.sc.m61.entity.SCOrderHeaderVO;
|
||||
import nc.vo.sc.m61.entity.SCOrderItemVO;
|
||||
import nc.vo.sc.m61.entity.SCOrderVO;
|
||||
import nc.vo.scmpub.util.ArrayUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AfterApproceRuleSyncRZWMSProcess implements IRule<SCOrderVO> {
|
||||
|
||||
private static Log log = Log.getInstance("rzmomlog");
|
||||
|
||||
private static BaseDAO dao = new BaseDAO();
|
||||
|
||||
@Override
|
||||
public void process(SCOrderVO[] vos) {
|
||||
if (ArrayUtil.isEmpty(vos)) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
//检查并筛选销售出库单据为互感器公司
|
||||
List<SCOrderVO> newSCOrderVOS = checkAndFilterBillSrcOrg(vos);
|
||||
if (newSCOrderVOS == null || newSCOrderVOS.size() < 1) {
|
||||
return;
|
||||
}
|
||||
pushToRZMOM(newSCOrderVOS.toArray(new SCOrderVO[0]));
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.wrappException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void buildSyncData(SCOrderHeaderVO head, SCOrderItemVO[] bodys, JSONArray details) throws BusinessException {
|
||||
|
||||
for (SCOrderItemVO body : bodys) {
|
||||
JSONObject singleObj = new JSONObject();
|
||||
|
||||
// 单据类型
|
||||
singleObj.put("cgjh_wbid", body.getVsrctrantype());
|
||||
singleObj.put("cgxh", body.getVsrcrowno());
|
||||
singleObj.put("cgbh", body.getVsrccode());
|
||||
singleObj.put("bzsm", body.getVbmemo());
|
||||
singleObj.put("cght_wbid", head.getVbillcode());
|
||||
singleObj.put("htxsbh", head.getVbillcode());
|
||||
// 供应商
|
||||
singleObj.put("zbxx_gycs_wbid", transferCodeByPk(SupplierVO.getDefaultTableName(), SupplierVO.CODE, SupplierVO.PK_SUPPLIER, head.getPk_supplier()));
|
||||
// 仓库
|
||||
singleObj.put("sdck", transferCodeByPk(StordocVO.getDefaultTableName(), StordocVO.CODE, StordocVO.PK_STORDOC, body.getPk_recvstordoc()));
|
||||
// 物料
|
||||
singleObj.put("wlbm_wbid", transferCodeByPk(MaterialVO.getDefaultTableName(), MaterialVO.CODE, MaterialVO.PK_MATERIAL, body.getPk_material()));
|
||||
|
||||
singleObj.put("cgsl", body.getNqtunitnum());
|
||||
singleObj.put("jhrq", body.getDplanarrvdate());
|
||||
singleObj.put("zbxx_cgrq", head.getDbilldate().toString());
|
||||
singleObj.put("cgrq", head.getDbilldate()).toString();
|
||||
|
||||
singleObj.put("htxh", body.getCrowno());
|
||||
// 业务员
|
||||
singleObj.put("zbxx_cgy_wbid", transferCodeByPk(PsndocVO.getDefaultTableName(), PsndocVO.CODE, PsndocVO.PK_PSNDOC, head.getCemployeeid()));
|
||||
|
||||
details.add(singleObj);
|
||||
}
|
||||
}
|
||||
|
||||
private List<SCOrderVO> checkAndFilterBillSrcOrg(SCOrderVO[] SCOrderVOS) throws BusinessException {
|
||||
List<SCOrderVO> aggvoList = new ArrayList<>();
|
||||
for (SCOrderVO aggvo : SCOrderVOS) {
|
||||
String pkOrg = aggvo.getParentVO().getPk_org();
|
||||
String orgCode = transferCodeByPk(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
|
||||
if ("30401".equals(orgCode)) {
|
||||
aggvoList.add(aggvo);
|
||||
}
|
||||
}
|
||||
return aggvoList;
|
||||
}
|
||||
|
||||
private void pushToRZMOM(SCOrderVO[] SCOrderVOS) throws BusinessException {
|
||||
String rzwmsip = SysInitQuery.getParaString("GLOBLE00000000000000", "RZWMSIP");
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
JSONObject data = new JSONObject();
|
||||
JSONObject dataIn = new JSONObject();
|
||||
JSONObject dataIn2 = new JSONObject();
|
||||
JSONArray details = new JSONArray();
|
||||
jsonObject.put("dataflow", "泰开BIP→RZMOMv6");
|
||||
jsonObject.put("actionCode", "cpfhtzdb");
|
||||
//单笔/批量按明细传
|
||||
for (SCOrderVO SCOrderVO : SCOrderVOS) {
|
||||
SCOrderHeaderVO head = SCOrderVO.getParentVO();
|
||||
SCOrderItemVO[] bodys = SCOrderVO.getChildrenVO();
|
||||
// 构建需要同步的数据
|
||||
buildSyncData(head, bodys, details);
|
||||
}
|
||||
dataIn2.put("Details", details);
|
||||
dataIn.put("Data", dataIn2);
|
||||
data.put("data", dataIn);
|
||||
jsonObject.put("data", data);
|
||||
log.error("委外订单推送锐制请求报文:" + jsonObject.toJSONString());
|
||||
String result = ThirdPartyPostRequestUtil.sendPostRequest(rzwmsip, jsonObject.toJSONString());
|
||||
JSONObject resultObj = JSONObject.parseObject(result);
|
||||
if ("false".equals(resultObj.getString("success"))) {
|
||||
throw new BusinessException("RZMOM同步失败,原因:" + resultObj.getString("msg"));
|
||||
}
|
||||
}
|
||||
|
||||
private String transferCodeByPk(String tableName, String selectField, String pkField, String pk) throws BusinessException {
|
||||
if (StringUtils.isEmpty(pk)) {
|
||||
return null;
|
||||
}
|
||||
SqlBuilder sqlBuilder = new SqlBuilder();
|
||||
sqlBuilder.append(" select " + selectField);
|
||||
sqlBuilder.append(" from " + tableName);
|
||||
sqlBuilder.append(" where ");
|
||||
sqlBuilder.append(pkField, pk);
|
||||
Object o = dao.executeQuery(sqlBuilder.toString(), new ColumnProcessor());
|
||||
if (o == null) {
|
||||
throw new BusinessException("未查询到编码信息,sql【" + sqlBuilder + "】");
|
||||
}
|
||||
return o.toString();
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,102 @@
|
|||
package nc.impl.sc.m61.action.approve;
|
||||
|
||||
|
||||
import nc.bs.pub.compiler.AbstractCompiler2;
|
||||
import nc.bs.sc.m61.referred.rule.ic.ApproveSupplyRule;
|
||||
import nc.bs.sc.m61.referred.rule.pm.AfterApproceRuleSyncRZWMSProcess;
|
||||
import nc.bs.sc.m61.referred.rule.pm.SCOrderApprovePMSupplyRule;
|
||||
import nc.bs.sc.m61.referred.rule.pm.SCOrderRewritePMStartDateRule;
|
||||
import nc.bs.sc.plugin.SCOrderPluginPoint;
|
||||
import nc.bs.scmpub.pf.PfParameterUtil;
|
||||
import nc.bs.scmpub.rule.VOSagaFrozenValidateRule;
|
||||
import nc.impl.pubapp.pattern.data.bill.BillUpdate;
|
||||
import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser;
|
||||
import nc.impl.sc.m61.action.approve.rule.*;
|
||||
import nc.itf.sc.m61.compenstate.IScOrderPmSagasCompensate;
|
||||
import nc.itf.sc.reference.ic.ATPServices;
|
||||
import nc.vo.pub.BusinessException;
|
||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
import nc.vo.sc.m61.entity.SCOrderVO;
|
||||
import nc.vo.sc.m61.entity.context.SCOrderContxt;
|
||||
import nc.vo.sc.pub.enumeration.SCBillStatus;
|
||||
import nc.vo.scmpub.msg.rule.UpdateMsgStatusRule;
|
||||
import nc.vo.scmpub.res.billtype.SCBillType;
|
||||
import nc.vo.scmpub.util.AppInfoContext;
|
||||
import nccloud.commons.lang.ArrayUtils;
|
||||
import nccloud.pubitf.pu.pub.util.PuSagasUtil;
|
||||
import nccloud.pubitf.sc.pub.util.SCOperationEnum;
|
||||
import nccloud.pubitf.sc.pub.util.SCSagasOperationEnum;
|
||||
import nccloud.pubitf.sc.pub.util.ScSagasUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class SCOrderApproveAction {
|
||||
|
||||
private void addRule(CompareAroundProcesser<SCOrderVO> prcr) {
|
||||
prcr.addBeforeRule(new VOSagaFrozenValidateRule(true));
|
||||
prcr.addBeforeFinalRule(new ApproveStatusChkRule());
|
||||
prcr.addBeforeFinalRule(new SupplierFrozeChkRule());
|
||||
prcr.addBeforeFinalRule(new UpdateMsgStatusRule("pk_order"));
|
||||
prcr.addBeforeRule(new ApproveFlowCheckMnyRule());
|
||||
prcr.addAfterFinalRule(new UpdatePFlowInfoRule());
|
||||
prcr.addAfterRule(new FilterOrderByStatusRule(SCBillStatus.APPROVED.toInt()));
|
||||
prcr.addAfterRule(new SCOrderRewritePMStartDateRule(true));
|
||||
prcr.addAfterRule(new ApproveSupplyRule());
|
||||
prcr.addAfterRule(new SCOrderApprovePMSupplyRule());
|
||||
prcr.addAfterRule(new AfterApproceRuleSyncRZWMSProcess());
|
||||
}
|
||||
|
||||
public SCOrderVO[] approve(SCOrderVO[] vos, SCOrderContxt contxt, AbstractCompiler2 script) {
|
||||
if (ArrayUtils.isEmpty(vos)) {
|
||||
return vos;
|
||||
} else {
|
||||
PfParameterUtil<SCOrderVO> util = new PfParameterUtil(script == null ? null : script.getPfParameterVO(), vos);
|
||||
SCOrderVO[] originBills = (SCOrderVO[]) util.getOrginBills();
|
||||
SCOrderVO[] clientBills = (SCOrderVO[]) util.getClientFullInfoBill();
|
||||
CompareAroundProcesser<SCOrderVO> prcr = new CompareAroundProcesser(SCOrderPluginPoint.APPROVE);
|
||||
this.addRule(prcr);
|
||||
prcr.before(clientBills, originBills);
|
||||
if (null != script) {
|
||||
try {
|
||||
script.procFlowBacth(script.getPfParameterVO());
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.wrappException(e);
|
||||
}
|
||||
}
|
||||
|
||||
this.atpBeforeUpdate(clientBills);
|
||||
|
||||
try {
|
||||
AppInfoContext.setProductCode(SCSagasOperationEnum.OREDERAPPROVE.getResCommon());
|
||||
AppInfoContext.setResId(SCSagasOperationEnum.OREDERAPPROVE.getResId());
|
||||
ScSagasUtil.frozenAndAddSaga(vos, "scorderApprove", SCBillType.Order.getCode());
|
||||
Map<String, Serializable> paramMap = new HashMap();
|
||||
paramMap.put("actionname", "scorderApprove");
|
||||
paramMap.put("hid", originBills[0].getParentVO().getPrimaryKey());
|
||||
paramMap.put(SCOperationEnum.APPROVER, originBills[0].getParentVO().getApprover());
|
||||
paramMap.put(SCOperationEnum.TAUDITTIME, originBills[0].getParentVO().getTaudittime());
|
||||
paramMap.put(SCOperationEnum.FBILLSTATUS, originBills[0].getParentVO().getFstatusflag());
|
||||
PuSagasUtil.compensate(IScOrderPmSagasCompensate.class, paramMap);
|
||||
} catch (BusinessException e) {
|
||||
ExceptionUtils.wrappException(e);
|
||||
}
|
||||
|
||||
BillUpdate<SCOrderVO> update = new BillUpdate();
|
||||
SCOrderVO[] updateVOs = (SCOrderVO[]) update.update(clientBills, originBills);
|
||||
prcr.after(clientBills, originBills);
|
||||
this.atpAfterUpdate(updateVOs);
|
||||
return updateVOs;
|
||||
}
|
||||
}
|
||||
|
||||
private void atpAfterUpdate(SCOrderVO[] updateVOs) {
|
||||
ATPServices.modifyATPAfter(SCBillType.Order.getCode(), updateVOs);
|
||||
}
|
||||
|
||||
private void atpBeforeUpdate(SCOrderVO[] clientBills) {
|
||||
ATPServices.modifyATPBefore(SCBillType.Order.getCode(), clientBills);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue