protected void Page_Load(object sender, EventArgs e) { //检查物理表。 CheckPhysicsTable(); if (BP.Web.WebUser.No == null) { throw new Exception("@登录信息丢失."); } // 首先根据WorkID获取 tab_wf_commonkpiopti_main 的数据, tab_wf_commonkpiopti_main main = new tab_wf_commonkpiopti_main(); main.WorkID = this.WorkID; if (main.Retrieve(tab_wf_commonkpiopti_mainAttr.WorkID, this.WorkID) == 0) { /*说明没有找到这个数据,就要向这个数据库里插入一条对应的流程数据记录。*/ main.wf_title = "测试:WF_title "; main.wf_send_time = DataType.CurrentDataCNOfShort; main.wf_send_phone = "18660153393"; //用户部门. main.wf_send_department = WebUser.FK_Dept; //用户部门. main.wf_send_user = WebUser.No; main.wf_no = "Bill" + DateTime.Now.ToString("yyyyMMddHH"); /*单据编号*/ // 这里还有其它的值没有设置,根据业务情况设置它们。 //main.Insert(); /*执行向主流程上插入一条*/ } else { /* * 这里要修改一些变化的信息,比如:单据编号或者发送人的电话,发送时间。 * 有可能此人n天以前启动了一个草稿就退出了,有一些字段是根据当前的环境变化而变化的. */ main.wf_title = "测试:wf_title "; main.wf_send_time = DataType.CurrentDataCNOfShort; main.wf_send_phone = "18660153393"; //用户部门. main.wf_send_department = WebUser.FK_Dept; //用户部门. main.wf_send_user = WebUser.No; main.wf_no = "Bill" + DateTime.Now.ToString("yyyyMMddHH"); /*单据编号*/ } }
/// <summary> /// 执行保存工单 /// 1,向省局业务主表里写数据. /// 2,向市局工单临时表里写数据。 /// 3,向设备工单临时表里写数据。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Btn_Save_Click(object sender, EventArgs e) { /* * 保存说明: 向省局主表里写数据, 这里用En30框架来描述业务逻辑的实现步骤. * 您可以直接用sql,或者用自己的方式把数据存入 tab_wf_commonkpiopti_main表里. */ #region 第一步: 保存主表数据. // 建立一个空白的数据. tab_wf_commonkpiopti_main mainFlow = new tab_wf_commonkpiopti_main(); // 根据WorkID 查询出来这条数据信息, 执行这个方法,就可以获得主建OID, // 一定可以查询出来一条数据,因为在page_load中已经判断。 mainFlow.Retrieve(tab_wf_commonkpiopti_mainAttr.WorkID, this.WorkID); /*查询出来数据.*/ //首先要给这个主表的, 赋予流程的基本信息. mainFlow.WorkID = this.WorkID; mainFlow.fk_flow = this.FK_Flow; // 流程编号 mainFlow.wf_category = "02"; // 流程类别编号。 mainFlow.wf_title = "自定义流程标题:" + DataType.CurrentData + " , " + WebUser.No; // 流程标题 mainFlow.wf_no = this.TB_wf_no.Text; // 单据编号 mainFlow.wf_send_user = WebUser.No; // 当前操作员. mainFlow.wf_send_department = WebUser.FK_Dept; // 当前操作人员部门. mainFlow.wf_send_phone = "18660153393"; //当前操作员电话 mainFlow.wf_send_time = DataType.CurrentDataTime; // 当前时间. // 其次要给其它业务字段赋值. mainFlow.techology = this.TB_ZBName.Text; /*指标信息.*/ //最后更新到数据库里, 完成主表的数据写入。 int i = mainFlow.Update(); // 执行更新 if (i == 0) { mainFlow.Insert(); } #endregion 保存主表数据. #region 第二步: 清除目标从表数据与从从表数据, 可能你们的方法与我们的方法不同. tab_wf_commonkpioptis shiJus = new tab_wf_commonkpioptis(); shiJus.Retrieve(tab_wf_commonkpioptiAttr.tab_wf_commonkpiopti_main, mainFlow.OID); // 清除市局数据. foreach (tab_wf_commonkpiopti shiju in shiJus) { //删除该市局下面的设备信息。 tab_wf_commonkpioptivalue shebeiEn = new tab_wf_commonkpioptivalue(); shebeiEn.Delete(tab_wf_commonkpioptivalueAttr.wf_commonkpioptivalue_id, shiju.OID); //删除该市局数据。 shiju.Delete(); } #endregion 清除目标从表数据与从从表数据. #region 第三步: 保存从表数据.(市局数据) // new 市局数据. tab_wf_commonkpiopti shijuEn = new tab_wf_commonkpiopti(); // 设置基础信息 shijuEn.WorkID = this.WorkID; shijuEn.tab_wf_commonkpiopti_main = mainFlow.OID; // 关联的主键 shijuEn.fk_flow = this.FK_Flow; shijuEn.wf_no = "111-222-3333"; //单据编号 shijuEn.WorkID = 0; // 这个时间还没有产生WorkID shijuEn.wf_send_user = "******"; // 子线程的处理人. //设置业务数据信息. shijuEn.region_id = "济南"; // 将市局数据-插入到数据库. shijuEn.Insert(); #endregion 第三步: 保存从表数据. (市局数据) #region 第四步: 保存从从表数据.(市局-设备数据) // 生成济南的第1个设备信息, 这些信息放在子线程中去, new 一个设备信息. tab_wf_commonkpioptivalue shebei = new tab_wf_commonkpioptivalue(); // 给他赋值 - 流程信息字段 shebei.wf_commonkpioptivalue_id = shijuEn.OID; //关联主键 shebei.fk_flow = this.FK_Flow; shebei.WorkID = 0; // 这个时间还没有产生WorkID // shebei.fid = 0; // 这个时间还没有产生fid shebei.fuzeren = "guobaogeng"; // 现在指定下一节点的工作人员 // 给他赋值 - 业务字段. shebei.addr = "济南高新区xx路xx号"; shebei.remark = "abc-abc"; // 插入到数据库. shebei.Insert(); // 在建立一个设备信息。 shebei = new tab_wf_commonkpioptivalue(); // 给他赋值 - 流程信息字段 shebei.wf_commonkpioptivalue_id = shijuEn.OID; //关联主键 shebei.fk_flow = this.FK_Flow; shebei.WorkID = 0; // 这个时间还没有产生WorkID // shebei.fid = 0; // 这个时间还没有产生fid shebei.fuzeren = "fuhui"; // 现在指定下一节点的工作人员 // 给他赋值 - 业务字段. shebei.addr = "济南历城区xx路xx号"; shebei.remark = "abc-123"; // 插入到数据库. shebei.Insert(); #endregion 保存从从表数据. (市局-设备数据) if (sender == null) { this.Response.Write("保存成功"); } }