using System; using System.Threading; using System.Collections; using System.Data; using BP.DA; using BP.DTS; using BP.En; using BP.Web; using BP.Sys; using BP.WF; namespace BP.MES { /// /// 报销流程002 /// 此类库必须放入到 BP.*.dll 才能被解析发射出来。 /// public class F002 : BP.WF.FlowEventBase { #region 属性. /// /// 重写流程标记 /// public override string FlowMark { get { return ",002,"; } } #endregion 属性. #region 构造. /// /// 报销流程事件 /// public F002() { } #endregion 属性. #region 发送事件. /// /// 重写发送前事件 /// /// public override string SendWhen() { if (this.HisNode.NodeID == 201) { DBAccess.RunSQL("UPDATE ND201Dtl1 SET XTSta=1 WHERE RefPK=(select PWorkID from ND1Rpt WHERE OID=" + this.WorkID + ")"); } if (this.HisNode.NodeID == 202) { DBAccess.RunSQL("UPDATE ND201Dtl1 SET XTSta=2 WHERE RefPK=(select PWorkID from ND1Rpt WHERE OID=" + this.WorkID + ")"); } if (this.HisNode.NodeID == 203) { DBAccess.RunSQL("UPDATE ND201Dtl1 SET XTSta=3 WHERE RefPK=" + this.WorkID ); } if (this.HisNode.NodeID == 204) { // DBAccess.RunSQL("UPDATE ND201Dtl1 SET XTSta=4 WHERE XTSta=3 AND RefPK=" + this.WorkID); } return null; } #endregion 发送事件. /// /// 发送成功事件,发送成功时,把流程的待办写入其他系统里. /// /// 返回执行结果,如果返回null就不提示。 public override string SendSuccess() { try { // 组织必要的变量. Int64 workid = this.WorkID; // 工作id.w string flowNo = this.HisNode.FK_Flow; // 流程编号. int currNodeID = this.SendReturnObjs.VarCurrNodeID; //当前节点id int toNodeID = this.SendReturnObjs.VarToNodeID; //到达节点id. string toNodeName = this.SendReturnObjs.VarToNodeName; // 到达节点名称。 string acceptersID = this.SendReturnObjs.VarAcceptersID; // 接受人员id, 多个人员会用 逗号分看 ,比如 zhangsan,lisi。 string acceptersName = this.SendReturnObjs.VarAcceptersName; // 接受人员名称,多个人员会用逗号分开比如:张三,李四. //执行向其他系统写入待办. /* * 在这里需要编写你的业务逻辑,根据上面组织的变量. */ if (this.HisNode.NodeID == 201) { StartSubFlows(); DBAccess.RunSQL("UPDATE WF_GenerWorkerlist SET IsEnable=0 WHERE FK_Node !=201 and WorkID= " + workid); } if (this.HisNode.NodeID == 203) DBAccess.RunSQL("UPDATE WF_GenerWorkerlist SET IsEnable = 0 WHERE FK_Node = 204 and WorkID= " + workid); //返回. return base.SendSuccess(); } catch (Exception ex) { return base.SendSuccess(); // throw new Exception("向其他系统写入待办失败,详细信息:"+ex.Message); } } public void StartSubFlows() { //发起之前,删除有可能存在的垃圾数据. GenerWorkFlows gwfs = new GenerWorkFlows(); gwfs.Retrieve(GenerWorkFlowAttr.PWorkID, this.WorkID); foreach (GenerWorkFlow item in gwfs) { BP.WF.Dev2Interface.Flow_DoDeleteFlowByReal(item.WorkID); } //求出来该订单下有多少个箱体. ND201Dtl1s dtls = new ND201Dtl1s(); dtls.Retrieve(ND201Dtl1Attr.RefPK, this.WorkID); //当前实体的数据. ND2Rpt rpt002 = new ND2Rpt(this.WorkID); //遍历箱体,. foreach (ND201Dtl1 item in dtls) { int i=item.Row.Count; //创建一个空白的workid. Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork("001", BP.Web.WebUser.No); //执行保存数据. ND1Rpt rpt001 = new ND1Rpt(workid); //把订单主表的字段,传入到箱体流程主表中去. rpt001.SetValByKey("DingDanHao", rpt002.GetValByKey("DingDanHao")); //订单编号 rpt001.SetValByKey("PrjName", rpt002.GetValByKey("PrjName")); //项目名称 rpt001.SetValByKey("KeHuMingCheng", rpt002.GetValByKey("KeHuMingCheng")); //客户名称 rpt001.SetValByKey("QiXianXianDing", rpt002.GetValByKey("QiXianXianDing")); //期限限定 rpt001.SetValByKey("JJCD", rpt002.GetValByKey("JJCD")); //紧急程度 //把箱体信息,写入到 箱体流程 主表中去. rpt001.SetValByKey("XiangTiMingCheng", item.GetValByKey("XiangTiMingCheng")); //箱体名称. rpt001.SetValByKey("TuZhiBianHao", item.GetValByKey("TuZhiBianHao")); //图纸编号. rpt001.SetValByKey("TuZhiZhiTuRen", item.GetValByKey("TuZhiZhiTuRen")); //图纸制图人. //rpt001.SetValByKey("QiXianXianDing", item.GetValByKey("QiXianXianDing")); //期限限定. //rpt001.SetValByKey("JJCD", item.GetValByKey("JJCD")); //紧急程度. rpt001.Update(); //求出来该箱体的装料单. ND201Dtl1Dtl1s dtl1s = new ND201Dtl1Dtl1s(); dtl1s.Retrieve(ND201Dtl1Dtl1Attr.RefPK, item.OID); //把装料单据copy到子流程上去. ND101Dtl1 dtl101 = new ND101Dtl1(); foreach (ND201Dtl1Dtl1 dtl1 in dtl1s) { dtl101.Row = dtl1.Row; dtl101.RefPK = workid; dtl101.InsertAsOID(dtl1.OID); } //执行发送. BP.WF.Dev2Interface.Node_SendWork("001", workid); //设置父子关系. BP.WF.Dev2Interface.SetParentInfo("001", workid, this.WorkID, BP.Web.WebUser.No, 202, false); //BP.WF.Dev2Interface.Node_SetDraft2Todolist("001", workid); } } } }