Files
Gatedge.HuiWei.BOS.JJGZMJ/aoyuPlugIn/汇威/zp_plyg.cs

394 lines
14 KiB
C#
Raw Normal View History

2025-06-20 09:17:36 +08:00
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); }
}
}
}