using System; using System.ComponentModel; using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.BOS; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.Bill.PlugIn.Args; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Core.SqlBuilder; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn; using System.Collections; using System.Data; namespace aoyuPlugIn { [HotUpdate] [Description("装配批录员工")] public class zp_plyg : AbstractBillPlugIn { public override void BeforeSave(BeforeSaveEventArgs e) { base.BeforeSave(e); if (check_data() == false) e.Cancel = true; } //检测数据 bool check_data() { bool isok = true; try { string djno ="";int isAdd=0; if (this.View.OpenParameter.Status == OperationStatus.ADDNEW) //新增 { isAdd = 0; } else { djno = this.Model.GetValue("FBillNo").ToString(); isAdd = 1; } string FEntity_nm = "F_GAT_Entity1"; //取表体最大行数 int tol = this.Model.GetEntryRowCount(FEntity_nm); if (tol > 0) { //集体计件 isok = yzdata(getJTJJ(), djno, isAdd); } else { //个人计件 isok = yzdata(getGRJJ(), djno, isAdd); } } catch (Exception ex) { this.View.ShowMessage("检测数据时发生错误为:" + ex.Message); } return isok; } //验证数据 bool yzdata(DataTable tb,string djno,int isAdd) { try { foreach (DataRow r in tb.Rows) { string rwdID = r["rwdID"].ToString(); string gxID = r["gxID"].ToString(); string sl = r["sl"].ToString(); string[] jg = tolsl(djno, rwdID, gxID, sl, isAdd); if (jg[0] == "1") { this.View.ShowErrMessage(jg[1].ToString() + "!"); return false; } } }catch(Exception ex) { this.View.ShowMessage("验证数据时发生错误为:" + ex.Message); } return true; } //bool check_data1() //{ // bool isok = true; // try // { // string djno = ""; int isAdd = 0; // if (this.View.OpenParameter.Status == OperationStatus.ADDNEW) //新增 // { // isAdd = 0; // } // else // { // djno = this.Model.GetValue("FBillNo").ToString(); // isAdd = 1; // } // string FEntity_nm = "F_GAT_Entity1"; // //取表体最大行数 // int tol = this.Model.GetEntryRowCount(FEntity_nm); // for (int i = 0; i < tol; i++) // { // DynamicObject fgt = this.View.Model.GetValue("F_SCNO", i) as DynamicObject; // string rwdID = fgt["ID"].ToString(); // DynamicObject fgt1 = this.View.Model.GetValue("F_DJGWID", i) as DynamicObject; // string gxID = fgt1["Number"].ToString(); // string sl = this.Model.GetValue("F_FQTY").ToString(); // Double[] jg = tolsl(djno, rwdID, gxID, sl, isAdd); // if (jg[0] == 1) // { // isok = false; // this.View.ShowErrMessage("第" + (i + 1).ToString() + "行超过订单数" + jg[1].ToString() + "!"); // break; // } // } // //个人计件 // DataTable tbgr = getGRJJ(); // } // catch (Exception ex) // { this.View.ShowMessage("验证数据时发生错误为:" + ex.Message); } // return isok; //} //取集体计件数量 DataTable getJTJJ () { ArrayList data1 = new ArrayList(); DataTable tb = new DataTable(); tb.Columns.Add("rwdID"); tb.Columns.Add("gxID"); tb.Columns.Add("sl"); try { string FEntity_nm = "F_GAT_Entity1"; //取表体最大行数 int tol = this.Model.GetEntryRowCount(FEntity_nm); for (int i = 0; i < tol; i++) { DynamicObject fgt = this.View.Model.GetValue("F_SCNO", i) as DynamicObject; string rwdID = fgt["ID"].ToString(); DynamicObject fgt1 = this.View.Model.GetValue("F_DJGWID", i) as DynamicObject; string gxID = fgt1["Number"].ToString(); string sl = this.Model.GetValue("F_FQTY",i).ToString(); string p = rwdID + "*" + gxID; if (data1.Contains(p) == false) { data1.Add(p); DataRow nr = tb.NewRow(); nr[0] = rwdID; nr[1] = gxID; nr[2] = sl; tb.Rows.Add(nr); } else { foreach (DataRow r2 in tb.Rows) { if (rwdID == r2["rwdID"].ToString() && gxID == r2["gxID"].ToString()) { r2["sl"] = Convert.ToInt16(sl) + Convert.ToInt16(r2["sl"].ToString()); break; } } } } } catch (Exception ex) { this.View.ShowMessage("验证数据时发生错误为:" + ex.Message); } return tb; } //取个人计件数据 DataTable getGRJJ() { //int index = this.View.Model.GetEntryCurrentRowIndex("你的单据体标识"); //DynamicObject obj = this.Model.DataObject; //DynamicObjectCollection rows = obj["你的单据体ORM实体名"] as DynamicObjectCollection; //rows[index];// 就是你要的 //取表体最大行数 //int tol = this.Model.GetEntryRowCount(FEntity_nm); ArrayList data1 = new ArrayList(); DataTable tb = new DataTable(); tb.Columns.Add("rwdID"); tb.Columns.Add("gxID"); tb.Columns.Add("sl"); try { string ORM_NM = "GAT_DAY_GR_ZP";//你的单据体ORM实体名 DynamicObject obj = this.Model.DataObject; DynamicObjectCollection rows = obj[ORM_NM] as DynamicObjectCollection; int i = 0; foreach (var r in rows) { DynamicObject fgt = r["F_SCNO1"] as DynamicObject; string rwdID = fgt["ID"].ToString(); DynamicObject fgt1 = r["F_GWID"] as DynamicObject; string gxID = fgt1["Number"].ToString(); string p = rwdID + "*" + gxID; string sl = r["F_FQ1TY1"].ToString(); if (data1.Contains(p) == false) { data1.Add(p); DataRow nr = tb.NewRow(); nr[0] = rwdID; nr[1] = gxID; nr[2] = sl; tb.Rows.Add(nr); } else { foreach (DataRow r2 in tb.Rows) { if (rwdID == r2["rwdID"].ToString() && gxID == r2["gxID"].ToString()) { int kk = Convert.ToInt16(sl) + Convert.ToInt16(r2["sl"].ToString()); r2["sl"] = kk; break; } } } } }catch(Exception ex) { this.View.ShowMessage("组合表数据时发生错误为:" + ex.Message); } return tb; } string[] tolsl(string djno,string rwdID,string gxID,string sl, int isAdd) { string[] isok = new string[2]; isok[0] = "0"; isok[1] = "0"; string sql = String.Format("exec hw_zp_yzsl '{0}',{1},{2},'{3}',{4}",djno, rwdID,gxID,sl,isAdd); var dr1 = DBServiceHelper.ExecuteDynamicObject(this.Context, sql); string jg = "0"; if (dr1.Count > 0) jg = dr1[0][0].ToString(); if ( jg!="0") { isok[0] = "1"; isok[1] = jg; } return isok; } //单据头菜单点击 //public override void BarItemClick(BarItemClickEventArgs e) //{ // base.BarItemClick(e); // //if (e.BarItemKey == "tbApprove" || e.BarItemKey == "tbSplitApprove") // //{ // // fx_yscs(e, "1"); // //}else if(e.BarItemKey== "tbReject") { // // fx_yscs(e, "0"); // //} //} //public override void AfterBarItemClick(AfterBarItemClickEventArgs e) //{ // base.AfterBarItemClick(e); // //if (e.BarItemKey == "tbReject") // //{ // // //隐藏审核菜单 // // this.View.GetMainBarItem("tbApprove").Visible = false; // // this.View.GetMainBarItem("tbSplitApprove").Visible = false; // //} //} //public override void AfterBindData(EventArgs e) //{ // base.AfterBindData(e); //// var baseObj1 = this.Model.GetValue("FBT005"); // if (baseObj1.ToString() =="0") // { // var sSql = String.Format("exec hw_get_btbz"); // var dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sSql); // int i = 0; // if (dr.Count > 0) // { // //string k = item[0].ToString(); // //this.Model.SetValue("F_YGNO3", item[0], i); // this.Model.SetValue("FBT005", dr[0][1].ToString()); // this.View.UpdateView("FBT005"); // this.Model.SetValue("FBT006", dr[1][1].ToString()); // this.View.UpdateView("FBT006"); // this.Model.SetValue("FBT012", dr[2][1].ToString()); // this.View.UpdateView("FBT012"); // } // } //} //反写已生产数据 void fx_yscs(BarItemClickEventArgs e,string sh) { string fbillno = this.View.Model.GetValue("FBillNo").ToString(); var sSql = String.Format("EXEC hw_zplr_fx_scdd " + fbillno + ","+sh); var dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sSql); string t = "生产数量大于订单数量,不能审核!"; if (dr.Count > 0) { foreach (var item in dr) { string k = "生产订单:" + item["rwdNo"].ToString() + "|工序编号:" + item["gxNo"].ToString() + "|订单数:" + item["dds"].ToString() + "|已生产数:" + item["yscs"].ToString(); t = t + "\r\n" + k; } this.View.ShowMessage(t); e.Cancel = true; } } //点击单据体菜单 public override void EntryBarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); if (e.BarItemKey == "tbPLYG") { //string t =this.View.Model.GetValue("F_CBM").ToString(); //string t = this.View.Model.DataObject["F_CBM"].ToString(); DynamicObject fgt = this.View.Model.GetValue("F_CBM") as DynamicObject; string t = fgt["ID"].ToString(); add_data_stort(t); } } void del_data(string FEntity_nm) { try { //取表体最大行数 int tol = this.Model.GetEntryRowCount(FEntity_nm); tol--; for (int i = tol; i > -1; i--) { this.View.Model.DeleteEntryRow(FEntity_nm, i); //先删除空行 } } catch (Exception ex) { this.View.ShowMessage("删除表体数据时发生错误为:" + ex.Message); } } public void add_data_stort(string cs) { try { del_data("F_JTJJ"); var sSql = String.Format("EXEC hw_get_plyg " + cs); var dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sSql); int i = 0; if (dr.Count > 0) { this.View.Model.BatchCreateNewEntryRow("F_JTJJ", dr.Count); } foreach (var item in dr) { string k = item[0].ToString(); this.Model.SetValue("F_YGNO3", item[0], i); //this.Model.SetValue("F_REM", "1", i); i++; } } catch (Exception ex) { this.View.ShowMessage("加表体数据时发生错误为:" + ex.Message); } } } }