diff --git a/SjMes/PunchAssemble/BBMPT.sln b/SjMes/PunchAssemble/BBMPT.sln new file mode 100644 index 0000000..b46ee13 --- /dev/null +++ b/SjMes/PunchAssemble/BBMPT.sln @@ -0,0 +1,42 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34330.188 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MESClassLibrary", "MESClassLibrary\MESClassLibrary.csproj", "{867989D8-6837-41DC-9BF1-4658F5D6CFEF}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0D128182-FB8C-4E0B-A42F-DF3767E4DE39}" + ProjectSection(SolutionItems) = preProject + 数据结构修改记录.txt = 数据结构修改记录.txt + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PunchAndWeld", "PunchAndWeld\PunchAndWeld.csproj", "{D6371D99-5220-4A51-A72C-966FB4BFCD2C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Debug|x86.ActiveCfg = Debug|Any CPU + {867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Release|Any CPU.Build.0 = Release|Any CPU + {867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Release|x86.ActiveCfg = Release|Any CPU + {D6371D99-5220-4A51-A72C-966FB4BFCD2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D6371D99-5220-4A51-A72C-966FB4BFCD2C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D6371D99-5220-4A51-A72C-966FB4BFCD2C}.Debug|x86.ActiveCfg = Debug|Any CPU + {D6371D99-5220-4A51-A72C-966FB4BFCD2C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D6371D99-5220-4A51-A72C-966FB4BFCD2C}.Release|Any CPU.Build.0 = Release|Any CPU + {D6371D99-5220-4A51-A72C-966FB4BFCD2C}.Release|x86.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {52EF8F7E-6AC9-4400-82F1-31F70143C867} + EndGlobalSection +EndGlobal diff --git a/SjMes/PunchAssemble/MESClassLibrary/App.config b/SjMes/PunchAssemble/MESClassLibrary/App.config new file mode 100644 index 0000000..f80c656 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/App.config @@ -0,0 +1,20 @@ + + + +
+ + + + + + + + + + + + + + + + diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Andon/AndonButtonRecordBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Andon/AndonButtonRecordBLL.cs new file mode 100644 index 0000000..e7ffbd1 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Andon/AndonButtonRecordBLL.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.Andon; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.Andon +{ + public class AndonButtonRecordBLL + { + AndonButtonRecordDAL da=new AndonButtonRecordDAL(); + + public bool InsertInfo(AndonRecordModel md) + { + try + { + return da.InsertInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdateInfo(AndonRecordModel md) + { + try + { + return da.UpdateInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Andon/AndonButtonTypeBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Andon/AndonButtonTypeBLL.cs new file mode 100644 index 0000000..9aa1828 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Andon/AndonButtonTypeBLL.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL; +using MESClassLibrary.DAL.Andon; + +namespace MESClassLibrary.BLL.Andon +{ + public class AndonButtonTypeBLL + { + public DataTable SearchInfoByName(string buttonName) + { + try + { + AndonButtonTypeDAL da = new AndonButtonTypeDAL(); + + return da.SearchInfoByName(buttonName); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicBLL.cs new file mode 100644 index 0000000..3621ab5 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicBLL.cs @@ -0,0 +1,178 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL +{ + public class BasicBLL where T : class, new() + { + BaseDAL db = new BaseDAL(); + /// 新增信息 + public bool AddInfo(T md) + { + try + { + if (db.Add(md) > 0) + { + return true; + } + return false; + } + catch (Exception ex) + { + //LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// 修改信息 + public bool UpdateInfo(T md, params string[] proNames) + { + try + { + //T u = new T() { uId = 1, uLoginName = "asdfasdf" }; + if (db.Modify(md, proNames) > 0) + { + return true; + } + return false; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// 删除信息 + public bool DelInfo(T md) + { + try + { + if (db.Del(md) > 0) + { + return true; + } + return false; + } + catch (Exception ex) + { + //LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + public List SearchInfo(int page, int pagesize, out int total) + { + try + { + var list = db.GetListBy(LambdaHelper.CreateEqual("IsUseing", 1)).ToList(); + total = list.Count; + int Skipcount = (page - 1) * pagesize; + return list.Skip(Skipcount).Take(pagesize).ToList(); + } + catch (Exception ex) + { + total = 0; + //LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + public List SearchInfoByKey(string keyname, object keyvalue) + { + try + { + var list = db.GetListBy(LambdaHelper.CreateEqual(keyname, keyvalue)).ToList(); + return list; + } + catch (Exception) + { + return new List(); + //return null; + } + + } + + public List SearchInfoContains(string keyname, string keyvalue) + { + try + { + var list = db.GetListBy(LambdaHelper.GetContains(keyname, keyvalue)).ToList(); + return list; + } + catch (Exception) + { + return new List(); + //return null; + } + + } + + + + public List SearchInfoAll(int page, int pagesize, out int total) + { + try + { + var list = db.GetListBy(LambdaHelper.True()).ToList(); + total = list.Count; + int Skipcount = (page - 1) * pagesize; + return list.Skip(Skipcount).Take(pagesize).ToList(); + } + catch (Exception ex) + { + total = 0; + //LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + public T SearchInfoByID(string ID) + { + try + { + var list = db.Find(ID); + return list; + } + catch (Exception ex) + { + return null; + } + + } + public List SearchAllInfo() + { + try + { + return db.GetListBy(LambdaHelper.True()).ToList(); + } + catch (Exception ex) + { + //LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + public List SearchInfoByTime(string cname, DateTime stime, DateTime etime) + { + try + { + IQueryable list = db.GetListBy(LambdaHelper.CreateCompareToLater(cname, stime)).AsQueryable(); + list = list.Where(LambdaHelper.CreateCompareToEarlier(cname, etime)); + return list.ToList(); + } + catch (Exception) + { + return new List(); + //return null; + } + + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/BadInjectionBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/BadInjectionBLL.cs new file mode 100644 index 0000000..7a2f8f6 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/BadInjectionBLL.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.BasicInfo; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class BadInjectionBLL + { + BadInjectionDAL db=new BadInjectionDAL(); + + public bool Add_Info(BadInjectionModel md) + { + try + { + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchByCode(string code) + { + try + { + return db.SearchByCode(code); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/BarCodeBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/BarCodeBLL.cs new file mode 100644 index 0000000..1f46252 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/BarCodeBLL.cs @@ -0,0 +1,174 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.BasicInfo; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class BarCodeBLL + { + BarCodeDAl db = new BarCodeDAl(); + + public DataTable SearchInfoByStock(string StockNo) + { + try + { + return db.SearchInfoByStock(StockNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool Add_Info(BarCodeModel md) + { + try + { + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchInfo(string stationNo) + { + try + { + return db.SearchInfo(stationNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoAll() + { + try + { + return db.SearchInfoAll(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchBarCode() + { + try + { + return db.SearchBarCode(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchBarCodeByOne(string OneBarCode) + { + try + { + return db.SearchBarCodeByOne(OneBarCode); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchBarCodeByTwo(string BarCode) + { + try + { + return db.SearchBarCodeByTwo(BarCode); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchSerialNoByBarCode(string Code) + { + try + { + return db.SearchSerialNoByBarCode(Code); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoByBarCode(string BarCode) + { + try + { + return db.SearchInfoByBarCode(BarCode); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool Update_Info(BarCodeModel md) + { + try + { + return db.UpdateInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool DelBarCode(BarCodeModel md) + { + try + { + return db.DelBarCode(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchOneBarCode(string barCode,int a) + { + try + { + return db.SearchOneBarCode(barCode,a); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/BomBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/BomBLL.cs new file mode 100644 index 0000000..3ee0387 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/BomBLL.cs @@ -0,0 +1,271 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.DAL.BasicInfo; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class BomBLL + { + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_Bom md) + { + try + { + var list = db.SearchInfoByKey("PartNo1", md.PartNo1);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.BomID != md.BomID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_Bom md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.PartNo1 == md.PartNo1 && p.BomID != md.BomID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[2]; + proNames[0] = "PartNo1"; + proNames[1] = "PartNo2"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_Bom md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string partNo1) + { + try + { + + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(partNo1)) + { + list = list.Where(p => p.PartNo1.Contains(partNo1)).ToList(); + } + + if (list.Count > 0) + { + total = list.Count; + + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + List modelList = new List(); + BasicBLL s_db = new BasicBLL(); + var s_list = s_db.SearchAllInfo(); + + foreach (var item in list) + { + BomModel dm = Tool.Mapper(item); + var info = s_list.FirstOrDefault(p => p.PartNo == item.PartNo1); + if (info != null) + { + dm.ProductName1 = info.ProductName; + } + + var info2 = s_list.FirstOrDefault(p => p.PartNo == item.PartNo2); + if (info2 != null) + { + dm.ProductName2 = info2.ProductName; + } + + modelList.Add(dm); + } + + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = modelList; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 查询全部信息 + /// + /// + public List SearchAll() + { + try + { + var s_list = db.SearchAllInfo().ToList(); + return s_list; + } + catch (Exception) + { + return null; + } + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_Bom SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public DataTable SearchBom(string PartNo) + { + BomDAL dal=new BomDAL(); + try + { + return dal.SearchBom(PartNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable Search(string partNo1, string partNo2) + { + BomDAL dal = new BomDAL(); + try + { + return dal.Search(partNo1, partNo2); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool AddInfo(BomModel md) + { + BomDAL dal = new BomDAL(); + try + { + return dal.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool updateInfo(BomModel md) + { + BomDAL dal = new BomDAL(); + try + { + return dal.updateInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool DelInfo(BomModel md) + { + BomDAL dal = new BomDAL(); + try + { + return dal.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/BucketInfoBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/BucketInfoBLL.cs new file mode 100644 index 0000000..89d654a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/BucketInfoBLL.cs @@ -0,0 +1,184 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.BasicInfo +{ + + public class BucketInfoBLL + { + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_BucketInfo md) + { + try + { + var list = db.SearchInfoByKey("BucketCode", md.BucketCode);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.ID != md.ID && p.IsUsing == 1).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_BucketInfo md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.BucketCode == md.BucketCode && p.ID != md.ID && p.IsUsing == 1).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[3]; + proNames[0] = "BucketCode"; + proNames[1] = "BucketName"; + proNames[2] = "IsUsing"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_BucketInfo md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string BucketCode) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(BucketCode)) + { + list = list.Where(p => p.BucketCode.Contains(BucketCode)).ToList(); + } + + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + return JSONTools.ScriptSerialize(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_BucketInfo SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().ToList();//判断是否有重复数据 + + List sl = new List(); + + foreach (var item in list) + { + SelectModel md = new SelectModel(); + md.textField = item.BucketCode+"--"+ item.BucketName; + md.valueField = item.ID; + sl.Add(md); + } + + jsonStr = JSONTools.ScriptSerialize(sl); + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/CheckItemBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/CheckItemBLL.cs new file mode 100644 index 0000000..9267efd --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/CheckItemBLL.cs @@ -0,0 +1,198 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class CheckItemBLL + { + BasicBLL db = new BasicBLL(); + /// + /// 查询信息 + /// + /// + public string SearchInfo(string page, string pagesize, string CheckContent, string DeviceID) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(DeviceID)) + { + list = list.Where(p => p.DeviceID == DeviceID).ToList(); + } + + if (!String.IsNullOrEmpty(CheckContent)) + { + list = list.Where(p => p.CheckContent.Contains(CheckContent)).ToList(); + } + + if (list.Count > 0) + { + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + #region 联查 + List ModelList = new List(); + BasicBLL p_db = new BasicBLL(); + var p_list = p_db.SearchAllInfo().ToList(); + foreach (var item in list) + { + CheckItemModel dm = Tool.Mapper(item); + var info = p_list.FirstOrDefault(p => p.DeviceID == item.DeviceID); + if (info != null) + { + dm.DeviceName = info.DeviceName; + } + ModelList.Add(dm); + } + #endregion + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = ModelList; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + /// + /// 添加信息 + /// + /// 生产线模型对象 + /// + public bool AddInfo(tb_CheckItem md) + { + try + { + var list = db.SearchInfoByKey("CheckContent", md.CheckContent);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.DeviceID.Equals(md.DeviceID)).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// 生产线模型对象 + /// + public bool UpdateInfo(tb_CheckItem md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.CheckContent == md.CheckContent && p.DeviceID == md.DeviceID && p.ID != md.ID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[3]; + proNames[0] = "DeviceID"; + proNames[1] = "CheckContent"; + proNames[2] = "CheckVersion"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + /// 删除生产线信息 + public bool DelInfo(tb_CheckItem md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().ToList();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize>(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + } + + public string GetTreeData(string deviceID) + { + try + { + string jsonStr = "[]"; + BasicBLL li_db = new BasicBLL(); + List trlist = new List(); + TreeModel tr = new TreeModel(); + tr.id = "-1"; + tr.text = "点检项"; + tr.state = "open"; + var li_list = li_db.SearchAllInfo().Where(p => p.DeviceID.Equals(deviceID)).ToList(); + var queryData = from a in li_list + select new ChildTreeModel + { + id = a.ID, + text = a.CheckContent + }; + List clist = queryData.ToList(); + if (clist.Count > 0) + { + tr.children = clist; + trlist.Add(tr); + } + jsonStr = JSONTools.ScriptSerialize>(trlist); + return jsonStr; + } + catch (Exception) + { + return ""; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ColorBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ColorBLL.cs new file mode 100644 index 0000000..4245237 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ColorBLL.cs @@ -0,0 +1,214 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using MESClassLibrary.DAL.BasicInfo; + + +namespace MESClassLibrary.BLL.BasicInfo +{ + + public class ColorBLL + { + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_Color md) + { + try + { + //var list = db.SearchInfoByKey("ColorCode", md.ColorCode);//判断是否有重复数据 + //if (list != null) + //{ + // if (list.Where(p => p.ID != md.ID).Count() > 0) + // { + // return false; + // } + + //} + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_Color md) + { + try + { + //var list = db.SearchAllInfo().Where(p => p.ColorCode == md.ColorCode && p.ID != md.ID).ToList();//判断是否有重复数据 + //if (list.Count > 0) + //{ + // return false; + //} + + //初始化要更新的字段 + string[] proNames = new string[5]; + proNames[0] = "ColorCode"; + proNames[1] = "ColorNo"; + proNames[2] = "ColorQQCode"; + proNames[3] = "Des"; + proNames[4] = "ColorDQCode"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_Color md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize,string ColorCode) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(ColorCode)) + { + list = list.Where(p => p.ColorCode.Contains(ColorCode)).ToList(); + } + + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + return JSONTools.ScriptSerialize(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_Color SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().Select(p=>p.Des).Distinct().ToList();//判断是否有重复数据 + + List sl = new List(); + + foreach (var item in list) + { + SelectModel md = new SelectModel(); + md.textField = item; + md.valueField = item; + sl.Add(md); + } + + jsonStr = JSONTools.ScriptSerialize(sl); + return jsonStr; + } + catch (Exception) + { + return ""; + } + + + } + + public DataTable SearchAll() + { + ColorDAL da = new ColorDAL(); + try + { + return da.SearchInfoAll(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchByName(string color) + { + ColorDAL da = new ColorDAL(); + try + { + return da.SearchByName(color); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/DefectBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/DefectBLL.cs new file mode 100644 index 0000000..1e7b3f0 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/DefectBLL.cs @@ -0,0 +1,181 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.DAL.BasicInfo; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class DefectBLL + { + BasicBLL db = new BasicBLL(); + /// + /// 查询信息 + /// + /// + public string SearchInfo(string page, string pagesize, string DefectName, string LineID) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(LineID)) + { + list = list.Where(p => p.LineID == LineID).ToList(); + } + + if (!String.IsNullOrEmpty(DefectName)) + { + list = list.Where(p => p.DefectName.Contains(DefectName)).ToList(); + } + + if (list.Count > 0) + { + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + #region 联查 + List ModelList = new List(); + BasicBLL p_db = new BasicBLL(); + var p_list = p_db.SearchAllInfo().ToList(); + foreach (var item in list) + { + DefectModel dm = Tool.Mapper(item); + var info = p_list.FirstOrDefault(p => p.LineID == item.LineID); + if (info != null) + { + dm.LineName = info.LineName; + } + ModelList.Add(dm); + } + #endregion + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = ModelList; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + /// + /// 添加信息 + /// + /// 生产线模型对象 + /// + public bool AddInfo(tb_Defect md) + { + try + { + var list = db.SearchInfoByKey("DefectName", md.DefectName);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.ID != md.ID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// 生产线模型对象 + /// + public bool UpdateInfo(tb_Defect md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.DefectName == md.DefectName && p.ID != md.ID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[3]; + proNames[0] = "LineID"; + proNames[1] = "DefectName"; + proNames[2] = "Des"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + /// 删除生产线信息 + public bool DelInfo(tb_Defect md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().ToList();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize>(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + } + + public DataTable SearchInfo(string LineID) + { + DefectDAL da=new DefectDAL(); + try + { + return da.SearchInfoAll(LineID); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/DeptBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/DeptBLL.cs new file mode 100644 index 0000000..281c860 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/DeptBLL.cs @@ -0,0 +1,144 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class DeptBLL + { + BasicBLL db = new BasicBLL(); + /// + /// 查询信息 + /// + /// + public string SearchInfo(string page, string pagesize, string DeptName) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(DeptName)) + { + list = list.Where(p => p.DeptName.Contains(DeptName)).ToList();//按条件分页查询 + } + + if (list.Count > 0) + { + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + jsonStr = JSONTools.ScriptSerialize(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + /// + /// 添加信息 + /// + /// 生产线模型对象 + /// + public bool AddInfo(TA_DEPT md) + { + try + { + var list = db.SearchInfoByKey("LineName", md.DeptName);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.GUID != md.GUID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// 生产线模型对象 + /// + public bool UpdateInfo(TA_DEPT md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.DeptName == md.DeptName && p.GUID != md.GUID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[3]; + proNames[0] = "DeptCode"; + proNames[1] = "DeptName"; + proNames[2] = "Remark"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + /// 删除生产线信息 + public bool DelInfo(TA_DEPT md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().ToList();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize>(list); + return jsonStr; + } + catch (Exception ex) + { + return ""; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/DeviceBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/DeviceBLL.cs new file mode 100644 index 0000000..4b9d94c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/DeviceBLL.cs @@ -0,0 +1,251 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class DeviceBLL + { + BasicBLL db = new BasicBLL(); + /// + /// 查询信息 + /// + /// + public string SearchInfo(string page, string pagesize, string DeviceNo, string StationID) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(StationID)) + { + list = list.Where(p => p.StationID == StationID).ToList();//按条件分页查询 + } + + if (!String.IsNullOrEmpty(DeviceNo)) + { + list = list.Where(p => p.DeviceNo.Contains(DeviceNo)).ToList();//按条件分页查询 + } + + if (list.Count > 0) + { + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + #region 联查 + List StationList = new List(); + BasicBLL pl_db = new BasicBLL(); + var pl_list = pl_db.SearchAllInfo().ToList(); + foreach (var item in list) + { + DeviceModel dm = Tool.Mapper(item); + var info = pl_list.FirstOrDefault(p => p.StationID == item.StationID); + if (info != null) + { + dm.StationNo = info.StationNo; + } + StationList.Add(dm); + } + #endregion + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = StationList; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + + + public string SearchInfoByID(string DeviceID) { + try + { + string jsonStr = "[]"; + tb_Device info = db.SearchInfoByID(DeviceID); + jsonStr = JSONTools.ScriptSerialize(info); + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + } + + + /// + /// 添加信息 + /// + /// 生产线模型对象 + /// + public bool AddInfo(tb_Device md) + { + try + { + var list = db.SearchInfoByKey("DeviceNo", md.DeviceNo);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.DeviceID != md.DeviceID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// 生产线模型对象 + /// + public bool UpdateInfo(tb_Device md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.DeviceNo == md.DeviceNo && p.DeviceID != md.DeviceID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[6]; + proNames[0] = "StationID"; + proNames[1] = "DeviceNo"; + proNames[2] = "DeviceName"; + proNames[3] = "FixNo"; + proNames[4] = "Des"; + proNames[5] = "DeviceModel"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + /// 删除生产线信息 + public bool DelInfo(tb_Device md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().ToList();//判断是否有重复数据 + foreach (var item in list) + { + item.DeviceName = item.DeviceNo + "----" + item.DeviceName; + } + jsonStr = JSONTools.ScriptSerialize>(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + + + } + + public string QueryForComboboxByLineID(string fl_id) + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().ToList();//判断是否有重复数据 + if (fl_id != null && fl_id != "") + { + BasicBLL s_db = new BasicBLL(); + var s_list = s_db.SearchAllInfo().Where(p => p.LineID == fl_id).ToList();//判断是否有重复数据 + if (s_list.Count > 0) + { + string[] arr = s_list.Select(p => p.StationID).ToArray(); + list = list.Where(p => arr.Contains(p.StationID)).ToList(); + foreach (var item in list) + { + item.DeviceName = item.DeviceNo + "----" + item.DeviceName; + } + jsonStr = JSONTools.ScriptSerialize>(list); + return jsonStr; + } + } + return ""; + } + catch (Exception) + { + return ""; + } + + + } + + public string QueryForComboboxByStationID(string fl_id) + { + try + { + string jsonStr = "[]"; + + if (fl_id != null && fl_id != "") + { + var list = db.SearchAllInfo().Where(p => p.StationID == fl_id).ToList();//判断是否有重复数据 + foreach (var item in list) + { + item.DeviceName = item.DeviceNo + "----" + item.DeviceName; + } + jsonStr = JSONTools.ScriptSerialize>(list); + return jsonStr; + } + return ""; + } + catch (Exception) + { + return ""; + } + + + } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/FactoryBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/FactoryBLL.cs new file mode 100644 index 0000000..68ec1a7 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/FactoryBLL.cs @@ -0,0 +1,148 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class FactoryBLL + { + BasicBLL db = new BasicBLL(); + /// + /// 查询信息 + /// + /// + public string SearchInfo(string page, string pagesize, string FactoryName) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo(); + + + if (!String.IsNullOrEmpty(FactoryName)) + { + list = list.Where(p => p.FactoryName.Contains(FactoryName)).ToList();//按条件分页查询 + } + + if (list.Count > 0) + { + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + /// + /// 添加信息 + /// + /// 生产线模型对象 + /// + public bool AddInfo(tb_Factory md) + { + try + { + var list = db.SearchInfoByKey("FactoryName", md.FactoryName);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.FactoryID != md.FactoryID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// 生产线模型对象 + /// + public bool UpdateInfo(tb_Factory md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.FactoryName == md.FactoryName && p.FactoryID != md.FactoryID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[2]; + proNames[0] = "FactoryName"; + proNames[1] = "Des"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + /// 删除生产线信息 + public bool DelInfo(tb_Factory md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().ToList();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize>(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + + + + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ImgVideoBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ImgVideoBLL.cs new file mode 100644 index 0000000..096c2fe --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ImgVideoBLL.cs @@ -0,0 +1,141 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class ImgVideoBLL + { + BBMPTEntities ef = new BBMPTEntities(); + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_ImgVideo md) + { + try + { + + var list = db.SearchInfoByKey("fileName", md.fileName);//判断是否有重复数据 + if (list != null) + { + return false; + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_ImgVideo md) + { + try + { + //初始化要更新的字段 + string[] proNames = new string[3]; + proNames[0] = "fileUrl"; + proNames[1] = "fileName"; + proNames[2] = "UpdateTime"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_ImgVideo md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + + List list = ef.tb_ImgVideo.OrderByDescending(p=>p.CreateTime).ToList(); + + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + return JSONTools.ScriptSerialize(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_ImgVideo SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/InjectionPlanBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/InjectionPlanBLL.cs new file mode 100644 index 0000000..31fc881 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/InjectionPlanBLL.cs @@ -0,0 +1,391 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using System.Data; +using System.Data.SqlClient; +using MESClassLibrary.DAL.BasicInfo; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class InjectionPlanBLL + { + BBMPTEntities ef = new BBMPTEntities(); + BasicBLL db = new BasicBLL(); + InjectionPlanDAL dal = new InjectionPlanDAL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_InjectionPlan md) + { + try + { + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_InjectionPlan md) + { + try + { + + //初始化要更新的字段 + string[] proNames = new string[8]; + proNames[0] = "StationID"; + proNames[1] = "BeginTime"; + proNames[2] = "StockNo"; + proNames[3] = "PlanCount"; + proNames[4] = "EndTime"; + proNames[5] = "PlanDate"; + proNames[6] = "RealCycle"; + proNames[7] = "PartNo"; + + + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_InjectionPlan md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string stationID, string stockNo) + { + try + { + + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo().Where(p => p.IsFinish != 1).ToList(); + if (!String.IsNullOrEmpty(stationID)) + { + list = list.Where(p => p.StationID.Equals(stationID)).ToList(); + } + if (!String.IsNullOrEmpty(stockNo)) + { + list = list.Where(p => p.StockNo.Contains(stockNo)).ToList(); + } + + list = list.OrderBy(p => p.BeginTime).ToList(); + + List modelList = new List(); + if (list.Count > 0) + { + total = list.Count; + + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + + #region 联查 + BasicBLL product_db = new BasicBLL(); + var product_list = product_db.SearchAllInfo(); + + BasicBLL station_db = new BasicBLL(); + var station_list = station_db.SearchAllInfo(); + + foreach (var item in list) + { + InjectionPlanModel dm = Tool.Mapper(item); + var product_info = product_list.FirstOrDefault(p => p.StockNo == item.StockNo); + if (product_info != null) + { + dm.PartNo = product_info.PartNo; + dm.ProductName = product_info.ProductName; + } + + var station_info = station_list.FirstOrDefault(p => p.StationID == item.StationID); + if (station_info != null) + { + dm.StationNo = station_info.StationNo; + } + + modelList.Add(dm); + } + #endregion + + + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = modelList; + jsonStr = JSONTools.ScriptSerialize(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public string SearchInfoAll2(string page, string pagesize, string stationID, string stockNo, string StartTime, string EndTime) + { + try + { + + string jsonStr = "[]"; + int total = 0;//总行数 + + total = dal.SearchByTimeCount(stationID, stockNo, StartTime, EndTime); + DataTable dt = dal.SearchByTime(Convert.ToInt32(page), Convert.ToInt32(pagesize), stationID, stockNo, StartTime, EndTime); + + List list = Tool.ConvertTo(dt).ToList(); + + //List list = ef.tb_InjectionPlan.Where(p => DateTime.Parse(p.BeginTime) >= stime && DateTime.Parse(p.EndTime) <= etime).ToList(); + + + if (!String.IsNullOrEmpty(stationID)) + { + list = list.Where(p => p.StationID.Equals(stationID)).ToList(); + } + if (!String.IsNullOrEmpty(stockNo)) + { + list = list.Where(p => p.StockNo.Contains(stockNo)).ToList(); + } + + list = list.OrderBy(p => p.BeginTime).ToList(); + + List modelList = new List(); + if (list.Count > 0) + { + total = list.Count; + + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + + #region 联查 + BasicBLL product_db = new BasicBLL(); + var product_list = product_db.SearchAllInfo(); + + BasicBLL station_db = new BasicBLL(); + var station_list = station_db.SearchAllInfo(); + + foreach (var item in list) + { + InjectionPlanModel dm = Tool.Mapper(item); + var product_info = product_list.FirstOrDefault(p => p.StockNo == item.StockNo); + if (product_info != null) + { + dm.PartNo = product_info.PartNo; + dm.ProductName = product_info.ProductName; + } + + var station_info = station_list.FirstOrDefault(p => p.StationID == item.StationID); + if (station_info != null) + { + dm.StationNo = station_info.StationNo; + } + + modelList.Add(dm); + } + #endregion + + + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = modelList; + jsonStr = JSONTools.ScriptSerialize(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + public bool UpdateInfo2(tb_InjectionPlan md) + { + try + { + + //初始化要更新的字段 + string[] proNames = new string[3]; + proNames[0] = "workClass"; + proNames[1] = "JK_Weight"; + proNames[2] = "Waste_Weight"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息 + /// + /// + public List SearchAll() + { + try + { + var s_list = db.SearchAllInfo().ToList(); + return s_list; + } + catch (Exception) + { + return null; + } + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_InjectionPlan SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public String GetEndTime(tb_InjectionPlan md) + { + try + { + BasicBLL Plastic_db = new BasicBLL(); + + var info = from c in Plastic_db.SearchAllInfo() + where c.StockNo == md.StockNo && c.StationID == md.StationID && c.IsBackup == 1 + select c.CycleTime; + + if (info.FirstOrDefault() != null) + { + double seconds = Convert.ToDouble(info.FirstOrDefault().Value) * Convert.ToDouble(md.PlanCount); + return Convert.ToDateTime(md.BeginTime).AddSeconds(seconds).ToString("yyyy-MM-dd HH:mm:ss"); + } + return md.BeginTime; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public DataTable SearchInfoByName(string StationID) + { + try + { + return dal.SearchPlanByStation(StationID); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + public DataTable NextSearchInfoByName(string StationID) + { + try + { + return dal.NextSearchPlanByStation(StationID); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool UpdateFinish(InjectionPlanModel md) + { + InjectionPlanDAL dal = new InjectionPlanDAL(); + try + { + return dal.UpdateFinish(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + + public string GetStartTime(string StationID) + { + + var bf = db.SearchInfoByKey("StationID", StationID).OrderByDescending(p => p.EndTime).FirstOrDefault(); + if (bf != null) + { + return bf.EndTime; + } + + return ""; + + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/LineBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/LineBLL.cs new file mode 100644 index 0000000..58d9540 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/LineBLL.cs @@ -0,0 +1,170 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class LineBLL + { + BasicBLL db = new BasicBLL(); + /// + /// 查询信息 + /// + /// + public string SearchInfo(string page, string pagesize, string LineName, string PlaceID, string userID) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo(); + + //数据权限 + //BasicBLL userdb = new BasicBLL(); + //T_Sys_Users user = userdb.SearchInfoByID(userID); + //List list = db.SearchInfoContains("LineName", user.Department); + + if (!String.IsNullOrEmpty(PlaceID)) + { + list = list.Where(p => p.PlaceID == PlaceID).ToList();//按条件分页查询 + } + + if (!String.IsNullOrEmpty(LineName)) + { + list = list.Where(p => p.LineName.Contains(LineName)).ToList();//按条件分页查询 + } + + if (list.Count > 0) + { + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + #region 联查 + List ModelList = new List(); + BasicBLL p_db = new BasicBLL(); + var p_list = p_db.SearchAllInfo().ToList(); + foreach (var item in list) + { + LineModel dm = Tool.Mapper(item); + var info = p_list.FirstOrDefault(p => p.PlaceID == item.PlaceID); + if (info != null) + { + dm.PlaceName = info.PlaceName; + } + ModelList.Add(dm); + } + #endregion + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = ModelList; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + /// + /// 添加信息 + /// + /// 生产线模型对象 + /// + public bool AddInfo(tb_Line md) + { + try + { + var list = db.SearchInfoByKey("LineName", md.LineName);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.LineID != md.LineID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// 生产线模型对象 + /// + public bool UpdateInfo(tb_Line md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.LineName == md.LineName && p.LineID != md.LineID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[3]; + proNames[0] = "PlaceID"; + proNames[1] = "LineName"; + proNames[2] = "Des"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + /// 删除生产线信息 + public bool DelInfo(tb_Line md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().ToList();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize>(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/MachineBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/MachineBLL.cs new file mode 100644 index 0000000..a38c035 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/MachineBLL.cs @@ -0,0 +1,184 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class MachineBLL + { + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_Machine md) + { + try + { + var list = db.SearchInfoByKey("MachineNo", md.MachineNo);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.MachineID != md.MachineID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_Machine md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.MachineNo == md.MachineNo && p.MachineID != md.MachineID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[2]; + proNames[0] = "MachineNo"; + proNames[1] = "Des"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_Machine md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string machineNo) + { + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(machineNo)) + { + list = list.Where(p => p.MachineNo.Contains(machineNo)).ToList(); + } + + if (list.Count > 0) + { + total = list.Count; + + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + + } + + /// + /// 查询全部信息 + /// + /// + public List SearchAll() + { + try + { + var s_list = db.SearchAllInfo().ToList(); + return s_list; + } + catch (Exception) + { + return null; + } + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_Machine SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + //下拉框查询方法 + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().ToList(); + jsonStr = JSONTools.ScriptSerialize>(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + + + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ModelInfoBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ModelInfoBLL.cs new file mode 100644 index 0000000..17797de --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ModelInfoBLL.cs @@ -0,0 +1,208 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class ModelInfoBLL + { + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_ModelInfo md) + { + try + { + var list = db.SearchInfoByKey("ModelNo", md.ModelNo);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.ID != md.ID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_ModelInfo md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.ModelNo == md.ModelNo && p.ID != md.ID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[14]; + proNames[0] = "ModelName"; + proNames[1] = "ModelNo"; + proNames[2] = "PermanentAssetsNo"; + proNames[3] = "Tonnage"; + proNames[4] = "ServiceLife"; + proNames[5] = "Supplier"; + proNames[6] = "PartWeight"; + proNames[7] = "InjectionPeriod"; + proNames[8] = "LocatingRingSize"; + proNames[9] = "OutForm"; + proNames[10] = "ModelWeight"; + proNames[11] = "RunnerForm"; + proNames[12] = "ModelCavityNo"; + proNames[13] = "ModelSize"; + + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_ModelInfo md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string ModelNo) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(ModelNo)) + { + list = list.Where(p => p.ModelNo.Contains(ModelNo)).ToList(); + } + + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + return JSONTools.ScriptSerialize(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_ModelInfo SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().OrderBy(p => p.ModelNo).ToList();//判断是否有重复数据 + + List sl = new List(); + + foreach (var item in list) + { + SelectModel md = new SelectModel(); + md.textField = item.ModelName; + md.valueField = item.ID; + sl.Add(md); + } + + jsonStr = JSONTools.ScriptSerialize(sl); + return jsonStr; + } + catch (Exception) + { + return ""; + } + + + } + + //public DataTable SearchAll() + //{ + // ColorDAL da = new ColorDAL(); + // try + // { + // return da.SearchInfoAll(); + // } + // catch (Exception ex) + // { + // LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + // return null; + // } + //} + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ModelUpdateBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ModelUpdateBLL.cs new file mode 100644 index 0000000..199d30b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ModelUpdateBLL.cs @@ -0,0 +1,137 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.BasicInfo +{ + + public class ModelUpdateBLL + { + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddUpdateInfo(tb_Model_Update md) + { + try + { + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_Model_Update md) + { + try + { + //初始化要更新的字段 + string[] proNames = new string[5]; + proNames[0] = "Purpose"; + proNames[1] = "State"; + proNames[2] = "Supplier"; + proNames[3] = "Remarks"; + proNames[4] = "AddTime"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_Model_Update md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string ModelID) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + + List list = db.SearchInfoByKey("ModelID", ModelID).OrderByDescending(p => p.AddTime).ToList(); + + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + return JSONTools.ScriptSerialize(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_Model_Update SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/OperatorBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/OperatorBLL.cs new file mode 100644 index 0000000..20e13c6 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/OperatorBLL.cs @@ -0,0 +1,185 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; +using MESClassLibrary.DAL.BasicInfo; +using System.Data; +using System.Data.SqlClient; +using System.Reflection; +using MESClassLibrary.EFModel; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class OperatorBLL + { + BasicBLL db = new BasicBLL(); + + OperatorDAL dal = new OperatorDAL(); + + public DataTable SearchInfoByName(string OperatorName, string StationID) + { + try + { + return dal.SearchInfoByName(OperatorName, StationID); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + + public DataTable SearchInfoByNameAndPsw(string OperatorName, string StationID, string psw) + { + try + { + return dal.SearchInfoByNameAndPsw(OperatorName, StationID, psw); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 查询信息 + /// + /// + public string SearchInfo(string page, string pagesize, string OperatorName, string StationID) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(StationID)) + { + list = list.Where(p => p.StationID.Equals(StationID)).ToList();//按条件分页查询 + } + + if (!String.IsNullOrEmpty(OperatorName)) + { + list = list.Where(p => p.OperatorName.Contains(OperatorName)).ToList();//按条件分页查询 + } + + if (list.Count > 0) + { + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + #region 联查 + List StationList = new List(); + BasicBLL pl_db = new BasicBLL(); + var pl_list = pl_db.SearchAllInfo().ToList(); + foreach (var item in list) + { + OperatorModel dm = Tool.Mapper(item); + var info = pl_list.FirstOrDefault(p => p.StationID == item.StationID); + if (info != null) + { + dm.StationNo = info.StationNo; + } + StationList.Add(dm); + } + #endregion + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = StationList; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + /// + /// 添加信息 + /// + /// 生产线模型对象 + /// + public bool AddInfo(tb_Operator md) + { + try + { + var list = db.SearchInfoByKey("OperatorNo", md.OperatorNo);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.OperatorID != md.OperatorID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// 生产线模型对象 + /// + public bool UpdateInfo(tb_Operator md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.OperatorNo == md.OperatorNo && p.OperatorID != md.OperatorID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[5]; + proNames[0] = "StationID"; + proNames[1] = "OperatorNo"; + proNames[2] = "OperatorName"; + proNames[3] = "OperatorPsw"; + proNames[4] = "Des"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + /// 删除生产线信息 + public bool DelInfo(tb_Operator md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/PaintInfoBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/PaintInfoBLL.cs new file mode 100644 index 0000000..830fe66 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/PaintInfoBLL.cs @@ -0,0 +1,335 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.BasicInfo +{ + + public class PaintInfoBLL + { + BasicBLL dbPB = new BasicBLL(); + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_PaintInfo md) + { + try + { + var list = db.SearchInfoByKey("PaintCode", md.PaintCode);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.ID != md.ID && p.IsUsing == 1).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_PaintInfo md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.PaintCode == md.PaintCode && p.ID != md.ID && p.IsUsing == 1).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[5]; + proNames[0] = "PaintCode"; + proNames[1] = "PaintName"; + proNames[2] = "PaintModel"; + //proNames[3] = "UnitCode"; + proNames[3] = "CarModelCode"; + proNames[4] = "IsUsing"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_PaintInfo md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string PaintCode) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(PaintCode)) + { + list = list.Where(p => p.PaintCode.Contains(PaintCode)).ToList(); + } + + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + return JSONTools.ScriptSerialize(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_PaintInfo SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().ToList();//判断是否有重复数据 + + List sl = new List(); + + foreach (var item in list) + { + SelectModel md = new SelectModel(); + md.textField = item.PaintCode + "--" + item.PaintName; + md.valueField = item.ID; + sl.Add(md); + } + + jsonStr = JSONTools.ScriptSerialize(sl); + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + + + public string SearchRelation(string page, string pagesize, string PaintID, string BucketID) + { + + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + + + List list = dbPB.SearchAllInfo(); + + if (!String.IsNullOrEmpty(PaintID)) + { + list = list.Where(p => p.PaintID == PaintID).ToList(); + } + + if (!String.IsNullOrEmpty(BucketID)) + { + list = list.Where(p => p.BucketID == BucketID).ToList(); + } + + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + + List modelList = new List(); + + #region 联查 + BasicBLL PaintInfo_db = new BasicBLL(); + var PaintInfo_list = PaintInfo_db.SearchAllInfo(); + + BasicBLL BucketInfo_db = new BasicBLL(); + var BucketInfo_list = BucketInfo_db.SearchAllInfo(); + + foreach (var item in list) + { + Paint_BucketModel dm = Tool.Mapper(item); + var PaintInfo_info = PaintInfo_list.FirstOrDefault(p => p.ID == item.PaintID); + if (PaintInfo_info != null) + { + dm.PaintCode = PaintInfo_info.PaintCode; + dm.PaintName = PaintInfo_info.PaintName; + } + + var BucketInfo_info = BucketInfo_list.FirstOrDefault(p => p.ID == item.BucketID); + if (BucketInfo_info != null) + { + dm.BucketCode = BucketInfo_info.BucketCode; + dm.BucketName = BucketInfo_info.BucketName; + } + + modelList.Add(dm); + } + #endregion + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = modelList; + return JSONTools.ScriptSerialize(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 新增信息 + /// + /// + /// + public bool AddRelation(tb_Paint_Bucket md) + { + try + { + var list = dbPB.SearchAllInfo().Where(p => p.PaintID == md.PaintID && p.BucketID == md.BucketID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + return dbPB.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateRelation(tb_Paint_Bucket md) + { + try + { + var list = dbPB.SearchAllInfo().Where(p => p.PaintID == md.PaintID && p.ID != md.ID && p.BucketID == md.BucketID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[2]; + proNames[0] = "PaintID"; + proNames[1] = "BucketID"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return dbPB.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + public bool DeleteRelation(tb_Paint_Bucket md) + { + try + { + List ef = dbPB.SearchInfoByKey("ID", md.ID); + if (ef!=null && ef.Count>0) + { + return dbPB.DelInfo(ef.First()); + } + return false; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/PlaceBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/PlaceBLL.cs new file mode 100644 index 0000000..52b4c86 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/PlaceBLL.cs @@ -0,0 +1,165 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class PlaceBLL + { + BasicBLL db = new BasicBLL(); + /// + /// 查询信息 + /// + /// + public string SearchInfo(string page, string pagesize, string PlaceName, string FactoryID) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(FactoryID)) + { + list = list.Where(p => p.FactoryID == FactoryID).ToList();//按条件分页查询 + } + + if (!String.IsNullOrEmpty(PlaceName)) + { + list = list.Where(p => p.PlaceName.Contains(PlaceName)).ToList();//按条件分页查询 + } + + if (list.Count > 0) + { + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + #region 联查 + List ModelList = new List(); + BasicBLL p_db = new BasicBLL(); + var p_list = p_db.SearchAllInfo().ToList(); + foreach (var item in list) + { + PlaceModel dm = Tool.Mapper(item); + var info = p_list.FirstOrDefault(p => p.FactoryID == item.FactoryID); + if (info != null) + { + dm.FactoryName = info.FactoryName; + } + ModelList.Add(dm); + } + #endregion + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = ModelList; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + /// + /// 添加信息 + /// + /// 生产线模型对象 + /// + public bool AddInfo(tb_Place md) + { + try + { + var list = db.SearchInfoByKey("PlaceName", md.PlaceName);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.PlaceID != md.PlaceID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// 生产线模型对象 + /// + public bool UpdateInfo(tb_Place md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.PlaceName == md.PlaceName && p.PlaceID != md.PlaceID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[3]; + proNames[0] = "FactoryID"; + proNames[1] = "PlaceName"; + proNames[2] = "Des"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + /// 删除生产线信息 + public bool DelInfo(tb_Place md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().ToList();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize>(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/PlasticBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/PlasticBLL.cs new file mode 100644 index 0000000..83d91b4 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/PlasticBLL.cs @@ -0,0 +1,238 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class PlasticBLL + { + BBMPTEntities ef = new BBMPTEntities(); + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_Plastic md) + { + try + { + var list = db.SearchInfoByKey("StationID", md.StationID);//判断是否有重复数据 + if (list != null && list.Count > 0) + { + if (list.Where(p => p.StockNo.Equals(md.StockNo)).Count() > 0) + { + return false; + } + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_Plastic md) + { + try + { + + //初始化要更新的字段 + string[] proNames = new string[5]; + proNames[0] = "CycleTime"; + proNames[1] = "StationID"; + proNames[2] = "IsBackup"; + proNames[3] = "Weight"; + proNames[4] = "OpenDebugTime"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_Plastic md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string stockNo, string partNo, string StationID) + { + try + { + + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(stockNo)) + { + list = list.Where(p => p.StockNo != null && p.StockNo.Contains(stockNo)).ToList(); + } + + if (!String.IsNullOrEmpty(StationID)) + { + list = list.Where(p => p.StationID.Equals(StationID)).ToList(); + } + + List modelList = new List(); + if (list.Count > 0) + { + + + + #region 联查 + BasicBLL product_db = new BasicBLL(); + var product_list = product_db.SearchAllInfo(); + + BasicBLL machine_db = new BasicBLL(); + var machine_list = machine_db.SearchAllInfo(); + + foreach (var item in list) + { + PlasticModel dm = Tool.Mapper(item); + var product_info = product_list.FirstOrDefault(p => p.StockNo == item.StockNo); + if (product_info != null) + { + dm.PartNo = product_info.PartNo; + } + + var machine_info = machine_list.FirstOrDefault(p => p.StationID == item.StationID); + if (machine_info != null) + { + dm.StationNo = machine_info.StationNo; + } + + modelList.Add(dm); + } + #endregion + + if (!String.IsNullOrEmpty(partNo)) + { + modelList = modelList.Where(p => p.PartNo != null && p.PartNo.Contains(partNo)).ToList(); + } + + total = modelList.Count; + + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + modelList = modelList.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = modelList; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 查询全部信息 + /// + /// + public List SearchAll() + { + try + { + var s_list = db.SearchAllInfo().ToList(); + return s_list; + } + catch (Exception) + { + return null; + } + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_Plastic SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + + public string QueryForCombobox(string StationID) + { + try + { + + var info = from m in ef.tb_Plastic + join s in ef.tb_Product on m.StockNo equals s.StockNo into val2Grp + from grp in val2Grp.DefaultIfEmpty() + where m.StationID == StationID + select new { c_id = grp.StockNo, c_text = grp.PartNo + "--" + grp.ProductName, c_name = grp.StockNo + "--" + grp.ProductName }; + + string jsonStr = "[]"; + jsonStr = JSONTools.ScriptSerialize(info); + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ProductBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ProductBLL.cs new file mode 100644 index 0000000..99ce043 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ProductBLL.cs @@ -0,0 +1,443 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using System.Data; +using System.Data.SqlClient; +using MESClassLibrary.DAL.BasicInfo; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class ProductBLL + { + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_Product md) + { + try + { + var list = db.SearchInfoByKey("StockNo", md.StockNo);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.ProductID != md.ProductID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_Product md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.StockNo == md.StockNo && p.ProductID != md.ProductID && p.ProductID != md.ProductID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[10]; + proNames[0] = "ProductTypeID"; + proNames[1] = "PartName"; + proNames[2] = "ProductName"; + proNames[3] = "ColorName"; + proNames[4] = "PartNo"; + proNames[5] = "Rows"; + proNames[6] = "Cols"; + proNames[7] = "Layers"; + proNames[8] = "Des"; + proNames[9] = "isImport"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + md.PicturePath = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_Product md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string stockNo, string productTypeID, string productName, string partNo) + { + try + { + + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(stockNo)) + { + list = list.Where(p => p.StockNo != null && p.StockNo.Contains(stockNo)).ToList(); + } + if (!String.IsNullOrEmpty(productTypeID)) + { + list = list.Where(p => p.ProductTypeID.Equals(productTypeID)).ToList(); + } + if (!String.IsNullOrEmpty(productName)) + { + list = list.Where(p => p.ProductName != null && p.ProductName.Contains(productName)).ToList(); + } + if (!String.IsNullOrEmpty(partNo)) + { + list = list.Where(p => p.PartNo != null && p.PartNo.Contains(partNo)).ToList(); + } + List modelList = new List(); + if (list.Count > 0) + { + total = list.Count; + + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + + #region 联查 + BasicBLL s_db = new BasicBLL(); + var s_list = s_db.SearchAllInfo(); + + foreach (var item in list) + { + ProductModel dm = Tool.Mapper(item); + var info = s_list.FirstOrDefault(p => p.ProductTypeID == item.ProductTypeID); + if (info != null) + { + dm.ProductTypeName = info.ProductTypeName; + } + modelList.Add(dm); + } + #endregion + + + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = modelList; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 查询全部信息 + /// + /// + public List SearchAll() + { + try + { + var s_list = db.SearchAllInfo().ToList(); + return s_list; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_Product SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public string GetComboboxData(string productTypeNo, string productTypeNo1) + { + try + { + string jsonStr = "[]"; + BasicBLL productTypeDB = new BasicBLL(); + + if (productTypeNo1 != "") + { + var info = from m in db.SearchAllInfo().ToList() + join s in productTypeDB.SearchAllInfo().ToList() on m.ProductTypeID equals s.ProductTypeID into + val2Grp + from grp in val2Grp.DefaultIfEmpty() + where grp.ProductTypeNo == productTypeNo || grp.ProductTypeNo == productTypeNo1 + select new {m.PartNo, PartName = m.PartNo + "----" + m.ProductName}; + jsonStr = JSONTools.ScriptSerialize(info); + } + else + { + var info = from m in db.SearchAllInfo().ToList() + join s in productTypeDB.SearchAllInfo().ToList() on m.ProductTypeID equals s.ProductTypeID into + val2Grp + from grp in val2Grp.DefaultIfEmpty() + where grp.ProductTypeNo == productTypeNo + select new { m.PartNo, PartName = m.PartNo + "----" + m.ProductName }; + jsonStr = JSONTools.ScriptSerialize(info); + } + + + + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + } + + public string GetComboboxProduct(string productTypeNo) + { + try + { + + BasicBLL productTypeDB = new BasicBLL(); + + + var info = from m in db.SearchAllInfo().ToList() + join s in productTypeDB.SearchAllInfo().ToList() on m.ProductTypeID equals s.ProductTypeID into val2Grp + from grp in val2Grp.DefaultIfEmpty() + where grp.ProductTypeNo == productTypeNo + select new { m.ProductID, m.ProductName }; + string jsonStr = "[]"; + jsonStr = JSONTools.ScriptSerialize(info); + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + } + + + + public string GetComboboxDataForStockNo(string productTypeNo) + { + try + { + + BasicBLL productTypeDB = new BasicBLL(); + + var info = from m in db.SearchAllInfo().ToList() + join s in productTypeDB.SearchAllInfo().ToList() on m.ProductTypeID equals s.ProductTypeID into val2Grp + from grp in val2Grp.DefaultIfEmpty() + where grp.ProductTypeNo == productTypeNo + select new { c_id = m.StockNo, c_text = m.PartNo + "--" + m.ProductName, c_name = m.StockNo + "--" + m.ProductName, c_name2 = m.PartNo }; + string jsonStr = "[]"; + jsonStr = JSONTools.ScriptSerialize(info); + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + } + + public DataTable SearchInfoByType(string type, string stationNo) + { + ProductDAL da = new ProductDAL(); + try + { + return da.SearchInfoByType(type, stationNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoAllByType(string type) + { + ProductDAL da = new ProductDAL(); + try + { + return da.SearchInfoAllByType(type); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoByName(string productName, string ProductTypeNo) + { + ProductDAL da = new ProductDAL(); + try + { + return da.SearchInfoByName(productName, ProductTypeNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoByPartNo(string partNo) + { + ProductDAL da = new ProductDAL(); + try + { + return da.SearchInfoByPartNo(partNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchIsImportByStockNo(string stockNo) + { + ProductDAL da = new ProductDAL(); + try + { + return da.SearchIsImportByStockNo(stockNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + public DataTable SearchInfoByProductName(string ProductName) + { + ProductDAL da = new ProductDAL(); + try + { + return da.SearchInfoByProductName(ProductName); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool UpdatePDF(string id, string fileName) + { + try + { + tb_Product md = new tb_Product(); + md.ProductID = id; + md.PicturePath = fileName; + + //初始化要更新的字段 + string[] proNames = new string[1]; + proNames[0] = "PicturePath"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchInfoAll() + { + ProductDAL da = new ProductDAL(); + try + { + return da.SearchInfoAll(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + + + public DataTable SearchInfoByStock(string StockNo) + { + ProductDAL da = new ProductDAL(); + try + { + return da.SearchInfoByStock(StockNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ProductOfInjectionBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ProductOfInjectionBLL.cs new file mode 100644 index 0000000..c7490c6 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ProductOfInjectionBLL.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.BasicInfo; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class ProductOfInjectionBLL + { + ProductOfInjectionDAL db=new ProductOfInjectionDAL(); + + public bool Add_Info(ProductOfInjectionModel md) + { + try + { + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchCountByInfo(string station, string date, string classname, string StockNo,string partno) + { + try + { + return db.SearchCountByInfo(station,date,classname,StockNo,partno); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool Update_Info(ProductOfInjectionModel md) + { + try + { + return db.UpdateInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdateBad_Info(ProductOfInjectionModel md) + { + try + { + return db.UpdteBadInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool updateProductCount(ProductOfInjectionModel md) + { + try + { + return db.updateProductCount(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ProductTypeBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ProductTypeBLL.cs new file mode 100644 index 0000000..2896c0e --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/ProductTypeBLL.cs @@ -0,0 +1,182 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.BasicInfo; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class ProductTypeBLL + { + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_ProductType md) + { + try + { + var list = db.SearchInfoByKey("ProductTypeNo", md.ProductTypeNo);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.ProductTypeID != md.ProductTypeID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_ProductType md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.ProductTypeNo == md.ProductTypeNo && p.ProductTypeID != md.ProductTypeID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[2]; + proNames[0] = "ProductTypeName"; + proNames[1] = "Des"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_ProductType md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchInfoAll(Convert.ToInt32(page), Convert.ToInt32(pagesize), out total);//按分页查询 + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + return JSONTools.ScriptSerialize(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 查询全部信息 + /// + /// + public List SearchAll() + { + try + { + var s_list = db.SearchAllInfo().ToList(); + return s_list; + } + catch (Exception) + { + return null; + } + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_ProductType SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = db.SearchAllInfo().ToList();//判断是否有重复数据 + foreach (var item in list) + { + item.ProductTypeName = item.ProductTypeNo + "----" + item.ProductTypeName; + } + jsonStr = JSONTools.ScriptSerialize>(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + + + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/StationBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/StationBLL.cs new file mode 100644 index 0000000..365461e --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/BasicInfo/StationBLL.cs @@ -0,0 +1,195 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using MESClassLibrary.DAL.BasicInfo; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using System.Data; +using System.Data.SqlClient; + +namespace MESClassLibrary.BLL.BasicInfo +{ + public class StationBLL + { + BasicBLL db = new BasicBLL(); + /// + /// 查询信息 + /// + /// + public string SearchInfo(string page, string pagesize, string StationNo, string LineID) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + List list = db.SearchAllInfo(); + + if (!String.IsNullOrEmpty(LineID)) + { + list = list.Where(p => p.LineID == LineID).ToList();//按条件分页查询 + } + + if (!String.IsNullOrEmpty(StationNo)) + { + list = list.Where(p => p.StationNo.Contains(StationNo)).ToList();//按条件分页查询 + } + + if (list.Count > 0) + { + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + #region 联查 + List StationList = new List(); + BasicBLL pl_db = new BasicBLL(); + var pl_list = pl_db.SearchAllInfo().ToList(); + foreach (var item in list) + { + StationModel dm = Tool.Mapper(item); + var info = pl_list.FirstOrDefault(p => p.LineID == item.LineID); + if (info != null) + { + dm.LineName = info.LineName; + } + StationList.Add(dm); + } + #endregion + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = StationList; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + /// + /// 添加信息 + /// + /// 生产线模型对象 + /// + public bool AddInfo(tb_Station md) + { + try + { + var list = db.SearchInfoByKey("StationNo", md.StationNo);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.StationID != md.StationID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// 生产线模型对象 + /// + public bool UpdateInfo(tb_Station md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.StationNo == md.StationNo && p.StationID != md.StationID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[3]; + proNames[0] = "LineID"; + proNames[1] = "StationNo"; + proNames[2] = "Des"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + /// 删除生产线信息 + public bool DelInfo(tb_Station md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public string GetComboboxData(string StationNo) + { + try + { + string jsonStr = "[]"; + if (StationNo == null || StationNo == "") + { + var list = db.SearchAllInfo().ToList();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize>(list); + } + else + { + var list = db.SearchInfoContains("StationNo", StationNo).ToList();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize>(list); + } + + return jsonStr; + } + catch (Exception) + { + return ""; + } + + + + } + + public DataTable SearchInfoByNo(string station) + { + StationDAL db = new StationDAL(); + + try + { + return db.SearchInfoByNo(station); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Check/InspectResultBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Check/InspectResultBLL.cs new file mode 100644 index 0000000..36810d1 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Check/InspectResultBLL.cs @@ -0,0 +1,1506 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.Check; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.Check +{ + public class InspectResultBLL + { + + InspectResultDAL dal = new InspectResultDAL(); + + BBMPTEntities ef = new BBMPTEntities(); + + BasicBLL db = new BasicBLL(); + /// + /// 查询信息 + /// + /// + public string SearchInfo(string page, string pagesize, string StartTime, string EndTime, string position, string inspectResult) + { + try + { + string jsonStr = "[]"; + int total = dal.SearchCount(StartTime, EndTime, position, inspectResult);//总行数 + + DataTable dt = dal.SearchByPage(Convert.ToInt32(page), Convert.ToInt32(pagesize), StartTime, EndTime, position, inspectResult); + if (dt != null && dt.Rows.Count > 0) + { + var list = Tool.ConvertTo(dt); + + List groupList = new List(); + + List barcodeList = list.GroupBy(p => p.barcode).Select(p => p.Key).ToList(); + + foreach (var item in barcodeList) + { + var info = list.Where(p => p.barcode.Equals(item)).OrderBy(p => p.InspectTimes).ToList(); + + if (info.Count > 0) + { + InspectResultGroup md = new InspectResultGroup(); + if (info.Count >= 3) + { + md.barcode = info[0].barcode; + md.side = info[0].side; + md.position = info[0].position; + md.stationNo = info[0].stationNo; + md.workClass = info[0].workClass; + md.productInfo = info[0].productInfo; + md.productOption = info[0].productOption; + md.inspectResult_1 = info[0].inspectResult; + md.damnPosition_1 = info[0].damnPosition; + md.reason_1 = info[0].reason; + md.createTime_1 = Convert.ToDateTime(info[0].createTime.ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + md.inspectResult_2 = info[1].inspectResult; + md.damnPosition_2 = info[1].damnPosition; + md.reason_2 = info[1].reason; + md.createTime_2 = Convert.ToDateTime(info[1].createTime.ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + md.inspectResult_3 = info[2].inspectResult; + md.damnPosition_3 = info[2].damnPosition; + md.reason_3 = info[2].reason; + md.createTime_3 = Convert.ToDateTime(info[2].createTime.ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + groupList.Add(md); + } + + if (info.Count == 2) + { + md.barcode = info[0].barcode; + md.side = info[0].side; + md.position = info[0].position; + md.stationNo = info[0].stationNo; + md.workClass = info[0].workClass; + md.productInfo = info[0].productInfo; + md.productOption = info[0].productOption; + md.inspectResult_1 = info[0].inspectResult; + md.damnPosition_1 = info[0].damnPosition; + md.reason_1 = info[0].reason; + md.createTime_1 = Convert.ToDateTime(info[0].createTime.ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + md.inspectResult_2 = info[1].inspectResult; + md.damnPosition_2 = info[1].damnPosition; + md.reason_2 = info[1].reason; + md.createTime_2 = Convert.ToDateTime(info[1].createTime.ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + + groupList.Add(md); + } + + if (info.Count == 1) + { + md.barcode = info[0].barcode; + md.side = info[0].side; + md.position = info[0].position; + md.stationNo = info[0].stationNo; + md.workClass = info[0].workClass; + md.productInfo = info[0].productInfo; + md.productOption = info[0].productOption; + md.inspectResult_1 = info[0].inspectResult; + md.damnPosition_1 = info[0].damnPosition; + md.reason_1 = info[0].reason; + md.createTime_1 = Convert.ToDateTime(info[0].createTime.ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + groupList.Add(md); + } + } + } + + if (groupList.Count > 0) + { + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = groupList; + jsonStr = JSONTools.ScriptSerialize(md); + } + } + + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + + /// + /// 点修补记录 + /// + /// + /// + /// + /// + /// + /// + public string SearchInfoByRepair(string page, string pagesize, string StartTime, string EndTime, + string inspectResult) + { + try + { + string jsonStr = "[]"; + int total = dal.SearchCountByRepair(StartTime, EndTime, inspectResult);//总行数 + DataTable dt = dal.SearchRepairByPage(Convert.ToInt32(page), Convert.ToInt32(pagesize), StartTime, EndTime, inspectResult); + if (dt != null && dt.Rows.Count > 0) + { + var list = Tool.ConvertTo(dt); + List groupList = new List(); + if (list.Count > 0) + { + + for (int i = 0; i < list.Count; i++) + { + tb_InspectResult md = new tb_InspectResult(); + md.barcode = list[i].barcode; + md.side = list[i].side; + md.position = list[i].position; + md.stationNo = list[i].stationNo; + md.workClass = list[i].workClass; + md.productInfo = list[i].productInfo; + md.productOption = list[i].productOption; + md.inspectResult = list[i].inspectResult; + md.damnPosition = list[i].damnPosition; + md.reason = list[i].reason; + if (list[i].createTime != null) + { + md.createTime = Convert.ToDateTime(list[i].createTime.ToString()); + } + groupList.Add(md); + } + + } + if (groupList.Count > 0) + { + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = groupList; + jsonStr = JSONTools.ScriptSerialize(md); + } + + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + } + + + public List> SearchInfoByRepairForExcel(string StartTime, string EndTime, string inspectResult) + { + try + { + List> list_excel = new List>(); + List title_list = new List(); + title_list.Add("条码"); + title_list.Add("A/B侧"); + title_list.Add("位置"); + //title_list.Add("机台"); + title_list.Add("班次"); + title_list.Add("产品信息"); + title_list.Add("生产模式"); + title_list.Add("结果"); + title_list.Add("缺陷位置"); + title_list.Add("原因"); + title_list.Add("时间"); + list_excel.Add(title_list); + + DataTable dt = dal.SearchByRepair(StartTime, EndTime, inspectResult); + if (dt != null && dt.Rows.Count > 0) + { + var list = Tool.ConvertTo(dt); + List groupList = new List(); + if (list.Count > 0) + { + + for (int i = 0; i < list.Count; i++) + { + List row_list = new List(); + row_list.Add(list[i].barcode); + row_list.Add(list[i].side); + row_list.Add(list[i].position); + //row_list.Add(list[i].stationNo); + row_list.Add(list[i].workClass); + row_list.Add(list[i].productInfo); + row_list.Add(list[i].productOption); + row_list.Add(list[i].inspectResult); + row_list.Add(list[i].damnPosition); + row_list.Add(list[i].reason); + row_list.Add(list[i].createTime.ToString()); + list_excel.Add(row_list); + } + + } + + } + + return list_excel; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + + + + + /// + /// 查询信息 + /// + /// + public List SearchInfoAll(string StartTime, string EndTime, string position, string inspectResult) + { + try + { + List groupList = new List(); + + DataTable dt = dal.Search(StartTime, EndTime, position, inspectResult); + if (dt != null && dt.Rows.Count > 0) + { + + IEnumerable> result = dt.Rows.Cast().GroupBy(dr => dr["barcode"].ToString());//按A分组 + + foreach (IGrouping info in result) + { + + if (info.Count() > 0) + { + InspectResultGroup md = new InspectResultGroup(); + if (info.Count() >= 3) + { + md.barcode = info.ToArray()[0]["barcode"].ToString(); + md.side = info.ToArray()[0]["side"].ToString(); + md.position = info.ToArray()[0]["position"].ToString(); + md.stationNo = info.ToArray()[0]["stationNo"].ToString(); + md.workClass = info.ToArray()[0]["workClass"].ToString(); + md.productInfo = info.ToArray()[0]["productInfo"].ToString(); + md.productOption = info.ToArray()[0]["productOption"].ToString(); + md.inspectResult_1 = info.ToArray()[0]["inspectResult"].ToString(); + md.damnPosition_1 = info.ToArray()[0]["damnPosition"].ToString(); + md.reason_1 = info.ToArray()[0]["reason"].ToString(); + md.createTime_1 = Convert.ToDateTime(info.ToArray()[0]["createTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + md.inspectResult_2 = info.ToArray()[1]["inspectResult"].ToString(); + md.damnPosition_2 = info.ToArray()[1]["damnPosition"].ToString(); + md.reason_2 = info.ToArray()[1]["reason"].ToString(); + md.createTime_2 = Convert.ToDateTime(info.ToArray()[1]["createTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + md.inspectResult_3 = info.ToArray()[2]["inspectResult"].ToString(); + md.damnPosition_3 = info.ToArray()[2]["damnPosition"].ToString(); + md.reason_3 = info.ToArray()[2]["reason"].ToString(); + md.createTime_3 = Convert.ToDateTime(info.ToArray()[2]["createTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + groupList.Add(md); + } + + if (info.Count() == 2) + { + md.barcode = info.ToArray()[0]["barcode"].ToString(); + md.side = info.ToArray()[0]["side"].ToString(); + md.position = info.ToArray()[0]["position"].ToString(); + md.stationNo = info.ToArray()[0]["stationNo"].ToString(); + md.workClass = info.ToArray()[0]["workClass"].ToString(); + md.productInfo = info.ToArray()[0]["productInfo"].ToString(); + md.productOption = info.ToArray()[0]["productOption"].ToString(); + md.inspectResult_1 = info.ToArray()[0]["inspectResult"].ToString(); + md.damnPosition_1 = info.ToArray()[0]["damnPosition"].ToString(); + md.reason_1 = info.ToArray()[0]["reason"].ToString(); + md.createTime_1 = Convert.ToDateTime(info.ToArray()[0]["createTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + md.inspectResult_2 = info.ToArray()[1]["inspectResult"].ToString(); + md.damnPosition_2 = info.ToArray()[1]["damnPosition"].ToString(); + md.reason_2 = info.ToArray()[1]["reason"].ToString(); + md.createTime_2 = Convert.ToDateTime(info.ToArray()[1]["createTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + + groupList.Add(md); + } + + if (info.Count() == 1) + { + md.barcode = info.ToArray()[0]["barcode"].ToString(); + md.side = info.ToArray()[0]["side"].ToString(); + md.position = info.ToArray()[0]["position"].ToString(); + md.stationNo = info.ToArray()[0]["stationNo"].ToString(); + md.workClass = info.ToArray()[0]["workClass"].ToString(); + md.productInfo = info.ToArray()[0]["productInfo"].ToString(); + md.productOption = info.ToArray()[0]["productOption"].ToString(); + md.inspectResult_1 = info.ToArray()[0]["inspectResult"].ToString(); + md.damnPosition_1 = info.ToArray()[0]["damnPosition"].ToString(); + md.reason_1 = info.ToArray()[0]["reason"].ToString(); + md.createTime_1 = Convert.ToDateTime(info.ToArray()[0]["createTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + groupList.Add(md); + } + } + } + + + //var list = Tool.ConvertTo(dt); + + + + + + //List barcodeList = list.GroupBy(p => p.barcode).Select(p => p.Key).ToList(); + + //foreach (var item in barcodeList) + //{ + // var info = list.Where(p => p.barcode.Equals(item)).OrderBy(p => p.InspectTimes).ToList(); + + // if (info.Count > 0) + // { + // InspectResultGroup md = new InspectResultGroup(); + // if (info.Count >= 3) + // { + // md.barcode = info[0].barcode; + // md.side = info[0].side; + // md.position = info[0].position; + // md.stationNo = info[0].stationNo; + // md.workClass = info[0].workClass; + // md.productInfo = info[0].productInfo; + // md.productOption = info[0].productOption; + // md.inspectResult_1 = info[0].inspectResult; + // md.damnPosition_1 = info[0].damnPosition; + // md.reason_1 = info[0].reason; + // md.createTime_1 = Convert.ToDateTime(info[0].createTime.ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + // md.inspectResult_2 = info[1].inspectResult; + // md.damnPosition_2 = info[1].damnPosition; + // md.reason_2 = info[1].reason; + // md.createTime_2 = Convert.ToDateTime(info[1].createTime.ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + // md.inspectResult_3 = info[2].inspectResult; + // md.damnPosition_3 = info[2].damnPosition; + // md.reason_3 = info[2].reason; + // md.createTime_3 = Convert.ToDateTime(info[2].createTime.ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + // groupList.Add(md); + // } + + // if (info.Count == 2) + // { + // md.barcode = info[0].barcode; + // md.side = info[0].side; + // md.position = info[0].position; + // md.stationNo = info[0].stationNo; + // md.workClass = info[0].workClass; + // md.productInfo = info[0].productInfo; + // md.productOption = info[0].productOption; + // md.inspectResult_1 = info[0].inspectResult; + // md.damnPosition_1 = info[0].damnPosition; + // md.reason_1 = info[0].reason; + // md.createTime_1 = Convert.ToDateTime(info[0].createTime.ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + // md.inspectResult_2 = info[1].inspectResult; + // md.damnPosition_2 = info[1].damnPosition; + // md.reason_2 = info[1].reason; + // md.createTime_2 = Convert.ToDateTime(info[1].createTime.ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + + // groupList.Add(md); + // } + + // if (info.Count == 1) + // { + // md.barcode = info[0].barcode; + // md.side = info[0].side; + // md.position = info[0].position; + // md.stationNo = info[0].stationNo; + // md.workClass = info[0].workClass; + // md.productInfo = info[0].productInfo; + // md.productOption = info[0].productOption; + // md.inspectResult_1 = info[0].inspectResult; + // md.damnPosition_1 = info[0].damnPosition; + // md.reason_1 = info[0].reason; + // md.createTime_1 = Convert.ToDateTime(info[0].createTime.ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + + // groupList.Add(md); + // } + // } + //} + } + + return groupList; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + + //public List SearchInfoAllByRepair(string StartTime, string EndTime, string inspectResult) + //{ + // try + // { + // List groupList = new List(); + // DataTable dt = dal.SearchByRepair(StartTime, EndTime, inspectResult); + // if (dt != null && dt.Rows.Count > 0) + // { + // IEnumerable> result = dt.Rows.Cast().GroupBy(dr => dr["barcode"].ToString()); + // foreach (IGrouping info in result) + // { + // if (info.Count() > 0) + // { + + + // } + // } + // } + // } + // catch (Exception ex) + // { + // LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + // return null; + // } + //} + + #region 合格率趋势统计 + public string SearchQualifiedTrend(string StartTime, string EndTime, string side, string product) + { + try + { + + StringBuilder sb = new StringBuilder(100); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + + //DataTable dt = dal.SearchByPosition(StartTime + " 08:00:00.000", Convert.ToDateTime(EndTime + " 07:59:59.999").AddDays(1).ToString("yyyy-MM-dd HH:mm:ss.fff"), side, product); + DataTable dt = dal.SearchByPosition(StartTime + " 07:30:00", Convert.ToDateTime(EndTime + " 07:30:00").AddDays(1).ToString("yyyy-MM-dd HH:mm:ss"), side, product); + if (dt != null && dt.Rows.Count > 0) + { + + List numList = new List(); + List doubleList = new List(); + for (int i = 0; i < 13; i++) + { + numList.Add(0); + } + for (int i = 0; i < 4; i++) + { + doubleList.Add(0); + } + + TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(StartTime).Ticks); + TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(EndTime).Ticks); + TimeSpan ts3 = ts2.Subtract(ts1); //ts + for (int i = 0; i < ts3.Days + 1; i++) + { + DateTime dtime = Convert.ToDateTime(StartTime).AddDays(i); + string strTime = dtime.ToString("M/d"); + + //白班 + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(12) >= Convert.ToDateTime(dtime.ToString("yyyy-MM-dd") + " 07:30:00") && + myRow.Field(12) <= Convert.ToDateTime(dtime.ToString("yyyy-MM-dd") + " 19:29:59") + select myRow; + + sb.Append(""); + sb.Append(""); + sb.Append(""); + QualifiedTrendBuilindData(DayList, ref sb, numList, doubleList); + + var NightList = from myRowNight in dt.AsEnumerable() + where myRowNight.Field(12) >= Convert.ToDateTime(dtime.ToString("yyyy-MM-dd") + " 19:30:00") && + myRowNight.Field(12) <= Convert.ToDateTime(dtime.AddDays(1).ToString("yyyy-MM-dd") + " 07:29:59") + select myRowNight; + + sb.Append(""); + sb.Append(""); + QualifiedTrendBuilindData(NightList, ref sb, numList, doubleList); + } + + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + + } + + + sb.Append("
日期班别下线数系统抛光数一次合格数抛光合格数合格数返修合格数报废数点修补数一次合格率抛光合格率总合格率报废率抛光结余
" + strTime + "白班
夜班
合计" + numList[0] + "" + numList[1] + "" + numList[2] + "" + numList[3] + "" + numList[4] + "" + numList[5] + "" + numList[6] + "" + numList[7] + "" + doubleList[0] + "%" + doubleList[1] + "%" + doubleList[2] + "%" + doubleList[3] + "%" + numList[12] + "
"); + + return sb.ToString(); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + + + public List> SearchQualifiedTrendForExcel(string StartTime, string EndTime, string side, string product) + { + try + { + List> list = new List>(); + List sonList = new List(); + + sonList.Add("日期"); + sonList.Add("班别"); + sonList.Add("下线数"); + sonList.Add("系统抛光数"); + sonList.Add("一次合格数"); + sonList.Add("抛光合格数"); + sonList.Add("合格数"); + sonList.Add("返修合格数"); + sonList.Add("报废数"); + sonList.Add("点修补数"); + sonList.Add("一次合格率"); + sonList.Add("抛光合格率"); + sonList.Add("总合格率"); + sonList.Add("报废率"); + sonList.Add("抛光结余"); + list.Add(sonList); + + //DataTable dt = dal.SearchByPosition(StartTime + " 00:00:00.000", EndTime + " 23:59:59.000", side, product); + DataTable dt = dal.SearchByPosition(StartTime + ".000", EndTime + ".000", side, product); + + if (dt != null && dt.Rows.Count > 0) + { + + List numList = new List(); + List doubleList = new List(); + for (int i = 0; i < 13; i++) + { + numList.Add(0); + } + + + TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(StartTime).Ticks); + TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(EndTime).Ticks); + TimeSpan ts3 = ts2.Subtract(ts1); //ts + for (int i = 0; i < ts3.Days + 1; i++) + { + DateTime dtime = Convert.ToDateTime(StartTime).AddDays(i); + string strTime = dtime.ToString("M/d"); + + //白班 + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(12) >= Convert.ToDateTime(dtime.ToString("yyyy-MM-dd") + " 08:00:00.000") && + myRow.Field(12) <= Convert.ToDateTime(dtime.ToString("yyyy-MM-dd") + " 19:59:59.999") + select myRow; + List sonDay = new List(); + sonDay.Add(strTime); + sonDay.Add("白班"); + + QualifiedTrendBuilindData(DayList, ref sonDay, numList, doubleList); + list.Add(sonDay); + + var NightList = from myRow in dt.AsEnumerable() + where myRow.Field(12) >= Convert.ToDateTime(dtime.ToString("yyyy-MM-dd") + " 20:00:00.000") && + myRow.Field(12) <= Convert.ToDateTime(dtime.AddDays(1).ToString("yyyy-MM-dd") + " 07:59:59.999") + select myRow; + + List sonNight = new List(); + sonNight.Add(strTime); + sonNight.Add("夜班"); + QualifiedTrendBuilindData(NightList, ref sonNight, numList, doubleList); + list.Add(sonNight); + } + + + List sonCount = new List(); + sonCount.Add("合计"); + sonCount.Add(""); + sonCount.Add(numList[0].ToString()); + sonCount.Add(numList[1].ToString()); + sonCount.Add(numList[2].ToString()); + sonCount.Add(numList[3].ToString()); + sonCount.Add(numList[4].ToString()); + sonCount.Add(numList[5].ToString()); + sonCount.Add(numList[6].ToString()); + sonCount.Add(numList[7].ToString()); + sonCount.Add(doubleList[0].ToString() + "%"); + sonCount.Add(doubleList[1].ToString() + "%"); + sonCount.Add(doubleList[2].ToString() + "%"); + sonCount.Add(doubleList[3].ToString() + "%"); + sonCount.Add(numList[12].ToString()); + + list.Add(sonCount); + + } + + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + + + private void QualifiedTrendBuilindData(EnumerableRowCollection DayList, ref StringBuilder sb, List numList, List doubleList) + { + //下线数 + int XX_num = DayList.Where(p => "1".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + //抛光数 + //int PG_num = DayList.Where(p => p.ItemArray[6] != null && p.ItemArray[6].ToString().Contains("抛光") && "1".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + //var pg_1 = DayList.Where(p => p.ItemArray[6] != null && p.ItemArray[6].ToString().Contains("抛光") && "1".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).ToList(); + //var pg_2 = DayList.Where(p => p.ItemArray[6] != null && "2".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).ToList(); + //IEnumerable pg_List = pg_1.Intersect(pg_2); + int PG_num = DayList.Where(p => "2".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + //一次合格数 + int YCHG_num = DayList.Where(p => p.ItemArray[6] != null && p.ItemArray[6].ToString().Contains("合格") && "1".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + + //抛光合格 + //var pghg_1 = DayList.Where(p => p.ItemArray[6] != null && p.ItemArray[6].ToString().Contains("抛光") && "1".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).ToList(); + //var pghg_2 = DayList.Where(p => p.ItemArray[6] != null && p.ItemArray[6].ToString().Contains("合格") && "2".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).ToList(); + //IEnumerable pghg_List = pghg_1.Intersect(pghg_2); + int pghg = DayList.Where(p => p.ItemArray[6] != null && p.ItemArray[6].ToString().Contains("合格") && "2".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + //var pghg = DayList.Where(t => t.ItemArray[3].ToString() == "下线二检 抛光区") + // .GroupBy(p => p.ItemArray[1]) + // .Select(s => s.OrderByDescending(x => x.ItemArray[12]).FirstOrDefault()) + // .Where(p => p.ItemArray[6].ToString().Contains("合格")).Count(); + //返修合格数 + var fx = DayList.Where(t => t.ItemArray[6] != null && t.ItemArray[3].ToString().Contains("点修补") && t.ItemArray[6].ToString().Contains("合格")).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + + //合格数 + var hg = YCHG_num + pghg + fx; + //var hg = DayList.GroupBy(p => p.ItemArray[1]) + // .Select(s => s.OrderByDescending(x => x.ItemArray[12]).FirstOrDefault()) + // .Where(p => p.ItemArray[6].ToString().Contains("合格")).Count(); + //报废数 + //var bf = DayList.GroupBy(p => p.ItemArray[1]) + // .Select(s => s.OrderByDescending(x => x.ItemArray[12]).FirstOrDefault()) + // .Where(p => p.ItemArray[6].ToString().Contains("报废")).Count(); + var bf = DayList.Where(t => t.ItemArray[6] != null && t.ItemArray[6].ToString().Contains("报废")).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + var YC_bf = DayList.Where(t => t.ItemArray[6] != null && t.ItemArray[6].ToString().Contains("报废") && "1".Equals(t.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + + //点修补数 + //var dxb = DayList.Where(t => t.ItemArray[3].ToString() == "点修补 抛光区").GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + + var dxb = DayList.Where(p => p.ItemArray[6] != null && p.ItemArray[6].ToString().Contains("抛光") && "2".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + + + + //一次合格率 + var yc_hg_L = Math.Round(((double)YCHG_num / (double)XX_num) * 100, 2); + //抛光合格率 + var pg_hg_L = Math.Round(((double)pghg / (double)PG_num) * 100, 2); + //总合格率 + var all_hg_L = Math.Round(((double)hg / (double)XX_num) * 100, 2); + //报废率 + var pf_L = Math.Round(((double)bf / (double)XX_num) * 100, 2); + //抛光结余 + //var pgjy = XX_num - hg - bf - dxb; + var pgjy = XX_num - YCHG_num - YC_bf - PG_num; + + sb.Append("" + XX_num + ""); + sb.Append("" + PG_num + ""); + sb.Append("" + YCHG_num + ""); + sb.Append("" + pghg + ""); + sb.Append("" + hg + ""); + sb.Append("" + fx + ""); + sb.Append("" + bf + ""); + sb.Append("" + dxb + ""); + sb.Append("" + yc_hg_L + "%"); + sb.Append("" + pg_hg_L + "%"); + sb.Append("" + all_hg_L + "%"); + sb.Append("" + pf_L + "%"); + sb.Append("" + pgjy + ""); + sb.Append(""); + + numList[0] = numList[0] + XX_num; + numList[1] = numList[1] + PG_num; + numList[2] = numList[2] + YCHG_num; + numList[3] = numList[3] + pghg; + numList[4] = numList[4] + hg; + numList[5] = numList[5] + fx; + numList[6] = numList[6] + bf; + numList[7] = numList[7] + dxb; + + var xxx = Math.Round(((double)numList[2] / (double)numList[0]) * 100, 2); + + doubleList[0] = Math.Round(((double)numList[2] / (double)numList[0]) * 100, 2); + doubleList[1] = Math.Round(((double)numList[3] / (double)numList[1]) * 100, 2); + doubleList[2] = Math.Round(((double)numList[4] / (double)numList[0]) * 100, 2); + doubleList[3] = Math.Round(((double)numList[6] / (double)numList[0]) * 100, 2); + numList[12] = numList[12] + pgjy; + + + + + } + + private void QualifiedTrendBuilindData(EnumerableRowCollection DayList, ref List list, List numList, List doubleList) + { + //下线数 + int XX_num = DayList.Where(p => "1".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + //抛光数 + //int PG_num = DayList.Where(p => p.ItemArray[6] != null && p.ItemArray[6].ToString().Contains("抛光") && "1".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + var pg_1 = DayList.Where(p => p.ItemArray[6] != null && p.ItemArray[6].ToString().Contains("抛光") && "1".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).ToList(); + var pg_2 = DayList.Where(p => p.ItemArray[6] != null && "2".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).ToList(); + IEnumerable pg_List = pg_1.Intersect(pg_2); + int PG_num = pg_List.Count(); + //一次合格数 + int YCHG_num = DayList.Where(p => p.ItemArray[6] != null && p.ItemArray[6].ToString().Contains("合格") && "1".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + + //抛光合格 + var pghg_1 = DayList.Where(p => p.ItemArray[6] != null && p.ItemArray[6].ToString().Contains("抛光") && "1".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).ToList(); + var pghg_2 = DayList.Where(p => p.ItemArray[6] != null && p.ItemArray[6].ToString().Contains("合格") && "2".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).ToList(); + IEnumerable pghg_List = pghg_1.Intersect(pghg_2); + int pghg = pghg_List.Count(); + //var pghg = DayList.Where(t => t.ItemArray[3].ToString() == "下线二检 抛光区") + // .GroupBy(p => p.ItemArray[1]) + // .Select(s => s.OrderByDescending(x => x.ItemArray[12]).FirstOrDefault()) + // .Where(p => p.ItemArray[6].ToString().Contains("合格")).Count(); + //返修合格数 + var fx = DayList.Where(t => t.ItemArray[6] != null && t.ItemArray[3].ToString().Contains("点修补") && t.ItemArray[6].ToString().Contains("合格")).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + + //合格数 + var hg = YCHG_num + pghg + fx; + //var hg = DayList.GroupBy(p => p.ItemArray[1]) + // .Select(s => s.OrderByDescending(x => x.ItemArray[12]).FirstOrDefault()) + // .Where(p => p.ItemArray[6].ToString().Contains("合格")).Count(); + //报废数 + //var bf = DayList.GroupBy(p => p.ItemArray[1]) + // .Select(s => s.OrderByDescending(x => x.ItemArray[12]).FirstOrDefault()) + // .Where(p => p.ItemArray[6].ToString().Contains("报废")).Count(); + var bf = DayList.Where(t => t.ItemArray[6] != null && t.ItemArray[6].ToString().Contains("报废")).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + var YC_bf = DayList.Where(t => t.ItemArray[6] != null && t.ItemArray[6].ToString().Contains("报废") && "1".Equals(t.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + + //点修补数 + //var dxb = DayList.Where(t => t.ItemArray[3].ToString() == "点修补 抛光区").GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + + var dxb = DayList.Where(p => p.ItemArray[6] != null && p.ItemArray[6].ToString().Contains("抛光") && "2".Equals(p.ItemArray[13])).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + + //一次合格率 + var yc_hg_L = Math.Round(((double)YCHG_num / (double)XX_num) * 100, 2); + //抛光合格率 + var pg_hg_L = Math.Round(((double)pghg / (double)PG_num) * 100, 2); + //总合格率 + var all_hg_L = Math.Round(((double)hg / (double)XX_num) * 100, 2); + //报废率 + var pf_L = Math.Round(((double)bf / (double)XX_num) * 100, 2); + //抛光结余 + //var pgjy = XX_num - hg - bf - dxb; + var pgjy = XX_num - YCHG_num - YC_bf - PG_num; + + list.Add(XX_num.ToString()); + list.Add(PG_num.ToString()); + list.Add(YCHG_num.ToString()); + list.Add(pghg.ToString()); + list.Add(hg.ToString()); + list.Add(fx.ToString()); + list.Add(bf.ToString()); + list.Add(dxb.ToString()); + list.Add(yc_hg_L.ToString() + "%"); + list.Add(pg_hg_L.ToString() + "%"); + list.Add(all_hg_L.ToString() + "%"); + list.Add(pf_L.ToString() + "%"); + list.Add(pgjy.ToString()); + + + numList[0] = numList[0] + XX_num; + numList[1] = numList[1] + PG_num; + numList[2] = numList[2] + YCHG_num; + numList[3] = numList[3] + pghg; + numList[4] = numList[4] + hg; + numList[5] = numList[5] + fx; + numList[6] = numList[6] + bf; + numList[7] = numList[7] + dxb; + doubleList[0] = Math.Round(((double)numList[2] / (double)numList[0]) * 100, 2); + doubleList[1] = Math.Round(((double)numList[3] / (double)numList[1]) * 100, 2); + doubleList[2] = Math.Round(((double)numList[4] / (double)numList[0]) * 100, 2); + doubleList[3] = Math.Round(((double)numList[6] / (double)numList[0]) * 100, 2); + numList[12] = numList[12] + pgjy; + + } + #endregion + + #region 喷涂报废统计 + public string SearchPlatingScrap(string StartTime, string EndTime, string side) + { + try + { + + StringBuilder sb = new StringBuilder(100); + sb.Append(""); + + + DataTable dt = dal.SearchByResult(StartTime, EndTime, side); + if (dt != null && dt.Rows.Count > 0) + { + + var infoAll = dt.AsEnumerable().Where(p => p.ItemArray[13].ToString().Equals("1")).ToList(); + //.Select(s => s.OrderByDescending(x => x.ItemArray[12]).FirstOrDefault()) + //.Where(p => p.ItemArray[6].ToString().Contains("报废")).ToList(); + + //var infoTotal = dt.AsEnumerable().Where(p => p.ItemArray[13].ToString().Equals("1")).ToList(); + + var BFTotal = dt.AsEnumerable() + //.Select(s => s.OrderByDescending(x => x.ItemArray[12]).FirstOrDefault()) + .Where(p => p.ItemArray[6].ToString().Contains("报废")).ToList(); + + + //合格数 + var ok_Total = dt.AsEnumerable().Where(p => p.ItemArray[6].ToString().Contains("合格")).ToList(); + + + + //获取全部产品+对应的颜色 + Dictionary> col_Dictionary = new Dictionary>(); + var info_product = infoAll.GroupBy(p => p.ItemArray[15]).Select(p => p.Key).ToList(); + foreach (var item in info_product) + { + col_Dictionary.Add(item.ToString(), + infoAll.Where(p => p.ItemArray[15].ToString().Equals(item)) + .GroupBy(p => p.ItemArray[14]) + .Select(p => (string)p.Key).ToList()); + } + + //获取全部缺陷 + List damnPositionList = new List(); + foreach (var item in BFTotal) + { + if (item.ItemArray[9] == null || String.IsNullOrWhiteSpace(item.ItemArray[9].ToString())) + { + continue; + } + + string[] sArray = item.ItemArray[9].ToString().Split(new char[1] { ';' }, StringSplitOptions.RemoveEmptyEntries); + if (sArray.Length > 0) + { + foreach (var damn in sArray) + { + if (!damnPositionList.Contains(damn)) + { + damnPositionList.Add(damn); + } + } + } + } + Dictionary total_Dictionary = new Dictionary(); + + foreach (var item in damnPositionList) + { + total_Dictionary.Add(item, BFTotal.Where(p => p.ItemArray[9].ToString().Contains(item)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count()); + } + + var info_d = total_Dictionary.OrderByDescending(p => p.Value).ToList(); + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in info_d) + { + sb.Append(""); + } + sb.Append(""); + + foreach (var item in col_Dictionary) + { + sb.Append(""); + sb.Append(""); + + //var p_all = infoAll.Where(p => p.ItemArray[15].ToString().Equals(item.Key)).Count(); + var p_all = ok_Total.Where(p => p.ItemArray[15].ToString().Equals(item.Key)) + .GroupBy(p => p.ItemArray[1]) + .Select(p => p.Key).Count(); + + sb.Append("");//总数 + foreach (var item2 in info_d) + { + + var c_num = BFTotal.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[9].ToString().Contains(item2.Key)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + //var pf_L = Math.Round(((double)c_num / (double)p_all) * 100, 2); + + sb.Append("");//各缺陷总数 + + } + sb.Append(""); + + + foreach (var item3 in item.Value) + { + sb.Append(""); + sb.Append("");//颜色 + //var c_all = infoAll.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[14].ToString().Equals(item3)).Count(); + var c_all = ok_Total.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[14].ToString().Equals(item3)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + sb.Append("");//总数 + foreach (var item2 in info_d) + { + var c_num = BFTotal.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[14].ToString().Equals(item3) && p.ItemArray[9].ToString().Contains(item2.Key)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + //var pf_L = Math.Round(((double)c_num / (double)c_all) * 100, 2); + if (c_num > 0) + { + sb.Append(""); + } + else + { + sb.Append(""); + } + } + sb.Append(""); + } + + } + + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in info_d) + { + //var pf_L = Math.Round(((double)item.Value / (double)infoAll.GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count()) * 100, 2); + sb.Append(""); + } + sb.Append(""); + + + } + + + sb.Append("
总数" + item.Key + "
" + item.Key + "" + p_all + "" + c_num + "
" + item3 + "" + c_all + "" + c_num + "
总计" + infoAll.GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count() + "" + item.Value + "
"); + + return sb.ToString(); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + + public List> SearchPlatingScrapForExcel(string StartTime, string EndTime, string side) + { + try + { + List> list = new List>(); + + + DataTable dt = dal.SearchByResult(StartTime, EndTime, side); + + if (dt != null && dt.Rows.Count > 0) + { + + //var infoAll = dt.AsEnumerable().GroupBy(p => p.ItemArray[1]) + // .Select(s => s.OrderByDescending(x => x.ItemArray[12]).FirstOrDefault()) + // .Where(p => p.ItemArray[6].ToString().Contains("报废")).ToList(); + + + var infoAll = dt.AsEnumerable().Where(p => p.ItemArray[13].ToString().Equals("1")).ToList(); + //.Select(s => s.OrderByDescending(x => x.ItemArray[12]).FirstOrDefault()) + //.Where(p => p.ItemArray[6].ToString().Contains("报废")).ToList(); + + //var infoTotal = dt.AsEnumerable().Where(p => p.ItemArray[13].ToString().Equals("1")).ToList(); + + var BFTotal = dt.AsEnumerable() + //.Select(s => s.OrderByDescending(x => x.ItemArray[12]).FirstOrDefault()) + .Where(p => p.ItemArray[6].ToString().Contains("报废")).ToList(); + + + //合格数 + var ok_Total = dt.AsEnumerable().Where(p => p.ItemArray[6].ToString().Contains("合格")).ToList(); + + + + //获取全部产品+对应的颜色 + Dictionary> col_Dictionary = new Dictionary>(); + var info_product = infoAll.GroupBy(p => p.ItemArray[15]).Select(p => p.Key).ToList(); + foreach (var item in info_product) + { + col_Dictionary.Add(item.ToString(), + infoAll.Where(p => p.ItemArray[15].ToString().Equals(item)) + .GroupBy(p => p.ItemArray[14]) + .Select(p => (string)p.Key).ToList()); + } + + //获取全部缺陷 + List damnPositionList = new List(); + foreach (var item in infoAll) + { + if (item.ItemArray[9] == null || String.IsNullOrWhiteSpace(item.ItemArray[9].ToString())) + { + continue; + } + + string[] sArray = item.ItemArray[9].ToString().Split(new char[1] { ';' }, StringSplitOptions.RemoveEmptyEntries); + if (sArray.Length > 0) + { + foreach (var damn in sArray) + { + if (!damnPositionList.Contains(damn)) + { + damnPositionList.Add(damn); + } + } + } + } + Dictionary total_Dictionary = new Dictionary(); + + foreach (var item in damnPositionList) + { + total_Dictionary.Add(item, BFTotal.Where(p => p.ItemArray[9].ToString().Contains(item)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count()); + } + + var info_d = total_Dictionary.OrderByDescending(p => p.Value).ToList(); + + List sonList = new List(); + + sonList.Add(""); + sonList.Add("总数"); + foreach (var item in info_d) + { + sonList.Add(item.Key); + + } + list.Add(sonList); + + foreach (var item in col_Dictionary) + { + List colorList = new List(); + + colorList.Add(item.Key); + var p_all = ok_Total.Where(p => p.ItemArray[15].ToString().Equals(item.Key)) + .GroupBy(p => p.ItemArray[1]) + .Select(p => p.Key).Count(); + colorList.Add(p_all.ToString()); + + foreach (var item2 in info_d) + { + var c_num = BFTotal.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[9].ToString().Contains(item2.Key)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + //var pf_L = Math.Round(((double)c_num / (double)p_all) * 100, 2); + + colorList.Add(c_num.ToString()); + } + list.Add(colorList); + + + + + foreach (var item3 in item.Value) + { + List colorList2 = new List(); + colorList2.Add(item3); + //sb.Append(""); + //sb.Append("" + item3 + "");//颜色 + var c_all = ok_Total.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[14].ToString().Equals(item3)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + colorList2.Add(c_all.ToString()); + //sb.Append("" + c_all + "");//总数 + foreach (var item2 in info_d) + { + var c_num = BFTotal.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[14].ToString().Equals(item3) && p.ItemArray[9].ToString().Contains(item2.Key)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + //var pf_L = Math.Round(((double)c_num / (double)c_all) * 100, 2); + //sb.Append("" + c_num + "(" + pf_L + "%)");//各缺陷 + colorList2.Add(c_num.ToString()); + + if (c_num > 0) + { + colorList2.Add(c_num.ToString()); + } + else + { + colorList2.Add(""); + } + + + } + list.Add(colorList2); + } + + } + + List sonList2 = new List(); + sonList2.Add("总计"); + sonList2.Add(infoAll.GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count().ToString()); + //sb.Append(""); + //sb.Append("总计"); + //sb.Append("" + infoAll.Count + ""); + foreach (var item in info_d) + { + //var pf_L = Math.Round(((double)item.Value / (double)infoAll.Count) * 100, 2); + //sb.Append("" + item.Value + "(" + pf_L + "%)"); + sonList2.Add(item.Value.ToString()); + } + //sb.Append(""); + list.Add(sonList2); + + } + + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + + #endregion + + #region 喷涂抛光统计 + public string SearchPlatingPolish(string StartTime, string EndTime, string side) + { + try + { + + StringBuilder sb = new StringBuilder(100); + sb.Append(""); + + + DataTable dt = dal.SearchByResult(StartTime, EndTime, side); + + if (dt != null && dt.Rows.Count > 0) + { + + //var infoAll = dt.AsEnumerable().GroupBy(p => p.ItemArray[1]) + // .Select(s => s.OrderByDescending(x => x.ItemArray[12]).FirstOrDefault()) + // .Where(p => p.ItemArray[6].ToString().Contains("抛光")).ToList(); + + //var infoTotal = dt.AsEnumerable().Where(p => p.ItemArray[13].ToString().Equals("1")).ToList(); + + var infoAll = dt.AsEnumerable().Where(p => p.ItemArray[13].ToString().Equals("1")).ToList(); + + var BFTotal = dt.AsEnumerable() + .Where(p => p.ItemArray[6].ToString().Contains("抛光")).ToList(); + + + //合格数 + var ok_Total = dt.AsEnumerable().Where(p => p.ItemArray[6].ToString().Contains("合格")).ToList(); + + + + + //获取全部产品+对应的颜色 + Dictionary> col_Dictionary = new Dictionary>(); + var info_product = infoAll.GroupBy(p => p.ItemArray[15]).Select(p => p.Key).ToList(); + foreach (var item in info_product) + { + col_Dictionary.Add(item.ToString(), + infoAll.Where(p => p.ItemArray[15].ToString().Equals(item)) + .GroupBy(p => p.ItemArray[14]) + .Select(p => (string)p.Key).ToList()); + } + + //获取全部缺陷 + List damnPositionList = new List(); + foreach (var item in infoAll) + { + if (item.ItemArray[9] == null || String.IsNullOrWhiteSpace(item.ItemArray[9].ToString())) + { + continue; + } + + string[] sArray = item.ItemArray[9].ToString().Split(new char[1] { ';' }, StringSplitOptions.RemoveEmptyEntries); + if (sArray.Length > 0) + { + foreach (var damn in sArray) + { + if (!damnPositionList.Contains(damn)) + { + damnPositionList.Add(damn); + } + } + } + } + Dictionary total_Dictionary = new Dictionary(); + + foreach (var item in damnPositionList) + { + total_Dictionary.Add(item, BFTotal.Where(p => p.ItemArray[9].ToString().Contains(item)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count()); + } + + var info_d = total_Dictionary.OrderByDescending(p => p.Value).ToList(); + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in info_d) + { + sb.Append(""); + } + sb.Append(""); + + foreach (var item in col_Dictionary) + { + sb.Append(""); + sb.Append("");//产品 + var p_all = ok_Total.Where(p => p.ItemArray[15].ToString().Equals(item.Key)) + .GroupBy(p => p.ItemArray[1]) + .Select(p => p.Key).Count(); + sb.Append("");//总数 + + foreach (var item2 in info_d) + { + var c_num = BFTotal.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[9].ToString().Contains(item2.Key)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + //var pf_L = Math.Round(((double)c_num / (double)p_all) * 100, 2); + + sb.Append("");//各缺陷总数 + } + sb.Append(""); + + + foreach (var item3 in item.Value) + { + sb.Append(""); + sb.Append("");//颜色 + //var c_all = infoAll.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[14].ToString().Equals(item3)).Count(); + var c_all = ok_Total.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[14].ToString().Equals(item3)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + sb.Append("");//总数 + foreach (var item2 in info_d) + { + var c_num = BFTotal.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[14].ToString().Equals(item3) && p.ItemArray[9].ToString().Contains(item2.Key)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + //var pf_L = Math.Round(((double)c_num / (double)c_all) * 100, 2); + if (c_num > 0) + { + sb.Append(""); + } + else { + sb.Append(""); + } + + } + sb.Append(""); + } + + } + + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in info_d) + { + //var pf_L = Math.Round(((double)item.Value / (double)infoAll.Count) * 100, 2); + sb.Append(""); + } + sb.Append(""); + + + } + + + sb.Append("
总数" + item.Key + "
" + item.Key + "" + p_all + "" + c_num + "
" + item3 + "" + c_all + "" + c_num + "
总计" + infoAll.GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count() + "" + item.Value + "
"); + + return sb.ToString(); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + + public List> SearchPlatingPolishForExcel(string StartTime, string EndTime, string side) + { + try + { + List> list = new List>(); + + + DataTable dt = dal.SearchByResult(StartTime, EndTime, side); + + if (dt != null && dt.Rows.Count > 0) + { + + var infoAll = dt.AsEnumerable().Where(p => p.ItemArray[13].ToString().Equals("1")).ToList(); + + var BFTotal = dt.AsEnumerable() + .Where(p => p.ItemArray[6].ToString().Contains("抛光")).ToList(); + + + //合格数 + var ok_Total = dt.AsEnumerable().Where(p => p.ItemArray[6].ToString().Contains("合格")).ToList(); + + + //获取全部产品+对应的颜色 + Dictionary> col_Dictionary = new Dictionary>(); + var info_product = infoAll.GroupBy(p => p.ItemArray[15]).Select(p => p.Key).ToList(); + foreach (var item in info_product) + { + col_Dictionary.Add(item.ToString(), + infoAll.Where(p => p.ItemArray[15].ToString().Equals(item)) + .GroupBy(p => p.ItemArray[14]) + .Select(p => (string)p.Key).ToList()); + } + + //获取全部缺陷 + List damnPositionList = new List(); + foreach (var item in infoAll) + { + if (item.ItemArray[9] == null || String.IsNullOrWhiteSpace(item.ItemArray[9].ToString())) + { + continue; + } + + string[] sArray = item.ItemArray[9].ToString().Split(new char[1] { ';' }, StringSplitOptions.RemoveEmptyEntries); + if (sArray.Length > 0) + { + foreach (var damn in sArray) + { + if (!damnPositionList.Contains(damn)) + { + damnPositionList.Add(damn); + } + } + } + } + Dictionary total_Dictionary = new Dictionary(); + + foreach (var item in damnPositionList) + { + total_Dictionary.Add(item, BFTotal.Where(p => p.ItemArray[9].ToString().Contains(item)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count()); + } + + var info_d = total_Dictionary.OrderByDescending(p => p.Value).ToList(); + + List sonList = new List(); + + sonList.Add(""); + sonList.Add("总数"); + foreach (var item in info_d) + { + sonList.Add(item.Key); + + } + list.Add(sonList); + + foreach (var item in col_Dictionary) + { + List colorList = new List(); + + colorList.Add(item.Key); + var p_all = ok_Total.Where(p => p.ItemArray[15].ToString().Equals(item.Key)) + .GroupBy(p => p.ItemArray[1]) + .Select(p => p.Key).Count(); + colorList.Add(p_all.ToString()); + + foreach (var item2 in info_d) + { + var c_num = BFTotal.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[9].ToString().Contains(item2.Key)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + //var pf_L = Math.Round(((double)c_num / (double)p_all) * 100, 2); + + colorList.Add(c_num.ToString()); + } + list.Add(colorList); + + + + + foreach (var item3 in item.Value) + { + List colorList2 = new List(); + colorList2.Add(item3); + //sb.Append(""); + //sb.Append("" + item3 + "");//颜色 + var c_all = ok_Total.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[14].ToString().Equals(item3)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + colorList2.Add(c_all.ToString()); + //sb.Append("" + c_all + "");//总数 + foreach (var item2 in info_d) + { + var c_num = infoAll.Where(p => p.ItemArray[15].ToString().Equals(item.Key) && p.ItemArray[14].ToString().Equals(item3) && p.ItemArray[9].ToString().Contains(item2.Key)).GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count(); + //var pf_L = Math.Round(((double)c_num / (double)c_all) * 100, 2); + //sb.Append("" + c_num + "(" + pf_L + "%)");//各缺陷 + if (c_num > 0) + { + colorList2.Add(c_num.ToString()); + } + else + { + colorList2.Add(""); + } + } + list.Add(colorList2); + } + + } + + List sonList2 = new List(); + sonList2.Add("总计"); + sonList2.Add(infoAll.GroupBy(p => p.ItemArray[1]).Select(p => p.Key).Count().ToString()); + //sb.Append(""); + //sb.Append("总计"); + //sb.Append("" + infoAll.Count + ""); + foreach (var item in info_d) + { + var pf_L = Math.Round(((double)item.Value / (double)infoAll.Count) * 100, 2); + //sb.Append("" + item.Value + "(" + pf_L + "%)"); + sonList2.Add(item.Value.ToString()); + } + //sb.Append(""); + list.Add(sonList2); + + } + + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + + + #endregion + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/GetNewTasksBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/GetNewTasksBLL.cs new file mode 100644 index 0000000..998dca7 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/GetNewTasksBLL.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.ExchangeCenter; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.ExchangeCenter +{ + public class GetNewTasksBLL + { + public bool AddInfo(GetNewTasksModel md) + { + GetNewTasksDAL da = new GetNewTasksDAL(); + try + { + return da.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/PartMstrBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/PartMstrBLL.cs new file mode 100644 index 0000000..23d70aa --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/PartMstrBLL.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.ExchangeCenter; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.ExchangeCenter +{ + public class PartMstrBLL + { + public bool AddInfo(PartMstrModel md) + { + PartMstrDAL da = new PartMstrDAL(); + try + { + return da.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/PartRecordBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/PartRecordBLL.cs new file mode 100644 index 0000000..ec22766 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/PartRecordBLL.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.BasicInfo; +using MESClassLibrary.DAL.ExchangeCenter; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.ExchangeCenter +{ + public class PartRecordBLL + { + public bool AddInfo(PartRecordModel md) + { + PartRecordDAL dal = new PartRecordDAL(); + try + { + return dal.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/TESBomBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/TESBomBLL.cs new file mode 100644 index 0000000..543c48c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/TESBomBLL.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.ExchangeCenter; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.ExchangeCenter +{ + public class TESBomBLL + { + public bool AddInfo(TESBomModel md) + { + TESBomDAL da = new TESBomDAL(); + try + { + return da.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable Search() + { + TESBomDAL da=new TESBomDAL(); + try + { + return da.Search(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool updateFlag(string TaskID) + { + TESBomDAL da = new TESBomDAL(); + try + { + return da.UpdateFlag(TaskID); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/TESPartDetBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/TESPartDetBLL.cs new file mode 100644 index 0000000..c8cb33f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/ExchangeCenter/TESPartDetBLL.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.ExchangeCenter; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.ExchangeCenter +{ + public class TESPartDetBLL + { + public bool AddInfo(TESPartDetModel md) + { + TESPartDetDAL da = new TESPartDetDAL(); + try + { + return da.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Injection/DownReasonBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Injection/DownReasonBLL.cs new file mode 100644 index 0000000..85f8703 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Injection/DownReasonBLL.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.Injection; + +namespace MESClassLibrary.BLL.Injection +{ + public class DownReasonBLL + { + DownReasonDAL da=new DownReasonDAL(); + public DataTable SearchReason() + { + try + { + return da.SearchReason(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Injection/InjectionDownRecordBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Injection/InjectionDownRecordBLL.cs new file mode 100644 index 0000000..3707a93 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Injection/InjectionDownRecordBLL.cs @@ -0,0 +1,891 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.Injection; +using MESClassLibrary.DAL.painting; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.Injection +{ + public class InjectionDownRecordBLL + { + BBMPTEntities ef = new BBMPTEntities(); + BasicBLL db = new BasicBLL(); + InjectionDownRecordDAL dal = new InjectionDownRecordDAL(); + public bool AddInfo(InjectionDownRecordModel md) + { + InjectionDownRecordDAL da = new InjectionDownRecordDAL(); + try + { + return da.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdateInfo(InjectionDownRecordModel md) + { + InjectionDownRecordDAL da = new InjectionDownRecordDAL(); + try + { + return da.UpdateInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + + + #region web用方法 + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string StartTime, string EndTime, string StationID) + { + try + { + + string jsonStr = "[]"; + int total = 0;//总行数 + + DateTime stime = Convert.ToDateTime(StartTime); + DateTime etime = Convert.ToDateTime(EndTime); + + List list = ef.tb_Injection_DownRecord.Where(p => p.StartTime >= stime && p.EndTime <= etime && p.DownTime >= 60).ToList(); + + if (!String.IsNullOrEmpty(StationID)) + { + list = list.Where(p => p.StationID.Equals(StationID)).ToList(); + } + + List modelList = new List(); + if (list.Count > 0) + { + #region 联查 + BasicBLL machine_db = new BasicBLL(); + var machine_list = machine_db.SearchAllInfo(); + + BasicBLL DownReason_db = new BasicBLL(); + var DownReason_list = DownReason_db.SearchAllInfo(); + + BasicBLL DownType_db = new BasicBLL(); + var DownType_list = DownType_db.SearchAllInfo(); + + foreach (var item in list) + { + Injection_DownRecordModel dm = Tool.Mapper(item); + + var machine_info = machine_list.FirstOrDefault(p => p.StationID == item.StationID); + if (machine_info != null) + { + dm.StationNo = machine_info.StationNo; + } + + var DownReason = DownReason_list.FirstOrDefault(p => p.ID == item.DownReason); + if (DownReason != null) + { + dm.DownReasonName = DownReason.Reason; + } + var DownType = DownType_list.FirstOrDefault(p => p.ID == item.DownType); + if (DownType != null) + { + dm.DownTypeName = DownType.DownTypeName; + } + + modelList.Add(dm); + } + #endregion + + total = modelList.Count; + + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + modelList = modelList.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = modelList; + jsonStr = JSONTools.ScriptSerialize(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public bool UpdateInfo(tb_Injection_DownRecord md) + { + try + { + + //初始化要更新的字段 + string[] proNames = new string[8]; + proNames[0] = "StationID"; + proNames[1] = "DownType"; + proNames[2] = "DownReason"; + proNames[3] = "Des"; + proNames[4] = "StartTime"; + proNames[5] = "EndTime"; + proNames[6] = "DownTime"; + proNames[7] = "Remark1"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public string GetComboboxDataByDownType() + { + try + { + string jsonStr = "[]"; + var list = ef.tb_Injection_DownType.ToList();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + + + } + + public string GetComboboxDataByDownReason() + { + try + { + string jsonStr = "[]"; + var list = ef.tb_Inhection_DownReason.ToList();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + + + } + + public bool UpdateData(List list, string DownRecordID) + { + try + { + foreach (var item in list) + { + tb_Injection_DownRecord md = new tb_Injection_DownRecord(); + md.ID = Guid.NewGuid().ToString(); + md.StationID = item.StationID; + //md.PlanID = item.PlanID; + md.StartTime = Convert.ToDateTime(item.StartTime); + md.EndTime = Convert.ToDateTime(item.EndTime); + TimeSpan ts = md.EndTime.Value.Subtract(md.StartTime.Value); + md.DownTime = (int)ts.TotalSeconds; + md.DownType = item.DownType; + md.DownReason = item.DownReason; + md.Des = ""; + md.Remark1 = item.Remark1; + md.Remark2 = "2"; + db.AddInfo(md); + } + + var info = ef.tb_Injection_DownRecord.FirstOrDefault(p => p.ID == DownRecordID); + info.Remark2 = "1"; + ef.SaveChanges(); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + #endregion + + #region 报表 + + //每日平均换膜次数 + public string SearchDay(string StartTime) + { + try + { + DateTime sTime = Convert.ToDateTime(StartTime); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(sTime.Year, sTime.Month); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-01 08:00:00").ToString("yyyy-MM-dd HH:mm:ss"), Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + days.ToString() + " 07:59:59").AddDays(1).ToString("yyyy-MM-dd HH:mm:ss")); + + if (dt != null && dt.Rows.Count > 0) + { + + List titleList = new List(); + List Day_totalList = new List(); + List Night_totalList = new List(); + + for (int i = 0; i < days; i++) + { + titleList.Add((i + 1).ToString()); + + DateTime dtime = Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + (i + 1)); + + //白班 + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(5) >= Convert.ToDateTime(dtime.ToString("yyyy-MM-dd") + " 08:00:00.000") && + myRow.Field(6) <= Convert.ToDateTime(dtime.ToString("yyyy-MM-dd") + " 19:59:59.999") + select myRow; + if (DayList.Count() > 0) + { + int Day_int = DayList.Sum(p => Convert.ToInt32(p.ItemArray[7])); + Day_totalList.Add(Math.Round((Day_int / (double)DayList.Count()) / 60, 2)); + } + else + { + Day_totalList.Add(0); + } + + + //夜班 + var NightList = from myRowNight in dt.AsEnumerable() + where myRowNight.Field(5) >= Convert.ToDateTime(dtime.ToString("yyyy-MM-dd") + " 20:00:00.000") && + myRowNight.Field(6) <= Convert.ToDateTime(dtime.AddDays(1).ToString("yyyy-MM-dd") + " 07:59:59.999") + select myRowNight; + if (NightList.Count() > 0) + { + int Night_int = NightList.Sum(p => Convert.ToInt32(p.ItemArray[7])); + Night_totalList.Add(Math.Round((Night_int / (double)NightList.Count()) / 60, 2)); + } + else + { + Night_totalList.Add(0); + } + } + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in titleList) + { + sb.Append(""); + } + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in Day_totalList) + { + sb.Append(""); + } + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in Night_totalList) + { + sb.Append(""); + } + sb.Append(""); + + sb.Append("
班次/日期" + item + "
白班" + item + "
夜班" + item + "
"); + } + return sb.ToString(); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + //每日平均换膜次数导出excel + public List> SearchDayForExcel(string StartTime) + { + try + { + List> list = new List>(); + + DateTime sTime = Convert.ToDateTime(StartTime); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(sTime.Year, sTime.Month); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-01 08:00:00").ToString("yyyy-MM-dd HH:mm:ss"), Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + days.ToString() + " 07:59:59").AddDays(1).ToString("yyyy-MM-dd HH:mm:ss")); + + if (dt != null && dt.Rows.Count > 0) + { + + List titleList = new List(); + List Day_totalList = new List(); + List Night_totalList = new List(); + + for (int i = 0; i < days; i++) + { + titleList.Add((i + 1).ToString()); + + DateTime dtime = Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + (i + 1)); + + //白班 + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(5) >= Convert.ToDateTime(dtime.ToString("yyyy-MM-dd") + " 08:00:00.000") && + myRow.Field(6) <= Convert.ToDateTime(dtime.ToString("yyyy-MM-dd") + " 19:59:59.999") + select myRow; + if (DayList.Count() > 0) + { + int Day_int = DayList.Sum(p => Convert.ToInt32(p.ItemArray[7])); + Day_totalList.Add(Math.Round((Day_int / (double)DayList.Count()) / 60, 2)); + } + else + { + Day_totalList.Add(0); + } + + + //夜班 + var NightList = from myRowNight in dt.AsEnumerable() + where myRowNight.Field(5) >= Convert.ToDateTime(dtime.ToString("yyyy-MM-dd") + " 20:00:00.000") && + myRowNight.Field(6) <= Convert.ToDateTime(dtime.AddDays(1).ToString("yyyy-MM-dd") + " 07:59:59.999") + select myRowNight; + if (NightList.Count() > 0) + { + int Night_int = NightList.Sum(p => Convert.ToInt32(p.ItemArray[7])); + Night_totalList.Add(Math.Round((Night_int / (double)NightList.Count()) / 60, 2)); + } + else + { + Night_totalList.Add(0); + } + } + + List title_ = new List(); + title_.Add("班次/日期"); + title_.AddRange(titleList); + list.Add(title_); + + List total_ = new List(); + total_.Add("白班"); + foreach (var item in Day_totalList) + { + total_.Add(item.ToString()); + } + list.Add(total_); + + List No_total_ = new List(); + No_total_.Add("夜班"); + foreach (var item in Night_totalList) + { + No_total_.Add(item.ToString()); + } + list.Add(No_total_); + + + + } + + + + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + + //每月平均换膜次数 + public string SearchMonth(string StartTime) + { + try + { + + DateTime sTime = Convert.ToDateTime(StartTime); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(sTime.Year + "-01-01", sTime.Year + "-12-31"); + + if (dt != null && dt.Rows.Count > 0) + { + + DateTime startT = Convert.ToDateTime(sTime.Year + "-01-01"); + + List titleList = new List(); + List Day_totalList = new List(); + + for (int i = 0; i < 12; i++) + { + titleList.Add((i + 1) + "月"); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(startT.Year, (i + 1)); + + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(5) >= Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01") && + myRow.Field(6) <= Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days) + select myRow; + + if (DayList.Count() > 0) + { + int Day_int = DayList.Sum(p => Convert.ToInt32(p.ItemArray[7])); + Day_totalList.Add(Math.Round((Day_int / (double)DayList.Count()) / 60, 2)); + } + else + { + Day_totalList.Add(0); + } + } + + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in titleList) + { + sb.Append(""); + } + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in Day_totalList) + { + sb.Append(""); + } + sb.Append(""); + + sb.Append("
月份" + item + "
平均换膜时间" + item + "
"); + } + return sb.ToString(); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + public List> SearchMonthForExcel(string StartTime) + { + try + { + List> list = new List>(); + + DateTime sTime = Convert.ToDateTime(StartTime); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(sTime.Year + "-01-01", sTime.Year + "-12-31"); + + if (dt != null && dt.Rows.Count > 0) + { + + DateTime startT = Convert.ToDateTime(sTime.Year + "-01-01"); + + List titleList = new List(); + List Day_totalList = new List(); + + for (int i = 0; i < 12; i++) + { + titleList.Add((i + 1) + "月"); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(startT.Year, (i + 1)); + + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(5) >= Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01") && + myRow.Field(6) <= Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days) + select myRow; + + if (DayList.Count() > 0) + { + int Day_int = DayList.Sum(p => Convert.ToInt32(p.ItemArray[7])); + Day_totalList.Add(Math.Round((Day_int / (double)DayList.Count()) / 60, 2)); + } + else + { + Day_totalList.Add(0); + } + } + + List title_ = new List(); + title_.Add("月份"); + title_.AddRange(titleList); + list.Add(title_); + + List total_ = new List(); + total_.Add("平均换膜时间"); + foreach (var item in Day_totalList) + { + total_.Add(item.ToString()); + } + list.Add(total_); + } + + + + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + //每月换膜次数 + public string SearchMonthTimes(string StartTime) + { + try + { + + DateTime sTime = Convert.ToDateTime(StartTime); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(sTime.Year + "-01-01", sTime.Year + "-12-31"); + + if (dt != null && dt.Rows.Count > 0) + { + + DateTime startT = Convert.ToDateTime(sTime.Year + "-01-01"); + + List titleList = new List(); + List Day_totalList = new List(); + + for (int i = 0; i < 12; i++) + { + titleList.Add((i + 1) + "月"); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(startT.Year, (i + 1)); + + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(5) >= Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01") && + myRow.Field(6) <= Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days) + select myRow; + + Day_totalList.Add(DayList.Count()); + } + + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in titleList) + { + sb.Append(""); + } + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in Day_totalList) + { + sb.Append(""); + } + sb.Append(""); + + sb.Append("
月份" + item + "
换模次数" + item + "
"); + } + return sb.ToString(); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + public List> SearchMonthTimesForExcel(string StartTime) + { + try + { + List> list = new List>(); + + DateTime sTime = Convert.ToDateTime(StartTime); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(sTime.Year + "-01-01", sTime.Year + "-12-31"); + + if (dt != null && dt.Rows.Count > 0) + { + + DateTime startT = Convert.ToDateTime(sTime.Year + "-01-01"); + + List titleList = new List(); + List Day_totalList = new List(); + + for (int i = 0; i < 12; i++) + { + titleList.Add((i + 1) + "月"); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(startT.Year, (i + 1)); + + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(5) >= Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01") && + myRow.Field(6) <= Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days) + select myRow; + + Day_totalList.Add(DayList.Count()); + } + + + List title_ = new List(); + title_.Add("月份"); + title_.AddRange(titleList); + list.Add(title_); + + List total_ = new List(); + total_.Add("换模次数"); + foreach (var item in Day_totalList) + { + total_.Add(item.ToString()); + } + list.Add(total_); + } + + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + //换膜记录单 + public string SearchChangeRecord(string StartTime, string EndTime, string ModelId) + { + StringBuilder sb = new StringBuilder(100); + DataTable dt = dal.SearchChangeRecord(StartTime, EndTime, ModelId); + + + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + + for (int i = 0; i < dt.Rows.Count; i++) + { + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + + sb.Append(""); + } + + sb.Append("
机台号日期起始时间总计时间累计合模数生产合模数日期章换膜人
" + dt.Rows[i]["StationNo"] + "" + Convert.ToDateTime(dt.Rows[i]["PrintDate"]).ToString("yyyy-MM-dd") + "" + dt.Rows[i]["StartTime"] + "" + Math.Round((Convert.ToDouble(dt.Rows[i]["DownTime"]) / 60), 2) + "" + dt.Rows[i]["ModelSumCount"] + "" + dt.Rows[i]["ModelPrintCount"] + "" + Convert.ToDateTime(dt.Rows[i]["PrintDate"]).Month + "月" + dt.Rows[i]["remark1"] + "
"); + + + return sb.ToString(); + } + public List> SearchChangeRecordForExcel(string StartTime, string EndTime, string ModelId) + { + try + { + List> list = new List>(); + + DataTable dt = dal.SearchChangeRecord(StartTime, EndTime, ModelId); + + List titleList = new List(); + titleList.Add("机台号"); + titleList.Add("日期"); + titleList.Add("起始时间"); + titleList.Add("总计时间"); + titleList.Add("累计合模数"); + titleList.Add("生产合模数"); + titleList.Add("日期章"); + titleList.Add("换膜人"); + list.Add(titleList); + + for (int i = 0; i < dt.Rows.Count; i++) + { + List total_ = new List(); + total_.Add(dt.Rows[i]["StationNo"].ToString()); + total_.Add(Convert.ToDateTime(dt.Rows[i]["PrintDate"]).ToString("yyyy-MM-dd")); + total_.Add(dt.Rows[i]["StartTime"].ToString()); + total_.Add(Math.Round((Convert.ToDouble(dt.Rows[i]["DownTime"]) / 60), 2).ToString()); + total_.Add(dt.Rows[i]["ModelSumCount"].ToString()); + total_.Add(dt.Rows[i]["ModelPrintCount"].ToString()); + total_.Add(Convert.ToDateTime(dt.Rows[i]["PrintDate"]).Month + "月"); + total_.Add(dt.Rows[i]["remark1"].ToString()); + list.Add(total_); + } + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + + //维修记录 + public string SearchRepairRecord(string StartTime, string EndTime) + { + try + { + + DateTime sTime = Convert.ToDateTime(StartTime); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchRepaorByTime(StartTime, EndTime); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + if (dt != null && dt.Rows.Count > 0) + { + for (int i = 0; i < dt.Rows.Count; i++) + { + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + } + } + sb.Append("
序号日期班次设备名称故障现象维修时间故障原因维修内容及更换配件维修人
" + (i + 1) + "" + Convert.ToDateTime(dt.Rows[i]["StartTime"]).ToString("yyyy-MM-dd") + "" + CheckWorkClass(dt.Rows[i]["StartTime"].ToString()) + "" + dt.Rows[i]["StationNo"] + "" + dt.Rows[i]["Des"] + "" + dt.Rows[i]["DownTime"] + "" + dt.Rows[i]["Remark2"] + "" + dt.Rows[i]["Remark3"] + "" + dt.Rows[i]["Remark1"] + "
"); + return sb.ToString(); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public List> SearchRepairRecordForExcel(string StartTime, string EndTime) + { + try + { + List> list = new List>(); + + DataTable dt = dal.SearchRepaorByTime(StartTime, EndTime); + + + List titleList = new List(); + titleList.Add("序号"); + titleList.Add("日期"); + titleList.Add("班次"); + titleList.Add("设备名称"); + titleList.Add("故障现象"); + titleList.Add("维修时间"); + titleList.Add("故障原因"); + titleList.Add("维修内容及更换配件"); + titleList.Add("维修人"); + list.Add(titleList); + + for (int i = 0; i < dt.Rows.Count; i++) + { + List total_ = new List(); + total_.Add((i + 1).ToString()); + total_.Add(Convert.ToDateTime(dt.Rows[i]["StartTime"]).ToString("yyyy-MM-dd")); + total_.Add(CheckWorkClass(dt.Rows[i]["StartTime"].ToString())); + total_.Add(dt.Rows[i]["StationNo"].ToString()); + total_.Add(dt.Rows[i]["Des"].ToString()); + total_.Add(dt.Rows[i]["DownTime"].ToString()); + total_.Add(dt.Rows[i]["Remark2"].ToString()); + total_.Add(dt.Rows[i]["Remark3"].ToString()); + total_.Add(dt.Rows[i]["Remark1"].ToString()); + list.Add(total_); + } + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + + private string CheckWorkClass(string StartTime) + { + + try + { + if (true) + { + string time = StartTime.Substring(0, StartTime.IndexOf(" ")); + if (DateTime.Compare(Convert.ToDateTime(StartTime), Convert.ToDateTime(time + " 08:00:00")) > 0 && DateTime.Compare(Convert.ToDateTime(time + " 19:59:59"), Convert.ToDateTime(StartTime)) > 0) + { + return "A"; + } + return "B"; + + } + + } + catch (Exception ex) + { + + } + + return ""; + } + + #endregion + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Injection/InjectionRecordBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Injection/InjectionRecordBLL.cs new file mode 100644 index 0000000..db05e56 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Injection/InjectionRecordBLL.cs @@ -0,0 +1,1979 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.Injection; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.Injection +{ + public class InjectionRecordBLL + { + BBMPTEntities ef = new BBMPTEntities(); + BasicBLL db = new BasicBLL(); + BasicBLL db_w = new BasicBLL(); + InjectionRecordDAL dal = new InjectionRecordDAL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_Injection_Record md) + { + try + { + var list = db.SearchInfoByKey("RecordDate", md.RecordDate);//判断是否有重复数据 + if (list != null && list.Count > 0) + { + if (list.Where(p => p.StationID.Equals(md.StationID) && p.workClass.Equals(md.workClass)).Count() > 0) + { + return false; + } + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_Injection_Record md) + { + try + { + + //初始化要更新的字段 + string[] proNames = new string[7]; + proNames[0] = "workClass"; + proNames[1] = "StationID"; + proNames[2] = "JK_Weight"; + proNames[3] = "Waste_Weight"; + proNames[4] = "RecordDate"; + proNames[5] = "StockNo"; + proNames[6] = "PartNo"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_Injection_Record md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string StartTime, string EndTime, string StationID) + { + try + { + + string jsonStr = "[]"; + int total = 0;//总行数 + + DateTime stime = Convert.ToDateTime(StartTime); + DateTime etime = Convert.ToDateTime(EndTime); + + List list = ef.tb_Injection_Record.Where(p => p.RecordDate >= stime && p.RecordDate <= etime).ToList(); + + if (!String.IsNullOrEmpty(StationID)) + { + list = list.Where(p => p.StationID.Equals(StationID)).ToList(); + } + + List modelList = new List(); + if (list.Count > 0) + { + #region 联查 + BasicBLL machine_db = new BasicBLL(); + var machine_list = machine_db.SearchAllInfo(); + + foreach (var item in list) + { + Injection_RecordModel dm = Tool.Mapper(item); + + var machine_info = machine_list.FirstOrDefault(p => p.StationID == item.StationID); + if (machine_info != null) + { + dm.StationNo = machine_info.StationNo; + } + + modelList.Add(dm); + } + #endregion + + total = modelList.Count; + + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + modelList = modelList.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = modelList; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + #region 废料信息录入 + public string SearchInfo(string page, string pagesize, string StartTime, string EndTime, string StationID) + { + try + { + + string jsonStr = "[]"; + int total = 0;//总行数 + + DateTime stime = Convert.ToDateTime(StartTime); + DateTime etime = Convert.ToDateTime(EndTime); + + DataTable dt = dal.SearchRecordByPage(Convert.ToInt32(page), Convert.ToInt32(pagesize), StartTime, EndTime, StationID); + + + IList list = Tool.ConvertTo(dt); + + if (list.Count > 0) + { + total = list.Count; + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list.ToList(); + jsonStr = JSONTools.ScriptSerialize(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + + public bool UpdateWasteInfo(tb_Product_Injection_w md) + { + try + { + var info = ef.tb_Product_Injection_w.Where(p => p.ID.Equals(md.ID)).FirstOrDefault();//判断是否有重复数据 + if (info != null) + { + //初始化要更新的字段 + string[] proNames = new string[3]; + proNames[0] = "RealCycle"; + proNames[1] = "JK_Weight"; + proNames[2] = "Waste_Weight"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + + db_w.UpdateInfo(md, proNames); + } + else + { + db_w.AddInfo(md); + } + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + #endregion + + + + /// + /// 查询全部信息 + /// + /// + public List SearchAll() + { + try + { + var s_list = db.SearchAllInfo().ToList(); + return s_list; + } + catch (Exception) + { + return null; + } + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_Injection_Record SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + + #region 日合格趋势 + //表格 + public string SearchQualifiedDay(string StartTime) + { + try + { + + DateTime sTime = Convert.ToDateTime(StartTime); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(sTime.Year, sTime.Month); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-01").ToString("yyyy-MM-dd"), Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + days.ToString()).ToString("yyyy-MM-dd")); + + if (dt != null && dt.Rows.Count > 0) + { + + List titleList = new List(); + List totalList = new List(); + List No_totalList = new List(); + List OK_L_List = new List(); + for (int i = 0; i < days; i++) + { + titleList.Add((i + 1) + "日"); + + string nowTime = Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + (i + 1)).ToString("yyyy-MM-dd"); + + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(3) == nowTime + select myRow; + + double total_OK = DayList.Sum(p => (int)p.ItemArray[7]); + double total_NO = DayList.Sum(p => (int)p.ItemArray[8]); + double total_all = total_OK + total_NO; + totalList.Add(total_OK); + No_totalList.Add(total_NO); + if (total_all > 0) + { + OK_L_List.Add(Math.Round((total_OK / total_all) * 100, 2)); + } + else + { + OK_L_List.Add(0); + } + + } + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in titleList) + { + sb.Append(""); + } + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in totalList) + { + sb.Append(""); + } + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in No_totalList) + { + sb.Append(""); + } + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in OK_L_List) + { + sb.Append(""); + } + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in OK_L_List) + { + sb.Append(""); + } + sb.Append(""); + sb.Append("
" + item + "
总合格数量" + item + "
不良数量" + item + "
合格率" + item + "%
目标值99.6%
"); + } + return sb.ToString(); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + //柱状图 + public EcharBarModel SearchQualifiedDayBar(string StartTime) + { + try + { + + EcharBarModel md = new EcharBarModel(); + + DateTime sTime = Convert.ToDateTime(StartTime); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(sTime.Year, sTime.Month); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-01").ToString("yyyy-MM-dd"), Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + days.ToString()).ToString("yyyy-MM-dd")); + + if (dt != null && dt.Rows.Count > 0) + { + + List titleList = new List(); + List totalList = new List(); + List No_totalList = new List(); + List OK_L_List = new List(); + List T_L_List = new List(); + for (int i = 0; i < days; i++) + { + titleList.Add((i + 1) + "日"); + + string nowTime = Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + (i + 1)).ToString("yyyy-MM-dd"); + + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(3) == nowTime + select myRow; + + double total_OK = DayList.Sum(p => (int)p.ItemArray[7]); + double total_NO = DayList.Sum(p => (int)p.ItemArray[8]); + double total_all = total_OK + total_NO; + totalList.Add(total_OK); + No_totalList.Add(total_NO); + if (total_all > 0) + { + OK_L_List.Add(Math.Round((total_OK / total_all) * 100, 2)); + } + else + { + OK_L_List.Add(0); + } + + } + + foreach (var item in OK_L_List) + { + T_L_List.Add(99.6); + } + md.categories = titleList; + md.QualifiedData = OK_L_List; + md.TargetData = T_L_List; + + } + + return md; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public List> SearchQualifiedDayForExcel(string StartTime) + { + try + { + List> list = new List>(); + + DateTime sTime = Convert.ToDateTime(StartTime); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(sTime.Year, sTime.Month); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-01").ToString("yyyy-MM-dd"), Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + days.ToString()).ToString("yyyy-MM-dd")); + if (dt != null && dt.Rows.Count > 0) + { + + List titleList = new List(); + List totalList = new List(); + List No_totalList = new List(); + List OK_L_List = new List(); + for (int i = 0; i < days; i++) + { + titleList.Add((i + 1) + "日"); + + string nowTime = Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + (i + 1)).ToString("yyyy-MM-dd"); + + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(3) == nowTime + select myRow; + + double total_OK = DayList.Sum(p => (int)p.ItemArray[7]); + double total_NO = DayList.Sum(p => (int)p.ItemArray[8]); + double total_all = total_OK + total_NO; + totalList.Add(total_OK); + No_totalList.Add(total_NO); + if (total_all > 0) + { + OK_L_List.Add(Math.Round((total_OK / total_all) * 100, 2)); + } + else + { + OK_L_List.Add(0); + } + + } + + List title_ = new List(); + + title_.Add(""); + title_.AddRange(titleList); + list.Add(title_); + + List total_ = new List(); + total_.Add("总合格数量"); + foreach (var item in totalList) + { + total_.Add(item.ToString()); + } + list.Add(total_); + + + + List No_total_ = new List(); + No_total_.Add("不良数量"); + foreach (var item in No_totalList) + { + No_total_.Add(item.ToString()); + } + list.Add(No_total_); + + List OK_L_ = new List(); + OK_L_.Add("合格率"); + foreach (var item in OK_L_List) + { + OK_L_.Add(item.ToString() + "%"); + } + list.Add(OK_L_); + + List tag_L_ = new List(); + tag_L_.Add("目标值"); + foreach (var item in OK_L_List) + { + tag_L_.Add("99.6%"); + } + list.Add(tag_L_); + + } + + + + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + #endregion + + #region 月合格趋势 + //表格 + public string SearchQualifiedMonth(string StartTime) + { + try + { + + DateTime sTime = Convert.ToDateTime(StartTime); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(sTime.Year + "-01-01", sTime.Year + "-12-31"); + + if (dt != null && dt.Rows.Count > 0) + { + + DateTime startT = Convert.ToDateTime(sTime.Year + "-01-01"); + + List titleList = new List(); + List totalList = new List(); + List No_totalList = new List(); + List OK_L_List = new List(); + for (int i = 0; i < 12; i++) + { + titleList.Add((i + 1) + "月"); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(startT.Year, (i + 1)); + + + string starTime = Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01").ToString("yyyy-MM-dd"); + string entTime = Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days).ToString("yyyy-MM-dd"); + + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(3).CompareTo(Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01").ToString("yyyy-MM-dd")) >= 0 && + myRow.Field(3).CompareTo(Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days).ToString("yyyy-MM-dd")) <= 0 + select myRow; + + double total_OK = DayList.Sum(p => (int)p.ItemArray[7]); + double total_NO = DayList.Sum(p => (int)p.ItemArray[8]); + double total_all = total_OK + total_NO; + totalList.Add(total_OK); + No_totalList.Add(total_NO); + if (total_all > 0) + { + OK_L_List.Add(Math.Round((total_OK / total_all) * 100, 2)); + } + else + { + OK_L_List.Add(0); + } + } + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in titleList) + { + sb.Append(""); + } + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in totalList) + { + sb.Append(""); + } + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in No_totalList) + { + sb.Append(""); + } + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in OK_L_List) + { + sb.Append(""); + } + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in OK_L_List) + { + sb.Append(""); + } + sb.Append(""); + sb.Append("
" + item + "
总合格数量" + item + "
不良数量" + item + "
合格率" + item + "%
目标值99.6%
"); + } + return sb.ToString(); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + //柱状图 + public EcharBarModel SearchQualifiedMonthBar(string StartTime) + { + try + { + + EcharBarModel md = new EcharBarModel(); + + DateTime sTime = Convert.ToDateTime(StartTime); + + DataTable dt = dal.SearchByTime(sTime.Year + "-01-01", sTime.Year + "-12-31"); + + if (dt != null && dt.Rows.Count > 0) + { + + DateTime startT = Convert.ToDateTime(sTime.Year + "-01-01"); + + List titleList = new List(); + List totalList = new List(); + List No_totalList = new List(); + List OK_L_List = new List(); + List T_L_List = new List(); + for (int i = 0; i < 12; i++) + { + titleList.Add((i + 1) + "月"); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(startT.Year, (i + 1)); + + + string starTime = Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01").ToString("yyyy-MM-dd"); + string entTime = Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days).ToString("yyyy-MM-dd"); + + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(3).CompareTo(Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01").ToString("yyyy-MM-dd")) >= 0 && + myRow.Field(3).CompareTo(Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days).ToString("yyyy-MM-dd")) <= 0 + select myRow; + + double total_OK = DayList.Sum(p => (int)p.ItemArray[7]); + double total_NO = DayList.Sum(p => (int)p.ItemArray[8]); + double total_all = total_OK + total_NO; + totalList.Add(total_OK); + No_totalList.Add(total_NO); + if (total_all > 0) + { + OK_L_List.Add(Math.Round((total_OK / total_all) * 100, 2)); + } + else + { + OK_L_List.Add(0); + } + } + + + + foreach (var item in OK_L_List) + { + T_L_List.Add(99.6); + } + md.categories = titleList; + md.QualifiedData = OK_L_List; + md.TargetData = T_L_List; + + } + + return md; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public List> SearchQualifiedMonthForExcel(string StartTime) + { + try + { + List> list = new List>(); + + DateTime sTime = Convert.ToDateTime(StartTime); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(sTime.Year + "-01-01", sTime.Year + "-12-31"); + + if (dt != null && dt.Rows.Count > 0) + { + + DateTime startT = Convert.ToDateTime(sTime.Year + "-01-01"); + + List titleList = new List(); + List totalList = new List(); + List No_totalList = new List(); + List OK_L_List = new List(); + for (int i = 0; i < 12; i++) + { + titleList.Add((i + 1) + "月"); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(startT.Year, (i + 1)); + + + string starTime = Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01").ToString("yyyy-MM-dd"); + string entTime = Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days).ToString("yyyy-MM-dd"); + + var DayList = from myRow in dt.AsEnumerable() + where myRow.Field(3).CompareTo(Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01").ToString("yyyy-MM-dd")) >= 0 && + myRow.Field(3).CompareTo(Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days).ToString("yyyy-MM-dd")) <= 0 + select myRow; + + double total_OK = DayList.Sum(p => (int)p.ItemArray[7]); + double total_NO = DayList.Sum(p => (int)p.ItemArray[8]); + double total_all = total_OK + total_NO; + totalList.Add(total_OK); + No_totalList.Add(total_NO); + if (total_all > 0) + { + OK_L_List.Add(Math.Round((total_OK / total_all) * 100, 2)); + } + else + { + OK_L_List.Add(0); + } + } + + List title_ = new List(); + + title_.Add(""); + title_.AddRange(titleList); + list.Add(title_); + + List total_ = new List(); + total_.Add("总合格数量"); + foreach (var item in totalList) + { + total_.Add(item.ToString()); + } + list.Add(total_); + + + + List No_total_ = new List(); + No_total_.Add("不良数量"); + foreach (var item in No_totalList) + { + No_total_.Add(item.ToString()); + } + list.Add(No_total_); + + List OK_L_ = new List(); + OK_L_.Add("合格率"); + foreach (var item in OK_L_List) + { + OK_L_.Add(item.ToString() + "%"); + } + list.Add(OK_L_); + + List tag_L_ = new List(); + tag_L_.Add("目标值"); + foreach (var item in OK_L_List) + { + tag_L_.Add("99.6%"); + } + list.Add(tag_L_); + } + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + + #endregion + + #region 日原料利用率 + public string SearchMaterialAvailabilityDay(string StartTime) + { + try + { + + var p_info = ef.tb_Plastic.Where(p => p.Weight != null); + + + DateTime sTime = Convert.ToDateTime(StartTime); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(sTime.Year, sTime.Month); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-01").ToString("yyyy-MM-dd"), Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + days.ToString()).ToString("yyyy-MM-dd")); + + if (dt != null && dt.Rows.Count > 0) + { + + List titleList = new List(); + List totalList = new List(); + List No_totalList = new List(); + List All_totalList = new List(); + List OK_L_List = new List(); + for (int i = 0; i < days; i++) + { + titleList.Add((i + 1) + "日"); + + string nowTime = Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + (i + 1)).ToString("yyyy-MM-dd"); + + var listAddress = (from myRow in dt.AsEnumerable() + where myRow.Field(3) == nowTime + group myRow by new { StockNo = myRow.ItemArray[5] } into g + //orderby new ComparerItem() { OrderIndex = b.Key., Id = b.Key.Id } descending + select new + { + StockNo = (string)g.Key.StockNo, + total_ok = g.Sum(c => (int)c.ItemArray[7]), + total_no = g.Sum(c => (int)c.ItemArray[8]) + }); + + double total_OK = 0; + double total_NO = 0; + foreach (var item in listAddress) + { + string stockNo = item.StockNo; + + var w_info = p_info.FirstOrDefault(p => p.StockNo.Equals(stockNo)); + if (w_info != null) + { + total_OK += (double)(w_info.Weight * item.total_ok); + total_NO += (double)(w_info.Weight * item.total_no); + } + } + totalList.Add(Math.Round(total_OK / 1000, 2)); + No_totalList.Add(Math.Round(total_NO / 1000, 2)); + + DateTime nsTime = Convert.ToDateTime(nowTime + " 00:00:00"); + DateTime neTime = Convert.ToDateTime(nowTime + " 23:59:59"); + var Waste_Num = ef.tb_Injection_Record.Where(p => p.RecordDate >= nsTime && p.RecordDate <= neTime).Sum(p => p.Waste_Weight); + double total_Waste = 0; + if (Waste_Num == null) + { + total_Waste = 0; + } + else + { + total_Waste = (double)Waste_Num; + } + + double total_all = total_OK + total_NO + total_Waste; + All_totalList.Add(Math.Round(total_all / 1000, 2)); + if (total_all > 0) + { + OK_L_List.Add(Math.Round((total_OK / total_all) * 100, 2)); + } + else + { + OK_L_List.Add(0); + } + + } + + sb.Append(""); + + sb.Append(""); + sb.Append(""); + foreach (var item in titleList) + { + sb.Append(""); + } + sb.Append(""); + + sb.Append(""); + sb.Append(""); + foreach (var item in OK_L_List) + { + sb.Append(""); + } + sb.Append(""); + + sb.Append(""); + sb.Append(""); + foreach (var item in totalList) + { + sb.Append(""); + } + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in All_totalList) + { + sb.Append(""); + } + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in OK_L_List) + { + sb.Append(""); + } + sb.Append(""); + + sb.Append("
" + item + "
目标值98%
合格件耗用原料" + item + "
总耗用原料" + item + "
原料利用率" + item + "%
"); + } + return sb.ToString(); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + //柱状图 + public EcharBarModel SearchMaterialAvailabilityDayBar(string StartTime) + { + try + { + EcharBarModel md = new EcharBarModel(); + + var p_info = ef.tb_Plastic.Where(p => p.Weight != null); + + + DateTime sTime = Convert.ToDateTime(StartTime); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(sTime.Year, sTime.Month); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-01").ToString("yyyy-MM-dd"), Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + days.ToString()).ToString("yyyy-MM-dd")); + + if (dt != null && dt.Rows.Count > 0) + { + + List titleList = new List(); + List totalList = new List(); + List No_totalList = new List(); + List OK_L_List = new List(); + List T_L_List = new List(); + for (int i = 0; i < days; i++) + { + titleList.Add((i + 1) + "日"); + + string nowTime = Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + (i + 1)).ToString("yyyy-MM-dd"); + + var listAddress = (from myRow in dt.AsEnumerable() + where myRow.Field(3) == nowTime + group myRow by new { StockNo = myRow.ItemArray[5] } into g + //orderby new ComparerItem() { OrderIndex = b.Key., Id = b.Key.Id } descending + select new + { + StockNo = (string)g.Key.StockNo, + total_ok = g.Sum(c => (int)c.ItemArray[7]), + total_no = g.Sum(c => (int)c.ItemArray[8]) + }); + + double total_OK = 0; + double total_NO = 0; + foreach (var item in listAddress) + { + string stockNo = item.StockNo; + + var w_info = p_info.FirstOrDefault(p => p.StockNo.Equals(stockNo)); + if (w_info != null) + { + total_OK += (double)(w_info.Weight * item.total_ok); + total_NO += (double)(w_info.Weight * item.total_no); + } + } + totalList.Add(Math.Round(total_OK / 1000, 2)); + No_totalList.Add(Math.Round(total_NO / 1000, 2)); + + DateTime nsTime = Convert.ToDateTime(nowTime + " 00:00:00"); + DateTime neTime = Convert.ToDateTime(nowTime + " 23:59:59"); + var Waste_Num = ef.tb_Injection_Record.Where(p => p.RecordDate >= nsTime && p.RecordDate <= neTime).Sum(p => p.Waste_Weight); + double total_Waste = 0; + if (Waste_Num == null) + { + total_Waste = 0; + } + else + { + total_Waste = (double)Waste_Num; + } + double total_all = total_OK + total_NO + total_Waste; + + if (total_all > 0) + { + OK_L_List.Add(Math.Round((total_OK / total_all) * 100, 2)); + } + else + { + OK_L_List.Add(0); + } + + } + + foreach (var item in OK_L_List) + { + T_L_List.Add(98); + } + md.categories = titleList; + md.QualifiedData = OK_L_List; + md.TargetData = T_L_List; + } + return md; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public List> SearchMaterialAvailabilityDayForExcel(string StartTime) + { + try + { + List> list = new List>(); + + + var p_info = ef.tb_Plastic.Where(p => p.Weight != null); + DateTime sTime = Convert.ToDateTime(StartTime); + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(sTime.Year, sTime.Month); + StringBuilder sb = new StringBuilder(100); + + DataTable dt = dal.SearchByTime(Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-01").ToString("yyyy-MM-dd"), Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + days.ToString()).ToString("yyyy-MM-dd")); + + if (dt != null && dt.Rows.Count > 0) + { + + List titleList = new List(); + List totalList = new List(); + List No_totalList = new List(); + List All_totalList = new List(); + List OK_L_List = new List(); + for (int i = 0; i < days; i++) + { + titleList.Add((i + 1) + "日"); + + string nowTime = Convert.ToDateTime(sTime.Year + "-" + sTime.Month + "-" + (i + 1)).ToString("yyyy-MM-dd"); + + var listAddress = (from myRow in dt.AsEnumerable() + where myRow.Field(3) == nowTime + group myRow by new { StockNo = myRow.ItemArray[5] } into g + //orderby new ComparerItem() { OrderIndex = b.Key., Id = b.Key.Id } descending + select new + { + StockNo = (string)g.Key.StockNo, + total_ok = g.Sum(c => (int)c.ItemArray[7]), + total_no = g.Sum(c => (int)c.ItemArray[8]) + }); + + double total_OK = 0; + double total_NO = 0; + foreach (var item in listAddress) + { + string stockNo = item.StockNo; + + var w_info = p_info.FirstOrDefault(p => p.StockNo.Equals(stockNo)); + if (w_info != null) + { + total_OK += (double)(w_info.Weight * item.total_ok); + total_NO += (double)(w_info.Weight * item.total_no); + } + } + totalList.Add(Math.Round(total_OK / 1000, 2)); + No_totalList.Add(Math.Round(total_NO / 1000, 2)); + + DateTime nsTime = Convert.ToDateTime(nowTime + " 00:00:00"); + DateTime neTime = Convert.ToDateTime(nowTime + " 23:59:59"); + var Waste_Num = ef.tb_Injection_Record.Where(p => p.RecordDate >= nsTime && p.RecordDate <= neTime).Sum(p => p.Waste_Weight); + double total_Waste = 0; + if (Waste_Num == null) + { + total_Waste = 0; + } + else + { + total_Waste = (double)Waste_Num; + } + + double total_all = total_OK + total_NO + total_Waste; + All_totalList.Add(Math.Round(total_all / 1000, 2)); + if (total_all > 0) + { + OK_L_List.Add(Math.Round((total_OK / total_all) * 100, 2)); + } + else + { + OK_L_List.Add(0); + } + + } + + List title_ = new List(); + + title_.Add(""); + title_.AddRange(titleList); + list.Add(title_); + + List tag_L_ = new List(); + tag_L_.Add("目标值"); + foreach (var item in OK_L_List) + { + tag_L_.Add("98%"); + } + list.Add(tag_L_); + + + List total_ = new List(); + total_.Add("合格件耗用原料"); + foreach (var item in totalList) + { + total_.Add(item.ToString()); + } + list.Add(total_); + + + + List No_total_ = new List(); + No_total_.Add("总耗用原料"); + foreach (var item in All_totalList) + { + No_total_.Add(item.ToString()); + } + list.Add(No_total_); + + List OK_L_ = new List(); + OK_L_.Add("原料利用率"); + foreach (var item in OK_L_List) + { + OK_L_.Add(item.ToString() + "%"); + } + list.Add(OK_L_); + + } + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + #endregion + + #region 月原料利用率 + public string SearchMaterialAvailabilityMonth(string StartTime) + { + try + { + StringBuilder sb = new StringBuilder(100); + var p_info = ef.tb_Plastic.Where(p => p.Weight != null); + + DateTime sTime = Convert.ToDateTime(StartTime); + DataTable dt = dal.SearchByTime(sTime.Year + "-01-01", sTime.Year + "-12-31"); + + if (dt != null && dt.Rows.Count > 0) + { + + List titleList = new List(); + List totalList = new List(); + List No_totalList = new List(); + List All_totalList = new List(); + List OK_L_List = new List(); + for (int i = 0; i < 12; i++) + { + + DateTime startT = Convert.ToDateTime(sTime.Year + "-01-01"); + + titleList.Add((i + 1) + "月"); + + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(startT.Year, (i + 1)); + + + string starTime = Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01").ToString("yyyy-MM-dd"); + string entTime = Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days).ToString("yyyy-MM-dd"); + + var listAddress = (from myRow in dt.AsEnumerable() + where myRow.Field(3).CompareTo(Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01").ToString("yyyy-MM-dd")) >= 0 && + myRow.Field(3).CompareTo(Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days).ToString("yyyy-MM-dd")) <= 0 + group myRow by new { StockNo = myRow.ItemArray[5] } into g + select new + { + StockNo = (string)g.Key.StockNo, + total_ok = g.Sum(c => (int)c.ItemArray[7]), + total_no = g.Sum(c => (int)c.ItemArray[8]) + }); + + double total_OK = 0; + double total_NO = 0; + foreach (var item in listAddress) + { + string stockNo = item.StockNo; + + var w_info = p_info.FirstOrDefault(p => p.StockNo.Equals(stockNo)); + if (w_info != null) + { + total_OK += (double)(w_info.Weight * item.total_ok); + total_NO += (double)(w_info.Weight * item.total_no); + } + } + totalList.Add(Math.Round(total_OK / 1000, 2)); + No_totalList.Add(Math.Round(total_NO / 1000, 2)); + + DateTime nsTime = Convert.ToDateTime(starTime + " 00:00:00"); + DateTime neTime = Convert.ToDateTime(entTime + " 23:59:59"); + var Waste_Num = ef.tb_Injection_Record.Where(p => p.RecordDate >= nsTime && p.RecordDate <= neTime).Sum(p => p.Waste_Weight); + double total_Waste = 0; + if (Waste_Num == null) + { + total_Waste = 0; + } + else + { + total_Waste = (double)Waste_Num; + } + double total_all = total_OK + total_NO + total_Waste; + All_totalList.Add(Math.Round(total_all / 1000, 2)); + + if (total_all > 0) + { + OK_L_List.Add(Math.Round((total_OK / total_all) * 100, 2)); + } + else + { + OK_L_List.Add(0); + } + + } + + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in titleList) + { + sb.Append(""); + } + sb.Append(""); + + sb.Append(""); + sb.Append(""); + foreach (var item in OK_L_List) + { + sb.Append(""); + } + sb.Append(""); + + sb.Append(""); + sb.Append(""); + foreach (var item in totalList) + { + sb.Append(""); + } + sb.Append(""); + + sb.Append(""); + sb.Append(""); + foreach (var item in All_totalList) + { + sb.Append(""); + } + sb.Append(""); + + sb.Append(""); + sb.Append(""); + foreach (var item in OK_L_List) + { + sb.Append(""); + } + sb.Append(""); + + sb.Append("
" + item + "
目标值98%
合格件耗用原料" + item + "
总耗用原料" + item + "
原料利用率" + item + "%
"); + } + return sb.ToString(); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public EcharBarModel SearchMaterialAvailabilityMonthBar(string StartTime) + { + try + { + EcharBarModel md = new EcharBarModel(); + + + var p_info = ef.tb_Plastic.Where(p => p.Weight != null); + + DateTime sTime = Convert.ToDateTime(StartTime); + DataTable dt = dal.SearchByTime(sTime.Year + "-01-01", sTime.Year + "-12-31"); + + if (dt != null && dt.Rows.Count > 0) + { + + List titleList = new List(); + List totalList = new List(); + List No_totalList = new List(); + List OK_L_List = new List(); + List T_L_List = new List(); + for (int i = 0; i < 12; i++) + { + + DateTime startT = Convert.ToDateTime(sTime.Year + "-01-01"); + + titleList.Add((i + 1) + "月"); + + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(startT.Year, (i + 1)); + + + string starTime = Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01").ToString("yyyy-MM-dd"); + string entTime = Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days).ToString("yyyy-MM-dd"); + + var listAddress = (from myRow in dt.AsEnumerable() + where myRow.Field(3).CompareTo(Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01").ToString("yyyy-MM-dd")) >= 0 && + myRow.Field(3).CompareTo(Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days).ToString("yyyy-MM-dd")) <= 0 + group myRow by new { StockNo = myRow.ItemArray[5] } into g + select new + { + StockNo = (string)g.Key.StockNo, + total_ok = g.Sum(c => (int)c.ItemArray[7]), + total_no = g.Sum(c => (int)c.ItemArray[8]) + }); + + double total_OK = 0; + double total_NO = 0; + foreach (var item in listAddress) + { + string stockNo = item.StockNo; + + var w_info = p_info.FirstOrDefault(p => p.StockNo.Equals(stockNo)); + if (w_info != null) + { + total_OK += (double)(w_info.Weight * item.total_ok); + total_NO += (double)(w_info.Weight * item.total_no); + } + } + totalList.Add(Math.Round(total_OK / 1000, 2)); + No_totalList.Add(Math.Round(total_NO / 1000, 2)); + + DateTime nsTime = Convert.ToDateTime(starTime + " 00:00:00"); + DateTime neTime = Convert.ToDateTime(entTime + " 23:59:59"); + var Waste_Num = ef.tb_Injection_Record.Where(p => p.RecordDate >= nsTime && p.RecordDate <= neTime).Sum(p => p.Waste_Weight); + double total_Waste = 0; + if (Waste_Num == null) + { + total_Waste = 0; + } + else + { + total_Waste = (double)Waste_Num; + } + double total_all = total_OK + total_NO + total_Waste; + + if (total_all > 0) + { + OK_L_List.Add(Math.Round((total_OK / total_all) * 100, 2)); + } + else + { + OK_L_List.Add(0); + } + + } + + foreach (var item in OK_L_List) + { + T_L_List.Add(98); + } + md.categories = titleList; + md.QualifiedData = OK_L_List; + md.TargetData = T_L_List; + + } + return md; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public List> SearchMaterialAvailabilityMonthForExcel(string StartTime) + { + try + { + List> list = new List>(); + + var p_info = ef.tb_Plastic.Where(p => p.Weight != null); + + DateTime sTime = Convert.ToDateTime(StartTime); + DataTable dt = dal.SearchByTime(sTime.Year + "-01-01", sTime.Year + "-12-31"); + + if (dt != null && dt.Rows.Count > 0) + { + + List titleList = new List(); + List totalList = new List(); + List No_totalList = new List(); + List All_totalList = new List(); + List OK_L_List = new List(); + for (int i = 0; i < 12; i++) + { + + DateTime startT = Convert.ToDateTime(sTime.Year + "-01-01"); + + titleList.Add((i + 1) + "月"); + + + int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(startT.Year, (i + 1)); + + + string starTime = Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01").ToString("yyyy-MM-dd"); + string entTime = Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days).ToString("yyyy-MM-dd"); + + var listAddress = (from myRow in dt.AsEnumerable() + where myRow.Field(3).CompareTo(Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-01").ToString("yyyy-MM-dd")) >= 0 && + myRow.Field(3).CompareTo(Convert.ToDateTime(sTime.Year + "-" + (i + 1) + "-" + days).ToString("yyyy-MM-dd")) <= 0 + group myRow by new { StockNo = myRow.ItemArray[5] } into g + select new + { + StockNo = (string)g.Key.StockNo, + total_ok = g.Sum(c => (int)c.ItemArray[7]), + total_no = g.Sum(c => (int)c.ItemArray[8]) + }); + + double total_OK = 0; + double total_NO = 0; + foreach (var item in listAddress) + { + string stockNo = item.StockNo; + + var w_info = p_info.FirstOrDefault(p => p.StockNo.Equals(stockNo)); + if (w_info != null) + { + total_OK += (double)(w_info.Weight * item.total_ok); + total_NO += (double)(w_info.Weight * item.total_no); + } + } + totalList.Add(Math.Round(total_OK / 1000, 2)); + No_totalList.Add(Math.Round(total_NO / 1000, 2)); + + DateTime nsTime = Convert.ToDateTime(starTime + " 00:00:00"); + DateTime neTime = Convert.ToDateTime(entTime + " 23:59:59"); + var Waste_Num = ef.tb_Injection_Record.Where(p => p.RecordDate >= nsTime && p.RecordDate <= neTime).Sum(p => p.Waste_Weight); + double total_Waste = 0; + if (Waste_Num == null) + { + total_Waste = 0; + } + else + { + total_Waste = (double)Waste_Num; + } + double total_all = total_OK + total_NO + total_Waste; + All_totalList.Add(Math.Round(total_all / 1000, 2)); + + if (total_all > 0) + { + OK_L_List.Add(Math.Round((total_OK / total_all) * 100, 2)); + } + else + { + OK_L_List.Add(0); + } + + } + + List title_ = new List(); + + title_.Add(""); + title_.AddRange(titleList); + list.Add(title_); + + List tag_L_ = new List(); + tag_L_.Add("目标值"); + foreach (var item in OK_L_List) + { + tag_L_.Add("98%"); + } + list.Add(tag_L_); + + + List total_ = new List(); + total_.Add("合格件耗用原料"); + foreach (var item in totalList) + { + total_.Add(item.ToString()); + } + list.Add(total_); + + + + List No_total_ = new List(); + No_total_.Add("总耗用原料"); + foreach (var item in All_totalList) + { + No_total_.Add(item.ToString()); + } + list.Add(No_total_); + + List OK_L_ = new List(); + OK_L_.Add("原料利用率"); + foreach (var item in OK_L_List) + { + OK_L_.Add(item.ToString() + "%"); + } + list.Add(OK_L_); + } + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + #endregion + + #region 注塑生产记录表 + public string SearchProductInjectionRecord(string StartTime, string EndTime) + { + var defectList = ef.tb_Defect.ToList(); + var defectInfo = defectList.Where(p => p.LineID.Equals(defectList.FirstOrDefault().LineID)).OrderBy(p => p.DefectName).Select(p => p.DefectName).ToList(); + + var DownReasonList = ef.tb_Inhection_DownReason.OrderBy(p => p.Reason).Select(p => p.Reason).ToList(); + + DataTable dt = dal.SearchProductInjectionRecord(Convert.ToDateTime(StartTime).ToString("yyyy-MM-dd"), Convert.ToDateTime(EndTime).ToString("yyyy-MM-dd")); + DataTable dt2 = dal.SearchProductInjectionRecordBadReason(Convert.ToDateTime(StartTime).ToString("yyyy-MM-dd"), Convert.ToDateTime(EndTime).ToString("yyyy-MM-dd")); + + List list = Tool.ConvertTo(dt2).ToList(); + + + DataTable dt3 = dal.SearchProductInjectionRecordDownReason(Convert.ToDateTime(StartTime).ToString("yyyy-MM-dd"), Convert.ToDateTime(EndTime).ToString("yyyy-MM-dd")); + + List list3 = Tool.ConvertTo(dt3).ToList(); + + + + StringBuilder sb = new StringBuilder(100); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + //sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in defectInfo) + { + sb.Append(""); + } + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + foreach (var item in DownReasonList) + { + sb.Append(""); + } + sb.Append(""); + try + { + if (dt != null && dt.Rows.Count > 0) + { + for (int i = 0; i < dt.Rows.Count; i++) + { + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append("");//注塑机台 + sb.Append("");//开机时间 + sb.Append("");//关机时间 + sb.Append("");//产品性质 + sb.Append("");//产品名称 + sb.Append("");//原料名称 + //sb.Append("");//原料牌号 + sb.Append("");//原料批次号 + sb.Append("");//标准开机时间 + + decimal cycle_Time = dt.Rows[i]["CycleTime"] == DBNull.Value ? 0 : Convert.ToDecimal(dt.Rows[i]["CycleTime"]); + + sb.Append("");//标准周期 + + decimal real_Cycle = dt.Rows[i]["RealCycle"] == DBNull.Value ? 0 : Convert.ToDecimal(dt.Rows[i]["RealCycle"]); + decimal product_count = dt.Rows[i]["ProductCount"] == DBNull.Value ? 0 : Convert.ToDecimal(dt.Rows[i]["ProductCount"]); + decimal bad_count = dt.Rows[i]["BadCount"] == DBNull.Value ? 0 : Convert.ToDecimal(dt.Rows[i]["BadCount"]); + decimal weight = dt.Rows[i]["Weight"] == DBNull.Value ? 0 : Convert.ToDecimal(dt.Rows[i]["Weight"]); + decimal plan_count = dt.Rows[i]["PlanCount"] == DBNull.Value ? 0 : Convert.ToDecimal(dt.Rows[i]["PlanCount"]); + + + sb.Append("");//实际周期 + + sb.Append("");//计划数量 + sb.Append("");//合格数量 + sb.Append("");//总合格数量 + sb.Append("");//不良数量 + for (int k = 0; k < defectInfo.Count; k++) + { + sb.Append(""); + } + + + sb.Append("");//产品毛重(总合格数量+不良数量)*产品毛重 + sb.Append("");//废料块 + sb.Append("");//浇口重量 + + + + + + sb.Append("");//产品耗用原料 + if ((product_count + bad_count) == 0) + { + sb.Append("");//合格率(总合格数/(总合格数+不良数)) + } + else + { + sb.Append("");//合格率(总合格数/(总合格数+不良数)) + } + if (plan_count == 0) + { + sb.Append("");//完成率 + } + else + { + + sb.Append("");//完成率(总合格数/计划数) + } + + sb.Append("");//计划工时(计划数量*标准周期/60) + sb.Append("");//产出工时(计划数量*实际周期/60) + + var listR = list3.Where(p => p.DownTypeName != null && p.PlanID.Equals(dt.Rows[i]["PlanID"])).ToList(); + + long x = listR.Where(p => p.DownTypeName.Contains("计划停机")).Sum(p => p.DownTime); + long x1 = listR.Where(p => p.DownTypeName.Contains("换模时间")).Sum(p => p.DownTime); + + sb.Append("");//计划停机+换模时间 + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + + for (int k = 0; k < DownReasonList.Count; k++) + { + sb.Append(""); + } + sb.Append(""); + } + } + } + catch (Exception ex) + { + throw; + } + + sb.Append("
日期班次注塑机台开机时间关机时间产品性质产品名称原料名称原料牌号原料批次号标准开机时间标准周期实际周期计划数量合格数量总合格数量不良数量不良原因产品毛重废料块浇口重量产品耗用原料合格率完成率计划工时产出工时停机时间换膜计划停机停机原因
" + item + "计划停机+换模时间非计划停机换膜交班接班" + item + "
" + dt.Rows[i]["ProductDate"] + "" + dt.Rows[i]["ClassName"].ToString() + "" + dt.Rows[i]["StationNo"] + "" + dt.Rows[i]["BeginTime"] + "" + dt.Rows[i]["EndTime"] + "正常" + dt.Rows[i]["ProductName"] + "" + dt.Rows[i]["MaterialName"] + "" + dt.Rows[i]["BatchNo"] + "" + dt.Rows[i]["OpenDebugTime"] + "" + cycle_Time + "" + real_Cycle + "" + dt.Rows[i]["PlanCount"] + "" + product_count + "" + (product_count + bad_count + list.Where(p => "开机报废;".Equals(p.BadReason)).Count()) + "" + dt.Rows[i]["BadCount"] + "" + list.Where(p => p.BadReason.Equals(defectInfo[k] + ";")).Count() + "" + dt.Rows[i]["Weight"] + "" + dt.Rows[i]["Waste_Weight"] + "" + dt.Rows[i]["JK_Weight"] + "" + (product_count + bad_count) * weight + "0%" + Math.Round((product_count / (product_count + bad_count)) * 100, 2) + "%0%" + Math.Round((product_count / plan_count) * 100, 2) + "%" + Math.Round((plan_count * cycle_Time) / 60, 2) + "" + Math.Round((plan_count * real_Cycle) / 60, 2) + "" + (x + x1) + "" + listR.Where(p => p.DownTypeName.Contains("非计划停机")).Sum(p => p.DownTime) + "" + listR.Where(p => p.DownTypeName.Contains("换模")).Sum(p => p.DownTime) + "" + listR.Where(p => p.DownTypeName.Contains("交班")).Sum(p => p.DownTime) + "" + listR.Where(p => p.DownTypeName.Contains("接班")).Sum(p => p.DownTime) + "" + listR.Where(p => p.DownTypeName.Contains("计划停机")).Sum(p => p.DownTime) + "" + list3.Where(p => p.Reason != null && p.PlanID.Equals(dt.Rows[i]["PlanID"]) && p.Reason.Contains(DownReasonList[k])).Sum(p => p.DownTime) + "
"); + + return sb.ToString(); + } + + private string CheckWorkClass(string StartTime) + { + + try + { + if (true) + { + string time = StartTime.Substring(0, StartTime.IndexOf(" ")); + if (DateTime.Compare(Convert.ToDateTime(StartTime), Convert.ToDateTime(time + " 08:00:00")) > 0 && DateTime.Compare(Convert.ToDateTime(time + " 19:59:59"), Convert.ToDateTime(StartTime)) > 0) + { + return "A"; + } + return "B"; + + } + + } + catch (Exception ex) + { + + } + + return ""; + } + + public List> SearchProductInjectionRecordForExcel(string StartTime, string EndTime) + { + List> listExcel = new List>(); + + var defectList = ef.tb_Defect.ToList(); + var defectInfo = defectList.Where(p => p.LineID.Equals(defectList.FirstOrDefault().LineID)).OrderBy(p => p.DefectName).Select(p => p.DefectName).ToList(); + + var DownReasonList = ef.tb_Inhection_DownReason.OrderBy(p => p.Reason).Select(p => p.Reason).ToList(); + + DataTable dt = dal.SearchProductInjectionRecord(Convert.ToDateTime(StartTime).ToString("yyyy-MM-dd"), Convert.ToDateTime(EndTime).ToString("yyyy-MM-dd")); + DataTable dt2 = dal.SearchProductInjectionRecordBadReason(Convert.ToDateTime(StartTime).ToString("yyyy-MM-dd"), Convert.ToDateTime(EndTime).ToString("yyyy-MM-dd")); + + List list = Tool.ConvertTo(dt2).ToList(); + + + DataTable dt3 = dal.SearchProductInjectionRecordDownReason(Convert.ToDateTime(StartTime).ToString("yyyy-MM-dd"), Convert.ToDateTime(EndTime).ToString("yyyy-MM-dd")); + + List list3 = Tool.ConvertTo(dt3).ToList(); + + + List titleList = new List(); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + + foreach (var item in defectInfo) + { + titleList.Add("不良原因"); + } + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + titleList.Add(""); + + titleList.Add("停机时间"); + titleList.Add("停机时间"); + + titleList.Add("换膜"); + titleList.Add("换膜"); + titleList.Add("换膜"); + + titleList.Add(""); + foreach (var item in DownReasonList) + { + titleList.Add("停机原因"); + } + + + listExcel.Add(titleList); + + List titleList2 = new List(); + titleList2.Add("日期"); + titleList2.Add("班次"); + titleList2.Add("注塑机台"); + titleList2.Add("开机时间"); + titleList2.Add("关机时间"); + titleList2.Add("产品性质"); + titleList2.Add("产品名称"); + titleList2.Add("原料名称"); + titleList2.Add("原料批次号"); + titleList2.Add("标准开机时间"); + titleList2.Add("标准周期"); + titleList2.Add("实际周期"); + titleList2.Add("计划数量"); + titleList2.Add("合格数量"); + titleList2.Add("总合格数量"); + titleList2.Add("不良数量"); + foreach (var item in defectInfo) + { + titleList2.Add(item); + } + titleList2.Add("产品毛重"); + titleList2.Add("废料块"); + titleList2.Add("浇口重量"); + titleList2.Add("产品耗用原料"); + titleList2.Add("合格率"); + titleList2.Add("完成率"); + titleList2.Add("计划工时"); + titleList2.Add("产出工时"); + + titleList2.Add("计划停机+换模时间"); + titleList2.Add("非计划停机"); + titleList2.Add("换膜"); + titleList2.Add("交班"); + titleList2.Add("接班"); + titleList2.Add("计划停机"); + foreach (var item in DownReasonList) + { + titleList2.Add(item); + } + listExcel.Add(titleList2); + + + if (dt != null && dt.Rows.Count > 0) + { + + for (int i = 0; i < dt.Rows.Count; i++) + { + List conList = new List(); + conList.Add(dt.Rows[i]["ProductDate"].ToString()); + conList.Add(dt.Rows[i]["ClassName"].ToString()); + conList.Add(dt.Rows[i]["StationNo"].ToString()); + conList.Add(dt.Rows[i]["BeginTime"].ToString()); + conList.Add(dt.Rows[i]["EndTime"].ToString()); + conList.Add("正常"); + conList.Add(dt.Rows[i]["ProductName"].ToString()); + conList.Add(dt.Rows[i]["MaterialName"].ToString()); + conList.Add(dt.Rows[i]["BatchNo"].ToString()); + conList.Add(dt.Rows[i]["OpenDebugTime"].ToString()); + + decimal cycle_Time = dt.Rows[i]["CycleTime"] == DBNull.Value ? 0 : Convert.ToDecimal(dt.Rows[i]["CycleTime"]); + + conList.Add(cycle_Time.ToString()); + + decimal real_Cycle = dt.Rows[i]["RealCycle"] == DBNull.Value ? 0 : Convert.ToDecimal(dt.Rows[i]["RealCycle"]); + + decimal product_count = dt.Rows[i]["ProductCount"] == DBNull.Value ? 0 : Convert.ToDecimal(dt.Rows[i]["ProductCount"]); + decimal bad_count = dt.Rows[i]["BadCount"] == DBNull.Value ? 0 : Convert.ToDecimal(dt.Rows[i]["BadCount"]); + decimal weight = dt.Rows[i]["Weight"] == DBNull.Value ? 0 : Convert.ToDecimal(dt.Rows[i]["Weight"]); + decimal plan_count = dt.Rows[i]["PlanCount"] == DBNull.Value ? 0 : Convert.ToDecimal(dt.Rows[i]["PlanCount"]); + decimal openFailCount = 0; + conList.Add(real_Cycle.ToString()); + conList.Add(dt.Rows[i]["PlanCount"].ToString()); + conList.Add(product_count.ToString()); + conList.Add((product_count + bad_count + defectInfo.Where(p => "开机报废".Equals(p)).Count()).ToString()); + conList.Add(dt.Rows[i]["BadCount"].ToString()); + + for (int k = 0; k < defectInfo.Count; k++) + { + conList.Add(list.Where(p => p.BadReason.Equals(defectInfo[k] + ";")).Count().ToString()); + } + conList.Add(dt.Rows[i]["Weight"].ToString()); + conList.Add(dt.Rows[i]["Waste_Weight"].ToString()); + conList.Add(dt.Rows[i]["JK_Weight"].ToString()); + + + + + + conList.Add(((product_count + bad_count) * weight).ToString()); + + if ((product_count + bad_count) == 0) + { + + conList.Add("0%"); + } + else + { + conList.Add((Math.Round((product_count / (product_count + bad_count)) * 100, 2)).ToString()); + + } + if (plan_count == 0) + { + conList.Add("0%"); + } + else + { + conList.Add((Math.Round((product_count / plan_count) * 100, 2)).ToString()); + } + conList.Add((Math.Round((plan_count * cycle_Time) / 60, 2)).ToString()); + conList.Add((Math.Round((plan_count * real_Cycle) / 60, 2)).ToString()); + + + var listR = list3.Where(p => p.DownTypeName != null && p.PlanID.Equals(dt.Rows[i]["PlanID"])).ToList(); + + long x = listR.Where(p => p.DownTypeName.Contains("计划停机")).Sum(p => p.DownTime); + long x1 = listR.Where(p => p.DownTypeName.Contains("换模时间")).Sum(p => p.DownTime); + + conList.Add((x + x1).ToString()); + conList.Add((listR.Where(p => p.DownTypeName.Contains("非计划停机")).Sum(p => p.DownTime)).ToString()); + conList.Add((listR.Where(p => p.DownTypeName.Contains("换模")).Sum(p => p.DownTime)).ToString()); + conList.Add((listR.Where(p => p.DownTypeName.Contains("交班")).Sum(p => p.DownTime)).ToString()); + conList.Add((listR.Where(p => p.DownTypeName.Contains("接班")).Sum(p => p.DownTime)).ToString()); + conList.Add((listR.Where(p => p.DownTypeName.Contains("计划停机")).Sum(p => p.DownTime)).ToString()); + + for (int k = 0; k < DownReasonList.Count; k++) + { + conList.Add((list3.Where(p => p.Reason != null && p.PlanID.Equals(dt.Rows[i]["PlanID"]) && p.Reason.Contains(DownReasonList[k])).Sum(p => p.DownTime)).ToString()); + } + listExcel.Add(conList); + } + + } + + + + return listExcel; + } + #endregion + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Inspection/CommonlyInspectionBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Inspection/CommonlyInspectionBLL.cs new file mode 100644 index 0000000..673f0cd --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Inspection/CommonlyInspectionBLL.cs @@ -0,0 +1,596 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.Inspection +{ + public class CommonlyInspectionBLL + { + BasicBLL db = new BasicBLL(); + /// + /// 查询信息 + /// + /// + public string SearchInfo(string versionID, string checkDate) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + List list = null; + list = db.SearchInfoByKey("IsUseing", 1).Where(p => p.VersionID.Equals(versionID)).ToList(); + if (list.Count > 0) + { + BasicBLL CheckItem_db = new BasicBLL(); + var CheckItemList = CheckItem_db.SearchAllInfo().ToList(); + + List CommonlyInspectionList = new List(); + foreach (var item in list) + { + CommonlyInspectionModel dm = Tool.Mapper(item); + dm.InspectionContent = CheckItemList.FirstOrDefault(p => p.ID == item.InspectionContentID).CheckContent; + CommonlyInspectionList.Add(dm); + } + + jsonStr = JSONTools.ScriptSerialize>(CommonlyInspectionList); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + /// + /// 添加信息 + /// + /// + public bool AddInfo(string CommonlyInspection, string CheckUserID, string ConfirmUserID, string UserID, string CheckDate, string CheckType, string ErrMes) + { + try + { + BasicBLL Recorddb = new BasicBLL(); + DateTime dtime = DateTime.Now; + DateTime checktime = Convert.ToDateTime(CheckDate); + string[] arr = CommonlyInspection.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + for (int i = 0; i < arr.Length - 1; i++) + { + int index = arr[i].IndexOf(":"); + tb_CommonlyInspectionRecord md = new tb_CommonlyInspectionRecord(); + md.ID = Guid.NewGuid().ToString(); + md.CommonlyInspectionID = arr[i].Substring(0, index); + md.CheckResult = arr[i].Substring(index + 1, arr[i].Length - index - 1); + md.CheckUser = CheckUserID; + md.ConfirmUser = CheckUserID; + md.CreateUserID = UserID; + md.CheckDate = checktime; + md.CheckType = CheckType; + md.ErrMes = ErrMes; + md.ConfirmUserDate = dtime; + md.CreateTime = dtime; + md.IsUseing = 1; + Recorddb.AddInfo(md); + } + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + public bool UpdateInfo(string CommonlyInspection, string CheckUserID, string ConfirmUserID, string UserID, string CheckDate, string CheckType, string ErrMes) + { + try + { + string[] proNames = new string[9]; + proNames[0] = "CheckResult"; + proNames[1] = "CheckUser"; + proNames[2] = "CheckDate"; + proNames[3] = "ConfirmUser"; + proNames[4] = "ConfirmUserDate"; + proNames[5] = "UpdateUserID"; + proNames[6] = "UpdateTime"; + proNames[7] = "CheckType"; + proNames[8] = "ErrMes"; + + BasicBLL Recorddb = new BasicBLL(); + DateTime dtime = DateTime.Now; + DateTime checktime = Convert.ToDateTime(CheckDate); + string[] arr = CommonlyInspection.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + for (int i = 0; i < arr.Length - 3; i++) + { + int index = arr[i].IndexOf(":"); + tb_CommonlyInspectionRecord md = new tb_CommonlyInspectionRecord(); + md.ID = arr[i].Substring(0, index); + md.CheckResult = arr[i].Substring(index + 1, arr[i].Length - index - 1); + md.CheckUser = CheckUserID; + md.CheckDate = checktime; + md.CheckType = CheckType; + md.ErrMes = ErrMes; + md.ConfirmUser = ConfirmUserID; + md.ConfirmUserDate = dtime; + md.UpdateUserID = UserID; + md.UpdateTime = dtime; + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + md.CreateUserID = ""; + md.CommonlyInspectionID = ""; + Recorddb.UpdateInfo(md, proNames); + } + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + public string GetDate(string VersionID, string CheckDate, string CheckType) + { + try + { + string str = ""; + string CheckUserID = ""; + string ConfirmUserID = ""; + string ErrMes = ""; + BasicBLL db = new BasicBLL(); + string jsonStr = "[]"; + List list = null; + + list = db.SearchInfoByKey("IsUseing", 1).Where(p => p.VersionID.Equals(VersionID)).ToList(); + if (list.Count > 0) + { + BasicBLL CheckItem_db = new BasicBLL(); + var CheckItemList = CheckItem_db.SearchAllInfo().ToList(); + + string[] arr_id = list.Select(s => s.ID).ToArray(); + BasicBLL CommonlyInspectionRecord_db = new BasicBLL(); + var _info = CommonlyInspectionRecord_db.SearchInfoByKey("CheckDate", Convert.ToDateTime(CheckDate)).Where(p => arr_id.Contains(p.CommonlyInspectionID) && p.CheckType.Equals(CheckType)).ToList(); + if (_info.Count > 0) + { + #region 修改 + List CommonlyInspectionList = new List(); + foreach (var item in list) + { + CommonlyInspectionModel dm = Tool.Mapper(item); + dm.InspectionContent = CheckItemList.FirstOrDefault(p => p.ID.Equals(item.InspectionContentID)).CheckContent; + CommonlyInspectionList.Add(dm); + } + str = ""; + str += ""; + str += ""; + str += ""; + str += ""; + + for (int j = 0; j < CommonlyInspectionList.Count; j++) + { + str += ""; + str += ""; + + var R_info = _info.FirstOrDefault(p => p.CommonlyInspectionID == CommonlyInspectionList[j].ID); + CheckUserID = R_info.CheckUser; + ConfirmUserID = R_info.ConfirmUser; + ErrMes = R_info.ErrMes; + switch (R_info.CheckResult) + { + case "0": + str += ""; + break; + case "1": + str += ""; + break; + case "2": + str += ""; + break; + case "3": + str += ""; + break; + case "4": + str += ""; + break; + } + str += ""; + } + str += ""; + str += ""; + str += ""; + str += ""; + str += "
点检内容检查结果
" + CommonlyInspectionList[j].InspectionContent + "
异常情况描述
"; + str += ""; + str += ""; + str += ""; + + #endregion + } + else + { + #region 新增 + List CommonlyInspectionList = new List(); + foreach (var item in list) + { + CommonlyInspectionModel dm = Tool.Mapper(item); + dm.InspectionContent = CheckItemList.FirstOrDefault(p => p.ID.Equals(item.InspectionContentID)).CheckContent; + CommonlyInspectionList.Add(dm); + } + str = ""; + str += ""; + str += ""; + str += ""; + str += ""; + for (int j = 0; j < CommonlyInspectionList.Count; j++) + { + str += ""; + str += ""; + str += ""; + + + str += ""; + } + str += ""; + str += ""; + str += ""; + str += ""; + str += "
点检内容检查结果
" + CommonlyInspectionList[j].InspectionContent + "" + + "
异常情况描述
"; + str += ""; + #endregion + } + } + return str; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + } + public string GetReportDate(string VersionID, string CheckDate) + { + try + { + string str = ""; + + List ErrMesList = new List(); + + + BasicBLL dbUser = new BasicBLL(); + BasicBLL db = new BasicBLL(); + string jsonStr = "[]"; + List list = null; + list = db.SearchInfoByKey("IsUseing", 1).Where(p => p.VersionID.Equals(VersionID)).ToList(); + + if (list.Count > 0) + { + BasicBLL CheckItem_db = new BasicBLL(); + var CheckItemList = CheckItem_db.SearchAllInfo().ToList(); + + string[] arr_id = list.Select(s => s.ID).ToArray(); + BasicBLL CommonlyInspectionRecord_db = new BasicBLL(); + + DateTime StartTime = Convert.ToDateTime(CheckDate + "-01 00:00:00"); + DateTime EndTime = StartTime.AddMonths(1); + + int daynum = GetDays(Convert.ToInt32(CheckDate.Substring(0, 4)), Convert.ToInt32(CheckDate.Substring(5, 2))); + + + var _info = CommonlyInspectionRecord_db.SearchInfoByKey("IsUseing", 1).Where(p => p.CheckDate >= StartTime && p.CheckDate < EndTime && arr_id.Contains(p.CommonlyInspectionID)).ToList(); + var userList = dbUser.SearchAllInfo().ToList(); + if (_info.Count > 0) + { + #region 有记录 + List CommonlyInspectionList = new List(); + foreach (var item in list) + { + CommonlyInspectionModel dm = Tool.Mapper(item); + var IC_info = CheckItemList.FirstOrDefault(p => p.ID.Equals(item.InspectionContentID)); + if (IC_info != null) + { + dm.InspectionContent = IC_info.CheckContent; + CommonlyInspectionList.Add(dm); + } + + } + str = ""; + str += ""; + str += ""; + str += ""; + for (int i = 1; i <= daynum; i++) + { + str += ""; + } + + str += ""; + var info = CommonlyInspectionList.ToList(); + for (int j = 0; j < info.Count; j++) + { + + str += ""; + str += ""; + str += ""; + var R_info = _info.Where(p => p.CommonlyInspectionID == info[j].ID); + + for (int k = 1; k <= daynum; k++) + { + + DateTime dtime = StartTime.AddDays(k - 1); + var info_R = R_info.FirstOrDefault(p => p.CheckDate == dtime && p.CheckType.Equals("0")); + string CheckResult = ""; + if (info_R != null) + { + if (!String.IsNullOrEmpty(info_R.ErrMes) && !ErrMesList.Contains(dtime.ToString("yyyy-MM-dd") + ":" + info_R.ErrMes)) + { + ErrMesList.Add(dtime.ToString("yyyy-MM-dd") + ":" + info_R.ErrMes); + } + + //select + switch (info_R.CheckResult) + { + case "0": + CheckResult = "▲"; + break; + case "1": + CheckResult = "√"; + break; + case "2": + CheckResult = "◎"; + break; + case "3": + CheckResult = "X"; + break; + case "4": + CheckResult = "☆"; + break; + } + } + str += ""; + } + + str += ""; + + + str += ""; + for (int k = 1; k <= daynum; k++) + { + DateTime dtime = StartTime.AddDays(k - 1); + var info_R = R_info.FirstOrDefault(p => p.CheckDate == dtime && p.CheckType.Equals("1")); + string CheckResult = ""; + if (info_R != null) + { + //是否有异常记录并且没有加入到列表中 + if (!String.IsNullOrEmpty(info_R.ErrMes) && !ErrMesList.Contains(dtime.ToString("yyyy-MM-dd") + ":" + info_R.ErrMes)) + { + ErrMesList.Add(dtime.ToString("yyyy-MM-dd") + ":" + info_R.ErrMes); + } + + switch (info_R.CheckResult) + { + case "0": + CheckResult = "▲"; + break; + case "1": + CheckResult = "√"; + break; + case "2": + CheckResult = "◎"; + break; + case "3": + CheckResult = "X"; + break; + case "4": + CheckResult = "☆"; + break; + } + } + str += ""; + } + + str += ""; + + } + + str += ""; + str += ""; + str += ""; + for (int i = 1; i <= daynum; i++) + { + DateTime dtime = StartTime.AddDays(i - 1); + var infoUser = _info.FirstOrDefault(p => p.CheckDate == dtime); + if (infoUser != null) + { + str += ""; + } + else + { + str += ""; + } + } + str += ""; + + str += ""; + //str += ""; + str += ""; + for (int i = 1; i <= daynum; i++) + { + DateTime dtime = StartTime.AddDays(i - 1); + var infoUser = _info.FirstOrDefault(p => p.CheckDate == dtime); + if (infoUser != null) + { + str += ""; + } + else + { + str += ""; + } + } + str += ""; + + str += ""; + //str += ""; + str += ""; + for (int i = 1; i <= daynum; i++) + { + DateTime dtime = StartTime.AddDays(i - 1); + var infoUser = _info.FirstOrDefault(p => p.CheckDate == dtime); + if (infoUser != null) + { + str += ""; + } + else + { + str += ""; + } + } + str += ""; + + str += ""; + //str += ""; + str += ""; + for (int i = 1; i <= daynum; i++) + { + DateTime dtime = StartTime.AddDays(i - 1); + var infoUser = _info.FirstOrDefault(p => p.CheckDate == dtime); + if (infoUser != null) + { + str += ""; + } + else + { + str += ""; + } + } + str += ""; + str += "
序号点检内容" + i + "
" + (j + 1).ToString() + "" + info[j].InspectionContent + "" + CheckResult + "
" + CheckResult + "
日点检确认点检人(白 班)确认签名" + userList.FirstOrDefault(p => p.UserID.ToString().ToUpper().Equals(infoUser.CheckUser.ToUpper())).RealName + "
日点检确认点检人(夜 班)确认签名" + userList.FirstOrDefault(p => p.UserID.ToString().ToUpper().Equals(infoUser.CheckUser.ToUpper())).RealName + "
日点检确认点检人(白班班长)确认签名" + userList.FirstOrDefault(p => p.UserID.ToString().ToUpper().Equals(infoUser.ConfirmUser.ToUpper())).RealName + "
日点检确认点检人(夜班班长)确认签名" + userList.FirstOrDefault(p => p.UserID.ToString().ToUpper().Equals(infoUser.ConfirmUser.ToUpper())).RealName + "
"; + + if (ErrMesList.Count > 0) + { + #region 异常情况描述 + str += ""; + str += ""; + str += ""; + str += ""; + str += ""; + str += ""; + for (int i = 1; i < ErrMesList.Count; i++) + { + str += ""; + str += ""; + str += ""; + } + str += "
异常情况描述" + ErrMesList[0] + "
" + ErrMesList[i] + "
"; + #endregion + } + + + + #endregion + } + else + { + #region 无记录 + List CommonlyInspectionList = new List(); + foreach (var item in list) + { + CommonlyInspectionModel dm = Tool.Mapper(item); + var IC_info = CheckItemList.FirstOrDefault(p => p.ID.Equals(item.InspectionContentID)); + if (IC_info != null) + { + dm.InspectionContent = IC_info.CheckContent; + CommonlyInspectionList.Add(dm); + } + } + str = ""; + str += ""; + str += ""; + str += ""; + for (int i = 1; i <= daynum; i++) + { + str += ""; + } + + str += ""; + var info = CommonlyInspectionList.ToList(); + for (int j = 0; j < info.Count; j++) + { + str += ""; + str += ""; + str += ""; + for (int k = 1; k <= daynum; k++) + { + str += ""; + } + str += ""; + str += ""; + for (int k = 1; k <= daynum; k++) + { + str += ""; + } + str += ""; + } + + #endregion + + } + } + return str; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + } + public static int GetDays(int year, int month) + { + int days = 0; + if (month != 2) + { + switch (month) + { + case 1: + case 3: + case 5: + case 7: + case 8: + case 10: + case 12: + days = 31; + break; + case 4: + case 6: + case 9: + case 11: + days = 30; break; + } + } + else + { + // 闰年 + if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) + days = 29; + else + days = 28; + } + return days; + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Inspection/CommonlyInspectionVersionBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Inspection/CommonlyInspectionVersionBLL.cs new file mode 100644 index 0000000..b1bac7c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Inspection/CommonlyInspectionVersionBLL.cs @@ -0,0 +1,208 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.Inspection +{ + public class CommonlyInspectionVersionBLL + { + BasicBLL db = new BasicBLL(); + /// + /// 查询信息 + /// + /// + public string SearchInfo(string page, string pagesize,string deviceID) + { + try + { + + BasicBLL station_db = new BasicBLL(); + BasicBLL device_db = new BasicBLL(); + + var station_list = station_db.SearchAllInfo().ToList(); + var device_list = device_db.SearchAllInfo().ToList(); + + + string jsonStr = "[]"; + int total = 0;//总行数 + List list = null; + + list = db.SearchAllInfo().ToList(); + + + if (deviceID != "") + { + list = list.Where(p => p.DeviceID.Equals(deviceID)).ToList(); + } + + List CommonlyInspectionVersionList = new List(); + if (list.Count > 0) + { + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + total = list.Count; + + #region 联查 + + + foreach (var item in list) + { + CommonlyInspectionVersionModel dm = Tool.Mapper(item); + var info = device_list.FirstOrDefault(p => p.DeviceID.Equals(item.DeviceID)); + if (info != null) + { + dm.DeviceID = info.DeviceID; + dm.DeviceName = info.DeviceNo + "----" + info.DeviceName; + } + if (item.IsUseing == 1) + { + dm.IsUseingName = "启用"; + } + CommonlyInspectionVersionList.Add(dm); + } + #endregion + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = CommonlyInspectionVersionList; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + /// + /// 添加信息 + /// + /// 模型对象 + /// + public bool AddInfo(tb_CommonlyInspectionVersion md, string s) + { + try + { + var list = db.SearchInfoByKey("DeviceID", md.DeviceID).Where(p => p.Version == md.Version).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + if (db.AddInfo(md)) + { + BasicBLL CommonlyInspection_db = new BasicBLL(); + string[] arry = s.Split(','); + for (int i = 0; i < arry.Length; i++) + { + tb_CommonlyInspection m = new tb_CommonlyInspection(); + m.ID = Guid.NewGuid().ToString(); + m.VersionID = md.ID; + m.InspectionContentID = arry[i]; + m.CreateUserID = md.CreateUserID; + m.CreateTime = md.CreateTime; + m.IsUseing = 1; + CommonlyInspection_db.AddInfo(m); + } + return true; + } + return false; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// 模型对象 + /// + public bool UpdateInfo(tb_CommonlyInspectionVersion md) + { + try + { + //var list = db.SearchInfoByKey("ProductionLineID", md.ProductionLineID).Where(p => p.DeviceNo == md.DeviceNo).ToList();//判断是否有重复数据 + //if (list.Count > 0) + //{ + // return false; + //} + ////初始化要更新的字段 + //string[] proNames = new string[6]; + //proNames[0] = "ProductionLineID"; + //proNames[1] = "DeviceNo"; + //proNames[2] = "DeviceName"; + //proNames[3] = "Description"; + //proNames[4] = "UpdateUserID"; + //proNames[5] = "UpdateTime"; + + ////必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + ////如果没有初始化必填字段,更新会报错 + //md.CreateUserID = ""; + + //return db.UpdateInfo(md, proNames); + return false; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + /// 删除生产线信息 + public bool DelInfo(tb_CommonlyInspectionVersion md) + { + try + { + ////初始化要更新的字段 + //string[] proNames = new string[3]; + //proNames[0] = "IsUseing"; + //proNames[1] = "DisableTime"; + //proNames[2] = "DisableUserID"; + + ////必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + ////如果没有初始化必填字段,更新会报错 + //md.ProductionLineID = 0; + //md.DeviceNo = ""; + //md.DeviceName = ""; + //md.CreateUserID = ""; + //return db.UpdateInfo(md, proNames); + return false; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + public string GetComboboxData(string deviceID) + { + try + { + string jsonStr = "[]"; + var list = db.SearchInfoByKey("IsUseing", 1).ToList();//判断是否有重复数据 + if (deviceID != null && deviceID != "") + { + list = list.Where(p => p.DeviceID.Equals(deviceID)).ToList(); + } + jsonStr = JSONTools.ScriptSerialize>(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/AssemblyBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/AssemblyBLL.cs new file mode 100644 index 0000000..e355be3 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/AssemblyBLL.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.Mistake247; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.Mistake247 +{ + public class AssemblyBLL + { + public bool AddInfo(AssemblyModel md) + { + AssemblyDAL da = new AssemblyDAL(); + try + { + return da.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdateInfo(AssemblyModel md) + { + AssemblyDAL da = new AssemblyDAL(); + try + { + return da.UpdateInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchCount( string PartNo) + { + AssemblyDAL da = new AssemblyDAL(); + try + { + return da.SearchCount(PartNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool UpdatePrintFlag(AssemblyModel md) + { + AssemblyDAL da = new AssemblyDAL(); + try + { + return da.UpdatePrintFlag(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdatePrintFlag1(string partno) + { + AssemblyDAL da = new AssemblyDAL(); + try + { + return da.UpdatePrintFlag1(partno); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable searchPartNo(string partno) + { + AssemblyDAL da = new AssemblyDAL(); + try + { + return da.searchPartNo(partno); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/BoxBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/BoxBLL.cs new file mode 100644 index 0000000..d4e22ab --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/BoxBLL.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.Mistake247; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.Mistake247 +{ + public class BoxBLL + { + public bool AddInfo(BoxModel md) + { + BoxDAL da = new BoxDAL(); + try + { + return da.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchByNo(string PartNo, string BatchNo) + { + BoxDAL da = new BoxDAL(); + try + { + return da.SearchByNo(PartNo, BatchNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool UpdateInfo(BoxModel md) + { + BoxDAL da = new BoxDAL(); + try + { + return da.UpdateInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable searchBox(string partno) + { + BoxDAL da = new BoxDAL(); + try + { + return da.SearchBox(partno); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchBoxIsExsit(string box) + { + BoxDAL da = new BoxDAL(); + try + { + return da.SearchBoxIsExsit(box); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/MistakeBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/MistakeBLL.cs new file mode 100644 index 0000000..d19c805 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/MistakeBLL.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.Mistake247; +using MESClassLibrary.DAL.painting; + +namespace MESClassLibrary.BLL.Mistake247 +{ + public class MistakeBLL + { + public DataTable IsMath(string DeviceNo, string PartNo) + { + MistakeDAL da = new MistakeDAL(); + try + { + return da.IsMath(DeviceNo, PartNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchByNo(string PartNo,string deviceNo) + { + MistakeDAL da = new MistakeDAL(); + try + { + return da.SearchByNo(PartNo, deviceNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchPartName(string PartNo) + { + MistakeDAL da = new MistakeDAL(); + try + { + return da.SearchPartName(PartNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchPartNoByDecice(string deviceNo) + { + MistakeDAL da = new MistakeDAL(); + try + { + return da.SearchPartNoByDecice(deviceNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/Plan247BLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/Plan247BLL.cs new file mode 100644 index 0000000..4c0a12b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/Plan247BLL.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL; +using MESClassLibrary.DAL.Mistake247; + +namespace MESClassLibrary.BLL.Mistake247 +{ + public class Plan247BLL + { + public DataTable SearhByOrderNo(string OrderNo) + { + Plan247DAL da = new Plan247DAL(); + try + { + return da.SearhByOrderNo(OrderNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable DetailOrderNo(string OrderNo) + { + Plan247DAL da = new Plan247DAL(); + try + { + return da.DetailOrderNo(OrderNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable IsHavePlan(string partNo1, string orderNo) + { + Plan247DAL da = new Plan247DAL(); + try + { + return da.IsHavePlan(partNo1, orderNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + + public DataTable SearhCountByOrderNo(string OrderNo, string partNo) + { + Plan247DAL da = new Plan247DAL(); + try + { + return da.SearhCountByOrderNo(OrderNo, partNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool UpdateCount(string partNo, string orderNo) + { + Plan247DAL da = new Plan247DAL(); + try + { + return da.UpdateCount(partNo, orderNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchPlanIDByOrderNo(string partNo, string orderNo) + { + Plan247DAL da = new Plan247DAL(); + try + { + return da.SearchPlanIDByOrderNo(partNo, orderNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/RecordBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/RecordBLL.cs new file mode 100644 index 0000000..12160f7 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Mistake247/RecordBLL.cs @@ -0,0 +1,171 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.Mistake247; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.Mistake247 +{ + public class RecordBLL + { + public DataTable SearchByPartNo1(string PartNo) + { + RecordDAL da = new RecordDAL(); + try + { + return da.SearchByPartNo1(PartNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchCountByBox(string boxNo) + { + RecordDAL da = new RecordDAL(); + try + { + return da.SearchCountByBox(boxNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool AddInfo(RecordModel md) + { + RecordDAL da = new RecordDAL(); + try + { + return da.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool updateBoxInfo(RecordModel md) + { + RecordDAL da = new RecordDAL(); + try + { + return da.updateBoxInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchState(int type1,int type2,int type3) + { + RecordDAL da = new RecordDAL(); + try + { + return da.SearchState(type1,type2,type3); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool DelInfo(RecordModel md) + { + RecordDAL da = new RecordDAL(); + try + { + return da.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchBoxByPart(string part) + { + RecordDAL da = new RecordDAL(); + try + { + return da.SearchBoxByPart(part); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchByPartNo2(string partno) + { + RecordDAL da = new RecordDAL(); + try + { + return da.SearchByPartNo2(partno); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable GetCount(string part,string batch) + { + RecordDAL da = new RecordDAL(); + try + { + return da.GetCount(part,batch); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + + public DataTable GetRecord(string boxNo) + { + RecordDAL da = new RecordDAL(); + try + { + return da.GetRecord(boxNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable GetOrderNum(string orderno) + { + RecordDAL da = new RecordDAL(); + try + { + return da.GetOrderNum(orderno); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Painting/InspectResultBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Painting/InspectResultBLL.cs new file mode 100644 index 0000000..6876050 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Painting/InspectResultBLL.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.painting; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.Painting +{ + public class InspectResultBLL + { + public bool AddInfo(InspectResultModel md) + { + InspectResultDAL da = new InspectResultDAL(); + try + { + return da.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Painting/PaintBarCodeBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Painting/PaintBarCodeBLL.cs new file mode 100644 index 0000000..d2e9518 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Painting/PaintBarCodeBLL.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.painting; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.Painting +{ + public class PaintBarCodeBLL + { + public DataTable SearchAll(string banci,string productdate) + { + PaintBarCodeDAL da=new PaintBarCodeDAL(); + try + { + return da.SearchInfoAll(banci, productdate); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchBarCode(string banci, string productdate, string ProductID) + { + PaintBarCodeDAL da = new PaintBarCodeDAL(); + try + { + return da.SearchBarCode(banci, productdate, ProductID); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool AddInfo(PaintBarCodeModel md) + { + PaintBarCodeDAL da = new PaintBarCodeDAL(); + try + { + return da.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdatePrintTime(PaintBarCodeModel md) + { + PaintBarCodeDAL da = new PaintBarCodeDAL(); + try + { + return da.UpdatePrintTime(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Painting/StockInBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Painting/StockInBLL.cs new file mode 100644 index 0000000..efb13e0 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Painting/StockInBLL.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.BasicInfo; +using MESClassLibrary.DAL.painting; + +namespace MESClassLibrary.BLL.Painting +{ + public class StockInBLL + { + public DataTable SearchInfoA() + { + StockInDAL da = new StockInDAL(); + try + { + return da.SearchInfoA(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoB() + { + StockInDAL da = new StockInDAL(); + try + { + return da.SearchInfoB(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoBByA() + { + StockInDAL da = new StockInDAL(); + try + { + return da.SearchInfoBByA(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoAByB() + { + StockInDAL da = new StockInDAL(); + try + { + return da.SearchInfoAByB(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchDetailA() + { + StockInDAL da = new StockInDAL(); + try + { + return da.SearchDetailA(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchDetailB() + { + StockInDAL da = new StockInDAL(); + try + { + return da.SearchDetailB(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchColor(string barCode) + { + StockInDAL da = new StockInDAL(); + try + { + return da.SearchColor(barCode); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Plan247/Plan247BLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Plan247/Plan247BLL.cs new file mode 100644 index 0000000..ed46b0c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Plan247/Plan247BLL.cs @@ -0,0 +1,399 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace MESClassLibrary.BLL.Plan247 +{ + public class Plan247BLL + { + BBMPTEntities ef = new BBMPTEntities(); + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_Plan_247 md) + { + try + { + var list = ef.tb_Plan_247.Where(p => p.OrderNo == md.OrderNo).ToList(); + if (list != null && list.Count > 0) + { + return false; + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + public bool UpdateAddInfo(tb_Plan_247 md) + { + try + { + var list = ef.tb_Plan_247.Where(p => p.OrderNo==md.OrderNo && p.PartNo == md.PartNo).ToList(); + if (list != null && list.Count > 0) + { + return false; + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + + + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_Plan_247 md) + { + try + { + + //初始化要更新的字段 + string[] proNames = new string[1]; + proNames[0] = "OrderCount"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_Plan_247 md) + { + try + { + if (ef.tb_Plan_247.Where(p => p.ID == md.ID && p.CompleteCount > 0).Count() > 0) + { + return false; + } + return db.DelInfo(md); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string StartTime, string EndTime, string OrderNo) + { + try + { + + string jsonStr = "[]"; + int total = 0;//总行数 + + DateTime stime = Convert.ToDateTime(StartTime + " 00:00:00"); + DateTime etime = Convert.ToDateTime(EndTime + " 23:59:59"); + + List list = ef.tb_Plan_247.Where(p => p.CreateTime >= stime && p.CreateTime <= etime).OrderBy(p => p.CreateTime).ToList(); + + if (!String.IsNullOrEmpty(OrderNo)) + { + list = list.Where(p => p.OrderNo.Contains(OrderNo)).OrderBy(p => p.CreateTime).ToList(); + } + + + if (list.Count > 0) + { + + total = list.Count; + + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + List modelList = new List(); + + #region 联查 + + var listModel = ef.tb_Mistake_247.ToList(); + + foreach (var item in list) + { + tb_Plan_247Model dm = Tool.Mapper(item); + + var machine_info = listModel.FirstOrDefault(p => p.PartNo2 == item.PartNo); + if (machine_info != null) + { + dm.PartName = machine_info.PartName2; + } + + modelList.Add(dm); + } + #endregion + + + + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = modelList; + jsonStr = JSONTools.ScriptSerialize(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public string SearchOrderNo(string StartTime) + { + try + { + + string jsonStr = ""; + string orderNo = Convert.ToDateTime(StartTime).ToString("yyyyMMdd"); + var info = ef.tb_Plan_247.Where(p => p.OrderNo.Contains(orderNo)).OrderByDescending(p => p.OrderNo).FirstOrDefault(); + + if (info != null) + { + return (Convert.ToInt64(info.OrderNo) + 1).ToString(); + } + else + { + return orderNo + "0001"; + } + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + } + + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = ef.tb_Mistake_247.ToList();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + } + + public string GetMistake(string id) + { + try + { + string jsonStr = "[]"; + var list = ef.tb_Mistake_247.Where(p => p.ID.Equals(id)).FirstOrDefault();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize(list); + return jsonStr; + } + catch (Exception) + { + return null; + } + } + + public string QueryForComboboxOrderNo(string StartTime) + { + try + { + string jsonStr = "[]"; + List list = new List(); + string orderNo = Convert.ToDateTime(StartTime).ToString("yyyyMMdd"); + var info = ef.tb_Plan_247.Where(p => p.OrderNo.Contains(orderNo)).GroupBy(p => p.OrderNo).Select(p => p.Key).ToList();//判断是否有重复数据 + foreach (var item in info) + { + SelectModel md = new SelectModel(); + md.textField = item; + md.valueField = item; + list.Add(md); + } + jsonStr = JSONTools.ScriptSerialize(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + } + + public string QueryForItem(string OrderNo) + { + try + { + var info = ef.tb_Plan_247.Where(p => p.OrderNo.Equals(OrderNo)).OrderByDescending(p => p.Item).FirstOrDefault();//判断是否有重复数据 + return (info.Item + 1).ToString(); + } + catch (Exception) + { + return ""; + } + } + + //校验是否生成计划单号日期部分+零件号有相同的计划 + public bool QueryByOrderNo(string OrderNo, string PartNo) + { + try + { + var info = ef.tb_Plan_247.Where(p => p.OrderNo.Contains(OrderNo) && p.PartNo.Equals(PartNo)); + if (info.Count() > 0) + { + return true; + } + return false; + } + catch (Exception) + { + return false; + } + } + + //校验是否同一个生成计划单号下有相同序号的计划 + public bool QueryByOrderNoAndItem(string OrderNo, int Item) + { + try + { + var info = ef.tb_Plan_247.Where(p => p.OrderNo.Equals(OrderNo) && p.Item == Item); + if (info.Count() > 0) + { + return true; + } + return false; + } + catch (Exception) + { + return false; + } + } + + + public List> SearchForExcel(string StartTime, string EndTime, string OrderNo) + { + try + { + List> list = new List>(); + + DateTime stime = Convert.ToDateTime(StartTime + " 00:00:00"); + DateTime etime = Convert.ToDateTime(EndTime + " 23:59:59"); + + + List titleList = new List(); + titleList.Add("生产计划单号"); + titleList.Add("序号"); + titleList.Add("零件号"); + titleList.Add("零件名称"); + titleList.Add("数量"); + titleList.Add("领用数量"); + titleList.Add("完成数量"); + titleList.Add("返修数量"); + titleList.Add("成品报废"); + titleList.Add("半成品报废"); + titleList.Add("备注"); + titleList.Add("创建时间"); + list.Add(titleList); + + List Plan_247_list = ef.tb_Plan_247.Where(p => p.CreateTime >= stime && p.CreateTime <= etime).OrderBy(p => p.CreateTime).ToList(); + + if (!String.IsNullOrEmpty(OrderNo)) + { + Plan_247_list = Plan_247_list.Where(p => p.OrderNo.Contains(OrderNo)).OrderBy(p => p.CreateTime).ToList(); + } + + if (Plan_247_list.Count > 0) + { + List modelList = new List(); + var listModel = ef.tb_Mistake_247.ToList(); + + foreach (var item in Plan_247_list) + { + tb_Plan_247Model dm = Tool.Mapper(item); + + var machine_info = listModel.FirstOrDefault(p => p.PartNo2 == item.PartNo); + if (machine_info != null) + { + dm.PartName = machine_info.PartName2; + } + + modelList.Add(dm); + } + + for (int i = 0; i < modelList.Count; i++) + { + List rowList = new List(); + rowList.Add(modelList[i].OrderNo); + rowList.Add(modelList[i].Item == null ? "" : modelList[i].Item.ToString()); + rowList.Add(modelList[i].PartNo); + rowList.Add(modelList[i].PartName == null ? "" : modelList[i].PartName.ToString()); + rowList.Add(modelList[i].OrderCount == null ? "" : modelList[i].OrderCount.ToString()); + rowList.Add(modelList[i].LyCount == null ? "" : modelList[i].LyCount.ToString()); + rowList.Add(modelList[i].CompleteCount == null ? "" : modelList[i].CompleteCount.ToString()); + rowList.Add(modelList[i].RepairCount == null ? "" : modelList[i].RepairCount.ToString()); + rowList.Add(modelList[i].ScrapCount1 == null ? "" : modelList[i].ScrapCount1.ToString()); + rowList.Add(modelList[i].ScrapCount2 == null ? "" : modelList[i].ScrapCount2.ToString()); + rowList.Add(modelList[i].Des); + rowList.Add(modelList[i].CreateTime == null ? "" : modelList[i].CreateTime.ToString()); + list.Add(rowList); + } + } + + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PlanPunchBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PlanPunchBLL.cs new file mode 100644 index 0000000..366f7b5 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PlanPunchBLL.cs @@ -0,0 +1,451 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.PunchAndWeld +{ + public class PlanPunchBLL + { + BBMPTEntities ef = new BBMPTEntities(); + BasicBLL db = new BasicBLL(); + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string StartTime, string EndTime, string OrderNo) + { + try + { + + string jsonStr = "[]"; + int total = 0;//总行数 + + DateTime stime = Convert.ToDateTime(StartTime + " 00:00:00"); + DateTime etime = Convert.ToDateTime(EndTime + " 23:59:59"); + + List list = ef.tb_Plan_Punch.Where(p => p.CreateTime >= stime && p.CreateTime <= etime).OrderBy(p => p.CreateTime).ToList(); + + if (!String.IsNullOrEmpty(OrderNo)) + { + list = list.Where(p => p.OrderNo.Contains(OrderNo)).OrderBy(p => p.CreateTime).ToList(); + } + + + if (list.Count > 0) + { + + total = list.Count; + + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + List modelList = new List(); + + #region 联查 + + var listModel = ef.tb_Product.ToList(); + + foreach (var item in list) + { + tb_Plan_PunchModel dm = Tool.Mapper(item); + + var machine_info = listModel.FirstOrDefault(p => p.PartNo == item.PartNo); + if (machine_info != null) + { + dm.PartName = machine_info.ProductName; + } + + modelList.Add(dm); + } + #endregion + + + + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = modelList; + jsonStr = JSONTools.ScriptSerialize(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_Plan_Punch md) + { + try + { + var list = ef.tb_Plan_Punch.Where(p => p.OrderNo == md.OrderNo && p.Item==md.Item && p.PartNo==md.PartNo).ToList(); + if (list != null && list.Count > 0) + { + return false; + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + public bool UpdateAddInfo(tb_Plan_Punch md) + { + try + { + var list = ef.tb_Plan_Punch.Where(p => p.OrderNo == md.OrderNo && p.PartNo == md.PartNo).ToList(); + if (list != null && list.Count > 0) + { + return false; + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_Plan_Punch md) + { + try + { + + //初始化要更新的字段 + string[] proNames = new string[1]; + proNames[0] = "OrderCount"; + + string sql = "select * from tb_Plan_Punch where OrderNo='" + md.OrderNo + "' and PartNo='"+ md.PartNo+"'"; + SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.GetConnSting(), CommandType.Text, sql); + if (dr.Read()) + { + if (md.OrderCount < Convert.ToInt32(dr["CompleteCount"])) + { + return false; + } + else + { + return db.UpdateInfo(md, proNames); + } + } + else + { + return false; + } + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + public string SearchOrderNo(string StartTime, string Banci) + { + try + { + + string jsonStr = ""; + string orderNo = Convert.ToDateTime(StartTime).ToString("yyyyMMdd"); + + var info = ef.tb_Plan_Punch.Where(p => p.OrderNo.Contains(Banci.Substring(0, 1) + orderNo)).OrderByDescending(p => p.OrderNo).FirstOrDefault(); + + if (info != null) + { + return info.OrderNo.Substring(0, info.OrderNo.Length - 4) + (Convert.ToInt32(info.OrderNo.Substring(info.OrderNo.Length - 1, 1)) + 1).ToString() + .PadLeft(4, '0'); + //if (Banci.Contains("A")) + //{ + // return "A" + (Convert.ToInt64(info.OrderNo.Substring(1, info.OrderNo.Length-1)) + 1).ToString(); + //} + //else + //{ + // return "B" + (Convert.ToInt64(info.OrderNo.Substring(1, info.OrderNo.Length - 1)) + 1).ToString(); + //} + } + else + { + if (Banci.Contains("A")) + { + return "A" + orderNo + "0001"; + } + else + { + return "B" + orderNo + "0001"; + } + } + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + } + + public string GetComboboxData() + { + try + { + string jsonStr = "[]"; + var list = ef.tb_Product.Where(p => p.ProductTypeID == "3a8545ee-5979-4780-a5ca-6c5e75685ae2" || p.ProductTypeID == "69ec20f1-dab5-4caf-b81e-1c65b38b9e34").ToList();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + } + + public string GetMistake(string id) + { + try + { + string jsonStr = "[]"; + var list = ef.tb_Product.Where(p => p.PartNo.Equals(id)).FirstOrDefault();//判断是否有重复数据 + jsonStr = JSONTools.ScriptSerialize(list); + return jsonStr; + } + catch (Exception) + { + return null; + } + } + + public string QueryForComboboxOrderNo(string StartTime) + { + try + { + string jsonStr = "[]"; + List list = new List(); + string orderNo = Convert.ToDateTime(StartTime).ToString("yyyyMMdd"); + var info = ef.tb_Plan_Punch.Where(p => p.OrderNo.Contains(orderNo)).GroupBy(p => p.OrderNo).Select(p => p.Key).ToList();//判断是否有重复数据 + foreach (var item in info) + { + SelectModel md = new SelectModel(); + md.textField = item; + md.valueField = item; + list.Add(md); + } + jsonStr = JSONTools.ScriptSerialize(list); + return jsonStr; + } + catch (Exception) + { + return ""; + } + } + + public string QueryForItem(string OrderNo) + { + try + { + var info = ef.tb_Plan_Punch.Where(p => p.OrderNo.Equals(OrderNo)).OrderByDescending(p => p.Item).FirstOrDefault();//判断是否有重复数据 + return (info.Item + 1).ToString(); + } + catch (Exception) + { + return ""; + } + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_Plan_Punch md) + { + try + { + if (ef.tb_Plan_Punch.Where(p => p.ID == md.ID && p.CompleteCount > 0).Count() > 0) + { + return false; + } + return db.DelInfo(md); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + public List> SearchForExcel(string StartTime, string EndTime, string OrderNo) + { + try + { + List> list = new List>(); + + DateTime stime = Convert.ToDateTime(StartTime + " 00:00:00"); + DateTime etime = Convert.ToDateTime(EndTime + " 23:59:59"); + + + List titleList = new List(); + titleList.Add("生产计划单号"); + titleList.Add("序号"); + titleList.Add("零件号"); + titleList.Add("零件名称"); + titleList.Add("数量"); + titleList.Add("领用数量"); + titleList.Add("完成数量"); + titleList.Add("不良数量"); + titleList.Add("备注"); + titleList.Add("创建时间"); + list.Add(titleList); + + List Plan_list = ef.tb_Plan_Punch.Where(p => p.CreateTime >= stime && p.CreateTime <= etime).OrderBy(p => p.CreateTime).ToList(); + + if (!String.IsNullOrEmpty(OrderNo)) + { + Plan_list = Plan_list.Where(p => p.OrderNo.Contains(OrderNo)).OrderBy(p => p.CreateTime).ToList(); + } + + if (Plan_list.Count > 0) + { + List modelList = new List(); + var listModel = ef.tb_Product.ToList(); + + foreach (var item in Plan_list) + { + tb_Plan_PunchModel dm = Tool.Mapper(item); + + var machine_info = listModel.FirstOrDefault(p => p.PartNo == item.PartNo); + if (machine_info != null) + { + dm.PartName = machine_info.ProductName; + } + + modelList.Add(dm); + } + + for (int i = 0; i < modelList.Count; i++) + { + List rowList = new List(); + rowList.Add(modelList[i].OrderNo); + rowList.Add(modelList[i].Item == null ? "" : modelList[i].Item.ToString()); + rowList.Add(modelList[i].PartNo); + rowList.Add(modelList[i].PartName == null ? "" : modelList[i].PartName.ToString()); + rowList.Add(modelList[i].OrderCount == null ? "" : modelList[i].OrderCount.ToString()); + rowList.Add(modelList[i].LyCount == null ? "" : modelList[i].LyCount.ToString()); + rowList.Add(modelList[i].CompleteCount == null ? "" : modelList[i].CompleteCount.ToString()); + rowList.Add(modelList[i].BadCount == null ? "" : modelList[i].BadCount.ToString()); + rowList.Add(modelList[i].Des); + rowList.Add(modelList[i].CreateTime == null ? "" : modelList[i].CreateTime.ToString()); + list.Add(rowList); + } + } + + return list; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + + //校验是否生成计划单号日期部分+零件号有相同的计划 + public bool QueryByOrderNo(string OrderNo, string PartNo) + { + try + { + var info = ef.tb_Plan_Punch.Where(p => p.OrderNo.Contains(OrderNo) && p.PartNo.Equals(PartNo)); + if (info.Count() > 0) + { + return true; + } + return false; + } + catch (Exception) + { + return false; + } + } + + //校验是否同一个生成计划单号下有相同序号的计划 + public bool QueryByOrderNoAndItem(string OrderNo, int Item) + { + try + { + var info = ef.tb_Plan_Punch.Where(p => p.OrderNo.Equals(OrderNo) && p.Item == Item); + if (info.Count() > 0) + { + return true; + } + return false; + } + catch (Exception) + { + return false; + } + } + + public string GetOrderNo(string banci,string date) + { + try + { + //string order = banci + DateTime.Now.ToString("yyyyMMdd"); + string order = banci + date; + var info = ef.tb_Plan_Punch.Where(p => p.OrderNo.Contains(order)).OrderBy(p => p.CreateTime) + .FirstOrDefault(); + if (info != null) + { + return order + (Convert.ToInt32(info.OrderNo.Substring(info.OrderNo.Length - 4, 4)) + 1).ToString() + .PadLeft(4, '0'); + } + else + { + return order + "0001"; + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return banci + date +"0001"; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchAdressBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchAdressBLL.cs new file mode 100644 index 0000000..7f2000f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchAdressBLL.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.PunchAndWeld; + +namespace MESClassLibrary.BLL.PunchAndWeld +{ + public class PunchAdressBLL + { + PunchAdressDAL da=new PunchAdressDAL(); + + public DataTable SearchInfo(string deviceNo,int i) + { + try + { + return da.SearchInfo(deviceNo,i); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchAndStationBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchAndStationBLL.cs new file mode 100644 index 0000000..357ad19 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchAndStationBLL.cs @@ -0,0 +1,182 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL; +using MESClassLibrary.DAL.PunchAndWeld; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.PunchAndWeld +{ + public class PunchAndStationBLL + { + BasicBLL db = new BasicBLL(); + + public bool AddInfo(tb_PunchAndStation md) + { + try + { + BBMPTEntities ef = new BBMPTEntities(); + List list1 = ef.tb_PunchAndStation.Where(p => + p.StationID == md.StationID && p.ProductID1 == md.ProductID1 && p.ProductID2 == md.ProductID2) + .ToList(); + + if (list1 != null) + { + if (list1.Count() > 0) + { + return false; + } + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + public string SearchInfoAll(string page, string pagesize, string partNo1) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + List list = new List(); + + string sql = @"SELECT dbo.tb_PunchAndStation.ID, dbo.tb_Station.StationNo, tb_Product_1.PartNo AS PartNo1, + tb_Product_1.ProductName AS ProductName1, tb_Product_2.PartNo AS PartNo2, + tb_Product_2.ProductName AS ProductName2, tb_Product_3.PartNo AS PartNo3, + tb_Product_3.ProductName AS ProductName3, tb_Product_4.PartNo AS PartNo4, + tb_Product_4.ProductName AS ProductName4, dbo.tb_Product.PartNo AS PartNo5, + dbo.tb_Product.ProductName AS ProductName5 + FROM dbo.tb_Product AS tb_Product_3 RIGHT OUTER JOIN + dbo.tb_PunchAndStation LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_PunchAndStation.ProductID5 = dbo.tb_Product.ProductID LEFT OUTER JOIN + dbo.tb_Product AS tb_Product_4 ON dbo.tb_PunchAndStation.ProductID4 = tb_Product_4.ProductID ON + tb_Product_3.ProductID = dbo.tb_PunchAndStation.ProductID3 LEFT OUTER JOIN + dbo.tb_Product AS tb_Product_2 ON dbo.tb_PunchAndStation.ProductID2 = tb_Product_2.ProductID LEFT OUTER JOIN + dbo.tb_Station ON dbo.tb_PunchAndStation.StationID = dbo.tb_Station.StationID LEFT OUTER JOIN + dbo.tb_Product AS tb_Product_1 ON dbo.tb_PunchAndStation.ProductID1 = tb_Product_1.ProductID where 1=1"; + + if (!string.IsNullOrWhiteSpace(partNo1)) + { + sql += " And tb_Product_1.PartNo like '%" + partNo1 + "%' "; + } + + DataTable dt = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql).Tables[0]; + if (dt != null && dt.Rows.Count > 0) + { + list = Tool.ConvertTo(dt).ToList(); + } + + if (list.Count > 0) + { + total = list.Count; + + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + jsonStr = JSONTools.ScriptSerialize>(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public bool UpdateInfo(tb_PunchAndStation md) + { + try + { + List list = new List(); + + string sql = @"SELECT dbo.tb_PunchAndStation.ID, dbo.tb_Station.StationNo, tb_Product_1.PartNo AS PartNo1, + tb_Product_1.ProductName AS ProductName1, tb_Product_2.PartNo AS PartNo2, + tb_Product_2.ProductName AS ProductName2, tb_Product_3.PartNo AS PartNo3, + tb_Product_3.ProductName AS ProductName3, tb_Product_4.PartNo AS PartNo4, + tb_Product_4.ProductName AS ProductName4, dbo.tb_Product.PartNo AS PartNo5, + dbo.tb_Product.ProductName AS ProductName5,dbo.tb_PunchAndStation.ProductID1, + dbo.tb_PunchAndStation.ProductID2,dbo.tb_PunchAndStation.ProductID3, + dbo.tb_PunchAndStation.ProductID4,dbo.tb_PunchAndStation.ProductID5 + FROM dbo.tb_Product AS tb_Product_3 RIGHT OUTER JOIN + dbo.tb_PunchAndStation LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_PunchAndStation.ProductID5 = dbo.tb_Product.ProductID LEFT OUTER JOIN + dbo.tb_Product AS tb_Product_4 ON dbo.tb_PunchAndStation.ProductID4 = tb_Product_4.ProductID ON + tb_Product_3.ProductID = dbo.tb_PunchAndStation.ProductID3 LEFT OUTER JOIN + dbo.tb_Product AS tb_Product_2 ON dbo.tb_PunchAndStation.ProductID2 = tb_Product_2.ProductID LEFT OUTER JOIN + dbo.tb_Station ON dbo.tb_PunchAndStation.StationID = dbo.tb_Station.StationID LEFT OUTER JOIN + dbo.tb_Product AS tb_Product_1 ON dbo.tb_PunchAndStation.ProductID1 = tb_Product_1.ProductID where 1=1 and + ProductID1='"+md.ProductID1+"' and ProductID2='"+md.ProductID2+"' and ProductID3='"+md.ProductID3+"' and ProductID4='"+md.ProductID4 +"' and ProductID5='"+md.ProductID5+"' and ID <> '"+ md.ID+"' "; + + DataTable dt = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql).Tables[0]; + if (dt != null && dt.Rows.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[6]; + proNames[0] = "StationID"; + proNames[1] = "ProductID1"; + proNames[2] = "ProductID2"; + proNames[3] = "ProductID3"; + proNames[4] = "ProductID4"; + proNames[5] = "ProductID5"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + public bool DeleteInfo(tb_PunchAndStation md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + public DataTable IsMath(string partNo1, string partNo2) + { + try + { + PunchAndStationDAL da=new PunchAndStationDAL(); + return da.IsMath(partNo1, partNo2); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchDeviceBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchDeviceBLL.cs new file mode 100644 index 0000000..bd3efa8 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchDeviceBLL.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.PunchAndWeld; + +namespace MESClassLibrary.BLL.PunchAndWeld +{ + public class PunchDeviceBLL + { + PunchDeviceDAL da=new PunchDeviceDAL(); + + public DataTable SearchInfo() + { + try + { + return da.SearchInfo(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchDeviceNo(string deviceName) + { + try + { + return da.SearchDeviceNo(deviceName); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchPartBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchPartBLL.cs new file mode 100644 index 0000000..a1312a4 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchPartBLL.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.PunchAndWeld; + +namespace MESClassLibrary.BLL.PunchAndWeld +{ + public class PunchPartBLL + { + PunchPartDAL da=new PunchPartDAL(); + + public DataTable SearchPunchPart(string deviceNo) + { + try + { + return da.SearchPunchPart(deviceNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchPlanBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchPlanBLL.cs new file mode 100644 index 0000000..8a12c68 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchPlanBLL.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.PunchAndWeld +{ + public class PunchPlanBLL + { + PunchPlanDAL da=new PunchPlanDAL(); + + public DataTable SearchPlan(string deviceNo) + { + try + { + return da.SearchPlan(deviceNo); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchAllPlan() + { + try + { + return da.SearchAllPlan(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool AddInfo(PunchPlanModel md) + { + try + { + return da.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdateInfo(PunchPlanModel md) + { + try + { + return da.UpdateInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool DelInfo(PunchPlanModel md) + { + try + { + return da.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdateDty(PunchPlanModel md) + { + try + { + return da.UpdateDty(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchRecordBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchRecordBLL.cs new file mode 100644 index 0000000..9d029ff --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchRecordBLL.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.PunchAndWeld; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.PunchAndWeld +{ + public class PunchRecordBLL + { + PunchRecordDAL da=new PunchRecordDAL(); + + public bool AddInfo(PunchRecordModel md) + { + try + { + return da.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchInfo(string barCode) + { + try + { + return da.SearchInfo(barCode); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchValueRecordBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchValueRecordBLL.cs new file mode 100644 index 0000000..43260d6 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/PunchAndWeld/PunchValueRecordBLL.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.PunchAndWeld; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.PunchAndWeld +{ + public class PunchValueRecordBLL + { + PunchValueRecordDAL da = new PunchValueRecordDAL(); + + public bool AddInfo(PunchValueRecordModel md) + { + try + { + return da.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Record247/Record247BLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Record247/Record247BLL.cs new file mode 100644 index 0000000..f866a15 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Record247/Record247BLL.cs @@ -0,0 +1,81 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace MESClassLibrary.BLL.Record247 +{ + public class Record247BLL + { + BBMPTEntities ef = new BBMPTEntities(); + BasicBLL db = new BasicBLL(); + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize, string StartTime, string EndTime, string BoxNo, string PartNo2, string PartNo1, string OrderNo) + { + try + { + + string jsonStr = "[]"; + int total = 0;//总行数 + + DateTime stime = Convert.ToDateTime(StartTime + " 00:00:00"); + DateTime etime = Convert.ToDateTime(EndTime + " 23:59:59"); + + List list = ef.tb_Record_247.Where(p => p.CreateTime1 >= stime && p.CreateTime1 <= etime && p.Flag == 1).ToList(); + + if (!String.IsNullOrEmpty(BoxNo)) + { + list = list.Where(p => p.BoxNo != null && p.BoxNo.Contains(BoxNo)).ToList(); + } + + if (!String.IsNullOrEmpty(PartNo2)) + { + list = list.Where(p => p.PartNo2 != null && p.PartNo2.Contains(PartNo2)).ToList(); + } + + if (!String.IsNullOrEmpty(PartNo1)) + { + list = list.Where(p => p.PartNo1 != null && p.PartNo1.Contains(PartNo1)).ToList(); + } + + if (!String.IsNullOrEmpty(OrderNo)) + { + list = list.Where(p => p.OrderNo != null && p.OrderNo.Contains(OrderNo)).ToList(); + } + + + if (list.Count > 0) + { + + total = list.Count; + + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.OrderBy(p => p.CreateTime1).Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + jsonStr = JSONTools.ScriptSerialize(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Report/FiveScreenBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Report/FiveScreenBLL.cs new file mode 100644 index 0000000..6736c2a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Report/FiveScreenBLL.cs @@ -0,0 +1,190 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.Report +{ + public class FiveScreenBLL + { + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_Report_FiveScreen md) + { + try + { + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_Report_FiveScreen md) + { + try + { + //初始化要更新的字段 + string[] proNames = new string[45]; + proNames[0] = "Name"; + proNames[1] = "LastYear"; + proNames[2] = "Jan"; + proNames[3] = "Feb"; + proNames[4] = "Mar"; + proNames[5] = "Apr"; + proNames[6] = "May"; + proNames[7] = "Jun"; + proNames[8] = "Jul"; + proNames[9] = "Aug"; + proNames[10] = "Sept"; + proNames[11] = "Oct"; + proNames[12] = "Nov"; + proNames[13] = "Dec"; + proNames[14] = "day1"; + proNames[15] = "day2"; + proNames[16] = "day3"; + proNames[17] = "day4"; + proNames[18] = "day5"; + proNames[19] = "day6"; + proNames[20] = "day7"; + proNames[21] = "day8"; + proNames[22] = "day9"; + proNames[23] = "day10"; + proNames[24] = "day11"; + proNames[25] = "day12"; + proNames[26] = "day13"; + proNames[27] = "day14"; + proNames[28] = "day15"; + proNames[29] = "day16"; + proNames[30] = "day17"; + proNames[31] = "day18"; + proNames[32] = "day19"; + proNames[33] = "day20"; + proNames[34] = "day21"; + proNames[35] = "day22"; + proNames[36] = "day23"; + proNames[37] = "day24"; + proNames[38] = "day25"; + proNames[39] = "day26"; + proNames[40] = "day27"; + proNames[41] = "day28"; + proNames[42] = "day29"; + proNames[43] = "day30"; + proNames[44] = "day31"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_Report_FiveScreen md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + + List list = db.SearchAllInfo(); + + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + return JSONTools.ScriptSerialize(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_Report_FiveScreen SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + public tb_Report_FiveScreen SearchInfoByNameLast(string name) { + + var info = db.SearchInfoByKey("Name", name).OrderByDescending(p=>p.CreateTime).FirstOrDefault();//判断是否有重复数据 + if (info != null) + { + return info; + } + + return null; + + } + + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Report/FiveScreenLastBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Report/FiveScreenLastBLL.cs new file mode 100644 index 0000000..e683e8d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Report/FiveScreenLastBLL.cs @@ -0,0 +1,153 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.Report +{ + public class FiveScreenLastBLL + { + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_Report_FiveScreenLast md) + { + try + { + var list = db.SearchInfoByKey("StationID", md.StationID);//判断是否有重复数据 + if (list != null) + { + if (list.Where(p => p.ID != md.ID).Count() > 0) + { + return false; + } + + } + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_Report_FiveScreenLast md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.StationID == md.StationID && p.ID != md.ID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[5]; + proNames[0] = "StationID"; + proNames[1] = "StationNo"; + proNames[2] = "UseRate"; + proNames[3] = "PassRate"; + proNames[4] = "Remark1"; + + + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_Report_FiveScreenLast md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + + List list = db.SearchAllInfo(); + + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + return JSONTools.ScriptSerialize(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_Report_FiveScreenLast SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Report/FiveScreenStandardBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Report/FiveScreenStandardBLL.cs new file mode 100644 index 0000000..694f068 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Report/FiveScreenStandardBLL.cs @@ -0,0 +1,161 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.Report +{ + + public class FiveScreenStandardBLL + { + BasicBLL db = new BasicBLL(); + + /// + /// 新增信息 + /// + /// + /// + public bool AddInfo(tb_Report_FiveScreenStandard md) + { + try + { + //var list = db.SearchInfoByKey("Name", md.Name);//判断是否有重复数据 + //if (list != null) + //{ + // if (list.Where(p => p.ID != md.ID).Count() > 0) + // { + // return false; + // } + + //} + + return db.AddInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改信息 + /// + /// + /// + public bool UpdateInfo(tb_Report_FiveScreenStandard md) + { + try + { + var list = db.SearchAllInfo().Where(p => p.Name == md.Name && p.ID != md.ID).ToList();//判断是否有重复数据 + if (list.Count > 0) + { + return false; + } + + //初始化要更新的字段 + string[] proNames = new string[14]; + proNames[0] = "Name"; + proNames[1] = "LastYear"; + proNames[2] = "Jan"; + proNames[3] = "Feb"; + proNames[4] = "Mar"; + proNames[5] = "Apr"; + proNames[6] = "May"; + proNames[7] = "Jun"; + proNames[8] = "Jul"; + proNames[9] = "Aug"; + proNames[10] = "Sept"; + proNames[11] = "Oct"; + proNames[12] = "Nov"; + proNames[13] = "Dec"; + + //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化 + //如果没有初始化必填字段,更新会报错 + //md.Des = ""; + + return db.UpdateInfo(md, proNames); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 删除信息 + /// + /// + /// + /// + public bool DeleteInfo(tb_Report_FiveScreenStandard md) + { + try + { + return db.DelInfo(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 查询全部信息分页 + /// + /// + public string SearchInfoAll(string page, string pagesize) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + + List list = db.SearchAllInfo(); + + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = list; + return JSONTools.ScriptSerialize(md); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 根据ID查询信息 + /// + /// + /// + public tb_Report_FiveScreenStandard SearchInfoByID(string id) + { + try + { + return db.SearchInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Show/AnalysisBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Show/AnalysisBLL.cs new file mode 100644 index 0000000..ed09d63 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Show/AnalysisBLL.cs @@ -0,0 +1,57 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.Show +{ + public class AnalysisBLL + { + BBMPTEntities dbe = new BBMPTEntities(); + BasicBLL db = new BasicBLL(); + + public List SearchInfo(string ProductName) + { + List list = new List(); + try + { + + DateTime date = DateTime.Now; + //DateTime date = Convert.ToDateTime("2019-07-08 10:00:00"); + string nowTime = date.ToString("yyyy-MM-dd"); + DateTime startTime = Convert.ToDateTime(nowTime + " 08:00:00");//班次开始时间 + DateTime endTime = Convert.ToDateTime(nowTime + " 19:59:59");//班次结束时间 + + var info = dbe.tb_InspectResult.Where(p => p.productInfo.Contains(ProductName)); + if (DateTime.Compare(date, startTime) < 0) + { + //昨天夜班 + list = info.Where(p => p.createTime > endTime.AddDays(-1) && p.createTime < startTime).ToList(); + } + + if (DateTime.Compare(date, endTime) > 0) + { + //今天夜班 + list = info.Where(p => p.createTime > endTime && p.createTime <= date).ToList(); + } + + if (DateTime.Compare(date, startTime) >= 0 && DateTime.Compare(date, endTime) <= 0) + { + //今天白班 + list = info.Where(p => p.createTime >= startTime && p.createTime <= endTime).ToList(); + } + + return list; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return list; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/Stock/StockInBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/Stock/StockInBLL.cs new file mode 100644 index 0000000..5d5d197 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/Stock/StockInBLL.cs @@ -0,0 +1,156 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.BLL.Stock +{ + public class StockInBLL + { + BBMPTEntities dbe = new BBMPTEntities(); + BasicBLL db = new BasicBLL(); + BasicBLL Resultdb = new BasicBLL(); + /// + /// 查询信息 + /// + /// + public string SearchInfo(string page, string pagesize, string StartTime, string EndTime, string workClass, string color, string productInfo) + { + try + { + string jsonStr = "[]"; + int total = 0;//总行数 + //List list = db.SearchAllInfo(); + + DateTime start = Convert.ToDateTime(StartTime); + DateTime end = Convert.ToDateTime(EndTime); + + List list = dbe.tb_StockIn.Where(p => p.createTime >= start && p.createTime <= end && "1".Equals(p.pass)).ToList(); + + //list = list.Where(p => p.createTime >= start && p.createTime <= end && "1".Equals(p.pass)).ToList(); + + List barcodeList = list.Select(m => m.barcode).ToList(); + + var resultList = dbe.tb_InspectResult.Where(p => barcodeList.Contains(p.barcode) && p.inspectResult.Contains("合格")).ToList(); + + + if (!String.IsNullOrEmpty(workClass)) + { + resultList = resultList.Where(p => p.workClass.Contains(workClass)).ToList(); + } + + if (!String.IsNullOrEmpty(color)) + { + resultList = resultList.Where(p => p.productInfo.Contains(color)).ToList(); + } + + if (!String.IsNullOrEmpty(productInfo)) + { + resultList = resultList.Where(p => p.productInfo.Contains(productInfo)).ToList(); + } + + list = list.Where(p => resultList.Select(m => m.barcode).ToList().Contains(p.barcode)).ToList(); + + if (list.Count > 0) + { + total = list.Count; + int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize); + list = list.OrderByDescending(p => p.createTime).Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList(); + List StockInList = new List(); + foreach (var item in list) + { + StockInModel dm = Tool.Mapper(item); + var info = resultList.FirstOrDefault(p => p.barcode == item.barcode); + if (info != null) + { + dm.workClass = info.workClass; + dm.productInfo = info.productInfo; + } + StockInList.Add(dm); + } + + JsonDataModel md = new JsonDataModel(); + md.total = total.ToString(); + md.rows = StockInList; + jsonStr = JSONTools.ScriptSerialize(md); + } + return jsonStr; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return ""; + } + + + } + + /// + /// 查询信息 + /// + /// + public List SearchInfoAll(string StartTime, string EndTime, string workClass, string color, string productInfo) + { + try + { + List list = db.SearchAllInfo(); + + DateTime start = Convert.ToDateTime(StartTime); + DateTime end = Convert.ToDateTime(EndTime); + + list = list.Where(p => p.createTime >= start && p.createTime <= end && "1".Equals(p.pass)).ToList(); + + List barcodeList = list.Select(m => m.barcode).ToList(); + + var resultList = dbe.tb_InspectResult.Where(p => barcodeList.Contains(p.barcode) && p.inspectResult.Contains("合格")).ToList(); + + + if (!String.IsNullOrEmpty(workClass)) + { + resultList = resultList.Where(p => p.workClass.Contains(workClass)).ToList(); + } + + if (!String.IsNullOrEmpty(color)) + { + resultList = resultList.Where(p => p.productInfo.Contains(color)).ToList(); + } + + if (!String.IsNullOrEmpty(productInfo)) + { + resultList = resultList.Where(p => p.productInfo.Contains(productInfo)).ToList(); + } + + list = list.Where(p => resultList.Select(m => m.barcode).ToList().Contains(p.barcode)).ToList(); + + List StockInList = new List(); + if (list.Count > 0) + { + foreach (var item in list) + { + StockInModel dm = Tool.Mapper(item); + var info = resultList.FirstOrDefault(p => p.barcode == item.barcode); + if (info != null) + { + dm.workClass = info.workClass; + dm.productInfo = info.productInfo; + } + StockInList.Add(dm); + } + } + return StockInList; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/User/Sys_ButtonsService.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/User/Sys_ButtonsService.cs new file mode 100644 index 0000000..9969e9b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/User/Sys_ButtonsService.cs @@ -0,0 +1,45 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.User; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace MESClassLibrary.BLL.User +{ + /// + /// 用户按钮 + /// lx 2017-06-28 + /// + public class Sys_ButtonsService + { + /// + /// 获取用户有权限的按钮 + /// + /// + /// + /// + public List GetUserButtons(string menuID, string userID) + { + try + { + List returnList = new List(); + Sys_ButtonsData dal = new Sys_ButtonsData(); + DataTable dt = new DataTable(); + + dt = dal.GetUserButtons(menuID, userID); + returnList = Tool.ConvertTo(dt).ToList(); + + return returnList; + } + catch(Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return new List(); + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/User/Sys_NavMenuService.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/User/Sys_NavMenuService.cs new file mode 100644 index 0000000..b803a90 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/User/Sys_NavMenuService.cs @@ -0,0 +1,83 @@ +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using MESClassLibrary.BLL.Log; +using System.Reflection; +using System.Data; +using MESClassLibrary.DAL.User; + +namespace MESClassLibrary.BLL.User +{ + public class Sys_NavMenuService + { + /// + /// 根据userID查询用户菜单 + /// + /// + /// + public List BuilderLeftMenu(string userID) + { + try + { + List returnList = new List(); + Sys_NavMenuData dal = new Sys_NavMenuData(); + DataTable dt = new DataTable(); + List navList = new List(); + + dt = dal.BuilderLeftMenu(userID); + navList = Tool.ConvertTo(dt).ToList(); + + foreach (Sys_NavMenuInfo item in navList) + { + Sys_NavMenuInfo menuItem = BuilderItem(item, navList); + if (menuItem != null) + returnList.Add(menuItem); + + } + return returnList; + } + catch(Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 生成菜单list + /// + /// + /// + /// + /// + public Sys_NavMenuInfo BuilderItem(Sys_NavMenuInfo item, List allItem) + { + Sys_NavMenuInfo returnItem = new Sys_NavMenuInfo(); + returnItem.ItemPic = item.ItemPic; + returnItem.MenuID = item.MenuID; + returnItem.MenuName = item.MenuName; + returnItem.OrderNum = item.OrderNum; + returnItem.ParentMenuID = item.ParentMenuID; + returnItem.PowerID = item.PowerID; + returnItem.URLStr = item.URLStr; + + List subItemList = new List(); + + StringBuilder sb = new StringBuilder(); + List subList = allItem.FindAll(p => p.ParentMenuID == item.MenuID); + if (subList.Count > 0) + { + foreach (Sys_NavMenuInfo subItem in subList.OrderBy(p => p.OrderNum)) + { + returnItem.SubNavMenuList.Add(subItem); + } + } + if (returnItem.SubNavMenuList.Count == 0) + return null; + else + return returnItem; + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/BLL/User/UserBLL.cs b/SjMes/PunchAssemble/MESClassLibrary/BLL/User/UserBLL.cs new file mode 100644 index 0000000..8f6a9f4 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/BLL/User/UserBLL.cs @@ -0,0 +1,304 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL.User; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace MESClassLibrary.BLL.User +{ + public class UserBLL + { + UserDAL db = new UserDAL(); + //用户登录 + public bool Login(UserModel md) + { + + try + { + + #region 入参校验 + if (string.IsNullOrWhiteSpace(md.Username) || string.IsNullOrWhiteSpace(md.Password)) + { + return false; + } + #endregion + + #region 登陆 + //DataTable dt = db.Search_UserInfoByUP(md.Username, Tool.MD5encryption(md.Password)); + DataTable dt = db.Search_UserInfoByUP(md.Username, md.Password); + if (dt != null && dt.Rows.Count > 0) + { + #region 记录用户登录日志-暂注销 + //md.ID = dt.Rows[0]["ID"].ToString(); + //md.TrueName = dt.Rows[0]["TrueName"].ToString(); + //md.FaceURL = dt.Rows[0]["FaceURL"].ToString(); + //md.RoleID = dt.Rows[0]["RoleID"].ToString(); + //md.RoleName = dt.Rows[0]["RoleName"].ToString(); + //md.RoleJurisdiction = dt.Rows[0]["RoleJurisdiction"].ToString(); + //md.CompanyPost = dt.Rows[0]["CompanyPost"].ToString(); + //md.ContactWay = dt.Rows[0]["ContactWay"].ToString(); + //md.CreateUserID = dt.Rows[0]["CreateUserID"].ToString(); + //md.IsUseing = (int)dt.Rows[0]["IsUseing"]; + //db.Add_UserLoginInfo(md.ID); + #endregion + return true; + } + else + { + return false; + } + + #endregion + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 新增用户信息 + /// + /// + /// + public bool AddUserInfo(UserModel md) + { + //try + //{ + // DataTable dt = db.Search_UserInfoByUserName(md.ID, md.Username); + // if (dt != null && dt.Rows.Count > 0) + // { + // return false; + // } + // md.Password = Tool.MD5encryption(md.Password); + // return db.Add_UserInfo(md); + //} + //catch (Exception ex) + //{ + // LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + // return false; + //} + + return false; + + } + /// + /// 修改用户信息 + /// + /// + /// + /// + public bool UpdateUserInfo(UserModel md, int flag) + { + try + { + //DataTable dt = db.Search_UserInfoByUserName(md.ID, md.Username); + //if (dt != null && dt.Rows.Count > 0) + //{ + // return false; + //} + + //if (flag == 1) + //{ + // md.Password = Tool.MD5encryption(md.Password); + //} + //return db.Update_UserInfo(md); + return false; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 修改用户密码 + /// + /// + /// + /// + /// + public bool UpdateUserPassword(string oldpassword, string newpassword, string id) + { + try + { + DataTable dt = db.Search_UserInfoByID_v2(id); + if (dt != null && dt.Rows.Count > 0) + { + if (dt.Rows[0]["Password"].ToString() == oldpassword) + { + return db.Update_Password(id, oldpassword, newpassword); + } + } + return false; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// + /// + /// + /// + /// + public bool DelUserInfoByID(string id, string userid) + { + try + { + return db.Del_Info(db.GetTableName(), id, userid); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + #region 查询用户信息 + /// + /// 查询全部用户信息 + /// + /// + public DataTable SearchUserInfo() + { + try + { + return db.Search_UserInfo(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + /// + /// 根据ID查询用户信息 + /// + /// + /// + public DataTable SearchUserInfoByID(string id) + { + try + { + return db.Search_UserInfoByID(id); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + /// + /// 根据登录账号查询用户信息 + /// + /// + /// + public DataTable SearchUserInfoByUserName(string username) + { + try + { + DataTable dt = db.Search_UserInfoByUserName(username); + if (dt != null && dt.Rows.Count > 0) + { + return dt; + } + return null; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 根据角色ID查询用户信息 + /// + /// 角色主键ID + /// + public DataTable SearchUserInfoByRoleID(string roleid) + { + try + { + DataTable dt = db.Search_UserInfoByRoleID(roleid); + if (dt != null && dt.Rows.Count > 0) + { + return dt; + } + return null; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + /// + /// 查询用户登录记录 + /// + /// + public DataTable SearchUserLoginInfo() + { + try + { + return db.Search_UserLoginInfo(); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + + public string GetComboboxData() + { + try + { + + string jsonStr = "[]"; + DataTable dt = db.Search_UserInfo(); + if (dt != null && dt.Rows.Count > 0) + { + List list = new List(); + for (int i = 0; i < dt.Rows.Count; i++) + { + T_Sys_Users md = new T_Sys_Users(); + md.UserID = (Guid)dt.Rows[i]["UserID"]; + md.RealName = dt.Rows[i]["RealName"].ToString(); + list.Add(md); + } + jsonStr = JSONTools.ScriptSerialize>(list); + } + return jsonStr; + } + catch (Exception ex) + { + return ""; + } + } + + + + #endregion + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/Andon/AndonButtonRecordDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/Andon/AndonButtonRecordDAL.cs new file mode 100644 index 0000000..a5059a8 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/Andon/AndonButtonRecordDAL.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.Andon +{ + public class AndonButtonRecordDAL + { + public bool InsertInfo(AndonRecordModel md) + { + try + { + string sql = ""; + SqlParameter[] param = null; + sql = " insert into tb_AndonRecord(ID,ButtonTypeID"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@ButtonTypeID)"; + + param = new SqlParameter[2]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@ButtonTypeID", SqlDbType.VarChar); + param[1].Value = md.ButtonTypeID; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdateInfo(AndonRecordModel md) + { + try + { + string sql = ""; + SqlParameter[] param = null; + + sql =@"update tb_AndonRecord set EndTime=getdate() where ButtonTypeID=@ButtonTypeID and EndTime is null"; + param=new SqlParameter[1]; + + param[0] = new SqlParameter("@ButtonTypeID", SqlDbType.VarChar); + param[0].Value = md.ButtonTypeID; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/Andon/AndonButtonTypeDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/Andon/AndonButtonTypeDAL.cs new file mode 100644 index 0000000..eaae178 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/Andon/AndonButtonTypeDAL.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Data; +using System.Data.SqlClient; +using System.Reflection; +using MESClassLibrary.BLL.Log; + +namespace MESClassLibrary.DAL.Andon +{ + public class AndonButtonTypeDAL + { + public DataTable SearchInfoByName(string buttonName) + { + try + { + string sql = @"select * from tb_AndonButtonType where ButtonName=@ButtonName"; + + SqlParameter[] param=new SqlParameter[1]; + + param[0] = new SqlParameter("@ButtonName", SqlDbType.VarChar); + param[0].Value = buttonName; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/BaseDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/BaseDAL.cs new file mode 100644 index 0000000..0dcec87 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/BaseDAL.cs @@ -0,0 +1,199 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Data.Entity.Infrastructure; +using System.Diagnostics.Contracts; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.DAL +{ + public class BaseDAL where T : class, new() + { + /// + /// 数据上下文对象 + /// + BBMPTEntities db = new BBMPTEntities(); + + #region 1.0 新增 实体 +int Add(T model) + /// + /// 新增 实体 + /// + /// + /// + public int Add(T model) + { + db.Set().Add(model); + return db.SaveChanges();//保存成功后,会将自增的id设置给 model的 主键属性,并返回受影响行数 + } + #endregion + + #region 2.0 根据 id 删除 +int Del(T model) + /// + /// 根据 id 删除 + /// + /// 包含要删除id的对象 + /// + public int Del(T model) + { + db.Set().Attach(model); + db.Set().Remove(model); + return db.SaveChanges(); + } + #endregion + + #region 3.0 根据条件删除 +int DelBy(Expression> delWhere) + /// + /// 3.0 根据条件删除 + /// + /// + /// + public int DelBy(Expression> delWhere) + { + //3.1查询要删除的数据 + List listDeleting = db.Set().Where(delWhere).ToList(); + //3.2将要删除的数据 用删除方法添加到 EF 容器中 + listDeleting.ForEach(u => + { + db.Set().Attach(u);//先附加到 EF容器 + db.Set().Remove(u);//标识为 删除 状态 + }); + //3.3一次性 生成sql语句到数据库执行删除 + return db.SaveChanges(); + } + #endregion + + #region 4.0 修改 +int Modify(T model, params string[] proNames) + /// + /// 4.0 修改,如: + /// T u = new T() { uId = 1, uLoginName = "asdfasdf" }; + /// this.Modify(u, "uLoginName"); + /// + /// 要修改的实体对象 + /// 要修改的 属性 名称 + /// + public int Modify(T model, params string[] proNames) + { + //4.1将 对象 添加到 EF中 + DbEntityEntry entry = db.Entry(model); + //4.2先设置 对象的包装 状态为 Unchanged + entry.State = System.Data.EntityState.Unchanged; + //4.3循环 被修改的属性名 数组 + foreach (string proName in proNames) + { + //4.4将每个 被修改的属性的状态 设置为已修改状态;后面生成update语句时,就只为已修改的属性 更新 + entry.Property(proName).IsModified = true; + } + //4.4一次性 生成sql语句到数据库执行 + return db.SaveChanges(); + } + #endregion + + #region 4.0 批量修改 +int Modify(T model, Expression> whereLambda, params string[] modifiedProNames) + /// + /// 4.0 批量修改 + /// + /// 要修改的实体对象 + /// 查询条件 + /// 要修改的 属性 名称 + /// + public int ModifyBy(T model, Expression> whereLambda, params string[] modifiedProNames) + { + //4.1查询要修改的数据 + List listModifing = db.Set().Where(whereLambda).ToList(); + + //获取 实体类 类型对象 + Type t = typeof(T); // model.GetType(); + //获取 实体类 所有的 公有属性 + List proInfos = t.GetProperties(BindingFlags.Instance | BindingFlags.Public).ToList(); + //创建 实体属性 字典集合 + Dictionary dictPros = new Dictionary(); + //将 实体属性 中要修改的属性名 添加到 字典集合中 键:属性名 值:属性对象 + proInfos.ForEach(p => + { + if (modifiedProNames.Contains(p.Name)) + { + dictPros.Add(p.Name, p); + } + }); + + //4.3循环 要修改的属性名 + foreach (string proName in modifiedProNames) + { + //判断 要修改的属性名是否在 实体类的属性集合中存在 + if (dictPros.ContainsKey(proName)) + { + //如果存在,则取出要修改的 属性对象 + PropertyInfo proInfo = dictPros[proName]; + //取出 要修改的值 + object newValue = proInfo.GetValue(model, null); //object newValue = model.uName; + + //4.4批量设置 要修改 对象的 属性 + foreach (T usrO in listModifing) + { + //为 要修改的对象 的 要修改的属性 设置新的值 + proInfo.SetValue(usrO, newValue, null); //usrO.uName = newValue; + } + } + } + //4.4一次性 生成sql语句到数据库执行 + return db.SaveChanges(); + } + #endregion + + #region 5.0 根据条件查询 +List GetListBy(Expression> whereLambda) + /// + /// 5.0 根据条件查询 +List GetListBy(Expression> whereLambda) + /// + /// + /// + public List GetListBy(Expression> whereLambda) + { + return db.Set().AsNoTracking().Where(whereLambda).ToList(); + } + #endregion + + #region 5.1 根据条件 排序 和查询 + List GetListBy + /// + /// 5.1 根据条件 排序 和查询 + /// + /// 排序字段类型 + /// 查询条件 lambda表达式 + /// 排序条件 lambda表达式 + /// + public List GetListBy(Expression> whereLambda, Expression> orderLambda) + { + return db.Set().Where(whereLambda).OrderBy(orderLambda).ToList(); + } + #endregion + + #region 6.0 分页查询 + List GetPagedList + /// + /// 6.0 分页查询 + List GetPagedList + /// + /// 页码 + /// 页容量 + /// 条件 lambda表达式 + /// 排序 lambda表达式 + /// + public List GetPagedList(int pageIndex, int pageSize, Expression> whereLambda, Expression> orderBy) + { + // 分页 一定注意: Skip 之前一定要 OrderBy + return db.Set().Where(whereLambda).OrderBy(orderBy).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); + } + #endregion + + public T Find(params object[] keyValues) + { + return db.Set().Find(keyValues); + } + + public List FindAll() + { + return db.Set().ToList(); + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicDAL.cs new file mode 100644 index 0000000..658e526 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicDAL.cs @@ -0,0 +1,51 @@ +using MESClassLibrary.BLL.Log; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace MESClassLibrary.DAL +{ + public class BasicDAL + { + public bool Del_Info(string tableName,string id, string userid) + { + try + { + string sql = @"update " + tableName + @" set + IsUseing = @IsUseing, + DisableUserID = @DisableUserID, + DisableTime = @DisableTime + where ID=@ID"; + + SqlParameter[] param = new SqlParameter[4]; + param[0] = new SqlParameter("@IsUseing", SqlDbType.Int); + param[0].Value = 0; + + param[1] = new SqlParameter("@DisableUserID", SqlDbType.VarChar); + param[1].Value = userid; + + param[2] = new SqlParameter("@DisableTime", SqlDbType.DateTime); + param[2].Value = DateTime.Now; + + param[3] = new SqlParameter("@ID", SqlDbType.VarChar); + param[3].Value = id; + + if (SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param) > 0) + { + return true; + } + return false; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/BadInjectionDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/BadInjectionDAL.cs new file mode 100644 index 0000000..7ff692f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/BadInjectionDAL.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Data; +using System.Data.SqlClient; +using System.Reflection; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.BasicInfo +{ + public class BadInjectionDAL + { + public static string TableName = "tb_Bad_Injection"; + + public bool AddInfo(BadInjectionModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO " + TableName + " (ID,OneBarCode,[BarCode],[BadPosition],[BadReason]"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@OneBarCode,"; + sql += "@BarCode,"; + sql += "@BadPosition,"; + sql += "@BadReason)"; + + #region 添加参数 + param = new SqlParameter[5]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@OneBarCode", SqlDbType.VarChar); + param[1].Value = md.OneBarCode; + + param[2] = new SqlParameter("@BarCode", SqlDbType.VarChar); + param[2].Value = md.BarCode; + + param[3] = new SqlParameter("@BadPosition", SqlDbType.VarChar); + param[3].Value = md.BadPosition; + + param[4] = new SqlParameter("@BadReason", SqlDbType.VarChar); + param[4].Value = md.BadReason; + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchByCode(string code) + { + try + { + string sql = ""; + + if (code.Contains(".")) + { + sql = @"select * from " + TableName + " where BarCode=@BarCode"; + } + else + { + sql = @"select * from " + TableName + " where OneBarCode=@BarCode"; + } + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@BarCode", SqlDbType.VarChar); + param[0].Value = code; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/BarCodeDAl.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/BarCodeDAl.cs new file mode 100644 index 0000000..1e7032b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/BarCodeDAl.cs @@ -0,0 +1,440 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Data; +using System.Data.SqlClient; +using System.Reflection; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.BasicInfo +{ + public class BarCodeDAl + { + public static string TableName = "tb_BarCode"; + public DataTable SearchInfoByStock(string StockNo) + { + string sql = ""; + DateTime time; + try + { + time = GetDateTime(); + if (time.Hour>=8 &&time.Hour<=23) + { + sql = @"select top 1 * from " + TableName + " where StockNo=@StockNo and PrintType <>2 and " + + "substring([BarCode],len( [BarCode])-10,6)= right(DATENAME(yy, GETDATE()),2)+ RIGHT('00'+CAST(MONTH(GETDATE()) AS VARCHAR(2)),2)+RIGHT('00'+CAST(Day(GETDATE()) AS VARCHAR(2)),2)" + + " order by [CreateTime] desc"; + } + else + { + sql = @"select top 1 * from " + TableName + " where StockNo=@StockNo and PrintType <>2 and " + + "substring([BarCode],len( [BarCode])-10,6)= right(DATENAME(yy, DATEADD(dd,-1, GETDATE())),2)+ RIGHT('00'+CAST(MONTH(DATEADD(dd,-1, GETDATE())) AS VARCHAR(2)),2)+RIGHT('00'+CAST(Day(DATEADD(dd,-1, GETDATE())) AS VARCHAR(2)),2)" + + " order by [CreateTime] desc"; + } + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@StockNo", SqlDbType.VarChar); + param[0].Value = StockNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool AddInfo(BarCodeModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO " + TableName + " (ID,StationID,OneBarCode,[BarCode],[StockNo],[PrintType],[CreateTime],[IsImport],StationID2,PlanID"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@StationID,"; + sql += "@OneBarCode,"; + sql += "@BarCode,"; + sql += "@StockNo,"; + sql += "@PrintType,"; + //sql += "@CreateTime,"; + sql += "(select getdate()),"; + sql += "@IsImport,"; + sql += "@StationID2,"; + sql += "@PlanID)"; + + #region 添加参数 + param = new SqlParameter[9]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[1].Value = md.StationID; + + param[2] = new SqlParameter("@OneBarCode", SqlDbType.VarChar); + param[2].Value = md.OneBarCode; + + param[3] = new SqlParameter("@BarCode", SqlDbType.VarChar); + param[3].Value = md.BarCode; + + param[4] = new SqlParameter("@StockNo", SqlDbType.VarChar); + param[4].Value = md.StockNo; + + param[5] = new SqlParameter("@PrintType", SqlDbType.Int); + param[5].Value =md.PrintType; + + //param[6] = new SqlParameter("@CreateTime", SqlDbType.DateTime); + //param[6].Value = md.CreateTime; + + param[6] = new SqlParameter("@IsImport", SqlDbType.Text); + param[6].Value = md.Import; + + param[7] = new SqlParameter("@StationID2", SqlDbType.VarChar); + param[7].Value = md.StationID2; + + param[8] = new SqlParameter("@PlanID", SqlDbType.VarChar); + param[8].Value = md.PlanID; + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchInfo(string stationNo) + { + try + { + string sql = @"SELECT top 100 dbo.tb_BarCode.BarCode, dbo.tb_Product.ProductName, + CASE dbo.tb_BarCode.PrintType WHEN 0 THEN '自动打印' when 1 then '手动打印' when 2 then '补打' END AS PrintType, + dbo.tb_BarCode.CreateTime + FROM dbo.tb_BarCode LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_BarCode.StockNo = dbo.tb_Product.StockNo LEFT OUTER JOIN + dbo.tb_Station ON dbo.tb_BarCode.StationID = dbo.tb_Station.StationID + where dbo.tb_Station.StationNo=@stationNo and IsDel=0 " + + //" and substring([BarCode],len( [BarCode])-10,6)= right(DATENAME(yy, GETDATE()),2)+ RIGHT('00'+CAST(MONTH(GETDATE()) AS VARCHAR(2)),2)+RIGHT('00'+CAST(Day(GETDATE()) AS VARCHAR(2)),2)" + + " order by [CreateTime] desc"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@stationNo", SqlDbType.VarChar); + param[0].Value = stationNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoAll() + { + try + { + string sql = @"SELECT dbo.tb_BarCode.BarCode, dbo.tb_Product.ProductName, + CASE dbo.tb_BarCode.PrintType WHEN 0 THEN '自动打印' when 1 then '手动打印' when 2 then '补打' END AS PrintType, + dbo.tb_BarCode.PrintTime + FROM dbo.tb_BarCode LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_BarCode.StockNo = dbo.tb_Product.StockNo LEFT OUTER JOIN + dbo.tb_Station ON dbo.tb_BarCode.StationID = dbo.tb_Station.StationID + where dbo.tb_Station.StationNo=@stationNo and IsDel=0 " + + //" and substring([BarCode],len( [BarCode])-10,6)= right(DATENAME(yy, GETDATE()),2)+ RIGHT('00'+CAST(MONTH(GETDATE()) AS VARCHAR(2)),2)+RIGHT('00'+CAST(Day(GETDATE()) AS VARCHAR(2)),2)" + + " order by [CreateTime] desc"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchBarCode() + { + try + { + string sql = @"SELECT TOP (1000) dbo.tb_BarCode.BarCode, dbo.tb_Product.ProductName, + CASE dbo.tb_BarCode.PrintType WHEN 0 THEN '自动打印' WHEN 1 THEN '手动打印' WHEN 2 THEN '补打' END AS PrintType, + dbo.tb_BarCode.PrintTime, dbo.tb_BarCode.OneBarCode, dbo.tb_BarCode.PlanID, + dbo.tb_InjectPlanReport.MaterialName, dbo.tb_InjectPlanReport.BatchNo + FROM dbo.tb_BarCode LEFT OUTER JOIN + dbo.tb_InjectPlanReport ON dbo.tb_BarCode.PlanID = dbo.tb_InjectPlanReport.InjectionPlanID LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_BarCode.StockNo = dbo.tb_Product.StockNo LEFT OUTER JOIN + dbo.tb_Station ON dbo.tb_BarCode.StationID = dbo.tb_Station.StationID + WHERE (dbo.tb_BarCode.IsDel = 0) + ORDER BY dbo.tb_BarCode.CreateTime DESC"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchBarCodeByOne(string oneBarCode) + { + try + { + string sql = @"SELECT dbo.tb_BarCode.BarCode, dbo.tb_Product.ProductName, + CASE dbo.tb_BarCode.PrintType WHEN 0 THEN '自动打印' WHEN 1 THEN '手动打印' WHEN 2 THEN '补打' END AS PrintType, + dbo.tb_BarCode.PrintTime, dbo.tb_BarCode.OneBarCode,dbo.tb_BarCode.PlanID, + dbo.tb_InjectPlanReport.MaterialName, dbo.tb_InjectPlanReport.BatchNo + FROM dbo.tb_BarCode LEFT OUTER JOIN + dbo.tb_InjectPlanReport ON dbo.tb_BarCode.PlanID = dbo.tb_InjectPlanReport.InjectionPlanID LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_BarCode.StockNo = dbo.tb_Product.StockNo LEFT OUTER JOIN + dbo.tb_Station ON dbo.tb_BarCode.StationID = dbo.tb_Station.StationID + WHERE dbo.tb_BarCode.IsDel = 0 and dbo.tb_BarCode.OneBarCode=@OneBarCode + ORDER BY dbo.tb_BarCode.CreateTime DESC"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@OneBarCode", SqlDbType.VarChar); + param[0].Value = oneBarCode; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchBarCodeByTwo(string BarCode) + { + try + { +// string sql = @"SELECT dbo.tb_BarCode.BarCode, dbo.tb_Product.ProductName, +// CASE dbo.tb_BarCode.PrintType WHEN 0 THEN '自动打印' WHEN 1 THEN '手动打印' WHEN 2 THEN '补打' END AS PrintType, +// dbo.tb_BarCode.PrintTime, dbo.tb_BarCode.OneBarCode +// FROM dbo.tb_BarCode LEFT OUTER JOIN +// dbo.tb_Product ON dbo.tb_BarCode.StockNo = dbo.tb_Product.StockNo LEFT OUTER JOIN +// dbo.tb_Station ON dbo.tb_BarCode.StationID = dbo.tb_Station.StationID +// WHERE dbo.tb_BarCode.IsDel = 0 and dbo.tb_BarCode.BarCode=@BarCode +// ORDER BY dbo.tb_BarCode.CreateTime DESC"; + string sql = @"SELECT dbo.tb_BarCode.BarCode, dbo.tb_Product.ProductName, + CASE dbo.tb_BarCode.PrintType WHEN 0 THEN '自动打印' WHEN 1 THEN '手动打印' WHEN 2 THEN '补打' END AS PrintType, + dbo.tb_BarCode.PrintTime, dbo.tb_BarCode.OneBarCode,dbo.tb_BarCode.PlanID, + dbo.tb_InjectPlanReport.MaterialName, dbo.tb_InjectPlanReport.BatchNo + FROM dbo.tb_BarCode LEFT OUTER JOIN + dbo.tb_InjectPlanReport ON dbo.tb_BarCode.PlanID = dbo.tb_InjectPlanReport.InjectionPlanID LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_BarCode.StockNo = dbo.tb_Product.StockNo LEFT OUTER JOIN + dbo.tb_Station ON dbo.tb_BarCode.StationID = dbo.tb_Station.StationID + WHERE dbo.tb_BarCode.IsDel = 0 and dbo.tb_BarCode.BarCode=@BarCode + ORDER BY dbo.tb_BarCode.CreateTime DESC"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@BarCode", SqlDbType.VarChar); + param[0].Value = BarCode; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 查找流水号 + /// + /// 零件号.批次 + /// + public DataTable SearchSerialNoByBarCode(string Code) + { + try + { + string sql = @"select top 1 * from " + TableName + " where left([BarCode],len([BarCode])-5)=@Code and PrintType <> 2" + + " order by [CreateTime] desc"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@Code", SqlDbType.VarChar); + param[0].Value = Code; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoByBarCode(string BarCode) + { + try + { + string sql = @"select top 1 * from " + TableName + " where BarCode=@BarCode order by [CreateTime] desc "; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@BarCode", SqlDbType.VarChar); + param[0].Value = BarCode; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 更改打印时间 + /// + /// + /// + public bool UpdateInfo(BarCodeModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = @"update tb_BarCode set PrintTime=(select getdate()) where [StationID]=@StationID and PrintTime is null"; + + #region 添加参数 + param = new SqlParameter[1]; + param[0] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[0].Value = md.StationID; + + //param[1] = new SqlParameter("@PrintTime", SqlDbType.DateTime); + //param[1].Value = md.PrintTime; + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + /// + /// 删除手工打印条码 + /// + /// + /// + public bool DelBarCode(BarCodeModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = @"update tb_BarCode set IsDel=0 where BarCode=@BarCode"; + + #region 添加参数 + param = new SqlParameter[1]; + param[0] = new SqlParameter("@BarCode", SqlDbType.VarChar); + param[0].Value = md.BarCode; + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DateTime GetDateTime() + { + string sql = ""; + DateTime time; + DataTable dt; + try + { + sql = @"select getdate() as time"; + + dt= SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + if (dt != null && dt.Rows.Count > 0) + { + time = Convert.ToDateTime(dt.Rows[0]["time"].ToString()); + + } + else + { + time=DateTime.Now; + } + return time; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return DateTime.Now; + } + } + + /// + /// 根据二维码查找一维码,并查找一维码是否存在 + /// + /// + /// + public DataTable SearchOneBarCode(string BarCode,int a) + { + try + { + string sql = ""; + SqlParameter[] param = new SqlParameter[1]; + + if (a == 1) + { + sql = @"select OneBarCode + from tb_BarCode + where OneBarCode = @barcode"; + + param[0] = new SqlParameter("@barcode", SqlDbType.VarChar); + param[0].Value = BarCode; + } + + if (a == 2) + { + sql = @"select * + from tb_BarCode + where barcode = @barcode"; + + param[0] = new SqlParameter("@barcode", SqlDbType.VarChar); + param[0].Value = BarCode; + } + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/BomDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/BomDAL.cs new file mode 100644 index 0000000..ee41955 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/BomDAL.cs @@ -0,0 +1,150 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.BasicInfo +{ + public class BomDAL + { + public DataTable SearchBom(string PartNo) + { + try + { + string sql = @"SELECT dbo.tb_Product.ProductName, dbo.tb_ProductType.ProductTypeName, dbo.tb_ProductType.ProductTypeNo, + dbo.tb_Product.PartNo, dbo.tb_Bom.PartNo2, dbo.tb_Product.StockNo + FROM dbo.tb_Bom RIGHT OUTER JOIN + dbo.tb_Product ON dbo.tb_Bom.PartNo1 = dbo.tb_Product.PartNo LEFT OUTER JOIN + dbo.tb_ProductType ON dbo.tb_Product.ProductTypeID = dbo.tb_ProductType.ProductTypeID + WHERE PartNo=@PartNo"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[0].Value = PartNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable Search(string partNo1, string partNo2) + { + try + { + string sql = "select * from tb_Bom where PartNo1=@partNo1,PartNo2=@partNo2"; + + SqlParameter[] param = new SqlParameter[2]; + param[0] = new SqlParameter("@@partNo1", SqlDbType.VarChar); + param[0].Value = partNo1; + + param[1] = new SqlParameter("@@partNo2", SqlDbType.VarChar); + param[1].Value = partNo2; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool AddInfo(BomModel md) + { + string sql = ""; + SqlParameter[] param = null; + + try + { + sql = "insert into tb_Bom(ID,,PartNo1,PartNo2) values(@ID,@partNo1,@partNo2)"; + + param = new SqlParameter[3]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.BomID; + + param[1] = new SqlParameter("@partNo1", SqlDbType.VarChar); + param[1].Value = md.PartNo1; + + param[2] = new SqlParameter("@partNo2", SqlDbType.VarChar); + param[2].Value = md.PartNo2; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool updateInfo(BomModel md) + { + string sql = ""; + SqlParameter[] param = null; + + try + { + sql = "update tb_Bom set PartNo2=@partNo2 where PartNo1=@partNo1"; + + param = new SqlParameter[2]; + + param[0] = new SqlParameter("@partNo1", SqlDbType.VarChar); + param[0].Value = md.PartNo1; + + param[1] = new SqlParameter("@partNo2", SqlDbType.VarChar); + param[1].Value = md.PartNo2; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool DelInfo(BomModel md) + { + string sql = ""; + SqlParameter[] param = null; + + try + { + sql = "delete from tb_Bom where PartNo1=@partNo1 and PartNo2=@partNo2 "; + + param = new SqlParameter[2]; + + param[0] = new SqlParameter("@partNo1", SqlDbType.VarChar); + param[0].Value = md.PartNo1; + + param[1] = new SqlParameter("@partNo2", SqlDbType.VarChar); + param[1].Value = md.PartNo2; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/ColorDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/ColorDAL.cs new file mode 100644 index 0000000..f94989e --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/ColorDAL.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.Model; + +using MESClassLibrary.BLL.Log; + +namespace MESClassLibrary.DAL.BasicInfo +{ + public class ColorDAL + { + public DataTable SearchInfoAll() + { + try + { + string sql = @"select * from [tb_Color]"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchByName(string color) + { + try + { + string sql = @"select distinct [ColorNo] from [tb_Color] where [Des] like @Des"; + + SqlParameter[] param=new SqlParameter[1]; + + param[0] = new SqlParameter("@Des", SqlDbType.VarChar); + param[0].Value = color; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/DefectDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/DefectDAL.cs new file mode 100644 index 0000000..4c8c162 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/DefectDAL.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Data; +using System.Data.SqlClient; +using System.Reflection; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; +namespace MESClassLibrary.DAL.BasicInfo +{ + public class DefectDAL + { + public DataTable SearchInfoAll(string LineID) + { + try + { + string sql = @"SELECT * from tb_Defect where LineID=@LineID"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@LineID", SqlDbType.VarChar); + param[0].Value = LineID; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/InjectionPlanDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/InjectionPlanDAL.cs new file mode 100644 index 0000000..8979325 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/InjectionPlanDAL.cs @@ -0,0 +1,199 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Data; +using System.Data.SqlClient; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using MESClassLibrary.Model; +using System.Reflection; + +namespace MESClassLibrary.DAL.BasicInfo +{ + public class InjectionPlanDAL + { + public static string TableName = "tb_InjectionPlan"; + + + /// + /// 获取当前计划 + /// + /// + /// + public DataTable SearchPlanByStation(string StationID) + { + try + { + string sql = @"SELECT top 1 dbo.tb_InjectionPlan.InjectionPlanID, dbo.tb_Product.ProductName, dbo.tb_Station.StationNo, dbo.tb_InjectionPlan.BeginTime, dbo.tb_InjectionPlan.PlanCount, + dbo.tb_InjectionPlan.EndTime, dbo.tb_InjectionPlan.StockNo, dbo.tb_InjectionPlan.PlanDate, + dbo.tb_InjectionPlan.CompleteCount, dbo.tb_Product.PartNo, dbo.tb_Product.ProductName, dbo.tb_Product.ColorName, + dbo.tb_Product.Rows, dbo.tb_Product.Cols, dbo.tb_Product.Layers, dbo.tb_Product.PicturePath,dbo.tb_Station.StationID + FROM dbo.tb_InjectionPlan LEFT OUTER JOIN + dbo.tb_Station ON dbo.tb_InjectionPlan.StationID = dbo.tb_Station.StationID LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_InjectionPlan.StockNo = dbo.tb_Product.StockNo + WHERE (dbo.tb_Station.StationNo = @StationID) AND ((dbo.tb_InjectionPlan.IsFinish IS NULL OR dbo.tb_InjectionPlan.IsFinish=0)) + ORDER BY dbo.tb_InjectionPlan.BeginTime"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[0].Value = StationID; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 获取下一计划 + /// + /// + /// + public DataTable NextSearchPlanByStation(string StationID) + { + try + { + string sql = @"SELECT top 2 dbo.tb_Product.ProductName, dbo.tb_Station.StationNo, dbo.tb_InjectionPlan.BeginTime, dbo.tb_InjectionPlan.PlanCount, + dbo.tb_InjectionPlan.EndTime, dbo.tb_InjectionPlan.StockNo, dbo.tb_InjectionPlan.PlanDate, + dbo.tb_InjectionPlan.CompleteCount, dbo.tb_Product.PartNo, dbo.tb_Product.ProductName, dbo.tb_Product.ColorName, + dbo.tb_Product.Rows, dbo.tb_Product.Cols, dbo.tb_Product.Layers, dbo.tb_Product.PicturePath,dbo.tb_Station.StationID + FROM dbo.tb_InjectionPlan LEFT OUTER JOIN + dbo.tb_Station ON dbo.tb_InjectionPlan.StationID = dbo.tb_Station.StationID LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_InjectionPlan.StockNo = dbo.tb_Product.StockNo + WHERE (dbo.tb_Station.StationNo = @StationID) AND ((dbo.tb_InjectionPlan.IsFinish IS NULL OR dbo.tb_InjectionPlan.IsFinish=0)) + ORDER BY dbo.tb_InjectionPlan.BeginTime"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[0].Value = StationID; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool UpdateFinish(InjectionPlanModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = @"update tb_InjectionPlan set IsFinish=1 ,FinishTime=getdate() + where [InjectionPlanID]=( select top 1 [InjectionPlanID] from [dbo].[tb_InjectionPlan] where (IsFinish is null or IsFinish=0 )and StationID=@StationID order by BeginTime asc)"; + + #region 添加参数 + param = new SqlParameter[1]; + param[0] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[0].Value = md.StationID; + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + + public DataTable SearchByPage(int pageIndex, int pageSize, string stationID, string stockNo) + { + try + { + + string sql = "select * FROM[dbo].[tb_InjectionPlan] "; + sql += " where 1=1 "; + if (!string.IsNullOrEmpty(stationID)) + { + sql += " and StationID = '" + stationID + "' "; + } + if (!string.IsNullOrEmpty(stockNo)) + { + sql += " and StockNo like '%" + stockNo + "%' "; + } + sql += " order by BeginTime "; + sql += " offset " + ((pageIndex - 1) * pageSize) + " rows "; + sql += " fetch next " + pageSize + " rows only "; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + public DataTable SearchByTime(int pageIndex, int pageSize, string stationID, string stockNo, string StartTime, string EndTime) + { + try + { + + string sql = "select * FROM[dbo].[tb_InjectionPlan] where BeginTime>='" + StartTime + "' and BeginTime<='" + EndTime + "' "; + if (!string.IsNullOrEmpty(stationID)) + { + sql += " and StationID = '" + stationID + "' "; + } + if (!string.IsNullOrEmpty(stockNo)) + { + sql += " and StockNo like '%" + stockNo + "%' "; + } + sql += " order by BeginTime "; + sql += " offset " + ((pageIndex - 1) * pageSize) + " rows "; + sql += " fetch next " + pageSize + " rows only "; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + + public int SearchByTimeCount(string stationID, string stockNo, string StartTime, string EndTime) + { + try + { + + string sql = "select * FROM[dbo].[tb_InjectionPlan] where BeginTime>='" + StartTime + "' and EndTime<='" + EndTime + "' "; + if (!string.IsNullOrEmpty(stationID)) + { + sql += " and StationID = '" + stationID + "' "; + } + if (!string.IsNullOrEmpty(stockNo)) + { + sql += " and StockNo like '%" + stockNo + "%' "; + } + + return SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return 0; + } + } + + + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/OperatorDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/OperatorDAL.cs new file mode 100644 index 0000000..bc30e15 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/OperatorDAL.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; +using System.Data; +using System.Data.SqlClient; +using System.Reflection; + +namespace MESClassLibrary.DAL.BasicInfo +{ + public class OperatorDAL + { + public static string TableName = "tb_Operator"; + + /// + /// 根据操作员姓名和工位查询 + /// + /// + /// + public DataTable SearchInfoByName(string OperatorName,string StationID) + { + try + { + string sql = @"select * from " + TableName + " where OperatorName=@OperatorName and StationID=@StationID"; + + SqlParameter[] param = new SqlParameter[2]; + param[0] = new SqlParameter("@OperatorName", SqlDbType.VarChar); + param[0].Value = OperatorName; + + param[1] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[1].Value = StationID; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoByNameAndPsw(string OperatorName, string StationID,string OperatorPsw) + { + try + { + string sql = @"select * from " + TableName + " where OperatorName=@OperatorName and StationID=@StationID and OperatorPsw=@OperatorPsw"; + + SqlParameter[] param = new SqlParameter[3]; + param[0] = new SqlParameter("@OperatorName", SqlDbType.VarChar); + param[0].Value = OperatorName; + + + param[1] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[1].Value = StationID; + + param[2] = new SqlParameter("@OperatorPsw", SqlDbType.VarChar); + param[2].Value = OperatorPsw; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/ProductDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/ProductDAL.cs new file mode 100644 index 0000000..16d6e52 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/ProductDAL.cs @@ -0,0 +1,245 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Data; +using System.Data.SqlClient; +using System.Reflection; +using MESClassLibrary.Model; +using MESClassLibrary.BLL.Log; + +namespace MESClassLibrary.DAL.BasicInfo +{ + public class ProductDAL + { + public static string TableName = "tb_ProductType"; + + public DataTable SearchInfoByType(string type, string stationNo) + { + try + { + string sql = + @"SELECT + dbo.tb_Product.PartName, + dbo.tb_Product.ProductName, + dbo.tb_ProductType.ProductTypeName, + dbo.tb_ProductType.ProductTypeNo, + dbo.tb_Product.PartNo, + dbo.tb_Station.StationNo, + dbo.tb_Plastic.StockNo + FROM dbo.tb_Plastic + LEFT OUTER JOIN dbo.tb_Station ON dbo.tb_Plastic.StationID = dbo.tb_Station.StationID + LEFT OUTER JOIN dbo.tb_Product ON dbo.tb_Plastic.StockNo = dbo.tb_Product.StockNo + LEFT OUTER JOIN dbo.tb_ProductType ON dbo.tb_Product.ProductTypeID = dbo.tb_ProductType.ProductTypeID + WHERE + dbo.tb_ProductType.ProductTypeNo = @ProductTypeNo + and StationNo = @StationNo"; + + SqlParameter[] param = new SqlParameter[2]; + + param[0] = new SqlParameter("@ProductTypeNo", SqlDbType.VarChar); + param[0].Value = type; + + param[1] = new SqlParameter("@StationNo", SqlDbType.VarChar); + param[1].Value = stationNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoAllByType(string type) + { + try + { + string sql = + @"SELECT + DISTINCT dbo.tb_Product.ProductName, + dbo.tb_ProductType.ProductTypeName, + dbo.tb_ProductType.ProductTypeNo, + dbo.tb_Product.PartNo, + dbo.tb_Bom.PartNo2, + dbo.tb_Product.StockNo + FROM dbo.tb_Bom + RIGHT OUTER JOIN dbo.tb_Product ON dbo.tb_Bom.PartNo1 = dbo.tb_Product.PartNo + LEFT OUTER JOIN dbo.tb_ProductType ON dbo.tb_Product.ProductTypeID = dbo.tb_ProductType.ProductTypeID + WHERE + dbo.tb_ProductType.ProductTypeNo = @ProductTypeNo + ORDER BY + StockNo"; + + SqlParameter[] param = new SqlParameter[1]; + + param[0] = new SqlParameter("@ProductTypeNo", SqlDbType.VarChar); + param[0].Value = type; + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoByName(string ProductName, string ProductTypeNo) + { + try + { + string sql = + @"SELECT + dbo.tb_Product.PartName, + dbo.tb_Product.ProductName, + dbo.tb_ProductType.ProductTypeName, + dbo.tb_ProductType.ProductTypeNo, + dbo.tb_Product.PartNo, + dbo.tb_Product.StockNo + FROM dbo.tb_ProductType + RIGHT OUTER JOIN dbo.tb_Product ON dbo.tb_ProductType.ProductTypeID = dbo.tb_Product.ProductTypeID + where + dbo.tb_Product.ProductName = @ProductName + and dbo.tb_ProductType.ProductTypeNo = @ProductTypeNo + ORDER BY + SUBSTRING(ProductName, 0, 4)"; + + SqlParameter[] param = new SqlParameter[2]; + param[0] = new SqlParameter("@ProductName", SqlDbType.VarChar); + param[0].Value = ProductName; + + param[1] = new SqlParameter("@ProductTypeNo", SqlDbType.VarChar); + param[1].Value = ProductTypeNo; + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoByPartNo(string partNo) + { + try + { + string sql = @"select * from [tb_Product] where [PartNo]=@partNo"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@partNo", SqlDbType.VarChar); + param[0].Value = partNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + + } + } + + public DataTable SearchIsImportByStockNo(string StockNo) + { + try + { + string sql = @"select * from [tb_Product] where [StockNo]=@StockNo"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@StockNo", SqlDbType.VarChar); + param[0].Value = StockNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + + } + } + + public DataTable SearchInfoByProductName(string ProductName) + { + try + { + string sql = @"select * from [tb_Product] where [ProductName]=@ProductName"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@ProductName", SqlDbType.VarChar); + param[0].Value = ProductName; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoAll() + { + try + { + string sql = @"select * from [tb_Product] where ProductTypeID='f3bbde11-7188-4910-855d-806d92d142b9' and StockNo is not null order by StockNo"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + //public DataTable SearchInfoByType(string list) + //{ + // try + // { + // string sql = @"select StockNo+'-'+ProductName AS aa from [tb_Product] where StockNo+'-'+ProductName like '%' + @list + '%' and [StockNo] like '2%'"; + + // SqlParameter[] param = new SqlParameter[1]; + // param[0] = new SqlParameter("@list", SqlDbType.VarChar); + // param[0].Value = list; + + // return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + // } + // catch (Exception ex) + // { + // LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + // return null; + // } + //} + + public DataTable SearchInfoByStock(string StockNo) + { + try + { + string sql = @"select * from [tb_Product] where [StockNo]=@StockNo"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@StockNo", SqlDbType.VarChar); + param[0].Value = StockNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/ProductOfInjectionDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/ProductOfInjectionDAL.cs new file mode 100644 index 0000000..3d9d074 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/ProductOfInjectionDAL.cs @@ -0,0 +1,265 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; +using System.Data; +using System.Data.SqlClient; +using System.Reflection; + +namespace MESClassLibrary.DAL.BasicInfo +{ + public class ProductOfInjectionDAL + { + public static string TableName = "tb_Product_Injection"; + public bool AddInfo(ProductOfInjectionModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO " + TableName + " (ID,PlanID,StationID,ProductDate,ClassName,StockNo,PartNo,ProductCount,BadCount)"; + sql += " VALUES ("; + sql += "@ID,"; + sql += "@PlanID,"; + sql += "@StationID,"; + sql += "@ProductDate,"; + sql += "@ClassName,"; + sql += "@StockNo,"; + sql += "@PartNo,"; + sql += "@ProductCount,"; + sql += "@BadCount)"; + + #region 添加参数 + param = new SqlParameter[9]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@PlanID", SqlDbType.VarChar); + param[1].Value = md.PlanID; + + param[2] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[2].Value = md.StationID; + + param[3] = new SqlParameter("@ProductDate", SqlDbType.VarChar); + param[3].Value = md.ProductDate; + + param[4] = new SqlParameter("@ClassName", SqlDbType.VarChar); + param[4].Value = md.ClassName; + + param[5] = new SqlParameter("@StockNo", SqlDbType.VarChar); + param[5].Value = md.StockNo; + + param[6] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[6].Value = md.PartNo; + + param[7] = new SqlParameter("@ProductCount", SqlDbType.Int); + param[7].Value = md.ProductCount; + + param[8] = new SqlParameter("@BadCount", SqlDbType.Int); + param[8].Value = md.BadCount; + + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + public DataTable SearchCountByInfo(string station,string date,string classname,string StockNo,string PartNo) + { + try + { + string sql = @"select * from " + TableName + " where StationID=@StationID and " + + "ProductDate=@ProductDate and ClassName=@ClassName and StockNo=@StockNo and PartNo=@PartNo"; + + SqlParameter[] param = new SqlParameter[5]; + param[0] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[0].Value = station; + + param[1] = new SqlParameter("@ProductDate", SqlDbType.VarChar); + param[1].Value = date; + + param[2] = new SqlParameter("@ClassName", SqlDbType.VarChar); + param[2].Value = classname; + + param[3] = new SqlParameter("@StockNo", SqlDbType.VarChar); + param[3].Value = StockNo; + + param[4] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[4].Value = PartNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool UpdateInfo(ProductOfInjectionModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = @"update " + TableName + " set ProductCount=ProductCount+@ProductCount,BadCount=BadCount+@BadCount where StationID=@StationID and ProductDate=@ProductDate and ClassName=@ClassName and StockNo=@StockNo and PartNo=@PartNo and PlanID=@PlanID"; + + #region 添加参数 + param = new SqlParameter[8]; + param[0] = new SqlParameter("@ProductCount", SqlDbType.Int); + param[0].Value = md.ProductCount; + + param[1] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[1].Value = md.StationID; + + param[2] = new SqlParameter("@ProductDate", SqlDbType.VarChar); + param[2].Value = md.ProductDate; + + param[3] = new SqlParameter("@ClassName", SqlDbType.VarChar); + param[3].Value = md.ClassName; + + param[4] = new SqlParameter("@StockNo", SqlDbType.VarChar); + param[4].Value = md.StockNo; + + param[5] = new SqlParameter("@BadCount", SqlDbType.Int); + param[5].Value = md.BadCount; + + param[6] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[6].Value = md.PartNo; + + param[7] = new SqlParameter("@PlanID", SqlDbType.VarChar); + param[7].Value = md.PlanID; + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdteBadInfo(ProductOfInjectionModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + if (md.StockNo != "") + { + sql = @"update " + TableName + " set BadCount=BadCount+@BadCount where StationID=@StationID and ProductDate=@ProductDate and ClassName=@ClassName and StockNo=@StockNo "; + } + else + { + sql = @"update " + TableName + " set BadCount=BadCount+@BadCount where StationID=@StationID and ProductDate=@ProductDate and ClassName=@ClassName and PartNo=@PartNo"; + } + + + #region 添加参数 + param = new SqlParameter[6]; + + param[0] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[0].Value = md.StationID; + + param[1] = new SqlParameter("@ProductDate", SqlDbType.VarChar); + param[1].Value = md.ProductDate; + + param[2] = new SqlParameter("@ClassName", SqlDbType.VarChar); + param[2].Value = md.ClassName; + + param[3] = new SqlParameter("@StockNo", SqlDbType.VarChar); + param[3].Value = md.StockNo; + + param[4] = new SqlParameter("@BadCount", SqlDbType.Int); + param[4].Value = md.BadCount; + + param[5] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[5].Value = md.PartNo; + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + /// + /// 开机报废减产量 + /// + /// + /// + public bool updateProductCount(ProductOfInjectionModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + if (md.StockNo != "") + { + sql = @"update " + TableName + " set ProductCount=ProductCount-@ProductCount where StationID=@StationID and ProductDate=@ProductDate and ClassName=@ClassName and StockNo=@StockNo "; + } + else + { + sql = @"update " + TableName + " set ProductCount=ProductCount-@ProductCount where StationID=@StationID and ProductDate=@ProductDate and ClassName=@ClassName and PartNo=@PartNo"; + } + + + #region 添加参数 + param = new SqlParameter[6]; + + param[0] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[0].Value = md.StationID; + + param[1] = new SqlParameter("@ProductDate", SqlDbType.VarChar); + param[1].Value = md.ProductDate; + + param[2] = new SqlParameter("@ClassName", SqlDbType.VarChar); + param[2].Value = md.ClassName; + + param[3] = new SqlParameter("@StockNo", SqlDbType.VarChar); + param[3].Value = md.StockNo; + + param[4] = new SqlParameter("@ProductCount", SqlDbType.Int); + param[4].Value = md.ProductCount; + + param[5] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[5].Value = md.PartNo; + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/ProductTypeDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/ProductTypeDAL.cs new file mode 100644 index 0000000..7cee704 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/ProductTypeDAL.cs @@ -0,0 +1,210 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.DAL.BasicInfo +{ + public class ProductTypeDAL + { + public static string TableName = "tb_ProductType"; + public string GetTableName() + { + return TableName; + } + /// + /// 获取全部信息 + /// + /// + public DataTable SearchInfo() + { + try + { + string sql = @"select * from "+ TableName; + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 根据id查询信息 + /// + /// + /// + public DataTable SearchInfoByID(string ProductTypeID) + { + try + { + string sql = @"select * from "+ TableName + " where ProductTypeID=@ProductTypeID"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@ProductTypeID", SqlDbType.VarChar); + param[0].Value = ProductTypeID; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 根据ProductTypeNo查询信息 + /// + /// + /// + public DataTable SearchByProductTypeNo(string ProductTypeNo) + { + try + { + string sql = @"select * from " + TableName + " where ProductTypeNo=@ProductTypeNo"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@ProductTypeNo", SqlDbType.VarChar); + param[0].Value = ProductTypeNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 添加信息 + /// + /// 模型 + /// + public bool AddInfo(ProductTypeModel mod) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO " + TableName + " (ProductTypeID,ProductTypeNo,ProductTypeName,Des"; + sql += ") VALUES ("; + sql += "@ProductTypeID,"; + sql += "@ProductTypeNo,"; + sql += "@ProductTypeName,"; + sql += "@Des)"; + + #region 添加参数 + param = new SqlParameter[4]; + param[0] = new SqlParameter("@ProductTypeID", SqlDbType.VarChar); + param[0].Value = mod.ProductTypeID; + + param[1] = new SqlParameter("@ProductTypeNo", SqlDbType.VarChar); + param[1].Value = mod.ProductTypeNo; + + param[2] = new SqlParameter("@ProductTypeName", SqlDbType.VarChar); + param[2].Value = mod.ProductTypeName; + + param[3] = new SqlParameter("@Des", SqlDbType.VarChar); + param[3].Value = mod.Des; + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 更新信息 + /// + /// 模型对象 + /// + public bool UpdateInfo(ProductTypeModel md) + { + try + { + string sql = @"update " + TableName + @" set + ProductTypeNo = @ProductTypeNo, + ProductTypeName = @ProductTypeName, + Des = @Des + where ProductTypeID=@ProductTypeID"; + + SqlParameter[] param = new SqlParameter[4]; + param[0] = new SqlParameter("@ProductTypeNo", SqlDbType.VarChar); + param[0].Value = md.ProductTypeNo; + + param[1] = new SqlParameter("@ProductTypeName", SqlDbType.VarChar); + param[1].Value = md.ProductTypeName; + + param[2] = new SqlParameter("@Des", SqlDbType.VarChar); + param[2].Value = md.Des; + + param[3] = new SqlParameter("@ProductTypeID", SqlDbType.VarChar); + param[3].Value = md.ProductTypeID; + + if (SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param) > 0) + { + return true; + } + return false; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + /// + /// 更新信息 + /// + /// 模型对象 + /// + public bool DeleteInfo(string ProductTypeID) + { + try + { + string sql = @"delete from " + TableName + @" where ProductTypeID=@ProductTypeID"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@ProductTypeID", SqlDbType.VarChar); + param[0].Value = ProductTypeID; + + if (SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param) > 0) + { + return true; + } + return false; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/StationDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/StationDAL.cs new file mode 100644 index 0000000..b2ae940 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/BasicInfo/StationDAL.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; +using System.Data; +using System.Data.SqlClient; +using System.Reflection; + +namespace MESClassLibrary.DAL.BasicInfo +{ + public class StationDAL + { + public static string TableName = "tb_Station"; + + public DataTable SearchInfoByNo(string station) + { + try + { + string sql = @"select * from " + TableName + " where StationNo=@StationNo"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@StationNo", SqlDbType.VarChar); + param[0].Value = station; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/Check/InspectResultDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/Check/InspectResultDAL.cs new file mode 100644 index 0000000..945be7b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/Check/InspectResultDAL.cs @@ -0,0 +1,253 @@ +using MESClassLibrary.BLL.Log; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.DAL.Check +{ + public class InspectResultDAL + { + public DataTable SearchByPage(int pageIndex, int pageSize, string StartTime, string EndTime, string position, string inspectResult) + { + try + { + //string sql = @"select top " + pageSize + " * from (select row_number() over(order by createTime desc) as rownumber,* from tb_InspectResult) temp_row "; + //sql += " where createTime>='"+ StartTime + "' and createTime<='" + EndTime + "'"; + //if (!string.IsNullOrEmpty(position)) + //{ + // sql += " and position = '" + position+"'"; + //} + //if (!string.IsNullOrEmpty(inspectResult)) + //{ + // sql += " and inspectResult like '%" + inspectResult + "%'"; + //} + //sql += " and rownumber > " + ((pageIndex - 1) * pageSize); + + string sql = "select * FROM[dbo].[tb_InspectResult] where barcode in "; + sql += "(select barcode from(select distinct barcode, createTime from [dbo].[tb_InspectResult] "; + sql += " where barcode is not null and createTime>='" + StartTime + "' and createTime<='" + EndTime + "' "; + if (!string.IsNullOrEmpty(position)) + { + sql += " and position = '" + position + "' "; + } + if (!string.IsNullOrEmpty(inspectResult)) + { + sql += " and inspectResult like '%" + inspectResult + "%' "; + } + sql += " order by createTime "; + sql += " offset " + ((pageIndex - 1) * pageSize) + " rows "; + sql += " fetch next " + pageSize + " rows only) temp_row) "; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchRepairByPage(int pageIndex, int pageSize, string StartTime, string EndTime, string inspectResult) + { + try + { + string sql = @" SELECT * FROM dbo.tb_InspectResult "; + + //sql += "(select barcode from(select distinct barcode, createTime from [dbo].[tb_InspectResult] "; + sql += " where barcode IS NOT NULL AND createTime BETWEEN '" + StartTime + "' AND '" + EndTime + ".999' and position='下线二检 点修补'"; + + if (!string.IsNullOrEmpty(inspectResult)) + { + sql += " and inspectResult like '%" + inspectResult + "%' "; + } + sql += " order by createTime "; + sql += " offset " + ((pageIndex - 1) * pageSize) + " rows "; + sql += " fetch next " + pageSize + " rows only "; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public int SearchCount(string StartTime, string EndTime, string position, string inspectResult) + { + try + { + string sql = "select count(1) as num from (select barcode as num FROM[dbo].[tb_InspectResult] where barcode in "; + sql += "(select distinct barcode from [dbo].[tb_InspectResult] "; + sql += " where barcode is not null and createTime>='" + StartTime + "' and createTime<='" + EndTime + "' "; + if (!string.IsNullOrEmpty(position)) + { + sql += " and position = '" + position + "' "; + } + if (!string.IsNullOrEmpty(inspectResult)) + { + sql += " and inspectResult like '%" + inspectResult + "%' "; + } + sql += " ) GROUP BY barcode) tem"; + //string sql = "select count(1) as num FROM[dbo].[tb_InspectResult] "; + //sql += " where barcode is not null and createTime>='" + StartTime + "' and createTime<='" + EndTime + "' "; + //if (!string.IsNullOrEmpty(position)) + //{ + // sql += " and position = '" + position + "' "; + //} + //if (!string.IsNullOrEmpty(inspectResult)) + //{ + // sql += " and inspectResult like '%" + inspectResult + "%' "; + //} + + return Convert.ToInt32(SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0].Rows[0]["num"].ToString()); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return 0; + } + } + + public int SearchCountByRepair(string StartTime, string EndTime, string inspectResult) + { + string sql = @" SELECT COUNT(*) as num FROM dbo.tb_InspectResult "; + //sql += "(select barcode from(select distinct barcode, createTime from [dbo].[tb_InspectResult] "; + sql += " where barcode IS NOT NULL AND createTime BETWEEN '" + StartTime + "' AND '" + EndTime + ".999' and position='下线二检 点修补'"; + + //string sql = @" SELECT COUNT(DISTINCT barcode) as num FROM dbo.tb_InspectResult WHERE barcode IS NOT NULL AND createTime BETWEEN '"+ StartTime + "' AND '"+ EndTime + ".999' AND position='下线二检 点修补'"; + if (!string.IsNullOrEmpty(inspectResult)) + { + sql += " and inspectResult like '%" + inspectResult + "%' "; + } + return Convert.ToInt32(SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0].Rows[0]["num"].ToString()); + } + + public DataTable Search(string StartTime, string EndTime, string position, string inspectResult) + { + try + { + + string sql = "select * FROM[dbo].[tb_InspectResult] where barcode in "; + sql += "(select distinct barcode from [dbo].[tb_InspectResult] "; + sql += " where barcode is not null and createTime<='" + EndTime + "' and createTime>='" + StartTime + "' "; + if (!string.IsNullOrEmpty(position)) + { + sql += " and position = '" + position + "' "; + } + if (!string.IsNullOrEmpty(inspectResult)) + { + sql += " and inspectResult like '%" + inspectResult + "%' "; + } + sql += " ) order by createTime"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchByRepair(string StartTime, string EndTime, string inspectResult) + { + try + { + + string sql = "select * FROM dbo.tb_InspectResult "; + sql += " where barcode IS NOT NULL AND createTime BETWEEN '" + StartTime + "' AND '" + EndTime + ".999' AND position='下线二检 点修补'"; + + if (!string.IsNullOrEmpty(inspectResult)) + { + sql += " and inspectResult like '%" + inspectResult + "%' "; + } + sql += " order by createTime"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + public DataTable SearchByPosition(string StartTime, string EndTime, string side, string product) + { + try + { + + string sql = "select * FROM[dbo].[tb_InspectResult] "; + sql += " where barcode is not null and createTime BETWEEN '" + StartTime + "' AND '" + EndTime + "'"; + if (!string.IsNullOrEmpty(side)) + { + if ("A侧".Equals(side)) + { + sql += " and (side = '" + side + "' or side ='' or side is null) "; + } + if ("B侧".Equals(side)) + { + sql += " and side = '" + side + "' "; + } + + } + if (!string.IsNullOrEmpty(product)) + { + if ("保险杠".Equals(product)) + { + sql += " and (product like '%前保%' or product like '%后保%')"; + } + } + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchByResult(string StartTime, string EndTime, string side) + { + try + { + + string sql = "select ID,barcode,side,position,stationNo,workClass,inspectResult,damnPosition,defectID,reason,productInfo,productOption,createTime,InspectTimes,replace(remark1,' ','') as remark1,remark2,remark3 FROM[dbo].[tb_InspectResult] "; + sql += " where barcode is not null and createTime BETWEEN '" + StartTime + "' and '" + EndTime + "' "; + sql += " and remark1 is not null and remark2 is not null"; + if (!string.IsNullOrEmpty(side)) + { + if ("A侧".Equals(side)) + { + sql += " and (side = '" + side + "' or side ='' or side is null) "; + } + if ("B侧".Equals(side)) + { + sql += " and side = '" + side + "' "; + } + + } + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/DataTableExtend.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/DataTableExtend.cs new file mode 100644 index 0000000..e67ea49 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/DataTableExtend.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Data; + +namespace MESClassLibrary.DAL +{ + public static class DataTableExtend + { + /// + /// 返回执行Select distinct后的DataTable + /// + /// 源数据表 + /// 字段集 + /// + public static DataTable SelectDistinct(DataTable SourceTable, params string[] FieldNames) + { + object[] lastValues; + DataTable newTable; + DataRow[] orderedRows; + + if (FieldNames == null || FieldNames.Length == 0) + throw new ArgumentNullException("FieldNames"); + + lastValues = new object[FieldNames.Length]; + newTable = new DataTable(); + + foreach (string fieldName in FieldNames) + newTable.Columns.Add(fieldName, SourceTable.Columns[fieldName].DataType); + + orderedRows = SourceTable.Select("", string.Join(",", FieldNames)); + + foreach (DataRow row in orderedRows) + { + if (!fieldValuesAreEqual(lastValues, row, FieldNames)) + { + newTable.Rows.Add(createRowClone(row, newTable.NewRow(), FieldNames)); + + setLastValues(lastValues, row, FieldNames); + } + } + + return newTable; + } + + private static bool fieldValuesAreEqual(object[] lastValues, DataRow currentRow, string[] fieldNames) + { + bool areEqual = true; + + for (int i = 0; i < fieldNames.Length; i++) + { + //if (lastValues[i] == null || !lastValues[i].Equals(currentRow[fieldNames[i]])) + //品牌字母有的大写,有的小写 + //if(lastValues[i] == null || lastValues[i].ToString().ToUpper()!= currentRow[fieldNames[i]].ToString().ToUpper()) + if(lastValues[i] == null || lastValues[i].ToString()!= currentRow[fieldNames[i]].ToString()) + { + areEqual = false; + break; + } + } + + return areEqual; + } + + private static DataRow createRowClone(DataRow sourceRow, DataRow newRow, string[] fieldNames) + { + foreach (string field in fieldNames) + newRow[field] = sourceRow[field].ToString();//品牌字母有的大写,有的小写 + + return newRow; + } + + private static void setLastValues(object[] lastValues, DataRow sourceRow, string[] fieldNames) + { + for (int i = 0; i < fieldNames.Length; i++) + lastValues[i] = sourceRow[fieldNames[i]]; + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/GetNewTasksDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/GetNewTasksDAL.cs new file mode 100644 index 0000000..8b0e8ae --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/GetNewTasksDAL.cs @@ -0,0 +1,123 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.ExchangeCenter +{ + public class GetNewTasksDAL + { + public static string TableName = "tb_GetNewTasks"; + + public bool AddInfo(GetNewTasksModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO " + TableName + " ([TaskState] ,[TaskID] ,[TableName],[TableName2],[TableName3],[Creator],[DataCount],[Subscriber] ,[FailedCount],[FailedInfo],[Domain],[Site],[GUID] ,[UID],[CreateUser],[CreateTime],[Remark],[UpdateUser] ,[UpdateTime],[IsChecked]"; + sql += ") VALUES ("; + sql += "@TaskState,"; + sql += "@TaskID,"; + sql += "@TableName,"; + sql += "@TableName2,"; + sql += "@TableName3,"; + sql += "@Creator,"; + sql += "@DataCount,"; + sql += "@Subscriber,"; + sql += "@FailedCount,"; + sql += "@FailedInfo,"; + sql += "@Domain,"; + sql += "@Site,"; + sql += "@GUID,"; + sql += "@UID,"; + sql += "@CreateUser,"; + sql += "@CreateTime,"; + sql += "@Remark,"; + sql += "@UpdateUser,"; + sql += "@UpdateTime,"; + sql += "@IsChecked)"; + + #region 添加参数 + param = new SqlParameter[20]; + param[0] = new SqlParameter("@TaskState", SqlDbType.VarChar); + param[0].Value = md.TaskState; + + param[1] = new SqlParameter("@TaskID", SqlDbType.VarChar); + param[1].Value = md.TaskID; + + param[2] = new SqlParameter("@TableName", SqlDbType.VarChar); + param[2].Value = md.TableName; + + param[3] = new SqlParameter("@TableName2", SqlDbType.VarChar); + param[3].Value = md.TableName2; + + param[4] = new SqlParameter("@TableName3", SqlDbType.VarChar); + param[4].Value = md.TableName3; + + param[5] = new SqlParameter("@Creator", SqlDbType.VarChar); + param[5].Value = md.Creator; + + param[6] = new SqlParameter("@DataCount", SqlDbType.VarChar); + param[6].Value = md.DataCount; + + param[7] = new SqlParameter("@Subscriber", SqlDbType.VarChar); + param[7].Value = md.Subscriber; + + param[8] = new SqlParameter("@FailedCount", SqlDbType.VarChar); + param[8].Value = md.FailedCount; + + param[9] = new SqlParameter("@FailedInfo", SqlDbType.VarChar); + param[9].Value = md.FailedInfo; + + param[10] = new SqlParameter("@Domain", SqlDbType.VarChar); + param[10].Value = md.Domain; + + param[11] = new SqlParameter("@Site", SqlDbType.VarChar); + param[11].Value = md.Site; + + param[12] = new SqlParameter("@GUID", SqlDbType.VarChar); + param[12].Value = md.GUID; + + param[13] = new SqlParameter("@UID", SqlDbType.VarChar); + param[13].Value = md.UID; + + param[14] = new SqlParameter("@CreateUser", SqlDbType.VarChar); + param[14].Value = md.CreateUser; + + param[15] = new SqlParameter("@CreateTime", SqlDbType.VarChar); + param[15].Value = md.CreateTime; + + param[16] = new SqlParameter("@Remark", SqlDbType.VarChar); + param[16].Value = md.Remark; + + param[17] = new SqlParameter("@UpdateUser", SqlDbType.VarChar); + param[17].Value = md.UpdateUser; + + param[18] = new SqlParameter("@UpdateTime", SqlDbType.VarChar); + param[18].Value = md.UpdateTime; + + param[19] = new SqlParameter("@IsChecked", SqlDbType.VarChar); + param[19].Value = md.IsChecked; + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/PartMstrDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/PartMstrDAL.cs new file mode 100644 index 0000000..81ae206 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/PartMstrDAL.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.ExchangeCenter +{ + public class PartMstrDAL + { + public static string TableName = "TES_PART_MSTR"; + public bool AddInfo(PartMstrModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO " + TableName + " (GUID,PartCode,Desc1,Desc2,Um,ProdLine,AddDate,PartType,Status,Qgrade,InventoryCode,UID,Remark,TaskID,CommandType,Domain,Site"; + sql += ") VALUES ("; + sql += "@GUID,"; + sql += "@PartCode,"; + sql += "@Desc1,"; + sql += "@Desc2,"; + sql += "@Um,"; + sql += "@ProdLine,"; + sql += "@AddDate,"; + sql += "@PartType,"; + sql += "@Status,"; + sql += "@Qgrade,"; + sql += "@InventoryCode,"; + sql += "@UID,"; + sql += "@Remark,"; + sql += "@TaskID,"; + sql += "@CommandType,"; + sql += "@Domain,"; + sql += "@Site)"; + + #region 添加参数 + param = new SqlParameter[17]; + param[0] = new SqlParameter("@GUID", SqlDbType.VarChar); + param[0].Value = md.GUID; + + param[1] = new SqlParameter("@PartCode", SqlDbType.VarChar); + param[1].Value = md.PartCode; + + param[2] = new SqlParameter("@Desc1", SqlDbType.VarChar); + param[2].Value = md.Desc1; + + param[3] = new SqlParameter("@Desc2", SqlDbType.VarChar); + param[3].Value = md.Desc2; + + param[4] = new SqlParameter("@Um", SqlDbType.VarChar); + param[4].Value = md.Um; + + param[5] = new SqlParameter("@ProdLine", SqlDbType.VarChar); + param[5].Value = md.ProdLine; + + param[6] = new SqlParameter("@AddDate", SqlDbType.VarChar); + param[6].Value = md.AddDate; + + param[7] = new SqlParameter("@PartType", SqlDbType.VarChar); + param[7].Value = md.PartType; + + param[8] = new SqlParameter("@Status", SqlDbType.VarChar); + param[8].Value = md.Status; + + param[9] = new SqlParameter("@Qgrade", SqlDbType.VarChar); + param[9].Value = md.Qgrade; + + param[10] = new SqlParameter("@InventoryCode", SqlDbType.VarChar); + param[10].Value = md.InventoryCode; + + param[11] = new SqlParameter("@UID", SqlDbType.VarChar); + param[11].Value = md.UID; + + param[12] = new SqlParameter("@Remark", SqlDbType.VarChar); + param[12].Value = md.Remark; + + param[13] = new SqlParameter("@TaskID", SqlDbType.VarChar); + param[13].Value = md.TaskID; + + param[14] = new SqlParameter("@CommandType", SqlDbType.VarChar); + param[14].Value = md.CommandType; + + param[15] = new SqlParameter("@Domain", SqlDbType.VarChar); + param[15].Value = md.Domain; + + param[16] = new SqlParameter("@Site", SqlDbType.VarChar); + param[16].Value = md.Site; + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/PartRecordDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/PartRecordDAL.cs new file mode 100644 index 0000000..299ea2e --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/PartRecordDAL.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.ExchangeCenter +{ + public class PartRecordDAL + { + public bool AddInfo(PartRecordModel md) + { + try + { + string sql =@"insert into tb_PartRecord (ID,PartNo,TaskID,CommandType) values(@ID,@PartNo,@TaskID,@CommandType)"; + + SqlParameter[] param=new SqlParameter[4]; + + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[1].Value = md.PartNo; + + param[3] = new SqlParameter("@TaskID", SqlDbType.VarChar); + param[3].Value = md.TaskID; + + param[4] = new SqlParameter("@CommandType", SqlDbType.VarChar); + param[4].Value = md.CommandType; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/TESBomDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/TESBomDAL.cs new file mode 100644 index 0000000..04a3075 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/TESBomDAL.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.ExchangeCenter +{ + public class TESBomDAL + { + public static string TableName = "TES_BOM"; + + public bool AddInfo(TESBomModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO " + TableName + " (ParentPart,ComponentPart,Reference,StartEffective,QuantityPer,StructureType,EndEffective,Remarks,Scrap,LeadTimeOffset,Operation,SequenceNumber,FporecastPercent,OptionGroup,Process,GUID,UID,CreateUser,CreateTime,Remark,TaskID,CommandType,DataID,Domain,Site"; + sql += ") VALUES ("; + sql += "@ParentPart,"; + sql += "@ComponentPart,"; + sql += "@Reference,"; + sql += "@StartEffective,"; + sql += "@QuantityPer,"; + sql += "@StructureType,"; + sql += "@EndEffective,"; + sql += "@Remarks,"; + sql += "@Scrap,"; + sql += "@LeadTimeOffset,"; + sql += "@Operation,"; + sql += "@SequenceNumber,"; + sql += "@FporecastPercent,"; + sql += "@OptionGroup,"; + sql += "@Process,"; + sql += "@GUID,"; + sql += "@UID,"; + sql += "@CreateUser,"; + sql += "@CreateTime,"; + sql += "@Remark,"; + sql += "@TaskID,"; + sql += "@CommandType,"; + sql += "@DataID,"; + sql += "@Domain,"; + sql += "@Site)"; + + #region 添加参数 + param = new SqlParameter[25]; + param[0] = new SqlParameter("@ParentPart", SqlDbType.VarChar); + param[0].Value = md.ParentPart; + + param[1] = new SqlParameter("@ComponentPart", SqlDbType.VarChar); + param[1].Value = md.ComponentPart; + + param[2] = new SqlParameter("@Reference", SqlDbType.VarChar); + param[2].Value = md.Reference; + + param[3] = new SqlParameter("@StartEffective", SqlDbType.VarChar); + param[3].Value = md.StartEffective; + + param[4] = new SqlParameter("@QuantityPer", SqlDbType.VarChar); + param[4].Value = md.QuantityPer; + + param[5] = new SqlParameter("@StructureType", SqlDbType.VarChar); + param[5].Value = md.StructureType; + + param[6] = new SqlParameter("@EndEffective", SqlDbType.VarChar); + param[6].Value = md.EndEffective; + + param[7] = new SqlParameter("@Remarks", SqlDbType.VarChar); + param[7].Value = md.Remarks; + + param[8] = new SqlParameter("@Scrap", SqlDbType.VarChar); + param[8].Value = md.Scrap; + + param[9] = new SqlParameter("@LeadTimeOffset", SqlDbType.VarChar); + param[9].Value = md.LeadTimeOffset; + + param[10] = new SqlParameter("@Operation", SqlDbType.VarChar); + param[10].Value = md.Operation; + + param[11] = new SqlParameter("@SequenceNumber", SqlDbType.VarChar); + param[11].Value = md.SequenceNumber; + + param[12] = new SqlParameter("@FporecastPercent", SqlDbType.VarChar); + param[12].Value = md.FporecastPercent; + + param[13] = new SqlParameter("@OptionGroup", SqlDbType.VarChar); + param[13].Value = md.OptionGroup; + + param[14] = new SqlParameter("@Process", SqlDbType.VarChar); + param[14].Value = md.Process; + + param[15] = new SqlParameter("@GUID", SqlDbType.VarChar); + param[15].Value = md.GUID; + + param[16] = new SqlParameter("@UID", SqlDbType.VarChar); + param[16].Value = md.UID; + + param[17] = new SqlParameter("@CreateUser", SqlDbType.VarChar); + param[17].Value = md.CreateUser; + + param[18] = new SqlParameter("@CreateTime", SqlDbType.VarChar); + param[18].Value = md.CreateTime; + + param[19] = new SqlParameter("@Remark", SqlDbType.VarChar); + param[19].Value = md.Remark; + + param[20] = new SqlParameter("@TaskID", SqlDbType.VarChar); + param[20].Value = md.TaskID; + + param[21] = new SqlParameter("@CommandType", SqlDbType.VarChar); + param[21].Value = md.CommandType; + + param[22] = new SqlParameter("@DataID", SqlDbType.VarChar); + param[22].Value = md.DataID; + + param[23] = new SqlParameter("@Domain", SqlDbType.VarChar); + param[23].Value = md.Domain; + + param[24] = new SqlParameter("@Site", SqlDbType.VarChar); + param[24].Value = md.Site; + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable Search() + { + try + { + string sql = "select * from " + TableName + " where ParentPart like '%-P' and ComponentPart like 'ROH%' and Flag=0"; + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool UpdateFlag(string TaskID) + { + try + { + string sql = "update " + TableName + " set Flag=1 where TaskID=@TaskID"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@TaskID", SqlDbType.VarChar); + param[0].Value = TaskID; + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/TESPartDetDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/TESPartDetDAL.cs new file mode 100644 index 0000000..ec7240a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/ExchangeCenter/TESPartDetDAL.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.ExchangeCenter +{ + public class TESPartDetDAL + { + public static string TableName = "TES_PART_DET"; + + public bool AddInfo(TESPartDetModel md) + { + try + { + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO " + TableName + " ([GUID],[PartCode],[Site],[KeyPart],SetupTime,UID,CreateUser,CreateTime,Remark,TaskID,CommandType,DataID,Domain"; + sql += ") VALUES ("; + sql += "@GUID,"; + sql += "@PartCode,"; + sql += "@Site,"; + sql += "@KeyPart,"; + sql += "@SetupTime,"; + sql += "@UID,"; + sql += "@CreateUser,"; + sql += "@CreateTime,"; + sql += "@Remark,"; + sql += "@TaskID,"; + sql += "@CommandType,"; + sql += "@DataID,"; + sql += "@Domain)"; + + #region 添加参数 + + param = new SqlParameter[13]; + param[0] = new SqlParameter("@GUID", SqlDbType.VarChar); + param[0].Value = md.GUID; + + param[1] = new SqlParameter("@PartCode", SqlDbType.VarChar); + param[1].Value = md.PartCode; + + param[2] = new SqlParameter("@Site", SqlDbType.VarChar); + param[2].Value = md.Site; + + param[3] = new SqlParameter("@KeyPart", SqlDbType.VarChar); + param[3].Value = md.KeyPart; + + param[4] = new SqlParameter("@SetupTime", SqlDbType.VarChar); + param[4].Value = md.SetupTime; + + param[5] = new SqlParameter("@UID", SqlDbType.VarChar); + param[5].Value = md.UID; + + param[6] = new SqlParameter("@CreateUser", SqlDbType.VarChar); + param[6].Value = md.CreateUser; + + param[7] = new SqlParameter("@CreateTime", SqlDbType.VarChar); + param[7].Value = md.CreateTime; + + param[8] = new SqlParameter("@Remark", SqlDbType.VarChar); + param[8].Value = md.Remark; + + param[9] = new SqlParameter("@TaskID", SqlDbType.VarChar); + param[9].Value = md.TaskID; + + param[10] = new SqlParameter("@CommandType", SqlDbType.VarChar); + param[10].Value = md.CommandType; + + param[11] = new SqlParameter("@DataID", SqlDbType.VarChar); + param[11].Value = md.DataID; + + param[12] = new SqlParameter("@Domain", SqlDbType.VarChar); + param[12].Value = md.Domain; + + #endregion + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/Injection/DownReasonDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/Injection/DownReasonDAL.cs new file mode 100644 index 0000000..e4a90f2 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/Injection/DownReasonDAL.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; + +namespace MESClassLibrary.DAL.Injection +{ + public class DownReasonDAL + { + public DataTable SearchReason() + { + try + { + string sql = @"select * from tb_Inhection_DownReason"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/Injection/InjectionDownRecordDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/Injection/InjectionDownRecordDAL.cs new file mode 100644 index 0000000..476aa95 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/Injection/InjectionDownRecordDAL.cs @@ -0,0 +1,159 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.Injection +{ + public class InjectionDownRecordDAL + { + public static string TableName = "tb_Injection_DownRecord"; + public bool AddInfo(InjectionDownRecordModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = " IF NOT EXISTS (SELECT * FROM tb_Injection_DownRecord WHERE StationID=@StationID AND EndTime IS NULL ) INSERT INTO " + TableName + " ([ID] ,[StationID] ,[DownType],[DownReason],[Des],[StartTime]"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@StationID,"; + sql += "@DownType,"; + sql += "@DownReason,"; + sql += "@Des,"; + sql += "@StartTime)"; + + #region 添加参数 + param = new SqlParameter[6]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[1].Value = md.StationID; + + param[2] = new SqlParameter("@DownType", SqlDbType.VarChar); + param[2].Value = md.DownType; + + param[3] = new SqlParameter("@DownReason", SqlDbType.VarChar); + param[3].Value = md.DownReason; + + param[4] = new SqlParameter("@Des", SqlDbType.VarChar); + param[4].Value = md.Des; + + param[5] = new SqlParameter("@StartTime", SqlDbType.DateTime); + param[5].Value = md.StartTime; + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdateInfo(InjectionDownRecordModel md) + { + try + { + #region 添加数据 + //string sql = @"update " + TableName + " set EndTime=@EndTime WHERE [StationID]=@StationID AND EndTime IS NULL "; + string sql = @"update " + TableName + " set DownType=@DownType,DownReason=@DownReason,Des=@Des WHERE ID=(select top 1 ID from tb_Injection_DownRecord where [StationID]=@StationID AND EndTime IS NULL order by StartTime DESC)"; + SqlParameter[] param = null; + + #region 添加参数 + param = new SqlParameter[4]; + param[0] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[0].Value = md.StationID; + + param[1] = new SqlParameter("@DownType", SqlDbType.VarChar); + param[1].Value = md.DownType; + + param[2] = new SqlParameter("@DownReason", SqlDbType.VarChar); + param[2].Value = md.DownReason; + + param[3] = new SqlParameter("@Des", SqlDbType.VarChar); + param[3].Value = md.Des; + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + + public DataTable SearchByTime(string StartTime, string EndTime) + { + try + { + string sql = @" SELECT * FROM dbo.tb_Injection_DownRecord "; + sql += " where StationID is not null and StartTime>='" + StartTime + "' and EndTime<='" + EndTime + "'"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + + public DataTable SearchChangeRecord(string StartTime, string EndTime, string ModelId) + { + try + { + string sql = @" SELECT s.StationNo,m.PrintDate,d.StartTime,d.DownTime,d.EndTime,m.ModelSumCount,m.ModelPrintCount,d.remark1 FROM (SELECT * FROM [dbo].[tb_ModelCount] WHERE "; + sql += "ModelID = '" + ModelId + "' and PrintDate>= '"+ StartTime + "' and PrintDate<= '"+ EndTime + "') as m "; + sql += "left join (SELECT* FROM [dbo].[tb_Injection_DownRecord] where StationID is not null and StartTime>='" + StartTime + "' and EndTime<='" + EndTime + "') as d on m.StationID = d.StationID left join tb_Station s on d.StationID = s.StationID"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + //故障停机查询 + public DataTable SearchRepaorByTime(string StartTime, string EndTime) + { + try + { + string sql = @" SELECT d.StationID,s.StationNo,d.StartTime,d.EndTime,d.DownTime,d.Des,d.Remark1,d.Remark2,d.Remark3 FROM dbo.tb_Injection_DownRecord d "; + sql += " left join tb_Station s on d.StationID = s.StationID "; + sql += " where d.StationID is not null and d.StartTime>='" + StartTime + "' and d.EndTime<='" + EndTime + "' and d.DownType='F1F851FB-8913-40B7-A992-F28A3FD25054' order by d.StartTime"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/Injection/InjectionRecordDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/Injection/InjectionRecordDAL.cs new file mode 100644 index 0000000..190ab03 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/Injection/InjectionRecordDAL.cs @@ -0,0 +1,113 @@ +using MESClassLibrary.BLL.Log; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.DAL.Injection +{ + public class InjectionRecordDAL + { + public DataTable SearchByTime(string StartTime, string EndTime) + { + try + { + + string sql = "select * FROM [dbo].[tb_Product_Injection] "; + sql += " where ProductDate is not null and ProductDate>='" + StartTime + "' and ProductDate<='" + EndTime + "'"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchProductInjectionRecord(string StartTime, string EndTime) { + + string sql = "SELECT t.PlanID,t.ProductDate,t.ClassName,s.StationNo,p.ProductName,r.MaterialName,r.BatchNo,pl.OpenDebugTime,pl.CycleTime,i.RealCycle,i.PlanCount,t.ProductCount,t.BadCount,pl.Weight,ir.Waste_Weight,ir.JK_Weight,i.BeginTime,i.EndTime "; + sql += " FROM[dbo].[tb_Product_Injection] t "; + sql += " left join tb_Product p on t.PartNo = p.PartNo "; + sql += " left join tb_Station s on t.StationID = s.StationID "; + sql += " left join tb_InjectPlanReport r on t.PlanID = r.InjectionPlanID "; + sql += " left join tb_Plastic pl on t.StockNo = pl.StockNo and t.StationID = pl.StationID "; + sql += " left join tb_InjectionPlan i on t.PlanID = i.InjectionPlanID "; + sql += " left join tb_Injection_Record ir on t.PlanID = ir.PlanID "; + sql += " where t.ProductDate >='" + StartTime + "' and t.ProductDate <='" + EndTime + "' order by t.ProductDate,t.ClassName,t.StationID"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + } + + public DataTable SearchProductInjectionRecordBadReason(string StartTime, string EndTime) + { + + string sql = "SELECT bc.PlanID,bi.BadReason from tb_Bad_Injection bi "; + sql += " left join tb_BarCode bc on bi.OneBarCode = bc.OneBarCode "; + sql += " where bc.PlanID in (SELECT PlanID FROM tb_Product_Injection t where t.ProductDate >='"+ StartTime + "' and t.ProductDate <='"+ EndTime + "')"; + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + } + + + public DataTable SearchProductInjectionRecordDownReason(string StartTime, string EndTime) + { + + string sql = "SELECT PlanID,DownTime,DownTypeName,Reason from tb_Injection_DownRecord r "; + sql += " left join tb_Injection_DownType t on r.DownType = t.ID "; + sql += " left join tb_Inhection_DownReason s on r.DownReason = s.ID "; + sql += " where r.PlanID in (SELECT PlanID FROM tb_Product_Injection t where t.ProductDate >='" + StartTime + "' and t.ProductDate <='" + EndTime + "') and DownTime is not null"; + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + } + + + public DataTable SearchProductInjection(string StartTime, string EndTime,string StationID) + { + + string sql = "SELECT t.ID,t.ProductDate,t.ClassName,s.StationNo,t.StockNo,t.PartNo,t.ProductCount,ir.RealCycle,ir.Waste_Weight,ir.JK_Weight "; + sql += " FROM[dbo].[tb_Product_Injection] t "; + sql += " left join tb_Station s on t.StationID = s.StationID "; + sql += " left join tb_Injection_Record ir on t.ID = ir.PI_ID "; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + } + + + public DataTable SearchRecordByPage(int pageIndex, int pageSize, string StartTime, string EndTime, string StationID) + { + try + { + string sql = @"SELECT t.ID,t.ProductDate,t.ClassName,t.StationID,s.StationNo,t.StockNo,t.PartNo,t.ProductCount,ir.RealCycle,ir.Waste_Weight,ir.JK_Weight "; + sql += " FROM[dbo].[tb_Product_Injection] t "; + sql += " left join tb_Station s on t.StationID = s.StationID "; + sql += " left join tb_Product_Injection_w ir on t.ID = ir.ID "; + sql += " where t.ProductDate >='" + StartTime + "' and t.ProductDate <='" + EndTime + "' "; + + if (!string.IsNullOrEmpty(StationID)) + { + sql += " and t.StationID = '" + StationID + "' "; + } + sql += " order by t.ProductDate,t.ClassName,t.StationID "; + sql += " offset " + ((pageIndex - 1) * pageSize) + " rows "; + sql += " fetch next " + pageSize + " rows only "; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + + + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/AssemblyDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/AssemblyDAL.cs new file mode 100644 index 0000000..57b129a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/AssemblyDAL.cs @@ -0,0 +1,202 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.Mistake247 +{ + public class AssemblyDAL + { + public static string TableName = "tb_Assembly_247"; + public bool AddInfo(AssemblyModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO " + TableName + " (ID,PartNo,PartName,BatchNo,Color,ColorNo,PartType,TapeBatchNo,Validity,ValidityDate,Des,Flag"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@PartNo,"; + sql += "@PartName,"; + sql += "@BatchNo,"; + sql += "@Color,"; + sql += "@ColorNo,"; + sql += "@PartType,"; + sql += "@TapeBatchNo,"; + sql += "@Validity,"; + sql += "@ValidityDate,"; + sql += "@Des,"; + sql += "@Flag)"; + + #region 添加参数 + param = new SqlParameter[12]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[1].Value = md.PartNo; + + param[2] = new SqlParameter("@PartName", SqlDbType.VarChar); + param[2].Value = md.PartName; + + param[3] = new SqlParameter("@BatchNo", SqlDbType.VarChar); + param[3].Value = md.BatchNo; + + param[4] = new SqlParameter("@Color", SqlDbType.VarChar); + param[4].Value = md.Color; + + param[5] = new SqlParameter("@ColorNo", SqlDbType.VarChar); + param[5].Value = md.ColorNo; + + param[6] = new SqlParameter("@PartType", SqlDbType.VarChar); + param[6].Value = md.PartType; + + param[7] = new SqlParameter("@TapeBatchNo", SqlDbType.VarChar); + param[7].Value = md.TapeBatchNo; + + param[8] = new SqlParameter("@Validity", SqlDbType.VarChar); + param[8].Value = md.Validity; + + param[9] = new SqlParameter("@ValidityDate", SqlDbType.VarChar); + param[9].Value = md.ValidityDate; + + param[10] = new SqlParameter("@Des", SqlDbType.VarChar); + param[10].Value = md.Des; + + param[11] = new SqlParameter("@Flag", SqlDbType.Int); + param[11].Value = md.Flag; + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdateInfo(AssemblyModel md) + { + string sql = ""; + SqlParameter[] param = null; + + try + { + sql = "update " + TableName + " set PrintTime=(select getdate()) where substring (PartNo,1,11)= @PartNo and (PrintTime is null or PrintTime='')"; + + param = new SqlParameter[1]; + param[0] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[0].Value = md.PartNo.Substring(0,11); + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + public DataTable SearchCount(string PartNo) + { + try + { + string sql = @"SELECT count(*) as sum from tb_Assembly_247 where PartNo=@PartNo and IsPrintBox=0"; + SqlParameter[] param = new SqlParameter[1]; + + param[0] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[0].Value = PartNo; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool UpdatePrintFlag(AssemblyModel md) + { + string sql = ""; + SqlParameter[] param = null; + + try + { + sql = "update " + TableName + " set IsPrintBox=1 where PartNo=@PartNo and IsPrintBox =0"; + + param = new SqlParameter[1]; + param[0] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[0].Value = md.PartNo; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdatePrintFlag1(string partno) + { + string sql = ""; + SqlParameter[] param = null; + + try + { + sql = "update " + TableName + " set IsPrintBox=1 where PartNo=@PartNo and IsPrintBox =0"; + + param = new SqlParameter[1]; + param[0] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[0].Value = partno; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable searchPartNo(string partNo) + { + try + { + string sql = @"SELECT top 1 * from tb_Assembly_247 where PartNo like '%" + partNo + "%' and Flag=0 order by CreateTime desc"; + //SqlParameter[] param = new SqlParameter[1]; + + //param[0] = new SqlParameter("@PartNo", SqlDbType.VarChar); + //param[0].Value = partNo; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/BoxDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/BoxDAL.cs new file mode 100644 index 0000000..ee07b17 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/BoxDAL.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.Mistake247 +{ + public class BoxDAL + { + public static string TableName = "tb_Box_247"; + public bool AddInfo(BoxModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO " + TableName + " (ID,BoxNo,PartNo,PartName,BatchNo,BoxCount,Des,Flag,Validity,ValidityDate"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@BoxNo,"; + sql += "@PartNo,"; + sql += "@PartName,"; + sql += "@BatchNo,"; + sql += "@BoxCount,"; + sql += "@Des,"; + sql += "@Flag,"; + sql += "@Validity,"; + sql += "@ValidityDate)"; + + #region 添加参数 + param = new SqlParameter[10]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@BoxNo", SqlDbType.VarChar); + param[1].Value = md.BoxNo; + + param[2] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[2].Value = md.PartNo; + + param[3] = new SqlParameter("@PartName", SqlDbType.VarChar); + param[3].Value = md.PartName; + + param[4] = new SqlParameter("@BatchNo", SqlDbType.VarChar); + param[4].Value = md.BatchNo; + + param[5] = new SqlParameter("@BoxCount", SqlDbType.Int); + param[5].Value = md.BoxCount; + + param[6] = new SqlParameter("@Des", SqlDbType.VarChar); + param[6].Value = md.Des; + + param[7] = new SqlParameter("@Flag", SqlDbType.Int); + param[7].Value = md.Flag; + + param[8] = new SqlParameter("@Validity", SqlDbType.VarChar); + param[8].Value = md.Validity; + + param[9] = new SqlParameter("@ValidityDate", SqlDbType.VarChar); + param[9].Value = md.ValidityDate; + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchByNo(string PartNo,string BatchNo) + { + try + { + string sql = @"SELECT top 1 * from " + TableName + " where PartNo=@PartNo and SUBSTRING(BoxNo,13,6)=@BatchNo order by CreateTime"; + SqlParameter[] param = new SqlParameter[2]; + + param[0] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[0].Value = PartNo; + + param[1] = new SqlParameter("@BatchNo", SqlDbType.VarChar); + param[1].Value = BatchNo; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool UpdateInfo(BoxModel md) + { + try + { + string sql = ""; + SqlParameter[] param = null; + sql = "update " + TableName + " set PrintTime=(select getdate()) where PartNo=@PartNo and PrintTime is null"; + + param = new SqlParameter[1]; + param[0] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[0].Value = md.PartNo; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchBox(string partno) + { + try + { + string sql = @"SELECT top 1 * from " + TableName + " where PartNo=@PartNo and Flag=0 order by CreateTime"; + SqlParameter[] param = null; + + param = new SqlParameter[1]; + param[0] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[0].Value = partno; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchBoxIsExsit(string box) + { + try + { + string sql = @"SELECT * from " + TableName + " where BoxNo=@BoxNo"; + SqlParameter[] param = null; + + param = new SqlParameter[1]; + param[0] = new SqlParameter("@BoxNo", SqlDbType.VarChar); + param[0].Value = box; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/MistakeDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/MistakeDAL.cs new file mode 100644 index 0000000..83e56e3 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/MistakeDAL.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; + +namespace MESClassLibrary.DAL.Mistake247 +{ + public class MistakeDAL + { + public DataTable IsMath(string DeviceNo, string PartNo) + { + try + { + string sql = @"SELECT * from tb_Mistake_247 where DeviceNo=@DeviceNo and PartNo1=@PartNo"; + SqlParameter[] param = new SqlParameter[2]; + + param[0] = new SqlParameter("@DeviceNo", SqlDbType.VarChar); + param[0].Value = DeviceNo; + + param[1] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[1].Value = PartNo; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchByNo(string PartNo, string deviceNo) + { + try + { + string sql = @"SELECT * from tb_Mistake_247 where PartNo1=@PartNo and DeviceNo=@deviceNo"; + SqlParameter[] param = new SqlParameter[2]; + + param[0] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[0].Value = PartNo; + + param[1] = new SqlParameter("@deviceNo", SqlDbType.VarChar); + param[1].Value = deviceNo; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchPartName(string PartNo) + { + try + { + string sql = @"SELECT * from tb_Mistake_247 where [PartNo2]=@PartNo "; + SqlParameter[] param = new SqlParameter[1]; + + param[0] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[0].Value = PartNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchPartNoByDecice(string deviceNo) + { + try + { + string sql = @"SELECT * from tb_Mistake_247 where DeviceNo=@DeviceNo "; + SqlParameter[] param = new SqlParameter[1]; + + param[0] = new SqlParameter("@DeviceNo", SqlDbType.VarChar); + param[0].Value = deviceNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/Plan247DAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/Plan247DAL.cs new file mode 100644 index 0000000..c0fa21d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/Plan247DAL.cs @@ -0,0 +1,214 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; + +namespace MESClassLibrary.DAL.Mistake247 +{ + public class Plan247DAL + { + public static string TableName = "tb_Plan_247"; + + public DataTable SearhByOrderNo(string OrderNo) + { + try + { + string sql = @"SELECT dbo.tb_Plan_247.OrderNo, dbo.tb_Plan_247.PartNo, dbo.tb_Mistake_247.PartName2, + dbo.tb_Plan_247.OrderCount,dbo.tb_Plan_247.IsFinish,dbo.tb_Plan_247.CompleteCount + FROM dbo.tb_Plan_247 LEFT OUTER JOIN + dbo.tb_Mistake_247 ON dbo.tb_Plan_247.PartNo = dbo.tb_Mistake_247.PartNo2 + where dbo.tb_Plan_247.OrderNo=@OrderNo + ORDER BY dbo.tb_Plan_247.CreateTime"; + SqlParameter[] param = new SqlParameter[1]; + + param[0] = new SqlParameter("@OrderNo", SqlDbType.VarChar); + param[0].Value = OrderNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable DetailOrderNo(string OrderNo) + { + try + { + string sql = @"SELECT dbo.tb_Plan_247.Item, dbo.tb_Plan_247.PartNo, dbo.tb_Mistake_247.PartName2, + dbo.tb_Plan_247.OrderCount + FROM dbo.tb_Plan_247 LEFT OUTER JOIN + dbo.tb_Mistake_247 ON dbo.tb_Plan_247.PartNo = dbo.tb_Mistake_247.PartNo2 + where dbo.tb_Plan_247.OrderNo=@OrderNo + ORDER BY dbo.tb_Plan_247.CreateTime"; + SqlParameter[] param = new SqlParameter[1]; + + param[0] = new SqlParameter("@OrderNo", SqlDbType.VarChar); + param[0].Value = OrderNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 根据半成品零件号查找扫描的订单中是否有此产品的生产计划 + /// + /// + /// + public DataTable IsHavePlan(string partNo1,string orderNo) + { + try + { + string sql = @"SELECT top 1 dbo.tb_Plan_247.OrderNo, dbo.tb_Plan_247.Item, dbo.tb_Plan_247.PartNo, + dbo.tb_Plan_247.OrderCount, dbo.tb_Plan_247.CompleteCount, dbo.tb_Mistake_247.PartNo1 + FROM dbo.tb_Plan_247 LEFT OUTER JOIN + dbo.tb_Mistake_247 ON dbo.tb_Plan_247.PartNo = dbo.tb_Mistake_247.PartNo2 + where PartNo1=@PartNo1 and OrderNo =@orderNo and IsFinish =0 + ORDER BY dbo.tb_Plan_247.CreateTime"; + SqlParameter[] param = new SqlParameter[2]; + + param[0] = new SqlParameter("@PartNo1", SqlDbType.VarChar); + param[0].Value = partNo1; + + param[1] = new SqlParameter("@orderNo", SqlDbType.VarChar); + param[1].Value = orderNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 根据半成品零件号查找订单号 + /// + /// + /// + public DataTable SearchOrderNoByPart1(string partNo1) + { + try + { + string sql = @"SELECT top 1 dbo.tb_Plan_247.OrderNo, dbo.tb_Plan_247.Item, dbo.tb_Plan_247.PartNo, + dbo.tb_Plan_247.OrderCount, dbo.tb_Plan_247.CompleteCount, dbo.tb_Mistake_247.PartNo1 + FROM dbo.tb_Plan_247 LEFT OUTER JOIN + dbo.tb_Mistake_247 ON dbo.tb_Plan_247.PartNo = dbo.tb_Mistake_247.PartNo2 + where PartNo1=@PartNo1 and IsFinish =0 + ORDER BY dbo.tb_Plan_247.CreateTime "; + SqlParameter[] param = new SqlParameter[1]; + + param[0] = new SqlParameter("@PartNo1", SqlDbType.VarChar); + param[0].Value = partNo1; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearhCountByOrderNo(string OrderNo,string partNo) + { + try + { + string sql = @"SELECT dbo.tb_Plan_247.OrderNo, dbo.tb_Plan_247.PartNo, dbo.tb_Mistake_247.PartName2, + dbo.tb_Plan_247.OrderCount,dbo.tb_Plan_247.IsFinish + FROM dbo.tb_Plan_247 LEFT OUTER JOIN + dbo.tb_Mistake_247 ON dbo.tb_Plan_247.PartNo = dbo.tb_Mistake_247.PartNo2 + where dbo.tb_Plan_247.OrderNo=@OrderNo and dbo.tb_Plan_247.PartNo=@PartNo + ORDER BY dbo.tb_Plan_247.CreateTime"; + SqlParameter[] param = new SqlParameter[2]; + + param[0] = new SqlParameter("@OrderNo", SqlDbType.VarChar); + param[0].Value = OrderNo; + + param[1] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[1].Value = partNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 更新订单完成数 + /// + /// + /// + /// + public bool UpdateCount(string partNo, string orderNo) + { + try + { + string sql = "update tb_Plan_247 set [CompleteCount]=[CompleteCount]+1 where OrderNo=@OrderNo and PartNo =@PartNo"; + SqlParameter[] param = null; + + #region 添加参数 + param = new SqlParameter[2]; + param[0] = new SqlParameter("@OrderNo", SqlDbType.VarChar); + param[0].Value = orderNo; + + param[1] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[1].Value = partNo; + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchPlanIDByOrderNo(string partNo, string orderNo) + { + try + { + string sql = @"select ID from tb_Plan_247 where OrderNo=@OrderNo and PartNo =@PartNo"; + SqlParameter[] param = null; + + #region 添加参数 + param = new SqlParameter[2]; + param[0] = new SqlParameter("@OrderNo", SqlDbType.VarChar); + param[0].Value = orderNo; + + param[1] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[1].Value = partNo; + + #endregion + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/RecordDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/RecordDAL.cs new file mode 100644 index 0000000..cfa6d57 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/Mistake247/RecordDAL.cs @@ -0,0 +1,311 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.Mistake247 +{ + public class RecordDAL + { + public static string TableName = "tb_Record_247"; + + /// + /// 查找半成品是否已经装配 + /// + /// + /// + public DataTable SearchByPartNo1(string PartNo) + { + try + { + string sql = @"SELECT * from " + TableName + " where PartNo1=@PartNo"; + SqlParameter[] param = new SqlParameter[1]; + + param[0] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[0].Value = PartNo; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchCountByBox(string boxNo) + { + try + { + string sql = @"SELECT count(*) as sum from " + TableName + " where BoxNo=@BoxNo and Flag <>2"; + SqlParameter[] param = new SqlParameter[1]; + + param[0] = new SqlParameter("@BoxNo", SqlDbType.VarChar); + param[0].Value = boxNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool AddInfo(RecordModel md) + { + try + { + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO " + TableName + " (ID,PartNo1,PartNo2,OrderNo,Type"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@PartNo1,"; + sql += "@PartNo2,"; + sql += "@OrderNo,"; + sql += "@Type)"; + + #region 添加参数 + param = new SqlParameter[5]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@PartNo1", SqlDbType.VarChar); + param[1].Value = md.PartNo1; + + param[2] = new SqlParameter("@PartNo2", SqlDbType.VarChar); + param[2].Value = md.PartNo2; + + param[3] = new SqlParameter("@OrderNo", SqlDbType.VarChar); + param[3].Value = md.OrderNo; + + param[4] = new SqlParameter("@Type", SqlDbType.Int); + param[4].Value = md.Type; + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool updateBoxInfo(RecordModel md) + { + try + { + string sql = ""; + SqlParameter[] param = null; + + sql = @"update " + TableName + " set BoxNo=@BoxNo,CreateTime2=(select getdate()),Flag=@Flag where PartNo2=@PartNo2"; + + #region 添加参数 + + param = new SqlParameter[3]; + param[0] = new SqlParameter("@BoxNo", SqlDbType.VarChar); + param[0].Value = md.BoxNo; + + param[1] = new SqlParameter("@Flag", SqlDbType.Int); + param[1].Value = md.Flag; + + param[2] = new SqlParameter("@PartNo2", SqlDbType.VarChar); + param[2].Value = md.PartNo2; + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchState(int type1,int type2,int type3) + { + try + { + //string sql = @"SELECT * from " + TableName + " where Type in (@type1,@type2,@type3) and Flag =0 order by CreateTime1"; + + //string sql = @"SELECT * from " + TableName + " where Type in (@type1,@type2,@type3) and Flag =0 order by CreateTime1"; + + //string sql = @"SELECT * from " + TableName + " where Type in (@type1,@type2,@type3) and Flag =0 order by CreateTime1"; + string sql = @" + SELECT * from tb_record_247 where Type in (@type1,@type2,@type3) and Flag =0 AND CreateTime1 >= CONVERT(VARCHAR(10),GETDATE(),120) AND CreateTime1 < (CONVERT(VARCHAR(10),GETDATE(),120)+' 23:59:59') order by CreateTime1 + "; + + SqlParameter[] param = new SqlParameter[3]; + + param[0] = new SqlParameter("@type1", SqlDbType.Int); + param[0].Value = type1; + + param[1] = new SqlParameter("@type2", SqlDbType.Int); + param[1].Value = type2; + + param[2] = new SqlParameter("@type3", SqlDbType.Int); + param[2].Value = type3; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool DelInfo(RecordModel md) + { + try + { + string sql = ""; + SqlParameter[] param = null; + + sql = @"update " + TableName + " set Flag=@Flag where PartNo2=@PartNo2"; + + #region 添加参数 + + param = new SqlParameter[2]; + + param[0] = new SqlParameter("@Flag", SqlDbType.Int); + param[0].Value = md.Flag; + + param[1] = new SqlParameter("@PartNo2", SqlDbType.VarChar); + param[1].Value = md.PartNo2; + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchBoxByPart(string part) + { + try + { + string sql = @"SELECT top 1 * from " + TableName + " where SUBSTRING(PartNo2,1,11)=@PartNo2 order by CreateTime2 desc"; + SqlParameter[] param = new SqlParameter[1]; + + param[0] = new SqlParameter("@PartNo2", SqlDbType.VarChar); + param[0].Value = part; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchByPartNo2(string partno) + { + try + { + string sql = @"SELECT * from " + TableName + " where PartNo2=@PartNo"; + SqlParameter[] param = new SqlParameter[1]; + + param[0] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[0].Value = partno; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable GetCount(string part,string batch) + { + try + { + string sql = @"SELECT count(*) as sum from " + TableName + " where SUBSTRING(PartNo2,1,11)=@PartNo2 and SUBSTRING(PartNo2,13,6)=@batch "; + SqlParameter[] param = new SqlParameter[2]; + + param[0] = new SqlParameter("@PartNo2", SqlDbType.VarChar); + param[0].Value = part; + + param[1] = new SqlParameter("@batch", SqlDbType.VarChar); + param[1].Value = batch; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable GetRecord(string boxNo) + { + try + { + string sql = @" + SELECT PartNo2,CreateTime1 FROM tb_record_247 WHERE boxno = '" + boxNo + @"' ORDER BY createtime1 + "; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + ///根据改订单的生产数量 + /// + /// + /// + public DataTable GetOrderNum(string orderno) + { + try + { + string sql = @"SELECT count(*) as sum from tb_record_247 where OrderNo=@OrderNo"; + SqlParameter[] param = new SqlParameter[1]; + + param[0] = new SqlParameter("@OrderNo", SqlDbType.VarChar); + param[0].Value = orderno; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/Plan247/Plan247DAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/Plan247/Plan247DAL.cs new file mode 100644 index 0000000..6961706 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/Plan247/Plan247DAL.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.DAL.Plan247 +{ + public class Plan247DAL + { + + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchAdressDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchAdressDAL.cs new file mode 100644 index 0000000..367c598 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchAdressDAL.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; + +namespace MESClassLibrary.DAL.PunchAndWeld +{ + public class PunchAdressDAL + { + public DataTable SearchInfo(string deviceNo ,int i) + { + try + { + string sql = @"SELECT * from tb_PunchAddress where DeviceNo=@DeviceNo and RW=@RW order by ID"; + SqlParameter[] param = null; + + param = new SqlParameter[2]; + param[0] = new SqlParameter("@DeviceNo", SqlDbType.VarChar); + param[0].Value = deviceNo; + + param[1] = new SqlParameter("@RW", SqlDbType.Int); + param[1].Value = i; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchAndStationDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchAndStationDAL.cs new file mode 100644 index 0000000..d53d9a7 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchAndStationDAL.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; + +namespace MESClassLibrary.DAL.PunchAndWeld +{ + public class PunchAndStationDAL + { + public DataTable IsMath(string partNo1, string partNo2) + { + try + { + string sql = @"SELECT tb_Product_1.PartNo AS PartNo1, tb_Product_1.ProductName AS ProductName1, dbo.tb_Product.PartNo AS PartNo2, + dbo.tb_Product.ProductName AS ProductName2 + FROM dbo.tb_PunchAndStation LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_PunchAndStation.ProductID2 = dbo.tb_Product.ProductID LEFT OUTER JOIN + dbo.tb_Product AS tb_Product_1 ON dbo.tb_PunchAndStation.ProductID1 = tb_Product_1.ProductID + where tb_Product_1.PartNo=@partNo1 and dbo.tb_Product.PartNo =@partNo2"; + SqlParameter[] param = null; + + param = new SqlParameter[2]; + param[0] = new SqlParameter("@partNo1", SqlDbType.VarChar); + param[0].Value = partNo1; + + param[1] = new SqlParameter("@partNo2", SqlDbType.VarChar); + param[1].Value = partNo2; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchDeviceDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchDeviceDAL.cs new file mode 100644 index 0000000..761118c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchDeviceDAL.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; + +namespace MESClassLibrary.DAL.PunchAndWeld +{ + public class PunchDeviceDAL + { + public DataTable SearchInfo() + { + try + { + string sql = @"select * from tb_PunchDevice "; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchDeviceNo(string deviceName) + { + try + { + string sql = @"select * from tb_PunchDevice where DeviceName=@DeviceName"; + + SqlParameter[] param = null; + + param = new SqlParameter[1]; + param[0] = new SqlParameter("@DeviceName", SqlDbType.VarChar); + param[0].Value = deviceName; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchPartDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchPartDAL.cs new file mode 100644 index 0000000..8207ac2 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchPartDAL.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; + +namespace MESClassLibrary.DAL.PunchAndWeld +{ + public class PunchPartDAL + { + public DataTable SearchPunchPart(string deviceNo) + { + try + { + string sql = @"select * from tb_Product where ProductTypeID='3a8545ee-5979-4780-a5ca-6c5e75685ae2' and DeviceNo='"+ deviceNo +"' order by ProductName "; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchPlanDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchPlanDAL.cs new file mode 100644 index 0000000..e6441e0 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchPlanDAL.cs @@ -0,0 +1,172 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.DAL; +using MESClassLibrary.Model; + +namespace MESClassLibrary.BLL.PunchAndWeld +{ + public class PunchPlanDAL + { + /// + /// 查询设备当前计划 + /// + /// + /// + public DataTable SearchPlan(string deviceNo) + { + try + { + string sql =@"SELECT top 1 dbo.tb_PunchPlan.ID, dbo.tb_PunchPlan.DeviceNo, dbo.tb_PunchPlan.PlanCount, dbo.tb_PunchPlan.CompleteCount, + dbo.tb_PunchPlan.BadCount, dbo.tb_PunchPlan.IsFinish, dbo.tb_Product.PartNo, dbo.tb_Product.ProductName + FROM dbo.tb_PunchPlan LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_PunchPlan.ProductID = dbo.tb_Product.ProductID where dbo.tb_PunchPlan.DeviceNo=@DeviceNo and IsFinish=0 order by CreateTime"; + + SqlParameter[] param = null; + + param = new SqlParameter[1]; + param[0] = new SqlParameter("@DeviceNo", SqlDbType.VarChar); + param[0].Value = deviceNo; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 查询所有设备未完成的计划 + /// + /// + public DataTable SearchAllPlan() + { + string sql = @"SELECT dbo.tb_PunchPlan.ID, dbo.tb_PunchPlan.DeviceNo, dbo.tb_PunchPlan.PlanCount, dbo.tb_PunchPlan.CompleteCount, + dbo.tb_PunchPlan.BadCount, dbo.tb_PunchPlan.IsFinish, dbo.tb_Product.PartNo, dbo.tb_Product.ProductName, + dbo.tb_PunchDevice.DeviceName + FROM dbo.tb_PunchPlan LEFT OUTER JOIN + dbo.tb_PunchDevice ON dbo.tb_PunchPlan.DeviceNo = dbo.tb_PunchDevice.DeviceNo LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_PunchPlan.ProductID = dbo.tb_Product.ProductID where IsFinish=0 order by CreateTime"; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + } + + public bool AddInfo(PunchPlanModel md) + { + try + { + string sql = ""; + SqlParameter[] param = null; + sql = " insert into tb_PunchPlan(ID,DeviceNo,ProductID,PlanCount"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@DeviceNo,"; + sql += "@ProductID,"; + sql += "@PlanCount)"; + + param = new SqlParameter[4]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@DeviceNo", SqlDbType.VarChar); + param[1].Value = md.DeviceNo; + + param[2] = new SqlParameter("@ProductID", SqlDbType.VarChar); + param[2].Value = md.ProductID; + + param[3] = new SqlParameter("@PlanCount", SqlDbType.Int); + param[3].Value = md.PlanCount; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdateInfo(PunchPlanModel md) + { + try + { + string sql = @"update tb_PunchPlan set PlanCount=@PlanCount where ID=@ID"; + SqlParameter[] param = null; + + param = new SqlParameter[2]; + + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@PlanCount", SqlDbType.Int); + param[1].Value = md.PlanCount; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdateDty(PunchPlanModel md) + { + try + { + string sql = @"update tb_PunchPlan set CompleteCount=CompleteCount+1 where ID=@ID"; + SqlParameter[] param = null; + + param = new SqlParameter[1]; + + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool DelInfo(PunchPlanModel md) + { + try + { + string sql = @"delete from tb_PunchPlan where ID=@ID"; + SqlParameter[] param = null; + + param = new SqlParameter[1]; + + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchRecordDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchRecordDAL.cs new file mode 100644 index 0000000..f0bdd09 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchRecordDAL.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.PunchAndWeld +{ + public class PunchRecordDAL + { + public bool AddInfo(PunchRecordModel md) + { + try + { + string sql = ""; + SqlParameter[] param = null; + sql = " insert into tb_PunchRecord(ID,BarCode"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@BarCode)"; + + param = new SqlParameter[2]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@BarCode", SqlDbType.VarChar); + param[1].Value =md.BarCode ; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public DataTable SearchInfo(string barCode) + { + try + { + string sql = @"SELECT * from tb_PunchRecord where BarCode=@BarCode "; + SqlParameter[] param = null; + + param = new SqlParameter[1]; + param[0] = new SqlParameter("@BarCode", SqlDbType.VarChar); + param[0].Value = barCode; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchValueRecordDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchValueRecordDAL.cs new file mode 100644 index 0000000..f2040b9 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/PunchAndWeld/PunchValueRecordDAL.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.PunchAndWeld +{ + public class PunchValueRecordDAL + { + public bool AddInfo(PunchValueRecordModel md) + { + try + { + string sql = ""; + SqlParameter[] param = null; + sql = " insert into tb_PunchValueRecord(ID,DeviceNo,Address,ItemValue"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@DeviceNo,"; + sql += "@Address,"; + sql += "@ItemValue)"; + + param = new SqlParameter[4]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@DeviceNo", SqlDbType.VarChar); + param[1].Value = md.DeviceNo; + + param[2] = new SqlParameter("@Address", SqlDbType.VarChar); + param[2].Value = md.Address; + + param[3] = new SqlParameter("@ItemValue", SqlDbType.VarChar); + param[3].Value = md.ItemValue; + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/SqlHelper.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/SqlHelper.cs new file mode 100644 index 0000000..58a11c4 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/SqlHelper.cs @@ -0,0 +1,2482 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Text; +using System.Xml; + +namespace MESClassLibrary.DAL +{ + /// + /// SqlServer数据访问帮助类 + /// + public sealed class SqlHelper + { + #region 私有构造函数和方法 + + private SqlHelper() { } + + /// + /// 将SqlParameter参数数组(参数值)分配给SqlCommand命令. + /// 这个方法将给任何一个参数分配DBNull.Value; + /// 该操作将阻止默认值的使用. + /// + /// 命令名 + /// SqlParameters数组 + private static void AttachParameters(SqlCommand command, SqlParameter[] commandParameters) + { + if (command == null) throw new ArgumentNullException("command"); + if (commandParameters != null) + { + foreach (SqlParameter p in commandParameters) + { + if (p != null) + { + // 检查未分配值的输出参数,将其分配以DBNull.Value. + if ((p.Direction == ParameterDirection.InputOutput || p.Direction == ParameterDirection.Input) && + (p.Value == null)) + { + p.Value = DBNull.Value; + } + command.Parameters.Add(p); + } + } + } + } + + /// + /// 将DataRow类型的列值分配到SqlParameter参数数组. + /// + /// 要分配值的SqlParameter参数数组 + /// 将要分配给存储过程参数的DataRow + private static void AssignParameterValues(SqlParameter[] commandParameters, DataRow dataRow) + { + if ((commandParameters == null) || (dataRow == null)) + { + return; + } + + int i = 0; + // 设置参数值 + foreach (SqlParameter commandParameter in commandParameters) + { + // 创建参数名称,如果不存在,只抛出一个异常. + if (commandParameter.ParameterName == null || + commandParameter.ParameterName.Length <= 1) + throw new Exception( + string.Format("请提供参数{0}一个有效的名称{1}.", i, commandParameter.ParameterName)); + // 从dataRow的表中获取为参数数组中数组名称的列的索引. + // 如果存在和参数名称相同的列,则将列值赋给当前名称的参数. + if (dataRow.Table.Columns.IndexOf(commandParameter.ParameterName.Substring(1)) != -1) + commandParameter.Value = dataRow[commandParameter.ParameterName.Substring(1)]; + i++; + } + } + + /// + /// 将一个对象数组分配给SqlParameter参数数组. + /// + /// 要分配值的SqlParameter参数数组 + /// 将要分配给存储过程参数的对象数组 + private static void AssignParameterValues(SqlParameter[] commandParameters, object[] parameterValues) + { + if ((commandParameters == null) || (parameterValues == null)) + { + return; + } + + // 确保对象数组个数与参数个数匹配,如果不匹配,抛出一个异常. + if (commandParameters.Length != parameterValues.Length) + { + throw new ArgumentException("参数值个数与参数不匹配."); + } + + // 给参数赋值 + for (int i = 0, j = commandParameters.Length; i < j; i++) + { + // If the current array value derives from IDbDataParameter, then assign its Value property + if (parameterValues[i] is IDbDataParameter) + { + IDbDataParameter paramInstance = (IDbDataParameter)parameterValues[i]; + if (paramInstance.Value == null) + { + commandParameters[i].Value = DBNull.Value; + } + else + { + commandParameters[i].Value = paramInstance.Value; + } + } + else if (parameterValues[i] == null) + { + commandParameters[i].Value = DBNull.Value; + } + else + { + commandParameters[i].Value = parameterValues[i]; + } + } + } + + /// + /// 预处理用户提供的命令,数据库连接/事务/命令类型/参数 + /// + /// 要处理的SqlCommand + /// 数据库连接 + /// 一个有效的事务或者是null值 + /// 命令类型 (存储过程,命令文本, 其它.) + /// 存储过程名或都T-SQL命令文本 + /// 和命令相关联的SqlParameter参数数组,如果没有参数为'null' + /// true 如果连接是打开的,则为true,其它情况下为false. + private static void PrepareCommand(SqlCommand command, SqlConnection connection, SqlTransaction transaction, CommandType commandType, string commandText, SqlParameter[] commandParameters, out bool mustCloseConnection) + { + if (command == null) throw new ArgumentNullException("command"); + if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); + + // If the provided connection is not open, we will open it + if (connection.State != ConnectionState.Open) + { + mustCloseConnection = true; + connection.Open(); + } + else + { + mustCloseConnection = false; + } + + // 给命令分配一个数据库连接. + command.Connection = connection; + + // 设置命令文本(存储过程名或SQL语句) + command.CommandText = commandText; + + // 分配事务 + if (transaction != null) + { + if (transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + command.Transaction = transaction; + } + + // 设置命令类型. + command.CommandType = commandType; + + // 分配命令参数 + if (commandParameters != null) + { + AttachParameters(command, commandParameters); + } + return; + } + + #endregion 私有构造函数和方法结束 + + #region 数据库连接 + /// + /// 一个有效的数据库连接字符串 + /// + /// + public static string GetConnSting() + { + return ConfigurationManager.ConnectionStrings["SqlConnString"].ConnectionString; + } + /// + /// 一个有效的数据库连接对象 + /// + /// + public static SqlConnection GetConnection() + { + SqlConnection Connection = new SqlConnection(SqlHelper.GetConnSting()); + return Connection; + } + #endregion + + #region ExecuteNonQuery命令 + + /// + /// 执行指定连接字符串,类型的SqlCommand. + /// + /// + /// 示例: + /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders"); + /// + /// 一个有效的数据库连接字符串 + /// 命令类型 (存储过程,命令文本, 其它.) + /// 存储过程名称或SQL语句 + /// 返回命令影响的行数 + public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText) + { + return ExecuteNonQuery(connectionString, commandType, commandText, (SqlParameter[])null); + } + + /// + /// 执行指定连接字符串,类型的SqlCommand.如果没有提供参数,不返回结果. + /// + /// + /// 示例: + /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); + /// + /// 一个有效的数据库连接字符串 + /// 命令类型 (存储过程,命令文本, 其它.) + /// 存储过程名称或SQL语句 + /// SqlParameter参数数组 + /// 返回命令影响的行数 + public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + + using (SqlConnection connection = new SqlConnection(connectionString)) + { + connection.Open(); + + return ExecuteNonQuery(connection, commandType, commandText, commandParameters); + } + } + + /// + /// 执行指定连接字符串的存储过程,将对象数组的值赋给存储过程参数, + /// 此方法需要在参数缓存方法中探索参数并生成参数. + /// + /// + /// 这个方法没有提供访问输出参数和返回值. + /// 示例: + /// int result = ExecuteNonQuery(connString, "PublishOrders", 24, 36); + /// + /// 一个有效的数据库连接字符串/param> + /// 存储过程名称 + /// 分配到存储过程输入参数的对象数组 + /// 返回受影响的行数 + public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果存在参数值 + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + // 从探索存储过程参数(加载到缓存)并分配给存储过程参数数组. + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spName); + + // 给存储过程参数赋值 + AssignParameterValues(commandParameters, parameterValues); + + return ExecuteNonQuery(connectionString, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + // 没有参数情况下 + return ExecuteNonQuery(connectionString, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定数据库连接对象的命令 + /// + /// + /// 示例: + /// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders"); + /// + /// 一个有效的数据库连接对象 + /// 命令类型(存储过程,命令文本或其它.) + /// 存储过程名称或T-SQL语句 + /// 返回影响的行数 + public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType, string commandText) + { + return ExecuteNonQuery(connection, commandType, commandText, (SqlParameter[])null); + } + + /// + /// 执行指定数据库连接对象的命令 + /// + /// + /// 示例: + /// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); + /// + /// 一个有效的数据库连接对象 + /// 命令类型(存储过程,命令文本或其它.) + /// T存储过程名称或T-SQL语句 + /// SqlParamter参数数组 + /// 返回影响的行数 + public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + if (connection == null) throw new ArgumentNullException("connection"); + + // 创建SqlCommand命令,并进行预处理 + SqlCommand cmd = new SqlCommand(); + bool mustCloseConnection = false; + PrepareCommand(cmd, connection, (SqlTransaction)null, commandType, commandText, commandParameters, out mustCloseConnection); + + // Finally, execute the command + int retval = cmd.ExecuteNonQuery(); + + // 清除参数,以便再次使用. + cmd.Parameters.Clear(); + if (mustCloseConnection) + connection.Close(); + return retval; + } + + /// + /// 执行指定数据库连接对象的命令,将对象数组的值赋给存储过程参数. + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值 + /// 示例: + /// int result = ExecuteNonQuery(conn, "PublishOrders", 24, 36); + /// + /// 一个有效的数据库连接对象 + /// 存储过程名 + /// 分配给存储过程输入参数的对象数组 + /// 返回影响的行数 + public static int ExecuteNonQuery(SqlConnection connection, string spName, params object[] parameterValues) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果有参数值 + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + // 从缓存中加载存储过程参数 + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName); + + // 给存储过程分配参数值 + AssignParameterValues(commandParameters, parameterValues); + + return ExecuteNonQuery(connection, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return ExecuteNonQuery(connection, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行带事务的SqlCommand. + /// + /// + /// 示例.: + /// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders"); + /// + /// 一个有效的数据库连接对象 + /// 命令类型(存储过程,命令文本或其它.) + /// 存储过程名称或T-SQL语句 + /// 返回影响的行数/returns> + public static int ExecuteNonQuery(SqlTransaction transaction, CommandType commandType, string commandText) + { + return ExecuteNonQuery(transaction, commandType, commandText, (SqlParameter[])null); + } + + /// + /// 执行带事务的SqlCommand(指定参数). + /// + /// + /// 示例: + /// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); + /// + /// 一个有效的数据库连接对象 + /// 命令类型(存储过程,命令文本或其它.) + /// 存储过程名称或T-SQL语句 + /// SqlParamter参数数组 + /// 返回影响的行数 + public static int ExecuteNonQuery(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + + // 预处理 + SqlCommand cmd = new SqlCommand(); + bool mustCloseConnection = false; + PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection); + + // 执行 + int retval = cmd.ExecuteNonQuery(); + + // 清除参数集,以便再次使用. + cmd.Parameters.Clear(); + return retval; + } + + /// + /// 执行带事务的SqlCommand(指定参数值). + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值 + /// 示例: + /// int result = ExecuteNonQuery(conn, trans, "PublishOrders", 24, 36); + /// + /// 一个有效的数据库连接对象 + /// 存储过程名 + /// 分配给存储过程输入参数的对象数组 + /// 返回受影响的行数 + public static int ExecuteNonQuery(SqlTransaction transaction, string spName, params object[] parameterValues) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果有参数值 + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName); + + // 给存储过程参数赋值 + AssignParameterValues(commandParameters, parameterValues); + + // 调用重载方法 + return ExecuteNonQuery(transaction, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + // 没有参数值 + return ExecuteNonQuery(transaction, CommandType.StoredProcedure, spName); + } + } + + #endregion ExecuteNonQuery方法结束 + + #region ExecuteDataset方法 + + /// + /// 执行指定数据库连接字符串的命令,返回DataSet. + /// + /// + /// 示例: + /// DataSet ds = ExecuteDataset(connString, CommandType.StoredProcedure, "GetOrders"); + /// + /// 一个有效的数据库连接字符串 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 返回一个包含结果集的DataSet + public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText) + { + return ExecuteDataset(connectionString, commandType, commandText, (SqlParameter[])null); + } + + /// + /// 执行指定数据库连接字符串的命令,返回DataSet. + /// + /// + /// 示例: + /// DataSet ds = ExecuteDataset(connString, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); + /// + /// 一个有效的数据库连接字符串 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// SqlParamters参数数组 + /// 返回一个包含结果集的DataSet + public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + + // 创建并打开数据库连接对象,操作完成释放对象. + using (SqlConnection connection = new SqlConnection(connectionString)) + { + connection.Open(); + + // 调用指定数据库连接字符串重载方法. + return ExecuteDataset(connection, commandType, commandText, commandParameters); + } + } + + /// + /// 执行指定数据库连接字符串的命令,直接提供参数值,返回DataSet. + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值. + /// 示例: + /// DataSet ds = ExecuteDataset(connString, "GetOrders", 24, 36); + /// + /// 一个有效的数据库连接字符串 + /// 存储过程名 + /// 分配给存储过程输入参数的对象数组 + /// 返回一个包含结果集的DataSet + public static DataSet ExecuteDataset(string connectionString, string spName, params object[] parameterValues) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + // 从缓存中检索存储过程参数 + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spName); + + // 给存储过程参数分配值 + AssignParameterValues(commandParameters, parameterValues); + + return ExecuteDataset(connectionString, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return ExecuteDataset(connectionString, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定数据库连接对象的命令,返回DataSet. + /// + /// + /// 示例: + /// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders"); + /// + /// 一个有效的数据库连接对象 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名或T-SQL语句 + /// 返回一个包含结果集的DataSet + public static DataSet ExecuteDataset(SqlConnection connection, CommandType commandType, string commandText) + { + return ExecuteDataset(connection, commandType, commandText, (SqlParameter[])null); + } + + /// + /// 执行指定数据库连接对象的命令,指定存储过程参数,返回DataSet. + /// + /// + /// 示例: + /// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); + /// + /// 一个有效的数据库连接对象 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名或T-SQL语句 + /// SqlParamter参数数组 + /// 返回一个包含结果集的DataSet + public static DataSet ExecuteDataset(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + if (connection == null) throw new ArgumentNullException("connection"); + + // 预处理 + SqlCommand cmd = new SqlCommand(); + bool mustCloseConnection = false; + PrepareCommand(cmd, connection, (SqlTransaction)null, commandType, commandText, commandParameters, out mustCloseConnection); + + // 创建SqlDataAdapter和DataSet. + using (SqlDataAdapter da = new SqlDataAdapter(cmd)) + { + DataSet ds = new DataSet(); + + // 填充DataSet. + da.Fill(ds); + + cmd.Parameters.Clear(); + + if (mustCloseConnection) + connection.Close(); + + return ds; + } + } + + /// + /// 执行指定数据库连接对象的命令,指定参数值,返回DataSet. + /// + /// + /// 此方法不提供访问存储过程输入参数和返回值. + /// 示例.: + /// DataSet ds = ExecuteDataset(conn, "GetOrders", 24, 36); + /// + /// 一个有效的数据库连接对象 + /// 存储过程名 + /// 分配给存储过程输入参数的对象数组 + /// 返回一个包含结果集的DataSet + public static DataSet ExecuteDataset(SqlConnection connection, string spName, params object[] parameterValues) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + // 比缓存中加载存储过程参数 + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName); + + // 给存储过程参数分配值 + AssignParameterValues(commandParameters, parameterValues); + + return ExecuteDataset(connection, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return ExecuteDataset(connection, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定事务的命令,返回DataSet. + /// + /// + /// 示例: + /// DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, "GetOrders"); + /// + /// 事务 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名或T-SQL语句 + /// 返回一个包含结果集的DataSet + public static DataSet ExecuteDataset(SqlTransaction transaction, CommandType commandType, string commandText) + { + return ExecuteDataset(transaction, commandType, commandText, (SqlParameter[])null); + } + + /// + /// 执行指定事务的命令,指定参数,返回DataSet. + /// + /// + /// 示例: + /// DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); + /// + /// 事务 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名或T-SQL语句 + /// SqlParamter参数数组 + /// 返回一个包含结果集的DataSet + public static DataSet ExecuteDataset(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + + // 预处理 + SqlCommand cmd = new SqlCommand(); + bool mustCloseConnection = false; + PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection); + + // 创建 DataAdapter & DataSet + using (SqlDataAdapter da = new SqlDataAdapter(cmd)) + { + DataSet ds = new DataSet(); + da.Fill(ds); + cmd.Parameters.Clear(); + return ds; + } + } + + /// + /// 执行指定事务的命令,指定参数值,返回DataSet. + /// + /// + /// 此方法不提供访问存储过程输入参数和返回值. + /// 示例.: + /// DataSet ds = ExecuteDataset(trans, "GetOrders", 24, 36); + /// + /// 事务 + /// 存储过程名 + /// 分配给存储过程输入参数的对象数组 + /// 返回一个包含结果集的DataSet + public static DataSet ExecuteDataset(SqlTransaction transaction, string spName, params object[] parameterValues) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + // 从缓存中加载存储过程参数 + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName); + + // 给存储过程参数分配值 + AssignParameterValues(commandParameters, parameterValues); + + return ExecuteDataset(transaction, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return ExecuteDataset(transaction, CommandType.StoredProcedure, spName); + } + } + + #endregion ExecuteDataset数据集命令结束 + + #region ExecuteReader 数据阅读器 + + /// + /// 枚举,标识数据库连接是由SqlHelper提供还是由调用者提供 + /// + private enum SqlConnectionOwnership + { + /// 由SqlHelper提供连接 + Internal, + /// 由调用者提供连接 + External + } + + /// + /// 执行指定数据库连接对象的数据阅读器. + /// + /// + /// 如果是SqlHelper打开连接,当连接关闭DataReader也将关闭. + /// 如果是调用都打开连接,DataReader由调用都管理. + /// + /// 一个有效的数据库连接对象 + /// 一个有效的事务,或者为 'null' + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名或T-SQL语句 + /// SqlParameters参数数组,如果没有参数则为'null' + /// 标识数据库连接对象是由调用者提供还是由SqlHelper提供 + /// 返回包含结果集的SqlDataReader + private static SqlDataReader ExecuteReader(SqlConnection connection, SqlTransaction transaction, CommandType commandType, string commandText, SqlParameter[] commandParameters, SqlConnectionOwnership connectionOwnership) + { + if (connection == null) throw new ArgumentNullException("connection"); + + bool mustCloseConnection = false; + // 创建命令 + SqlCommand cmd = new SqlCommand(); + try + { + PrepareCommand(cmd, connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection); + + // 创建数据阅读器 + SqlDataReader dataReader; + + if (connectionOwnership == SqlConnectionOwnership.External) + { + dataReader = cmd.ExecuteReader(); + } + else + { + dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); + } + + // 清除参数,以便再次使用.. + // HACK: There is a problem here, the output parameter values are fletched + // when the reader is closed, so if the parameters are detached from the command + // then the SqlReader can磘 set its values. + // When this happen, the parameters can磘 be used again in other command. + bool canClear = true; + foreach (SqlParameter commandParameter in cmd.Parameters) + { + if (commandParameter.Direction != ParameterDirection.Input) + canClear = false; + } + + if (canClear) + { + cmd.Parameters.Clear(); + } + + return dataReader; + } + catch + { + if (mustCloseConnection) + connection.Close(); + throw; + } + } + + /// + /// 执行指定数据库连接字符串的数据阅读器. + /// + /// + /// 示例: + /// SqlDataReader dr = ExecuteReader(connString, CommandType.StoredProcedure, "GetOrders"); + /// + /// 一个有效的数据库连接字符串 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名或T-SQL语句 + /// 返回包含结果集的SqlDataReader + public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText) + { + return ExecuteReader(connectionString, commandType, commandText, (SqlParameter[])null); + } + + /// + /// 执行指定数据库连接字符串的数据阅读器,指定参数. + /// + /// + /// 示例: + /// SqlDataReader dr = ExecuteReader(connString, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); + /// + /// 一个有效的数据库连接字符串 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名或T-SQL语句 + /// SqlParamter参数数组(new SqlParameter("@prodid", 24)) + /// 返回包含结果集的SqlDataReader + public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + SqlConnection connection = null; + try + { + connection = new SqlConnection(connectionString); + connection.Open(); + + return ExecuteReader(connection, null, commandType, commandText, commandParameters, SqlConnectionOwnership.Internal); + } + catch + { + // If we fail to return the SqlDatReader, we need to close the connection ourselves + if (connection != null) connection.Close(); + throw; + } + + } + + /// + /// 执行指定数据库连接字符串的数据阅读器,指定参数值. + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值参数. + /// 示例: + /// SqlDataReader dr = ExecuteReader(connString, "GetOrders", 24, 36); + /// + /// 一个有效的数据库连接字符串 + /// 存储过程名 + /// 分配给存储过程输入参数的对象数组 + /// 返回包含结果集的SqlDataReader + public static SqlDataReader ExecuteReader(string connectionString, string spName, params object[] parameterValues) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spName); + + AssignParameterValues(commandParameters, parameterValues); + + return ExecuteReader(connectionString, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return ExecuteReader(connectionString, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定数据库连接对象的数据阅读器. + /// + /// + /// 示例: + /// SqlDataReader dr = ExecuteReader(conn, CommandType.StoredProcedure, "GetOrders"); + /// + /// 一个有效的数据库连接对象 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名或T-SQL语句 + /// 返回包含结果集的SqlDataReader + public static SqlDataReader ExecuteReader(SqlConnection connection, CommandType commandType, string commandText) + { + return ExecuteReader(connection, commandType, commandText, (SqlParameter[])null); + } + + /// + /// [调用者方式]执行指定数据库连接对象的数据阅读器,指定参数. + /// + /// + /// 示例: + /// SqlDataReader dr = ExecuteReader(conn, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); + /// + /// 一个有效的数据库连接对象 + /// 命令类型 (存储过程,命令文本或其它) + /// 命令类型 (存储过程,命令文本或其它) + /// SqlParamter参数数组 + /// 返回包含结果集的SqlDataReader + public static SqlDataReader ExecuteReader(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + return ExecuteReader(connection, (SqlTransaction)null, commandType, commandText, commandParameters, SqlConnectionOwnership.External); + } + + /// + /// [调用者方式]执行指定数据库连接对象的数据阅读器,指定参数值. + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值参数. + /// 示例: + /// SqlDataReader dr = ExecuteReader(conn, "GetOrders", 24, 36); + /// + /// 一个有效的数据库连接对象 + /// T存储过程名 + /// 分配给存储过程输入参数的对象数组 + /// 返回包含结果集的SqlDataReader + public static SqlDataReader ExecuteReader(SqlConnection connection, string spName, params object[] parameterValues) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName); + + AssignParameterValues(commandParameters, parameterValues); + + return ExecuteReader(connection, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return ExecuteReader(connection, CommandType.StoredProcedure, spName); + } + } + + /// + /// [调用者方式]执行指定数据库事务的数据阅读器,指定参数值. + /// + /// + /// 示例: + /// SqlDataReader dr = ExecuteReader(trans, CommandType.StoredProcedure, "GetOrders"); + /// + /// 一个有效的连接事务 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 返回包含结果集的SqlDataReader + public static SqlDataReader ExecuteReader(SqlTransaction transaction, CommandType commandType, string commandText) + { + return ExecuteReader(transaction, commandType, commandText, (SqlParameter[])null); + } + + /// + /// [调用者方式]执行指定数据库事务的数据阅读器,指定参数. + /// + /// + /// 示例: + /// SqlDataReader dr = ExecuteReader(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); + /// + /// 一个有效的连接事务 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 分配给命令的SqlParamter参数数组 + /// 返回包含结果集的SqlDataReader + public static SqlDataReader ExecuteReader(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + + return ExecuteReader(transaction.Connection, transaction, commandType, commandText, commandParameters, SqlConnectionOwnership.External); + } + + /// + /// [调用者方式]执行指定数据库事务的数据阅读器,指定参数值. + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值参数. + /// + /// 示例: + /// SqlDataReader dr = ExecuteReader(trans, "GetOrders", 24, 36); + /// + /// 一个有效的连接事务 + /// 存储过程名称 + /// 分配给存储过程输入参数的对象数组 + /// 返回包含结果集的SqlDataReader + public static SqlDataReader ExecuteReader(SqlTransaction transaction, string spName, params object[] parameterValues) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果有参数值 + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName); + + AssignParameterValues(commandParameters, parameterValues); + + return ExecuteReader(transaction, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + // 没有参数值 + return ExecuteReader(transaction, CommandType.StoredProcedure, spName); + } + } + + #endregion ExecuteReader数据阅读器 + + #region ExecuteScalar 返回结果集中的第一行第一列 + + /// + /// 执行指定数据库连接字符串的命令,返回结果集中的第一行第一列. + /// + /// + /// 示例: + /// int orderCount = (int)ExecuteScalar(connString, CommandType.StoredProcedure, "GetOrderCount"); + /// + /// 一个有效的数据库连接字符串 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 返回结果集中的第一行第一列 + public static object ExecuteScalar(string connectionString, CommandType commandType, string commandText) + { + // 执行参数为空的方法 + return ExecuteScalar(connectionString, commandType, commandText, (SqlParameter[])null); + } + + /// + /// 执行指定数据库连接字符串的命令,指定参数,返回结果集中的第一行第一列. + /// + /// + /// 示例: + /// int orderCount = (int)ExecuteScalar(connString, CommandType.StoredProcedure, "GetOrderCount", new SqlParameter("@prodid", 24)); + /// + /// 一个有效的数据库连接字符串 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 分配给命令的SqlParamter参数数组 + /// 返回结果集中的第一行第一列 + public static object ExecuteScalar(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + // 创建并打开数据库连接对象,操作完成释放对象. + using (SqlConnection connection = new SqlConnection(connectionString)) + { + connection.Open(); + + // 调用指定数据库连接字符串重载方法. + return ExecuteScalar(connection, commandType, commandText, commandParameters); + } + } + + /// + /// 执行指定数据库连接字符串的命令,指定参数值,返回结果集中的第一行第一列. + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值参数. + /// + /// 示例: + /// int orderCount = (int)ExecuteScalar(connString, "GetOrderCount", 24, 36); + /// + /// 一个有效的数据库连接字符串 + /// 存储过程名称 + /// 分配给存储过程输入参数的对象数组 + /// 返回结果集中的第一行第一列 + public static object ExecuteScalar(string connectionString, string spName, params object[] parameterValues) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果有参数值 + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spName); + + // 给存储过程参数赋值 + AssignParameterValues(commandParameters, parameterValues); + + // 调用重载方法 + return ExecuteScalar(connectionString, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + // 没有参数值 + return ExecuteScalar(connectionString, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定数据库连接对象的命令,返回结果集中的第一行第一列. + /// + /// + /// 示例: + /// int orderCount = (int)ExecuteScalar(conn, CommandType.StoredProcedure, "GetOrderCount"); + /// + /// 一个有效的数据库连接对象 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 返回结果集中的第一行第一列 + public static object ExecuteScalar(SqlConnection connection, CommandType commandType, string commandText) + { + // 执行参数为空的方法 + return ExecuteScalar(connection, commandType, commandText, (SqlParameter[])null); + } + + /// + /// 执行指定数据库连接对象的命令,指定参数,返回结果集中的第一行第一列. + /// + /// + /// 示例: + /// int orderCount = (int)ExecuteScalar(conn, CommandType.StoredProcedure, "GetOrderCount", new SqlParameter("@prodid", 24)); + /// + /// 一个有效的数据库连接对象 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 分配给命令的SqlParamter参数数组 + /// 返回结果集中的第一行第一列 + public static object ExecuteScalar(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + if (connection == null) throw new ArgumentNullException("connection"); + + // 创建SqlCommand命令,并进行预处理 + SqlCommand cmd = new SqlCommand(); + + bool mustCloseConnection = false; + PrepareCommand(cmd, connection, (SqlTransaction)null, commandType, commandText, commandParameters, out mustCloseConnection); + + // 执行SqlCommand命令,并返回结果. + object retval = cmd.ExecuteScalar(); + + // 清除参数,以便再次使用. + cmd.Parameters.Clear(); + + if (mustCloseConnection) + connection.Close(); + + return retval; + } + + /// + /// 执行指定数据库连接对象的命令,指定参数值,返回结果集中的第一行第一列. + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值参数. + /// + /// 示例: + /// int orderCount = (int)ExecuteScalar(conn, "GetOrderCount", 24, 36); + /// + /// 一个有效的数据库连接对象 + /// 存储过程名称 + /// 分配给存储过程输入参数的对象数组 + /// 返回结果集中的第一行第一列 + public static object ExecuteScalar(SqlConnection connection, string spName, params object[] parameterValues) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果有参数值 + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName); + + // 给存储过程参数赋值 + AssignParameterValues(commandParameters, parameterValues); + + // 调用重载方法 + return ExecuteScalar(connection, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + // 没有参数值 + return ExecuteScalar(connection, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定数据库事务的命令,返回结果集中的第一行第一列. + /// + /// + /// 示例: + /// int orderCount = (int)ExecuteScalar(trans, CommandType.StoredProcedure, "GetOrderCount"); + /// + /// 一个有效的连接事务 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 返回结果集中的第一行第一列 + public static object ExecuteScalar(SqlTransaction transaction, CommandType commandType, string commandText) + { + // 执行参数为空的方法 + return ExecuteScalar(transaction, commandType, commandText, (SqlParameter[])null); + } + + /// + /// 执行指定数据库事务的命令,指定参数,返回结果集中的第一行第一列. + /// + /// + /// 示例: + /// int orderCount = (int)ExecuteScalar(trans, CommandType.StoredProcedure, "GetOrderCount", new SqlParameter("@prodid", 24)); + /// + /// 一个有效的连接事务 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 分配给命令的SqlParamter参数数组 + /// 返回结果集中的第一行第一列 + public static object ExecuteScalar(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + + // 创建SqlCommand命令,并进行预处理 + SqlCommand cmd = new SqlCommand(); + bool mustCloseConnection = false; + PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection); + + // 执行SqlCommand命令,并返回结果. + object retval = cmd.ExecuteScalar(); + + // 清除参数,以便再次使用. + cmd.Parameters.Clear(); + return retval; + } + + /// + /// 执行指定数据库事务的命令,指定参数值,返回结果集中的第一行第一列. + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值参数. + /// + /// 示例: + /// int orderCount = (int)ExecuteScalar(trans, "GetOrderCount", 24, 36); + /// + /// 一个有效的连接事务 + /// 存储过程名称 + /// 分配给存储过程输入参数的对象数组 + /// 返回结果集中的第一行第一列 + public static object ExecuteScalar(SqlTransaction transaction, string spName, params object[] parameterValues) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果有参数值 + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + // PPull the parameters for this stored procedure from the parameter cache () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName); + + // 给存储过程参数赋值 + AssignParameterValues(commandParameters, parameterValues); + + // 调用重载方法 + return ExecuteScalar(transaction, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + // 没有参数值 + return ExecuteScalar(transaction, CommandType.StoredProcedure, spName); + } + } + + #endregion ExecuteScalar + + #region ExecuteXmlReader XML阅读器 + /// + /// 执行指定数据库连接对象的SqlCommand命令,并产生一个XmlReader对象做为结果集返回. + /// + /// + /// 示例: + /// XmlReader r = ExecuteXmlReader(conn, CommandType.StoredProcedure, "GetOrders"); + /// + /// 一个有效的数据库连接对象 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 using "FOR XML AUTO" + /// 返回XmlReader结果集对象. + public static XmlReader ExecuteXmlReader(SqlConnection connection, CommandType commandType, string commandText) + { + // 执行参数为空的方法 + return ExecuteXmlReader(connection, commandType, commandText, (SqlParameter[])null); + } + + /// + /// 执行指定数据库连接对象的SqlCommand命令,并产生一个XmlReader对象做为结果集返回,指定参数. + /// + /// + /// 示例: + /// XmlReader r = ExecuteXmlReader(conn, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); + /// + /// 一个有效的数据库连接对象 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 using "FOR XML AUTO" + /// 分配给命令的SqlParamter参数数组 + /// 返回XmlReader结果集对象. + public static XmlReader ExecuteXmlReader(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + if (connection == null) throw new ArgumentNullException("connection"); + + bool mustCloseConnection = false; + // 创建SqlCommand命令,并进行预处理 + SqlCommand cmd = new SqlCommand(); + try + { + PrepareCommand(cmd, connection, (SqlTransaction)null, commandType, commandText, commandParameters, out mustCloseConnection); + + // 执行命令 + XmlReader retval = cmd.ExecuteXmlReader(); + + // 清除参数,以便再次使用. + cmd.Parameters.Clear(); + + return retval; + } + catch + { + if (mustCloseConnection) + connection.Close(); + throw; + } + } + + /// + /// 执行指定数据库连接对象的SqlCommand命令,并产生一个XmlReader对象做为结果集返回,指定参数值. + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值参数. + /// + /// 示例: + /// XmlReader r = ExecuteXmlReader(conn, "GetOrders", 24, 36); + /// + /// 一个有效的数据库连接对象 + /// 存储过程名称 using "FOR XML AUTO" + /// 分配给存储过程输入参数的对象数组 + /// 返回XmlReader结果集对象. + public static XmlReader ExecuteXmlReader(SqlConnection connection, string spName, params object[] parameterValues) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果有参数值 + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName); + + // 给存储过程参数赋值 + AssignParameterValues(commandParameters, parameterValues); + + // 调用重载方法 + return ExecuteXmlReader(connection, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + // 没有参数值 + return ExecuteXmlReader(connection, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定数据库事务的SqlCommand命令,并产生一个XmlReader对象做为结果集返回. + /// + /// + /// 示例: + /// XmlReader r = ExecuteXmlReader(trans, CommandType.StoredProcedure, "GetOrders"); + /// + /// 一个有效的连接事务 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 using "FOR XML AUTO" + /// 返回XmlReader结果集对象. + public static XmlReader ExecuteXmlReader(SqlTransaction transaction, CommandType commandType, string commandText) + { + // 执行参数为空的方法 + return ExecuteXmlReader(transaction, commandType, commandText, (SqlParameter[])null); + } + + /// + /// 执行指定数据库事务的SqlCommand命令,并产生一个XmlReader对象做为结果集返回,指定参数. + /// + /// + /// 示例: + /// XmlReader r = ExecuteXmlReader(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); + /// + /// 一个有效的连接事务 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 using "FOR XML AUTO" + /// 分配给命令的SqlParamter参数数组 + /// 返回XmlReader结果集对象. + public static XmlReader ExecuteXmlReader(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + + // 创建SqlCommand命令,并进行预处理 + SqlCommand cmd = new SqlCommand(); + bool mustCloseConnection = false; + PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection); + + // 执行命令 + XmlReader retval = cmd.ExecuteXmlReader(); + + // 清除参数,以便再次使用. + cmd.Parameters.Clear(); + return retval; + } + + /// + /// 执行指定数据库事务的SqlCommand命令,并产生一个XmlReader对象做为结果集返回,指定参数值. + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值参数. + /// + /// 示例: + /// XmlReader r = ExecuteXmlReader(trans, "GetOrders", 24, 36); + /// + /// 一个有效的连接事务 + /// 存储过程名称 + /// 分配给存储过程输入参数的对象数组 + /// 返回一个包含结果集的DataSet. + public static XmlReader ExecuteXmlReader(SqlTransaction transaction, string spName, params object[] parameterValues) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果有参数值 + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName); + + // 给存储过程参数赋值 + AssignParameterValues(commandParameters, parameterValues); + + // 调用重载方法 + return ExecuteXmlReader(transaction, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + // 没有参数值 + return ExecuteXmlReader(transaction, CommandType.StoredProcedure, spName); + } + } + + #endregion ExecuteXmlReader 阅读器结束 + + #region FillDataset 填充数据集 + /// + /// 执行指定数据库连接字符串的命令,映射数据表并填充数据集. + /// + /// + /// 示例: + /// FillDataset(connString, CommandType.StoredProcedure, "GetOrders", ds, new string[] {"orders"}); + /// + /// 一个有效的数据库连接字符串 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 要填充结果集的DataSet实例 + /// 表映射的数据表数组 + /// 用户定义的表名 (可有是实际的表名.) + public static void FillDataset(string connectionString, CommandType commandType, string commandText, DataSet dataSet, string[] tableNames) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (dataSet == null) throw new ArgumentNullException("dataSet"); + + // 创建并打开数据库连接对象,操作完成释放对象. + using (SqlConnection connection = new SqlConnection(connectionString)) + { + connection.Open(); + + // 调用指定数据库连接字符串重载方法. + FillDataset(connection, commandType, commandText, dataSet, tableNames); + } + } + + /// + /// 执行指定数据库连接字符串的命令,映射数据表并填充数据集.指定命令参数. + /// + /// + /// 示例: + /// FillDataset(connString, CommandType.StoredProcedure, "GetOrders", ds, new string[] {"orders"}, new SqlParameter("@prodid", 24)); + /// + /// 一个有效的数据库连接字符串 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 分配给命令的SqlParamter参数数组 + /// 要填充结果集的DataSet实例 + /// 表映射的数据表数组 + /// 用户定义的表名 (可有是实际的表名.) + /// + public static void FillDataset(string connectionString, CommandType commandType, + string commandText, DataSet dataSet, string[] tableNames, + params SqlParameter[] commandParameters) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (dataSet == null) throw new ArgumentNullException("dataSet"); + // 创建并打开数据库连接对象,操作完成释放对象. + using (SqlConnection connection = new SqlConnection(connectionString)) + { + connection.Open(); + + // 调用指定数据库连接字符串重载方法. + FillDataset(connection, commandType, commandText, dataSet, tableNames, commandParameters); + } + } + + /// + /// 执行指定数据库连接字符串的命令,映射数据表并填充数据集,指定存储过程参数值. + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值参数. + /// + /// 示例: + /// FillDataset(connString, CommandType.StoredProcedure, "GetOrders", ds, new string[] {"orders"}, 24); + /// + /// 一个有效的数据库连接字符串 + /// 存储过程名称 + /// 要填充结果集的DataSet实例 + /// 表映射的数据表数组 + /// 用户定义的表名 (可有是实际的表名.) + /// + /// 分配给存储过程输入参数的对象数组 + public static void FillDataset(string connectionString, string spName, + DataSet dataSet, string[] tableNames, + params object[] parameterValues) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (dataSet == null) throw new ArgumentNullException("dataSet"); + // 创建并打开数据库连接对象,操作完成释放对象. + using (SqlConnection connection = new SqlConnection(connectionString)) + { + connection.Open(); + + // 调用指定数据库连接字符串重载方法. + FillDataset(connection, spName, dataSet, tableNames, parameterValues); + } + } + + /// + /// 执行指定数据库连接对象的命令,映射数据表并填充数据集. + /// + /// + /// 示例: + /// FillDataset(conn, CommandType.StoredProcedure, "GetOrders", ds, new string[] {"orders"}); + /// + /// 一个有效的数据库连接对象 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 要填充结果集的DataSet实例 + /// 表映射的数据表数组 + /// 用户定义的表名 (可有是实际的表名.) + /// + public static void FillDataset(SqlConnection connection, CommandType commandType, + string commandText, DataSet dataSet, string[] tableNames) + { + FillDataset(connection, commandType, commandText, dataSet, tableNames, null); + } + + /// + /// 执行指定数据库连接对象的命令,映射数据表并填充数据集,指定参数. + /// + /// + /// 示例: + /// FillDataset(conn, CommandType.StoredProcedure, "GetOrders", ds, new string[] {"orders"}, new SqlParameter("@prodid", 24)); + /// + /// 一个有效的数据库连接对象 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 要填充结果集的DataSet实例 + /// 表映射的数据表数组 + /// 用户定义的表名 (可有是实际的表名.) + /// + /// 分配给命令的SqlParamter参数数组 + public static void FillDataset(SqlConnection connection, CommandType commandType, + string commandText, DataSet dataSet, string[] tableNames, + params SqlParameter[] commandParameters) + { + FillDataset(connection, null, commandType, commandText, dataSet, tableNames, commandParameters); + } + + /// + /// 执行指定数据库连接对象的命令,映射数据表并填充数据集,指定存储过程参数值. + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值参数. + /// + /// 示例: + /// FillDataset(conn, "GetOrders", ds, new string[] {"orders"}, 24, 36); + /// + /// 一个有效的数据库连接对象 + /// 存储过程名称 + /// 要填充结果集的DataSet实例 + /// 表映射的数据表数组 + /// 用户定义的表名 (可有是实际的表名.) + /// + /// 分配给存储过程输入参数的对象数组 + public static void FillDataset(SqlConnection connection, string spName, + DataSet dataSet, string[] tableNames, + params object[] parameterValues) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (dataSet == null) throw new ArgumentNullException("dataSet"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果有参数值 + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName); + + // 给存储过程参数赋值 + AssignParameterValues(commandParameters, parameterValues); + + // 调用重载方法 + FillDataset(connection, CommandType.StoredProcedure, spName, dataSet, tableNames, commandParameters); + } + else + { + // 没有参数值 + FillDataset(connection, CommandType.StoredProcedure, spName, dataSet, tableNames); + } + } + + /// + /// 执行指定数据库事务的命令,映射数据表并填充数据集. + /// + /// + /// 示例: + /// FillDataset(trans, CommandType.StoredProcedure, "GetOrders", ds, new string[] {"orders"}); + /// + /// 一个有效的连接事务 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 要填充结果集的DataSet实例 + /// 表映射的数据表数组 + /// 用户定义的表名 (可有是实际的表名.) + /// + public static void FillDataset(SqlTransaction transaction, CommandType commandType, + string commandText, + DataSet dataSet, string[] tableNames) + { + FillDataset(transaction, commandType, commandText, dataSet, tableNames, null); + } + + /// + /// 执行指定数据库事务的命令,映射数据表并填充数据集,指定参数. + /// + /// + /// 示例: + /// FillDataset(trans, CommandType.StoredProcedure, "GetOrders", ds, new string[] {"orders"}, new SqlParameter("@prodid", 24)); + /// + /// 一个有效的连接事务 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 要填充结果集的DataSet实例 + /// 表映射的数据表数组 + /// 用户定义的表名 (可有是实际的表名.) + /// + /// 分配给命令的SqlParamter参数数组 + public static void FillDataset(SqlTransaction transaction, CommandType commandType, + string commandText, DataSet dataSet, string[] tableNames, + params SqlParameter[] commandParameters) + { + FillDataset(transaction.Connection, transaction, commandType, commandText, dataSet, tableNames, commandParameters); + } + + /// + /// 执行指定数据库事务的命令,映射数据表并填充数据集,指定存储过程参数值. + /// + /// + /// 此方法不提供访问存储过程输出参数和返回值参数. + /// + /// 示例: + /// FillDataset(trans, "GetOrders", ds, new string[]{"orders"}, 24, 36); + /// + /// 一个有效的连接事务 + /// 存储过程名称 + /// 要填充结果集的DataSet实例 + /// 表映射的数据表数组 + /// 用户定义的表名 (可有是实际的表名.) + /// + /// 分配给存储过程输入参数的对象数组 + public static void FillDataset(SqlTransaction transaction, string spName, + DataSet dataSet, string[] tableNames, + params object[] parameterValues) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + if (dataSet == null) throw new ArgumentNullException("dataSet"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果有参数值 + if ((parameterValues != null) && (parameterValues.Length > 0)) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName); + + // 给存储过程参数赋值 + AssignParameterValues(commandParameters, parameterValues); + + // 调用重载方法 + FillDataset(transaction, CommandType.StoredProcedure, spName, dataSet, tableNames, commandParameters); + } + else + { + // 没有参数值 + FillDataset(transaction, CommandType.StoredProcedure, spName, dataSet, tableNames); + } + } + + /// + /// [私有方法][内部调用]执行指定数据库连接对象/事务的命令,映射数据表并填充数据集,DataSet/TableNames/SqlParameters. + /// + /// + /// 示例: + /// FillDataset(conn, trans, CommandType.StoredProcedure, "GetOrders", ds, new string[] {"orders"}, new SqlParameter("@prodid", 24)); + /// + /// 一个有效的数据库连接对象 + /// 一个有效的连接事务 + /// 命令类型 (存储过程,命令文本或其它) + /// 存储过程名称或T-SQL语句 + /// 要填充结果集的DataSet实例 + /// 表映射的数据表数组 + /// 用户定义的表名 (可有是实际的表名.) + /// + /// 分配给命令的SqlParamter参数数组 + private static void FillDataset(SqlConnection connection, SqlTransaction transaction, CommandType commandType, + string commandText, DataSet dataSet, string[] tableNames, + params SqlParameter[] commandParameters) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (dataSet == null) throw new ArgumentNullException("dataSet"); + + // 创建SqlCommand命令,并进行预处理 + SqlCommand command = new SqlCommand(); + bool mustCloseConnection = false; + PrepareCommand(command, connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection); + + // 执行命令 + using (SqlDataAdapter dataAdapter = new SqlDataAdapter(command)) + { + + // 追加表映射 + if (tableNames != null && tableNames.Length > 0) + { + string tableName = "Table"; + for (int index = 0; index < tableNames.Length; index++) + { + if (tableNames[index] == null || tableNames[index].Length == 0) throw new ArgumentException("The tableNames parameter must contain a list of tables, a value was provided as null or empty string.", "tableNames"); + dataAdapter.TableMappings.Add(tableName, tableNames[index]); + tableName += (index + 1).ToString(); + } + } + + // 填充数据集使用默认表名称 + dataAdapter.Fill(dataSet); + + // 清除参数,以便再次使用. + command.Parameters.Clear(); + } + + if (mustCloseConnection) + connection.Close(); + } + #endregion + + #region UpdateDataset 更新数据集 + /// + /// 执行数据集更新到数据库,指定inserted, updated, or deleted命令. + /// + /// + /// 示例: + /// UpdateDataset(conn, insertCommand, deleteCommand, updateCommand, dataSet, "Order"); + /// + /// [追加记录]一个有效的T-SQL语句或存储过程 + /// [删除记录]一个有效的T-SQL语句或存储过程 + /// [更新记录]一个有效的T-SQL语句或存储过程 + /// 要更新到数据库的DataSet + /// 要更新到数据库的DataTable + public static void UpdateDataset(SqlCommand insertCommand, SqlCommand deleteCommand, SqlCommand updateCommand, DataSet dataSet, string tableName) + { + if (insertCommand == null) throw new ArgumentNullException("insertCommand"); + if (deleteCommand == null) throw new ArgumentNullException("deleteCommand"); + if (updateCommand == null) throw new ArgumentNullException("updateCommand"); + if (tableName == null || tableName.Length == 0) throw new ArgumentNullException("tableName"); + + // 创建SqlDataAdapter,当操作完成后释放. + using (SqlDataAdapter dataAdapter = new SqlDataAdapter()) + { + // 设置数据适配器命令 + dataAdapter.UpdateCommand = updateCommand; + dataAdapter.InsertCommand = insertCommand; + dataAdapter.DeleteCommand = deleteCommand; + + // 更新数据集改变到数据库 + dataAdapter.Update(dataSet, tableName); + + // 提交所有改变到数据集. + dataSet.AcceptChanges(); + } + } + #endregion + + #region CreateCommand 创建一条SqlCommand命令 + /// + /// 创建SqlCommand命令,指定数据库连接对象,存储过程名和参数. + /// + /// + /// 示例: + /// SqlCommand command = CreateCommand(conn, "AddCustomer", "CustomerID", "CustomerName"); + /// + /// 一个有效的数据库连接对象 + /// 存储过程名称 + /// 源表的列名称数组 + /// 返回SqlCommand命令 + public static SqlCommand CreateCommand(SqlConnection connection, string spName, params string[] sourceColumns) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 创建命令 + SqlCommand cmd = new SqlCommand(spName, connection); + cmd.CommandType = CommandType.StoredProcedure; + + // 如果有参数值 + if ((sourceColumns != null) && (sourceColumns.Length > 0)) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName); + + // 将源表的列到映射到DataSet命令中. + for (int index = 0; index < sourceColumns.Length; index++) + commandParameters[index].SourceColumn = sourceColumns[index]; + + // Attach the discovered parameters to the SqlCommand object + AttachParameters(cmd, commandParameters); + } + + return cmd; + } + #endregion + + #region ExecuteNonQueryTypedParams 类型化参数(DataRow) + /// + /// 执行指定连接数据库连接字符串的存储过程,使用DataRow做为参数值,返回受影响的行数. + /// + /// 一个有效的数据库连接字符串 + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回影响的行数 + public static int ExecuteNonQueryTypedParams(String connectionString, String spName, DataRow dataRow) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果row有值,存储过程必须初始化. + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteNonQuery(connectionString, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteNonQuery(connectionString, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定连接数据库连接对象的存储过程,使用DataRow做为参数值,返回受影响的行数. + /// + /// 一个有效的数据库连接对象 + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回影响的行数 + public static int ExecuteNonQueryTypedParams(SqlConnection connection, String spName, DataRow dataRow) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果row有值,存储过程必须初始化. + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteNonQuery(connection, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteNonQuery(connection, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定连接数据库事物的存储过程,使用DataRow做为参数值,返回受影响的行数. + /// + /// 一个有效的连接事务 object + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回影响的行数 + public static int ExecuteNonQueryTypedParams(SqlTransaction transaction, String spName, DataRow dataRow) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // Sf the row has values, the store procedure parameters must be initialized + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, spName); + } + } + #endregion + + #region ExecuteDatasetTypedParams 类型化参数(DataRow) + /// + /// 执行指定连接数据库连接字符串的存储过程,使用DataRow做为参数值,返回DataSet. + /// + /// 一个有效的数据库连接字符串 + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回一个包含结果集的DataSet. + public static DataSet ExecuteDatasetTypedParams(string connectionString, String spName, DataRow dataRow) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + //如果row有值,存储过程必须初始化. + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteDataset(connectionString, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteDataset(connectionString, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定连接数据库连接对象的存储过程,使用DataRow做为参数值,返回DataSet. + /// + /// 一个有效的数据库连接对象 + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回一个包含结果集的DataSet. + /// + public static DataSet ExecuteDatasetTypedParams(SqlConnection connection, String spName, DataRow dataRow) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果row有值,存储过程必须初始化. + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteDataset(connection, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteDataset(connection, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定连接数据库事务的存储过程,使用DataRow做为参数值,返回DataSet. + /// + /// 一个有效的连接事务 object + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回一个包含结果集的DataSet. + public static DataSet ExecuteDatasetTypedParams(SqlTransaction transaction, String spName, DataRow dataRow) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果row有值,存储过程必须初始化. + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteDataset(transaction, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteDataset(transaction, CommandType.StoredProcedure, spName); + } + } + + #endregion + + #region ExecuteReaderTypedParams 类型化参数(DataRow) + /// + /// 执行指定连接数据库连接字符串的存储过程,使用DataRow做为参数值,返回DataReader. + /// + /// 一个有效的数据库连接字符串 + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回包含结果集的SqlDataReader + public static SqlDataReader ExecuteReaderTypedParams(String connectionString, String spName, DataRow dataRow) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果row有值,存储过程必须初始化. + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteReader(connectionString, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteReader(connectionString, CommandType.StoredProcedure, spName); + } + } + + + /// + /// 执行指定连接数据库连接对象的存储过程,使用DataRow做为参数值,返回DataReader. + /// + /// 一个有效的数据库连接对象 + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回包含结果集的SqlDataReader + public static SqlDataReader ExecuteReaderTypedParams(SqlConnection connection, String spName, DataRow dataRow) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果row有值,存储过程必须初始化. + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteReader(connection, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteReader(connection, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定连接数据库事物的存储过程,使用DataRow做为参数值,返回DataReader. + /// + /// 一个有效的连接事务 object + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回包含结果集的SqlDataReader + public static SqlDataReader ExecuteReaderTypedParams(SqlTransaction transaction, String spName, DataRow dataRow) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果row有值,存储过程必须初始化. + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteReader(transaction, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteReader(transaction, CommandType.StoredProcedure, spName); + } + } + #endregion + + #region ExecuteScalarTypedParams 类型化参数(DataRow) + /// + /// 执行指定连接数据库连接字符串的存储过程,使用DataRow做为参数值,返回结果集中的第一行第一列. + /// + /// 一个有效的数据库连接字符串 + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回结果集中的第一行第一列 + public static object ExecuteScalarTypedParams(String connectionString, String spName, DataRow dataRow) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果row有值,存储过程必须初始化. + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteScalar(connectionString, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteScalar(connectionString, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定连接数据库连接对象的存储过程,使用DataRow做为参数值,返回结果集中的第一行第一列. + /// + /// 一个有效的数据库连接对象 + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回结果集中的第一行第一列 + public static object ExecuteScalarTypedParams(SqlConnection connection, String spName, DataRow dataRow) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果row有值,存储过程必须初始化. + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteScalar(connection, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteScalar(connection, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定连接数据库事务的存储过程,使用DataRow做为参数值,返回结果集中的第一行第一列. + /// + /// 一个有效的连接事务 object + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回结果集中的第一行第一列 + public static object ExecuteScalarTypedParams(SqlTransaction transaction, String spName, DataRow dataRow) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果row有值,存储过程必须初始化. + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteScalar(transaction, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteScalar(transaction, CommandType.StoredProcedure, spName); + } + } + #endregion + + #region ExecuteXmlReaderTypedParams 类型化参数(DataRow) + /// + /// 执行指定连接数据库连接对象的存储过程,使用DataRow做为参数值,返回XmlReader类型的结果集. + /// + /// 一个有效的数据库连接对象 + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回XmlReader结果集对象. + public static XmlReader ExecuteXmlReaderTypedParams(SqlConnection connection, String spName, DataRow dataRow) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果row有值,存储过程必须初始化. + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteXmlReader(connection, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteXmlReader(connection, CommandType.StoredProcedure, spName); + } + } + + /// + /// 执行指定连接数据库事务的存储过程,使用DataRow做为参数值,返回XmlReader类型的结果集. + /// + /// 一个有效的连接事务 object + /// 存储过程名称 + /// 使用DataRow作为参数值 + /// 返回XmlReader结果集对象. + public static XmlReader ExecuteXmlReaderTypedParams(SqlTransaction transaction, String spName, DataRow dataRow) + { + if (transaction == null) throw new ArgumentNullException("transaction"); + if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + // 如果row有值,存储过程必须初始化. + if (dataRow != null && dataRow.ItemArray.Length > 0) + { + // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () + SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName); + + // 分配参数值 + AssignParameterValues(commandParameters, dataRow); + + return SqlHelper.ExecuteXmlReader(transaction, CommandType.StoredProcedure, spName, commandParameters); + } + else + { + return SqlHelper.ExecuteXmlReader(transaction, CommandType.StoredProcedure, spName); + } + } + #endregion + + public static SqlTransaction BeginTransaction(string con) + { + SqlConnection connection = new SqlConnection(con); + connection.Open(); + SqlTransaction tran = connection.BeginTransaction(); + return tran; + } + + public static string SerialNo(string type) + { + try + { + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@sCode", SqlDbType.VarChar); + param[0].Value = type; + return ExecuteDataset(SqlHelper.GetConnSting(), CommandType.StoredProcedure, "GetSerialNo", param).Tables[0].Rows[0][0].ToString(); + } + catch (Exception) + { + return ""; + } + + } + + + + } + + /// + /// SqlHelperParameterCache提供缓存存储过程参数,并能够在运行时从存储过程中探索参数. + /// + public sealed class SqlHelperParameterCache + { + #region 私有方法,字段,构造函数 + // 私有构造函数,妨止类被实例化. + private SqlHelperParameterCache() { } + + // 这个方法要注意 + private static Hashtable paramCache = Hashtable.Synchronized(new Hashtable()); + + /// + /// 探索运行时的存储过程,返回SqlParameter参数数组. + /// 初始化参数值为 DBNull.Value. + /// + /// 一个有效的数据库连接 + /// 存储过程名称 + /// 是否包含返回值参数 + /// 返回SqlParameter参数数组 + private static SqlParameter[] DiscoverSpParameterSet(SqlConnection connection, string spName, bool includeReturnValueParameter) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + SqlCommand cmd = new SqlCommand(spName, connection); + cmd.CommandType = CommandType.StoredProcedure; + + connection.Open(); + // 检索cmd指定的存储过程的参数信息,并填充到cmd的Parameters参数集中. + SqlCommandBuilder.DeriveParameters(cmd); + connection.Close(); + // 如果不包含返回值参数,将参数集中的每一个参数删除. + if (!includeReturnValueParameter) + { + cmd.Parameters.RemoveAt(0); + } + + // 创建参数数组 + SqlParameter[] discoveredParameters = new SqlParameter[cmd.Parameters.Count]; + // 将cmd的Parameters参数集复制到discoveredParameters数组. + cmd.Parameters.CopyTo(discoveredParameters, 0); + + // 初始化参数值为 DBNull.Value. + foreach (SqlParameter discoveredParameter in discoveredParameters) + { + discoveredParameter.Value = DBNull.Value; + } + return discoveredParameters; + } + + /// + /// SqlParameter参数数组的深层拷贝. + /// + /// 原始参数数组 + /// 返回一个同样的参数数组 + private static SqlParameter[] CloneParameters(SqlParameter[] originalParameters) + { + SqlParameter[] clonedParameters = new SqlParameter[originalParameters.Length]; + + for (int i = 0, j = originalParameters.Length; i < j; i++) + { + clonedParameters[i] = (SqlParameter)((ICloneable)originalParameters[i]).Clone(); + } + + return clonedParameters; + } + + #endregion 私有方法,字段,构造函数结束 + + #region 缓存方法 + + /// + /// 追加参数数组到缓存. + /// + /// 一个有效的数据库连接字符串 + /// 存储过程名或SQL语句 + /// 要缓存的参数数组 + public static void CacheParameterSet(string connectionString, string commandText, params SqlParameter[] commandParameters) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); + + string hashKey = connectionString + ":" + commandText; + + paramCache[hashKey] = commandParameters; + } + + /// + /// 从缓存中获取参数数组. + /// + /// 一个有效的数据库连接字符 + /// 存储过程名或SQL语句 + /// 参数数组 + public static SqlParameter[] GetCachedParameterSet(string connectionString, string commandText) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText"); + + string hashKey = connectionString + ":" + commandText; + + SqlParameter[] cachedParameters = paramCache[hashKey] as SqlParameter[]; + if (cachedParameters == null) + { + return null; + } + else + { + return CloneParameters(cachedParameters); + } + } + + #endregion 缓存方法结束 + + #region 检索指定的存储过程的参数集 + + /// + /// 返回指定的存储过程的参数集 + /// + /// + /// 这个方法将查询数据库,并将信息存储到缓存. + /// + /// 一个有效的数据库连接字符 + /// 存储过程名 + /// 返回SqlParameter参数数组 + public static SqlParameter[] GetSpParameterSet(string connectionString, string spName) + { + return GetSpParameterSet(connectionString, spName, false); + } + + /// + /// 返回指定的存储过程的参数集 + /// + /// + /// 这个方法将查询数据库,并将信息存储到缓存. + /// + /// 一个有效的数据库连接字符. + /// 存储过程名 + /// 是否包含返回值参数 + /// 返回SqlParameter参数数组 + public static SqlParameter[] GetSpParameterSet(string connectionString, string spName, bool includeReturnValueParameter) + { + if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + using (SqlConnection connection = new SqlConnection(connectionString)) + { + return GetSpParameterSetInternal(connection, spName, includeReturnValueParameter); + } + } + + /// + /// [内部]返回指定的存储过程的参数集(使用连接对象). + /// + /// + /// 这个方法将查询数据库,并将信息存储到缓存. + /// + /// 一个有效的数据库连接字符 + /// 存储过程名 + /// 返回SqlParameter参数数组 + internal static SqlParameter[] GetSpParameterSet(SqlConnection connection, string spName) + { + return GetSpParameterSet(connection, spName, false); + } + + /// + /// [内部]返回指定的存储过程的参数集(使用连接对象) + /// + /// + /// 这个方法将查询数据库,并将信息存储到缓存. + /// + /// 一个有效的数据库连接对象 + /// 存储过程名 + /// + /// 是否包含返回值参数 + /// + /// 返回SqlParameter参数数组 + internal static SqlParameter[] GetSpParameterSet(SqlConnection connection, string spName, bool includeReturnValueParameter) + { + if (connection == null) throw new ArgumentNullException("connection"); + using (SqlConnection clonedConnection = (SqlConnection)((ICloneable)connection).Clone()) + { + return GetSpParameterSetInternal(clonedConnection, spName, includeReturnValueParameter); + } + } + + /// + /// [私有]返回指定的存储过程的参数集(使用连接对象) + /// + /// 一个有效的数据库连接对象 + /// 存储过程名 + /// 是否包含返回值参数 + /// 返回SqlParameter参数数组 + private static SqlParameter[] GetSpParameterSetInternal(SqlConnection connection, string spName, bool includeReturnValueParameter) + { + if (connection == null) throw new ArgumentNullException("connection"); + if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName"); + + string hashKey = connection.ConnectionString + ":" + spName + (includeReturnValueParameter ? ":include ReturnValue Parameter" : ""); + + SqlParameter[] cachedParameters; + + cachedParameters = paramCache[hashKey] as SqlParameter[]; + if (cachedParameters == null) + { + SqlParameter[] spParameters = DiscoverSpParameterSet(connection, spName, includeReturnValueParameter); + paramCache[hashKey] = spParameters; + cachedParameters = spParameters; + } + + return CloneParameters(cachedParameters); + } + + #endregion 参数集检索结束 + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/User/Sys_ButtonsData.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/User/Sys_ButtonsData.cs new file mode 100644 index 0000000..a6003a9 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/User/Sys_ButtonsData.cs @@ -0,0 +1,75 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace MESClassLibrary.DAL.User +{ + /// + /// 用户按钮 + /// lx 2017-06-28 + /// + public class Sys_ButtonsData + { + /// + /// 获取用户有权限的按钮 + /// + /// + /// + /// + public DataTable GetUserButtons(string menuID, string userID) + { + try + { + DataTable dt = new DataTable(); + + string sql = @" + SELECT [BtnID] + ,[BtnName] + ,[ItemPic] + ,[PowerID] + ,[MenuID] + ,[MenuName] + ,[IsEnabled] + ,[BtnCode] + FROM [T_Sys_Buttons] + where PowerID in ( + select e.PowerID + from T_Sys_Users a + join T_Sys_UserRole b + on a.UserID = b.UserID + join T_Sys_Role c + on b.RoleID = c.RoleID + join T_Sys_RoleLinkPower d + on c.RoleID = d.RoleID + join T_Sys_Power e + on d.PowerID = e.PowerID + where a.UserID = @UserID + ) + and MenuID = @MenuID + and IsEnabled = '1' + "; + SqlParameter[] param = new SqlParameter[2]; + param[0] = new SqlParameter("@UserID", SqlDbType.UniqueIdentifier); + param[0].Value = new Guid(userID); + + param[1] = new SqlParameter("@MenuID", SqlDbType.UniqueIdentifier); + param[1].Value = new Guid(menuID); + + dt = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + return dt; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return new DataTable(); + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/User/Sys_NavMenuData.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/User/Sys_NavMenuData.cs new file mode 100644 index 0000000..1d81b34 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/User/Sys_NavMenuData.cs @@ -0,0 +1,107 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace MESClassLibrary.DAL.User +{ + public class Sys_NavMenuData + { + /// + /// 根据userID查询用户菜单 + /// + /// + /// + public DataTable BuilderLeftMenu(string userID) + { + try + { + List list = new List(); + DataTable dt = new DataTable(); +/* + string sql = @" + SELECT [MenuID] + ,[MenuName] + ,[URLStr] + ,[ItemPic] + ,[PowerID] + ,[ParentMenuID] + ,[IsEnabled] + ,[OrderNum] + FROM [T_Sys_NavMenu] + where PowerID in ( + select e.PowerID + from T_Sys_Users a + join T_Sys_UserRole b + on a.UserID = b.UserID + join T_Sys_Role c + on b.RoleID = c.RoleID + join T_Sys_RoleLinkPower d + on c.RoleID = d.RoleID + join T_Sys_Power e + on d.PowerID = e.PowerID + where a.UserID = @userID + ) + and IsEnabled = '1' + order by OrderNum + "; +*/ + string sql = @" +IF EXISTS(SELECT * from T_Sys_Users where UserID=@userID and UserName='admin') +BEGIN + SELECT m.[MenuID], + m.[MenuName], + m.[URLStr], + m.[ItemPic], + m.[PowerID], + m.[ParentMenuID], + m.[IsEnabled], + m.[OrderNum] + FROM [T_Sys_NavMenu] m +END +ELSE +BEGIN +SELECT m.[MenuID], + m.[MenuName], + m.[URLStr], + m.[ItemPic], + m.[PowerID], + m.[ParentMenuID], + m.[IsEnabled], + m.[OrderNum] + FROM [T_Sys_NavMenu] m + WHERE m.ParentMenuID IS NULL +UNION ALL +SELECT m.[MenuID], + m.[MenuName], + m.[URLStr], + m.[ItemPic], + m.[PowerID], + m.[ParentMenuID], + m.[IsEnabled], + m.[OrderNum] + FROM [T_Sys_NavMenu] m + INNER JOIN T_Sys_Users_NavMenu um ON m.MenuID = um.MenuID + WHERE um.UserID = @userID +END"; + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@userID", SqlDbType.UniqueIdentifier); + param[0].Value = new Guid(userID); + + dt = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + return dt; + } + catch(Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return new DataTable(); + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/User/UserDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/User/UserDAL.cs new file mode 100644 index 0000000..6958345 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/User/UserDAL.cs @@ -0,0 +1,421 @@ +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace MESClassLibrary.DAL.User +{ + public class UserDAL : BasicDAL + { + public static string TableName = "tb_User"; + public string GetTableName() + { + return TableName; + } + /// + /// 获取全部用户信息 + /// + /// + public DataTable Search_UserInfo() + { + try + { + string sql = @"select * from T_Sys_Users where IsEnabled='1'"; + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + /// + /// 根据登录名密码查询用户信息 + /// + /// + /// + /// + public DataTable Search_UserInfoByUP(string username, string password) + { + try + { + string sql = @"SELECT [UserID] + ,[UserName] + ,[Password] + ,[IsEnabled] + ,[RealName] + ,[Sex] + ,[Tel] + ,[LastLoginTime] + ,[LastLoginIP] + ,[DepartmentID] + ,[OpName] + ,[OpTime] + FROM [T_Sys_Users] + where UserName = @Username and Password = @Password and IsEnabled = '1'"; + + SqlParameter[] param = new SqlParameter[2]; + param[0] = new SqlParameter("@Username", SqlDbType.VarChar); + param[0].Value = username; + + param[1] = new SqlParameter("@Password", SqlDbType.VarChar); + param[1].Value = password; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 根据id查询用户信息 + /// + /// + /// + public DataTable Search_UserInfoByID(string id) + { + try + { + string sql = @"select c.*,r.RoleName from tb_User c + left join tb_Role r on c.RoleID = r.id where c.IsUseing=1 and c.ID=@ID"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = id; + + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + /// + /// 根据id查询用户信息 + /// + /// + /// + public DataTable Search_UserInfoByID_v2(string id) + { + try + { + string sql = @"select * from T_Sys_Users c where c.IsEnabled=1 and c.UserID=@UserID"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@UserID", SqlDbType.VarChar); + param[0].Value = id; + + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + /// + /// 根据登录账号查询用户信息 + /// + /// 登录账号 + /// + public DataTable Search_UserInfoByUserName(string username) + { + try + { + string sql = @"SELECT [UserID] + ,[UserName] + ,[Password] + ,[IsEnabled] + ,[RealName] + ,[Sex] + ,[Tel] + ,[LastLoginTime] + ,[LastLoginIP] + ,[DepartmentID] + ,[OpName] + ,[OpTime] + FROM [T_Sys_Users] + where UserName = @Username and IsEnabled = '1'"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@Username", SqlDbType.VarChar); + param[0].Value = username; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 根据角色ID查询该角色的用户信息 + /// + /// 角色主键ID + /// + public DataTable Search_UserInfoByRoleID(string roleID) + { + try + { + string sql = @"select c.*,r.RoleName,r.RoleJurisdiction from tb_User c + left join tb_Role r on c.RoleID = r.id where c.IsUseing=1 and c.RoleID=@RoleID"; + + SqlParameter[] param = new SqlParameter[1]; + param[0] = new SqlParameter("@RoleID", SqlDbType.VarChar); + param[0].Value = roleID; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + + /// + /// 添加用户信息 + /// + /// 用户模型 + /// + public bool Add_UserInfo(UserModel mod) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO tb_User (ID,Username,Password,TrueName,FaceURL,RoleID,CreateUserID"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@Username,"; + sql += "@Password,"; + sql += "@TrueName,"; + sql += "@FaceURL,"; + sql += "@RoleID,"; + sql += "@CreateUserID)"; + + #region 添加参数 + param = new SqlParameter[7]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = mod.ID; + + param[1] = new SqlParameter("@Username", SqlDbType.VarChar); + param[1].Value = mod.Username; + + param[2] = new SqlParameter("@Password", SqlDbType.VarChar); + param[2].Value = mod.Password; + + param[3] = new SqlParameter("@TrueName", SqlDbType.VarChar); + param[3].Value = mod.TrueName; + + param[4] = new SqlParameter("@FaceURL", SqlDbType.VarChar); + param[4].Value = mod.FaceURL; + + param[5] = new SqlParameter("@RoleID", SqlDbType.VarChar); + param[5].Value = mod.RoleID; + + param[6] = new SqlParameter("@CreateUserID", SqlDbType.VarChar); + param[6].Value = mod.CreateUserID; + + + + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 更新用户信息 + /// + /// 用户模型对象 + /// + public bool Update_UserInfo(UserModel md) + { + try + { + string sql = @"update tb_User set + Username = @Username, + Password = @Password, + TrueName = @TrueName, + FaceURL = @FaceURL, + RoleID = @RoleID, + UpdateUserID = @UpdateUserID, + UpdateTime = @UpdateTime + where ID=@ID"; + + SqlParameter[] param = new SqlParameter[8]; + param[0] = new SqlParameter("@Username", SqlDbType.VarChar); + param[0].Value = md.Username; + + param[1] = new SqlParameter("@Password", SqlDbType.VarChar); + param[1].Value = md.Password; + + param[2] = new SqlParameter("@TrueName", SqlDbType.VarChar); + param[2].Value = md.TrueName; + + param[3] = new SqlParameter("@FaceURL", SqlDbType.VarChar); + param[3].Value = md.FaceURL; + + param[4] = new SqlParameter("@RoleID", SqlDbType.VarChar); + param[4].Value = md.RoleID; + + param[5] = new SqlParameter("@UpdateUserID", SqlDbType.VarChar); + param[5].Value = md.UpdateUserID; + + param[6] = new SqlParameter("@UpdateTime", SqlDbType.DateTime); + param[6].Value = DateTime.Now; + + param[7] = new SqlParameter("@ID", SqlDbType.VarChar); + param[7].Value = md.ID; + + if (SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param) > 0) + { + return true; + } + return false; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + /// + /// 查询用户登录日志 + /// + /// + public DataTable Search_UserLoginInfo() + { + try + { + string sql = @"select l.*,u.TrueName,r.RoleName from tb_UserLoginLog l + left join tb_User u on l.UserID = u.ID + left join tb_Role r on u.RoleID = r.ID order by l.LoginTime desc"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + + } + /// + /// 添加用户登录日志 + /// + /// 用户主键ID + /// + public bool Add_UserLoginInfo(string userid) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO tb_UserLoginLog (ID,UserID"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@UserID)"; + + + #region 添加参数 + param = new SqlParameter[2]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = Guid.NewGuid().ToString(); + + param[1] = new SqlParameter("@UserID", SqlDbType.VarChar); + param[1].Value = userid; + + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + + public bool Update_Password(string userid,string oldpassword,string newpassword) + { + try + { + string sql = @"update T_Sys_Users set + Password = @New_Password + where UserID=@UserID and Password=@Old_Password"; + + SqlParameter[] param = new SqlParameter[3]; + param[0] = new SqlParameter("@New_Password", SqlDbType.VarChar); + param[0].Value = newpassword; + + param[1] = new SqlParameter("@UserID", SqlDbType.VarChar); + param[1].Value = userid; + + param[2] = new SqlParameter("@Old_Password", SqlDbType.VarChar); + param[2].Value = oldpassword; + + + if (SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param) > 0) + { + return true; + } + return false; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + + } + + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/painting/InspectResultDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/painting/InspectResultDAL.cs new file mode 100644 index 0000000..f714956 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/painting/InspectResultDAL.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.Model; +using MESClassLibrary.BLL.BasicInfo; +using MESClassLibrary.BLL.Log; + +namespace MESClassLibrary.DAL.painting +{ + public class InspectResultDAL + { + public static string TableName = "tb_InspectResult"; + public bool AddInfo(InspectResultModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO " + TableName + " ([ID] ,[barcode] ,[side],[stationNo],[workClass],[inspectResult],[productInfo],[productOption] ,[InspectTimes],[createTime]"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@barcode,"; + sql += "@side,"; + sql += "@stationNo,"; + sql += "@workClass,"; + sql += "@inspectResult,"; + sql += "@productInfo,"; + sql += "@productOption,"; + sql += "@InspectTimes,"; + sql += "@createTime)"; + + #region 添加参数 + param = new SqlParameter[10]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@barcode", SqlDbType.VarChar); + param[1].Value = md.barcode; + + param[2] = new SqlParameter("@side", SqlDbType.VarChar); + param[2].Value = md.side; + + param[3] = new SqlParameter("@stationNo", SqlDbType.VarChar); + param[3].Value = md.stationNo; + + param[4] = new SqlParameter("@workClass", SqlDbType.VarChar); + param[4].Value = md.workClass; + + param[5] = new SqlParameter("@inspectResult", SqlDbType.VarChar); + param[5].Value = md.inspectResult; + + param[6] = new SqlParameter("@productInfo", SqlDbType.VarChar); + param[6].Value = md.productInfo; + + param[7] = new SqlParameter("@productOption", SqlDbType.VarChar); + param[7].Value = md.productOption; + + param[8] = new SqlParameter("@InspectTimes", SqlDbType.VarChar); + param[8].Value = md.InspectTimes; + + param[9] = new SqlParameter("@createTime", SqlDbType.DateTime); + param[9].Value = md.createTime; + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/painting/PaintBarCodeDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/painting/PaintBarCodeDAL.cs new file mode 100644 index 0000000..e4dab16 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/painting/PaintBarCodeDAL.cs @@ -0,0 +1,181 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.Model; + +namespace MESClassLibrary.DAL.painting +{ + public class PaintBarCodeDAL + { + public static string TableName = "tb_PaintBarCode"; + + public DataTable SearchInfoAll(string banci,string productdate) + { + try + { + string sql = @"SELECT dbo.tb_PaintBarCode.OneBarCode, dbo.tb_Product.ProductName, dbo.tb_PaintBarCode.ColorDes, + dbo.tb_PaintBarCode.Side, dbo.tb_PaintBarCode.workClass + FROM dbo.tb_PaintBarCode LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_PaintBarCode.ProductID = dbo.tb_Product.ProductID where workClass=@workClass and ProductDate=@ProductDate"; + SqlParameter[] param = new SqlParameter[2]; + + param[0] = new SqlParameter("@workClass", SqlDbType.VarChar); + param[0].Value = banci; + + param[1] = new SqlParameter("@ProductDate", SqlDbType.VarChar); + param[1].Value = productdate; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + /// + /// 查找当前天、当天班次、当前产品的最后一个流水 + /// + /// + /// + /// + public DataTable SearchBarCode(string banci, string productdate,string productID) + { + try + { + string sql = @"SELECT dbo.tb_PaintBarCode.OneBarCode, dbo.tb_Product.ProductName, dbo.tb_PaintBarCode.ColorDes, + dbo.tb_PaintBarCode.Side, dbo.tb_PaintBarCode.workClass + FROM dbo.tb_PaintBarCode LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_PaintBarCode.ProductID = dbo.tb_Product.ProductID where workClass=@workClass and ProductDate=@ProductDate and dbo.tb_PaintBarCode.ProductID=@ProductID + order by dbo.tb_PaintBarCode.CreateTime desc"; + SqlParameter[] param = new SqlParameter[3]; + + param[0] = new SqlParameter("@workClass", SqlDbType.VarChar); + param[0].Value = banci; + + param[1] = new SqlParameter("@ProductDate", SqlDbType.VarChar); + param[1].Value = productdate; + + param[2] = new SqlParameter("@ProductID", SqlDbType.VarChar); + param[2].Value = productID; + + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public bool AddInfo(PaintBarCodeModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = "INSERT INTO " + TableName + " ([ID] ,[StationID] ,[ProductID],[OneBarCode],[BarCode],[StockNo],[ColorDes],[workClass],[Side] ,[CreateTime],[ProductDate]"; + sql += ") VALUES ("; + sql += "@ID,"; + sql += "@StationID,"; + sql += "@ProductID,"; + sql += "@OneBarCode,"; + sql += "@BarCode,"; + sql += "@StockNo,"; + sql += "@ColorDes,"; + sql += "@workClass,"; + sql += "@Side,"; + sql += "@CreateTime,"; + sql += "@ProductDate)"; + + #region 添加参数 + param = new SqlParameter[11]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@StationID", SqlDbType.VarChar); + param[1].Value = md.StationID; + + param[2] = new SqlParameter("@ProductID", SqlDbType.VarChar); + param[2].Value = md.ProductID; + + param[3] = new SqlParameter("@OneBarCode", SqlDbType.VarChar); + param[3].Value = md.OneBarCode; + + param[4] = new SqlParameter("@BarCode", SqlDbType.VarChar); + param[4].Value = md.BarCode; + + param[5] = new SqlParameter("@StockNo", SqlDbType.VarChar); + param[5].Value = md.StockNo; + + param[6] = new SqlParameter("@ColorDes", SqlDbType.VarChar); + param[6].Value = md.ColorDes; + + param[7] = new SqlParameter("@workClass", SqlDbType.VarChar); + param[7].Value = md.workClass; + + param[8] = new SqlParameter("@Side", SqlDbType.VarChar); + param[8].Value = md.Side; + + param[9] = new SqlParameter("@CreateTime", SqlDbType.DateTime); + param[9].Value = md.CreateTime; + + param[10] = new SqlParameter("@ProductDate", SqlDbType.VarChar); + param[10].Value = md.ProductDate; + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + + public bool UpdatePrintTime(PaintBarCodeModel md) + { + try + { + #region 添加数据 + string sql = ""; + SqlParameter[] param = null; + sql = @"update " + TableName + " set PrintTime=@PrintTime where ID=@ID"; + + #region 添加参数 + param = new SqlParameter[2]; + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@PrintTime", SqlDbType.DateTime); + param[1].Value = md.PrintTime; + + + #endregion + + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, param); + #endregion + return true; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return false; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/DAL/painting/StockInDAL.cs b/SjMes/PunchAssemble/MESClassLibrary/DAL/painting/StockInDAL.cs new file mode 100644 index 0000000..784b80e --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/DAL/painting/StockInDAL.cs @@ -0,0 +1,596 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using MESClassLibrary.BLL.Log; + +namespace MESClassLibrary.DAL.painting +{ + public class StockInDAL + { + public DataTable SearchInfoA() + { + try + { + string sql = @"DECLARE @barcode nvarchar(100), + @productInfo nvarchar(100), + @createTime dateTime + + IF OBJECT_ID('TEMPDB..#a') IS NOT NULL + DROP TABLE #a + create table #a (BarCode nvarchar(100),productInfo nvarchar(100),createTime dateTime) + --truncate table #c + DECLARE cursor_name CURSOR FOR --定义游标 + SELECT barcode,CreateTime FROM dbo.tb_StockIn WHERE createTime BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:30:01') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:00') AND pass=1 + ORDER BY createTime DESC + OPEN cursor_name --打开游标 + FETCH NEXT FROM cursor_name INTO @barcode ,@createTime --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + SELECT TOP 1 @productInfo=productInfo FROM dbo.tb_InspectResult WHERE barcode=@barcode ORDER BY createTime DESC + + insert into #a(BarCode,ProductInfo,CreateTime) values(@barcode,@productInfo,@createTime) + FETCH NEXT FROM cursor_name INTO @barcode,@createTime + END + CLOSE cursor_name --关闭游标 + DEALLOCATE cursor_name --释放游标 + +SELECT COUNT(*) AS c1 , + (SELECT COUNT(*) FROM #a WHERE productInfo LIKE '%槛%' ) c2 + FROM #a WHERE productInfo LIKE '%保%'"; +// SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql1, null); +// string sql = @"SELECT COUNT(*) AS c1 , +// (SELECT COUNT(*) FROM #c WHERE productInfo LIKE '%槛%' ) c2 +// FROM #c WHERE productInfo LIKE '%保%' "; +// string sql = @"select count(*) as c1 , +// (select count(*) from view_stockin where ([createtime] between convert(datetime,substring(convert(nvarchar(50),getdate(),120),1,10)+ ' 07:30:01') and convert(datetime,substring(convert(nvarchar(50),getdate(),120),1,10)+ ' 19:30:00')) and productinfo like '%槛%' and pass=1) c2 +// from view_stockin where ([createtime] between convert(datetime,substring(convert(nvarchar(50),getdate(),120),1,10)+ ' 07:30:01') and convert(datetime,substring(convert(nvarchar(50),getdate(),120),1,10)+ ' 19:30:00')) and productinfo like '%保%' and pass=1 "; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoB() + { + try + { + string sql = ""; + + if (DateTime.Now > DateTime.Parse(DateTime.Now.ToShortDateString() + " 19:30:00") && DateTime.Now < DateTime.Parse(DateTime.Now.ToShortDateString() + " 23:59:59")) + { + sql = @"DECLARE @barcode nvarchar(100), + @productInfo nvarchar(100), + @createTime dateTime + + IF OBJECT_ID('TEMPDB..#c') IS NOT NULL + DROP TABLE #c + create table #c (BarCode nvarchar(100),productInfo nvarchar(100),createTime dateTime) + --truncate table #c + DECLARE cursor_name CURSOR FOR --定义游标 + SELECT barcode,CreateTime FROM dbo.tb_StockIn WHERE createTime BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:01') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:59:59') AND pass=1 + ORDER BY createTime DESC + OPEN cursor_name --打开游标 + FETCH NEXT FROM cursor_name INTO @barcode ,@createTime --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + SELECT TOP 1 @productInfo=productInfo FROM dbo.tb_InspectResult WHERE barcode=@barcode ORDER BY createTime DESC + + insert into #c(BarCode,ProductInfo,CreateTime) values(@barcode,@productInfo,@createTime) + --PRINT '用户ID:'+@productInfo + FETCH NEXT FROM cursor_name INTO @barcode,@createTime + END + CLOSE cursor_name --关闭游标 + DEALLOCATE cursor_name --释放游标 + + SELECT COUNT(*) AS c1 , + (SELECT COUNT(*) FROM #c WHERE productInfo LIKE '%槛%' ) c2 + FROM #c WHERE productInfo LIKE '%保%'"; +// sql = @"SELECT COUNT(*) AS c1 , +// (SELECT COUNT(*) FROM View_StockIn WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:01') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:59:59')) AND productInfo LIKE '%槛%' and pass=1) c2 +// FROM View_StockIn WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:01') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:59:59')) AND productInfo LIKE '%保%' and pass=1"; + } + + if (DateTime.Now > DateTime.Parse(DateTime.Now.ToShortDateString() + " 00:00:00") && DateTime.Now < DateTime.Parse(DateTime.Now.ToShortDateString() + " 07:30:00")) + { + sql = @"DECLARE @barcode nvarchar(100), + @productInfo nvarchar(100), + @createTime dateTime + + IF OBJECT_ID('TEMPDB..#c') IS NOT NULL + DROP TABLE #c + create table #c (BarCode nvarchar(100),productInfo nvarchar(100),createTime dateTime) + --truncate table #c + DECLARE cursor_name CURSOR FOR --定义游标 + SELECT barcode,CreateTime FROM dbo.tb_StockIn WHERE createTime BETWEEN DATEADD(day,-1, CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:01')) AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:30:00') AND pass=1 + ORDER BY createTime DESC + OPEN cursor_name --打开游标 + FETCH NEXT FROM cursor_name INTO @barcode ,@createTime --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + SELECT TOP 1 @productInfo=productInfo FROM dbo.tb_InspectResult WHERE barcode=@barcode ORDER BY createTime DESC + + insert into #c(BarCode,ProductInfo,CreateTime) values(@barcode,@productInfo,@createTime) + --PRINT '用户ID:'+@productInfo + FETCH NEXT FROM cursor_name INTO @barcode,@createTime + END + CLOSE cursor_name --关闭游标 + DEALLOCATE cursor_name --释放游标 + + SELECT COUNT(*) AS c1 , + (SELECT COUNT(*) FROM #c WHERE productInfo LIKE '%槛%' ) c2 + FROM #c WHERE productInfo LIKE '%保%'"; + // sql = @"SELECT COUNT(*) AS c1 , +// (SELECT COUNT(*) FROM View_StockIn WHERE ([createTime] BETWEEN DATEADD(day,-1, CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:01')) AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:30:00')) AND productInfo LIKE '%槛%' and pass=1) c2 +// FROM View_StockIn WHERE ([createTime] BETWEEN DATEADD(day,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:01')) AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:59:59')) AND productInfo LIKE '%保%' and pass=1"; + } + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoAByB() + { + try + { + string sql = ""; + + if (DateTime.Now > DateTime.Parse(DateTime.Now.ToShortDateString() + " 19:30:00") && DateTime.Now <= DateTime.Parse(DateTime.Now.ToShortDateString() + " 23:59:59")) + { + sql = @"DECLARE @barcode nvarchar(100), + @productInfo nvarchar(100), + @createTime dateTime + + IF OBJECT_ID('TEMPDB..#d') IS NOT NULL + DROP TABLE #d + create table #d (BarCode nvarchar(100),productInfo nvarchar(100),createTime dateTime) + --truncate table #c + DECLARE cursor_name CURSOR FOR --定义游标 + SELECT barcode,CreateTime FROM dbo.tb_StockIn WHERE createTime BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:30:01') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:00') AND pass=1 + ORDER BY createTime DESC + OPEN cursor_name --打开游标 + FETCH NEXT FROM cursor_name INTO @barcode ,@createTime --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + SELECT TOP 1 @productInfo=productInfo FROM dbo.tb_InspectResult WHERE barcode=@barcode ORDER BY createTime DESC + + insert into #d(BarCode,ProductInfo,CreateTime) values(@barcode,@productInfo,@createTime) + --PRINT '用户ID:'+@productInfo + FETCH NEXT FROM cursor_name INTO @barcode,@createTime + END + CLOSE cursor_name --关闭游标 + DEALLOCATE cursor_name --释放游标 + + SELECT COUNT(*) AS c1 , + (SELECT COUNT(*) FROM #d WHERE productInfo LIKE '%槛%' ) c2 + FROM #d WHERE productInfo LIKE '%保%'"; +// sql = @"SELECT COUNT(*) AS c1 , +// (SELECT COUNT(*) FROM View_StockIn WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:30:01') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:00')) AND productInfo LIKE '%槛%' and pass=1) c2 +// FROM View_StockIn WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:30:01') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:00')) AND productInfo LIKE '%保%' and pass=1"; + } + + if (DateTime.Now > DateTime.Parse(DateTime.Now.ToShortDateString() + " 00:00:00") && DateTime.Now < DateTime.Parse(DateTime.Now.ToShortDateString() + " 07:30:00")) + { + sql = @"DECLARE @barcode nvarchar(100), + @productInfo nvarchar(100), + @createTime dateTime + + IF OBJECT_ID('TEMPDB..#d') IS NOT NULL + DROP TABLE #d + create table #d (BarCode nvarchar(100),productInfo nvarchar(100),createTime dateTime) + --truncate table #c + DECLARE cursor_name CURSOR FOR --定义游标 + SELECT barcode,CreateTime FROM dbo.tb_StockIn WHERE createTime BETWEEN DATEADD(day,-1, CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:30:01')) AND DATEADD(day,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:00')) AND pass=1 + ORDER BY createTime DESC + OPEN cursor_name --打开游标 + FETCH NEXT FROM cursor_name INTO @barcode ,@createTime --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + SELECT TOP 1 @productInfo=productInfo FROM dbo.tb_InspectResult WHERE barcode=@barcode ORDER BY createTime DESC + + insert into #d(BarCode,ProductInfo,CreateTime) values(@barcode,@productInfo,@createTime) + --PRINT '用户ID:'+@productInfo + FETCH NEXT FROM cursor_name INTO @barcode,@createTime + END + CLOSE cursor_name --关闭游标 + DEALLOCATE cursor_name --释放游标 + + SELECT COUNT(*) AS c1 , + (SELECT COUNT(*) FROM #d WHERE productInfo LIKE '%槛%' ) c2 + FROM #d WHERE productInfo LIKE '%保%'"; +// sql = @"SELECT COUNT(*) AS c1 , +// (SELECT COUNT(*) FROM View_StockIn WHERE ([createTime] BETWEEN DATEADD(day,-1, CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:30:01')) AND DATEADD(day,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:00'))) AND productInfo LIKE '%槛%' and pass=1) c2 +// FROM View_StockIn WHERE ([createTime] BETWEEN DATEADD(day,-1, CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:30:01')) AND DATEADD(day,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:00'))) AND productInfo LIKE '%保%' and pass=1 "; + } + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchInfoBByA() + { + try + { + string sql = ""; + sql = @"DECLARE @barcode nvarchar(100), + @productInfo nvarchar(100), + @createTime dateTime + + IF OBJECT_ID('TEMPDB..#b') IS NOT NULL + DROP TABLE #b + create table #b (BarCode nvarchar(100),productInfo nvarchar(100),createTime dateTime) + --truncate table #c + DECLARE cursor_name CURSOR FOR --定义游标 + SELECT barcode,CreateTime FROM dbo.tb_StockIn WHERE createTime BETWEEN DATEADD(day,-1, CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:00')) AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:29:59') AND pass=1 + ORDER BY createTime DESC + OPEN cursor_name --打开游标 + FETCH NEXT FROM cursor_name INTO @barcode ,@createTime --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + SELECT TOP 1 @productInfo=productInfo FROM dbo.tb_InspectResult WHERE barcode=@barcode ORDER BY createTime DESC + + insert into #b(BarCode,ProductInfo,CreateTime) values(@barcode,@productInfo,@createTime) + --PRINT '用户ID:'+@productInfo + FETCH NEXT FROM cursor_name INTO @barcode,@createTime + END + CLOSE cursor_name --关闭游标 + DEALLOCATE cursor_name --释放游标 + + SELECT COUNT(*) AS c1 , + (SELECT COUNT(*) FROM #b WHERE productInfo LIKE '%槛%' ) c2 + FROM #b WHERE productInfo LIKE '%保%'"; +// sql = @"SELECT COUNT(*) AS c1 , +// (SELECT COUNT(*) FROM View_StockIn WHERE ([createTime] BETWEEN DATEADD(day,-1, CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:00')) AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:29:59')) AND productInfo LIKE '%槛%' and pass=1) c2 +// FROM View_StockIn WHERE([createTime] BETWEEN DATEADD(day,-1, CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:00')) AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:29:59')) AND productInfo LIKE '%保%' and pass=1"; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchDetailA() + { + try + { + string sql = @"DECLARE @barcode nvarchar(100), + @productInfo nvarchar(100), + @createTime DATETIME, + @totle INT , + @ptype NVARCHAR(100), + @color NVARCHAR(100) + + + IF OBJECT_ID('TEMPDB..#a') IS NOT NULL + DROP TABLE #a + create table #a (BarCode nvarchar(100),productInfo nvarchar(100),createTime dateTime) + --truncate table #c + DECLARE cursor_name CURSOR FOR --定义游标 + SELECT barcode,CreateTime FROM dbo.tb_StockIn WHERE createTime BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:30:01') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:00') AND pass=1 + ORDER BY createTime DESC + OPEN cursor_name --打开游标 + FETCH NEXT FROM cursor_name INTO @barcode ,@createTime --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + SELECT TOP 1 @productInfo=productInfo FROM dbo.tb_InspectResult WHERE barcode=@barcode ORDER BY createTime DESC + + insert into #a(BarCode,ProductInfo,CreateTime) values(@barcode,@productInfo,@createTime) + FETCH NEXT FROM cursor_name INTO @barcode,@createTime + END + CLOSE cursor_name --关闭游标 + DEALLOCATE cursor_name --释放游标 + + IF OBJECT_ID('TEMPDB..#temp') IS NOT NULL + DROP TABLE #temp + create table #temp (id INT IDENTITY(1,1)NOT NULL, totle INT,ptype nvarchar(100),color NVARCHAR(100)) + + DECLARE a1 CURSOR FOR --定义游标 + SELECT COUNT(0) totle,SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) AS PType,LEFT(productInfo,CHARINDEX(',',productInfo)-1) AS color + FROM #a WHERE productInfo LIKE '%槛%' + GROUP BY LEFT(productInfo,CHARINDEX(',',productInfo)-1),SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + ORDER BY SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + OPEN a1 --打开游标 + FETCH NEXT FROM a1 INTO @totle ,@ptype,@color --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + + insert into #temp(totle,ptype,color) values(@totle,@ptype,@color) + FETCH NEXT FROM a1 INTO @totle ,@ptype,@color + END + CLOSE a1 --关闭游标 + DEALLOCATE a1 --释放游标 + + + DECLARE a2 CURSOR FOR --定义游标 + SELECT COUNT(0) totle,SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) AS PType,LEFT(productInfo,CHARINDEX(',',productInfo)-1) AS color + FROM #a WHERE productInfo LIKE '%保%' + GROUP BY LEFT(productInfo,CHARINDEX(',',productInfo)-1),SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + ORDER BY SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + OPEN a2 --打开游标 + FETCH NEXT FROM a2 INTO @totle ,@ptype,@color --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + insert into #temp(totle,ptype,color) values(@totle,@ptype,@color) + FETCH NEXT FROM a2 INTO @totle ,@ptype,@color + END + CLOSE a2 --关闭游标 + DEALLOCATE a2 --释放游标 + + SELECT * FROM #temp ORDER BY id "; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchDetailB() + { + try + { + string sql = ""; + + if (DateTime.Now > DateTime.Parse(DateTime.Now.ToShortDateString() + " 19:30:00") && DateTime.Now < DateTime.Parse(DateTime.Now.ToShortDateString() + " 23:59:59")) + { + sql = @"DECLARE @barcode nvarchar(100), + @productInfo nvarchar(100), + @createTime DATETIME, + @totle INT , + @ptype NVARCHAR(100), + @color NVARCHAR(100) + + + IF OBJECT_ID('TEMPDB..#a') IS NOT NULL + DROP TABLE #a + create table #a (BarCode nvarchar(100),productInfo nvarchar(100),createTime dateTime) + --truncate table #c + DECLARE cursor_name CURSOR FOR --定义游标 + SELECT barcode,CreateTime FROM dbo.tb_StockIn WHERE createTime BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:01') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:59:59') AND pass=1 + ORDER BY createTime DESC + OPEN cursor_name --打开游标 + FETCH NEXT FROM cursor_name INTO @barcode ,@createTime --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + SELECT TOP 1 @productInfo=productInfo FROM dbo.tb_InspectResult WHERE barcode=@barcode ORDER BY createTime DESC + + insert into #a(BarCode,ProductInfo,CreateTime) values(@barcode,@productInfo,@createTime) + FETCH NEXT FROM cursor_name INTO @barcode,@createTime + END + CLOSE cursor_name --关闭游标 + DEALLOCATE cursor_name --释放游标 + + IF OBJECT_ID('TEMPDB..#temp') IS NOT NULL + DROP TABLE #temp + create table #temp (id INT IDENTITY(1,1)NOT NULL, totle INT,ptype nvarchar(100),color NVARCHAR(100)) + + DECLARE a1 CURSOR FOR --定义游标 + SELECT COUNT(0) totle,SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) AS PType,LEFT(productInfo,CHARINDEX(',',productInfo)-1) AS color + FROM #a WHERE productInfo LIKE '%槛%' + GROUP BY LEFT(productInfo,CHARINDEX(',',productInfo)-1),SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + ORDER BY SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + OPEN a1 --打开游标 + FETCH NEXT FROM a1 INTO @totle ,@ptype,@color --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + + insert into #temp(totle,ptype,color) values(@totle,@ptype,@color) + FETCH NEXT FROM a1 INTO @totle ,@ptype,@color + END + CLOSE a1 --关闭游标 + DEALLOCATE a1 --释放游标 + + + DECLARE a2 CURSOR FOR --定义游标 + SELECT COUNT(0) totle,SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) AS PType,LEFT(productInfo,CHARINDEX(',',productInfo)-1) AS color + FROM #a WHERE productInfo LIKE '%保%' + GROUP BY LEFT(productInfo,CHARINDEX(',',productInfo)-1),SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + ORDER BY SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + OPEN a2 --打开游标 + FETCH NEXT FROM a2 INTO @totle ,@ptype,@color --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + insert into #temp(totle,ptype,color) values(@totle,@ptype,@color) + FETCH NEXT FROM a2 INTO @totle ,@ptype,@color + END + CLOSE a2 --关闭游标 + DEALLOCATE a2 --释放游标 + + SELECT * FROM #temp ORDER BY id "; + } + + if (DateTime.Now > DateTime.Parse(DateTime.Now.ToShortDateString() + " 00:00:00") && DateTime.Now < DateTime.Parse(DateTime.Now.ToShortDateString() + " 07:30:00")) + { + sql = @"DECLARE @barcode nvarchar(100), + @productInfo nvarchar(100), + @createTime DATETIME, + @totle INT , + @ptype NVARCHAR(100), + @color NVARCHAR(100) + + + IF OBJECT_ID('TEMPDB..#a') IS NOT NULL + DROP TABLE #a + create table #a (BarCode nvarchar(100),productInfo nvarchar(100),createTime dateTime) + --truncate table #c + DECLARE cursor_name CURSOR FOR --定义游标 + SELECT barcode,CreateTime FROM dbo.tb_StockIn WHERE createTime BETWEEN DATEADD(day,-1, CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:01')) AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:30:00') AND pass=1 + ORDER BY createTime DESC + OPEN cursor_name --打开游标 + FETCH NEXT FROM cursor_name INTO @barcode ,@createTime --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + SELECT TOP 1 @productInfo=productInfo FROM dbo.tb_InspectResult WHERE barcode=@barcode ORDER BY createTime DESC + + insert into #a(BarCode,ProductInfo,CreateTime) values(@barcode,@productInfo,@createTime) + FETCH NEXT FROM cursor_name INTO @barcode,@createTime + END + CLOSE cursor_name --关闭游标 + DEALLOCATE cursor_name --释放游标 + + IF OBJECT_ID('TEMPDB..#temp') IS NOT NULL + DROP TABLE #temp + create table #temp (id INT IDENTITY(1,1)NOT NULL, totle INT,ptype nvarchar(100),color NVARCHAR(100)) + + DECLARE a1 CURSOR FOR --定义游标 + SELECT COUNT(0) totle,SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) AS PType,LEFT(productInfo,CHARINDEX(',',productInfo)-1) AS color + FROM #a WHERE productInfo LIKE '%槛%' + GROUP BY LEFT(productInfo,CHARINDEX(',',productInfo)-1),SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + ORDER BY SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + OPEN a1 --打开游标 + FETCH NEXT FROM a1 INTO @totle ,@ptype,@color --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + + insert into #temp(totle,ptype,color) values(@totle,@ptype,@color) + FETCH NEXT FROM a1 INTO @totle ,@ptype,@color + END + CLOSE a1 --关闭游标 + DEALLOCATE a1 --释放游标 + + + DECLARE a2 CURSOR FOR --定义游标 + SELECT COUNT(0) totle,SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) AS PType,LEFT(productInfo,CHARINDEX(',',productInfo)-1) AS color + FROM #a WHERE productInfo LIKE '%保%' + GROUP BY LEFT(productInfo,CHARINDEX(',',productInfo)-1),SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + ORDER BY SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + OPEN a2 --打开游标 + FETCH NEXT FROM a2 INTO @totle ,@ptype,@color --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + insert into #temp(totle,ptype,color) values(@totle,@ptype,@color) + FETCH NEXT FROM a2 INTO @totle ,@ptype,@color + END + CLOSE a2 --关闭游标 + DEALLOCATE a2 --释放游标 + + SELECT * FROM #temp ORDER BY id "; + } + + if (DateTime.Now > DateTime.Parse(DateTime.Now.ToShortDateString() + " 07:30:00") && DateTime.Now < DateTime.Parse(DateTime.Now.ToShortDateString() + " 19:30:00")) + { + sql = @"DECLARE @barcode nvarchar(100), + @productInfo nvarchar(100), + @createTime DATETIME, + @totle INT , + @ptype NVARCHAR(100), + @color NVARCHAR(100) + + + IF OBJECT_ID('TEMPDB..#a') IS NOT NULL + DROP TABLE #a + create table #a (BarCode nvarchar(100),productInfo nvarchar(100),createTime dateTime) + --truncate table #c + DECLARE cursor_name CURSOR FOR --定义游标 + SELECT barcode,CreateTime FROM dbo.tb_StockIn WHERE [createTime] BETWEEN DATEADD(day,-1, CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:30:01')) AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:30:00') AND pass=1 + ORDER BY createTime DESC + OPEN cursor_name --打开游标 + FETCH NEXT FROM cursor_name INTO @barcode ,@createTime --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + SELECT TOP 1 @productInfo=productInfo FROM dbo.tb_InspectResult WHERE barcode=@barcode ORDER BY createTime DESC + + insert into #a(BarCode,ProductInfo,CreateTime) values(@barcode,@productInfo,@createTime) + FETCH NEXT FROM cursor_name INTO @barcode,@createTime + END + CLOSE cursor_name --关闭游标 + DEALLOCATE cursor_name --释放游标 + + IF OBJECT_ID('TEMPDB..#temp') IS NOT NULL + DROP TABLE #temp + create table #temp (id INT IDENTITY(1,1)NOT NULL, totle INT,ptype nvarchar(100),color NVARCHAR(100)) + + DECLARE a1 CURSOR FOR --定义游标 + SELECT COUNT(0) totle,SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) AS PType,LEFT(productInfo,CHARINDEX(',',productInfo)-1) AS color + FROM #a WHERE productInfo LIKE '%槛%' + GROUP BY LEFT(productInfo,CHARINDEX(',',productInfo)-1),SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + ORDER BY SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + OPEN a1 --打开游标 + FETCH NEXT FROM a1 INTO @totle ,@ptype,@color --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + + insert into #temp(totle,ptype,color) values(@totle,@ptype,@color) + FETCH NEXT FROM a1 INTO @totle ,@ptype,@color + END + CLOSE a1 --关闭游标 + DEALLOCATE a1 --释放游标 + + + DECLARE a2 CURSOR FOR --定义游标 + SELECT COUNT(0) totle,SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) AS PType,LEFT(productInfo,CHARINDEX(',',productInfo)-1) AS color + FROM #a WHERE productInfo LIKE '%保%' + GROUP BY LEFT(productInfo,CHARINDEX(',',productInfo)-1),SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + ORDER BY SUBSTRING(productInfo, dbo.fn_find(',',productInfo,3 )+1,LEN(productInfo)-dbo.fn_find(',',productInfo,3 )) + OPEN a2 --打开游标 + FETCH NEXT FROM a2 INTO @totle ,@ptype,@color --抓取下一行游标数据 + WHILE @@FETCH_STATUS = 0 + BEGIN + insert into #temp(totle,ptype,color) values(@totle,@ptype,@color) + FETCH NEXT FROM a2 INTO @totle ,@ptype,@color + END + CLOSE a2 --关闭游标 + DEALLOCATE a2 --释放游标 + + SELECT * FROM #temp ORDER BY id +"; + } + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0]; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + + public DataTable SearchColor(string barCode) + { + try + { + string sql = @"select * from dbo.tb_StockIn where barcode=@barcode"; + SqlParameter[] param = new SqlParameter[1]; + + param[0] = new SqlParameter("@barcode", SqlDbType.VarChar); + param[0].Value = barCode; + + return SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, param).Tables[0]; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return null; + } + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.Context.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.Context.cs new file mode 100644 index 0000000..efc6a38 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.Context.cs @@ -0,0 +1,403 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Data.Entity; + using System.Data.Entity.Infrastructure; + //using System.Data.Entity.Core.Objects; + using System.Linq; + + public partial class BBMPTEntities : DbContext + { + public BBMPTEntities() + : base("name=BBMPTEntities") + { + } + + protected override void OnModelCreating(DbModelBuilder modelBuilder) + { + throw new UnintentionalCodeFirstException(); + } + + public virtual DbSet fine_authority { get; set; } + public virtual DbSet fine_authority_object { get; set; } + public virtual DbSet fine_backup_node { get; set; } + public virtual DbSet fine_base_message { get; set; } + public virtual DbSet fine_base_output { get; set; } + public virtual DbSet fine_block_ip { get; set; } + public virtual DbSet fine_conf_classname { get; set; } + public virtual DbSet fine_conf_entity { get; set; } + public virtual DbSet fine_conf_xmlentity { get; set; } + public virtual DbSet fine_custom_role { get; set; } + public virtual DbSet fine_dep_role { get; set; } + public virtual DbSet fine_department { get; set; } + public virtual DbSet fine_extra_property { get; set; } + public virtual DbSet fine_favorite_entry { get; set; } + public virtual DbSet fine_homepage_expand { get; set; } + public virtual DbSet fine_international { get; set; } + public virtual DbSet fine_last_login { get; set; } + public virtual DbSet fine_login_lock { get; set; } + public virtual DbSet fine_mobile_device { get; set; } + public virtual DbSet fine_mobile_push_message { get; set; } + public virtual DbSet fine_output_class { get; set; } + public virtual DbSet fine_output_client_notice { get; set; } + public virtual DbSet fine_output_email { get; set; } + public virtual DbSet fine_output_ftp { get; set; } + public virtual DbSet fine_output_mount { get; set; } + public virtual DbSet fine_output_platform_msg { get; set; } + public virtual DbSet fine_output_print { get; set; } + public virtual DbSet fine_output_sftp { get; set; } + public virtual DbSet fine_output_sms { get; set; } + public virtual DbSet fine_param_template { get; set; } + public virtual DbSet fine_post { get; set; } + public virtual DbSet fine_print_offset { get; set; } + public virtual DbSet fine_print_offset_ip_relate { get; set; } + public virtual DbSet fine_process_expand { get; set; } + public virtual DbSet fine_process_message { get; set; } + public virtual DbSet fine_remote_design_auth { get; set; } + public virtual DbSet fine_report_expand { get; set; } + public virtual DbSet fine_schedule_output { get; set; } + public virtual DbSet fine_schedule_record { get; set; } + public virtual DbSet fine_schedule_task { get; set; } + public virtual DbSet fine_schedule_task_param { get; set; } + public virtual DbSet fine_swift_cluster_size { get; set; } + public virtual DbSet fine_swift_col_idx_conf { get; set; } + public virtual DbSet fine_swift_config_entity { get; set; } + public virtual DbSet fine_swift_metadata { get; set; } + public virtual DbSet fine_swift_seg_location { get; set; } + public virtual DbSet fine_swift_segments { get; set; } + public virtual DbSet fine_swift_service_info { get; set; } + public virtual DbSet fine_swift_tab_idx_conf { get; set; } + public virtual DbSet fine_swift_table_path { get; set; } + public virtual DbSet fine_system_message { get; set; } + public virtual DbSet fine_user { get; set; } + public virtual DbSet fine_user_role_middle { get; set; } + public virtual DbSet fine_vcs { get; set; } + public virtual DbSet fine_workflow { get; set; } + public virtual DbSet fine_workflow_log { get; set; } + public virtual DbSet fine_workflow_node { get; set; } + public virtual DbSet fine_workflow_stash_data { get; set; } + public virtual DbSet fine_workflow_task { get; set; } + public virtual DbSet fine_workflow_task_impl { get; set; } + public virtual DbSet fine_write_stash { get; set; } + public virtual DbSet LogErr { get; set; } + public virtual DbSet LogSys { get; set; } + public virtual DbSet LogSys_202008 { get; set; } + public virtual DbSet QRTZ_BLOB_TRIGGERS { get; set; } + public virtual DbSet QRTZ_CALENDARS { get; set; } + public virtual DbSet QRTZ_CRON_TRIGGERS { get; set; } + public virtual DbSet QRTZ_FIRED_TRIGGERS { get; set; } + public virtual DbSet QRTZ_JOB_DETAILS { get; set; } + public virtual DbSet QRTZ_LOCKS { get; set; } + public virtual DbSet QRTZ_PAUSED_TRIGGER_GRPS { get; set; } + public virtual DbSet QRTZ_SCHEDULER_STATE { get; set; } + public virtual DbSet QRTZ_SIMPLE_TRIGGERS { get; set; } + public virtual DbSet QRTZ_SIMPROP_TRIGGERS { get; set; } + public virtual DbSet QRTZ_TRIGGERS { get; set; } + public virtual DbSet T_PaintInfo { get; set; } + public virtual DbSet T_Sys_Buttons { get; set; } + public virtual DbSet T_Sys_NavMenu { get; set; } + public virtual DbSet T_Sys_Power { get; set; } + public virtual DbSet T_Sys_Role { get; set; } + public virtual DbSet T_Sys_UserRole { get; set; } + public virtual DbSet T_Sys_Users { get; set; } + public virtual DbSet T_Sys_Users_NavMenu { get; set; } + public virtual DbSet TA_DEPT { get; set; } + public virtual DbSet tb_aa { get; set; } + public virtual DbSet tb_AndonButtonType { get; set; } + public virtual DbSet tb_AndonRecord { get; set; } + public virtual DbSet tb_Bad_Injection { get; set; } + public virtual DbSet tb_BarCode { get; set; } + public virtual DbSet tb_Bom { get; set; } + public virtual DbSet tb_Box_243 { get; set; } + public virtual DbSet tb_Box_Record { get; set; } + public virtual DbSet tb_Box_WheelBrow { get; set; } + public virtual DbSet tb_BucketInfo { get; set; } + public virtual DbSet tb_CheckItem { get; set; } + public virtual DbSet tb_Color { get; set; } + public virtual DbSet tb_CommonlyInspection { get; set; } + public virtual DbSet tb_CommonlyInspectionRecord { get; set; } + public virtual DbSet tb_CommonlyInspectionVersion { get; set; } + public virtual DbSet tb_Config { get; set; } + public virtual DbSet tb_Cylinder { get; set; } + public virtual DbSet tb_CylinderAndRaw { get; set; } + public virtual DbSet tb_Defect { get; set; } + public virtual DbSet tb_Device { get; set; } + public virtual DbSet tb_Factory { get; set; } + public virtual DbSet tb_FinishProduct { get; set; } + public virtual DbSet tb_HybridPlan { get; set; } + public virtual DbSet tb_HybridScanRecord { get; set; } + public virtual DbSet tb_ImgVideo { get; set; } + public virtual DbSet tb_Inhection_DownReason { get; set; } + public virtual DbSet tb_Injection_DownRecord { get; set; } + public virtual DbSet tb_Injection_DownTime { get; set; } + public virtual DbSet tb_Injection_DownType { get; set; } + public virtual DbSet tb_Injection_Record { get; set; } + public virtual DbSet tb_InjectionPlan { get; set; } + public virtual DbSet tb_InspectResult { get; set; } + public virtual DbSet tb_LayerAndBC { get; set; } + public virtual DbSet tb_Line { get; set; } + public virtual DbSet tb_Location { get; set; } + public virtual DbSet tb_Machine { get; set; } + public virtual DbSet tb_Mistake_243 { get; set; } + public virtual DbSet tb_Mistake_247 { get; set; } + public virtual DbSet tb_Model_Product { get; set; } + public virtual DbSet tb_Model_Update { get; set; } + public virtual DbSet tb_ModelCount { get; set; } + public virtual DbSet tb_ModelInfo { get; set; } + public virtual DbSet tb_Operator { get; set; } + public virtual DbSet tb_Paint_Bucket { get; set; } + public virtual DbSet tb_PaintBarCode { get; set; } + public virtual DbSet tb_PaintInfo { get; set; } + public virtual DbSet tb_PaintPerson { get; set; } + public virtual DbSet tb_PaintReason { get; set; } + public virtual DbSet tb_PaintScanRecord { get; set; } + public virtual DbSet tb_PartRecord { get; set; } + public virtual DbSet tb_Place { get; set; } + public virtual DbSet tb_Plan_243 { get; set; } + public virtual DbSet tb_Plan_247 { get; set; } + public virtual DbSet tb_Plan_Punch { get; set; } + public virtual DbSet tb_PlanScreenConfig { get; set; } + public virtual DbSet tb_Plastic { get; set; } + public virtual DbSet tb_PrintConfig { get; set; } + public virtual DbSet tb_Product { get; set; } + public virtual DbSet tb_Product_Injection { get; set; } + public virtual DbSet tb_Product_Injection_w { get; set; } + public virtual DbSet tb_ProductSotckIn { get; set; } + public virtual DbSet tb_ProductType { get; set; } + public virtual DbSet tb_Project { get; set; } + public virtual DbSet tb_Punch_Code_Record { get; set; } + public virtual DbSet tb_Punch_Code_Record2 { get; set; } + public virtual DbSet tb_Punch_Proucting { get; set; } + public virtual DbSet tb_PunchAddress { get; set; } + public virtual DbSet tb_PunchAndStation { get; set; } + public virtual DbSet tb_PunchDevice { get; set; } + public virtual DbSet tb_PunchMFAPlan { get; set; } + public virtual DbSet tb_PunchNGCCPlan { get; set; } + public virtual DbSet tb_PunchPlan { get; set; } + public virtual DbSet tb_PunchRecord { get; set; } + public virtual DbSet tb_PunchResult { get; set; } + public virtual DbSet tb_PunchValueRecord { get; set; } + public virtual DbSet tb_Record_243 { get; set; } + public virtual DbSet tb_Record_243_20220517 { get; set; } + public virtual DbSet tb_Report_FiveScreen { get; set; } + public virtual DbSet tb_Report_FiveScreenConfig { get; set; } + public virtual DbSet tb_Report_FiveScreenLast { get; set; } + public virtual DbSet tb_Report_FiveScreenStandard { get; set; } + public virtual DbSet tb_ReportA1 { get; set; } + public virtual DbSet tb_reportA2 { get; set; } + public virtual DbSet tb_ReportF1 { get; set; } + public virtual DbSet tb_ReportF3 { get; set; } + public virtual DbSet tb_ReportG1 { get; set; } + public virtual DbSet tb_ReportH1 { get; set; } + public virtual DbSet tb_ReportTest { get; set; } + public virtual DbSet tb_ScanAnalysis { get; set; } + public virtual DbSet tb_ScanRecord_Laser { get; set; } + public virtual DbSet tb_SkidInfo { get; set; } + public virtual DbSet tb_SpcialNotFacStockNo { get; set; } + public virtual DbSet tb_SpcialStockNo { get; set; } + public virtual DbSet tb_Station { get; set; } + public virtual DbSet tb_StationAndCylinder { get; set; } + public virtual DbSet tb_StockIn_beif { get; set; } + public virtual DbSet tb_StockInColor { get; set; } + public virtual DbSet tb_test { get; set; } + public virtual DbSet tb_ToVisual_WheelBrow_243 { get; set; } + public virtual DbSet tb_ToVisual_WheelBrow_247 { get; set; } + public virtual DbSet TES_BOM { get; set; } + public virtual DbSet TES_PART_MSTR { get; set; } + public virtual DbSet test2 { get; set; } + public virtual DbSet LogSys_202001_04 { get; set; } + public virtual DbSet LogSys_202003 { get; set; } + public virtual DbSet LogSys_202004 { get; set; } + public virtual DbSet LogSys_202005 { get; set; } + public virtual DbSet LogSys_20200605 { get; set; } + public virtual DbSet LogSys_20200610 { get; set; } + public virtual DbSet LogSys_20210322 { get; set; } + public virtual DbSet T_Sys_RoleLinkPower { get; set; } + public virtual DbSet tb_Assembly_243 { get; set; } + public virtual DbSet tb_Assembly_247 { get; set; } + public virtual DbSet tb_Bom_20190726 { get; set; } + public virtual DbSet tb_Box_247 { get; set; } + public virtual DbSet tb_Color_20191008 { get; set; } + public virtual DbSet tb_Color_20201101 { get; set; } + public virtual DbSet tb_InjectPlanReport { get; set; } + public virtual DbSet tb_InspectResult_20190902 { get; set; } + public virtual DbSet tb_InspectResult_20200717 { get; set; } + public virtual DbSet tb_InspectResult_20201021 { get; set; } + public virtual DbSet tb_InspectResult_20210322 { get; set; } + public virtual DbSet tb_Mistake_243_bak { get; set; } + public virtual DbSet tb_Plan_Punch_20200509 { get; set; } + public virtual DbSet tb_PrintRecord { get; set; } + public virtual DbSet tb_Product_20200513 { get; set; } + public virtual DbSet tb_Product_20201110 { get; set; } + public virtual DbSet tb_Product_Injection_20190726 { get; set; } + public virtual DbSet tb_Product0912 { get; set; } + public virtual DbSet tb_Product20200802 { get; set; } + public virtual DbSet tb_Product20201016 { get; set; } + public virtual DbSet tb_Punch_Code_Record_20200721 { get; set; } + public virtual DbSet tb_Punch_Code_Record_20200907 { get; set; } + public virtual DbSet tb_Punch_Code_Record_BF { get; set; } + public virtual DbSet tb_Record_247 { get; set; } + public virtual DbSet tb_Report_FiveScreen_20191011 { get; set; } + public virtual DbSet tb_Report_FiveScreen_20191014 { get; set; } + public virtual DbSet tb_ReportPaintingScreen { get; set; } + public virtual DbSet tb_ReportPaintingScreen_bak { get; set; } + public virtual DbSet tb_ReportPaintingScreen_pg { get; set; } + public virtual DbSet tb_ReportPaintingScreen_pg_bak { get; set; } + public virtual DbSet tb_SkidInfo_20200904 { get; set; } + public virtual DbSet tb_StockIn { get; set; } + public virtual DbSet tb_StockIn_20200511 { get; set; } + public virtual DbSet tb_StockIn_20210322 { get; set; } + public virtual DbSet test1 { get; set; } + + //public virtual int user_del(Nullable userID, string opName) + //{ + // var userIDParameter = userID.HasValue ? + // new ObjectParameter("UserID", userID) : + // new ObjectParameter("UserID", typeof(System.Guid)); + + // var opNameParameter = opName != null ? + // new ObjectParameter("opName", opName) : + // new ObjectParameter("opName", typeof(string)); + + // return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("user_del", userIDParameter, opNameParameter); + //} + + //public virtual ObjectResult user_department_sel() + //{ + // return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("user_department_sel"); + //} + + //public virtual int user_ins(Nullable userID, string userName, string password, string realName, string sex, string tel, string department, Nullable departmentID, Nullable isEnabled, string menuList, string opName) + //{ + // var userIDParameter = userID.HasValue ? + // new ObjectParameter("UserID", userID) : + // new ObjectParameter("UserID", typeof(System.Guid)); + + // var userNameParameter = userName != null ? + // new ObjectParameter("UserName", userName) : + // new ObjectParameter("UserName", typeof(string)); + + // var passwordParameter = password != null ? + // new ObjectParameter("Password", password) : + // new ObjectParameter("Password", typeof(string)); + + // var realNameParameter = realName != null ? + // new ObjectParameter("RealName", realName) : + // new ObjectParameter("RealName", typeof(string)); + + // var sexParameter = sex != null ? + // new ObjectParameter("Sex", sex) : + // new ObjectParameter("Sex", typeof(string)); + + // var telParameter = tel != null ? + // new ObjectParameter("Tel", tel) : + // new ObjectParameter("Tel", typeof(string)); + + // var departmentParameter = department != null ? + // new ObjectParameter("Department", department) : + // new ObjectParameter("Department", typeof(string)); + + // var departmentIDParameter = departmentID.HasValue ? + // new ObjectParameter("DepartmentID", departmentID) : + // new ObjectParameter("DepartmentID", typeof(System.Guid)); + + // var isEnabledParameter = isEnabled.HasValue ? + // new ObjectParameter("IsEnabled", isEnabled) : + // new ObjectParameter("IsEnabled", typeof(int)); + + // var menuListParameter = menuList != null ? + // new ObjectParameter("MenuList", menuList) : + // new ObjectParameter("MenuList", typeof(string)); + + // var opNameParameter = opName != null ? + // new ObjectParameter("opName", opName) : + // new ObjectParameter("opName", typeof(string)); + + // return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("user_ins", userIDParameter, userNameParameter, passwordParameter, realNameParameter, sexParameter, telParameter, departmentParameter, departmentIDParameter, isEnabledParameter, menuListParameter, opNameParameter); + //} + + //public virtual ObjectResult user_menu_sel(Nullable userID) + //{ + // var userIDParameter = userID.HasValue ? + // new ObjectParameter("UserID", userID) : + // new ObjectParameter("UserID", typeof(System.Guid)); + + // return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("user_menu_sel", userIDParameter); + //} + + //public virtual ObjectResult> user_sel(string userName, Nullable page, Nullable pagesize) + //{ + // var userNameParameter = userName != null ? + // new ObjectParameter("UserName", userName) : + // new ObjectParameter("UserName", typeof(string)); + + // var pageParameter = page.HasValue ? + // new ObjectParameter("page", page) : + // new ObjectParameter("page", typeof(int)); + + // var pagesizeParameter = pagesize.HasValue ? + // new ObjectParameter("pagesize", pagesize) : + // new ObjectParameter("pagesize", typeof(int)); + + // return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction>("user_sel", userNameParameter, pageParameter, pagesizeParameter); + //} + + //public virtual int user_upd(Nullable userID, string userName, string password, string realName, string sex, string tel, string department, Nullable departmentID, Nullable isEnabled, string menuList, string opName) + //{ + // var userIDParameter = userID.HasValue ? + // new ObjectParameter("UserID", userID) : + // new ObjectParameter("UserID", typeof(System.Guid)); + + // var userNameParameter = userName != null ? + // new ObjectParameter("UserName", userName) : + // new ObjectParameter("UserName", typeof(string)); + + // var passwordParameter = password != null ? + // new ObjectParameter("Password", password) : + // new ObjectParameter("Password", typeof(string)); + + // var realNameParameter = realName != null ? + // new ObjectParameter("RealName", realName) : + // new ObjectParameter("RealName", typeof(string)); + + // var sexParameter = sex != null ? + // new ObjectParameter("Sex", sex) : + // new ObjectParameter("Sex", typeof(string)); + + // var telParameter = tel != null ? + // new ObjectParameter("Tel", tel) : + // new ObjectParameter("Tel", typeof(string)); + + // var departmentParameter = department != null ? + // new ObjectParameter("Department", department) : + // new ObjectParameter("Department", typeof(string)); + + // var departmentIDParameter = departmentID.HasValue ? + // new ObjectParameter("DepartmentID", departmentID) : + // new ObjectParameter("DepartmentID", typeof(System.Guid)); + + // var isEnabledParameter = isEnabled.HasValue ? + // new ObjectParameter("IsEnabled", isEnabled) : + // new ObjectParameter("IsEnabled", typeof(int)); + + // var menuListParameter = menuList != null ? + // new ObjectParameter("MenuList", menuList) : + // new ObjectParameter("MenuList", typeof(string)); + + // var opNameParameter = opName != null ? + // new ObjectParameter("opName", opName) : + // new ObjectParameter("opName", typeof(string)); + + // return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("user_upd", userIDParameter, userNameParameter, passwordParameter, realNameParameter, sexParameter, telParameter, departmentParameter, departmentIDParameter, isEnabledParameter, menuListParameter, opNameParameter); + //} + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.Context.tt b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.Context.tt new file mode 100644 index 0000000..eb83c98 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.Context.tt @@ -0,0 +1,636 @@ +<#@ template language="C#" debug="false" hostspecific="true"#> +<#@ include file="EF6.Utility.CS.ttinclude"#><#@ + output extension=".cs"#><# + +const string inputFile = @"BBMPT.edmx"; +var textTransform = DynamicTextTransformation.Create(this); +var code = new CodeGenerationTools(this); +var ef = new MetadataTools(this); +var typeMapper = new TypeMapper(code, ef, textTransform.Errors); +var loader = new EdmMetadataLoader(textTransform.Host, textTransform.Errors); +var itemCollection = loader.CreateEdmItemCollection(inputFile); +var modelNamespace = loader.GetModelNamespace(inputFile); +var codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef); + +var container = itemCollection.OfType().FirstOrDefault(); +if (container == null) +{ + return string.Empty; +} +#> +//------------------------------------------------------------------------------ +// +// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine1")#> +// +// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine2")#> +// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine3")#> +// +//------------------------------------------------------------------------------ + +<# + +var codeNamespace = code.VsNamespaceSuggestion(); +if (!String.IsNullOrEmpty(codeNamespace)) +{ +#> +namespace <#=code.EscapeNamespace(codeNamespace)#> +{ +<# + PushIndent(" "); +} + +#> +using System; +using System.Data.Entity; +using System.Data.Entity.Infrastructure; +<# +if (container.FunctionImports.Any()) +{ +#> +using System.Data.Entity.Core.Objects; +using System.Linq; +<# +} +#> + +<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : DbContext +{ + public <#=code.Escape(container)#>() + : base("name=<#=container.Name#>") + { +<# +if (!loader.IsLazyLoadingEnabled(container)) +{ +#> + this.Configuration.LazyLoadingEnabled = false; +<# +} + +foreach (var entitySet in container.BaseEntitySets.OfType()) +{ + // Note: the DbSet members are defined below such that the getter and + // setter always have the same accessibility as the DbSet definition + if (Accessibility.ForReadOnlyProperty(entitySet) != "public") + { +#> + <#=codeStringGenerator.DbSetInitializer(entitySet)#> +<# + } +} +#> + } + + protected override void OnModelCreating(DbModelBuilder modelBuilder) + { + throw new UnintentionalCodeFirstException(); + } + +<# + foreach (var entitySet in container.BaseEntitySets.OfType()) + { +#> + <#=codeStringGenerator.DbSet(entitySet)#> +<# + } + + foreach (var edmFunction in container.FunctionImports) + { + WriteFunctionImport(typeMapper, codeStringGenerator, edmFunction, modelNamespace, includeMergeOption: false); + } +#> +} +<# + +if (!String.IsNullOrEmpty(codeNamespace)) +{ + PopIndent(); +#> +} +<# +} +#> +<#+ + +private void WriteFunctionImport(TypeMapper typeMapper, CodeStringGenerator codeStringGenerator, EdmFunction edmFunction, string modelNamespace, bool includeMergeOption) +{ + if (typeMapper.IsComposable(edmFunction)) + { +#> + + [DbFunction("<#=edmFunction.NamespaceName#>", "<#=edmFunction.Name#>")] + <#=codeStringGenerator.ComposableFunctionMethod(edmFunction, modelNamespace)#> + { +<#+ + codeStringGenerator.WriteFunctionParameters(edmFunction, WriteFunctionParameter); +#> + <#=codeStringGenerator.ComposableCreateQuery(edmFunction, modelNamespace)#> + } +<#+ + } + else + { +#> + + <#=codeStringGenerator.FunctionMethod(edmFunction, modelNamespace, includeMergeOption)#> + { +<#+ + codeStringGenerator.WriteFunctionParameters(edmFunction, WriteFunctionParameter); +#> + <#=codeStringGenerator.ExecuteFunction(edmFunction, modelNamespace, includeMergeOption)#> + } +<#+ + if (typeMapper.GenerateMergeOptionFunction(edmFunction, includeMergeOption)) + { + WriteFunctionImport(typeMapper, codeStringGenerator, edmFunction, modelNamespace, includeMergeOption: true); + } + } +} + +public void WriteFunctionParameter(string name, string isNotNull, string notNullInit, string nullInit) +{ +#> + var <#=name#> = <#=isNotNull#> ? + <#=notNullInit#> : + <#=nullInit#>; + +<#+ +} + +public const string TemplateId = "CSharp_DbContext_Context_EF6"; + +public class CodeStringGenerator +{ + private readonly CodeGenerationTools _code; + private readonly TypeMapper _typeMapper; + private readonly MetadataTools _ef; + + public CodeStringGenerator(CodeGenerationTools code, TypeMapper typeMapper, MetadataTools ef) + { + ArgumentNotNull(code, "code"); + ArgumentNotNull(typeMapper, "typeMapper"); + ArgumentNotNull(ef, "ef"); + + _code = code; + _typeMapper = typeMapper; + _ef = ef; + } + + public string Property(EdmProperty edmProperty) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1} {2} {{ {3}get; {4}set; }}", + Accessibility.ForProperty(edmProperty), + _typeMapper.GetTypeName(edmProperty.TypeUsage), + _code.Escape(edmProperty), + _code.SpaceAfter(Accessibility.ForGetter(edmProperty)), + _code.SpaceAfter(Accessibility.ForSetter(edmProperty))); + } + + public string NavigationProperty(NavigationProperty navProp) + { + var endType = _typeMapper.GetTypeName(navProp.ToEndMember.GetEntityType()); + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1} {2} {{ {3}get; {4}set; }}", + AccessibilityAndVirtual(Accessibility.ForNavigationProperty(navProp)), + navProp.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many ? ("ICollection<" + endType + ">") : endType, + _code.Escape(navProp), + _code.SpaceAfter(Accessibility.ForGetter(navProp)), + _code.SpaceAfter(Accessibility.ForSetter(navProp))); + } + + public string AccessibilityAndVirtual(string accessibility) + { + return accessibility + (accessibility != "private" ? " virtual" : ""); + } + + public string EntityClassOpening(EntityType entity) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1}partial class {2}{3}", + Accessibility.ForType(entity), + _code.SpaceAfter(_code.AbstractOption(entity)), + _code.Escape(entity), + _code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType))); + } + + public string EnumOpening(SimpleType enumType) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} enum {1} : {2}", + Accessibility.ForType(enumType), + _code.Escape(enumType), + _code.Escape(_typeMapper.UnderlyingClrType(enumType))); + } + + public void WriteFunctionParameters(EdmFunction edmFunction, Action writeParameter) + { + var parameters = FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef); + foreach (var parameter in parameters.Where(p => p.NeedsLocalVariable)) + { + var isNotNull = parameter.IsNullableOfT ? parameter.FunctionParameterName + ".HasValue" : parameter.FunctionParameterName + " != null"; + var notNullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", " + parameter.FunctionParameterName + ")"; + var nullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", typeof(" + TypeMapper.FixNamespaces(parameter.RawClrTypeName) + "))"; + writeParameter(parameter.LocalVariableName, isNotNull, notNullInit, nullInit); + } + } + + public string ComposableFunctionMethod(EdmFunction edmFunction, string modelNamespace) + { + var parameters = _typeMapper.GetParameters(edmFunction); + + return string.Format( + CultureInfo.InvariantCulture, + "{0} IQueryable<{1}> {2}({3})", + AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)), + _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace), + _code.Escape(edmFunction), + string.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray())); + } + + public string ComposableCreateQuery(EdmFunction edmFunction, string modelNamespace) + { + var parameters = _typeMapper.GetParameters(edmFunction); + + return string.Format( + CultureInfo.InvariantCulture, + "return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<{0}>(\"[{1}].[{2}]({3})\"{4});", + _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace), + edmFunction.NamespaceName, + edmFunction.Name, + string.Join(", ", parameters.Select(p => "@" + p.EsqlParameterName).ToArray()), + _code.StringBefore(", ", string.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray()))); + } + + public string FunctionMethod(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption) + { + var parameters = _typeMapper.GetParameters(edmFunction); + var returnType = _typeMapper.GetReturnType(edmFunction); + + var paramList = String.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray()); + if (includeMergeOption) + { + paramList = _code.StringAfter(paramList, ", ") + "MergeOption mergeOption"; + } + + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1} {2}({3})", + AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)), + returnType == null ? "int" : "ObjectResult<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">", + _code.Escape(edmFunction), + paramList); + } + + public string ExecuteFunction(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption) + { + var parameters = _typeMapper.GetParameters(edmFunction); + var returnType = _typeMapper.GetReturnType(edmFunction); + + var callParams = _code.StringBefore(", ", String.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray())); + if (includeMergeOption) + { + callParams = ", mergeOption" + callParams; + } + + return string.Format( + CultureInfo.InvariantCulture, + "return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction{0}(\"{1}\"{2});", + returnType == null ? "" : "<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">", + edmFunction.Name, + callParams); + } + + public string DbSet(EntitySet entitySet) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} virtual DbSet<{1}> {2} {{ get; set; }}", + Accessibility.ForReadOnlyProperty(entitySet), + _typeMapper.GetTypeName(entitySet.ElementType), + _code.Escape(entitySet)); + } + + public string DbSetInitializer(EntitySet entitySet) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} = Set<{1}>();", + _code.Escape(entitySet), + _typeMapper.GetTypeName(entitySet.ElementType)); + } + + public string UsingDirectives(bool inHeader, bool includeCollections = true) + { + return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion()) + ? string.Format( + CultureInfo.InvariantCulture, + "{0}using System;{1}" + + "{2}", + inHeader ? Environment.NewLine : "", + includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "", + inHeader ? "" : Environment.NewLine) + : ""; + } +} + +public class TypeMapper +{ + private const string ExternalTypeNameAttributeName = @"http://schemas.microsoft.com/ado/2006/04/codegeneration:ExternalTypeName"; + + private readonly System.Collections.IList _errors; + private readonly CodeGenerationTools _code; + private readonly MetadataTools _ef; + + public static string FixNamespaces(string typeName) + { + return typeName.Replace("System.Data.Spatial.", "System.Data.Entity.Spatial."); + } + + public TypeMapper(CodeGenerationTools code, MetadataTools ef, System.Collections.IList errors) + { + ArgumentNotNull(code, "code"); + ArgumentNotNull(ef, "ef"); + ArgumentNotNull(errors, "errors"); + + _code = code; + _ef = ef; + _errors = errors; + } + + public string GetTypeName(TypeUsage typeUsage) + { + return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace: null); + } + + public string GetTypeName(EdmType edmType) + { + return GetTypeName(edmType, isNullable: null, modelNamespace: null); + } + + public string GetTypeName(TypeUsage typeUsage, string modelNamespace) + { + return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace); + } + + public string GetTypeName(EdmType edmType, string modelNamespace) + { + return GetTypeName(edmType, isNullable: null, modelNamespace: modelNamespace); + } + + public string GetTypeName(EdmType edmType, bool? isNullable, string modelNamespace) + { + if (edmType == null) + { + return null; + } + + var collectionType = edmType as CollectionType; + if (collectionType != null) + { + return String.Format(CultureInfo.InvariantCulture, "ICollection<{0}>", GetTypeName(collectionType.TypeUsage, modelNamespace)); + } + + var typeName = _code.Escape(edmType.MetadataProperties + .Where(p => p.Name == ExternalTypeNameAttributeName) + .Select(p => (string)p.Value) + .FirstOrDefault()) + ?? (modelNamespace != null && edmType.NamespaceName != modelNamespace ? + _code.CreateFullName(_code.EscapeNamespace(edmType.NamespaceName), _code.Escape(edmType)) : + _code.Escape(edmType)); + + if (edmType is StructuralType) + { + return typeName; + } + + if (edmType is SimpleType) + { + var clrType = UnderlyingClrType(edmType); + if (!IsEnumType(edmType)) + { + typeName = _code.Escape(clrType); + } + + typeName = FixNamespaces(typeName); + + return clrType.IsValueType && isNullable == true ? + String.Format(CultureInfo.InvariantCulture, "Nullable<{0}>", typeName) : + typeName; + } + + throw new ArgumentException("edmType"); + } + + public Type UnderlyingClrType(EdmType edmType) + { + ArgumentNotNull(edmType, "edmType"); + + var primitiveType = edmType as PrimitiveType; + if (primitiveType != null) + { + return primitiveType.ClrEquivalentType; + } + + if (IsEnumType(edmType)) + { + return GetEnumUnderlyingType(edmType).ClrEquivalentType; + } + + return typeof(object); + } + + public object GetEnumMemberValue(MetadataItem enumMember) + { + ArgumentNotNull(enumMember, "enumMember"); + + var valueProperty = enumMember.GetType().GetProperty("Value"); + return valueProperty == null ? null : valueProperty.GetValue(enumMember, null); + } + + public string GetEnumMemberName(MetadataItem enumMember) + { + ArgumentNotNull(enumMember, "enumMember"); + + var nameProperty = enumMember.GetType().GetProperty("Name"); + return nameProperty == null ? null : (string)nameProperty.GetValue(enumMember, null); + } + + public System.Collections.IEnumerable GetEnumMembers(EdmType enumType) + { + ArgumentNotNull(enumType, "enumType"); + + var membersProperty = enumType.GetType().GetProperty("Members"); + return membersProperty != null + ? (System.Collections.IEnumerable)membersProperty.GetValue(enumType, null) + : Enumerable.Empty(); + } + + public bool EnumIsFlags(EdmType enumType) + { + ArgumentNotNull(enumType, "enumType"); + + var isFlagsProperty = enumType.GetType().GetProperty("IsFlags"); + return isFlagsProperty != null && (bool)isFlagsProperty.GetValue(enumType, null); + } + + public bool IsEnumType(GlobalItem edmType) + { + ArgumentNotNull(edmType, "edmType"); + + return edmType.GetType().Name == "EnumType"; + } + + public PrimitiveType GetEnumUnderlyingType(EdmType enumType) + { + ArgumentNotNull(enumType, "enumType"); + + return (PrimitiveType)enumType.GetType().GetProperty("UnderlyingType").GetValue(enumType, null); + } + + public string CreateLiteral(object value) + { + if (value == null || value.GetType() != typeof(TimeSpan)) + { + return _code.CreateLiteral(value); + } + + return string.Format(CultureInfo.InvariantCulture, "new TimeSpan({0})", ((TimeSpan)value).Ticks); + } + + public bool VerifyCaseInsensitiveTypeUniqueness(IEnumerable types, string sourceFile) + { + ArgumentNotNull(types, "types"); + ArgumentNotNull(sourceFile, "sourceFile"); + + var hash = new HashSet(StringComparer.InvariantCultureIgnoreCase); + if (types.Any(item => !hash.Add(item))) + { + _errors.Add( + new CompilerError(sourceFile, -1, -1, "6023", + String.Format(CultureInfo.CurrentCulture, CodeGenerationTools.GetResourceString("Template_CaseInsensitiveTypeConflict")))); + return false; + } + return true; + } + + public IEnumerable GetEnumItemsToGenerate(IEnumerable itemCollection) + { + return GetItemsToGenerate(itemCollection) + .Where(e => IsEnumType(e)); + } + + public IEnumerable GetItemsToGenerate(IEnumerable itemCollection) where T: EdmType + { + return itemCollection + .OfType() + .Where(i => !i.MetadataProperties.Any(p => p.Name == ExternalTypeNameAttributeName)) + .OrderBy(i => i.Name); + } + + public IEnumerable GetAllGlobalItems(IEnumerable itemCollection) + { + return itemCollection + .Where(i => i is EntityType || i is ComplexType || i is EntityContainer || IsEnumType(i)) + .Select(g => GetGlobalItemName(g)); + } + + public string GetGlobalItemName(GlobalItem item) + { + if (item is EdmType) + { + return ((EdmType)item).Name; + } + else + { + return ((EntityContainer)item).Name; + } + } + + public IEnumerable GetSimpleProperties(EntityType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type); + } + + public IEnumerable GetSimpleProperties(ComplexType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type); + } + + public IEnumerable GetComplexProperties(EntityType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type); + } + + public IEnumerable GetComplexProperties(ComplexType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type); + } + + public IEnumerable GetPropertiesWithDefaultValues(EntityType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null); + } + + public IEnumerable GetPropertiesWithDefaultValues(ComplexType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null); + } + + public IEnumerable GetNavigationProperties(EntityType type) + { + return type.NavigationProperties.Where(np => np.DeclaringType == type); + } + + public IEnumerable GetCollectionNavigationProperties(EntityType type) + { + return type.NavigationProperties.Where(np => np.DeclaringType == type && np.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many); + } + + public FunctionParameter GetReturnParameter(EdmFunction edmFunction) + { + ArgumentNotNull(edmFunction, "edmFunction"); + + var returnParamsProperty = edmFunction.GetType().GetProperty("ReturnParameters"); + return returnParamsProperty == null + ? edmFunction.ReturnParameter + : ((IEnumerable)returnParamsProperty.GetValue(edmFunction, null)).FirstOrDefault(); + } + + public bool IsComposable(EdmFunction edmFunction) + { + ArgumentNotNull(edmFunction, "edmFunction"); + + var isComposableProperty = edmFunction.GetType().GetProperty("IsComposableAttribute"); + return isComposableProperty != null && (bool)isComposableProperty.GetValue(edmFunction, null); + } + + public IEnumerable GetParameters(EdmFunction edmFunction) + { + return FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef); + } + + public TypeUsage GetReturnType(EdmFunction edmFunction) + { + var returnParam = GetReturnParameter(edmFunction); + return returnParam == null ? null : _ef.GetElementType(returnParam.TypeUsage); + } + + public bool GenerateMergeOptionFunction(EdmFunction edmFunction, bool includeMergeOption) + { + var returnType = GetReturnType(edmFunction); + return !includeMergeOption && returnType != null && returnType.EdmType.BuiltInTypeKind == BuiltInTypeKind.EntityType; + } +} + +public static void ArgumentNotNull(T arg, string name) where T : class +{ + if (arg == null) + { + throw new ArgumentNullException(name); + } +} +#> \ No newline at end of file diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.Designer.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.Designer.cs new file mode 100644 index 0000000..4f7c5e8 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.Designer.cs @@ -0,0 +1,10 @@ +// 为模型“D:\项目\1、北汽模塑二厂\李鑫\Code对接视频后冲孔未增加质检前\Code\MESClassLibrary\EFModel\BBMPT.edmx”启用了 T4 代码生成。 +// 要启用旧代码生成功能,请将“代码生成策略”设计器属性的值 +// 更改为“旧的 ObjectContext”。当在设计器中打开该模型时,此属性会出现在 +// “属性”窗口中。 + +// 如果没有生成任何上下文和实体类,可能是因为您创建了空模型但是 +// 尚未选择要使用的实体框架版本。要为您的模型生成一个上下文类和实体 +// 类,请在设计器中打开该模型,右键单击设计器图面,然后 +// 选择“从数据库更新模型...”、“从模型生成数据库...”或“添加代码生成 +// 项...”。 \ No newline at end of file diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.cs new file mode 100644 index 0000000..69c6b92 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.cs @@ -0,0 +1,9 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.edmx b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.edmx new file mode 100644 index 0000000..47aff17 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.edmx @@ -0,0 +1,11035 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT + [LogSys_202001-04].[ID] AS [ID], + [LogSys_202001-04].[SysContent] AS [SysContent], + [LogSys_202001-04].[SysSource] AS [SysSource], + [LogSys_202001-04].[CreateTime] AS [CreateTime] + FROM [dbo].[LogSys_202001-04] AS [LogSys_202001-04] + + + SELECT + [LogSys_202003].[ID] AS [ID], + [LogSys_202003].[SysContent] AS [SysContent], + [LogSys_202003].[SysSource] AS [SysSource], + [LogSys_202003].[CreateTime] AS [CreateTime] + FROM [dbo].[LogSys_202003] AS [LogSys_202003] + + + SELECT + [LogSys_202004].[ID] AS [ID], + [LogSys_202004].[SysContent] AS [SysContent], + [LogSys_202004].[SysSource] AS [SysSource], + [LogSys_202004].[CreateTime] AS [CreateTime] + FROM [dbo].[LogSys_202004] AS [LogSys_202004] + + + SELECT + [LogSys_202005].[ID] AS [ID], + [LogSys_202005].[SysContent] AS [SysContent], + [LogSys_202005].[SysSource] AS [SysSource], + [LogSys_202005].[CreateTime] AS [CreateTime] + FROM [dbo].[LogSys_202005] AS [LogSys_202005] + + + SELECT + [LogSys_20200605].[ID] AS [ID], + [LogSys_20200605].[SysContent] AS [SysContent], + [LogSys_20200605].[SysSource] AS [SysSource], + [LogSys_20200605].[CreateTime] AS [CreateTime] + FROM [dbo].[LogSys_20200605] AS [LogSys_20200605] + + + SELECT + [LogSys_20200610].[ID] AS [ID], + [LogSys_20200610].[SysContent] AS [SysContent], + [LogSys_20200610].[SysSource] AS [SysSource], + [LogSys_20200610].[CreateTime] AS [CreateTime] + FROM [dbo].[LogSys_20200610] AS [LogSys_20200610] + + + SELECT + [LogSys_20210322].[ID] AS [ID], + [LogSys_20210322].[SysContent] AS [SysContent], + [LogSys_20210322].[SysSource] AS [SysSource], + [LogSys_20210322].[CreateTime] AS [CreateTime] + FROM [dbo].[LogSys_20210322] AS [LogSys_20210322] + + + SELECT + [T_Sys_RoleLinkPower].[RoleID] AS [RoleID], + [T_Sys_RoleLinkPower].[PowerID] AS [PowerID], + [T_Sys_RoleLinkPower].[OpTime] AS [OpTime], + [T_Sys_RoleLinkPower].[OpName] AS [OpName] + FROM [dbo].[T_Sys_RoleLinkPower] AS [T_Sys_RoleLinkPower] + + + SELECT + [tb_Assembly_243].[ID] AS [ID], + [tb_Assembly_243].[PartNo] AS [PartNo], + [tb_Assembly_243].[PartName] AS [PartName], + [tb_Assembly_243].[BatchNo] AS [BatchNo], + [tb_Assembly_243].[Color] AS [Color], + [tb_Assembly_243].[ColorNo] AS [ColorNo], + [tb_Assembly_243].[PartType] AS [PartType], + [tb_Assembly_243].[TapeBatchNo] AS [TapeBatchNo], + [tb_Assembly_243].[Validity] AS [Validity], + [tb_Assembly_243].[ValidityDate] AS [ValidityDate], + [tb_Assembly_243].[CreateTime] AS [CreateTime], + [tb_Assembly_243].[PrintTime] AS [PrintTime], + [tb_Assembly_243].[Des] AS [Des], + [tb_Assembly_243].[Flag] AS [Flag], + [tb_Assembly_243].[ToVisual] AS [ToVisual], + [tb_Assembly_243].[FinishTime] AS [FinishTime] + FROM [dbo].[tb_Assembly_243] AS [tb_Assembly_243] + + + SELECT + [tb_Assembly_247].[ID] AS [ID], + [tb_Assembly_247].[PartNo] AS [PartNo], + [tb_Assembly_247].[PartName] AS [PartName], + [tb_Assembly_247].[BatchNo] AS [BatchNo], + [tb_Assembly_247].[Color] AS [Color], + [tb_Assembly_247].[ColorNo] AS [ColorNo], + [tb_Assembly_247].[PartType] AS [PartType], + [tb_Assembly_247].[TapeBatchNo] AS [TapeBatchNo], + [tb_Assembly_247].[Validity] AS [Validity], + [tb_Assembly_247].[ValidityDate] AS [ValidityDate], + [tb_Assembly_247].[CreateTime] AS [CreateTime], + [tb_Assembly_247].[PrintTime] AS [PrintTime], + [tb_Assembly_247].[Des] AS [Des], + [tb_Assembly_247].[Flag] AS [Flag], + [tb_Assembly_247].[ToVisual] AS [ToVisual], + [tb_Assembly_247].[FinishTime] AS [FinishTime], + [tb_Assembly_247].[IsCheck] AS [IsCheck], + [tb_Assembly_247].[DeviceNo] AS [DeviceNo] + FROM [dbo].[tb_Assembly_247] AS [tb_Assembly_247] + + + SELECT + [tb_Bom_20190726].[BomID] AS [BomID], + [tb_Bom_20190726].[PartNo1] AS [PartNo1], + [tb_Bom_20190726].[PartNo2] AS [PartNo2] + FROM [dbo].[tb_Bom_20190726] AS [tb_Bom_20190726] + + + SELECT + [tb_Box_247].[ID] AS [ID], + [tb_Box_247].[BoxNo] AS [BoxNo], + [tb_Box_247].[PartNo] AS [PartNo], + [tb_Box_247].[PartName] AS [PartName], + [tb_Box_247].[BatchNo] AS [BatchNo], + [tb_Box_247].[BoxCount] AS [BoxCount], + [tb_Box_247].[CreateTime] AS [CreateTime], + [tb_Box_247].[PrintTime] AS [PrintTime], + [tb_Box_247].[Des] AS [Des], + [tb_Box_247].[Flag] AS [Flag], + [tb_Box_247].[Validity] AS [Validity], + [tb_Box_247].[ValidityDate] AS [ValidityDate] + FROM [dbo].[tb_Box_247] AS [tb_Box_247] + + + SELECT + [tb_Color_20191008].[ID] AS [ID], + [tb_Color_20191008].[ColorCode] AS [ColorCode], + [tb_Color_20191008].[ColorNo] AS [ColorNo], + [tb_Color_20191008].[Des] AS [Des], + [tb_Color_20191008].[Circle] AS [Circle], + [tb_Color_20191008].[ColorQQCode] AS [ColorQQCode] + FROM [dbo].[tb_Color_20191008] AS [tb_Color_20191008] + + + SELECT + [tb_Color_20201101].[ID] AS [ID], + [tb_Color_20201101].[ColorCode] AS [ColorCode], + [tb_Color_20201101].[ColorNo] AS [ColorNo], + [tb_Color_20201101].[Des] AS [Des], + [tb_Color_20201101].[Circle] AS [Circle], + [tb_Color_20201101].[ColorQQCode] AS [ColorQQCode], + [tb_Color_20201101].[ColorDQCode] AS [ColorDQCode], + [tb_Color_20201101].[CreateTime] AS [CreateTime], + [tb_Color_20201101].[UpdateTime] AS [UpdateTime], + [tb_Color_20201101].[OrderNo] AS [OrderNo] + FROM [dbo].[tb_Color_20201101] AS [tb_Color_20201101] + + + SELECT + [tb_InjectPlanReport].[ID] AS [ID], + [tb_InjectPlanReport].[InjectionPlanID] AS [InjectionPlanID], + [tb_InjectPlanReport].[ProductName] AS [ProductName], + [tb_InjectPlanReport].[MaterialName] AS [MaterialName], + [tb_InjectPlanReport].[Drum] AS [Drum], + [tb_InjectPlanReport].[BatchNo] AS [BatchNo], + [tb_InjectPlanReport].[Time1] AS [Time1] + FROM [dbo].[tb_InjectPlanReport] AS [tb_InjectPlanReport] + + + SELECT + [tb_InspectResult_20190902].[ID] AS [ID], + [tb_InspectResult_20190902].[barcode] AS [barcode], + [tb_InspectResult_20190902].[side] AS [side], + [tb_InspectResult_20190902].[position] AS [position], + [tb_InspectResult_20190902].[stationNo] AS [stationNo], + [tb_InspectResult_20190902].[workClass] AS [workClass], + [tb_InspectResult_20190902].[inspectResult] AS [inspectResult], + [tb_InspectResult_20190902].[damnPosition] AS [damnPosition], + [tb_InspectResult_20190902].[defectID] AS [defectID], + [tb_InspectResult_20190902].[reason] AS [reason], + [tb_InspectResult_20190902].[productInfo] AS [productInfo], + [tb_InspectResult_20190902].[productOption] AS [productOption], + [tb_InspectResult_20190902].[createTime] AS [createTime], + [tb_InspectResult_20190902].[InspectTimes] AS [InspectTimes], + [tb_InspectResult_20190902].[remark1] AS [remark1], + [tb_InspectResult_20190902].[remark2] AS [remark2], + [tb_InspectResult_20190902].[remark3] AS [remark3] + FROM [dbo].[tb_InspectResult_20190902] AS [tb_InspectResult_20190902] + + + SELECT + [tb_InspectResult_20200717].[ID] AS [ID], + [tb_InspectResult_20200717].[barcode] AS [barcode], + [tb_InspectResult_20200717].[side] AS [side], + [tb_InspectResult_20200717].[position] AS [position], + [tb_InspectResult_20200717].[stationNo] AS [stationNo], + [tb_InspectResult_20200717].[workClass] AS [workClass], + [tb_InspectResult_20200717].[inspectResult] AS [inspectResult], + [tb_InspectResult_20200717].[damnPosition] AS [damnPosition], + [tb_InspectResult_20200717].[defectID] AS [defectID], + [tb_InspectResult_20200717].[reason] AS [reason], + [tb_InspectResult_20200717].[productInfo] AS [productInfo], + [tb_InspectResult_20200717].[productOption] AS [productOption], + [tb_InspectResult_20200717].[createTime] AS [createTime], + [tb_InspectResult_20200717].[InspectTimes] AS [InspectTimes], + [tb_InspectResult_20200717].[remark1] AS [remark1], + [tb_InspectResult_20200717].[remark2] AS [remark2], + [tb_InspectResult_20200717].[remark3] AS [remark3] + FROM [dbo].[tb_InspectResult_20200717] AS [tb_InspectResult_20200717] + + + SELECT + [tb_InspectResult_20201021].[ID] AS [ID], + [tb_InspectResult_20201021].[barcode] AS [barcode], + [tb_InspectResult_20201021].[side] AS [side], + [tb_InspectResult_20201021].[position] AS [position], + [tb_InspectResult_20201021].[stationNo] AS [stationNo], + [tb_InspectResult_20201021].[workClass] AS [workClass], + [tb_InspectResult_20201021].[inspectResult] AS [inspectResult], + [tb_InspectResult_20201021].[damnPosition] AS [damnPosition], + [tb_InspectResult_20201021].[defectID] AS [defectID], + [tb_InspectResult_20201021].[reason] AS [reason], + [tb_InspectResult_20201021].[productInfo] AS [productInfo], + [tb_InspectResult_20201021].[productOption] AS [productOption], + [tb_InspectResult_20201021].[createTime] AS [createTime], + [tb_InspectResult_20201021].[InspectTimes] AS [InspectTimes], + [tb_InspectResult_20201021].[remark1] AS [remark1], + [tb_InspectResult_20201021].[remark2] AS [remark2], + [tb_InspectResult_20201021].[remark3] AS [remark3] + FROM [dbo].[tb_InspectResult_20201021] AS [tb_InspectResult_20201021] + + + SELECT + [tb_InspectResult_20210322].[ID] AS [ID], + [tb_InspectResult_20210322].[barcode] AS [barcode], + [tb_InspectResult_20210322].[side] AS [side], + [tb_InspectResult_20210322].[position] AS [position], + [tb_InspectResult_20210322].[stationNo] AS [stationNo], + [tb_InspectResult_20210322].[workClass] AS [workClass], + [tb_InspectResult_20210322].[inspectResult] AS [inspectResult], + [tb_InspectResult_20210322].[damnPosition] AS [damnPosition], + [tb_InspectResult_20210322].[defectID] AS [defectID], + [tb_InspectResult_20210322].[reason] AS [reason], + [tb_InspectResult_20210322].[productInfo] AS [productInfo], + [tb_InspectResult_20210322].[productOption] AS [productOption], + [tb_InspectResult_20210322].[createTime] AS [createTime], + [tb_InspectResult_20210322].[InspectTimes] AS [InspectTimes], + [tb_InspectResult_20210322].[remark1] AS [remark1], + [tb_InspectResult_20210322].[remark2] AS [remark2], + [tb_InspectResult_20210322].[remark3] AS [remark3] + FROM [dbo].[tb_InspectResult_20210322] AS [tb_InspectResult_20210322] + + + SELECT + [tb_Mistake_243_bak].[ID] AS [ID], + [tb_Mistake_243_bak].[PartNo1] AS [PartNo1], + [tb_Mistake_243_bak].[PartName1] AS [PartName1], + [tb_Mistake_243_bak].[PartNo2] AS [PartNo2], + [tb_Mistake_243_bak].[PartName2] AS [PartName2], + [tb_Mistake_243_bak].[PackCount] AS [PackCount], + [tb_Mistake_243_bak].[DeviceNo] AS [DeviceNo] + FROM [dbo].[tb_Mistake_243_bak] AS [tb_Mistake_243_bak] + + + SELECT + [tb_Plan_Punch_20200509].[ID] AS [ID], + [tb_Plan_Punch_20200509].[OrderNo] AS [OrderNo], + [tb_Plan_Punch_20200509].[Item] AS [Item], + [tb_Plan_Punch_20200509].[PartNo] AS [PartNo], + [tb_Plan_Punch_20200509].[OrderCount] AS [OrderCount], + [tb_Plan_Punch_20200509].[LyCount] AS [LyCount], + [tb_Plan_Punch_20200509].[CompleteCount] AS [CompleteCount], + [tb_Plan_Punch_20200509].[BadCount] AS [BadCount], + [tb_Plan_Punch_20200509].[Des] AS [Des], + [tb_Plan_Punch_20200509].[IsFinish] AS [IsFinish], + [tb_Plan_Punch_20200509].[CreateTime] AS [CreateTime] + FROM [dbo].[tb_Plan_Punch_20200509] AS [tb_Plan_Punch_20200509] + + + SELECT + [tb_PrintRecord].[ID] AS [ID], + [tb_PrintRecord].[BarCode] AS [BarCode], + [tb_PrintRecord].[PrintCode] AS [PrintCode], + [tb_PrintRecord].[ColorName] AS [ColorName], + [tb_PrintRecord].[Color] AS [Color], + [tb_PrintRecord].[ColorCode] AS [ColorCode], + [tb_PrintRecord].[ProductName] AS [ProductName], + [tb_PrintRecord].[ProductInfo] AS [ProductInfo], + [tb_PrintRecord].[PrintType] AS [PrintType], + [tb_PrintRecord].[PrintTime] AS [PrintTime] + FROM [dbo].[tb_PrintRecord] AS [tb_PrintRecord] + + + SELECT + [tb_Product_20200513].[ProductID] AS [ProductID], + [tb_Product_20200513].[ProductTypeID] AS [ProductTypeID], + [tb_Product_20200513].[StockNo] AS [StockNo], + [tb_Product_20200513].[PartName] AS [PartName], + [tb_Product_20200513].[ProductName] AS [ProductName], + [tb_Product_20200513].[ColorName] AS [ColorName], + [tb_Product_20200513].[PartNo] AS [PartNo], + [tb_Product_20200513].[Rows] AS [Rows], + [tb_Product_20200513].[Cols] AS [Cols], + [tb_Product_20200513].[Layers] AS [Layers], + [tb_Product_20200513].[PicturePath] AS [PicturePath], + [tb_Product_20200513].[Des] AS [Des], + [tb_Product_20200513].[isImport] AS [isImport] + FROM [dbo].[tb_Product_20200513] AS [tb_Product_20200513] + + + SELECT + [tb_Product_20201110].[ProductID] AS [ProductID], + [tb_Product_20201110].[ProductTypeID] AS [ProductTypeID], + [tb_Product_20201110].[ProjectID] AS [ProjectID], + [tb_Product_20201110].[StockNo] AS [StockNo], + [tb_Product_20201110].[PartName] AS [PartName], + [tb_Product_20201110].[ProductName] AS [ProductName], + [tb_Product_20201110].[ColorName] AS [ColorName], + [tb_Product_20201110].[PartNo] AS [PartNo], + [tb_Product_20201110].[Rows] AS [Rows], + [tb_Product_20201110].[Cols] AS [Cols], + [tb_Product_20201110].[Layers] AS [Layers], + [tb_Product_20201110].[PicturePath] AS [PicturePath], + [tb_Product_20201110].[Des] AS [Des], + [tb_Product_20201110].[isImport] AS [isImport], + [tb_Product_20201110].[DeviceNo] AS [DeviceNo], + [tb_Product_20201110].[IsHigh] AS [IsHigh], + [tb_Product_20201110].[OrderNo] AS [OrderNo] + FROM [dbo].[tb_Product_20201110] AS [tb_Product_20201110] + + + SELECT + [tb_Product_Injection_20190726].[ID] AS [ID], + [tb_Product_Injection_20190726].[StationID] AS [StationID], + [tb_Product_Injection_20190726].[ProductDate] AS [ProductDate], + [tb_Product_Injection_20190726].[ClassName] AS [ClassName], + [tb_Product_Injection_20190726].[StockNo] AS [StockNo], + [tb_Product_Injection_20190726].[PartNo] AS [PartNo], + [tb_Product_Injection_20190726].[ProductCount] AS [ProductCount], + [tb_Product_Injection_20190726].[BadCount] AS [BadCount] + FROM [dbo].[tb_Product_Injection_20190726] AS [tb_Product_Injection_20190726] + + + SELECT + [tb_Product0912].[ProductID] AS [ProductID], + [tb_Product0912].[ProductTypeID] AS [ProductTypeID], + [tb_Product0912].[ProjectID] AS [ProjectID], + [tb_Product0912].[StockNo] AS [StockNo], + [tb_Product0912].[PartName] AS [PartName], + [tb_Product0912].[ProductName] AS [ProductName], + [tb_Product0912].[ColorName] AS [ColorName], + [tb_Product0912].[PartNo] AS [PartNo], + [tb_Product0912].[Rows] AS [Rows], + [tb_Product0912].[Cols] AS [Cols], + [tb_Product0912].[Layers] AS [Layers], + [tb_Product0912].[PicturePath] AS [PicturePath], + [tb_Product0912].[Des] AS [Des], + [tb_Product0912].[isImport] AS [isImport], + [tb_Product0912].[DeviceNo] AS [DeviceNo], + [tb_Product0912].[IsHigh] AS [IsHigh] + FROM [dbo].[tb_Product0912] AS [tb_Product0912] + + + SELECT + [tb_Product20200802].[ProductID] AS [ProductID], + [tb_Product20200802].[ProductTypeID] AS [ProductTypeID], + [tb_Product20200802].[StockNo] AS [StockNo], + [tb_Product20200802].[PartName] AS [PartName], + [tb_Product20200802].[ProductName] AS [ProductName], + [tb_Product20200802].[ColorName] AS [ColorName], + [tb_Product20200802].[PartNo] AS [PartNo], + [tb_Product20200802].[Rows] AS [Rows], + [tb_Product20200802].[Cols] AS [Cols], + [tb_Product20200802].[Layers] AS [Layers], + [tb_Product20200802].[PicturePath] AS [PicturePath], + [tb_Product20200802].[Des] AS [Des], + [tb_Product20200802].[isImport] AS [isImport], + [tb_Product20200802].[DeviceNo] AS [DeviceNo], + [tb_Product20200802].[IsHigh] AS [IsHigh] + FROM [dbo].[tb_Product20200802] AS [tb_Product20200802] + + + SELECT + [tb_Product20201016].[ProductID] AS [ProductID], + [tb_Product20201016].[ProductTypeID] AS [ProductTypeID], + [tb_Product20201016].[ProjectID] AS [ProjectID], + [tb_Product20201016].[StockNo] AS [StockNo], + [tb_Product20201016].[PartName] AS [PartName], + [tb_Product20201016].[ProductName] AS [ProductName], + [tb_Product20201016].[ColorName] AS [ColorName], + [tb_Product20201016].[PartNo] AS [PartNo], + [tb_Product20201016].[Rows] AS [Rows], + [tb_Product20201016].[Cols] AS [Cols], + [tb_Product20201016].[Layers] AS [Layers], + [tb_Product20201016].[PicturePath] AS [PicturePath], + [tb_Product20201016].[Des] AS [Des], + [tb_Product20201016].[isImport] AS [isImport], + [tb_Product20201016].[DeviceNo] AS [DeviceNo], + [tb_Product20201016].[IsHigh] AS [IsHigh] + FROM [dbo].[tb_Product20201016] AS [tb_Product20201016] + + + SELECT + [tb_Punch_Code_Record_20200721].[ID] AS [ID], + [tb_Punch_Code_Record_20200721].[barcode] AS [barcode], + [tb_Punch_Code_Record_20200721].[BcpID] AS [BcpID], + [tb_Punch_Code_Record_20200721].[ZcID] AS [ZcID], + [tb_Punch_Code_Record_20200721].[OrderNo] AS [OrderNo], + [tb_Punch_Code_Record_20200721].[WorkClass] AS [WorkClass], + [tb_Punch_Code_Record_20200721].[CreateTime] AS [CreateTime], + [tb_Punch_Code_Record_20200721].[PlanID] AS [PlanID] + FROM [dbo].[tb_Punch_Code_Record_20200721] AS [tb_Punch_Code_Record_20200721] + + + SELECT + [tb_Punch_Code_Record_20200907].[ID] AS [ID], + [tb_Punch_Code_Record_20200907].[barcode] AS [barcode], + [tb_Punch_Code_Record_20200907].[BcpID] AS [BcpID], + [tb_Punch_Code_Record_20200907].[ZcID] AS [ZcID], + [tb_Punch_Code_Record_20200907].[OrderNo] AS [OrderNo], + [tb_Punch_Code_Record_20200907].[WorkClass] AS [WorkClass], + [tb_Punch_Code_Record_20200907].[CreateTime] AS [CreateTime], + [tb_Punch_Code_Record_20200907].[PlanID] AS [PlanID] + FROM [dbo].[tb_Punch_Code_Record_20200907] AS [tb_Punch_Code_Record_20200907] + + + SELECT + [tb_Punch_Code_Record_BF].[ID] AS [ID], + [tb_Punch_Code_Record_BF].[barcode] AS [barcode], + [tb_Punch_Code_Record_BF].[BcpID] AS [BcpID], + [tb_Punch_Code_Record_BF].[ZcID] AS [ZcID], + [tb_Punch_Code_Record_BF].[OrderNo] AS [OrderNo], + [tb_Punch_Code_Record_BF].[WorkClass] AS [WorkClass], + [tb_Punch_Code_Record_BF].[CreateTime] AS [CreateTime], + [tb_Punch_Code_Record_BF].[PlanID] AS [PlanID] + FROM [dbo].[tb_Punch_Code_Record_BF] AS [tb_Punch_Code_Record_BF] + + + SELECT + [tb_Record_247].[ID] AS [ID], + [tb_Record_247].[PartNo1] AS [PartNo1], + [tb_Record_247].[PartNo2] AS [PartNo2], + [tb_Record_247].[BoxNo] AS [BoxNo], + [tb_Record_247].[OrderNo] AS [OrderNo], + [tb_Record_247].[CreateTime1] AS [CreateTime1], + [tb_Record_247].[CreateTime2] AS [CreateTime2], + [tb_Record_247].[Flag] AS [Flag], + [tb_Record_247].[Type] AS [Type], + [tb_Record_247].[ToVisual] AS [ToVisual], + [tb_Record_247].[FinishTime] AS [FinishTime], + [tb_Record_247].[DeviceNo] AS [DeviceNo] + FROM [dbo].[tb_Record_247] AS [tb_Record_247] + + + SELECT + [tb_Report_FiveScreen_20191011].[ID] AS [ID], + [tb_Report_FiveScreen_20191011].[Name] AS [Name], + [tb_Report_FiveScreen_20191011].[LastYear] AS [LastYear], + [tb_Report_FiveScreen_20191011].[Jan] AS [Jan], + [tb_Report_FiveScreen_20191011].[Feb] AS [Feb], + [tb_Report_FiveScreen_20191011].[Mar] AS [Mar], + [tb_Report_FiveScreen_20191011].[Apr] AS [Apr], + [tb_Report_FiveScreen_20191011].[May] AS [May], + [tb_Report_FiveScreen_20191011].[Jun] AS [Jun], + [tb_Report_FiveScreen_20191011].[Jul] AS [Jul], + [tb_Report_FiveScreen_20191011].[Aug] AS [Aug], + [tb_Report_FiveScreen_20191011].[Sept] AS [Sept], + [tb_Report_FiveScreen_20191011].[Oct] AS [Oct], + [tb_Report_FiveScreen_20191011].[Nov] AS [Nov], + [tb_Report_FiveScreen_20191011].[Dec] AS [Dec], + [tb_Report_FiveScreen_20191011].[day1] AS [day1], + [tb_Report_FiveScreen_20191011].[day2] AS [day2], + [tb_Report_FiveScreen_20191011].[day3] AS [day3], + [tb_Report_FiveScreen_20191011].[day4] AS [day4], + [tb_Report_FiveScreen_20191011].[day5] AS [day5], + [tb_Report_FiveScreen_20191011].[day6] AS [day6], + [tb_Report_FiveScreen_20191011].[day7] AS [day7], + [tb_Report_FiveScreen_20191011].[day8] AS [day8], + [tb_Report_FiveScreen_20191011].[day9] AS [day9], + [tb_Report_FiveScreen_20191011].[day10] AS [day10], + [tb_Report_FiveScreen_20191011].[day11] AS [day11], + [tb_Report_FiveScreen_20191011].[day12] AS [day12], + [tb_Report_FiveScreen_20191011].[day13] AS [day13], + [tb_Report_FiveScreen_20191011].[day14] AS [day14], + [tb_Report_FiveScreen_20191011].[day15] AS [day15], + [tb_Report_FiveScreen_20191011].[day16] AS [day16], + [tb_Report_FiveScreen_20191011].[day17] AS [day17], + [tb_Report_FiveScreen_20191011].[day18] AS [day18], + [tb_Report_FiveScreen_20191011].[day19] AS [day19], + [tb_Report_FiveScreen_20191011].[day20] AS [day20], + [tb_Report_FiveScreen_20191011].[day21] AS [day21], + [tb_Report_FiveScreen_20191011].[day22] AS [day22], + [tb_Report_FiveScreen_20191011].[day23] AS [day23], + [tb_Report_FiveScreen_20191011].[day24] AS [day24], + [tb_Report_FiveScreen_20191011].[day25] AS [day25], + [tb_Report_FiveScreen_20191011].[day26] AS [day26], + [tb_Report_FiveScreen_20191011].[day27] AS [day27], + [tb_Report_FiveScreen_20191011].[day28] AS [day28], + [tb_Report_FiveScreen_20191011].[day29] AS [day29], + [tb_Report_FiveScreen_20191011].[day30] AS [day30], + [tb_Report_FiveScreen_20191011].[day31] AS [day31], + [tb_Report_FiveScreen_20191011].[CreateTime] AS [CreateTime] + FROM [dbo].[tb_Report_FiveScreen_20191011] AS [tb_Report_FiveScreen_20191011] + + + SELECT + [tb_Report_FiveScreen_20191014].[ID] AS [ID], + [tb_Report_FiveScreen_20191014].[Name] AS [Name], + [tb_Report_FiveScreen_20191014].[LastYear] AS [LastYear], + [tb_Report_FiveScreen_20191014].[Jan] AS [Jan], + [tb_Report_FiveScreen_20191014].[Feb] AS [Feb], + [tb_Report_FiveScreen_20191014].[Mar] AS [Mar], + [tb_Report_FiveScreen_20191014].[Apr] AS [Apr], + [tb_Report_FiveScreen_20191014].[May] AS [May], + [tb_Report_FiveScreen_20191014].[Jun] AS [Jun], + [tb_Report_FiveScreen_20191014].[Jul] AS [Jul], + [tb_Report_FiveScreen_20191014].[Aug] AS [Aug], + [tb_Report_FiveScreen_20191014].[Sept] AS [Sept], + [tb_Report_FiveScreen_20191014].[Oct] AS [Oct], + [tb_Report_FiveScreen_20191014].[Nov] AS [Nov], + [tb_Report_FiveScreen_20191014].[Dec] AS [Dec], + [tb_Report_FiveScreen_20191014].[day1] AS [day1], + [tb_Report_FiveScreen_20191014].[day2] AS [day2], + [tb_Report_FiveScreen_20191014].[day3] AS [day3], + [tb_Report_FiveScreen_20191014].[day4] AS [day4], + [tb_Report_FiveScreen_20191014].[day5] AS [day5], + [tb_Report_FiveScreen_20191014].[day6] AS [day6], + [tb_Report_FiveScreen_20191014].[day7] AS [day7], + [tb_Report_FiveScreen_20191014].[day8] AS [day8], + [tb_Report_FiveScreen_20191014].[day9] AS [day9], + [tb_Report_FiveScreen_20191014].[day10] AS [day10], + [tb_Report_FiveScreen_20191014].[day11] AS [day11], + [tb_Report_FiveScreen_20191014].[day12] AS [day12], + [tb_Report_FiveScreen_20191014].[day13] AS [day13], + [tb_Report_FiveScreen_20191014].[day14] AS [day14], + [tb_Report_FiveScreen_20191014].[day15] AS [day15], + [tb_Report_FiveScreen_20191014].[day16] AS [day16], + [tb_Report_FiveScreen_20191014].[day17] AS [day17], + [tb_Report_FiveScreen_20191014].[day18] AS [day18], + [tb_Report_FiveScreen_20191014].[day19] AS [day19], + [tb_Report_FiveScreen_20191014].[day20] AS [day20], + [tb_Report_FiveScreen_20191014].[day21] AS [day21], + [tb_Report_FiveScreen_20191014].[day22] AS [day22], + [tb_Report_FiveScreen_20191014].[day23] AS [day23], + [tb_Report_FiveScreen_20191014].[day24] AS [day24], + [tb_Report_FiveScreen_20191014].[day25] AS [day25], + [tb_Report_FiveScreen_20191014].[day26] AS [day26], + [tb_Report_FiveScreen_20191014].[day27] AS [day27], + [tb_Report_FiveScreen_20191014].[day28] AS [day28], + [tb_Report_FiveScreen_20191014].[day29] AS [day29], + [tb_Report_FiveScreen_20191014].[day30] AS [day30], + [tb_Report_FiveScreen_20191014].[day31] AS [day31], + [tb_Report_FiveScreen_20191014].[CreateTime] AS [CreateTime] + FROM [dbo].[tb_Report_FiveScreen_20191014] AS [tb_Report_FiveScreen_20191014] + + + SELECT + [tb_ReportPaintingScreen].[color] AS [color], + [tb_ReportPaintingScreen].[productInfo] AS [productInfo], + [tb_ReportPaintingScreen].[sumNum] AS [sumNum], + [tb_ReportPaintingScreen].[oncePassNum] AS [oncePassNum], + [tb_ReportPaintingScreen].[oncePassRate] AS [oncePassRate], + [tb_ReportPaintingScreen].[sumPassNum] AS [sumPassNum], + [tb_ReportPaintingScreen].[sumPassRate] AS [sumPassRate] + FROM [dbo].[tb_ReportPaintingScreen] AS [tb_ReportPaintingScreen] + + + SELECT + [tb_ReportPaintingScreen_bak].[color] AS [color], + [tb_ReportPaintingScreen_bak].[productInfo] AS [productInfo], + [tb_ReportPaintingScreen_bak].[sumNum] AS [sumNum], + [tb_ReportPaintingScreen_bak].[oncePassNum] AS [oncePassNum], + [tb_ReportPaintingScreen_bak].[oncePassRate] AS [oncePassRate], + [tb_ReportPaintingScreen_bak].[sumPassNum] AS [sumPassNum], + [tb_ReportPaintingScreen_bak].[sumPassRate] AS [sumPassRate] + FROM [dbo].[tb_ReportPaintingScreen_bak] AS [tb_ReportPaintingScreen_bak] + + + SELECT + [tb_ReportPaintingScreen_pg].[color] AS [color], + [tb_ReportPaintingScreen_pg].[productInfo] AS [productInfo], + [tb_ReportPaintingScreen_pg].[sumNum] AS [sumNum], + [tb_ReportPaintingScreen_pg].[hgNum] AS [hgNum], + [tb_ReportPaintingScreen_pg].[DefectName1] AS [DefectName1], + [tb_ReportPaintingScreen_pg].[defectRate1] AS [defectRate1], + [tb_ReportPaintingScreen_pg].[DefectName2] AS [DefectName2], + [tb_ReportPaintingScreen_pg].[defectRate2] AS [defectRate2], + [tb_ReportPaintingScreen_pg].[DefectName3] AS [DefectName3], + [tb_ReportPaintingScreen_pg].[defectRate3] AS [defectRate3], + [tb_ReportPaintingScreen_pg].[DefectName4] AS [DefectName4], + [tb_ReportPaintingScreen_pg].[defectRate4] AS [defectRate4], + [tb_ReportPaintingScreen_pg].[DefectName5] AS [DefectName5], + [tb_ReportPaintingScreen_pg].[defectRate5] AS [defectRate5] + FROM [dbo].[tb_ReportPaintingScreen_pg] AS [tb_ReportPaintingScreen_pg] + + + SELECT + [tb_ReportPaintingScreen_pg_bak].[color] AS [color], + [tb_ReportPaintingScreen_pg_bak].[productInfo] AS [productInfo], + [tb_ReportPaintingScreen_pg_bak].[sumNum] AS [sumNum], + [tb_ReportPaintingScreen_pg_bak].[hgNum] AS [hgNum], + [tb_ReportPaintingScreen_pg_bak].[DefectName1] AS [DefectName1], + [tb_ReportPaintingScreen_pg_bak].[defectRate1] AS [defectRate1], + [tb_ReportPaintingScreen_pg_bak].[DefectName2] AS [DefectName2], + [tb_ReportPaintingScreen_pg_bak].[defectRate2] AS [defectRate2], + [tb_ReportPaintingScreen_pg_bak].[DefectName3] AS [DefectName3], + [tb_ReportPaintingScreen_pg_bak].[defectRate3] AS [defectRate3], + [tb_ReportPaintingScreen_pg_bak].[DefectName4] AS [DefectName4], + [tb_ReportPaintingScreen_pg_bak].[defectRate4] AS [defectRate4], + [tb_ReportPaintingScreen_pg_bak].[DefectName5] AS [DefectName5], + [tb_ReportPaintingScreen_pg_bak].[defectRate5] AS [defectRate5] + FROM [dbo].[tb_ReportPaintingScreen_pg_bak] AS [tb_ReportPaintingScreen_pg_bak] + + + SELECT + [tb_SkidInfo_20200904].[ID] AS [ID], + [tb_SkidInfo_20200904].[SkidNo] AS [SkidNo], + [tb_SkidInfo_20200904].[BarcodeLeft] AS [BarcodeLeft], + [tb_SkidInfo_20200904].[BarcodeRight] AS [BarcodeRight], + [tb_SkidInfo_20200904].[Layer] AS [Layer], + [tb_SkidInfo_20200904].[ColorInfo] AS [ColorInfo], + [tb_SkidInfo_20200904].[CreateTime] AS [CreateTime], + [tb_SkidInfo_20200904].[Side_1_BC01] AS [Side_1_BC01], + [tb_SkidInfo_20200904].[Side_1_BC02] AS [Side_1_BC02], + [tb_SkidInfo_20200904].[Side_1_BC03] AS [Side_1_BC03], + [tb_SkidInfo_20200904].[Side_1_BC04] AS [Side_1_BC04], + [tb_SkidInfo_20200904].[Side_1_BC05] AS [Side_1_BC05], + [tb_SkidInfo_20200904].[Side_1_BC06] AS [Side_1_BC06], + [tb_SkidInfo_20200904].[Side_1_BC07] AS [Side_1_BC07], + [tb_SkidInfo_20200904].[Side_1_BC08] AS [Side_1_BC08], + [tb_SkidInfo_20200904].[Side_1_BC09] AS [Side_1_BC09], + [tb_SkidInfo_20200904].[Side_1_BC10] AS [Side_1_BC10], + [tb_SkidInfo_20200904].[Side_1_BC11] AS [Side_1_BC11], + [tb_SkidInfo_20200904].[Side_1_BC12] AS [Side_1_BC12], + [tb_SkidInfo_20200904].[Side_2_BC01] AS [Side_2_BC01], + [tb_SkidInfo_20200904].[Side_2_BC02] AS [Side_2_BC02], + [tb_SkidInfo_20200904].[Side_2_BC03] AS [Side_2_BC03], + [tb_SkidInfo_20200904].[Side_2_BC04] AS [Side_2_BC04], + [tb_SkidInfo_20200904].[Side_2_BC05] AS [Side_2_BC05], + [tb_SkidInfo_20200904].[Side_2_BC06] AS [Side_2_BC06], + [tb_SkidInfo_20200904].[Side_2_BC07] AS [Side_2_BC07], + [tb_SkidInfo_20200904].[Side_2_BC08] AS [Side_2_BC08], + [tb_SkidInfo_20200904].[Side_2_BC09] AS [Side_2_BC09], + [tb_SkidInfo_20200904].[Side_2_BC10] AS [Side_2_BC10], + [tb_SkidInfo_20200904].[Side_2_BC11] AS [Side_2_BC11], + [tb_SkidInfo_20200904].[Side_2_BC12] AS [Side_2_BC12] + FROM [dbo].[tb_SkidInfo_20200904] AS [tb_SkidInfo_20200904] + + + SELECT + [tb_StockIn].[ID] AS [ID], + [tb_StockIn].[barcode] AS [barcode], + [tb_StockIn].[pass] AS [pass], + [tb_StockIn].[createTime] AS [createTime], + [tb_StockIn].[paintCode] AS [paintCode], + [tb_StockIn].[ZcCode] AS [ZcCode] + FROM [dbo].[tb_StockIn] AS [tb_StockIn] + + + SELECT + [tb_StockIn_20200511].[ID] AS [ID], + [tb_StockIn_20200511].[barcode] AS [barcode], + [tb_StockIn_20200511].[pass] AS [pass], + [tb_StockIn_20200511].[createTime] AS [createTime], + [tb_StockIn_20200511].[paintCode] AS [paintCode], + [tb_StockIn_20200511].[ZcCode] AS [ZcCode] + FROM [dbo].[tb_StockIn_20200511] AS [tb_StockIn_20200511] + + + SELECT + [tb_StockIn_20210322].[ID] AS [ID], + [tb_StockIn_20210322].[barcode] AS [barcode], + [tb_StockIn_20210322].[pass] AS [pass], + [tb_StockIn_20210322].[createTime] AS [createTime], + [tb_StockIn_20210322].[paintCode] AS [paintCode], + [tb_StockIn_20210322].[ZcCode] AS [ZcCode] + FROM [dbo].[tb_StockIn_20210322] AS [tb_StockIn_20210322] + + + SELECT + [test1].[ID] AS [ID], + [test1].[StationID] AS [StationID], + [test1].[StockNo] AS [StockNo], + [test1].[PrintType] AS [PrintType], + [test1].[OneBarCode] AS [OneBarCode], + [test1].[PlanID] AS [PlanID], + [test1].[CreateTime] AS [CreateTime], + [test1].[ProductName] AS [ProductName], + [test1].[PartNo] AS [PartNo], + [test1].[ProductDate] AS [ProductDate], + [test1].[ClassName] AS [ClassName] + FROM [dbo].[test1] AS [test1] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.edmx.diagram b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.edmx.diagram new file mode 100644 index 0000000..f0be6c5 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.edmx.diagram @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.tt b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.tt new file mode 100644 index 0000000..31b3d53 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/BBMPT.tt @@ -0,0 +1,733 @@ +<#@ template language="C#" debug="false" hostspecific="true"#> +<#@ include file="EF6.Utility.CS.ttinclude"#><#@ + output extension=".cs"#><# + +const string inputFile = @"BBMPT.edmx"; +var textTransform = DynamicTextTransformation.Create(this); +var code = new CodeGenerationTools(this); +var ef = new MetadataTools(this); +var typeMapper = new TypeMapper(code, ef, textTransform.Errors); +var fileManager = EntityFrameworkTemplateFileManager.Create(this); +var itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile); +var codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef); + +if (!typeMapper.VerifyCaseInsensitiveTypeUniqueness(typeMapper.GetAllGlobalItems(itemCollection), inputFile)) +{ + return string.Empty; +} + +WriteHeader(codeStringGenerator, fileManager); + +foreach (var entity in typeMapper.GetItemsToGenerate(itemCollection)) +{ + fileManager.StartNewFile(entity.Name + ".cs"); + BeginNamespace(code); +#> +<#=codeStringGenerator.UsingDirectives(inHeader: false)#> +<#=codeStringGenerator.EntityClassOpening(entity)#> +{ +<# + var propertiesWithDefaultValues = typeMapper.GetPropertiesWithDefaultValues(entity); + var collectionNavigationProperties = typeMapper.GetCollectionNavigationProperties(entity); + var complexProperties = typeMapper.GetComplexProperties(entity); + + if (propertiesWithDefaultValues.Any() || collectionNavigationProperties.Any() || complexProperties.Any()) + { +#> + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] + public <#=code.Escape(entity)#>() + { +<# + foreach (var edmProperty in propertiesWithDefaultValues) + { +#> + this.<#=code.Escape(edmProperty)#> = <#=typeMapper.CreateLiteral(edmProperty.DefaultValue)#>; +<# + } + + foreach (var navigationProperty in collectionNavigationProperties) + { +#> + this.<#=code.Escape(navigationProperty)#> = new HashSet<<#=typeMapper.GetTypeName(navigationProperty.ToEndMember.GetEntityType())#>>(); +<# + } + + foreach (var complexProperty in complexProperties) + { +#> + this.<#=code.Escape(complexProperty)#> = new <#=typeMapper.GetTypeName(complexProperty.TypeUsage)#>(); +<# + } +#> + } + +<# + } + + var simpleProperties = typeMapper.GetSimpleProperties(entity); + if (simpleProperties.Any()) + { + foreach (var edmProperty in simpleProperties) + { +#> + <#=codeStringGenerator.Property(edmProperty)#> +<# + } + } + + if (complexProperties.Any()) + { +#> + +<# + foreach(var complexProperty in complexProperties) + { +#> + <#=codeStringGenerator.Property(complexProperty)#> +<# + } + } + + var navigationProperties = typeMapper.GetNavigationProperties(entity); + if (navigationProperties.Any()) + { +#> + +<# + foreach (var navigationProperty in navigationProperties) + { + if (navigationProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many) + { +#> + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] +<# + } +#> + <#=codeStringGenerator.NavigationProperty(navigationProperty)#> +<# + } + } +#> +} +<# + EndNamespace(code); +} + +foreach (var complex in typeMapper.GetItemsToGenerate(itemCollection)) +{ + fileManager.StartNewFile(complex.Name + ".cs"); + BeginNamespace(code); +#> +<#=codeStringGenerator.UsingDirectives(inHeader: false, includeCollections: false)#> +<#=Accessibility.ForType(complex)#> partial class <#=code.Escape(complex)#> +{ +<# + var complexProperties = typeMapper.GetComplexProperties(complex); + var propertiesWithDefaultValues = typeMapper.GetPropertiesWithDefaultValues(complex); + + if (propertiesWithDefaultValues.Any() || complexProperties.Any()) + { +#> + public <#=code.Escape(complex)#>() + { +<# + foreach (var edmProperty in propertiesWithDefaultValues) + { +#> + this.<#=code.Escape(edmProperty)#> = <#=typeMapper.CreateLiteral(edmProperty.DefaultValue)#>; +<# + } + + foreach (var complexProperty in complexProperties) + { +#> + this.<#=code.Escape(complexProperty)#> = new <#=typeMapper.GetTypeName(complexProperty.TypeUsage)#>(); +<# + } +#> + } + +<# + } + + var simpleProperties = typeMapper.GetSimpleProperties(complex); + if (simpleProperties.Any()) + { + foreach(var edmProperty in simpleProperties) + { +#> + <#=codeStringGenerator.Property(edmProperty)#> +<# + } + } + + if (complexProperties.Any()) + { +#> + +<# + foreach(var edmProperty in complexProperties) + { +#> + <#=codeStringGenerator.Property(edmProperty)#> +<# + } + } +#> +} +<# + EndNamespace(code); +} + +foreach (var enumType in typeMapper.GetEnumItemsToGenerate(itemCollection)) +{ + fileManager.StartNewFile(enumType.Name + ".cs"); + BeginNamespace(code); +#> +<#=codeStringGenerator.UsingDirectives(inHeader: false, includeCollections: false)#> +<# + if (typeMapper.EnumIsFlags(enumType)) + { +#> +[Flags] +<# + } +#> +<#=codeStringGenerator.EnumOpening(enumType)#> +{ +<# + var foundOne = false; + + foreach (MetadataItem member in typeMapper.GetEnumMembers(enumType)) + { + foundOne = true; +#> + <#=code.Escape(typeMapper.GetEnumMemberName(member))#> = <#=typeMapper.GetEnumMemberValue(member)#>, +<# + } + + if (foundOne) + { + this.GenerationEnvironment.Remove(this.GenerationEnvironment.Length - 3, 1); + } +#> +} +<# + EndNamespace(code); +} + +fileManager.Process(); + +#> +<#+ + +public void WriteHeader(CodeStringGenerator codeStringGenerator, EntityFrameworkTemplateFileManager fileManager) +{ + fileManager.StartHeader(); +#> +//------------------------------------------------------------------------------ +// +// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine1")#> +// +// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine2")#> +// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine3")#> +// +//------------------------------------------------------------------------------ +<#=codeStringGenerator.UsingDirectives(inHeader: true)#> +<#+ + fileManager.EndBlock(); +} + +public void BeginNamespace(CodeGenerationTools code) +{ + var codeNamespace = code.VsNamespaceSuggestion(); + if (!String.IsNullOrEmpty(codeNamespace)) + { +#> +namespace <#=code.EscapeNamespace(codeNamespace)#> +{ +<#+ + PushIndent(" "); + } +} + +public void EndNamespace(CodeGenerationTools code) +{ + if (!String.IsNullOrEmpty(code.VsNamespaceSuggestion())) + { + PopIndent(); +#> +} +<#+ + } +} + +public const string TemplateId = "CSharp_DbContext_Types_EF6"; + +public class CodeStringGenerator +{ + private readonly CodeGenerationTools _code; + private readonly TypeMapper _typeMapper; + private readonly MetadataTools _ef; + + public CodeStringGenerator(CodeGenerationTools code, TypeMapper typeMapper, MetadataTools ef) + { + ArgumentNotNull(code, "code"); + ArgumentNotNull(typeMapper, "typeMapper"); + ArgumentNotNull(ef, "ef"); + + _code = code; + _typeMapper = typeMapper; + _ef = ef; + } + + public string Property(EdmProperty edmProperty) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1} {2} {{ {3}get; {4}set; }}", + Accessibility.ForProperty(edmProperty), + _typeMapper.GetTypeName(edmProperty.TypeUsage), + _code.Escape(edmProperty), + _code.SpaceAfter(Accessibility.ForGetter(edmProperty)), + _code.SpaceAfter(Accessibility.ForSetter(edmProperty))); + } + + public string NavigationProperty(NavigationProperty navProp) + { + var endType = _typeMapper.GetTypeName(navProp.ToEndMember.GetEntityType()); + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1} {2} {{ {3}get; {4}set; }}", + AccessibilityAndVirtual(Accessibility.ForNavigationProperty(navProp)), + navProp.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many ? ("ICollection<" + endType + ">") : endType, + _code.Escape(navProp), + _code.SpaceAfter(Accessibility.ForGetter(navProp)), + _code.SpaceAfter(Accessibility.ForSetter(navProp))); + } + + public string AccessibilityAndVirtual(string accessibility) + { + return accessibility + (accessibility != "private" ? " virtual" : ""); + } + + public string EntityClassOpening(EntityType entity) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1}partial class {2}{3}", + Accessibility.ForType(entity), + _code.SpaceAfter(_code.AbstractOption(entity)), + _code.Escape(entity), + _code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType))); + } + + public string EnumOpening(SimpleType enumType) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} enum {1} : {2}", + Accessibility.ForType(enumType), + _code.Escape(enumType), + _code.Escape(_typeMapper.UnderlyingClrType(enumType))); + } + + public void WriteFunctionParameters(EdmFunction edmFunction, Action writeParameter) + { + var parameters = FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef); + foreach (var parameter in parameters.Where(p => p.NeedsLocalVariable)) + { + var isNotNull = parameter.IsNullableOfT ? parameter.FunctionParameterName + ".HasValue" : parameter.FunctionParameterName + " != null"; + var notNullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", " + parameter.FunctionParameterName + ")"; + var nullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", typeof(" + TypeMapper.FixNamespaces(parameter.RawClrTypeName) + "))"; + writeParameter(parameter.LocalVariableName, isNotNull, notNullInit, nullInit); + } + } + + public string ComposableFunctionMethod(EdmFunction edmFunction, string modelNamespace) + { + var parameters = _typeMapper.GetParameters(edmFunction); + + return string.Format( + CultureInfo.InvariantCulture, + "{0} IQueryable<{1}> {2}({3})", + AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)), + _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace), + _code.Escape(edmFunction), + string.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray())); + } + + public string ComposableCreateQuery(EdmFunction edmFunction, string modelNamespace) + { + var parameters = _typeMapper.GetParameters(edmFunction); + + return string.Format( + CultureInfo.InvariantCulture, + "return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<{0}>(\"[{1}].[{2}]({3})\"{4});", + _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace), + edmFunction.NamespaceName, + edmFunction.Name, + string.Join(", ", parameters.Select(p => "@" + p.EsqlParameterName).ToArray()), + _code.StringBefore(", ", string.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray()))); + } + + public string FunctionMethod(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption) + { + var parameters = _typeMapper.GetParameters(edmFunction); + var returnType = _typeMapper.GetReturnType(edmFunction); + + var paramList = String.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray()); + if (includeMergeOption) + { + paramList = _code.StringAfter(paramList, ", ") + "MergeOption mergeOption"; + } + + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1} {2}({3})", + AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)), + returnType == null ? "int" : "ObjectResult<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">", + _code.Escape(edmFunction), + paramList); + } + + public string ExecuteFunction(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption) + { + var parameters = _typeMapper.GetParameters(edmFunction); + var returnType = _typeMapper.GetReturnType(edmFunction); + + var callParams = _code.StringBefore(", ", String.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray())); + if (includeMergeOption) + { + callParams = ", mergeOption" + callParams; + } + + return string.Format( + CultureInfo.InvariantCulture, + "return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction{0}(\"{1}\"{2});", + returnType == null ? "" : "<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">", + edmFunction.Name, + callParams); + } + + public string DbSet(EntitySet entitySet) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} virtual DbSet<{1}> {2} {{ get; set; }}", + Accessibility.ForReadOnlyProperty(entitySet), + _typeMapper.GetTypeName(entitySet.ElementType), + _code.Escape(entitySet)); + } + + public string UsingDirectives(bool inHeader, bool includeCollections = true) + { + return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion()) + ? string.Format( + CultureInfo.InvariantCulture, + "{0}using System;{1}" + + "{2}", + inHeader ? Environment.NewLine : "", + includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "", + inHeader ? "" : Environment.NewLine) + : ""; + } +} + +public class TypeMapper +{ + private const string ExternalTypeNameAttributeName = @"http://schemas.microsoft.com/ado/2006/04/codegeneration:ExternalTypeName"; + + private readonly System.Collections.IList _errors; + private readonly CodeGenerationTools _code; + private readonly MetadataTools _ef; + + public TypeMapper(CodeGenerationTools code, MetadataTools ef, System.Collections.IList errors) + { + ArgumentNotNull(code, "code"); + ArgumentNotNull(ef, "ef"); + ArgumentNotNull(errors, "errors"); + + _code = code; + _ef = ef; + _errors = errors; + } + + public static string FixNamespaces(string typeName) + { + return typeName.Replace("System.Data.Spatial.", "System.Data.Entity.Spatial."); + } + + public string GetTypeName(TypeUsage typeUsage) + { + return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace: null); + } + + public string GetTypeName(EdmType edmType) + { + return GetTypeName(edmType, isNullable: null, modelNamespace: null); + } + + public string GetTypeName(TypeUsage typeUsage, string modelNamespace) + { + return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace); + } + + public string GetTypeName(EdmType edmType, string modelNamespace) + { + return GetTypeName(edmType, isNullable: null, modelNamespace: modelNamespace); + } + + public string GetTypeName(EdmType edmType, bool? isNullable, string modelNamespace) + { + if (edmType == null) + { + return null; + } + + var collectionType = edmType as CollectionType; + if (collectionType != null) + { + return String.Format(CultureInfo.InvariantCulture, "ICollection<{0}>", GetTypeName(collectionType.TypeUsage, modelNamespace)); + } + + var typeName = _code.Escape(edmType.MetadataProperties + .Where(p => p.Name == ExternalTypeNameAttributeName) + .Select(p => (string)p.Value) + .FirstOrDefault()) + ?? (modelNamespace != null && edmType.NamespaceName != modelNamespace ? + _code.CreateFullName(_code.EscapeNamespace(edmType.NamespaceName), _code.Escape(edmType)) : + _code.Escape(edmType)); + + if (edmType is StructuralType) + { + return typeName; + } + + if (edmType is SimpleType) + { + var clrType = UnderlyingClrType(edmType); + if (!IsEnumType(edmType)) + { + typeName = _code.Escape(clrType); + } + + typeName = FixNamespaces(typeName); + + return clrType.IsValueType && isNullable == true ? + String.Format(CultureInfo.InvariantCulture, "Nullable<{0}>", typeName) : + typeName; + } + + throw new ArgumentException("edmType"); + } + + public Type UnderlyingClrType(EdmType edmType) + { + ArgumentNotNull(edmType, "edmType"); + + var primitiveType = edmType as PrimitiveType; + if (primitiveType != null) + { + return primitiveType.ClrEquivalentType; + } + + if (IsEnumType(edmType)) + { + return GetEnumUnderlyingType(edmType).ClrEquivalentType; + } + + return typeof(object); + } + + public object GetEnumMemberValue(MetadataItem enumMember) + { + ArgumentNotNull(enumMember, "enumMember"); + + var valueProperty = enumMember.GetType().GetProperty("Value"); + return valueProperty == null ? null : valueProperty.GetValue(enumMember, null); + } + + public string GetEnumMemberName(MetadataItem enumMember) + { + ArgumentNotNull(enumMember, "enumMember"); + + var nameProperty = enumMember.GetType().GetProperty("Name"); + return nameProperty == null ? null : (string)nameProperty.GetValue(enumMember, null); + } + + public System.Collections.IEnumerable GetEnumMembers(EdmType enumType) + { + ArgumentNotNull(enumType, "enumType"); + + var membersProperty = enumType.GetType().GetProperty("Members"); + return membersProperty != null + ? (System.Collections.IEnumerable)membersProperty.GetValue(enumType, null) + : Enumerable.Empty(); + } + + public bool EnumIsFlags(EdmType enumType) + { + ArgumentNotNull(enumType, "enumType"); + + var isFlagsProperty = enumType.GetType().GetProperty("IsFlags"); + return isFlagsProperty != null && (bool)isFlagsProperty.GetValue(enumType, null); + } + + public bool IsEnumType(GlobalItem edmType) + { + ArgumentNotNull(edmType, "edmType"); + + return edmType.GetType().Name == "EnumType"; + } + + public PrimitiveType GetEnumUnderlyingType(EdmType enumType) + { + ArgumentNotNull(enumType, "enumType"); + + return (PrimitiveType)enumType.GetType().GetProperty("UnderlyingType").GetValue(enumType, null); + } + + public string CreateLiteral(object value) + { + if (value == null || value.GetType() != typeof(TimeSpan)) + { + return _code.CreateLiteral(value); + } + + return string.Format(CultureInfo.InvariantCulture, "new TimeSpan({0})", ((TimeSpan)value).Ticks); + } + + public bool VerifyCaseInsensitiveTypeUniqueness(IEnumerable types, string sourceFile) + { + ArgumentNotNull(types, "types"); + ArgumentNotNull(sourceFile, "sourceFile"); + + var hash = new HashSet(StringComparer.InvariantCultureIgnoreCase); + if (types.Any(item => !hash.Add(item))) + { + _errors.Add( + new CompilerError(sourceFile, -1, -1, "6023", + String.Format(CultureInfo.CurrentCulture, CodeGenerationTools.GetResourceString("Template_CaseInsensitiveTypeConflict")))); + return false; + } + return true; + } + + public IEnumerable GetEnumItemsToGenerate(IEnumerable itemCollection) + { + return GetItemsToGenerate(itemCollection) + .Where(e => IsEnumType(e)); + } + + public IEnumerable GetItemsToGenerate(IEnumerable itemCollection) where T: EdmType + { + return itemCollection + .OfType() + .Where(i => !i.MetadataProperties.Any(p => p.Name == ExternalTypeNameAttributeName)) + .OrderBy(i => i.Name); + } + + public IEnumerable GetAllGlobalItems(IEnumerable itemCollection) + { + return itemCollection + .Where(i => i is EntityType || i is ComplexType || i is EntityContainer || IsEnumType(i)) + .Select(g => GetGlobalItemName(g)); + } + + public string GetGlobalItemName(GlobalItem item) + { + if (item is EdmType) + { + return ((EdmType)item).Name; + } + else + { + return ((EntityContainer)item).Name; + } + } + + public IEnumerable GetSimpleProperties(EntityType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type); + } + + public IEnumerable GetSimpleProperties(ComplexType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type); + } + + public IEnumerable GetComplexProperties(EntityType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type); + } + + public IEnumerable GetComplexProperties(ComplexType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type); + } + + public IEnumerable GetPropertiesWithDefaultValues(EntityType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null); + } + + public IEnumerable GetPropertiesWithDefaultValues(ComplexType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null); + } + + public IEnumerable GetNavigationProperties(EntityType type) + { + return type.NavigationProperties.Where(np => np.DeclaringType == type); + } + + public IEnumerable GetCollectionNavigationProperties(EntityType type) + { + return type.NavigationProperties.Where(np => np.DeclaringType == type && np.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many); + } + + public FunctionParameter GetReturnParameter(EdmFunction edmFunction) + { + ArgumentNotNull(edmFunction, "edmFunction"); + + var returnParamsProperty = edmFunction.GetType().GetProperty("ReturnParameters"); + return returnParamsProperty == null + ? edmFunction.ReturnParameter + : ((IEnumerable)returnParamsProperty.GetValue(edmFunction, null)).FirstOrDefault(); + } + + public bool IsComposable(EdmFunction edmFunction) + { + ArgumentNotNull(edmFunction, "edmFunction"); + + var isComposableProperty = edmFunction.GetType().GetProperty("IsComposableAttribute"); + return isComposableProperty != null && (bool)isComposableProperty.GetValue(edmFunction, null); + } + + public IEnumerable GetParameters(EdmFunction edmFunction) + { + return FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef); + } + + public TypeUsage GetReturnType(EdmFunction edmFunction) + { + var returnParam = GetReturnParameter(edmFunction); + return returnParam == null ? null : _ef.GetElementType(returnParam.TypeUsage); + } + + public bool GenerateMergeOptionFunction(EdmFunction edmFunction, bool includeMergeOption) + { + var returnType = GetReturnType(edmFunction); + return !includeMergeOption && returnType != null && returnType.EdmType.BuiltInTypeKind == BuiltInTypeKind.EntityType; + } +} + +public static void ArgumentNotNull(T arg, string name) where T : class +{ + if (arg == null) + { + throw new ArgumentNullException(name); + } +} +#> \ No newline at end of file diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogErr.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogErr.cs new file mode 100644 index 0000000..46390e0 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogErr.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class LogErr + { + public string ID { get; set; } + public string ErrContent { get; set; } + public string ErrSource { get; set; } + public Nullable ErrTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys.cs new file mode 100644 index 0000000..391df06 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class LogSys + { + public string ID { get; set; } + public string SysContent { get; set; } + public string SysSource { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202001_04.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202001_04.cs new file mode 100644 index 0000000..51b10fe --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202001_04.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class LogSys_202001_04 + { + public string ID { get; set; } + public string SysContent { get; set; } + public string SysSource { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202003.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202003.cs new file mode 100644 index 0000000..6b645e0 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202003.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class LogSys_202003 + { + public string ID { get; set; } + public string SysContent { get; set; } + public string SysSource { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202004.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202004.cs new file mode 100644 index 0000000..88b5472 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202004.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class LogSys_202004 + { + public string ID { get; set; } + public string SysContent { get; set; } + public string SysSource { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202005.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202005.cs new file mode 100644 index 0000000..75648b2 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202005.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class LogSys_202005 + { + public string ID { get; set; } + public string SysContent { get; set; } + public string SysSource { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_20200605.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_20200605.cs new file mode 100644 index 0000000..6ae55c0 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_20200605.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class LogSys_20200605 + { + public string ID { get; set; } + public string SysContent { get; set; } + public string SysSource { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_20200610.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_20200610.cs new file mode 100644 index 0000000..1a1fea5 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_20200610.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class LogSys_20200610 + { + public string ID { get; set; } + public string SysContent { get; set; } + public string SysSource { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202008.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202008.cs new file mode 100644 index 0000000..fc531ff --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_202008.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class LogSys_202008 + { + public string ID { get; set; } + public string SysContent { get; set; } + public string SysSource { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_20210322.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_20210322.cs new file mode 100644 index 0000000..3341e4b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/LogSys_20210322.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class LogSys_20210322 + { + public string ID { get; set; } + public string SysContent { get; set; } + public string SysSource { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_BLOB_TRIGGERS.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_BLOB_TRIGGERS.cs new file mode 100644 index 0000000..e7a7eb7 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_BLOB_TRIGGERS.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class QRTZ_BLOB_TRIGGERS + { + public string SCHED_NAME { get; set; } + public string TRIGGER_GROUP { get; set; } + public string TRIGGER_NAME { get; set; } + public byte[] BLOB_DATA { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_CALENDARS.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_CALENDARS.cs new file mode 100644 index 0000000..a7d0fd3 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_CALENDARS.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class QRTZ_CALENDARS + { + public string CALENDAR_NAME { get; set; } + public string SCHED_NAME { get; set; } + public byte[] CALENDAR { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_CRON_TRIGGERS.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_CRON_TRIGGERS.cs new file mode 100644 index 0000000..2cd3c31 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_CRON_TRIGGERS.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class QRTZ_CRON_TRIGGERS + { + public string SCHED_NAME { get; set; } + public string TRIGGER_GROUP { get; set; } + public string TRIGGER_NAME { get; set; } + public string CRON_EXPRESSION { get; set; } + public string TIME_ZONE_ID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_FIRED_TRIGGERS.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_FIRED_TRIGGERS.cs new file mode 100644 index 0000000..afd93ae --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_FIRED_TRIGGERS.cs @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class QRTZ_FIRED_TRIGGERS + { + public string ENTRY_ID { get; set; } + public string SCHED_NAME { get; set; } + public decimal FIRED_TIME { get; set; } + public string INSTANCE_NAME { get; set; } + public bool IS_NONCONCURRENT { get; set; } + public string JOB_GROUP { get; set; } + public string JOB_NAME { get; set; } + public Nullable PRIORITY { get; set; } + public bool REQUESTS_RECOVERY { get; set; } + public decimal SCHED_TIME { get; set; } + public string STATE { get; set; } + public string TRIGGER_GROUP { get; set; } + public string TRIGGER_NAME { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_JOB_DETAILS.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_JOB_DETAILS.cs new file mode 100644 index 0000000..b522c6f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_JOB_DETAILS.cs @@ -0,0 +1,28 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class QRTZ_JOB_DETAILS + { + public string JOB_GROUP { get; set; } + public string JOB_NAME { get; set; } + public string SCHED_NAME { get; set; } + public string DESCRIPTION { get; set; } + public bool IS_DURABLE { get; set; } + public bool IS_NONCONCURRENT { get; set; } + public bool IS_UPDATE_DATA { get; set; } + public string JOB_CLASS_NAME { get; set; } + public byte[] JOB_DATA { get; set; } + public bool REQUESTS_RECOVERY { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_LOCKS.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_LOCKS.cs new file mode 100644 index 0000000..ce1cc9e --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_LOCKS.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class QRTZ_LOCKS + { + public string LOCK_NAME { get; set; } + public string SCHED_NAME { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_PAUSED_TRIGGER_GRPS.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_PAUSED_TRIGGER_GRPS.cs new file mode 100644 index 0000000..bd1a628 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_PAUSED_TRIGGER_GRPS.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class QRTZ_PAUSED_TRIGGER_GRPS + { + public string SCHED_NAME { get; set; } + public string TRIGGER_GROUP { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_SCHEDULER_STATE.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_SCHEDULER_STATE.cs new file mode 100644 index 0000000..9deb060 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_SCHEDULER_STATE.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class QRTZ_SCHEDULER_STATE + { + public string INSTANCE_NAME { get; set; } + public string SCHED_NAME { get; set; } + public decimal CHECKIN_INTERVAL { get; set; } + public decimal LAST_CHECKIN_TIME { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_SIMPLE_TRIGGERS.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_SIMPLE_TRIGGERS.cs new file mode 100644 index 0000000..db49c20 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_SIMPLE_TRIGGERS.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class QRTZ_SIMPLE_TRIGGERS + { + public string SCHED_NAME { get; set; } + public string TRIGGER_GROUP { get; set; } + public string TRIGGER_NAME { get; set; } + public decimal REPEAT_COUNT { get; set; } + public decimal REPEAT_INTERVAL { get; set; } + public decimal TIMES_TRIGGERED { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_SIMPROP_TRIGGERS.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_SIMPROP_TRIGGERS.cs new file mode 100644 index 0000000..ff2d1f3 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_SIMPROP_TRIGGERS.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class QRTZ_SIMPROP_TRIGGERS + { + public string SCHED_NAME { get; set; } + public string TRIGGER_GROUP { get; set; } + public string TRIGGER_NAME { get; set; } + public Nullable BOOL_PROP_1 { get; set; } + public Nullable BOOL_PROP_2 { get; set; } + public Nullable DEC_PROP_1 { get; set; } + public Nullable DEC_PROP_2 { get; set; } + public Nullable INT_PROP_1 { get; set; } + public Nullable INT_PROP_2 { get; set; } + public Nullable LONG_PROP_1 { get; set; } + public Nullable LONG_PROP_2 { get; set; } + public string STR_PROP_1 { get; set; } + public string STR_PROP_2 { get; set; } + public string STR_PROP_3 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_TRIGGERS.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_TRIGGERS.cs new file mode 100644 index 0000000..a77231b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/QRTZ_TRIGGERS.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class QRTZ_TRIGGERS + { + public string SCHED_NAME { get; set; } + public string TRIGGER_GROUP { get; set; } + public string TRIGGER_NAME { get; set; } + public string APPOINT_ID { get; set; } + public string CALENDAR_NAME { get; set; } + public string DESCRIPTION { get; set; } + public decimal END_TIME { get; set; } + public byte[] JOB_DATA { get; set; } + public string JOB_GROUP { get; set; } + public string JOB_NAME { get; set; } + public Nullable MISFIRE_INSTR { get; set; } + public Nullable NEXT_FIRE_TIME { get; set; } + public Nullable PREV_FIRE_TIME { get; set; } + public Nullable PRIORITY { get; set; } + public decimal START_TIME { get; set; } + public string TRIGGER_STATE { get; set; } + public string TRIGGER_TYPE { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/TA_DEPT.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/TA_DEPT.cs new file mode 100644 index 0000000..33c41b7 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/TA_DEPT.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class TA_DEPT + { + public System.Guid GUID { get; set; } + public string DeptCode { get; set; } + public string DeptName { get; set; } + public string CreateUser { get; set; } + public Nullable CreateTime { get; set; } + public string UpdateUser { get; set; } + public Nullable UpdateTime { get; set; } + public string Remark { get; set; } + public Nullable UID { get; set; } + public Nullable Enable { get; set; } + public string Domain { get; set; } + public string Site { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/TES_BOM.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/TES_BOM.cs new file mode 100644 index 0000000..43f2212 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/TES_BOM.cs @@ -0,0 +1,45 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class TES_BOM + { + public string ParentPart { get; set; } + public string ComponentPart { get; set; } + public string Reference { get; set; } + public string StartEffective { get; set; } + public string QuantityPer { get; set; } + public string StructureType { get; set; } + public string EndEffective { get; set; } + public string Remarks { get; set; } + public string Scrap { get; set; } + public string LeadTimeOffset { get; set; } + public string Operation { get; set; } + public string SequenceNumber { get; set; } + public string FporecastPercent { get; set; } + public string OptionGroup { get; set; } + public string Process { get; set; } + public string GUID { get; set; } + public string UID { get; set; } + public string CreateUser { get; set; } + public string CreateTime { get; set; } + public string Remark { get; set; } + public string TaskID { get; set; } + public string CommandType { get; set; } + public string DataID { get; set; } + public string Domain { get; set; } + public string Site { get; set; } + public Nullable InsertTime { get; set; } + public Nullable Flag { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/TES_PART_MSTR.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/TES_PART_MSTR.cs new file mode 100644 index 0000000..fdb24e2 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/TES_PART_MSTR.cs @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class TES_PART_MSTR + { + public string GUID { get; set; } + public string PartCode { get; set; } + public string Desc1 { get; set; } + public string Desc2 { get; set; } + public string Um { get; set; } + public string ProdLine { get; set; } + public string AddDate { get; set; } + public string PartType { get; set; } + public string Status { get; set; } + public string Qgrade { get; set; } + public string InventoryCode { get; set; } + public string UID { get; set; } + public string Remark { get; set; } + public string TaskID { get; set; } + public string CommandType { get; set; } + public string Domain { get; set; } + public string Site { get; set; } + public Nullable CreatTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_PaintInfo.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_PaintInfo.cs new file mode 100644 index 0000000..a7ea1b6 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_PaintInfo.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class T_PaintInfo + { + public int ID { get; set; } + public string PaintCode { get; set; } + public string PaintName { get; set; } + public string PaintModel { get; set; } + public string UnitCode { get; set; } + public string CarModelCode { get; set; } + public int IsUsing { get; set; } + public System.DateTime CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Buttons.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Buttons.cs new file mode 100644 index 0000000..ecb9b81 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Buttons.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class T_Sys_Buttons + { + public System.Guid BtnID { get; set; } + public string BtnName { get; set; } + public string ItemPic { get; set; } + public Nullable PowerID { get; set; } + public Nullable MenuID { get; set; } + public string MenuName { get; set; } + public string IsEnabled { get; set; } + public string BtnCode { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_NavMenu.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_NavMenu.cs new file mode 100644 index 0000000..32fcf66 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_NavMenu.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class T_Sys_NavMenu + { + public System.Guid MenuID { get; set; } + public string MenuName { get; set; } + public string URLStr { get; set; } + public string ItemPic { get; set; } + public Nullable PowerID { get; set; } + public Nullable ParentMenuID { get; set; } + public string IsEnabled { get; set; } + public string OrderNum { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Power.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Power.cs new file mode 100644 index 0000000..40f271d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Power.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class T_Sys_Power + { + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] + public T_Sys_Power() + { + this.T_Sys_RoleLinkPower = new HashSet(); + } + + public System.Guid PowerID { get; set; } + public string PowerCode { get; set; } + public string PowerName { get; set; } + public string OpName { get; set; } + public Nullable OpTime { get; set; } + + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] + public virtual ICollection T_Sys_RoleLinkPower { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Role.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Role.cs new file mode 100644 index 0000000..c7c5420 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Role.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class T_Sys_Role + { + public System.Guid RoleID { get; set; } + public string RoleName { get; set; } + public string Description { get; set; } + public string OpName { get; set; } + public Nullable OpTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_RoleLinkPower.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_RoleLinkPower.cs new file mode 100644 index 0000000..578e39d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_RoleLinkPower.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class T_Sys_RoleLinkPower + { + public System.Guid RoleID { get; set; } + public System.Guid PowerID { get; set; } + public Nullable OpTime { get; set; } + public string OpName { get; set; } + + public virtual T_Sys_Power T_Sys_Power { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_UserRole.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_UserRole.cs new file mode 100644 index 0000000..bc8f4dc --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_UserRole.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class T_Sys_UserRole + { + public System.Guid UserID { get; set; } + public System.Guid RoleID { get; set; } + public Nullable OpTime { get; set; } + public string OpName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Users.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Users.cs new file mode 100644 index 0000000..f9989dd --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Users.cs @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class T_Sys_Users + { + public System.Guid UserID { get; set; } + public string UserName { get; set; } + public string Password { get; set; } + public string IsEnabled { get; set; } + public string RealName { get; set; } + public string Sex { get; set; } + public string Tel { get; set; } + public Nullable LastLoginTime { get; set; } + public string LastLoginIP { get; set; } + public Nullable DepartmentID { get; set; } + public string OpName { get; set; } + public Nullable OpTime { get; set; } + public string Department { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Users_NavMenu.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Users_NavMenu.cs new file mode 100644 index 0000000..8b8b008 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/T_Sys_Users_NavMenu.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class T_Sys_Users_NavMenu + { + public int ID { get; set; } + public Nullable UserID { get; set; } + public Nullable MenuID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_authority.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_authority.cs new file mode 100644 index 0000000..7d8d87f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_authority.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_authority + { + public string id { get; set; } + public int authority { get; set; } + public string authorityEntityId { get; set; } + public int authorityEntityType { get; set; } + public int authorityType { get; set; } + public string roleId { get; set; } + public int roleType { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_authority_object.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_authority_object.cs new file mode 100644 index 0000000..1504fc8 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_authority_object.cs @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_authority_object + { + public string id { get; set; } + public string expandId { get; set; } + public Nullable expandType { get; set; } + public string fullPath { get; set; } + public string parentId { get; set; } + public string coverId { get; set; } + public string description { get; set; } + public Nullable deviceType { get; set; } + public string displayName { get; set; } + public string icon { get; set; } + public string mobileIcon { get; set; } + public string path { get; set; } + public Nullable sortIndex { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_backup_node.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_backup_node.cs new file mode 100644 index 0000000..373170a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_backup_node.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_backup_node + { + public string id { get; set; } + public string backupModule { get; set; } + public string backupName { get; set; } + public Nullable backupTime { get; set; } + public string savePath { get; set; } + public Nullable backupSize { get; set; } + public string type { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_base_message.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_base_message.cs new file mode 100644 index 0000000..8b1ecd1 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_base_message.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_base_message + { + public string id { get; set; } + public Nullable createTime { get; set; } + public Nullable datetime { get; set; } + public string message { get; set; } + public Nullable readed { get; set; } + public Nullable toasted { get; set; } + public Nullable type { get; set; } + public string url { get; set; } + public Nullable urlType { get; set; } + public string userId { get; set; } + public string username { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_base_output.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_base_output.cs new file mode 100644 index 0000000..3b2d009 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_base_output.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_base_output + { + public string id { get; set; } + public string actionName { get; set; } + public bool executeByUser { get; set; } + public string outputId { get; set; } + public string resultURL { get; set; } + public int runType { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_block_ip.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_block_ip.cs new file mode 100644 index 0000000..a870be3 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_block_ip.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_block_ip + { + public string id { get; set; } + public Nullable createTime { get; set; } + public string ip { get; set; } + public Nullable rejectedVisits { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_conf_classname.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_conf_classname.cs new file mode 100644 index 0000000..fea7941 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_conf_classname.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_conf_classname + { + public string id { get; set; } + public string className { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_conf_entity.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_conf_entity.cs new file mode 100644 index 0000000..864ac5d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_conf_entity.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_conf_entity + { + public string id { get; set; } + public string value { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_conf_xmlentity.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_conf_xmlentity.cs new file mode 100644 index 0000000..e949b50 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_conf_xmlentity.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_conf_xmlentity + { + public string id { get; set; } + public byte[] value { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_custom_role.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_custom_role.cs new file mode 100644 index 0000000..ada12b8 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_custom_role.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_custom_role + { + public string id { get; set; } + public string alias { get; set; } + public int creationType { get; set; } + public string description { get; set; } + public Nullable enable { get; set; } + public int lastOperationType { get; set; } + public string name { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_dep_role.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_dep_role.cs new file mode 100644 index 0000000..6b46aa5 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_dep_role.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_dep_role + { + public string id { get; set; } + public int creationType { get; set; } + public string departmentId { get; set; } + public string fullPath { get; set; } + public int lastOperationType { get; set; } + public string postId { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_department.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_department.cs new file mode 100644 index 0000000..c86b048 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_department.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_department + { + public string id { get; set; } + public string alias { get; set; } + public int creationType { get; set; } + public string description { get; set; } + public Nullable enable { get; set; } + public string fullPath { get; set; } + public int lastOperationType { get; set; } + public string name { get; set; } + public string parentId { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_extra_property.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_extra_property.cs new file mode 100644 index 0000000..e64c2ec --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_extra_property.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_extra_property + { + public string id { get; set; } + public string name { get; set; } + public string relatedId { get; set; } + public int type { get; set; } + public string value { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_favorite_entry.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_favorite_entry.cs new file mode 100644 index 0000000..748e7f9 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_favorite_entry.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_favorite_entry + { + public string id { get; set; } + public string entryId { get; set; } + public Nullable time { get; set; } + public string userId { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_homepage_expand.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_homepage_expand.cs new file mode 100644 index 0000000..5a742ee --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_homepage_expand.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_homepage_expand + { + public string id { get; set; } + public string androidPadHomePage { get; set; } + public string androidPhoneHomePage { get; set; } + public string iPadHomePage { get; set; } + public string iPhoneHomePage { get; set; } + public string pcHomePage { get; set; } + public Nullable type { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_international.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_international.cs new file mode 100644 index 0000000..78f9f29 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_international.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_international + { + public string id { get; set; } + public string description { get; set; } + public string i18nKey { get; set; } + public string language { get; set; } + public string i18nValue { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_last_login.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_last_login.cs new file mode 100644 index 0000000..138191d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_last_login.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_last_login + { + public string id { get; set; } + public string city { get; set; } + public string ip { get; set; } + public Nullable time { get; set; } + public string userId { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_login_lock.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_login_lock.cs new file mode 100644 index 0000000..cdd5140 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_login_lock.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_login_lock + { + public string id { get; set; } + public Nullable errorTime { get; set; } + public string lockObject { get; set; } + public string lockObjectValue { get; set; } + public Nullable lockTime { get; set; } + public Nullable locked { get; set; } + public Nullable unlockTime { get; set; } + public string userId { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_mobile_device.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_mobile_device.cs new file mode 100644 index 0000000..3f81126 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_mobile_device.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_mobile_device + { + public string id { get; set; } + public Nullable createDate { get; set; } + public string deviceName { get; set; } + public string macAddress { get; set; } + public Nullable passed { get; set; } + public Nullable updateDate { get; set; } + public string username { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_mobile_push_message.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_mobile_push_message.cs new file mode 100644 index 0000000..0a16307 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_mobile_push_message.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_mobile_push_message + { + public string id { get; set; } + public string groupId { get; set; } + public string mediaId { get; set; } + public Nullable msgType { get; set; } + public Nullable terminal { get; set; } + public string title { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_class.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_class.cs new file mode 100644 index 0000000..0222ba4 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_class.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_output_class + { + public string id { get; set; } + public string className { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_client_notice.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_client_notice.cs new file mode 100644 index 0000000..d38eb59 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_client_notice.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_output_client_notice + { + public string id { get; set; } + public string addressee { get; set; } + public string content { get; set; } + public string customizeLink { get; set; } + public Nullable linkOpenType { get; set; } + public string mediaId { get; set; } + public string subject { get; set; } + public Nullable terminal { get; set; } + public Nullable type { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_email.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_email.cs new file mode 100644 index 0000000..9bf60d6 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_email.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_output_email + { + public string id { get; set; } + public Nullable addLink { get; set; } + public string bccAddress { get; set; } + public string bodyContent { get; set; } + public string ccAddress { get; set; } + public string customAddress { get; set; } + public string customBccAddress { get; set; } + public string customCcAddress { get; set; } + public Nullable previewAttach { get; set; } + public string subject { get; set; } + public Nullable useAttach { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_ftp.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_ftp.cs new file mode 100644 index 0000000..482eb9c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_ftp.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_output_ftp + { + public string id { get; set; } + public string ftpMode { get; set; } + public string password { get; set; } + public string port { get; set; } + public string savePath { get; set; } + public string serverAddress { get; set; } + public string username { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_mount.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_mount.cs new file mode 100644 index 0000000..30ef2c9 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_mount.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_output_mount + { + public string id { get; set; } + public string description { get; set; } + public string folderEntryID { get; set; } + public string folderEntryName { get; set; } + public string folderEntryStr { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_platform_msg.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_platform_msg.cs new file mode 100644 index 0000000..7e3de3a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_platform_msg.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_output_platform_msg + { + public string id { get; set; } + public string content { get; set; } + public Nullable linkOpenType { get; set; } + public string subject { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_print.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_print.cs new file mode 100644 index 0000000..c3b9a0a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_print.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_output_print + { + public string id { get; set; } + public string printerName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_sftp.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_sftp.cs new file mode 100644 index 0000000..71c07af --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_sftp.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_output_sftp + { + public string id { get; set; } + public string password { get; set; } + public string port { get; set; } + public string privateKey { get; set; } + public string savePath { get; set; } + public string serverAddress { get; set; } + public string username { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_sms.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_sms.cs new file mode 100644 index 0000000..5d695ca --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_output_sms.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_output_sms + { + public string id { get; set; } + public string smsParam { get; set; } + public Nullable templateID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_param_template.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_param_template.cs new file mode 100644 index 0000000..64e857d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_param_template.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_param_template + { + public string id { get; set; } + public string templateid { get; set; } + public string tpgroup { get; set; } + public string username { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_post.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_post.cs new file mode 100644 index 0000000..6ef6eef --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_post.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_post + { + public string id { get; set; } + public string alias { get; set; } + public int creationType { get; set; } + public string description { get; set; } + public Nullable enable { get; set; } + public int lastOperationType { get; set; } + public string name { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_print_offset.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_print_offset.cs new file mode 100644 index 0000000..f5bb209 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_print_offset.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_print_offset + { + public string id { get; set; } + public string cptName { get; set; } + public string ip { get; set; } + public string offsetX { get; set; } + public string offsetY { get; set; } + public string sign { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_print_offset_ip_relate.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_print_offset_ip_relate.cs new file mode 100644 index 0000000..c88d971 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_print_offset_ip_relate.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_print_offset_ip_relate + { + public string id { get; set; } + public string childIP { get; set; } + public string motherID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_process_expand.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_process_expand.cs new file mode 100644 index 0000000..239f104 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_process_expand.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_process_expand + { + public string id { get; set; } + public int processType { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_process_message.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_process_message.cs new file mode 100644 index 0000000..02416f7 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_process_message.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_process_message + { + public string id { get; set; } + public string allTaskId { get; set; } + public Nullable deadLine { get; set; } + public Nullable processed { get; set; } + public string taskId { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_remote_design_auth.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_remote_design_auth.cs new file mode 100644 index 0000000..d974442 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_remote_design_auth.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_remote_design_auth + { + public string id { get; set; } + public string path { get; set; } + public bool pathType { get; set; } + public int roleType { get; set; } + public string userId { get; set; } + public string userName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_report_expand.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_report_expand.cs new file mode 100644 index 0000000..5cde1b6 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_report_expand.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_report_expand + { + public string id { get; set; } + public int showType { get; set; } + public string transmitParameters { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_schedule_output.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_schedule_output.cs new file mode 100644 index 0000000..6ace611 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_schedule_output.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_schedule_output + { + public string id { get; set; } + public string baseName { get; set; } + public Nullable createAttachByUsername { get; set; } + public string formats { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_schedule_record.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_schedule_record.cs new file mode 100644 index 0000000..399e319 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_schedule_record.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_schedule_record + { + public string id { get; set; } + public string creator { get; set; } + public string detailMessage { get; set; } + public string filePath { get; set; } + public string logMessage { get; set; } + public Nullable logTime { get; set; } + public Nullable logType { get; set; } + public Nullable nextFireTime { get; set; } + public Nullable runType { get; set; } + public string taskId { get; set; } + public string taskName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_schedule_task.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_schedule_task.cs new file mode 100644 index 0000000..e80829a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_schedule_task.cs @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_schedule_task + { + public string id { get; set; } + public string backupFilePath { get; set; } + public string conditionParameter { get; set; } + public string creator { get; set; } + public Nullable editable { get; set; } + public Nullable fileClearCount { get; set; } + public Nullable nextFireTime { get; set; } + public string outputStr { get; set; } + public Nullable preFireTime { get; set; } + public Nullable repeatTime { get; set; } + public Nullable repeatTimes { get; set; } + public string scheduleOutput { get; set; } + public Nullable sendBackupFile { get; set; } + public Nullable showType { get; set; } + public string taskCondition { get; set; } + public string taskDescription { get; set; } + public string taskName { get; set; } + public string taskParameter { get; set; } + public Nullable taskState { get; set; } + public Nullable taskType { get; set; } + public string templatePath { get; set; } + public string triggerGroup { get; set; } + public string userGroup { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_schedule_task_param.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_schedule_task_param.cs new file mode 100644 index 0000000..524d2fd --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_schedule_task_param.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_schedule_task_param + { + public string id { get; set; } + public string param { get; set; } + public string taskId { get; set; } + public string taskName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_cluster_size.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_cluster_size.cs new file mode 100644 index 0000000..c516130 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_cluster_size.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_swift_cluster_size + { + public string id { get; set; } + public Nullable primary_cluster_size { get; set; } + public string description { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_col_idx_conf.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_col_idx_conf.cs new file mode 100644 index 0000000..3f96f2b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_col_idx_conf.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_swift_col_idx_conf + { + public string columnName { get; set; } + public string tableKey { get; set; } + public Nullable requireGlobalDict { get; set; } + public Nullable requireIndex { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_config_entity.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_config_entity.cs new file mode 100644 index 0000000..c591e41 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_config_entity.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_swift_config_entity + { + public string configKey { get; set; } + public string configValue { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_metadata.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_metadata.cs new file mode 100644 index 0000000..90ec7f4 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_metadata.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_swift_metadata + { + public string id { get; set; } + public string fields { get; set; } + public string remark { get; set; } + public string schemaName { get; set; } + public string swiftSchema { get; set; } + public string tableName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_seg_location.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_seg_location.cs new file mode 100644 index 0000000..1caae6f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_seg_location.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_swift_seg_location + { + public string clusterId { get; set; } + public string segmentId { get; set; } + public string sourceKey { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_segments.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_segments.cs new file mode 100644 index 0000000..78b606f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_segments.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_swift_segments + { + public string id { get; set; } + public Nullable segmentOrder { get; set; } + public string segmentOwner { get; set; } + public string segmentUri { get; set; } + public string storeType { get; set; } + public string swiftSchema { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_service_info.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_service_info.cs new file mode 100644 index 0000000..39cbf7c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_service_info.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_swift_service_info + { + public string id { get; set; } + public string cluster_id { get; set; } + public Nullable is_singleton { get; set; } + public string service { get; set; } + public string service_info { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_tab_idx_conf.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_tab_idx_conf.cs new file mode 100644 index 0000000..9cb6fb6 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_tab_idx_conf.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_swift_tab_idx_conf + { + public string tableKey { get; set; } + public string allotRule { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_table_path.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_table_path.cs new file mode 100644 index 0000000..a1b9f2b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_swift_table_path.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_swift_table_path + { + public string clusterId { get; set; } + public string tableKey { get; set; } + public Nullable lastPath { get; set; } + public Nullable tablePath { get; set; } + public Nullable tmpDir { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_system_message.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_system_message.cs new file mode 100644 index 0000000..7039ded --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_system_message.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_system_message + { + public string id { get; set; } + public Nullable terminal { get; set; } + public string title { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_user.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_user.cs new file mode 100644 index 0000000..25f23d7 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_user.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_user + { + public string id { get; set; } + public Nullable birthday { get; set; } + public int creationType { get; set; } + public string description { get; set; } + public string email { get; set; } + public Nullable enable { get; set; } + public string language { get; set; } + public int lastOperationType { get; set; } + public Nullable male { get; set; } + public string mobile { get; set; } + public string password { get; set; } + public string realAlias { get; set; } + public string realName { get; set; } + public string userAlias { get; set; } + public string userName { get; set; } + public string workPhone { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_user_role_middle.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_user_role_middle.cs new file mode 100644 index 0000000..2ce0385 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_user_role_middle.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_user_role_middle + { + public string id { get; set; } + public string roleId { get; set; } + public int roleType { get; set; } + public string userId { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_vcs.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_vcs.cs new file mode 100644 index 0000000..cf61d32 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_vcs.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_vcs + { + public string id { get; set; } + public string commitCode { get; set; } + public string commitMsg { get; set; } + public string filename { get; set; } + public Nullable time { get; set; } + public string username { get; set; } + public Nullable version { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow.cs new file mode 100644 index 0000000..d972d48 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_workflow + { + public string id { get; set; } + public Nullable createTime { get; set; } + public string creatorId { get; set; } + public string description { get; set; } + public string name { get; set; } + public string nodesId { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_log.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_log.cs new file mode 100644 index 0000000..1b8f3d8 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_log.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_workflow_log + { + public string id { get; set; } + public Nullable dateTime { get; set; } + public string message { get; set; } + public string operatorName { get; set; } + public string processName { get; set; } + public string taskName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_node.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_node.cs new file mode 100644 index 0000000..7ea2ff2 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_node.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_workflow_node + { + public string id { get; set; } + public string alertControl { get; set; } + public string authority { get; set; } + public string description { get; set; } + public string name { get; set; } + public Nullable needAllComplete { get; set; } + public Nullable needOfflineReport { get; set; } + public string processId { get; set; } + public string reportControl { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_stash_data.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_stash_data.cs new file mode 100644 index 0000000..1eda279 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_stash_data.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_workflow_stash_data + { + public string id { get; set; } + public string data { get; set; } + public string reportPath { get; set; } + public string taskId { get; set; } + public string userId { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_task.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_task.cs new file mode 100644 index 0000000..b6cf2c8 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_task.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_workflow_task + { + public string id { get; set; } + public Nullable createTime { get; set; } + public string creatorId { get; set; } + public string creatorName { get; set; } + public Nullable deadLineDate { get; set; } + public string deadLineType { get; set; } + public string issueControl { get; set; } + public Nullable issueOver { get; set; } + public Nullable leapfrogBack { get; set; } + public string name { get; set; } + public string parentId { get; set; } + public string processId { get; set; } + public string remindControl { get; set; } + public Nullable taskNameCalculateOnce { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_task_impl.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_task_impl.cs new file mode 100644 index 0000000..f2e6b76 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_workflow_task_impl.cs @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_workflow_task_impl + { + public string id { get; set; } + public Nullable alerted { get; set; } + public string completeState { get; set; } + public Nullable createTime { get; set; } + public Nullable currentNodeIdx { get; set; } + public Nullable deadLine { get; set; } + public string frTaskId { get; set; } + public string name { get; set; } + public Nullable needAllComplete { get; set; } + public string nodeRoute { get; set; } + public string note { get; set; } + public string operatorJSON { get; set; } + public string operatorOffset { get; set; } + public string operatorOffsetName { get; set; } + public string parentId { get; set; } + public string processId { get; set; } + public Nullable reportOffset { get; set; } + public Nullable sendTime { get; set; } + public string sender { get; set; } + public string senderId { get; set; } + public string sonTaskId { get; set; } + public Nullable state { get; set; } + public string taskId { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_write_stash.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_write_stash.cs new file mode 100644 index 0000000..480419d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/fine_write_stash.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class fine_write_stash + { + public string id { get; set; } + public string data { get; set; } + public string reportPath { get; set; } + public string username { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_AndonButtonType.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_AndonButtonType.cs new file mode 100644 index 0000000..fa3a6ef --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_AndonButtonType.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_AndonButtonType + { + public string ID { get; set; } + public Nullable ButtonType { get; set; } + public string ButtonName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_AndonRecord.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_AndonRecord.cs new file mode 100644 index 0000000..81caf76 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_AndonRecord.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_AndonRecord + { + public string ID { get; set; } + public string ButtonTypeID { get; set; } + public Nullable StartTime { get; set; } + public Nullable EndTime { get; set; } + public Nullable InterVal { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Assembly_243.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Assembly_243.cs new file mode 100644 index 0000000..1c07fb4 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Assembly_243.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Assembly_243 + { + public string ID { get; set; } + public string PartNo { get; set; } + public string PartName { get; set; } + public string BatchNo { get; set; } + public string Color { get; set; } + public string ColorNo { get; set; } + public string PartType { get; set; } + public string TapeBatchNo { get; set; } + public string Validity { get; set; } + public string ValidityDate { get; set; } + public Nullable CreateTime { get; set; } + public Nullable PrintTime { get; set; } + public string Des { get; set; } + public Nullable Flag { get; set; } + public Nullable ToVisual { get; set; } + public Nullable FinishTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Assembly_247.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Assembly_247.cs new file mode 100644 index 0000000..e9d450c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Assembly_247.cs @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Assembly_247 + { + public string ID { get; set; } + public string PartNo { get; set; } + public string PartName { get; set; } + public string BatchNo { get; set; } + public string Color { get; set; } + public string ColorNo { get; set; } + public string PartType { get; set; } + public string TapeBatchNo { get; set; } + public string Validity { get; set; } + public string ValidityDate { get; set; } + public Nullable CreateTime { get; set; } + public Nullable PrintTime { get; set; } + public string Des { get; set; } + public Nullable Flag { get; set; } + public Nullable ToVisual { get; set; } + public Nullable FinishTime { get; set; } + public Nullable IsCheck { get; set; } + public string DeviceNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Bad_Injection.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Bad_Injection.cs new file mode 100644 index 0000000..a42d774 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Bad_Injection.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Bad_Injection + { + public string ID { get; set; } + public string OneBarCode { get; set; } + public string BarCode { get; set; } + public string BadPosition { get; set; } + public string BadReason { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_BarCode.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_BarCode.cs new file mode 100644 index 0000000..3afe9af --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_BarCode.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_BarCode + { + public string ID { get; set; } + public string StationID { get; set; } + public string OneBarCode { get; set; } + public string BarCode { get; set; } + public string StockNo { get; set; } + public Nullable PrintType { get; set; } + public Nullable CreateTime { get; set; } + public Nullable PrintTime { get; set; } + public Nullable IsDel { get; set; } + public string IsImport { get; set; } + public string StationID2 { get; set; } + public string PlanID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Bom.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Bom.cs new file mode 100644 index 0000000..176022a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Bom.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Bom + { + public string BomID { get; set; } + public string PartNo1 { get; set; } + public string PartNo2 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Bom_20190726.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Bom_20190726.cs new file mode 100644 index 0000000..5e13751 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Bom_20190726.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Bom_20190726 + { + public string BomID { get; set; } + public string PartNo1 { get; set; } + public string PartNo2 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Box_243.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Box_243.cs new file mode 100644 index 0000000..d35f8d3 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Box_243.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Box_243 + { + public string ID { get; set; } + public string BoxNo { get; set; } + public string PartNo { get; set; } + public string PartName { get; set; } + public string BatchNo { get; set; } + public Nullable BoxCount { get; set; } + public Nullable CreateTime { get; set; } + public Nullable PrintTime { get; set; } + public string Des { get; set; } + public Nullable Flag { get; set; } + public string Validity { get; set; } + public string ValidityDate { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Box_247.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Box_247.cs new file mode 100644 index 0000000..56481cb --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Box_247.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Box_247 + { + public string ID { get; set; } + public string BoxNo { get; set; } + public string PartNo { get; set; } + public string PartName { get; set; } + public string BatchNo { get; set; } + public Nullable BoxCount { get; set; } + public Nullable CreateTime { get; set; } + public Nullable PrintTime { get; set; } + public string Des { get; set; } + public Nullable Flag { get; set; } + public string Validity { get; set; } + public string ValidityDate { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Box_Record.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Box_Record.cs new file mode 100644 index 0000000..e883357 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Box_Record.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Box_Record + { + public long ID { get; set; } + public string BarCode { get; set; } + public string BoxNo { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Box_WheelBrow.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Box_WheelBrow.cs new file mode 100644 index 0000000..27c9392 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Box_WheelBrow.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Box_WheelBrow + { + public long ID { get; set; } + public string BoxNo { get; set; } + public Nullable Flag { get; set; } + public string PartNo { get; set; } + public string PartName { get; set; } + public string BatchNo { get; set; } + public string Validity { get; set; } + public string ValidityDate { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_BucketInfo.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_BucketInfo.cs new file mode 100644 index 0000000..2d125de --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_BucketInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_BucketInfo + { + public string ID { get; set; } + public string BucketCode { get; set; } + public string BucketName { get; set; } + public Nullable IsUsing { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CheckItem.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CheckItem.cs new file mode 100644 index 0000000..21dac33 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CheckItem.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_CheckItem + { + public string ID { get; set; } + public string DeviceID { get; set; } + public string CheckContent { get; set; } + public string CheckVersion { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Color.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Color.cs new file mode 100644 index 0000000..cf14a85 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Color.cs @@ -0,0 +1,28 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Color + { + public string ID { get; set; } + public string ColorCode { get; set; } + public string ColorNo { get; set; } + public string Des { get; set; } + public Nullable Circle { get; set; } + public string ColorQQCode { get; set; } + public string ColorDQCode { get; set; } + public Nullable CreateTime { get; set; } + public Nullable UpdateTime { get; set; } + public Nullable OrderNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Color_20191008.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Color_20191008.cs new file mode 100644 index 0000000..4c51355 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Color_20191008.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Color_20191008 + { + public string ID { get; set; } + public string ColorCode { get; set; } + public string ColorNo { get; set; } + public string Des { get; set; } + public Nullable Circle { get; set; } + public string ColorQQCode { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Color_20201101.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Color_20201101.cs new file mode 100644 index 0000000..8c69fd7 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Color_20201101.cs @@ -0,0 +1,28 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Color_20201101 + { + public string ID { get; set; } + public string ColorCode { get; set; } + public string ColorNo { get; set; } + public string Des { get; set; } + public Nullable Circle { get; set; } + public string ColorQQCode { get; set; } + public string ColorDQCode { get; set; } + public Nullable CreateTime { get; set; } + public Nullable UpdateTime { get; set; } + public Nullable OrderNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CommonlyInspection.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CommonlyInspection.cs new file mode 100644 index 0000000..34687be --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CommonlyInspection.cs @@ -0,0 +1,28 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_CommonlyInspection + { + public string ID { get; set; } + public string VersionID { get; set; } + public string InspectionContentID { get; set; } + public System.DateTime CreateTime { get; set; } + public string CreateUserID { get; set; } + public Nullable UpdateTime { get; set; } + public string UpdateUserID { get; set; } + public int IsUseing { get; set; } + public Nullable DisableTime { get; set; } + public string DisableUserID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CommonlyInspectionRecord.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CommonlyInspectionRecord.cs new file mode 100644 index 0000000..9c531ab --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CommonlyInspectionRecord.cs @@ -0,0 +1,38 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_CommonlyInspectionRecord + { + public string CommonlyInspectionID { get; set; } + public string CheckResult { get; set; } + public string CheckUser { get; set; } + public System.DateTime CheckDate { get; set; } + public string ConfirmUser { get; set; } + public Nullable ConfirmUserDate { get; set; } + public string GroupLeaderConfirm { get; set; } + public Nullable GroupLeaderConfirmDate { get; set; } + public string DepartmentLeaderConfirm { get; set; } + public Nullable DepartmentLeaderConfirmDate { get; set; } + public System.DateTime CreateTime { get; set; } + public string CreateUserID { get; set; } + public Nullable UpdateTime { get; set; } + public string UpdateUserID { get; set; } + public int IsUseing { get; set; } + public Nullable DisableTime { get; set; } + public string DisableUserID { get; set; } + public string ID { get; set; } + public string CheckType { get; set; } + public string ErrMes { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CommonlyInspectionVersion.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CommonlyInspectionVersion.cs new file mode 100644 index 0000000..77767a8 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CommonlyInspectionVersion.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_CommonlyInspectionVersion + { + public string DeviceID { get; set; } + public string Version { get; set; } + public System.DateTime CreateTime { get; set; } + public string CreateUserID { get; set; } + public Nullable UpdateTime { get; set; } + public string UpdateUserID { get; set; } + public int IsUseing { get; set; } + public string Operation { get; set; } + public Nullable DisableTime { get; set; } + public string DisableUserID { get; set; } + public string Description { get; set; } + public string ID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Config.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Config.cs new file mode 100644 index 0000000..de2fbf5 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Config.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Config + { + public string ID { get; set; } + public string name { get; set; } + public string value { get; set; } + public string des { get; set; } + public string remark1 { get; set; } + public string remark2 { get; set; } + public string remark3 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Cylinder.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Cylinder.cs new file mode 100644 index 0000000..5a24aa1 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Cylinder.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Cylinder + { + public string CylinderID { get; set; } + public string CylinderNo { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CylinderAndRaw.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CylinderAndRaw.cs new file mode 100644 index 0000000..0bf94c3 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_CylinderAndRaw.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_CylinderAndRaw + { + public string ID { get; set; } + public string CylinderID { get; set; } + public string DrumBarCode { get; set; } + public string BarCode { get; set; } + public Nullable Time1 { get; set; } + public Nullable Time2 { get; set; } + public Nullable Flag { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Defect.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Defect.cs new file mode 100644 index 0000000..b72c99a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Defect.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Defect + { + public string ID { get; set; } + public string LineID { get; set; } + public string DefectName { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Device.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Device.cs new file mode 100644 index 0000000..12c60ac --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Device.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Device + { + public string DeviceID { get; set; } + public string StationID { get; set; } + public string DeviceNo { get; set; } + public string DeviceName { get; set; } + public string FixNo { get; set; } + public string Des { get; set; } + public string DeviceModel { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Factory.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Factory.cs new file mode 100644 index 0000000..e942aad --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Factory.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Factory + { + public string FactoryID { get; set; } + public string FactoryName { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_FinishProduct.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_FinishProduct.cs new file mode 100644 index 0000000..3fb3943 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_FinishProduct.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_FinishProduct + { + public string FinishProductID { get; set; } + public string FinishProductNo { get; set; } + public string FinishProductName { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_HybridPlan.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_HybridPlan.cs new file mode 100644 index 0000000..82a7a49 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_HybridPlan.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_HybridPlan + { + public string ID { get; set; } + public string ProductName { get; set; } + public string Color { get; set; } + public Nullable PlanCount { get; set; } + public Nullable Qty { get; set; } + public Nullable IsFinish { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_HybridScanRecord.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_HybridScanRecord.cs new file mode 100644 index 0000000..3e801d5 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_HybridScanRecord.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_HybridScanRecord + { + public string ID { get; set; } + public string BarCode { get; set; } + public Nullable CreatTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ImgVideo.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ImgVideo.cs new file mode 100644 index 0000000..f2181f8 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ImgVideo.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ImgVideo + { + public string ID { get; set; } + public string fileUrl { get; set; } + public string fileName { get; set; } + public string fileType { get; set; } + public Nullable CreateTime { get; set; } + public Nullable UpdateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Inhection_DownReason.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Inhection_DownReason.cs new file mode 100644 index 0000000..e4daed4 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Inhection_DownReason.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Inhection_DownReason + { + public string ID { get; set; } + public string Reason { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InjectPlanReport.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InjectPlanReport.cs new file mode 100644 index 0000000..b2bb4e5 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InjectPlanReport.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_InjectPlanReport + { + public string ID { get; set; } + public string InjectionPlanID { get; set; } + public string ProductName { get; set; } + public string MaterialName { get; set; } + public string Drum { get; set; } + public string BatchNo { get; set; } + public Nullable Time1 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InjectionPlan.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InjectionPlan.cs new file mode 100644 index 0000000..b37f260 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InjectionPlan.cs @@ -0,0 +1,33 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_InjectionPlan + { + public string InjectionPlanID { get; set; } + public string StationID { get; set; } + public string BeginTime { get; set; } + public string StockNo { get; set; } + public string PartNo { get; set; } + public Nullable PlanCount { get; set; } + public string EndTime { get; set; } + public Nullable PlanDate { get; set; } + public Nullable CompleteCount { get; set; } + public Nullable IsFinish { get; set; } + public Nullable FinishTime { get; set; } + public Nullable RealCycle { get; set; } + public string workClass { get; set; } + public Nullable JK_Weight { get; set; } + public Nullable Waste_Weight { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Injection_DownRecord.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Injection_DownRecord.cs new file mode 100644 index 0000000..5a0b9f6 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Injection_DownRecord.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Injection_DownRecord + { + public string ID { get; set; } + public string StationID { get; set; } + public string DownType { get; set; } + public string DownReason { get; set; } + public string Des { get; set; } + public Nullable StartTime { get; set; } + public Nullable EndTime { get; set; } + public Nullable DownTime { get; set; } + public string Remark1 { get; set; } + public string Remark2 { get; set; } + public string Remark3 { get; set; } + public string PlanID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Injection_DownTime.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Injection_DownTime.cs new file mode 100644 index 0000000..4013ce2 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Injection_DownTime.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Injection_DownTime + { + public string ID { get; set; } + public string StationID { get; set; } + public Nullable StartTime { get; set; } + public Nullable EndTime { get; set; } + public Nullable InterVal { get; set; } + public string DownTypeID { get; set; } + public string Remark1 { get; set; } + public string Remark2 { get; set; } + public string Remark3 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Injection_DownType.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Injection_DownType.cs new file mode 100644 index 0000000..10f69e7 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Injection_DownType.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Injection_DownType + { + public string ID { get; set; } + public string DownTypeName { get; set; } + public string Remark { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Injection_Record.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Injection_Record.cs new file mode 100644 index 0000000..4129ad8 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Injection_Record.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Injection_Record + { + public string ID { get; set; } + public string workClass { get; set; } + public string StationID { get; set; } + public Nullable JK_Weight { get; set; } + public Nullable Waste_Weight { get; set; } + public Nullable RecordDate { get; set; } + public string StockNo { get; set; } + public string PartNo { get; set; } + public string PlanID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult.cs new file mode 100644 index 0000000..c04dd78 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_InspectResult + { + public string ID { get; set; } + public string barcode { get; set; } + public string side { get; set; } + public string position { get; set; } + public string stationNo { get; set; } + public string workClass { get; set; } + public string inspectResult { get; set; } + public string damnPosition { get; set; } + public string defectID { get; set; } + public string reason { get; set; } + public string productInfo { get; set; } + public string productOption { get; set; } + public Nullable createTime { get; set; } + public string InspectTimes { get; set; } + public string remark1 { get; set; } + public string remark2 { get; set; } + public string remark3 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult_20190902.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult_20190902.cs new file mode 100644 index 0000000..277ebb1 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult_20190902.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_InspectResult_20190902 + { + public string ID { get; set; } + public string barcode { get; set; } + public string side { get; set; } + public string position { get; set; } + public string stationNo { get; set; } + public string workClass { get; set; } + public string inspectResult { get; set; } + public string damnPosition { get; set; } + public string defectID { get; set; } + public string reason { get; set; } + public string productInfo { get; set; } + public string productOption { get; set; } + public Nullable createTime { get; set; } + public string InspectTimes { get; set; } + public string remark1 { get; set; } + public string remark2 { get; set; } + public string remark3 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult_20200717.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult_20200717.cs new file mode 100644 index 0000000..2b53aec --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult_20200717.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_InspectResult_20200717 + { + public string ID { get; set; } + public string barcode { get; set; } + public string side { get; set; } + public string position { get; set; } + public string stationNo { get; set; } + public string workClass { get; set; } + public string inspectResult { get; set; } + public string damnPosition { get; set; } + public string defectID { get; set; } + public string reason { get; set; } + public string productInfo { get; set; } + public string productOption { get; set; } + public Nullable createTime { get; set; } + public string InspectTimes { get; set; } + public string remark1 { get; set; } + public string remark2 { get; set; } + public string remark3 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult_20201021.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult_20201021.cs new file mode 100644 index 0000000..892ec63 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult_20201021.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_InspectResult_20201021 + { + public string ID { get; set; } + public string barcode { get; set; } + public string side { get; set; } + public string position { get; set; } + public string stationNo { get; set; } + public string workClass { get; set; } + public string inspectResult { get; set; } + public string damnPosition { get; set; } + public string defectID { get; set; } + public string reason { get; set; } + public string productInfo { get; set; } + public string productOption { get; set; } + public Nullable createTime { get; set; } + public string InspectTimes { get; set; } + public string remark1 { get; set; } + public string remark2 { get; set; } + public string remark3 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult_20210322.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult_20210322.cs new file mode 100644 index 0000000..98f1c67 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_InspectResult_20210322.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_InspectResult_20210322 + { + public string ID { get; set; } + public string barcode { get; set; } + public string side { get; set; } + public string position { get; set; } + public string stationNo { get; set; } + public string workClass { get; set; } + public string inspectResult { get; set; } + public string damnPosition { get; set; } + public string defectID { get; set; } + public string reason { get; set; } + public string productInfo { get; set; } + public string productOption { get; set; } + public Nullable createTime { get; set; } + public string InspectTimes { get; set; } + public string remark1 { get; set; } + public string remark2 { get; set; } + public string remark3 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_LayerAndBC.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_LayerAndBC.cs new file mode 100644 index 0000000..b515f2e --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_LayerAndBC.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_LayerAndBC + { + public string ID { get; set; } + public Nullable layer { get; set; } + public string floor { get; set; } + public string side { get; set; } + public string des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Line.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Line.cs new file mode 100644 index 0000000..d529848 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Line.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Line + { + public string LineID { get; set; } + public string PlaceID { get; set; } + public string LineName { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Location.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Location.cs new file mode 100644 index 0000000..7a66e6b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Location.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Location + { + public string ID { get; set; } + public string Location { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Machine.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Machine.cs new file mode 100644 index 0000000..01c11f8 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Machine.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Machine + { + public string MachineID { get; set; } + public string MachineNo { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Mistake_243.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Mistake_243.cs new file mode 100644 index 0000000..618cdfa --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Mistake_243.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Mistake_243 + { + public string ID { get; set; } + public string PartNo1 { get; set; } + public string PartName1 { get; set; } + public string PartNo2 { get; set; } + public string PartName2 { get; set; } + public Nullable PackCount { get; set; } + public string DeviceNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Mistake_243_bak.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Mistake_243_bak.cs new file mode 100644 index 0000000..9d0efc6 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Mistake_243_bak.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Mistake_243_bak + { + public string ID { get; set; } + public string PartNo1 { get; set; } + public string PartName1 { get; set; } + public string PartNo2 { get; set; } + public string PartName2 { get; set; } + public Nullable PackCount { get; set; } + public string DeviceNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Mistake_247.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Mistake_247.cs new file mode 100644 index 0000000..f460bb4 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Mistake_247.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Mistake_247 + { + public string ID { get; set; } + public string PartNo1 { get; set; } + public string PartName1 { get; set; } + public string PartNo2 { get; set; } + public string PartName2 { get; set; } + public Nullable PackCount { get; set; } + public string DeviceNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ModelCount.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ModelCount.cs new file mode 100644 index 0000000..aea5b47 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ModelCount.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ModelCount + { + public string ID { get; set; } + public string ModelID { get; set; } + public string StationID { get; set; } + public decimal ModelPrintCount { get; set; } + public Nullable PrintDate { get; set; } + public decimal ModelSumCount { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ModelInfo.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ModelInfo.cs new file mode 100644 index 0000000..0fd9888 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ModelInfo.cs @@ -0,0 +1,33 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ModelInfo + { + public string ID { get; set; } + public string ModelName { get; set; } + public string ModelNo { get; set; } + public string PermanentAssetsNo { get; set; } + public string Tonnage { get; set; } + public string ServiceLife { get; set; } + public string Supplier { get; set; } + public string PartWeight { get; set; } + public string InjectionPeriod { get; set; } + public string LocatingRingSize { get; set; } + public string OutForm { get; set; } + public string ModelWeight { get; set; } + public string RunnerForm { get; set; } + public string ModelCavityNo { get; set; } + public string ModelSize { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Model_Product.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Model_Product.cs new file mode 100644 index 0000000..14497e5 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Model_Product.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Model_Product + { + public string ID { get; set; } + public string ModelID { get; set; } + public string ProuctID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Model_Update.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Model_Update.cs new file mode 100644 index 0000000..2908cf8 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Model_Update.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Model_Update + { + public string ID { get; set; } + public string Purpose { get; set; } + public string State { get; set; } + public string Supplier { get; set; } + public string Remarks { get; set; } + public Nullable AddTime { get; set; } + public string ModelID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Operator.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Operator.cs new file mode 100644 index 0000000..a6d6b3a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Operator.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Operator + { + public string OperatorID { get; set; } + public string StationID { get; set; } + public string OperatorNo { get; set; } + public string OperatorName { get; set; } + public string OperatorPsw { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintBarCode.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintBarCode.cs new file mode 100644 index 0000000..1ba6255 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintBarCode.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PaintBarCode + { + public string ID { get; set; } + public string StationID { get; set; } + public string ProductID { get; set; } + public string OneBarCode { get; set; } + public string BarCode { get; set; } + public string StockNo { get; set; } + public string ColorDes { get; set; } + public string workClass { get; set; } + public string Side { get; set; } + public Nullable CreateTime { get; set; } + public Nullable PrintTime { get; set; } + public string ProductDate { get; set; } + public string PrintReason { get; set; } + public string PrintPerson { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintInfo.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintInfo.cs new file mode 100644 index 0000000..f1faa61 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintInfo.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PaintInfo + { + public string ID { get; set; } + public string PaintCode { get; set; } + public string PaintName { get; set; } + public string PaintModel { get; set; } + public string UnitCode { get; set; } + public string CarModelCode { get; set; } + public Nullable IsUsing { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintPerson.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintPerson.cs new file mode 100644 index 0000000..b11c6d3 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintPerson.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PaintPerson + { + public int ID { get; set; } + public string PrintPerson { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintReason.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintReason.cs new file mode 100644 index 0000000..2535493 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintReason.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PaintReason + { + public int ID { get; set; } + public string PrintReason { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintScanRecord.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintScanRecord.cs new file mode 100644 index 0000000..78cf948 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PaintScanRecord.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PaintScanRecord + { + public long ID { get; set; } + public string OneBarCode { get; set; } + public Nullable ScanTime { get; set; } + public string ScanPosition { get; set; } + public Nullable ScanResult { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Paint_Bucket.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Paint_Bucket.cs new file mode 100644 index 0000000..8897a74 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Paint_Bucket.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Paint_Bucket + { + public string PaintID { get; set; } + public string BucketID { get; set; } + public string ID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PartRecord.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PartRecord.cs new file mode 100644 index 0000000..edc9446 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PartRecord.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PartRecord + { + public string ID { get; set; } + public string PartNo { get; set; } + public string TaskID { get; set; } + public string CommandType { get; set; } + public Nullable CreatTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Place.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Place.cs new file mode 100644 index 0000000..42ccde5 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Place.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Place + { + public string PlaceID { get; set; } + public string FactoryID { get; set; } + public string PlaceName { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PlanScreenConfig.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PlanScreenConfig.cs new file mode 100644 index 0000000..4d77370 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PlanScreenConfig.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PlanScreenConfig + { + public string ID { get; set; } + public string IP { get; set; } + public string StationNo { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plan_243.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plan_243.cs new file mode 100644 index 0000000..e6a395d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plan_243.cs @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Plan_243 + { + public string ID { get; set; } + public string OrderNo { get; set; } + public Nullable Item { get; set; } + public string PartNo { get; set; } + public Nullable OrderCount { get; set; } + public Nullable LyCount { get; set; } + public Nullable CompleteCount { get; set; } + public Nullable RepairCount { get; set; } + public Nullable ScrapCount1 { get; set; } + public Nullable ScrapCount2 { get; set; } + public string Des { get; set; } + public Nullable CreateTime { get; set; } + public Nullable IsFinish { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plan_247.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plan_247.cs new file mode 100644 index 0000000..adb988b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plan_247.cs @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Plan_247 + { + public string ID { get; set; } + public string OrderNo { get; set; } + public Nullable Item { get; set; } + public string PartNo { get; set; } + public Nullable OrderCount { get; set; } + public Nullable LyCount { get; set; } + public Nullable CompleteCount { get; set; } + public Nullable RepairCount { get; set; } + public Nullable ScrapCount1 { get; set; } + public Nullable ScrapCount2 { get; set; } + public string Des { get; set; } + public Nullable CreateTime { get; set; } + public Nullable IsFinish { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plan_Punch.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plan_Punch.cs new file mode 100644 index 0000000..76bdab2 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plan_Punch.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Plan_Punch + { + public string ID { get; set; } + public string OrderNo { get; set; } + public Nullable Item { get; set; } + public string PartNo { get; set; } + public Nullable OrderCount { get; set; } + public Nullable LyCount { get; set; } + public Nullable CompleteCount { get; set; } + public Nullable BadCount { get; set; } + public string Des { get; set; } + public Nullable IsFinish { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plan_Punch_20200509.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plan_Punch_20200509.cs new file mode 100644 index 0000000..aa4e969 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plan_Punch_20200509.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Plan_Punch_20200509 + { + public string ID { get; set; } + public string OrderNo { get; set; } + public Nullable Item { get; set; } + public string PartNo { get; set; } + public Nullable OrderCount { get; set; } + public Nullable LyCount { get; set; } + public Nullable CompleteCount { get; set; } + public Nullable BadCount { get; set; } + public string Des { get; set; } + public Nullable IsFinish { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plastic.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plastic.cs new file mode 100644 index 0000000..41200ff --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Plastic.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Plastic + { + public string StockNo { get; set; } + public Nullable CycleTime { get; set; } + public string StationID { get; set; } + public Nullable IsBackup { get; set; } + public Nullable Weight { get; set; } + public Nullable OpenDebugTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PrintConfig.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PrintConfig.cs new file mode 100644 index 0000000..7ef4069 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PrintConfig.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PrintConfig + { + public int ID { get; set; } + public string StockNo { get; set; } + public string PrintCode { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PrintRecord.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PrintRecord.cs new file mode 100644 index 0000000..d015aec --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PrintRecord.cs @@ -0,0 +1,28 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PrintRecord + { + public string ID { get; set; } + public string BarCode { get; set; } + public string PrintCode { get; set; } + public string ColorName { get; set; } + public string Color { get; set; } + public string ColorCode { get; set; } + public string ProductName { get; set; } + public string ProductInfo { get; set; } + public Nullable PrintType { get; set; } + public Nullable PrintTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product.cs new file mode 100644 index 0000000..7a279bf --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product.cs @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Product + { + public string ProductID { get; set; } + public string ProductTypeID { get; set; } + public string ProjectID { get; set; } + public string StockNo { get; set; } + public string PartName { get; set; } + public string ProductName { get; set; } + public string ColorName { get; set; } + public string PartNo { get; set; } + public Nullable Rows { get; set; } + public Nullable Cols { get; set; } + public Nullable Layers { get; set; } + public string PicturePath { get; set; } + public string Des { get; set; } + public Nullable isImport { get; set; } + public string DeviceNo { get; set; } + public Nullable IsHigh { get; set; } + public Nullable OrderNo { get; set; } + public Nullable PackQty { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product0912.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product0912.cs new file mode 100644 index 0000000..812d566 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product0912.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Product0912 + { + public string ProductID { get; set; } + public string ProductTypeID { get; set; } + public string ProjectID { get; set; } + public string StockNo { get; set; } + public string PartName { get; set; } + public string ProductName { get; set; } + public string ColorName { get; set; } + public string PartNo { get; set; } + public Nullable Rows { get; set; } + public Nullable Cols { get; set; } + public Nullable Layers { get; set; } + public string PicturePath { get; set; } + public string Des { get; set; } + public Nullable isImport { get; set; } + public string DeviceNo { get; set; } + public Nullable IsHigh { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product20200802.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product20200802.cs new file mode 100644 index 0000000..f8aec8d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product20200802.cs @@ -0,0 +1,33 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Product20200802 + { + public string ProductID { get; set; } + public string ProductTypeID { get; set; } + public string StockNo { get; set; } + public string PartName { get; set; } + public string ProductName { get; set; } + public string ColorName { get; set; } + public string PartNo { get; set; } + public Nullable Rows { get; set; } + public Nullable Cols { get; set; } + public Nullable Layers { get; set; } + public string PicturePath { get; set; } + public string Des { get; set; } + public Nullable isImport { get; set; } + public string DeviceNo { get; set; } + public Nullable IsHigh { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product20201016.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product20201016.cs new file mode 100644 index 0000000..dd26fa2 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product20201016.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Product20201016 + { + public string ProductID { get; set; } + public string ProductTypeID { get; set; } + public string ProjectID { get; set; } + public string StockNo { get; set; } + public string PartName { get; set; } + public string ProductName { get; set; } + public string ColorName { get; set; } + public string PartNo { get; set; } + public Nullable Rows { get; set; } + public Nullable Cols { get; set; } + public Nullable Layers { get; set; } + public string PicturePath { get; set; } + public string Des { get; set; } + public Nullable isImport { get; set; } + public string DeviceNo { get; set; } + public Nullable IsHigh { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ProductSotckIn.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ProductSotckIn.cs new file mode 100644 index 0000000..08fe2f3 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ProductSotckIn.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ProductSotckIn + { + public string ID { get; set; } + public string BarCode { get; set; } + public string ProductName { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ProductType.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ProductType.cs new file mode 100644 index 0000000..3fb2293 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ProductType.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ProductType + { + public string ProductTypeID { get; set; } + public string ProductTypeNo { get; set; } + public string ProductTypeName { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_20200513.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_20200513.cs new file mode 100644 index 0000000..ebef051 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_20200513.cs @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Product_20200513 + { + public string ProductID { get; set; } + public string ProductTypeID { get; set; } + public string StockNo { get; set; } + public string PartName { get; set; } + public string ProductName { get; set; } + public string ColorName { get; set; } + public string PartNo { get; set; } + public Nullable Rows { get; set; } + public Nullable Cols { get; set; } + public Nullable Layers { get; set; } + public string PicturePath { get; set; } + public string Des { get; set; } + public Nullable isImport { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_20201110.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_20201110.cs new file mode 100644 index 0000000..582fc5c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_20201110.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Product_20201110 + { + public string ProductID { get; set; } + public string ProductTypeID { get; set; } + public string ProjectID { get; set; } + public string StockNo { get; set; } + public string PartName { get; set; } + public string ProductName { get; set; } + public string ColorName { get; set; } + public string PartNo { get; set; } + public Nullable Rows { get; set; } + public Nullable Cols { get; set; } + public Nullable Layers { get; set; } + public string PicturePath { get; set; } + public string Des { get; set; } + public Nullable isImport { get; set; } + public string DeviceNo { get; set; } + public Nullable IsHigh { get; set; } + public Nullable OrderNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_Injection.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_Injection.cs new file mode 100644 index 0000000..a6ba901 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_Injection.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Product_Injection + { + public string ID { get; set; } + public string PlanID { get; set; } + public string StationID { get; set; } + public string ProductDate { get; set; } + public string ClassName { get; set; } + public string StockNo { get; set; } + public string PartNo { get; set; } + public Nullable ProductCount { get; set; } + public Nullable BadCount { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_Injection_20190726.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_Injection_20190726.cs new file mode 100644 index 0000000..a51c95b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_Injection_20190726.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Product_Injection_20190726 + { + public string ID { get; set; } + public string StationID { get; set; } + public string ProductDate { get; set; } + public string ClassName { get; set; } + public string StockNo { get; set; } + public string PartNo { get; set; } + public Nullable ProductCount { get; set; } + public Nullable BadCount { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_Injection_w.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_Injection_w.cs new file mode 100644 index 0000000..ffa60be --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Product_Injection_w.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Product_Injection_w + { + public string ID { get; set; } + public Nullable RealCycle { get; set; } + public Nullable Waste_Weight { get; set; } + public Nullable JK_Weight { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Project.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Project.cs new file mode 100644 index 0000000..e898390 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Project.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Project + { + public string ID { get; set; } + public string Project { get; set; } + public string LocationID { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchAddress.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchAddress.cs new file mode 100644 index 0000000..b540f99 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchAddress.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PunchAddress + { + public int ID { get; set; } + public string DeviceNo { get; set; } + public string Address { get; set; } + public string Des { get; set; } + public Nullable RW { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchAndStation.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchAndStation.cs new file mode 100644 index 0000000..3dcf630 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchAndStation.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PunchAndStation + { + public string ID { get; set; } + public string StationID { get; set; } + public string ProductID1 { get; set; } + public string ProductID2 { get; set; } + public string ProductID3 { get; set; } + public string ProductID4 { get; set; } + public string ProductID5 { get; set; } + public Nullable CreateTine { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchDevice.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchDevice.cs new file mode 100644 index 0000000..c5e1738 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchDevice.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PunchDevice + { + public string ID { get; set; } + public string DeviceNo { get; set; } + public string DeviceName { get; set; } + public string Poject { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchMFAPlan.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchMFAPlan.cs new file mode 100644 index 0000000..0f854d6 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchMFAPlan.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PunchMFAPlan + { + public int ID { get; set; } + public string CarModelCode { get; set; } + public string productionNumber { get; set; } + public string itemNumber { get; set; } + public string description { get; set; } + public Nullable assemblyDate { get; set; } + public string BillNo { get; set; } + public string partType { get; set; } + public string ColorName { get; set; } + public string BarCode { get; set; } + public Nullable Sort { get; set; } + public string ColorCode { get; set; } + public Nullable CheckTime { get; set; } + public Nullable IsFinish { get; set; } + public string DeviceNo { get; set; } + public Nullable IsHigh { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchNGCCPlan.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchNGCCPlan.cs new file mode 100644 index 0000000..92ba5c9 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchNGCCPlan.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PunchNGCCPlan + { + public int ID { get; set; } + public string CarModelCode { get; set; } + public string productionNumber { get; set; } + public string itemNumber { get; set; } + public string description { get; set; } + public Nullable assemblyDate { get; set; } + public string BillNo { get; set; } + public string partType { get; set; } + public string ColorName { get; set; } + public string BarCode { get; set; } + public Nullable Sort { get; set; } + public string ColorCode { get; set; } + public Nullable CheckTime { get; set; } + public Nullable IsFinish { get; set; } + public string DeviceNo { get; set; } + public Nullable IsHigh { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchPlan.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchPlan.cs new file mode 100644 index 0000000..c9366b1 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchPlan.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PunchPlan + { + public string ID { get; set; } + public string DeviceNo { get; set; } + public string ProductID { get; set; } + public Nullable PlanCount { get; set; } + public Nullable CompleteCount { get; set; } + public Nullable BadCount { get; set; } + public Nullable IsFinish { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchRecord.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchRecord.cs new file mode 100644 index 0000000..d87151d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchRecord.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PunchRecord + { + public string ID { get; set; } + public string BarCode { get; set; } + public Nullable ScanTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchResult.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchResult.cs new file mode 100644 index 0000000..02656d7 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchResult.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PunchResult + { + public long ID { get; set; } + public string barcode { get; set; } + public string stationNo { get; set; } + public string punchResult { get; set; } + public string damnPosition { get; set; } + public string reason { get; set; } + public string productInfo { get; set; } + public Nullable createTime { get; set; } + public string Responsibility { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchValueRecord.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchValueRecord.cs new file mode 100644 index 0000000..6dac164 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_PunchValueRecord.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_PunchValueRecord + { + public string ID { get; set; } + public string DeviceNo { get; set; } + public string Address { get; set; } + public string ItemValue { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record.cs new file mode 100644 index 0000000..4bc96bb --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record.cs @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Punch_Code_Record + { + public string ID { get; set; } + public string barcode { get; set; } + public string BcpID { get; set; } + public string ZcID { get; set; } + public string OrderNo { get; set; } + public string WorkClass { get; set; } + public Nullable CreateTime { get; set; } + public string PlanID { get; set; } + public string SerialNo { get; set; } + public Nullable ToVisual { get; set; } + public Nullable FinishTime { get; set; } + public Nullable PrintTime { get; set; } + public Nullable IsCheck { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record2.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record2.cs new file mode 100644 index 0000000..9e0f92b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record2.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Punch_Code_Record2 + { + public string ID { get; set; } + public string barcode { get; set; } + public string isOK { get; set; } + public string planID { get; set; } + public Nullable createtime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record_20200721.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record_20200721.cs new file mode 100644 index 0000000..396db80 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record_20200721.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Punch_Code_Record_20200721 + { + public string ID { get; set; } + public string barcode { get; set; } + public string BcpID { get; set; } + public string ZcID { get; set; } + public string OrderNo { get; set; } + public string WorkClass { get; set; } + public Nullable CreateTime { get; set; } + public string PlanID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record_20200907.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record_20200907.cs new file mode 100644 index 0000000..2ed4632 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record_20200907.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Punch_Code_Record_20200907 + { + public string ID { get; set; } + public string barcode { get; set; } + public string BcpID { get; set; } + public string ZcID { get; set; } + public string OrderNo { get; set; } + public string WorkClass { get; set; } + public Nullable CreateTime { get; set; } + public string PlanID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record_BF.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record_BF.cs new file mode 100644 index 0000000..dbc971b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Code_Record_BF.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Punch_Code_Record_BF + { + public string ID { get; set; } + public string barcode { get; set; } + public string BcpID { get; set; } + public string ZcID { get; set; } + public string OrderNo { get; set; } + public string WorkClass { get; set; } + public Nullable CreateTime { get; set; } + public string PlanID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Proucting.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Proucting.cs new file mode 100644 index 0000000..419617f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Punch_Proucting.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Punch_Proucting + { + public int ID { get; set; } + public string StationNo { get; set; } + public string PlanID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Record_243.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Record_243.cs new file mode 100644 index 0000000..90b471c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Record_243.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Record_243 + { + public string ID { get; set; } + public string PartNo1 { get; set; } + public string PartNo2 { get; set; } + public string BoxNo { get; set; } + public string OrderNo { get; set; } + public Nullable CreateTime1 { get; set; } + public Nullable CreateTime2 { get; set; } + public Nullable Flag { get; set; } + public Nullable Type { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Record_243_20220517.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Record_243_20220517.cs new file mode 100644 index 0000000..4b670d2 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Record_243_20220517.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Record_243_20220517 + { + public string ID { get; set; } + public string PartNo1 { get; set; } + public string PartNo2 { get; set; } + public string BoxNo { get; set; } + public string OrderNo { get; set; } + public Nullable CreateTime1 { get; set; } + public Nullable CreateTime2 { get; set; } + public Nullable Flag { get; set; } + public Nullable Type { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Record_247.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Record_247.cs new file mode 100644 index 0000000..820369a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Record_247.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Record_247 + { + public string ID { get; set; } + public string PartNo1 { get; set; } + public string PartNo2 { get; set; } + public string BoxNo { get; set; } + public string OrderNo { get; set; } + public Nullable CreateTime1 { get; set; } + public Nullable CreateTime2 { get; set; } + public Nullable Flag { get; set; } + public Nullable Type { get; set; } + public Nullable ToVisual { get; set; } + public Nullable FinishTime { get; set; } + public string DeviceNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportA1.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportA1.cs new file mode 100644 index 0000000..0900b1f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportA1.cs @@ -0,0 +1,33 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ReportA1 + { + public long ID { get; set; } + public string barCode { get; set; } + public string side { get; set; } + public string inspectResult { get; set; } + public string reason { get; set; } + public Nullable createTime { get; set; } + public string inspectTimes { get; set; } + public string remark1 { get; set; } + public string weizhi { get; set; } + public string station { get; set; } + public string damnPosition { get; set; } + public string remark2 { get; set; } + public string Location { get; set; } + public string Project { get; set; } + public string workClass { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportF1.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportF1.cs new file mode 100644 index 0000000..a92ebe7 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportF1.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ReportF1 + { + public long ID { get; set; } + public string Location { get; set; } + public string Project { get; set; } + public string barCode { get; set; } + public string side { get; set; } + public string inspectResult { get; set; } + public string reason { get; set; } + public Nullable createTime { get; set; } + public string inspectTimes { get; set; } + public string remark1 { get; set; } + public string weizhi { get; set; } + public string station { get; set; } + public string damnPosition { get; set; } + public string remark2 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportF3.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportF3.cs new file mode 100644 index 0000000..13eaf7e --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportF3.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ReportF3 + { + public int ID { get; set; } + public string Location { get; set; } + public string Project { get; set; } + public string reason { get; set; } + public Nullable num { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportG1.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportG1.cs new file mode 100644 index 0000000..b575805 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportG1.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ReportG1 + { + public int ID { get; set; } + public string Location { get; set; } + public string Project { get; set; } + public string barCode { get; set; } + public string side { get; set; } + public string inspectResult { get; set; } + public string reason { get; set; } + public Nullable createTime { get; set; } + public string inspectTimes { get; set; } + public string remark1 { get; set; } + public string remark2 { get; set; } + public string weizhi { get; set; } + public string station { get; set; } + public string damnPosition { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportH1.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportH1.cs new file mode 100644 index 0000000..a62255a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportH1.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ReportH1 + { + public int ID { get; set; } + public string Location { get; set; } + public string Project { get; set; } + public string barCode { get; set; } + public string side { get; set; } + public string inspectResult { get; set; } + public string reason { get; set; } + public Nullable createTime { get; set; } + public string inspectTimes { get; set; } + public string remark1 { get; set; } + public string remark2 { get; set; } + public string weizhi { get; set; } + public string station { get; set; } + public string damnPosition { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportPaintingScreen.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportPaintingScreen.cs new file mode 100644 index 0000000..1718801 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportPaintingScreen.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ReportPaintingScreen + { + public string color { get; set; } + public string productInfo { get; set; } + public int sumNum { get; set; } + public int oncePassNum { get; set; } + public string oncePassRate { get; set; } + public int sumPassNum { get; set; } + public string sumPassRate { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportPaintingScreen_bak.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportPaintingScreen_bak.cs new file mode 100644 index 0000000..a5e571a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportPaintingScreen_bak.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ReportPaintingScreen_bak + { + public string color { get; set; } + public string productInfo { get; set; } + public int sumNum { get; set; } + public int oncePassNum { get; set; } + public string oncePassRate { get; set; } + public int sumPassNum { get; set; } + public string sumPassRate { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportPaintingScreen_pg.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportPaintingScreen_pg.cs new file mode 100644 index 0000000..2785b9c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportPaintingScreen_pg.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ReportPaintingScreen_pg + { + public string color { get; set; } + public string productInfo { get; set; } + public int sumNum { get; set; } + public int hgNum { get; set; } + public string DefectName1 { get; set; } + public decimal defectRate1 { get; set; } + public string DefectName2 { get; set; } + public Nullable defectRate2 { get; set; } + public string DefectName3 { get; set; } + public Nullable defectRate3 { get; set; } + public string DefectName4 { get; set; } + public Nullable defectRate4 { get; set; } + public string DefectName5 { get; set; } + public Nullable defectRate5 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportPaintingScreen_pg_bak.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportPaintingScreen_pg_bak.cs new file mode 100644 index 0000000..f4b0f49 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportPaintingScreen_pg_bak.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ReportPaintingScreen_pg_bak + { + public string color { get; set; } + public string productInfo { get; set; } + public int sumNum { get; set; } + public int hgNum { get; set; } + public string DefectName1 { get; set; } + public decimal defectRate1 { get; set; } + public string DefectName2 { get; set; } + public Nullable defectRate2 { get; set; } + public string DefectName3 { get; set; } + public Nullable defectRate3 { get; set; } + public string DefectName4 { get; set; } + public Nullable defectRate4 { get; set; } + public string DefectName5 { get; set; } + public Nullable defectRate5 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportTest.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportTest.cs new file mode 100644 index 0000000..2a45db1 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ReportTest.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ReportTest + { + public long ID { get; set; } + public string barCode { get; set; } + public string side { get; set; } + public string inspectResult { get; set; } + public string reason { get; set; } + public Nullable createTime { get; set; } + public string inspectTimes { get; set; } + public string remark1 { get; set; } + public string weizhi { get; set; } + public string station { get; set; } + public string damnPosition { get; set; } + public string remark2 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreen.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreen.cs new file mode 100644 index 0000000..bd3d4a5 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreen.cs @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Report_FiveScreen + { + public string ID { get; set; } + public string Name { get; set; } + public Nullable LastYear { get; set; } + public Nullable Jan { get; set; } + public Nullable Feb { get; set; } + public Nullable Mar { get; set; } + public Nullable Apr { get; set; } + public Nullable May { get; set; } + public Nullable Jun { get; set; } + public Nullable Jul { get; set; } + public Nullable Aug { get; set; } + public Nullable Sept { get; set; } + public Nullable Oct { get; set; } + public Nullable Nov { get; set; } + public Nullable Dec { get; set; } + public Nullable day1 { get; set; } + public Nullable day2 { get; set; } + public Nullable day3 { get; set; } + public Nullable day4 { get; set; } + public Nullable day5 { get; set; } + public Nullable day6 { get; set; } + public Nullable day7 { get; set; } + public Nullable day8 { get; set; } + public Nullable day9 { get; set; } + public Nullable day10 { get; set; } + public Nullable day11 { get; set; } + public Nullable day12 { get; set; } + public Nullable day13 { get; set; } + public Nullable day14 { get; set; } + public Nullable day15 { get; set; } + public Nullable day16 { get; set; } + public Nullable day17 { get; set; } + public Nullable day18 { get; set; } + public Nullable day19 { get; set; } + public Nullable day20 { get; set; } + public Nullable day21 { get; set; } + public Nullable day22 { get; set; } + public Nullable day23 { get; set; } + public Nullable day24 { get; set; } + public Nullable day25 { get; set; } + public Nullable day26 { get; set; } + public Nullable day27 { get; set; } + public Nullable day28 { get; set; } + public Nullable day29 { get; set; } + public Nullable day30 { get; set; } + public Nullable day31 { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreenConfig.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreenConfig.cs new file mode 100644 index 0000000..9e76b9f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreenConfig.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Report_FiveScreenConfig + { + public string ID { get; set; } + public string Name { get; set; } + public Nullable Min { get; set; } + public Nullable Max { get; set; } + public Nullable Scale { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreenLast.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreenLast.cs new file mode 100644 index 0000000..23bb6d0 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreenLast.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Report_FiveScreenLast + { + public string ID { get; set; } + public string StationID { get; set; } + public string StationNo { get; set; } + public string UseRate { get; set; } + public string PassRate { get; set; } + public string Remark1 { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreenStandard.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreenStandard.cs new file mode 100644 index 0000000..0ddeb70 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreenStandard.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Report_FiveScreenStandard + { + public string ID { get; set; } + public string Name { get; set; } + public Nullable LastYear { get; set; } + public Nullable Jan { get; set; } + public Nullable Feb { get; set; } + public Nullable Mar { get; set; } + public Nullable Apr { get; set; } + public Nullable May { get; set; } + public Nullable Jun { get; set; } + public Nullable Jul { get; set; } + public Nullable Aug { get; set; } + public Nullable Sept { get; set; } + public Nullable Oct { get; set; } + public Nullable Nov { get; set; } + public Nullable Dec { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreen_20191011.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreen_20191011.cs new file mode 100644 index 0000000..4e7cb1f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreen_20191011.cs @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Report_FiveScreen_20191011 + { + public string ID { get; set; } + public string Name { get; set; } + public Nullable LastYear { get; set; } + public Nullable Jan { get; set; } + public Nullable Feb { get; set; } + public Nullable Mar { get; set; } + public Nullable Apr { get; set; } + public Nullable May { get; set; } + public Nullable Jun { get; set; } + public Nullable Jul { get; set; } + public Nullable Aug { get; set; } + public Nullable Sept { get; set; } + public Nullable Oct { get; set; } + public Nullable Nov { get; set; } + public Nullable Dec { get; set; } + public Nullable day1 { get; set; } + public Nullable day2 { get; set; } + public Nullable day3 { get; set; } + public Nullable day4 { get; set; } + public Nullable day5 { get; set; } + public Nullable day6 { get; set; } + public Nullable day7 { get; set; } + public Nullable day8 { get; set; } + public Nullable day9 { get; set; } + public Nullable day10 { get; set; } + public Nullable day11 { get; set; } + public Nullable day12 { get; set; } + public Nullable day13 { get; set; } + public Nullable day14 { get; set; } + public Nullable day15 { get; set; } + public Nullable day16 { get; set; } + public Nullable day17 { get; set; } + public Nullable day18 { get; set; } + public Nullable day19 { get; set; } + public Nullable day20 { get; set; } + public Nullable day21 { get; set; } + public Nullable day22 { get; set; } + public Nullable day23 { get; set; } + public Nullable day24 { get; set; } + public Nullable day25 { get; set; } + public Nullable day26 { get; set; } + public Nullable day27 { get; set; } + public Nullable day28 { get; set; } + public Nullable day29 { get; set; } + public Nullable day30 { get; set; } + public Nullable day31 { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreen_20191014.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreen_20191014.cs new file mode 100644 index 0000000..f2d26fc --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Report_FiveScreen_20191014.cs @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Report_FiveScreen_20191014 + { + public string ID { get; set; } + public string Name { get; set; } + public Nullable LastYear { get; set; } + public Nullable Jan { get; set; } + public Nullable Feb { get; set; } + public Nullable Mar { get; set; } + public Nullable Apr { get; set; } + public Nullable May { get; set; } + public Nullable Jun { get; set; } + public Nullable Jul { get; set; } + public Nullable Aug { get; set; } + public Nullable Sept { get; set; } + public Nullable Oct { get; set; } + public Nullable Nov { get; set; } + public Nullable Dec { get; set; } + public Nullable day1 { get; set; } + public Nullable day2 { get; set; } + public Nullable day3 { get; set; } + public Nullable day4 { get; set; } + public Nullable day5 { get; set; } + public Nullable day6 { get; set; } + public Nullable day7 { get; set; } + public Nullable day8 { get; set; } + public Nullable day9 { get; set; } + public Nullable day10 { get; set; } + public Nullable day11 { get; set; } + public Nullable day12 { get; set; } + public Nullable day13 { get; set; } + public Nullable day14 { get; set; } + public Nullable day15 { get; set; } + public Nullable day16 { get; set; } + public Nullable day17 { get; set; } + public Nullable day18 { get; set; } + public Nullable day19 { get; set; } + public Nullable day20 { get; set; } + public Nullable day21 { get; set; } + public Nullable day22 { get; set; } + public Nullable day23 { get; set; } + public Nullable day24 { get; set; } + public Nullable day25 { get; set; } + public Nullable day26 { get; set; } + public Nullable day27 { get; set; } + public Nullable day28 { get; set; } + public Nullable day29 { get; set; } + public Nullable day30 { get; set; } + public Nullable day31 { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ScanAnalysis.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ScanAnalysis.cs new file mode 100644 index 0000000..b50ca69 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ScanAnalysis.cs @@ -0,0 +1,28 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ScanAnalysis + { + public long ID { get; set; } + public Nullable ProductDate { get; set; } + public string workClass { get; set; } + public Nullable Qty { get; set; } + public string ScanPosition1 { get; set; } + public Nullable P_Qty1 { get; set; } + public Nullable P_UnScanQty1 { get; set; } + public string ScanPosition2 { get; set; } + public Nullable P_Qty2 { get; set; } + public Nullable P_UnScanQty2 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ScanRecord_Laser.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ScanRecord_Laser.cs new file mode 100644 index 0000000..9e67a2e --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ScanRecord_Laser.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ScanRecord_Laser + { + public long ID { get; set; } + public string BarCode { get; set; } + public Nullable ScanTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_SkidInfo.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_SkidInfo.cs new file mode 100644 index 0000000..7c7a8ec --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_SkidInfo.cs @@ -0,0 +1,49 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_SkidInfo + { + public string ID { get; set; } + public string SkidNo { get; set; } + public string BarcodeLeft { get; set; } + public string BarcodeRight { get; set; } + public string Layer { get; set; } + public string ColorInfo { get; set; } + public Nullable CreateTime { get; set; } + public string Side_1_BC01 { get; set; } + public string Side_1_BC02 { get; set; } + public string Side_1_BC03 { get; set; } + public string Side_1_BC04 { get; set; } + public string Side_1_BC05 { get; set; } + public string Side_1_BC06 { get; set; } + public string Side_1_BC07 { get; set; } + public string Side_1_BC08 { get; set; } + public string Side_1_BC09 { get; set; } + public string Side_1_BC10 { get; set; } + public string Side_1_BC11 { get; set; } + public string Side_1_BC12 { get; set; } + public string Side_2_BC01 { get; set; } + public string Side_2_BC02 { get; set; } + public string Side_2_BC03 { get; set; } + public string Side_2_BC04 { get; set; } + public string Side_2_BC05 { get; set; } + public string Side_2_BC06 { get; set; } + public string Side_2_BC07 { get; set; } + public string Side_2_BC08 { get; set; } + public string Side_2_BC09 { get; set; } + public string Side_2_BC10 { get; set; } + public string Side_2_BC11 { get; set; } + public string Side_2_BC12 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_SkidInfo_20200904.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_SkidInfo_20200904.cs new file mode 100644 index 0000000..893fa33 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_SkidInfo_20200904.cs @@ -0,0 +1,49 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_SkidInfo_20200904 + { + public string ID { get; set; } + public string SkidNo { get; set; } + public string BarcodeLeft { get; set; } + public string BarcodeRight { get; set; } + public string Layer { get; set; } + public string ColorInfo { get; set; } + public Nullable CreateTime { get; set; } + public string Side_1_BC01 { get; set; } + public string Side_1_BC02 { get; set; } + public string Side_1_BC03 { get; set; } + public string Side_1_BC04 { get; set; } + public string Side_1_BC05 { get; set; } + public string Side_1_BC06 { get; set; } + public string Side_1_BC07 { get; set; } + public string Side_1_BC08 { get; set; } + public string Side_1_BC09 { get; set; } + public string Side_1_BC10 { get; set; } + public string Side_1_BC11 { get; set; } + public string Side_1_BC12 { get; set; } + public string Side_2_BC01 { get; set; } + public string Side_2_BC02 { get; set; } + public string Side_2_BC03 { get; set; } + public string Side_2_BC04 { get; set; } + public string Side_2_BC05 { get; set; } + public string Side_2_BC06 { get; set; } + public string Side_2_BC07 { get; set; } + public string Side_2_BC08 { get; set; } + public string Side_2_BC09 { get; set; } + public string Side_2_BC10 { get; set; } + public string Side_2_BC11 { get; set; } + public string Side_2_BC12 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_SpcialNotFacStockNo.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_SpcialNotFacStockNo.cs new file mode 100644 index 0000000..64d86fa --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_SpcialNotFacStockNo.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_SpcialNotFacStockNo + { + public string ID { get; set; } + public string NotFacStockNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_SpcialStockNo.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_SpcialStockNo.cs new file mode 100644 index 0000000..92933d0 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_SpcialStockNo.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_SpcialStockNo + { + public string ID { get; set; } + public string SpecialStockNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Station.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Station.cs new file mode 100644 index 0000000..0188ba6 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_Station.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_Station + { + public string StationID { get; set; } + public string LineID { get; set; } + public string StationNo { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StationAndCylinder.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StationAndCylinder.cs new file mode 100644 index 0000000..1ec8efb --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StationAndCylinder.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_StationAndCylinder + { + public string ID { get; set; } + public string StationID { get; set; } + public string CylinderID { get; set; } + public Nullable Time1 { get; set; } + public Nullable Time2 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockIn.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockIn.cs new file mode 100644 index 0000000..8e3790b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockIn.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_StockIn + { + public string ID { get; set; } + public string barcode { get; set; } + public string pass { get; set; } + public Nullable createTime { get; set; } + public string paintCode { get; set; } + public string ZcCode { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockInColor.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockInColor.cs new file mode 100644 index 0000000..6e3e9d2 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockInColor.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_StockInColor + { + public string ID { get; set; } + public string Barcode { get; set; } + public string ColorInfo { get; set; } + public Nullable CreateTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockIn_20200511.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockIn_20200511.cs new file mode 100644 index 0000000..8701405 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockIn_20200511.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_StockIn_20200511 + { + public string ID { get; set; } + public string barcode { get; set; } + public string pass { get; set; } + public Nullable createTime { get; set; } + public string paintCode { get; set; } + public string ZcCode { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockIn_20210322.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockIn_20210322.cs new file mode 100644 index 0000000..21f943b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockIn_20210322.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_StockIn_20210322 + { + public string ID { get; set; } + public string barcode { get; set; } + public string pass { get; set; } + public Nullable createTime { get; set; } + public string paintCode { get; set; } + public string ZcCode { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockIn_beif.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockIn_beif.cs new file mode 100644 index 0000000..7d5d609 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_StockIn_beif.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_StockIn_beif + { + public string ID { get; set; } + public string barcode { get; set; } + public string pass { get; set; } + public Nullable createTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ToVisual_WheelBrow_243.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ToVisual_WheelBrow_243.cs new file mode 100644 index 0000000..7c5ab49 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ToVisual_WheelBrow_243.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ToVisual_WheelBrow_243 + { + public long ID { get; set; } + public string PartNo { get; set; } + public Nullable ToVisual { get; set; } + public Nullable CreateTime { get; set; } + public Nullable FinishTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ToVisual_WheelBrow_247.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ToVisual_WheelBrow_247.cs new file mode 100644 index 0000000..cd340dc --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_ToVisual_WheelBrow_247.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_ToVisual_WheelBrow_247 + { + public long ID { get; set; } + public string PartNo { get; set; } + public Nullable ToVisual { get; set; } + public Nullable CreateTime { get; set; } + public Nullable FinishTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_aa.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_aa.cs new file mode 100644 index 0000000..32b5b56 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_aa.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_aa + { + public int ID { get; set; } + public string barcode { get; set; } + public string side { get; set; } + public Nullable createtime { get; set; } + public Nullable ToVisual { get; set; } + public Nullable FinishTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_reportA2.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_reportA2.cs new file mode 100644 index 0000000..4e0fe83 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_reportA2.cs @@ -0,0 +1,33 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_reportA2 + { + public long ID { get; set; } + public string barCode { get; set; } + public string side { get; set; } + public string inspectResult { get; set; } + public string reason { get; set; } + public Nullable createTime { get; set; } + public string inspectTimes { get; set; } + public string remark1 { get; set; } + public string weizhi { get; set; } + public string station { get; set; } + public string damnPosition { get; set; } + public string remark2 { get; set; } + public string workClass { get; set; } + public string Location { get; set; } + public string Project { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_test.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_test.cs new file mode 100644 index 0000000..1fa5d67 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/tb_test.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class tb_test + { + public string ID { get; set; } + public string Reason { get; set; } + public Nullable createTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/test1.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/test1.cs new file mode 100644 index 0000000..4149670 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/test1.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class test1 + { + public string ID { get; set; } + public string StationID { get; set; } + public string StockNo { get; set; } + public Nullable PrintType { get; set; } + public string OneBarCode { get; set; } + public string PlanID { get; set; } + public Nullable CreateTime { get; set; } + public string ProductName { get; set; } + public string PartNo { get; set; } + public string ProductDate { get; set; } + public string ClassName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/test2.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/test2.cs new file mode 100644 index 0000000..c92b0ef --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/test2.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + using System.Collections.Generic; + + public partial class test2 + { + public int ID { get; set; } + public string PlanID { get; set; } + public string StationID { get; set; } + public string ProductDate { get; set; } + public string ClassName { get; set; } + public Nullable ProductCount { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/user_department_sel_Result.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/user_department_sel_Result.cs new file mode 100644 index 0000000..93d0c1b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/user_department_sel_Result.cs @@ -0,0 +1,19 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + + public partial class user_department_sel_Result + { + public Nullable ID { get; set; } + public string Text { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EFModel/user_menu_sel_Result.cs b/SjMes/PunchAssemble/MESClassLibrary/EFModel/user_menu_sel_Result.cs new file mode 100644 index 0000000..e15d257 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/EFModel/user_menu_sel_Result.cs @@ -0,0 +1,19 @@ +//------------------------------------------------------------------------------ +// +// 此代码已从模板生成。 +// +// 手动更改此文件可能导致应用程序出现意外的行为。 +// 如果重新生成代码,将覆盖对此文件的手动更改。 +// +//------------------------------------------------------------------------------ + +namespace MESClassLibrary.EFModel +{ + using System; + + public partial class user_menu_sel_Result + { + public System.Guid MenuID { get; set; } + public string MenuName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/EncryptedDLL/MESClassLibrary.dll b/SjMes/PunchAssemble/MESClassLibrary/EncryptedDLL/MESClassLibrary.dll new file mode 100644 index 0000000..a742b05 Binary files /dev/null and b/SjMes/PunchAssemble/MESClassLibrary/EncryptedDLL/MESClassLibrary.dll differ diff --git a/SjMes/PunchAssemble/MESClassLibrary/JSONTools.cs b/SjMes/PunchAssemble/MESClassLibrary/JSONTools.cs new file mode 100644 index 0000000..55d0e46 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/JSONTools.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Web.Script.Serialization; + +namespace MESClassLibrary +{ + public class JSONTools + { + public static List JSONStringToList(string JsonStr) + { + JavaScriptSerializer serializer = new JavaScriptSerializer(); + serializer.MaxJsonLength = 0x7fffffff; + return serializer.Deserialize>(JsonStr); + } + + public static DataSet JsonToDataSet(string Json) + { + try + { + DataSet set = new DataSet(); + JavaScriptSerializer serializer = new JavaScriptSerializer(); + serializer.MaxJsonLength = 0x7fffffff; + Dictionary dictionary = (Dictionary)serializer.DeserializeObject(Json); + foreach (KeyValuePair pair in dictionary) + { + DataTable table = new DataTable(pair.Key); + object[] objArray = (object[])pair.Value; + foreach (object obj3 in objArray) + { + Dictionary dictionary2 = (Dictionary)obj3; + DataRow row = table.NewRow(); + foreach (KeyValuePair pair2 in dictionary2) + { + if (!table.Columns.Contains(pair2.Key)) + { + table.Columns.Add(pair2.Key.ToString()); + row[pair2.Key] = pair2.Value; + } + else + { + row[pair2.Key] = pair2.Value; + } + } + table.Rows.Add(row); + } + set.Tables.Add(table); + } + return set; + } + catch + { + return null; + } + } + + public static string ModifyInfoJSON(string people, string date) + { + return ("{\"People\":\"" + people + "\",\"Date\":\"" + date + "\"}"); + } + + public static T ScriptDeserialize(string json) where T : new() + { + T local = new T(); + JavaScriptSerializer serializer = new JavaScriptSerializer(); + serializer.MaxJsonLength = 0x7fffffff; + return serializer.Deserialize(json); + } + + public static string ScriptSerialize(T input) + { + JavaScriptSerializer serializer = new JavaScriptSerializer(); + serializer.MaxJsonLength = 0x7fffffff; + return serializer.Serialize(input); + } + + public static string ScriptSerialize(object input) + { + return Newtonsoft.Json.JsonConvert.SerializeObject(input); + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/LambdaHelper.cs b/SjMes/PunchAssemble/MESClassLibrary/LambdaHelper.cs new file mode 100644 index 0000000..41cc23b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/LambdaHelper.cs @@ -0,0 +1,220 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary +{ + public static class LambdaHelper + { + /// + /// 创建lambda表达式:p=>true + /// + /// + /// + public static Expression> True() + { + return p => true; + } + + /// + /// 创建lambda表达式:p=>false + /// + /// + /// + public static Expression> False() + { + return p => false; + } + + /// + /// 创建lambda表达式:p=>p.propertyName + /// + /// + /// + /// + /// + public static Expression> GetOrderExpression(string propertyName) + { + ParameterExpression parameter = Expression.Parameter(typeof(T), "p"); + return Expression.Lambda>(Expression.Property(parameter, propertyName), parameter); + } + + /// + /// 创建lambda表达式:p=>p.propertyName == propertyValue + /// + /// + /// + /// + /// + public static Expression> CreateEqual(string propertyName, object propertyValue) + { + ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数p + MemberExpression member = Expression.PropertyOrField(parameter, propertyName); + ConstantExpression constant = Expression.Constant(propertyValue);//创建常数 + return Expression.Lambda>(Expression.Equal(member, constant), parameter); + } + + /// + /// 创建lambda表达式:p=>p.propertyName != propertyValue + /// + /// + /// + /// + /// + public static Expression> CreateNotEqual(string propertyName, string propertyValue) + { + ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数p + MemberExpression member = Expression.PropertyOrField(parameter, propertyName); + ConstantExpression constant = Expression.Constant(propertyValue);//创建常数 + return Expression.Lambda>(Expression.NotEqual(member, constant), parameter); + } + + /// + /// 创建lambda表达式:p=>p.propertyName > propertyValue + /// + /// + /// + /// + /// + public static Expression> CreateGreaterThan(string propertyName, string propertyValue) + { + ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数p + MemberExpression member = Expression.PropertyOrField(parameter, propertyName); + ConstantExpression constant = Expression.Constant(propertyValue);//创建常数 + return Expression.Lambda>(Expression.GreaterThan(member, constant), parameter); + } + + /// + /// 创建lambda表达式:p=>p.propertyName < propertyValue + /// + /// + /// + /// + /// + public static Expression> CreateLessThan(string propertyName, string propertyValue) + { + ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数p + MemberExpression member = Expression.PropertyOrField(parameter, propertyName); + ConstantExpression constant = Expression.Constant(propertyValue);//创建常数 + return Expression.Lambda>(Expression.LessThan(member, constant), parameter); + } + + /// + /// 创建lambda表达式:p=>p.propertyName >= propertyValue + /// + /// + /// + /// + /// + public static Expression> CreateGreaterThanOrEqual(string propertyName, string propertyValue) + { + ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数p + MemberExpression member = Expression.PropertyOrField(parameter, propertyName); + ConstantExpression constant = Expression.Constant(propertyValue);//创建常数 + return Expression.Lambda>(Expression.GreaterThanOrEqual(member, constant), parameter); + } + + /// + /// 创建lambda表达式:p=>p.propertyName <= propertyValue + /// + /// + /// + /// + /// + public static Expression> CreateLessThanOrEqual(string propertyName, string propertyValue) + { + ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数p + MemberExpression member = Expression.PropertyOrField(parameter, propertyName); + ConstantExpression constant = Expression.Constant(propertyValue);//创建常数 + return Expression.Lambda>(Expression.LessThanOrEqual(member, constant), parameter); + } + //时间比较>= + public static Expression> CreateCompareToLater(string propertyName, object propertyValue) + { + ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数p + MemberExpression member = Expression.PropertyOrField(parameter, propertyName); + var methodInfo = typeof(DateTime).GetMethod("CompareTo", new Type[] { typeof(DateTime) });// + ConstantExpression constant = Expression.Constant(Convert.ToDateTime(propertyValue), typeof(DateTime));//创建常数 + BinaryExpression siteNoExpression = + Expression.GreaterThanOrEqual( + Expression.Call( + member, + methodInfo, + constant + ), + Expression.Constant(0, typeof(Int32)) //比较String.CompareTo的返回结果和0,来实现>=的效果 + ); + return Expression.Lambda>(siteNoExpression, parameter); + } + //时间比较<= + public static Expression> CreateCompareToEarlier(string propertyName, object propertyValue) + { + ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数p + MemberExpression member = Expression.PropertyOrField(parameter, propertyName); + var methodInfo = typeof(DateTime).GetMethod("CompareTo", new Type[] { typeof(DateTime) });// + ConstantExpression constant = Expression.Constant(Convert.ToDateTime(propertyValue), typeof(DateTime));//创建常数 + BinaryExpression siteNoExpression = + Expression.LessThanOrEqual( + Expression.Call( + member, + methodInfo, + constant + ), + Expression.Constant(0, typeof(Int32)) //比较String.CompareTo的返回结果和0,来实现>=的效果 + ); + return Expression.Lambda>(siteNoExpression, parameter); + } + + + + /// + /// 创建lambda表达式:p=>p.propertyName.Contains(propertyValue) + /// + /// + /// + /// + /// + public static Expression> GetContains(string propertyName, string propertyValue) + { + ParameterExpression parameter = Expression.Parameter(typeof(T), "p"); + MemberExpression member = Expression.PropertyOrField(parameter, propertyName); + MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) }); + ConstantExpression constant = Expression.Constant(propertyValue, typeof(string)); + return Expression.Lambda>(Expression.Call(member, method, constant), parameter); + } + + /// + /// 创建lambda表达式:!(p=>p.propertyName.Contains(propertyValue)) + /// + /// + /// + /// + /// + public static Expression> GetNotContains(string propertyName, string propertyValue) + { + ParameterExpression parameter = Expression.Parameter(typeof(T), "p"); + MemberExpression member = Expression.PropertyOrField(parameter, propertyName); + MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) }); + ConstantExpression constant = Expression.Constant(propertyValue, typeof(string)); + return Expression.Lambda>(Expression.Not(Expression.Call(member, method, constant)), parameter); + } + + public static Expression> Or(this Expression> expr1,Expression> expr2) + { + var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast()); + return Expression.Lambda> + (Expression.Or(expr1.Body, invokedExpr), expr1.Parameters); + } + + public static Expression> And(this Expression> expr1,Expression> expr2) + { + var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast()); + return Expression.Lambda> + (Expression.And(expr1.Body, invokedExpr), expr1.Parameters); + } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/MESClassLibrary.csproj b/SjMes/PunchAssemble/MESClassLibrary/MESClassLibrary.csproj new file mode 100644 index 0000000..1ccc025 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/MESClassLibrary.csproj @@ -0,0 +1,983 @@ + + + + + Debug + AnyCPU + {867989D8-6837-41DC-9BF1-4658F5D6CFEF} + Library + Properties + MESClassLibrary + MESClassLibrary + v4.0 + 512 + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + bin\Debug\EntityFramework.dll + + + False + ..\MESWebSite\DLL\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + BBMPT.Context.tt + + + True + True + BBMPT.tt + + + True + True + BBMPT.edmx + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + BBMPT.tt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Designer + + + EntityModelCodeGenerator + BBMPT.Designer.cs + + + BBMPT.edmx + + + + + + TextTemplatingFileGenerator + BBMPT.edmx + BBMPT.Context.cs + + + TextTemplatingFileGenerator + BBMPT.edmx + BBMPT.cs + + + + + + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/AnalysisBarModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/AnalysisBarModel.cs new file mode 100644 index 0000000..425439d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/AnalysisBarModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class AnalysisBarModel + { + public string text { get; set; } + public string subtext { get; set; } + public List categories { get; set; } + public List data { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/AnalysisPieModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/AnalysisPieModel.cs new file mode 100644 index 0000000..32f655f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/AnalysisPieModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class AnalysisPieModel + { + public string text { get; set; } + public List data { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/AndonButtonTypeModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/AndonButtonTypeModel.cs new file mode 100644 index 0000000..8f731fb --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/AndonButtonTypeModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.Model +{ + public class AndonButtonTypeModel + { + public string ID { get; set; } + public int ButtonType { get; set; } + public string ButtonName { get; set; } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/AndonRecordModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/AndonRecordModel.cs new file mode 100644 index 0000000..16f8adc --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/AndonRecordModel.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.Model +{ + public class AndonRecordModel + { + public string ID { get; set; } + + public string ButtonTypeID { get; set; } + + public DateTime StartTime { get; set; } + + public DateTime EndTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/AssemblyModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/AssemblyModel.cs new file mode 100644 index 0000000..e6db387 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/AssemblyModel.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class AssemblyModel + { + public string ID { get; set; } + + public string PartNo { get; set; } + + public string PartName { get; set; } + + public string BatchNo { get; set; } + + public string Color { get; set; } + + public string ColorNo { get; set; } + + public string PartType { get; set; } + + public string TapeBatchNo { get; set; } + + public string Validity { get; set; } + + public string ValidityDate { get; set; } + + public DateTime CreateTime { get; set; } + + public DateTime PrintTime { get; set; } + public string Des { get; set; } + + public int Flag { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/BadInjectionModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/BadInjectionModel.cs new file mode 100644 index 0000000..5cea76d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/BadInjectionModel.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class BadInjectionModel + { + public string ID { get; set; } + public string OneBarCode { get; set; } + public string BarCode { get; set; } + public string BadPosition { get; set; } + public string BadReason { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/BarCodeModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/BarCodeModel.cs new file mode 100644 index 0000000..f4eb90f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/BarCodeModel.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class BarCodeModel + { + public string ID { get; set; } + public string OneBarCode { get; set; } + public string BarCode { get; set; } + public string StockNo { get; set; } + public int PrintType { get; set; } + + public string StationID { get; set; } + + public DateTime PrintTime { get; set; } + public DateTime CreateTime { get; set; } + + public string Import { get; set; } + + public string StationID2 { get; set; } + + public string PlanID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/BasicModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/BasicModel.cs new file mode 100644 index 0000000..4e42096 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/BasicModel.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class BasicModel + { + public string ID { get; set; } + public string CreateUserID { get; set; } + public DateTime CreateTime { get; set; } + public string UpdateUserID { get; set; } + public DateTime UpdateTime { get; set; } + public string DisableUserID { get; set; } + public DateTime DisableTime { get; set; } + public int IsUseing { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/BomModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/BomModel.cs new file mode 100644 index 0000000..af3262f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/BomModel.cs @@ -0,0 +1,16 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class BomModel : tb_Bom + { + public string ProductName1 { get; set; } + + public string ProductName2 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/BoxModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/BoxModel.cs new file mode 100644 index 0000000..53accb2 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/BoxModel.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class BoxModel + { + public string ID { get; set; } + + public string BoxNo { get; set; } + + public string PartNo { get; set; } + + public string PartName { get; set; } + + public string BatchNo { get; set; } + + public int BoxCount { get; set; } + + public DateTime CreateTime { get; set; } + + public DateTime PrintTime { get; set; } + + public string Des { get; set; } + + public int Flag { get; set; } + + public string Validity { get; set; } + + public string ValidityDate { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/CheckItemModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/CheckItemModel.cs new file mode 100644 index 0000000..e6e243e --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/CheckItemModel.cs @@ -0,0 +1,14 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class CheckItemModel : tb_CheckItem + { + public string DeviceName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/ChildTreeModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/ChildTreeModel.cs new file mode 100644 index 0000000..fd93625 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/ChildTreeModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class ChildTreeModel + { + public string id { get; set; } + public string text { get; set; } + + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/ColorModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/ColorModel.cs new file mode 100644 index 0000000..4520a39 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/ColorModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class ColorModel + { + public string Color{ get; set; } + + public string ColorNo { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/CommonlyInspectionModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/CommonlyInspectionModel.cs new file mode 100644 index 0000000..7d37e0b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/CommonlyInspectionModel.cs @@ -0,0 +1,14 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class CommonlyInspectionModel : tb_CommonlyInspection + { + public string InspectionContent { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/CommonlyInspectionVersionModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/CommonlyInspectionVersionModel.cs new file mode 100644 index 0000000..0014327 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/CommonlyInspectionVersionModel.cs @@ -0,0 +1,17 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class CommonlyInspectionVersionModel : tb_CommonlyInspectionVersion + { + public string LineID { get; set; } + public string LineName { get; set; } + public string DeviceName { get; set; } + public string IsUseingName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/DefectModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/DefectModel.cs new file mode 100644 index 0000000..a363259 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/DefectModel.cs @@ -0,0 +1,14 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class DefectModel : tb_Defect + { + public string LineName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/DeviceModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/DeviceModel.cs new file mode 100644 index 0000000..34e7dc8 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/DeviceModel.cs @@ -0,0 +1,14 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class DeviceModel : tb_Device + { + public string StationNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/DownRecordVO.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/DownRecordVO.cs new file mode 100644 index 0000000..6301641 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/DownRecordVO.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class DownRecordVO + { + public string ID { get; set; } + + public string StationID { get; set; } + + public string PlanID { get; set; } + + public string DownType { get; set; } + + public string DownReason { get; set; } + + public string StartTime { get; set; } + + public string EndTime { get; set; } + + public string Remark1 { get; set; } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/EcharBarModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/EcharBarModel.cs new file mode 100644 index 0000000..de5b23c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/EcharBarModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class EcharBarModel + { + public List categories { get; set; } + public List QualifiedData { get; set; } + public List TargetData { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/GetNewTasksModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/GetNewTasksModel.cs new file mode 100644 index 0000000..a861f26 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/GetNewTasksModel.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class GetNewTasksModel + { + public string TaskState { get; set; } + + public string TaskID { get; set; } + + public string TableName { get; set; } + + public string TableName2 { get; set; } + + public string TableName3 { get; set; } + + public string Creator { get; set; } + + public string DataCount { get; set; } + + public string Subscriber { get; set; } + + public string FailedCount { get; set; } + + public string FailedInfo { get; set; } + + public string Domain { get; set; } + + public string Site { get; set; } + + public string GUID { get; set; } + + public string UID { get; set; } + + public string CreateUser { get; set; } + + public string CreateTime { get; set; } + + public string Remark { get; set; } + + public string UpdateUser { get; set; } + + public string UpdateTime { get; set; } + + public string IsChecked { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionBadReasonModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionBadReasonModel.cs new file mode 100644 index 0000000..251d91f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionBadReasonModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class InjectionBadReasonModel + { + public string PlanID { get; set; } + public string BadReason { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionDownReason.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionDownReason.cs new file mode 100644 index 0000000..6932cfe --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionDownReason.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class InjectionDownReason + { + public string ID { get; set; } + public string Reason { get; set; } + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionDownRecordModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionDownRecordModel.cs new file mode 100644 index 0000000..c513af5 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionDownRecordModel.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class InjectionDownRecordModel + { + public string ID { get; set; } + public string StationID { get; set; } + public string DownType { get; set; } + public string DownReason { get; set; } + public string Des { get; set; } + public DateTime StartTime { get; set; } + public DateTime EndTime { get; set; } + public int DownTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionPlanModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionPlanModel.cs new file mode 100644 index 0000000..d160e2f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionPlanModel.cs @@ -0,0 +1,22 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class InjectionPlanModel : tb_InjectionPlan + { + public string PartNo { get; set; } + + public string StationNo { get; set; } + + public string ProductName { get; set; } + + public int IsFinishi { get; set; } + + public DateTime FinishTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionRecordDownReasonModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionRecordDownReasonModel.cs new file mode 100644 index 0000000..ed53775 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/InjectionRecordDownReasonModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.Model +{ + public class InjectionRecordDownReasonModel + { + public string PlanID { get; set; } + public long DownTime { get; set; } + public string DownTypeName { get; set; } + public string Reason { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/Injection_DownRecordModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/Injection_DownRecordModel.cs new file mode 100644 index 0000000..5b1c326 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/Injection_DownRecordModel.cs @@ -0,0 +1,18 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class Injection_DownRecordModel : tb_Injection_DownRecord + { + public string StationNo { get; set; } + + public string DownReasonName { get; set; } + + public string DownTypeName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/Injection_RecordModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/Injection_RecordModel.cs new file mode 100644 index 0000000..88711d9 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/Injection_RecordModel.cs @@ -0,0 +1,14 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class Injection_RecordModel: tb_Injection_Record + { + public string StationNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/InspectResultGroup.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/InspectResultGroup.cs new file mode 100644 index 0000000..989fb08 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/InspectResultGroup.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class InspectResultGroup + { + public string barcode { get; set; } + public string side { get; set; } + public string position { get; set; } + public string stationNo { get; set; } + public string workClass { get; set; } + public string productInfo { get; set; } + public string productOption { get; set; } + public string inspectResult_1 { get; set; } + public string damnPosition_1 { get; set; } + public string reason_1 { get; set; } + public string createTime_1 { get; set; } + + public string inspectResult_2 { get; set; } + public string damnPosition_2 { get; set; } + public string reason_2 { get; set; } + public string createTime_2 { get; set; } + + public string inspectResult_3 { get; set; } + public string damnPosition_3 { get; set; } + public string reason_3 { get; set; } + public string createTime_3 { get; set; } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/InspectResultModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/InspectResultModel.cs new file mode 100644 index 0000000..68bc3f1 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/InspectResultModel.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class InspectResultModel + { + public string ID { get; set; } + + public string barcode { get; set; } + public string side { get; set; } + + public string stationNo { get; set; } + + public string workClass { get; set; } + public string inspectResult { get; set; } + + public string productInfo { get; set; } + public string productOption { get; set; } + public string InspectTimes { get; set; } + + public DateTime createTime { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/JsonDataModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/JsonDataModel.cs new file mode 100644 index 0000000..0a62b67 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/JsonDataModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class JsonDataModel where T : class, new() + { + public string total; + public List rows; + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/LineModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/LineModel.cs new file mode 100644 index 0000000..6fe0544 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/LineModel.cs @@ -0,0 +1,14 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class LineModel : tb_Line + { + public string PlaceName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/LogErrModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/LogErrModel.cs new file mode 100644 index 0000000..65f70ef --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/LogErrModel.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class LogErrModel + { + //主键 + public string ID { get; set; } + //错误内容 + public string ErrContent { get; set; } + //错误时间 + public DateTime ErrTime { get; set; } + //错误来源 + public string ErrSource { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/LogSysModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/LogSysModel.cs new file mode 100644 index 0000000..58b567c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/LogSysModel.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class LogSysModel + { //主键 + public string ID { get; set; } + //内容 + public string SysContent { get; set; } + //时间 + public DateTime CreateTime { get; set; } + //来源 + public string SysSource { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/OperationModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/OperationModel.cs new file mode 100644 index 0000000..17f5f0a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/OperationModel.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class OperationModel + { + /// + /// ID + /// + public string OperatorID { get; set; } + + /// + /// 工位ID + /// + public string StationID { get; set; } + + + /// + /// 操作员编号 + /// + public string OperatorNo { get; set; } + + /// + /// 操作员姓名 + /// + public string OperatorName { get; set; } + + /// + /// 操作员密码 + /// + public string OperatorPsw { get; set; } + + /// + /// 描述 + /// + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/OperatorModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/OperatorModel.cs new file mode 100644 index 0000000..d9653e2 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/OperatorModel.cs @@ -0,0 +1,14 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class OperatorModel : tb_Operator + { + public string StationNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/PaintBarCodeModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/PaintBarCodeModel.cs new file mode 100644 index 0000000..8f84bf7 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/PaintBarCodeModel.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class PaintBarCodeModel + { + public string ID { get; set; } + public string StationID { get; set; } + public string ProductID { get; set; } + public string OneBarCode { get; set; } + public string BarCode { get; set; } + public string StockNo { get; set; } + public string ColorDes { get; set; } + public string Side { get; set; } + public DateTime CreateTime { get; set; } + public DateTime PrintTime { get; set; } + + public string workClass { get; set; } + + public string ProductDate { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/Paint_BucketModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/Paint_BucketModel.cs new file mode 100644 index 0000000..132fb36 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/Paint_BucketModel.cs @@ -0,0 +1,17 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class Paint_BucketModel : tb_Paint_Bucket + { + public string PaintCode { get; set; } + public string PaintName { get; set; } + public string BucketCode { get; set; } + public string BucketName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/PartDetModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/PartDetModel.cs new file mode 100644 index 0000000..5582e8d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/PartDetModel.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.Model +{ + public class PartDetModel + { + public string GUID { get; set; } + + public string PartCode { get; set; } + + public string Site { get; set; } + + public string AbcClass { get; set; } + + public string LotControl { get; set; } + + public string Location { get; set; } + + public string LocationType { get; set; } + + public byte AutoMaticLotNumbers { get; set; } + + public string GUID { get; set; } + + public string GUID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/PartMstrModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/PartMstrModel.cs new file mode 100644 index 0000000..16daf5b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/PartMstrModel.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class PartMstrModel + { + public string GUID { set; get; } + + /// + /// 零件号 + /// + public string PartCode { set; get; } + public string Desc1 { set; get; } + public string Desc2 { set; get; } + public string Um { set; get; } + + /// + /// 产品类 1101:原材料;2000:塑件 + /// + public string ProdLine { set; get; } + + public string AddDate { set; get; } + + /// + /// 物料类型 + /// + public string PartType { set; get; } + + /// + /// 物料状态 AC:Active;New:New Item;PH:虚零件;SP:停用零件;HD:Hold 停用 + /// + public string Status { set; get; } + + /// + /// Q等级 + /// + public string Qgrade { set; get; } + + /// + /// 存货代码 + /// + public string InventoryCode { set; get; } + + public string UID { set; get; } + + public string Remark { set; get; } + + public string TaskID { set; get; } + + public string CommandType { get; set; } + + public string Domain { set; get; } + + public string Site { set; get; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/PartRecordModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/PartRecordModel.cs new file mode 100644 index 0000000..91ff5b4 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/PartRecordModel.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.Model +{ + public class PartRecordModel + { + public string ID { get; set; } + + public string PartNo { get; set; } + public string TaskID { get; set; } + public string CommandType { get; set; } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/PieDataModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/PieDataModel.cs new file mode 100644 index 0000000..2c4a695 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/PieDataModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class PieDataModel + { + public int value { get; set; } + public string name { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/PlaceModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/PlaceModel.cs new file mode 100644 index 0000000..5596ccb --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/PlaceModel.cs @@ -0,0 +1,14 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class PlaceModel : tb_Place + { + public string FactoryName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/PlasticModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/PlasticModel.cs new file mode 100644 index 0000000..a375028 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/PlasticModel.cs @@ -0,0 +1,16 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class PlasticModel : tb_Plastic + { + public string PartNo { get; set; } + + public string StationNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/ProductInjectionModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/ProductInjectionModel.cs new file mode 100644 index 0000000..fb7f745 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/ProductInjectionModel.cs @@ -0,0 +1,16 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.Model +{ + public class ProductInjectionModel: tb_Product_Injection + { + public string StationNo { get; set; } + public decimal RealCycle { get; set; } + public double JK_Weight { get; set; } + public double Waste_Weight { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/ProductModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/ProductModel.cs new file mode 100644 index 0000000..53fdce5 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/ProductModel.cs @@ -0,0 +1,14 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class ProductModel : tb_Product + { + public string ProductTypeName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/ProductOfInjectionModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/ProductOfInjectionModel.cs new file mode 100644 index 0000000..4828006 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/ProductOfInjectionModel.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class ProductOfInjectionModel + { + public string ID { get; set; } + + public string PlanID { get; set; } + public string StationID { get; set; } + + public string ProductDate { get; set; } + public string ClassName { get; set; } + public string StockNo { get; set; } + + public string PartNo { get; set; } + + public int ProductCount { get; set; } + public int BadCount { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/ProductTypeModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/ProductTypeModel.cs new file mode 100644 index 0000000..1f6c68f --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/ProductTypeModel.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + //产品类型 + public class ProductTypeModel + { + //产品类型id + public string ProductTypeID { get; set; } + //产品类型编号 + public string ProductTypeNo { get; set; } + //产品类型名称 + public string ProductTypeName { get; set; } + //产品类型描述 + public string Des { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/PunchAndStationModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/PunchAndStationModel.cs new file mode 100644 index 0000000..6b5471c --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/PunchAndStationModel.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.SqlServer.Server; + +namespace MESClassLibrary.Model +{ + public class PunchAndStationModel + { + public string ID { get; set; } + + public string StationNo { get; set; } + + public string PartNo1 { get; set; } + + public string ProductName1 { get; set; } + + public string PartNo2 { get; set; } + + public string ProductName2 { get; set; } + + public string ProductID1 { get; set; } + + public string ProductID2 { get; set; } + + public string ProductID3 { get; set; } + + public string ProductID4 { get; set; } + + public string ProductID5 { get; set; } + + + public string StationID { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/PunchAndStationModel1.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/PunchAndStationModel1.cs new file mode 100644 index 0000000..2543f07 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/PunchAndStationModel1.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.Model +{ + public class PunchAndStationModel1 + { + public string ID { get; set; } + + public string StationNo { get; set; } + + public string PartNo1 { get; set; } + + public string ProductName1 { get; set; } + + public string PartNo2 { get; set; } + + public string ProductName2 { get; set; } + + public string PartNo3 { get; set; } + + public string ProductName3 { get; set; } + + public string PartNo4 { get; set; } + + public string ProductName4 { get; set; } + + public string PartNo5 { get; set; } + + public string ProductName5 { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/PunchPlanModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/PunchPlanModel.cs new file mode 100644 index 0000000..3856772 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/PunchPlanModel.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.Model +{ + public class PunchPlanModel + { + public string ID { get; set; } + + public string DeviceNo { get; set; } + + public string ProductID { get; set; } + + public int PlanCount { get; set; } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/PunchRecordModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/PunchRecordModel.cs new file mode 100644 index 0000000..ee7797e --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/PunchRecordModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.Model +{ + public class PunchRecordModel + { + public string ID { get; set; } + + public string BarCode { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/PunchValueRecordModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/PunchValueRecordModel.cs new file mode 100644 index 0000000..57637cb --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/PunchValueRecordModel.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.Model +{ + public class PunchValueRecordModel + { + public string ID { get; set; } + + public string DeviceNo { get; set; } + + public string Address { get; set; } + + public string ItemValue { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/QualifiedDayModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/QualifiedDayModel.cs new file mode 100644 index 0000000..b55869d --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/QualifiedDayModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class QualifiedDayModel + { + public List categories { get; set; } + public List QualifiedData { get; set; } + public List TargetData { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/QualifiedMonthModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/QualifiedMonthModel.cs new file mode 100644 index 0000000..953d7ac --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/QualifiedMonthModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class QualifiedMonthModel + { + public List categories { get; set; } + public List QualifiedData { get; set; } + public List TargetData { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/RecordModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/RecordModel.cs new file mode 100644 index 0000000..9da13de --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/RecordModel.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.Model +{ + public class RecordModel + { + public string ID { get; set; } + + public string PartNo1 { get; set; } + + public string PartNo2 { get; set; } + + public string BoxNo { get; set; } + + public DateTime CreateTime1 { get; set; } + + public DateTime CreateTime2 { get; set; } + + public int Flag { get; set; } + + public int Type { get; set; } + + public string OrderNo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/SelectModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/SelectModel.cs new file mode 100644 index 0000000..7138371 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/SelectModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class SelectModel + { + public string valueField { get; set; } + public string textField { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/StationModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/StationModel.cs new file mode 100644 index 0000000..e025e9a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/StationModel.cs @@ -0,0 +1,14 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class StationModel : tb_Station + { + public string LineName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/StockInModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/StockInModel.cs new file mode 100644 index 0000000..e02f57b --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/StockInModel.cs @@ -0,0 +1,15 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class StockInModel : tb_StockIn + { + public string workClass { get; set; } + public string productInfo { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/Sys_Buttons.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/Sys_Buttons.cs new file mode 100644 index 0000000..c086a14 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/Sys_Buttons.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class Sys_Buttons + { + /// + /// + /// + public Guid BtnID { get; set; } + + /// + /// + /// + public string BtnName { get; set; } + + /// + /// + /// + public string ItemPic { get; set; } + + /// + /// + /// + public Guid PowerID { get; set; } + + /// + /// + /// + public Guid MenuID { get; set; } + + /// + /// + /// + public string MenuName { get; set; } + + /// + /// + /// + public string IsEnabled { get; set; } + + /// + /// + /// + public string BtnCode { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/Sys_NavMenuInfo.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/Sys_NavMenuInfo.cs new file mode 100644 index 0000000..2f1e584 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/Sys_NavMenuInfo.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class Sys_NavMenuInfo + { + /// + /// 子菜单 + /// + private List _sys_navMenu; + public List SubNavMenuList + { + get + { + if (_sys_navMenu == null) + _sys_navMenu = new List(); + return _sys_navMenu; + } + set + { + _sys_navMenu = value; + } + } + + /// + /// 菜单编号 + /// + public Guid MenuID { get; set; } + + /// + /// 菜单名称 + /// + public string MenuName { get; set; } + + /// + /// 连接地址 + /// + public string URLStr { get; set; } + + /// + /// 项目图标 + /// + public string ItemPic { get; set; } + + /// + /// 权限点名称 + /// + public Guid PowerID { get; set; } + + /// + /// 父结点编号 + /// + public Guid ParentMenuID { get; set; } + + /// + /// + /// + public string IsEnabled { get; set; } + + /// + /// 排序 + /// + public string OrderNum { get; set; } + + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/TESBomModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/TESBomModel.cs new file mode 100644 index 0000000..0b07626 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/TESBomModel.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class TESBomModel + { + public string ParentPart { get; set; } + + public string ComponentPart { get; set; } + + public string Reference { get; set; } + + public string StartEffective { get; set; } + + public string QuantityPer { get; set; } + + public string StructureType { get; set; } + + public string EndEffective { get; set; } + + public string Remarks { get; set; } + + public string Scrap { get; set; } + + public string LeadTimeOffset { get; set; } + + public string Operation { get; set; } + + public string SequenceNumber { get; set; } + + public string FporecastPercent { get; set; } + + public string OptionGroup { get; set; } + + public string Process { get; set; } + + public string GUID { get; set; } + + public string UID { get; set; } + + public string CreateUser { get; set; } + + public string CreateTime { get; set; } + + public string Remark { get; set; } + + public string TaskID { get; set; } + + public string CommandType { get; set; } + + public string DataID { get; set; } + + public string Domain { get; set; } + + public string Site { get; set; } + + public int Flag { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/TESPartDetModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/TESPartDetModel.cs new file mode 100644 index 0000000..05cd1f3 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/TESPartDetModel.cs @@ -0,0 +1,143 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.Model +{ + public class TESPartDetModel + { + public string GUID { get; set; } + + public string PartCode { get; set; } + + public string Site { get; set; } + + public string AbcClass { get; set; } + + public string LotControl { get; set; } + + public string Location { get; set; } + + public string LocationType { get; set; } + + public string AutoMaticLotNumbers { get; set; } + + public int AverageInterval { get; set; } + + public int CycleCountInterval { get; set; } + + public int ShelfLife { get; set; } + + public string KeyPart { get; set; } + + public string PoReceiptStatus { get; set; } + + public string RctPoActive { get; set; } + + public string WoReceiptStatus { get; set; } + + public string RctWoActive { get; set; } + + public string MemoOrderType { get; set; } + + public string MasterSchedule { get; set; } + + public string PlanOrders { get; set; } + + public int TimeFence { get; set; } + + public string OrderPolicy { get; set; } + + public decimal OrderQuantity { get; set; } + + public int OrderPeriod { get; set; } + + public decimal SafetyStock { get; set; } + + public decimal SafetyTime { get; set; } + + public decimal ReorderPoint { get; set; } + + public string PlanningRev { get; set; } + + public string IssuePolicy { get; set; } + + public string BuyerPlanner { get; set; } + + public string Supplier { get; set; } + + public string PoSite { get; set; } + + public string PurMfg { get; set; } + + public string ConfigurationType { get; set; } + + public string InspectionLocation { get; set; } + + public string InspectionRequired { get; set; } + + public string InspectionLeadTime { get; set; } + + public int CumulativeLeadTime { get; set; } + + public int ManufacturingLedaTime { get; set; } + + public int PurchaseLeadTime { get; set; } + + public string AtpEnforcementLevel { get; set; } + + public string FamilyATP { get; set; } + + public int AtpHorizon { get; set; } + + public string RunSeq1 { get; set; } + + public string RunSeq2 { get; set; } + + public string Phantom { get; set; } + + public decimal MinimumOrder { get; set; } + + public decimal MaximumOrder { get; set; } + + public decimal OrderMultiple { get; set; } + + public string OperationBasedYield { get; set; } + + public decimal YieldPercent { get; set; } + + public string RunTime { get; set; } + + public decimal SetupTime { get; set; } + + public string EmtType { get; set; } + + public string AutomaticEmtProcessing { get; set; } + + public string NetWorkCode { get; set; } + + public string RoutingCode { get; set; } + + public string BomFormulaCode { get; set; } + + public string ReplenishmentMethod { get; set; } + + public int UID { get; set; } + + public string CreateUser { get; set; } + + public DateTime CreateTime { get; set; } + + public string Remark { get; set; } + + public string TaskID { get; set; } + + public string CommandType { get; set; } + + public string DataID { get; set; } + + public string Domain { get; set; } + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/TreeModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/TreeModel.cs new file mode 100644 index 0000000..6139a13 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/TreeModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class TreeModel + { + public string id { get; set; } + public string text { get; set; } + public string state { get; set; } + public List children { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/UserModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/UserModel.cs new file mode 100644 index 0000000..ab2b52a --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/UserModel.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary.Model +{ + public class UserModel : BasicModel + { + public string Username { get; set; } + public string Password { get; set; } + public string TrueName { get; set; } + public string FaceURL { get; set; } + public string RoleID { get; set; } + public string CompanyPost { get; set; } + public string ContactWay { get; set; } + public string RoleName { get; set; } + public string RoleJurisdiction { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/tb_Plan_247Model.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/tb_Plan_247Model.cs new file mode 100644 index 0000000..71be151 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/tb_Plan_247Model.cs @@ -0,0 +1,13 @@ +using MESClassLibrary.EFModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MESClassLibrary.Model +{ + public class tb_Plan_247Model: tb_Plan_247 + { + public string PartName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Model/tb_Plan_PunchModel.cs b/SjMes/PunchAssemble/MESClassLibrary/Model/tb_Plan_PunchModel.cs new file mode 100644 index 0000000..a44e594 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Model/tb_Plan_PunchModel.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using MESClassLibrary.EFModel; + +namespace MESClassLibrary.Model +{ + public class tb_Plan_PunchModel:tb_Plan_Punch + { + public string PartName { get; set; } + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/Properties/AssemblyInfo.cs b/SjMes/PunchAssemble/MESClassLibrary/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9025a30 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("MESClassLibrary")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MESClassLibrary")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("867989d8-6837-41dc-9bf1-4658f5d6cfef")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SjMes/PunchAssemble/MESClassLibrary/Tool.cs b/SjMes/PunchAssemble/MESClassLibrary/Tool.cs new file mode 100644 index 0000000..48f7225 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/Tool.cs @@ -0,0 +1,240 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; + +namespace MESClassLibrary +{ + public class Tool + { + public static string MD5encryption(string password) + { + try + { + if (!string.IsNullOrWhiteSpace(password)) + { + byte[] result = Encoding.Default.GetBytes(password); //tbPass为输入密码的文本框 + MD5 md5 = new MD5CryptoServiceProvider(); + byte[] output = md5.ComputeHash(result); + return BitConverter.ToString(output).Replace("-", ""); + } + else + { + return null; + } + + } + catch (Exception) + { + return null; + } + + + } + + /// + /// 算法偏移量 + /// + const string m_IV = "12345678"; + + /// + /// 功能描述:根据输入的密钥生成8位密钥 + /// 作  者: 爱给模板网 2gei.cn + /// 创建日期:2015-07-20 17:25:26 + /// + /// strkey + /// 8位密钥 + private static string GetKey(string strkey) + { + if (string.IsNullOrEmpty(strkey)) + { + strkey = "InfoColl"; + } + if (strkey.Length % 8 == 0) + { + return strkey; + } + else + { + return GetKey(strkey + "0"); + } + } + + /// + /// 功能描述:加密字符串 + /// 作  者: 爱给模板网 2gei.cn + /// 创建日期:2015-07-20 17:18:31 + /// 任务编号: + /// + /// 原字符串 + /// 密钥 + /// 加密后的字符串 + public static string Encrypt(string strSourceString, string strKey) + { + strKey = GetKey(strKey); + byte[] btKey = Encoding.UTF8.GetBytes(strKey); + + byte[] btIV = Encoding.UTF8.GetBytes(m_IV); + + DESCryptoServiceProvider des = new DESCryptoServiceProvider(); + + using (MemoryStream ms = new MemoryStream()) + { + try + { + byte[] inData = Encoding.UTF8.GetBytes(strSourceString); + using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIV), CryptoStreamMode.Write)) + { + cs.Write(inData, 0, inData.Length); + + cs.FlushFinalBlock(); + } + + return Convert.ToBase64String(ms.ToArray()); + } + catch + { + return strSourceString; + } + } + } + + /// + /// 功能描述:解密字符串 + /// 作  者: 爱给模板网 2gei.cn + /// 创建日期:2015-07-20 17:18:49 + /// 任务编号: + /// + /// 原字符串 + /// 密钥 + /// 解密后的字符串 + public static string Decrypt(string strEncryptedString, string strKey) + { + strKey = GetKey(strKey); + byte[] btKey = Encoding.UTF8.GetBytes(strKey); + + byte[] btIV = Encoding.UTF8.GetBytes(m_IV); + + DESCryptoServiceProvider des = new DESCryptoServiceProvider(); + + using (MemoryStream ms = new MemoryStream()) + { + try + { + byte[] inData = Convert.FromBase64String(strEncryptedString); + using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIV), CryptoStreamMode.Write)) + { + cs.Write(inData, 0, inData.Length); + + cs.FlushFinalBlock(); + } + + return Encoding.UTF8.GetString(ms.ToArray()); + } + catch + { + return strEncryptedString; + } + } + } + + /// + /// DataTable转List + /// lx 2017-06-27 + /// + /// + /// + /// + public static IList ConvertTo(DataTable table) + { + if (table == null) + { + return null; + } + + List rows = new List(); + + foreach (DataRow row in table.Rows) + { + rows.Add(row); + } + + return ConvertTo(rows); + } + + public static IList ConvertTo(IList rows) + { + IList list = null; + + if (rows != null) + { + list = new List(); + + foreach (DataRow row in rows) + { + T item = CreateItem(row); + list.Add(item); + } + } + + return list; + } + + public static T CreateItem(DataRow row) + { + T obj = default(T); + if (row != null) + { + obj = Activator.CreateInstance(); + + foreach (DataColumn column in row.Table.Columns) + { + PropertyInfo prop = obj.GetType().GetProperty(column.ColumnName); + try + { + object value = row[column.ColumnName]; + prop.SetValue(obj, value, null); + } + catch + { //You can log something here + //throw; + } + } + } + + return obj; + } + public static D Mapper(S s) + { + D d = Activator.CreateInstance(); + try + { + var Types = s.GetType();//获得类型 + var Typed = typeof(D); + foreach (PropertyInfo sp in Types.GetProperties())//获得类型的属性字段 + { + foreach (PropertyInfo dp in Typed.GetProperties()) + { + if (dp.Name == sp.Name)//判断属性名是否相同 + { + dp.SetValue(d, sp.GetValue(s, null), null);//获得s对象属性的值复制给d对象的属性 + } + } + } + } + catch (Exception ex) + { + throw ex; + } + return d; + } + + + + } +} diff --git a/SjMes/PunchAssemble/MESClassLibrary/packages.config b/SjMes/PunchAssemble/MESClassLibrary/packages.config new file mode 100644 index 0000000..e0f3c53 --- /dev/null +++ b/SjMes/PunchAssemble/MESClassLibrary/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/App.config b/SjMes/PunchAssemble/PunchAndWeld/App.config new file mode 100644 index 0000000..4f1b765 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/App.config @@ -0,0 +1,53 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://10.60.101.10:8013/WMSWebService.asmx + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/AutoUpdater.cs b/SjMes/PunchAssemble/PunchAndWeld/AutoUpdater.cs new file mode 100644 index 0000000..900ccae --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/AutoUpdater.cs @@ -0,0 +1,134 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Reflection; +using System.Text; +using System.Windows.Forms; +using System.Xml; + +namespace PunchAndWeld +{ + public class AutoUpdater + { + private string _serverUrl; + private string _softwareName; + private string _newVersion; + private string _filePath; + private string _fileName; + private string _lastUpdateTime; + private string _desc; + + public bool CheckUpdateLoad(string serverUrl, string updateXmlFileName) + { + bool result = false; + _serverUrl = serverUrl; + try + { + if (CheckUpdate(serverUrl, updateXmlFileName)) + { + var sb = new StringBuilder(); + sb.AppendLine("当前版本:" + Assembly.LoadFrom(_softwareName).GetName().Version); + sb.AppendLine("检查到新版本:" + _newVersion); + sb.AppendLine("更新时间:" + _lastUpdateTime); + sb.AppendLine("更新说明:" + _desc); + sb.AppendLine(); + sb.AppendLine("是否更新?"); + //var form = new FormFoundUpdate(sb.ToString()); + DialogResult result1 = MessageBox.Show("是否更新程序!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + if (result1 == DialogResult.Yes) + { + var path = Application.StartupPath; + var args = new StringBuilder(); + args.Append("\'" + _serverUrl + "\',"); + args.Append("\'" + _softwareName + "\',"); + args.Append("\'" + _newVersion + "\',"); + args.Append("\'" + _filePath + "\',"); + args.Append("\'" + _fileName + "\',"); + args.Append("\'" + _lastUpdateTime + "\',"); + args.Append("\'" + _desc + "\',"); + //args.Append("\'{_softwareName}\',"); + //args.Append("\'{_newVersion}\',"); + //args.Append("\'{_filePath}\',"); + //args.Append("\'{_fileName}\',"); + //args.Append("\'{_lastUpdateTime}\',"); + //args.Append("\'{_desc}\'"); + + var process = new System.Diagnostics.Process + { + StartInfo = + { + FileName = "Updater.exe", + WorkingDirectory = path, + CreateNoWindow = true, + Arguments = args.ToString(), + } + }; + process.Start(); + result = true; + } + } + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + result = false; + } + return result; + } + + private bool CheckUpdate(string serverUrl, string updateXmlFileName) + { + + var fullFileName = serverUrl + updateXmlFileName; + try + { + var wc = new WebClient(); + var stream = wc.OpenRead(fullFileName); + //http://127.0.0.1/PcUpdate.xml + var xmlDoc = new XmlDocument(); + if (stream != null) xmlDoc.Load(stream); + XmlNode rootNode = xmlDoc.SelectSingleNode("AutoUpdate"); + if (rootNode != null) + foreach (XmlNode node in rootNode.ChildNodes.Cast().Where(node => node.Name == "SoftWare")) + { + if (node.Attributes != null) _softwareName = node.Attributes["Name"].Value; + foreach (XmlNode n in node.ChildNodes) + { + switch (n.Name) + { + case "Version": + _newVersion = n.InnerText; + break; + case "FilePath": + _filePath = n.InnerText; + break; + case "FileName": + _fileName = n.InnerText; + break; + case "LastUpdateTime": + _lastUpdateTime = n.InnerText; + break; + case "Desc": + _desc = n.InnerText; + break; + } + } + } + + + Version newVersion = new Version(_newVersion); + Version oldVersion = Assembly.LoadFrom(_softwareName).GetName().Version; + var tm = oldVersion.CompareTo(newVersion); + + var hasUpdate = tm < 0; + return hasUpdate; + } + catch (Exception ex) + { + throw new Exception("更新出现错误,请确认网络连接无误后重试!\n{fullFileName}\n{ex.Message}"); + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/DataSouce/ProScreenFunc.cs b/SjMes/PunchAssemble/PunchAndWeld/DataSouce/ProScreenFunc.cs new file mode 100644 index 0000000..cb6d1db --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/DataSouce/ProScreenFunc.cs @@ -0,0 +1,3446 @@ +using DBUtility; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Reflection; +using System.Text; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.EFModel; +using System.Xml; +using static System.Windows.Forms.AxHost; + +namespace PunchAndWeld.DataSouce +{ + public class ProScreenFunc + { + public static DataTable GetResDataTable(string sql) + { + DataTable res = new DataTable(); + try + { + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + throw ex; + } + } + + public static DataTable GetProScreen(string stationNo) + { + DataTable res = new DataTable(); + try + { + string sql = @" + select top 1 a.ID, d.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.CompleteCount,a.BadCount, c.ProductID1, c.ProductID2, b.IsHigh + from tb_Plan_Punch a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_PunchAndStation c + on b.ProductID = c.ProductID1 + left join tb_Station d + on c.StationID = d.StationID + where d.StationNo = '" + stationNo +@"' + and IsFinish = 1 + order by CreateTime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (res == null || res.Rows.Count < 1) + { + sql = @" + select top 1 a.ID, d.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.CompleteCount,a.BadCount, c.ProductID1, c.ProductID2, b.IsHigh + from tb_Plan_Punch a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_PunchAndStation c + on b.ProductID = c.ProductID1 + left join tb_Station d + on c.StationID = d.StationID + where d.StationNo = '" + stationNo + @"' + and IsFinish = 0 + order by CreateTime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + if (res == null || res.Rows.Count < 1) + { + sql = @" + select top 1 a.ID, d.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.CompleteCount,a.BadCount, c.ProductID1, c.ProductID2, b.IsHigh + from tb_Plan_Punch a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_PunchAndStation c + on b.ProductID = c.ProductID1 + left join tb_Station d + on c.StationID = d.StationID + where d.StationNo = '" + stationNo + @"' + and IsFinish = 2 + order by CreateTime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static DataTable GetProScreenPlan(string id, string stationNo, string plan) + { + DataTable res = new DataTable(); + try + { + if (plan == "下一计划") + { + #region 查询当前计划时间 + + string time = ""; + string sql; + string sqll = @" select CreateTime from tb_Plan_Punch where ID = '" + id + @"' "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sqll, null); + if (dt != null && dt.Rows.Count > 0) + { + time = dt.Rows[0][0].ToString(); + time = Tools.NumericParse.StringToDateTime(time).Value.AddSeconds(1).ToString("yyyy-MM-dd HH:mm:ss"); + } + + #endregion + + #region 查询下一计划 + + sql = @" + select top 1 a.ID, d.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.CompleteCount,a.BadCount, c.ProductID1, c.ProductID2, b.IsHigh + from tb_Plan_Punch a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_PunchAndStation c + on b.ProductID = c.ProductID1 + left join tb_Station d + on c.StationID = d.StationID + where d.StationNo = '" + stationNo + @"' + and IsFinish <> 3 + and a.CreateTime > '" + time + @"' + order by CreateTime asc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + + #endregion + } + else if (plan == "上一计划") + { + #region 查询当前计划时间 + + string time = ""; + string sql; + string sqll = @" select CreateTime from tb_Plan_Punch where ID = '" + id + @"' "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sqll, null); + if (dt != null && dt.Rows.Count > 0) + { + time = dt.Rows[0][0].ToString(); + //time = Tools.NumericParse.StringToDateTime(time).Value.AddSeconds(-1).ToString("yyyy-MM-dd HH:mm:ss"); + } + + #endregion + + #region 查询上一计划 + + sql = @" + select top 1 a.ID, d.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.CompleteCount,a.BadCount, c.ProductID1, c.ProductID2, b.IsHigh + from tb_Plan_Punch a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_PunchAndStation c + on b.ProductID = c.ProductID1 + left join tb_Station d + on c.StationID = d.StationID + where d.StationNo = '" + stationNo + @"' + and IsFinish <> 3 + and a.CreateTime < '" + time + @"' + order by CreateTime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + + #endregion + + } + else if (plan == "当前计划") + { + string sql = @" + select a.ID, d.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.CompleteCount,a.BadCount, c.ProductID1, c.ProductID2, b.IsHigh + from tb_Plan_Punch a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_PunchAndStation c + on b.ProductID = c.ProductID1 + left join tb_Station d + on c.StationID = d.StationID + where a.ID='"+ id +@"' + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static void GetCode(string code, out string stockNo, out string batchNo, out string partNo) + { + + stockNo = ""; + batchNo = ""; + partNo = ""; + try + { + if (code.Contains(".") == false) + { + //一维码 + if (code.Length > 9) + { + stockNo = code.Substring(0, 10); + batchNo = code.Substring(10, 6); + } + } + else + { + //二维码 + string[] strs = code.Split(';'); + if (strs.Length > 0) + { + string str = strs[0]; + string[] props = str.Split('.'); + if (props.Length >= 2) + { + partNo = props[0]; + batchNo = props[1]; + } + } + } + LogHelper.WriteSysLogBase("[入参]:code=" + code + "; [出参:]stockNo=" + stockNo + ",batchNo=" + batchNo + ",partNo=" + partNo, MethodBase.GetCurrentMethod().Name); + } + catch (Exception ex) + { + LogHelper.WriteLogManager(ex); + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + public static string GetProductID(string barcode) + { + string res = ""; + try + { + LogHelper.WriteSysLogBase("[一码到底]扫入条码:"+barcode, MethodBase.GetCurrentMethod().Name); + + barcode = UniteBarCodeToOne(barcode); + string sql = @" select ProductID + from tb_Product + where partNo = ( select top 1 paintCode from tb_StockIn where barcode = '" + barcode + @"' ) "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + res = aa.ToString(); + else + { + string sql1 = @" select top 1 productInfo + from tb_InspectResult + where barcode = '"+ barcode +@"' + order by createtime desc "; + object bb = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql1, null); + if (bb != null) + { + string color = ""; + string colorInfo = bb.ToString(); + string[] colors = colorInfo.Split(','); + if (colors.Length >= 2) + { + color = colors[2]; + + string sql2 = @" select partNo from tb_Product where stockNo = '" + barcode.Substring(0, 10) + @"' "; + object cc = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql2, null); + if (cc != null) + { + string partNo = cc.ToString(); + string paintCode = partNo.Replace("-P","") + "-" + color; + string sql3 = @" select ProductID + from tb_Product + where partNo = '" + paintCode + @"' "; + object dd = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql3, null); + if (dd != null) + { + res = dd.ToString(); + } + } + } + } + else + { + + string partNo = "",stockNo=""; + + if (barcode.Contains('/')) + { + string[] aastr = barcode.Split('/'); + partNo = aastr[0]; + } + else if (barcode.Contains('.')) + { + string[] aastr = barcode.Split('.'); + partNo = aastr[0]; + } + else if (barcode.Length==20) + { + stockNo = barcode.Substring(0, 10); + } + else + { + partNo = barcode; + } + + string sql3 = ""; + if (partNo != "") + { + sql3 = @"select ProductID + from tb_Product + where partNo = '" + partNo + @"'"; + } + else + { + sql3 = @"select ProductID + from tb_Product + where StockNo = '" + stockNo + @"'"; + } + + object dd = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql3, null); + if (dd != null) + { + res = dd.ToString(); + } + } + } + LogHelper.WriteSysLogBase("[一码到底]传出ProductID2:" + res, MethodBase.GetCurrentMethod().Name); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static string GetProductID(string stockNo, string partNo) + { + string res = ""; + try + { + string sql = " select ProductID from tb_Product where StockNo = '" + stockNo + "' or PartNo = '" + partNo + "' "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + res = aa.ToString(); + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static string GetProductIDByPartNo(string partNo) + { + string res = ""; + try + { + string sql = " select ProductID from tb_Product where PartNo = '" + partNo + "' "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + res = aa.ToString(); + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static string TransToBarCodeOne(string barcode) + { + string res = barcode; + try + { + string sql = @" + SELECT TOP 1 OneBarCode FROM tb_BarCode WHERE BarCode = '" + barcode + @"' + "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + res = aa.ToString(); + } + else + { + string sql2 = @" SELECT TOP 1 OneBarCode FROM [10.60.101.60].[BBMPT1].[dbo].[v_Code] where BarCode = '" + barcode + @"' "; + object bb = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql2, null); + if (bb != null) + { + res = bb.ToString(); + } + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + public static string UniteBarCodeToOne(string barcode) + { + string res = barcode; + if (!string.IsNullOrWhiteSpace(barcode)) + { + if (barcode.Contains(".")) + { + res = TransToBarCodeOne(barcode); + } + } + return res; + } + + public static bool CheckPartAndProduct(string pid1, string pid2) + { + bool res = false; + try + { + string sql = @" select * from tb_PunchAndStation where ProductID1 = '" + pid1 + @"' and ProductID2 = '"+ pid2 +@"' "; + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + else + { + res = false; + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static int AddCompleteCount(string ID) + { + int res = 0; + try + { + string sql = " update tb_Plan_Punch set CompleteCount = CompleteCount + 1 where ID = '"+ ID +"' "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static int SubCompleteCount(string ID) + { + int res = 0; + try + { + string sql = " update tb_Plan_Punch set CompleteCount = CompleteCount - 1 where ID = '" + ID + "' "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static int AddBadCount(string ID) + { + int res = 0; + try + { + string sql = " update tb_Plan_Punch set BadCount = BadCount + 1 where ID = '" + ID + "' "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static int SubBadCount(string ID) + { + int res = 0; + try + { + string sql = " update tb_Plan_Punch set BadCount = BadCount - 1 where ID = '" + ID + "' "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static void SetPlanComplete(string ID) + { + try + { + string sql = @"declare @a int; + declare @b int; + declare @ID varchar(50); + set @ID = '"+ ID +@"'; + set @a = (select orderCount from tb_Plan_Punch where ID = @ID); + set @b = (select CompleteCount from tb_Plan_Punch where ID = @ID); + if @a <= @b + begin update tb_Plan_Punch set IsFinish = 3 where ID = @ID + end;"; + SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + public static bool CheckPlanCompleted(string ID) + { + bool res = false; + try + { + string sql = @" + select IsFinish from tb_Plan_Punch where ID = '"+ ID +@"' + "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + string bb = aa.ToString(); + if (bb == "3") + { + res = true; + } + else + { + res = false; + } + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static int SavePartAndProduct(string barcode, string BcpID, string ZcID, string OrderNo, string WorkClass, string planID,string stationId,string description) + { + int res = 0; + try + { + string sql = @" + INSERT INTO [dbo].[tb_Punch_Code_Record] + ([ID] + ,[barcode] + ,[BcpID] + ,[ZcID] + ,[OrderNo] + ,[WorkClass] + ,[CreateTime], PlanID,StationId,StationDescription) + VALUES + ((select newid()) + ,'" + barcode + @"' + ,'" + BcpID +@"' + ,'" + ZcID + @"' + ,'" + OrderNo + @"' + ,'" + WorkClass + @"' + ,(select getdate()), '" + planID + @"','"+ stationId + @"','"+ description + @"') + "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static int SavePartAndProduct1(string barcode, string BcpID, string ZcID, string OrderNo, string WorkClass, string planID, string SerialNo,string stationID,string description) + { + int res = 0; + try + { + string sql = @" + INSERT INTO [dbo].[tb_Punch_Code_Record] + ([ID] + ,[barcode] + ,[BcpID] + ,[ZcID] + ,[OrderNo] + ,[WorkClass] + ,[CreateTime], PlanID,SerialNo,StationId,StationDescription) + VALUES + ((select newid()) + ,'" + barcode + @"' + ,'" + BcpID + @"' + ,'" + ZcID + @"' + ,'" + OrderNo + @"' + ,'" + WorkClass + @"' + ,(select getdate()), '" + planID + @"','" + SerialNo + @"','"+ stationID + @"','"+ description + @"') + "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static int SavePartAndProduct2(string barcode, string BcpID, string ZcID, string OrderNo, string WorkClass, string planID, string SerialNo,string stationId, string description) + { + int res = 0; + try + { + string sql = @" + INSERT INTO [dbo].[tb_Punch_Code_Record] + ([ID] + ,[barcode] + ,[BcpID] + ,[ZcID] + ,[OrderNo] + ,[WorkClass] + ,[CreateTime], PlanID,SerialNo,StationId,StationDescription) + VALUES + ((select newid()) + ,'" + barcode + @"' + ,'" + BcpID + @"' + ,'" + ZcID + @"' + ,'" + OrderNo + @"' + ,'" + WorkClass + @"' + ,(select getdate()), '" + planID + @"','" + SerialNo + @"','"+ stationId + @"','"+ description + @"') + "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static int CompleteQty(string stationId) + { + int res = 0; + try + { + string time1 = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00"; + string time2 = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59"; + string sql= @"select count(ID) as qty from tb_Punch_Code_Record WITH(NOLOCK) where StationId='" + stationId + @"' and CreateTime between '"+ time1+@"' and '"+ time2 +@"'"; + DataTable dt= SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt!=null && dt.Rows.Count>0) + { + res = int.Parse(dt.Rows[0]["qty"].ToString()); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static int SavePartAndProductBF(string barcode, string BcpID, string ZcID, string OrderNo, string WorkClass, string planID) + { + int res = 0; + try + { + string sql = @" + INSERT INTO [dbo].[tb_Punch_Code_Record_BF] + ([ID] + ,[barcode] + ,[BcpID] + ,[ZcID] + ,[OrderNo] + ,[WorkClass] + ,[CreateTime], PlanID) + VALUES + ((select newid()) + ,'" + barcode + @"' + ,'" + BcpID + @"' + ,'" + ZcID + @"' + ,'" + OrderNo + @"' + ,'" + WorkClass + @"' + ,(select getdate()), '" + planID + @"') + "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static DataTable QueryPlanDetail(string starttime, string endtime, string stationNo) + { + DataTable res = new DataTable(); + try + { + string sql = @" + select * from + ( + select a.IsFinish, a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.CompleteCount,a.BadCount,a.CreateTime,a.ID + from tb_Plan_Punch a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_PunchAndStation c + on b.ProductID = c.ProductID1 + left join tb_Station d + on c.StationID = d.StationID + where a.CreateTime >= '" + starttime + @" 00:00:00' and a.CreateTime <= '" + endtime + @" 23:59:59' + and c.stationID = ( select StationID from tb_Station where StationNo = '" + stationNo + @"' ) + and IsFinish <> 3 + ) bb + order by CreateTime + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static string GetStation(string stationNo) + { + string res = ""; + try + { + string sql = @" select [des] from tb_Station where StationNo = '"+ stationNo +@"' "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + res = aa.ToString(); + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static string GetStationId(string stationNo) + { + string res = ""; + try + { + string sql = @" select StationID from tb_Station where StationNo = '" + stationNo + @"' "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + res = aa.ToString(); + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static int SaveZcCode(string barcode, string partNo) + { + int res = 0; + try + { + barcode = UniteBarCodeToOne(barcode); + string sql = @" update tb_StockIn set ZcCode = '" + partNo + "' where barcode = '"+ barcode +"' "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static OtherPart HaveOtherPart(string stationNo, string productID1) + { + OtherPart res = new OtherPart(); + res.productID3 = ""; + res.productID4 = ""; + res.productID5 = ""; + try + { + string sql = @" + select top 1 [ProductID3] + ,[ProductID4] + ,[ProductID5] + ,[ProductID9] + ,[ProductID10] + ,[ProductID11] + from tb_PunchAndStation + where StationID = ( select StationID from tb_Station where StationNo = '" + stationNo +@"' ) + and ProductID1 = '" + productID1 + @"' + order by CreateTine desc + "; + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + res.productID3 = dt.Rows[0]["ProductID3"].ToString(); + res.productID4 = dt.Rows[0]["ProductID4"].ToString(); + res.productID5 = dt.Rows[0]["ProductID5"].ToString(); + res.productID6 = dt.Rows[0]["ProductID9"].ToString(); + res.productID7 = dt.Rows[0]["ProductID10"].ToString(); + res.productID8 = dt.Rows[0]["ProductID11"].ToString(); + } + + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static bool HaveScan(string barcode) + { + bool res = false; + try + { + string sql = ""; + if (barcode.Substring(0, 2) != "22") + { + sql = @" + select * + from tb_Punch_Code_Record + where barcode = '" + barcode + @"' + "; + } + else + { + if (barcode.Substring(0, 10) == "2200000057" || barcode.Substring(0, 10) == "2200000058") + { + sql = @" + select * + from tb_Punch_Code_Record + where barcode = '" + barcode + @"' + "; + } + else + { + sql = @" select * from tb_StockIn where barcode = '" + barcode + "' and ZcCode is not null"; + } + } + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + + public static bool IsBad(string barcode) + { + bool res = false; + try + { + string sql = ""; + + sql = @" + select top 1 * + from tb_Punch_Code_Record2 + where barcode = '" + barcode + @"' order by createtime DESC + "; + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + if (dt.Rows[0]["isOK"].ToString() == "0") + { + res = true; + } + else + { + res = false; + } + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static string GetPartNoByStockNo(string stockNo) + { + string res = ""; + try + { + string sql = " select partNo from tb_Product where StockNo = '" + stockNo + "' "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + res = aa.ToString(); + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static string GetPlanIDByBarcode(string barcode) + { + string res = ""; + try + { + string sql = @" + select top 1 PlanID from tb_Punch_Code_Record where barcode = '" + barcode + @"' order by CreateTime desc + "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + res = aa.ToString(); + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static DataTable GetProScreenByPlanID(string planID) + { + DataTable res = new DataTable(); + try + { + string sql = @" + select top 1 a.ID, d.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.CompleteCount,a.BadCount, c.ProductID1, c.ProductID2 + from tb_Plan_Punch a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_PunchAndStation c + on b.ProductID = c.ProductID1 + left join tb_Station d + on c.StationID = d.StationID + where a.ID = '" + planID + @"' + "; + res = ProScreenFunc.GetResDataTable(sql); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static int SaveRecord2(string barcode, string isOK, string planID) + { + int res = 0; + try + { + string sql = @" + INSERT INTO tb_Punch_Code_Record2 + ([ID] + ,[barcode] + ,[isOK] + ,[planID] + ,[createtime]) + VALUES + ((select newid()) + ,'" + barcode + @"' + ,'" + isOK + @"' + ,'" + planID + @"' + ,(select getdate())) + "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static string[] GetSpecialStockNo() + { + string[] res = {""}; + try + { + string sql = @" select SpecialStockNo from tb_SpcialStockNo "; + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + res = new string[dt.Rows.Count]; + for (int i = 0; i < dt.Rows.Count; i++) + { + res[i] = dt.Rows[i][0].ToString().Trim(); + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static string[] GetSpcialNotFacStockNo() + { + string[] res = { "" }; + try + { + string sql = @" select NotFacStockNo from tb_SpcialNotFacStockNo "; + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + res = new string[dt.Rows.Count]; + for (int i = 0; i < dt.Rows.Count; i++) + { + res[i] = dt.Rows[i][0].ToString().Trim(); + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static string GetZcPartNo(string barcode) + { + string res = ""; + try + { + string sql = " select * from tb_Punch_Code_Record where barcode = '"+ barcode +"' "; + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + res = ""; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return ""; + } + + public static bool IsYaoYanBlack(string barcode) + { + bool res = false; + try + { + string sql = @" + SELECT * + FROM [BBMPT].[dbo].[tb_InspectResult] + where barcode = '"+ barcode +@"' + and productInfo like '曜岩黑%' + "; + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static bool IsFBC(string code, string text) + { + bool res = false; + try + { + if ((code.Contains("57") && text.Contains("0540-9197")) || (code.Contains("58") && text.Contains("0640-9197")) || (code.Contains("1230003138") && text.Contains("A2476904100")) || (code.Contains("1230003139") && text.Contains("A2476904200"))) + { + res = true; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static bool HaveInspect(string barcode) + { + bool res = false; + try + { + string sql = " select * from tb_InspectResult where barcode = '"+ barcode +"' "; + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static string GetCompleteCount(string ID) + { + string res = "0"; + try + { + string sql = @" + select CompleteCount + from tb_Plan_Punch WITH(NOLOCK) + where ID = '" + ID + @"' + "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + res = aa.ToString(); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static bool CanScan(string injectionPlanID) + { + bool res = true; + try + { + string sql = @" select CompleteCount,OrderCount from tb_Plan_Punch WITH (NOLOCK) where ID = '" + injectionPlanID + "' "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + int compCount = Tools.NumericParse.StringToInt(dt.Rows[0]["CompleteCount"].ToString()); + int planCount = Tools.NumericParse.StringToInt(dt.Rows[0]["OrderCount"].ToString()); + if (compCount >= planCount) + { + res = false; + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static bool HaveNotPrint(string stationId) + { + bool res = false; + try + { + string sql = @" SELECT ID from dbo.tb_Punch_Code_Record + where dbo.tb_Punch_Code_Record.StationId='" + stationId + @"' + and (isnull(ToVisual,1) =1 OR ISNULL(PrintTime,'') ='')"; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static DataTable NotPrintBarCode(string stationId) + { + string sql = @" SELECT top 1 barcode from dbo.tb_Punch_Code_Record + where dbo.tb_Punch_Code_Record.StationId='" + stationId + @"' + and (isnull(ToVisual,1) =1 OR ISNULL(PrintTime,'') ='') + ORDER BY CreateTime DESC "; + return SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + + public static DataTable GetGh(string barcode) + { + DataTable res = new DataTable(); + try + { + string sql = @" + select top 1 * from tb_Punch_Code_Record WITH (NOLOCK) where barcode = '" + barcode + @"' order by CreateTime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static DataTable GetBl(string barcode) + { + DataTable res = new DataTable(); + try + { + string sql = @" + select top 1 * + from tb_Punch_Code_Record2 WITH (NOLOCK) + where barcode = '" + barcode + @"' + and isOK = '0' + order by createtime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static DataTable GetHG_New(string barcode) + { + DataTable res = new DataTable(); + try + { + string sql = @" + select top 1 * + from tb_Punch_Code_Record2 WITH (NOLOCK) + where barcode = '" + barcode + @"' + and isOK = '1' + order by createtime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static ZcPrintLabel GetZcPrintLabel(string zcID) + { + ZcPrintLabel zl = new ZcPrintLabel(); + try + { + string sql = @" + select * + from tb_Product + where ProductID = '" + zcID + @"' + "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + zl.zcPartNo = dt.Rows[0]["PartNo"].ToString(); + zl.zcName = dt.Rows[0]["ProductName"].ToString(); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return zl; + } + + public static string GetPaintCode(string barcode) + { + string res = "0"; + try + { + string sql = @" + select top 1 paintCode from tb_StockIn where barcode = '" + barcode + @"' order by createTime desc + "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + res = aa.ToString(); + } + else + { + string sql1 = @"select top 1 productInfo from tb_InspectResult where barcode = '" + barcode + @"' ORDER BY createTime DESC"; + object aa1 = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql1, null); + if (aa1 != null) + { + string productInfo = aa1.ToString(); + if (!string.IsNullOrEmpty(productInfo)) + { + string[] bb = productInfo.Split(','); + string color = bb[2]; + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + GetCode(barcode, out stockNo, out batchNo, out partNo); + + res = partNo + "-" + color; + } + } + } + + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static DateTime GetPlanTime(string planID) + { + DateTime res = new DateTime(); + try + { + string sql = @" + select CreateTime from tb_Plan_Punch where ID = '" + planID + @"' + "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + res = Convert.ToDateTime(aa); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static DataTable HavePrint(string stationId) + { + DataTable dt = null; + try + { + // string sql = @"select top 1 r.*,s.StationNo from [dbo].[tb_Punch_Code_Record] r + // LEFT JOIN dbo.tb_PunchAndStation p + // ON r.ZcID=p.ProductID1 + // LEFT JOIN dbo.tb_Station s + // ON p.StationID=s.StationID + // WHERE r.ToVisual=0 and isNull(r.PrintTime,'')='' + // AND s.StationNo='" + stationNo + @"' order by ID"; + + // string sql = @"SELECT TOP (1) r.ID, r.barcode, r.BcpID, r.ZcID, r.OrderNo, r.WorkClass, r.CreateTime, r.PlanID, r.SerialNo, r.ToVisual, + // r.FinishTime, r.PrintTime, r.IsCheck, s.StationNo, dbo.tb_Product.PartNo, dbo.tb_Product.ProductName + //FROM dbo.tb_Punch_Code_Record AS r LEFT OUTER JOIN + // dbo.tb_Product ON r.ZcID = dbo.tb_Product.ProductID LEFT OUTER JOIN + // dbo.tb_PunchAndStation AS p ON r.ZcID = p.ProductID1 LEFT OUTER JOIN + // dbo.tb_Station AS s ON p.StationID = s.StationID + // WHERE r.ToVisual=1 and isNull(r.PrintTime,'')='' + // AND s.StationNo='" + stationNo + @"' order by r.CreateTime"; + //string sql = + // "select top 1 * from [dbo].[tb_Punch_Code_Record] where ToVisual=0 and isNull(PrintTime,'')='' order by ID "; + + + + //string sql = @"SELECT TOP (1) r.ID, r.barcode, r.BcpID, r.ZcID, r.OrderNo, r.WorkClass, r.CreateTime, r.PlanID, r.SerialNo, r.ToVisual, + // r.FinishTime, r.PrintTime, r.IsCheck, s.StationNo, dbo.tb_Product.PartNo, dbo.tb_Product.ProductName + // FROM dbo.tb_Punch_Code_Record AS r LEFT OUTER JOIN + // dbo.tb_Product ON r.ZcID = dbo.tb_Product.ProductID LEFT OUTER JOIN + // dbo.tb_PunchAndStation AS p ON r.ZcID = p.ProductID1 LEFT OUTER JOIN + // dbo.tb_Station AS s ON p.StationID = s.StationID + // WHERE (r.ToVisual=0 or isNull(r.PrintTime,'')='') + // AND s.StationNo='" + stationNo + @"' order by r.CreateTime desc"; + + string sql = @"SELECT TOP (1) r.ID, r.barcode, r.BcpID, r.ZcID, r.PlanID, r.SerialNo, r.ToVisual, + dbo.tb_Product.PartNo, dbo.tb_Product.ProductName + FROM dbo.tb_Punch_Code_Record AS r LEFT OUTER JOIN + dbo.tb_Product ON r.ZcID = dbo.tb_Product.ProductID + WHERE (r.ToVisual=0 and isNull(r.PrintTime,'')='') + AND r.StationId='" + stationId + @"' order by r.CreateTime desc"; + + dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return dt; + } + + public static int UpdatePrintTime(string ID) + { + int res = 0; + try + { + string sql = @" + update tb_Punch_Code_Record + set PrintTime=(select getdate()) + where ID='"+ID+@"' + "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + + } + return res; + } + + public static string SerialNo(string partNo, string batch) + { + string res = ""; + try + { + string temp_no = partNo + "." + batch; + string sql = @"select top 1 SerialNo from tb_Punch_Code_Record where SerialNo like '" + temp_no + + @"%' order by CreateTime desc"; + object dt=SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null) + { + res = dt.ToString(); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + throw ex; + } + + return res; + } + + public static bool IsPunch(string barCode,string stationNo) + { + bool res = false; + + try + { + string sql = @" + SELECT dbo.tb_Punch_Code_Record.ID + FROM dbo.tb_Station RIGHT OUTER JOIN + dbo.tb_PunchAndStation ON dbo.tb_Station.StationID = dbo.tb_PunchAndStation.StationID RIGHT OUTER JOIN + dbo.tb_Punch_Code_Record ON dbo.tb_PunchAndStation.ProductID1 = dbo.tb_Punch_Code_Record.ZcID + where dbo.tb_Punch_Code_Record.barcode='" + barCode + @"' and dbo.tb_Station.StationNo='"+ stationNo+@"' + "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static string GetPartNoByID(string id) + { + string res = ""; + try + { + string sql = @"select PartNo from tb_Product where ProductID ='"+ id +@"'"; + object dt = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null) + { + res = dt.ToString(); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static string GetPartNameByStock(string stockNo) + { + string res = ""; + try + { + string sql = @"select ProductName from tb_Product where StockNo ='" + stockNo + @"'"; + object dt = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null) + { + res = dt.ToString(); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static bool IsPack(string barCode) + { + bool res = false; + try + { + string sql = @"select ID from tb_Box_Record with (nolock) where BarCode='"+ barCode +@"' "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static DataTable ZCInfo(string barCode) + { + DataTable res = null; + + try + { + string sql = @"SELECT isnull(dbo.tb_Product.PackQty,0) as PackCount, dbo.tb_Product.ProductName, dbo.tb_Product.PartNo + FROM dbo.tb_Punch_Code_Record with (nolock) LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_Punch_Code_Record.ZcID = dbo.tb_Product.ProductID + where dbo.tb_Punch_Code_Record.barcode='" + barCode +@"'"; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static string boxNo(string barCode) + { + string res = ""; + + try + { + string sql = @"SELECT TOP 1 dbo.tb_Box_WheelBrow.BoxNo + FROM dbo.tb_Product LEFT OUTER JOIN + dbo.tb_Box_WheelBrow ON dbo.tb_Product.PartNo = dbo.tb_Box_WheelBrow.PartNo RIGHT OUTER JOIN + dbo.tb_Punch_Code_Record ON dbo.tb_Product.ProductID = dbo.tb_Punch_Code_Record.ZcID + where dbo.tb_Punch_Code_Record.barcode='"+ barCode+@"' + order by dbo.tb_Box_WheelBrow.CreateTime desc"; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = dt.Rows[0]["BoxNo"].ToString(); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static int HavePackCount(string boxNo) + { + int res = 0; + + try + { + string sql= @"select count(ID) as aa from dbo.tb_Box_Record with (nolock) where BoxNo='"+ boxNo + @"'"; + + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = int.Parse(dt.Rows[0]["aa"].ToString()); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static int AddBoxInfo(string boxNo, int flag, string partNo, string partName, string batch, + string validity, string validityDate) + { + int res = 0; + + try + { + string sql = @" insert into tb_Box_WheelBrow (BoxNo,Flag,PartNo,PartName,BatchNo,Validity,ValidityDate) values('"+ boxNo +@"', + "+flag +@",'"+ partNo + @"','" + partName + @"','" + batch + @"','" + validity + @"','" + validityDate + @"')"; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static int AddPackInfo(string barCode, string boxNo) + { + int res = 0; + + try + { + string sql = @"insert into tb_Box_Record (BarCode,BoxNo) values('" + barCode + @"','" + boxNo + @"')"; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static DataTable IsExsit(string boxNo) + { + DataTable res = null; + + try + { + string sql = @"select top 1 * from tb_Box_WheelBrow with (nolock) where BoxNo='" + boxNo + @"' order by CreateTime desc"; + res= SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static DataTable PackSum(string stationNo) + { + DataTable res = null; + try + { + string sql = ""; + if (stationNo == "ZP79" ) + { + sql = @"SELECT COUNT(r.ID) AS qty + ,r.BoxNo + ,p.PartNo + ,p.ProductName + FROM tb_Box_Record r WITH (NOLOCK) + LEFT OUTER JOIN dbo.tb_Product p + ON SUBSTRING(r.BoxNo,0,CHARINDEX('.',r.BoxNo))=p.PartNo + where p.PartNo in ('A2548850000','A2548850200','A2548850400','A2548850600') + GROUP BY BoxNo,PartNo,ProductName + HAVING COUNT(r.ID)<54"; + } + + if (stationNo == "ZP63") + { + sql = @"SELECT COUNT(r.ID) AS qty + ,r.BoxNo + ,p.PartNo + ,p.ProductName + FROM tb_Box_Record r WITH (NOLOCK) + LEFT OUTER JOIN dbo.tb_Product p + ON SUBSTRING(r.BoxNo,0,CHARINDEX('.',r.BoxNo))=p.PartNo + where p.PartNo like 'A2548805702-%' OR p.PartNo like 'A2548805802-%' OR p.PartNo like 'A2548809402-%' OR p.PartNo like 'A2548809502-%' + GROUP BY BoxNo,PartNo,ProductName + HAVING COUNT(r.ID)<54 + UNION + SELECT COUNT(r.ID) AS qty + ,r.BoxNo + ,p.PartNo + ,p.ProductName + FROM tb_Box_Record r WITH (NOLOCK) + LEFT OUTER JOIN dbo.tb_Product p + ON SUBSTRING(r.BoxNo,0,CHARINDEX('.',r.BoxNo))=p.PartNo + where p.PartNo IN( 'A2948806000' ,'A2948805900','A2948808202','A2948808102') + GROUP BY BoxNo,PartNo,ProductName + HAVING COUNT(r.ID)<16"; + } + if (stationNo == "ZP78") + { + sql = @"SELECT COUNT(r.ID) AS qty + ,r.BoxNo + ,p.PartNo + ,p.ProductName + FROM tb_Box_Record r WITH (NOLOCK) + LEFT OUTER JOIN dbo.tb_Product p + ON SUBSTRING(r.BoxNo,0,CHARINDEX('.',r.BoxNo))=p.PartNo + where p.PartNo like 'A2548809402-%' OR p.PartNo like 'A2548809502-%' + GROUP BY BoxNo,PartNo,ProductName + HAVING COUNT(r.ID)<54 + UNION + SELECT COUNT(r.ID) AS qty + ,r.BoxNo + ,p.PartNo + ,p.ProductName + FROM tb_Box_Record r WITH (NOLOCK) + LEFT OUTER JOIN dbo.tb_Product p + ON SUBSTRING(r.BoxNo,0,CHARINDEX('.',r.BoxNo))=p.PartNo + where p.PartNo IN( 'A2948808202' ,'A2948808102') + GROUP BY BoxNo,PartNo,ProductName + HAVING COUNT(r.ID)<16"; + } + + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static DataTable PackList(string boxNo) + { + DataTable res = null; + + try + { + string sql = @"select * from tb_Box_Record with (nolock) where BoxNo='" + boxNo + @"' order by CreateTime desc"; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static DataTable NotPackList(string stationNo) + { + DataTable res = null; + + try + { + string sql = @"SELECT dbo.tb_Punch_Code_Record.barcode + FROM dbo.tb_Punch_Code_Record WITH (NOLOCK) LEFT OUTER JOIN + dbo.tb_PunchAndStation ON dbo.tb_Punch_Code_Record.ZcID = dbo.tb_PunchAndStation.ProductID1 LEFT OUTER JOIN + dbo.tb_Station ON dbo.tb_PunchAndStation.StationID = dbo.tb_Station.StationID + WHERE dbo.tb_Station.StationNo='"+ stationNo +@"' + AND dbo.tb_Punch_Code_Record.barcode NOT IN(SELECT barcode FROM dbo.tb_Box_Record WITH (NOLOCK))"; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static string barCode(string serialNo) + { + string res = ""; + try + { + string sql = @"select top 1 barcode from tb_Punch_Code_Record WHERE SerialNo='" + serialNo + @"' order by CreateTime desc "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = dt.Rows[0]["barcode"].ToString(); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + public static bool IsScan(string barCode) + { + bool res = false; + + try + { + string sql = @"select ID from tb_ScanRecord_Laser where BarCode='" + barCode + @"'"; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static int AddScanRecord(string barCode) + { + int res = 0; + + try + { + string sql = @"insert into tb_ScanRecord_Laser(BarCode) values('" + barCode + @"')"; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static string GetScanCountByClass(string workClass) + { + string res = "0"; + try + { + string t1 = "",t2=""; + + if (workClass == "白班") + { + t1 = DateTime.Now.ToString("yyyy-MM-dd") + " 07:30:00"; + t2 = DateTime.Now.ToString("yyyy-MM-dd") + " 19:29:59"; + } + else + { + if (DateTime.Now.Hour <= 23) + { + t1 = DateTime.Now.ToString("yyyy-MM-dd") + " 19:30:00"; + t2 = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") + " 07:29:59"; + } + else if (DateTime.Now.Hour >= 0 && DateTime.Now.Hour <8) + { + t1 = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + " 19:30:00"; + t2 = DateTime.Now.ToString("yyyy-MM-dd") + " 07:29:59"; + } + } + string sql = @"select Count(ID) as qty from tb_ScanRecord_Laser where ScanTime between '" + t1 + @"' and '" + + t2 + @"' "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = dt.Rows[0]["qty"].ToString(); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static DataTable GetScanRecord(string workClass) + { + DataTable res = null; + try + { + //string t1 = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00"; + //string t2 = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59"; + + string t1 = "", t2 = ""; + + if (workClass == "白班") + { + t1 = DateTime.Now.ToString("yyyy-MM-dd") + " 07:30:00"; + t2 = DateTime.Now.ToString("yyyy-MM-dd") + " 19:29:59"; + } + else + { + if (DateTime.Now.Hour <= 23) + { + t1 = DateTime.Now.ToString("yyyy-MM-dd") + " 19:30:00"; + t2 = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") + " 07:29:59"; + } + else if (DateTime.Now.Hour >= 0 && DateTime.Now.Hour < 8) + { + t1 = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + " 19:30:00"; + t2 = DateTime.Now.ToString("yyyy-MM-dd") + " 07:29:59"; + } + } + + string sql = @"select BarCode,ScanTime from tb_ScanRecord_Laser where ScanTime between '" + t1 + @"' and '" + + t2 + @"' order by ID desc"; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static DataTable GetZCPartInfo(string partID, string stationNo) + { + DataTable res = new DataTable(); + + try + { + string sql = @"SELECT dbo.tb_Product.PartNo,dbo.tb_Product.ProductID,dbo.tb_Product.ProductName,dbo.tb_Product.IsHigh + FROM dbo.tb_PunchAndStation LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_PunchAndStation.ProductID1 = dbo.tb_Product.ProductID LEFT OUTER JOIN + dbo.tb_Station ON dbo.tb_PunchAndStation.StationID = dbo.tb_Station.StationID + where dbo.tb_PunchAndStation.ProductID2='" + partID + @"' and dbo.tb_Station.StationNo='"+ stationNo +@"'"; + res= SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static DataTable GetPlanInfoByOrderNo(string orderNo) + { + DataTable res=new DataTable(); + + try + { + string sql = @"SELECT dbo.tb_Product.ProductName, dbo.tb_Plan_Punch.OrderNo, dbo.tb_Plan_Punch.PartNo, + dbo.tb_Plan_Punch.OrderCount,dbo.tb_Plan_Punch.IsFinish,dbo.tb_Plan_Punch.CompleteCount + FROM dbo.tb_Plan_Punch LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_Plan_Punch.PartNo = dbo.tb_Product.PartNo where dbo.tb_Plan_Punch.OrderNo='" + orderNo +@"'"; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static string GetPlanIDByOrderNo(string orderNo, string partNo) + { + string res = ""; + + try + { + string sql = @"SELECT top 1 ID FROM dbo.tb_Plan_Punch where OrderNo='" + orderNo + @"' and PartNo='" + + partNo + @"' and IsFinish <> 1 + order by CreateTime "; + + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = dt.Rows[0]["ID"].ToString(); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static DataTable DetailOrderNo(string orderNo) + { + DataTable res = new DataTable(); + + try + { + string sql = @"SELECT dbo.tb_Plan_Punch.Item, dbo.tb_Plan_Punch.PartNo, dbo.tb_Product.ProductName, + dbo.tb_Plan_Punch.OrderCount + FROM dbo.tb_Plan_Punch LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_Plan_Punch.PartNo = dbo.tb_Product.PartNo + where dbo.tb_Plan_Punch.OrderNo='" + orderNo + @"' order by dbo.tb_Plan_Punch.Item"; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static DataTable GetOtherPart(string stationNo, string partNo) + { + DataTable res = null; + + try + { + string sql = @"IF OBJECT_ID('TEMPDB..#a') IS NOT NULL + DROP TABLE #a + create table #a (PartNo nvarchar(100),PartName nvarchar(100),IsCheck nvarchar(10),Qty nvarchar(10)) + + INSERT INTO #a( PartNo,PartName, IsCheck,Qty ) + SELECT p2.PartNo ,p2.ProductName ,'是','1' FROM dbo.tb_PunchAndStation ps + LEFT OUTER JOIN dbo.tb_Station s ON ps.StationID=s.StationID + LEFT OUTER JOIN dbo.tb_Product p1 ON ps.ProductID1=p1.ProductID + LEFT OUTER JOIN dbo.tb_Product p2 ON ps.ProductID2=p2.ProductID + WHERE s.StationNo='" + stationNo + @"' AND p1.PartNo='" + partNo + @"' + INSERT INTO #a( PartNo,PartName, IsCheck,Qty ) + SELECT p2.PartNo ,p2.ProductName ,'是',Qty3 FROM dbo.tb_PunchAndStation ps + LEFT OUTER JOIN dbo.tb_Station s ON ps.StationID=s.StationID + LEFT OUTER JOIN dbo.tb_Product p1 ON ps.ProductID1=p1.ProductID + LEFT OUTER JOIN dbo.tb_Product p2 ON ps.ProductID3=p2.ProductID + WHERE s.StationNo='" + stationNo + @"' AND p1.PartNo='" + partNo + @"' + INSERT INTO #a( PartNo,PartName, IsCheck,Qty ) + SELECT p2.PartNo ,p2.ProductName ,'是',Qty4 FROM dbo.tb_PunchAndStation ps + LEFT OUTER JOIN dbo.tb_Station s ON ps.StationID=s.StationID + LEFT OUTER JOIN dbo.tb_Product p1 ON ps.ProductID1=p1.ProductID + LEFT OUTER JOIN dbo.tb_Product p2 ON ps.ProductID4=p2.ProductID + WHERE s.StationNo='" + stationNo + @"' AND p1.PartNo='" + partNo + @"' + INSERT INTO #a( PartNo,PartName, IsCheck,Qty ) + SELECT p2.PartNo ,p2.ProductName ,'是',Qty5 FROM dbo.tb_PunchAndStation ps + LEFT OUTER JOIN dbo.tb_Station s ON ps.StationID=s.StationID + LEFT OUTER JOIN dbo.tb_Product p1 ON ps.ProductID1=p1.ProductID + LEFT OUTER JOIN dbo.tb_Product p2 ON ps.ProductID5=p2.ProductID + WHERE s.StationNo='" + stationNo + @"' AND p1.PartNo='" + partNo + @"' + + INSERT INTO #a( PartNo,PartName, IsCheck,Qty ) + SELECT p2.PartNo ,p2.ProductName ,'是',Qty9 FROM dbo.tb_PunchAndStation ps + LEFT OUTER JOIN dbo.tb_Station s ON ps.StationID=s.StationID + LEFT OUTER JOIN dbo.tb_Product p1 ON ps.ProductID1=p1.ProductID + LEFT OUTER JOIN dbo.tb_Product p2 ON ps.ProductID9=p2.ProductID + WHERE s.StationNo='" + stationNo + @"' AND p1.PartNo='" + partNo + @"' + INSERT INTO #a( PartNo,PartName, IsCheck,Qty ) + SELECT p2.PartNo ,p2.ProductName ,'是',Qty10 FROM dbo.tb_PunchAndStation ps + LEFT OUTER JOIN dbo.tb_Station s ON ps.StationID=s.StationID + LEFT OUTER JOIN dbo.tb_Product p1 ON ps.ProductID1=p1.ProductID + LEFT OUTER JOIN dbo.tb_Product p2 ON ps.ProductID10=p2.ProductID + WHERE s.StationNo='" + stationNo + @"' AND p1.PartNo='" + partNo + @"' + INSERT INTO #a( PartNo,PartName, IsCheck,Qty ) + SELECT p2.PartNo ,p2.ProductName ,'是',Qty11 FROM dbo.tb_PunchAndStation ps + LEFT OUTER JOIN dbo.tb_Station s ON ps.StationID=s.StationID + LEFT OUTER JOIN dbo.tb_Product p1 ON ps.ProductID1=p1.ProductID + LEFT OUTER JOIN dbo.tb_Product p2 ON ps.ProductID11=p2.ProductID + WHERE s.StationNo='" + stationNo + @"' AND p1.PartNo='" + partNo + @"' + + INSERT INTO #a( PartNo,PartName, IsCheck,Qty ) + SELECT p2.PartNo ,p2.ProductName ,'',Qty6 FROM dbo.tb_PunchAndStation ps + LEFT OUTER JOIN dbo.tb_Station s ON ps.StationID=s.StationID + LEFT OUTER JOIN dbo.tb_Product p1 ON ps.ProductID1=p1.ProductID + LEFT OUTER JOIN dbo.tb_Product p2 ON ps.ProductID6=p2.ProductID + WHERE s.StationNo='" + stationNo + @"' AND p1.PartNo='" + partNo + @"' + INSERT INTO #a( PartNo,PartName, IsCheck ,Qty) + SELECT p2.PartNo ,p2.ProductName ,'' ,Qty7 FROM dbo.tb_PunchAndStation ps + LEFT OUTER JOIN dbo.tb_Station s ON ps.StationID=s.StationID + LEFT OUTER JOIN dbo.tb_Product p1 ON ps.ProductID1=p1.ProductID + LEFT OUTER JOIN dbo.tb_Product p2 ON ps.ProductID7=p2.ProductID + WHERE s.StationNo='" + stationNo + @"' AND p1.PartNo='" + partNo + @"' + INSERT INTO #a( PartNo,PartName, IsCheck,Qty ) + SELECT p2.PartNo ,p2.ProductName ,'',Qty8 FROM dbo.tb_PunchAndStation ps + LEFT OUTER JOIN dbo.tb_Station s ON ps.StationID=s.StationID + LEFT OUTER JOIN dbo.tb_Product p1 ON ps.ProductID1=p1.ProductID + LEFT OUTER JOIN dbo.tb_Product p2 ON ps.ProductID8=p2.ProductID + WHERE s.StationNo='" + stationNo + @"' AND p1.PartNo='" + partNo + @"' + + INSERT INTO #a( PartNo,PartName, IsCheck,Qty ) + SELECT p2.PartNo ,p2.ProductName ,'',Qty12 FROM dbo.tb_PunchAndStation ps + LEFT OUTER JOIN dbo.tb_Station s ON ps.StationID=s.StationID + LEFT OUTER JOIN dbo.tb_Product p1 ON ps.ProductID1=p1.ProductID + LEFT OUTER JOIN dbo.tb_Product p2 ON ps.ProductID12=p2.ProductID + WHERE s.StationNo='" + stationNo + @"' AND p1.PartNo='" + partNo + @"' + INSERT INTO #a( PartNo,PartName, IsCheck ,Qty) + SELECT p2.PartNo ,p2.ProductName ,'' ,Qty13 FROM dbo.tb_PunchAndStation ps + LEFT OUTER JOIN dbo.tb_Station s ON ps.StationID=s.StationID + LEFT OUTER JOIN dbo.tb_Product p1 ON ps.ProductID1=p1.ProductID + LEFT OUTER JOIN dbo.tb_Product p2 ON ps.ProductID13=p2.ProductID + WHERE s.StationNo='" + stationNo + @"' AND p1.PartNo='" + partNo + @"' + INSERT INTO #a( PartNo,PartName, IsCheck,Qty ) + SELECT p2.PartNo ,p2.ProductName ,'',Qty14 FROM dbo.tb_PunchAndStation ps + LEFT OUTER JOIN dbo.tb_Station s ON ps.StationID=s.StationID + LEFT OUTER JOIN dbo.tb_Product p1 ON ps.ProductID1=p1.ProductID + LEFT OUTER JOIN dbo.tb_Product p2 ON ps.ProductID14=p2.ProductID + WHERE s.StationNo='" + stationNo + @"' AND p1.PartNo='" + partNo + @"' + + SELECT * FROM #a where isnull(PartNo,'')<>''"; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + + return res; + } + + public static int SavePartAndProduct_New(string barcode, string BcpID, string ZcID, string OrderNo, string WorkClass, string planID, string SerialNo, string barCode1, string barCode2, string barCode3, string barCode4, string barCode5, string barCode6,string stationId,string description) + { + int res = 0; + try + { + string sql = @" + INSERT INTO [dbo].[tb_Punch_Code_Record] + ([ID] + ,[barcode] + ,[BcpID] + ,[ZcID] + ,[OrderNo] + ,[WorkClass] + ,[CreateTime], PlanID,SerialNo + ,barCode1,barCode2,barCode3 + ,barCode4,barCode5,barCode6,StationId,StationDescription) + VALUES + ((select newid()) + ,'" + barcode + @"' + ,'" + BcpID + @"' + ,'" + ZcID + @"' + ,'" + OrderNo + @"' + ,'" + WorkClass + @"' + ,(select getdate()), '" + planID + @"','" + SerialNo + @"' + ,'" + barCode1 + @"','" + barCode2 + @"','" + barCode3 + @"' + ,'" + barCode4 + @"','" + barCode5 + @"','" + barCode6 + @"','"+ stationId +@"','"+ description +"@')"; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static bool IsNeedVisual(string partNo) + { + bool res = false; + try + { + string sql = @"select ID from tb_SpecialVisual where SpecialPartNo='"+ partNo +@"'"; + + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + + return res; + } + + public static int AddCompleteCountAndFinish(string ID) + { + int res = 0; + try + { + string sql = " update tb_Plan_Punch set CompleteCount = CompleteCount + 1 where ID = '" + ID + "' "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + + string sql2 = " select OrderCount,CompleteCount from tb_Plan_Punch where ID = '" + ID + "' "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql2, null); + if (dt != null && dt.Rows.Count > 0) + { + if (int.Parse(dt.Rows[0]["CompleteCount"].ToString()) >= + int.Parse(dt.Rows[0]["OrderCount"].ToString())) + { + string sql1 = " update tb_Plan_Punch set IsFinish = 3 where ID = '" + ID + "' "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql1, null); + } + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static string SearchIdByBarCode(string barCode) + { + string res = ""; + try + { + string sql = @" + select top 1 ID from tb_Punch_Code_Record + where barcode ='" + barCode+ @"' +order by CreateTime desc + "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = dt.Rows[0]["ID"].ToString(); + } + + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + + } + return res; + } + + public static bool IsHigh(string zcPartNo) + { + bool res = false; + + try + { + string sql = @" + select IsHigh from tb_Product where PartNo='" + zcPartNo + @"'"; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = dt.Rows[0]["IsHigh"].ToString() == "1" ? true : false; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static int AddDel(string barCode) + { + int res = 0; + try + { + string sql = + @"insert into tb_Punch_Code_Record_Del select top 1 * from tb_Punch_Code_Record WITH (NOLOCK) where barcode = '" + + barCode + @"' order by CreateTime desc; + DELETE FROM tb_Punch_Code_Record WHERE ID=(select top 1 ID from tb_Punch_Code_Record WITH (NOLOCK) where barcode = '" + + barCode + @"' order by CreateTime DESC)"; + + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + + return res; + } + + public static DataTable DelInfoByBarCode(string barCode) + { + DataTable res = null; + + try + { + string sql = @"select top 1 * from tb_Punch_Code_Record_Del WITH (NOLOCK) where barcode = '" + + barCode + @"' order by CreateTime desc"; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + + return res; + } + + public static int VisualRetest(string stationNo) + { + int res = 0; + try + { + string sql = @"UPDATE dbo.tb_Punch_Code_Record SET ToVisual=1 ,PrintTime = NULL + WHERE id=( + SELECT TOP 1 r.ID + FROM dbo.tb_SpecialVisual LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_SpecialVisual.SpecialPartNo = dbo.tb_Product.PartNo RIGHT OUTER JOIN + dbo.tb_Punch_Code_Record AS r ON dbo.tb_Product.ProductID = r.ZcID LEFT OUTER JOIN + dbo.tb_PunchAndStation AS p ON r.ZcID = p.ProductID1 LEFT OUTER JOIN + dbo.tb_Station AS s ON p.StationID = s.StationID + WHERE dbo.tb_SpecialVisual.SpecialPartNo IS NOT NULL + AND r.ToVisual=0 + AND s.StationNo='" + stationNo + @"' + ORDER by r.CreateTime DESC)"; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + return res; + } + } + public static DataTable GetProScreen_1(string stationId) + { + DataTable res = new DataTable(); + try + { + string sql = @" + SELECT a.*,b.ProductName,b.IsHigh,b.ProductID,s.Des Des1 + FROM [BBMPT].[dbo].[tb_Plan_Punch_214] a + LEFT OUTER JOIN dbo.tb_Product b ON a.PartNo=b.PartNo + LEFT OUTER JOIN dbo.tb_Station s ON a.StationId=s.StationID + WHERE a.StationId='" + stationId + @"' AND IsFinish=1 + order by CreateTime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (res == null || res.Rows.Count < 1) + { + sql = @" + SELECT a.*,b.ProductName,b.IsHigh,b.ProductID,s.Des + FROM [BBMPT].[dbo].[tb_Plan_Punch_214] a + LEFT OUTER JOIN dbo.tb_Product b ON a.PartNo=b.PartNo + LEFT OUTER JOIN dbo.tb_Station s ON a.StationId=s.StationID + WHERE a.StationId='" + stationId + @"' AND IsFinish=0 + order by CreateTime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + if (res == null || res.Rows.Count < 1) + { + sql = @" + SELECT a.*,b.ProductName,b.IsHigh,b.ProductID,s.Des + FROM [BBMPT].[dbo].[tb_Plan_Punch_214] a + LEFT OUTER JOIN dbo.tb_Product b ON a.PartNo=b.PartNo + LEFT OUTER JOIN dbo.tb_Station s ON a.StationId=s.StationID + WHERE a.StationId='" + stationId + @"' AND IsFinish=2 + order by CreateTime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static DataTable GetProScreenPlan_1(string id, string stationNo, string plan) + { + DataTable res = new DataTable(); + try + { + if (plan == "下一计划") + { + #region 查询当前计划时间 + + string time = ""; + string sql; + string sqll = @" select CreateTime from tb_Plan_Punch_214 where ID = '" + id + @"' "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sqll, null); + if (dt != null && dt.Rows.Count > 0) + { + time = dt.Rows[0][0].ToString(); + time = Tools.NumericParse.StringToDateTime(time).Value.AddSeconds(1).ToString("yyyy-MM-dd HH:mm:ss"); + } + + #endregion + + #region 查询下一计划 + + sql = @" + SELECT a.*,b.ProductName,b.IsHigh,b.ProductID,s.Des + FROM tb_Plan_Punch_214 a + LEFT OUTER JOIN dbo.tb_Product b ON a.PartNo=b.PartNo + LEFT OUTER JOIN dbo.tb_Station s ON a.StationId=s.StationID + WHERE s.StationNo = '" + stationNo + @"' + and a.IsFinish <> 3 + and a.CreateTime > '" + time + @"' + order by a.CreateTime asc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + + #endregion + } + else if (plan == "上一计划") + { + #region 查询当前计划时间 + + string time = ""; + string sql; + string sqll = @" select CreateTime from tb_Plan_Punch_214 where ID = '" + id + @"' "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sqll, null); + if (dt != null && dt.Rows.Count > 0) + { + time = dt.Rows[0][0].ToString(); + } + + #endregion + + #region 查询上一计划 + + sql = @" + SELECT a.*,b.ProductName,b.IsHigh,b.ProductID,s.Des + FROM tb_Plan_Punch_214 a + LEFT OUTER JOIN dbo.tb_Product b ON a.PartNo=b.PartNo + LEFT OUTER JOIN dbo.tb_Station s ON a.StationId=s.StationID + WHERE s.StationNo = '" + stationNo + @"' + and a.IsFinish <> 3 + and a.CreateTime < '" + time + @"' + order by a.CreateTime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + + #endregion + + } + else if (plan == "当前计划") + { + string sql = @" + SELECT a.*,b.ProductName,b.IsHigh,b.ProductID,s.Des + FROM tb_Plan_Punch_214 a + LEFT OUTER JOIN dbo.tb_Product b ON a.PartNo=b.PartNo + LEFT OUTER JOIN dbo.tb_Station s ON a.StationId=s.StationID + where a.ID='" + id + @"' + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static DataTable QueryPlanDetail_1(string starttime, string endtime, string stationNo) + { + DataTable res = new DataTable(); + try + { + string sql = @" + SELECT a.ID,a.OrderNo,a.PartNo,a.OrderCount,a.CompleteCount,a.BadCount,a.IsFinish,b.ProductName + FROM tb_Plan_Punch_214 a + LEFT OUTER JOIN dbo.tb_Product b ON a.PartNo=b.PartNo + LEFT OUTER JOIN dbo.tb_Station s ON a.StationId=s.StationID + WHERE s.StationNo= '"+ stationNo +@"' + and IsFinish <> 3 + order by CreateTime + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static DataTable HavePrint_1(string stationId) + { + DataTable dt = null; + try + { + string sql = @"SELECT top 1 p.PartNo,r.*,p.ProductName + FROM tb_Punch_Code_Record_DoorSill_214 r WITH(NOLOCK) + LEFT OUTER JOIN dbo.tb_Product p ON r.ZcID=p.ProductID + WHERE (r.ToVisual=0 and isNull(r.PrintTime,'')='') + AND r.StationId='" + stationId + @"' + order by r.CreateTime desc"; + + dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return dt; + } + + public static int UpdateVisualFlag(string stationId) + { + int res = 0; + + try + { + string sql = @" update tb_Punch_Code_Record_DoorSill_214 set ToVisual=0 ,FinishTime=(select getdate()) where id =(SELECT top 1 ID + FROM tb_Punch_Code_Record_DoorSill_214 r WITH(NOLOCK) + WHERE r.StationId = '" + stationId + @"' and isNull(r.PrintTime,'')='' + order by r.CreateTime desc)"; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + + return res; + } + + public static bool HaveScan_1(string barcode) + { + bool res = false; + try + { + string sql = ""; + if (barcode.Substring(0, 2) != "22") + { + sql = @" + select * + from tb_Punch_Code_Record_DoorSill_214 + where barcode = '" + barcode + @"' + "; + } + else + { + if (barcode.Substring(0, 10) == "2200000057" || barcode.Substring(0, 10) == "2200000058") + { + sql = @" + select * + from tb_Punch_Code_Record_DoorSill_214 + where barcode = '" + barcode + @"' + "; + } + else + { + sql = @" select * from tb_StockIn where barcode = '" + barcode + "' and ZcCode is not null"; + } + } + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static OtherPart HaveOtherPart_1(string stationId, string productID1) + { + OtherPart res = new OtherPart(); + + try + { + string sql = @" + select top 1 [ProductID3] + ,Qty3 + ,[ProductID4] + ,Qty4 + ,[ProductID5] + ,Qty5 + ,[ProductID9] + ,Qty9 + ,[ProductID10] + ,Qty10 + ,[ProductID11] + ,Qty11 + from tb_PunchAndStation + where StationID = '"+ stationId +@"' + and ProductID1 = '" + productID1 + @"' + order by CreateTine desc + "; + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + res.productID3 = dt.Rows[0]["ProductID3"].ToString(); + res.productID4 = dt.Rows[0]["ProductID4"].ToString(); + res.productID5 = dt.Rows[0]["ProductID5"].ToString(); + res.productID6 = dt.Rows[0]["ProductID9"].ToString(); + res.productID7 = dt.Rows[0]["ProductID10"].ToString(); + res.productID8 = dt.Rows[0]["ProductID11"].ToString(); + res.qty3 = dt.Rows[0]["Qty3"].ToString(); + res.qty4 = dt.Rows[0]["Qty4"].ToString(); + res.qty5 = dt.Rows[0]["Qty5"].ToString(); + res.qty6 = dt.Rows[0]["Qty9"].ToString(); + res.qty7 = dt.Rows[0]["Qty10"].ToString(); + res.qty8 = dt.Rows[0]["Qty11"].ToString(); + } + + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static bool IsUsing(string barCode,string columeName) + { + bool res = false; + + try + { + string sql = @"select ID from tb_Punch_Code_Record_DoorSill_214 WITH(NOLOCK) + where " + columeName + " like '%" + barCode + @"%'"; + DataTable dt= ProScreenFunc.GetResDataTable(sql); + if (dt!=null && dt.Rows.Count>0) + { + res = true; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static int SavePartAndProduct_1(string barcode, string BcpID, string ZcID, string OrderNo, string WorkClass, string planID, string SerialNo, string barCode1, string barCode2, string barCode3, string barCode4, string barCode5, string barCode6,string stationId,int isIndia) + { + int res = 0; + try + { + string sql = @" + INSERT INTO [dbo].[tb_Punch_Code_Record_DoorSill_214] + ([ID] + ,[barcode] + ,[BcpID] + ,[ZcID] + ,[OrderNo] + ,[WorkClass] + ,[CreateTime], PlanID,SerialNo + ,barCode1,barCode2,barCode3 + ,barCode4,barCode5,barCode6,StationId,IsIndia) + VALUES + ((select newid()) + ,'" + barcode + @"' + ,'" + BcpID + @"' + ,'" + ZcID + @"' + ,'" + OrderNo + @"' + ,'" + WorkClass + @"' + ,(select getdate()), '" + planID + @"','" + SerialNo + @"' + ,'" + barCode1 + @"','" + barCode2 + @"','" + barCode3 + @"' + ,'" + barCode4 + @"','" + barCode5 + @"','" + barCode6 + @"','" + stationId + @"',"+ isIndia+@") + "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static string SearchIdByBarCode_1(string barCode) + { + string res = ""; + try + { + string sql = @" + select top 1 ID from tb_Punch_Code_Record_DoorSill_214 + where barcode ='" + barCode + @"' +order by CreateTime desc + "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = dt.Rows[0]["ID"].ToString(); + } + + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + + } + return res; + } + + public static int UpdatePrintTime_1(string ID) + { + int res = 0; + try + { + string sql = @" + update tb_Punch_Code_Record_DoorSill_214 + set PrintTime=(select getdate()) + where ID='" + ID + @"' + "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + + } + return res; + } + + public static DataTable GetProScreenByPlanID_1(string planId) + { + DataTable res = new DataTable(); + try + { + string sql = @" + select a.ID, b.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.CompleteCount,a.BadCount, c.ProductID1, c.ProductID2 + from tb_Plan_Punch_214 a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_PunchAndStation c + on b.ProductID = c.ProductID1 + where a.ID = '" + planId + @"' + "; + res = ProScreenFunc.GetResDataTable(sql); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static string SerialNo_1(string partNo, string batch) + { + string res = ""; + try + { + string temp_no = partNo + "." + batch; + string sql = @"select top 1 SerialNo from tb_Punch_Code_Record_DoorSill_214 where SerialNo like '" + temp_no + + @"%' order by CreateTime desc"; + object dt = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null) + { + res = dt.ToString(); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + throw ex; + } + + return res; + } + + public static bool CheckPlanCompleted_1(string Id) + { + bool res = false; + try + { + string sql = @" + select IsFinish from tb_Plan_Punch_214 where ID = '" + Id + @"' + "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + string bb = aa.ToString(); + if (bb == "3") + { + res = true; + } + else + { + res = false; + } + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static string GetCompleteCount_1(string Id) + { + string res = "0"; + try + { + string sql = @" + select CompleteCount + from tb_Plan_Punch_214 WITH(NOLOCK) + where ID = '" + Id + @"' + "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + res = aa.ToString(); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static int AddCompleteCountAndFinish_1(string Id) + { + int res = 0; + try + { + string sql = " update tb_Plan_Punch_214 set CompleteCount = CompleteCount + 1 where ID = '" + Id + "' "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + + string sql2 = " select OrderCount,CompleteCount from tb_Plan_Punch_214 where ID = '" + Id + "' "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql2, null); + if (dt != null && dt.Rows.Count > 0) + { + if (int.Parse(dt.Rows[0]["CompleteCount"].ToString()) >= + int.Parse(dt.Rows[0]["OrderCount"].ToString())) + { + string sql1 = " update tb_Plan_Punch_214 set IsFinish = 3 where ID = '" + Id + "' "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql1, null); + } + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static DataTable GetZp(string barcode) + { + DataTable res = new DataTable(); + try + { + string sql = @" + select top 1 * from tb_Punch_Code_Record_DoorSill_214 WITH (NOLOCK) + where barcode = '" + barcode + @"' order by CreateTime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static int UpdateFlag(string barCode,int flag) + { + int res = 0; + try + { + string sql = @"update tb_Punch_Code_Record_DoorSill_214 set Flag=" + flag + " where barcode='" + barCode + @"'"; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static int AddBadCount_1(string ID) + { + int res = 0; + try + { + string sql = " update tb_Plan_Punch_214 set BadCount = BadCount + 1,CompleteCount = CompleteCount - 1 where ID = '" + ID + "' "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static int VisualReset_1(string stationId) + { + int res = 0; + try + { + string sql = @"UPDATE tb_Punch_Code_Record_DoorSill_214 SET ToVisual=1 ,PrintTime = NULL + WHERE id=( + SELECT TOP 1 r.ID + FROM dbo.tb_SpecialVisual LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_SpecialVisual.SpecialPartNo = dbo.tb_Product.PartNo RIGHT OUTER JOIN + dbo.tb_Punch_Code_Record_DoorSill_214 AS r ON dbo.tb_Product.ProductID = r.ZcID LEFT OUTER JOIN + dbo.tb_PunchAndStation AS p ON r.ZcID = p.ProductID1 + WHERE dbo.tb_SpecialVisual.SpecialPartNo IS NOT NULL + AND r.ToVisual=0 + AND r.StationId='"+ stationId + @"' + ORDER by r.CreateTime DESC)"; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + return res; + } + } + + public static bool CheckPartAndProduct_1(string pid1, string pid2,string stationId) + { + bool res = false; + try + { + string sql = @" select * from tb_PunchAndStation where ProductID1 = '" + pid1 + @"' and ProductID2 = '" + pid2 + @"' and StationID='"+ stationId + @"' "; + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + else + { + res = false; + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static int UpdateSignal(int isHigh,int state,int isFinish) + { + int res = 0; + + try + { + string sql = @"update tb_Signal set IsHigh="+ isHigh +@", State=" + state + @",IsFinish=" + isFinish; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + return res; + } + + public static int UpdateWriteDone() + { + int res = 0; + + try + { + string sql = @"update tb_Signal set IsFinish=2"; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + return res; + } + + public static int VisualState() + { + int res = 0; + + try + { + string sql = @"select State from tb_Signal"; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = Convert.ToInt32(dt.Rows[0]["State"].ToString()); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + return res; + } + + public static DataTable GetSignal() + { + DataTable res = null; + + try + { + string sql = @"select IsHigh,State,IsFinish from tb_Signal with(NOLOCK)"; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + return res; + } + public static bool CheckDeviceNo(string deviceNo,string stationId) + { + bool res = false; + + try + { + string sql = @"select ID from tb_PunchAndStation where DeviceNo='" + deviceNo + @"' and StationID='" + stationId + @"'"; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + + public static string SumByPartNo(string orderNo,string zcPartNo) + { + string res = "0"; + + try + { + string sql = @"SELECT Count(ID) as sum + FROM dbo.tb_Punch_Code_Record LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_Punch_Code_Record.ZcID = dbo.tb_Product.ProductID + where dbo.tb_Punch_Code_Record.OrderNo='" + orderNo + @"' and dbo.tb_Product.PartNo ='" + zcPartNo + @"'"; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = dt.Rows[0]["sum"].ToString(); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + + return res; + } + + public static string PlanCountByPartNo(string orderNo, string zcPartNo) + { + string res = "0"; + + try + { + string sql = @"SELECT dbo.tb_Plan_Punch.OrderCount + FROM dbo.tb_Plan_Punch INNER JOIN + dbo.tb_Product ON dbo.tb_Plan_Punch.PartNo = dbo.tb_Product.PartNo + where tb_Plan_Punch.OrderNo='" + orderNo + @"' and dbo.tb_Product.PartNo ='" + zcPartNo + @"'"; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = dt.Rows[0]["OrderCount"].ToString(); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + + return res; + } + + public static DataTable ZcPartNo(string partNo2) + { + DataTable res = null; + + try + { + string sql = @"SELECT p1.PartNo,p1.ProductName + FROM dbo.tb_Product AS p2 RIGHT OUTER JOIN + dbo.tb_PunchAndStation ON p2.ProductID = dbo.tb_PunchAndStation.ProductID2 LEFT OUTER JOIN + dbo.tb_Product AS p1 ON dbo.tb_PunchAndStation.ProductID1 = p1.ProductID + where p2.PartNo='" + partNo2 +@"'"; + return SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + //if (dt != null && dt.Rows.Count > 0) + //{ + // res = dt.Rows[0]["PartNo"].ToString(); + //} + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + + return res; + } + + public static bool IsCheck(string deviceNo, string partNo2) + { + bool res = false; + + try + { + string sql = @"SELECT ID + FROM dbo.tb_PunchAndStation LEFT OUTER JOIN + dbo.tb_Product AS p1 ON dbo.tb_PunchAndStation.ProductID2 = p1.ProductID + where p1.PartNo='" + partNo2 + @"' and dbo.tb_PunchAndStation.DeviceNo='" + deviceNo + @"'"; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + + return res; + } + + public static int AddAssembly(Assembly1 md) + { + int res = 0; + + try + { + string sql = + @"insert into tb_Assembly_254 (ID,PartNo,PartName,BatchNo,Color,PartType,TapeBatchNo,Validity,ValidityDate,Des,Flag,BarCode) values + (@ID,@PartNo,@PartName,@BatchNo,@Color,@PartType,@TapeBatchNo,@Validity,@ValidityDate,@Des,@Flag,@BarCode)"; + + #region 参数 + + SqlParameter[] param = new SqlParameter[12]; + + param[0] = new SqlParameter("@ID", SqlDbType.VarChar); + param[0].Value = md.ID; + + param[1] = new SqlParameter("@PartNo", SqlDbType.VarChar); + param[1].Value = md.PartNo; + + param[2] = new SqlParameter("@PartName", SqlDbType.VarChar); + param[2].Value = md.PartName; + + param[3] = new SqlParameter("@BatchNo", SqlDbType.VarChar); + param[3].Value = md.BatchNo; + + param[4] = new SqlParameter("@Color", SqlDbType.VarChar); + param[4].Value = md.Color; + + //param[5] = new SqlParameter("@ColorNo", SqlDbType.VarChar); + //param[5].Value = md.ColorNo; + + param[5] = new SqlParameter("@PartType", SqlDbType.VarChar); + param[5].Value = md.PartType; + + param[6] = new SqlParameter("@TapeBatchNo", SqlDbType.VarChar); + param[6].Value = md.TapeBatchNo; + + param[7] = new SqlParameter("@Validity", SqlDbType.VarChar); + param[7].Value = md.Validity; + + param[8] = new SqlParameter("@ValidityDate", SqlDbType.VarChar); + param[8].Value = md.ValidityDate; + + param[9] = new SqlParameter("@Des", SqlDbType.VarChar); + param[9].Value = md.Des; + + param[10] = new SqlParameter("@Flag", SqlDbType.Int); + param[10].Value = md.Flag; + + param[11] = new SqlParameter("@BarCode", SqlDbType.VarChar); + param[11].Value = md.BarCode; + + #endregion + + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, param); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + + return res; + } + + public static int UpdateAssembly(Assembly1 md) + { + int res = 0; + + try + { + string sql = @"update tb_Assembly_254 set PrintTime=@PrintTime where BarCode=@BarCode"; + + #region 参数 + + SqlParameter[] param = new SqlParameter[13]; + + param[0] = new SqlParameter("@PrintTime", SqlDbType.DateTime); + param[0].Value = md.PrintTime; + + param[1] = new SqlParameter("@BarCode", SqlDbType.VarChar); + param[1].Value = md.BarCode; + + #endregion + + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, param); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + + return res; + } + + public static string LastNo(string partNo) + { + string res = ""; + + try + { + string sql = @"select top 1 PartNo from tb_Assembly_254 where PartNo like '" + partNo + + @"%' and Flag=0 order by CreateTime desc"; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = dt.Rows[0]["PartNo"].ToString(); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + + return res; + } + + public static DataTable AssemblyInfo(string barCode) + { + DataTable res = null; + + try + { + string sql = @"select top 1 * from tb_Assembly_254 where BarCode='"+ barCode +@"' order by CreateTime desc"; + + return SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + + return res; + } + public static string[] GetSpecialHybrid() + { + string[] res = { "" }; + try + { + string sql = @" select SpecialPartNo from tb_SpecialHybrid "; + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + res = new string[dt.Rows.Count]; + for (int i = 0; i < dt.Rows.Count; i++) + { + res[i] = dt.Rows[i][0].ToString().Trim(); + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static DataTable GetProductInfo1(string productId2,string stationId) + { + DataTable res = null; + try + { + string sql = @"SELECT dbo.tb_Product.PartNo, dbo.tb_PunchAndStation.ProductID1, dbo.tb_Product.IsHigh, dbo.tb_Product.ProductName + FROM dbo.tb_PunchAndStation LEFT OUTER JOIN + dbo.tb_Product ON dbo.tb_PunchAndStation.ProductID1 = dbo.tb_Product.ProductID where tb_PunchAndStation.ProductID2='" + productId2 + + @"' and tb_PunchAndStation.StationID='" + stationId + @"'"; + + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static string StockZcCode(string barCode) + { + string res = ""; + + try + { + string sql = @"select [ZcCode] from [tb_StockIn] where [barcode]='" + barCode + @"'"; + + DataTable dt = ProScreenFunc.GetResDataTable(sql); + if (dt != null && dt.Rows.Count > 0) + { + res = dt.Rows[0][0].ToString().Trim(); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + return res; + } + + public static int SaveToWmsRecord(string barCode) + { + int res = 0; + try + { + string sql = @" + insert into tb_ToWmsRecord(BarCode) values('"+ barCode +@"') + "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + + } + return res; + } + + public static bool IsToWms(string barCode) + { + bool res = false; + try + { + string sql = @" + select Id from tb_ToWmsRecord where BarCode='" + barCode + @"' + "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null && dt.Rows.Count > 0) + { + res = true; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + + } + return res; + } + } + + public class OtherPart + { + public string productID3 { get; set; } + + public string qty3 { get; set; } + + public string productID4 { get; set; } + + public string qty4 { get; set; } + + public string productID5 { get; set; } + + public string qty5 { get; set; } + + public string productID6 { get; set; } + + public string qty6 { get; set; } + + public string productID7 { get; set; } + + public string qty7 { get; set; } + + public string productID8 { get; set; } + + public string qty8 { get; set; } + + } + + public static class ScanAll + { + public static bool ScanResult; + public static string barCode1; + public static string barCode2; + public static string barCode3; + public static string barCode4; + public static string barCode5; + public static string barCode6; + public static string partNo1; + public static string partNo2; + public static string partNo3; + public static string partNo4; + public static string partNo5; + public static string partNo6; + } + + public class ZcPrintLabel + { + public string zcPartNo { get; set; } + public string zcName { get; set; } + } + + public class Assembly1 + { + public string ID { get; set; } + + public string PartNo { get; set; } + + public string PartName { get; set; } + + public string BatchNo { get; set; } + + public string Color { get; set; } + + public string ColorNo { get; set; } + + public string PartType { get; set; } + + public string TapeBatchNo { get; set; } + + public string Validity { get; set; } + + public string ValidityDate { get; set; } + + public DateTime PrintTime { get; set; } + + public string Des { get; set; } + + public int Flag { get; set; } + + public string BarCode { get; set; } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/DataSouce/Tools.dll b/SjMes/PunchAssemble/PunchAndWeld/DataSouce/Tools.dll new file mode 100644 index 0000000..684e01b Binary files /dev/null and b/SjMes/PunchAssemble/PunchAndWeld/DataSouce/Tools.dll differ diff --git a/SjMes/PunchAssemble/PunchAndWeld/Form1.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/Form1.Designer.cs new file mode 100644 index 0000000..bd22286 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Form1.Designer.cs @@ -0,0 +1,363 @@ +namespace PunchAndWeld +{ + partial class Form1 + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel4 = new System.Windows.Forms.Panel(); + this.label10 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.lbPlan = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.lbFinish = new System.Windows.Forms.Label(); + this.lbOK = new System.Windows.Forms.Label(); + this.lbmode = new System.Windows.Forms.Label(); + this.lbState = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.panel3 = new System.Windows.Forms.Panel(); + this.LbBoxR = new System.Windows.Forms.Label(); + this.txtBoxR = new System.Windows.Forms.TextBox(); + this.lbBoxL = new System.Windows.Forms.Label(); + this.txtBoxL = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.panel2 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.panel1.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel3.SuspendLayout(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.panel4); + this.panel1.Controls.Add(this.panel3); + this.panel1.Controls.Add(this.panel2); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1008, 729); + this.panel1.TabIndex = 0; + // + // panel4 + // + this.panel4.Controls.Add(this.label10); + this.panel4.Controls.Add(this.label7); + this.panel4.Controls.Add(this.label9); + this.panel4.Controls.Add(this.lbPlan); + this.panel4.Controls.Add(this.label8); + this.panel4.Controls.Add(this.lbFinish); + this.panel4.Controls.Add(this.lbOK); + this.panel4.Controls.Add(this.lbmode); + this.panel4.Controls.Add(this.lbState); + this.panel4.Controls.Add(this.label3); + this.panel4.Controls.Add(this.label2); + this.panel4.Controls.Add(this.label4); + this.panel4.Controls.Add(this.label5); + this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel4.Location = new System.Drawing.Point(0, 59); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(1008, 553); + this.panel4.TabIndex = 2; + // + // label10 + // + this.label10.Location = new System.Drawing.Point(7, 12); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(754, 23); + this.label10.TabIndex = 12; + this.label10.Text = "label10"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("宋体", 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.Location = new System.Drawing.Point(268, 253); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(129, 35); + this.label7.TabIndex = 11; + this.label7.Text = "label6"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("宋体", 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.Location = new System.Drawing.Point(24, 253); + this.label9.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(159, 35); + this.label9.TabIndex = 10; + this.label9.Text = "生产数量"; + // + // lbPlan + // + this.lbPlan.Font = new System.Drawing.Font("宋体", 42F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbPlan.Location = new System.Drawing.Point(262, 87); + this.lbPlan.Name = "lbPlan"; + this.lbPlan.Size = new System.Drawing.Size(711, 122); + this.lbPlan.TabIndex = 9; + this.lbPlan.Text = "label6"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Font = new System.Drawing.Font("宋体", 42F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.Location = new System.Drawing.Point(5, 85); + this.label8.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(252, 56); + this.label8.TabIndex = 8; + this.label8.Text = "当前计划"; + // + // lbFinish + // + this.lbFinish.AutoSize = true; + this.lbFinish.Location = new System.Drawing.Point(166, 391); + this.lbFinish.Name = "lbFinish"; + this.lbFinish.Size = new System.Drawing.Size(41, 12); + this.lbFinish.TabIndex = 7; + this.lbFinish.Text = "label6"; + // + // lbOK + // + this.lbOK.AutoSize = true; + this.lbOK.Location = new System.Drawing.Point(164, 432); + this.lbOK.Name = "lbOK"; + this.lbOK.Size = new System.Drawing.Size(41, 12); + this.lbOK.TabIndex = 6; + this.lbOK.Text = "label6"; + // + // lbmode + // + this.lbmode.AutoSize = true; + this.lbmode.Location = new System.Drawing.Point(164, 467); + this.lbmode.Name = "lbmode"; + this.lbmode.Size = new System.Drawing.Size(41, 12); + this.lbmode.TabIndex = 5; + this.lbmode.Text = "label6"; + // + // lbState + // + this.lbState.AutoSize = true; + this.lbState.Location = new System.Drawing.Point(166, 350); + this.lbState.Name = "lbState"; + this.lbState.Size = new System.Drawing.Size(41, 12); + this.lbState.TabIndex = 4; + this.lbState.Text = "label6"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(69, 350); + this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(53, 12); + this.label3.TabIndex = 1; + this.label3.Text = "设备状态"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(69, 392); + this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 12); + this.label2.TabIndex = 0; + this.label2.Text = "运行状态"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(69, 432); + this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(53, 12); + this.label4.TabIndex = 2; + this.label4.Text = "冲焊状态"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(69, 467); + this.label5.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(53, 12); + this.label5.TabIndex = 3; + this.label5.Text = "设备模式"; + // + // panel3 + // + this.panel3.Controls.Add(this.LbBoxR); + this.panel3.Controls.Add(this.txtBoxR); + this.panel3.Controls.Add(this.lbBoxL); + this.panel3.Controls.Add(this.txtBoxL); + this.panel3.Controls.Add(this.label6); + this.panel3.Controls.Add(this.textBox1); + this.panel3.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel3.Location = new System.Drawing.Point(0, 612); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(1008, 117); + this.panel3.TabIndex = 1; + // + // LbBoxR + // + this.LbBoxR.AutoSize = true; + this.LbBoxR.Location = new System.Drawing.Point(33, 52); + this.LbBoxR.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.LbBoxR.Name = "LbBoxR"; + this.LbBoxR.Size = new System.Drawing.Size(89, 12); + this.LbBoxR.TabIndex = 8; + this.LbBoxR.Text = "扫描右雷达支架"; + // + // txtBoxR + // + this.txtBoxR.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtBoxR.Location = new System.Drawing.Point(141, 48); + this.txtBoxR.Name = "txtBoxR"; + this.txtBoxR.Size = new System.Drawing.Size(475, 23); + this.txtBoxR.TabIndex = 7; + this.txtBoxR.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBoxR_KeyDown); + // + // lbBoxL + // + this.lbBoxL.AutoSize = true; + this.lbBoxL.Location = new System.Drawing.Point(33, 15); + this.lbBoxL.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.lbBoxL.Name = "lbBoxL"; + this.lbBoxL.Size = new System.Drawing.Size(89, 12); + this.lbBoxL.TabIndex = 6; + this.lbBoxL.Text = "扫描左雷达支架"; + // + // txtBoxL + // + this.txtBoxL.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtBoxL.Location = new System.Drawing.Point(141, 8); + this.txtBoxL.Name = "txtBoxL"; + this.txtBoxL.Size = new System.Drawing.Size(475, 23); + this.txtBoxL.TabIndex = 5; + this.txtBoxL.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBoxL_KeyDown); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(41, 96); + this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(77, 12); + this.label6.TabIndex = 4; + this.label6.Text = "扫描蒙皮条码"; + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(141, 89); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(475, 23); + this.textBox1.TabIndex = 0; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // panel2 + // + this.panel2.Controls.Add(this.label1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Top; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(1008, 59); + this.panel2.TabIndex = 0; + // + // label1 + // + this.label1.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.Red; + this.label1.Location = new System.Drawing.Point(47, 1); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(667, 57); + this.label1.TabIndex = 0; + this.label1.Text = "报警区"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // timer1 + // + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1008, 729); + this.Controls.Add(this.panel1); + this.Name = "Form1"; + this.Text = "冲孔焊接设备"; + this.Load += new System.EventHandler(this.Form1_Load); + this.panel1.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel4.PerformLayout(); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + this.panel2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label lbFinish; + private System.Windows.Forms.Label lbOK; + private System.Windows.Forms.Label lbmode; + private System.Windows.Forms.Label lbState; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label lbPlan; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label LbBoxR; + private System.Windows.Forms.TextBox txtBoxR; + private System.Windows.Forms.Label lbBoxL; + private System.Windows.Forms.TextBox txtBoxL; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Timer timer1; + } +} + diff --git a/SjMes/PunchAssemble/PunchAndWeld/Form1.cs b/SjMes/PunchAssemble/PunchAndWeld/Form1.cs new file mode 100644 index 0000000..cb87453 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Form1.cs @@ -0,0 +1,1096 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Diagnostics.Eventing.Reader; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using MESClassLibrary.BLL.BasicInfo; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.BLL.Painting; +using MESClassLibrary.BLL.PunchAndWeld; +using MESClassLibrary.DAL; +using MESClassLibrary.Model; +using OPCAutomation; + +namespace PunchAndWeld +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + + #region 变量 + + private string strHostIP; + private string strHostName; + private OPCServer opcServer; + private OPCGroups opcGroups; + private OPCGroup opcGroup1; + private OPCItems opcItems1; + private OPCItem[] opcItemm1; + + private OPCGroup opcGroup2; + private OPCItems opcItems2; + private OPCItem[] opcItemm2; + private string[] ItemIDs; + object ItemValues; + object Qualities; + object TimeStamps; + public bool Connected = false; + + public bool IsChangeBox = false; + public bool IsStart = false; + public string barCode = ""; //蒙皮条码 + public string radarCode = ""; //雷达支架条码 + + #endregion + + private void Form1_Load(object sender, EventArgs e) + { + try + { + PunchAdressBLL bll = new PunchAdressBLL(); + PunchPlanBLL planBLL=new PunchPlanBLL(); + + textBox1.TabIndex = 0; + textBox1.Focus(); + label1.Text = ""; + lbPlan.Text = ""; + //lbBoxL.Visible = false; + //LbBoxR.Visible = false; + //txtBoxL.Visible = false; + //txtBoxR.Visible = false; + label7.Text = ""; + label10.Text = ""; + timer1.Enabled = false; + timer1.Interval = Convert.ToInt32(ConfigurationManager.AppSettings["InterVal"]); + + if (CreateServer()) + { + if (ConnectServer(strHostIP, "Kepware.KEPServerEX.V6")) + { + Connected = true; + + #region 创建组 + + opcGroups = opcServer.OPCGroups; + opcGroup1 = opcGroups.Add("DeviceRead"); + opcGroup2 = opcGroups.Add("DeviceWrite"); + SetGroupProperty(opcGroup1, 500); + SetGroupProperty(opcGroup2, 500); + + #endregion + + #region 创建项R + + opcItems1 = opcGroup1.OPCItems; + opcItems1.DefaultIsActive = true; + + DataTable dt = bll.SearchInfo(ConfigurationManager.AppSettings["DeviceNo"], 0); + if (dt != null && dt.Rows.Count > 0) + { + opcItemm1 = new OPCItem[dt.Rows.Count]; + for (int i = 0; i < dt.Rows.Count; i++) + { + opcItemm1[i] = opcItems1.AddItem(dt.Rows[i]["Address"].ToString(), i); + } + } + + #endregion + + #region 创建项W + + opcItems2 = opcGroup2.OPCItems; + opcItems2.DefaultIsActive = true; + + DataTable dt1 = bll.SearchInfo(ConfigurationManager.AppSettings["DeviceNo"], 1); + if (dt1 != null && dt1.Rows.Count > 0) + { + opcItemm2 = new OPCItem[dt1.Rows.Count]; + for (int i = 0; i < dt1.Rows.Count; i++) + { + opcItemm2[i] = opcItems2.AddItem(dt1.Rows[i]["Address"].ToString(), i); + } + } + + #endregion + + opcGroup1.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(opcGroup1_DataChange); + + #region 初始化页面 + + #region 设备状态 + + if (ReadSingleValueFromOPC1(2).ToLower() == "true") + { + lbState.Text = "等待放件状态"; + } + else + { + lbState.Text = "设备未准备OK"; + } + + #endregion + + #region 运行状态 + + if (ReadSingleValueFromOPC1(0).ToLower() == "true") + { + lbFinish.Text = "运行完成"; + //textBox1.Enabled = true; + } + else + { + lbFinish.Text = "正在运行"; + //textBox1.Enabled = false; + } + + #endregion + + #region 冲焊状态 + + if (ReadSingleValueFromOPC1(4).ToLower() == "true") + { + lbOK.Text = "NG"; + } + else + { + lbOK.Text = "OK"; + } + + #endregion + + #region 设备模式 + + if (ReadSingleValueFromOPC2(1) == 1) + { + lbmode.Text = "手动"; + } + else if (ReadSingleValueFromOPC2(1) == 2) + { + lbmode.Text = "复位"; + } + else if (ReadSingleValueFromOPC2(1) == 3) + { + lbmode.Text = "自动"; + } + else if (ReadSingleValueFromOPC2(1) == 4) + { + lbmode.Text = "半自动"; + } + + #endregion + + #region 当前计划和生产数 + + DataTable pdt = planBLL.SearchPlan(ConfigurationManager.AppSettings["DeviceNo"]); + if (pdt != null && pdt.Rows.Count > 0) + { + lbPlan.Text = pdt.Rows[0]["ProductName"].ToString(); + label7.Text = pdt.Rows[0]["CompleteCount"].ToString() + " / " + pdt.Rows[0]["PlanCount"].ToString(); + } + else + { + lbPlan.Text = ""; + label1.Text = "当前设备没有生产计划!"; + } + + #endregion + + + #endregion + + } + } + else + { + MessageBox.Show("创建OPC服务失败!", "提示", MessageBoxButtons.OK); + Connected = false; + LogHelper.WriteLog("创建OPC服务失败!"); + return; + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + /// + /// 创建服务 + /// + /// + private bool CreateServer() + { + try + { + opcServer = new OPCServer(); + } + catch + { + return false; + } + return true; + } + + /// + /// 连接到服务器 + /// + /// + /// + /// + private bool ConnectServer(string strHostIP, string strHostName) + { + try + { + opcServer.Connect(strHostName, strHostIP); + } + catch + { + return false; + } + return true; + } + + private void SetGroupProperty(OPCGroup opcGroup, int updateRate) + { + opcGroup.IsActive = true; + opcGroup.DeadBand = 0; + opcGroup.UpdateRate = updateRate; + opcGroup.IsSubscribed = true; + } + + /// + /// bool型 + /// + /// + /// + public string ReadSingleValueFromOPC1(int i) + { + object ItemValues; + object Qualities; + object TimeStamps; + + opcItemm1[i].Read(1, out ItemValues, out Qualities, out TimeStamps); + + if ((ItemValues != null) && (Qualities.ToString() != "Good")) + { + return ItemValues.ToString(); + } + else + { + return ""; + } + } + + /// + /// int 型 + /// + /// + /// + public int ReadSingleValueFromOPC2(int i) + { + object ItemValues; + object Qualities; + object TimeStamps; + + opcItemm1[i].Read(1, out ItemValues, out Qualities, out TimeStamps); + + if ((ItemValues != null) && (Qualities.ToString() != "Good")) + { + return Convert.ToInt32(ItemValues.ToString()); + } + else + { + return 0; + } + } + + void opcGroup1_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues,ref Array Qualities, ref Array TimeStamps) + { + try + { + PunchValueRecordBLL bll=new PunchValueRecordBLL(); + PunchValueRecordModel md=new PunchValueRecordModel(); + + for (int i = 1; i <= NumItems; i++) + { + int handle = Convert.ToInt32(ClientHandles.GetValue(i).ToString().Trim()); + string value = ItemValues.GetValue(i).ToString(); + string address = opcItemm1[(Convert.ToInt32(ClientHandles.GetValue(i)))].ItemID; + + #region 焊接完成 0 + + if (handle == 0) + { + if (value == "1" || value.ToUpper() == "TRUE") + { + lbFinish.Text = "运行完成"; + + } + else + { + lbFinish.Text = "正在运行"; + + } + } + + #endregion + + #region 设备模式 1 + + if (handle == 1) + { + if (value == "1") + { + lbmode.Text = "手动"; + } + else if (value == "2") + { + lbmode.Text = "复位"; + } + else if (value == "3") + { + lbmode.Text = "自动"; + } + else if (value == "4") + { + lbmode.Text = "半自动"; + } + } + + #endregion + + #region 设备状态 2 + + if (handle == 2) + { + if (value == "1" || value.ToUpper() == "TRUE") + { + lbState.Text = "等待放件状态"; + label1.Text = "请扫描蒙皮条码"; + + //textBox1.Enabled = true; + textBox1.Text = ""; + textBox1.SelectAll(); + } + else + { + lbState.Text = "设备未准备OK"; + label1.Text = ""; + //textBox1.Enabled = false; + } + } + + #endregion + + #region 更换雷达支架 3 + + if (handle == 3 || handle == 4) + { + if (value == "1" || value.ToUpper() == "TRUE") + { + IsChangeBox = true; + } + else + { + IsChangeBox = false; + } + } + + #endregion + + #region 冲焊状态 4 + + if (handle == 5) + { + if (value == "1" || value.ToUpper() == "TRUE") + { + lbOK.Text = "NG"; + } + else + { + lbOK.Text = "OK"; + } + } + + #endregion + + md.ID = Guid.NewGuid().ToString(); + md.DeviceNo = ConfigurationManager.AppSettings["DeviceNo"].ToString(); + md.Address = address; + md.ItemValue = value; + + bll.AddInfo(md); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + try + { + PunchRecordBLL bll=new PunchRecordBLL(); + PunchPlanBLL planBll=new PunchPlanBLL(); + PunchRecordModel md=new PunchRecordModel(); + PunchPlanModel pmd=new PunchPlanModel(); + string partNo = "",PlanID="",color1="",color2="",color3=""; + string barCode = ""; + ProductBLL productBll=new ProductBLL(); + BarCodeBLL barbll = new BarCodeBLL(); + StockInBLL sbll=new StockInBLL(); + PunchAndStationBLL pasbll=new PunchAndStationBLL(); + + if (e.KeyCode == Keys.Enter) + { + if (textBox1.Text.Trim() == "") + { + label1.Text = "请扫描蒙皮条码"; + MessageBox.Show("请扫描蒙皮条码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + textBox1.Focus(); + return; + } + + if (lbState.Text == "设备未准备OK") + { + label1.Text = "设备未准备OK,不能扫描蒙皮!"; + MessageBox.Show("设备未准备OK,不能扫描蒙皮!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + label1.Text = ""; + + #region 所有设备都改成读取塑件条码,故屏蔽此段代码 wff 2020-05-22 + //if (ConfigurationManager.AppSettings["DeviceNo"] == "BMPTJQSB-05-123") + //{ + // if (textBox1.Text.Trim().Length != 20) + // { + // label1.Text = "扫描的蒙皮条码有误,请重新扫描"; + // MessageBox.Show("扫描的蒙皮条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + // textBox1.SelectAll(); + // return; + // } + // else + // { + // #region 通过存货代码查找零件号 + + // DataTable dt4 = productBll.SearchIsImportByStockNo(textBox1.Text.Substring(0, 10)); + // if (dt4 != null && dt4.Rows.Count > 0) + // { + // partNo = dt4.Rows[0]["PartNo"].ToString(); + // barCode = partNo + "." + textBox1.Text.Substring(10, 6) + "." + + // textBox1.Text.Substring(16, 4).PadLeft(6, '0'); + // } + // else + // { + // label1.Text = "扫描的蒙皮条码有误,请重新扫描"; + // MessageBox.Show("扫描的蒙皮条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + // textBox1.SelectAll(); + // return; + // } + + // #endregion + // } + //} + //else + //{ + // string[] aa = textBox1.Text.Split(';'); + // if (aa.Length < 5) + // { + // label1.Text = "扫描的蒙皮条码有误,请重新扫描"; + // MessageBox.Show("扫描的蒙皮条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + // textBox1.SelectAll(); + // return; + // } + + // barCode = aa[0]; + + // string[] bb = barCode.Split('.'); + // partNo = bb[0]; + //} + #endregion + + #region 新增 + + #region 校验数据 + + if (textBox1.Text.Trim().Contains('.') == false) //一维码 + { + if (textBox1.Text.Trim().Length != 20) + { + label1.Text = "扫描的蒙皮条码有误,请重新扫描"; + MessageBox.Show("扫描的蒙皮条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + textBox1.SelectAll(); + return; + } + DataTable twodt = barbll.SearchOneBarCode(textBox1.Text.Trim(), 1); + if (twodt != null && twodt.Rows.Count > 0) + { + barCode = textBox1.Text.Trim(); + } + else + { + label1.Text = "扫描的蒙皮条码有误,请重新扫描"; + MessageBox.Show("扫描的蒙皮条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + textBox1.SelectAll(); + return; + } + } + else //二维码,将二维码转换成一维码判断 + { + DataTable twodt = barbll.SearchOneBarCode(textBox1.Text.Trim(),2); + if (twodt != null && twodt.Rows.Count > 0) + { + barCode = twodt.Rows[0]["OneBarCode"].ToString(); + } + else + { + label1.Text = "扫描的蒙皮条码有误,请重新扫描"; + MessageBox.Show("扫描的蒙皮条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + textBox1.SelectAll(); + return; + } + } + + #endregion + + + #region 根据一维码查找颜色 + + DataTable colordt = sbll.SearchColor(barCode); + + if (colordt != null && colordt.Rows.Count > 0) + { + partNo = colordt.Rows[0]["paintCode"].ToString(); + } + else + { + label1.Text = "扫描的蒙皮无颜色信息,请重新扫描"; + MessageBox.Show("扫描的蒙皮无颜色信息,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + textBox1.SelectAll(); + return; + } + + #endregion + + #endregion + + DataTable dt2 = planBll.SearchPlan(ConfigurationManager.AppSettings["DeviceNo"]); + if (dt2 != null && dt2.Rows.Count > 0) + { + #region 0604注释 + //if (dt2.Rows[0]["PartNo"].ToString() == partNo) + //{ + // PlanID = dt2.Rows[0]["ID"].ToString(); + //} + //else + //{ + // #region 发送报警 + + // opcItemm2[0].Write("1"); + + // #endregion + + // label1.Text = "扫描的蒙皮和计划不一致,请重新扫描蒙皮!"; + // MessageBox.Show("扫描的蒙皮和计划不一致,请重新扫描蒙皮!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + // textBox1.SelectAll(); + // return; + //} + #endregion + + #region 判定半成品零件号是否和计划零件号匹配 + + DataTable isMath = pasbll.IsMath(dt2.Rows[0]["PartNo"].ToString(), partNo); + if (isMath != null && isMath.Rows.Count > 0) + { + //匹配 + PlanID = dt2.Rows[0]["ID"].ToString(); + } + else + { + #region 发送报警 + + opcItemm2[0].Write("1"); + + #endregion + + label1.Text = "扫描的蒙皮和计划不一致,请重新扫描蒙皮!"; + MessageBox.Show("扫描的蒙皮和计划不一致,请重新扫描蒙皮!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + textBox1.SelectAll(); + return; + } + + #endregion + } + else + { + label1.Text = "此设备没有计划,请联系计划员!"; + MessageBox.Show("此设备没有计划,请联系计划员!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + textBox1.SelectAll(); + return; + } + + + DataTable dt1 = bll.SearchInfo(barCode); + if (dt1 != null && dt1.Rows.Count > 0) + { + #region 重复扫描 + + DialogResult result = MessageBox.Show("条码为"+ barCode+"的蒙皮已经冲孔,是否重新冲孔?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass=new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + + if (txtBoxL.Text.Trim() != "" && txtBoxR.Text.Trim() != "") + { + string[] barCode1 = txtBoxL.Text.Split('.'); + string[] part1 = barCode1[0].Split('-'); + + color1 = part1[1].ToString(); + + string[] barCode2 = txtBoxR.Text.Split('.'); + string[] part = barCode2[0].Split('-'); + + color2 = part[1].ToString(); + + if (partNo.Substring(partNo.Length - 4, 4) == color2) + { + #region 发送启动设备指令 + + if (partNo.Contains("DM")) //高配 + { + opcItemm2[3].Write("1"); + opcItemm2[1].Write("1"); + } + else if (partNo.Contains("DP")) //低配 + { + opcItemm2[3].Write("3"); + opcItemm2[2].Write("1"); + } + else //不区分高低配 + { + opcItemm2[3].Write("1"); + opcItemm2[1].Write("1"); + } + + label10.BackColor = Color.Green; + timer1.Start(); + + #endregion + } + + else + { + opcItemm2[0].Write("1"); + label1.Text = "雷达支架和蒙皮不匹配!"; + MessageBox.Show("雷达支架和蒙皮不匹配!", "提示", MessageBoxButtons.OK, + MessageBoxIcon.Information); + textBox1.SelectAll(); + return; + } + } + else + { + #region 发送启动设备指令 + + if (partNo.Contains("DM")) //高配 + { + opcItemm2[3].Write("1"); + opcItemm2[1].Write("1"); + } + else if (partNo.Contains("DP")) //低配 + { + opcItemm2[3].Write("3"); + opcItemm2[2].Write("1"); + } + else //不区分高低配 + { + opcItemm2[3].Write("1"); + opcItemm2[1].Write("1"); + } + #endregion + + label10.BackColor = Color.Green; + timer1.Start(); + } + + #region 增加产量 + + pmd.ID = PlanID; + planBll.UpdateDty(pmd); + + #endregion + + #region 更新计划和产量 + + DataTable pdt = planBll.SearchPlan(ConfigurationManager.AppSettings["DeviceNo"]); + if (pdt != null && pdt.Rows.Count > 0) + { + lbPlan.Text = pdt.Rows[0]["ProductName"].ToString(); + label7.Text = pdt.Rows[0]["CompleteCount"].ToString() + " / " + pdt.Rows[0]["PlanCount"].ToString(); + } + else + { + lbPlan.Text = ""; + label1.Text = "当前设备没有生产计划!"; + label7.Text = ""; + } + + #endregion + + textBox1.Focus(); + textBox1.SelectAll(); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + + #endregion + } + else + { + #region 第一次扫描,判断产品和计划是否一致 + + if (IsChangeBox == false) + { + if (txtBoxL.Text.Trim() != "" && txtBoxR.Text.Trim() != "") + { + string[] barCode1 = txtBoxL.Text.Split('.'); + string[] part1 = barCode1[0].Split('-'); + + color1 = part1[1].ToString(); + + string[] barCode2 = txtBoxR.Text.Split('.'); + string[] part = barCode2[0].Split('-'); + + color2 = part[1].ToString(); + + if (partNo.Substring(partNo.Length - 4, 4) == color2) + { + #region 发送启动信号 + + if (partNo.Contains("DM")) //高配 + { + opcItemm2[3].Write("1"); + opcItemm2[1].Write("1"); + } + else if (partNo.Contains("DP")) //低配 + { + opcItemm2[3].Write("3"); + opcItemm2[2].Write("1"); + } + else //不区分高低配 + { + opcItemm2[3].Write("1"); + opcItemm2[1].Write("1"); + } + + #endregion + + label10.BackColor = Color.Green; + timer1.Start(); + + } + else + { + opcItemm2[0].Write("1"); + label1.Text = "雷达支架和蒙皮不匹配!"; + MessageBox.Show("雷达支架和蒙皮不匹配!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + textBox1.SelectAll(); + return; + } + } + else + { + #region 发送启动信号 + + if (partNo.Contains("DM")) //高配 + { + opcItemm2[3].Write("1"); + opcItemm2[1].Write("1"); + } + else if (partNo.Contains("DP")) //低配 + { + opcItemm2[3].Write("3"); + opcItemm2[2].Write("1"); + } + else //不区分高低配 + { + opcItemm2[3].Write("1"); + opcItemm2[1].Write("1"); + } + + #endregion + + label10.BackColor = Color.Green; + timer1.Start(); + } + + } + else + { + #region 校验雷达支架 + + //lbBoxL.Visible = true; + //LbBoxR.Visible = true; + //txtBoxL.Visible = true; + //txtBoxR.Visible = true; + + //txtBoxL.Focus(); + + #region 校验左支架 + + //string[] barCode1 = txtBoxL.Text.Split('.'); + //if (barCode1.Length > 0) + //{ + // string[] part = barCode1[0].Split('-'); + // if (part.Length == 2) + // { + // color1 = part[1].ToString(); + // if (partNo.Substring(partNo.Length - 4, partNo.Length) == color1) + // { + // txtBoxR.Focus(); + // } + // else + // { + // #region 发送报警 + + // opcItemm2[0].Write("1"); + + // #endregion + // } + // } + // else + // { + // label1.Text = "左雷达支架条码有误,请重新扫描!"; + // MessageBox.Show("左雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + // txtBoxL.SelectAll(); + // return; + // } + //} + //else + //{ + // label1.Text = "左雷达支架条码有误,请重新扫描!"; + // MessageBox.Show("左雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + // txtBoxL.SelectAll(); + // return; + //} + + #endregion + + #region 校验右支架 + + //string[] barCode2 = txtBoxR.Text.Split('.'); + + //if (barCode2.Length > 0) + //{ + // string[] part = barCode2[0].Split('-'); + // if (part.Length == 2) + // { + // color2 = part[1].ToString(); + // if (partNo.Substring(partNo.Length - 4, partNo.Length) == color2) + // { + // lbBoxL.Visible = false; + // LbBoxR.Visible = false; + // txtBoxL.Visible = false; + // txtBoxR.Visible = false; + // } + // else + // { + // #region 发送报警 + + // opcItemm2[0].Write("1"); + + // #endregion + // } + // } + // else + // { + // label1.Text = "右雷达支架条码有误,请重新扫描!"; + // MessageBox.Show("右雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + // txtBoxR.SelectAll(); + // return; + // } + //} + //else + //{ + // label1.Text = "右雷达支架条码有误,请重新扫描!"; + // MessageBox.Show("右雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + // txtBoxL.SelectAll(); + // return; + //} + + #endregion + + #endregion + } + + #region 存入记录表 + + md.ID = Guid.NewGuid().ToString(); + md.BarCode = barCode; + bll.AddInfo(md); + + #endregion + + #region 增加产量 + + pmd.ID = PlanID; + planBll.UpdateDty(pmd); + + #endregion + + #region 更新计划和产量 + + DataTable pdt = planBll.SearchPlan(ConfigurationManager.AppSettings["DeviceNo"]); + if (pdt != null && pdt.Rows.Count > 0) + { + lbPlan.Text = pdt.Rows[0]["ProductName"].ToString(); + label7.Text = pdt.Rows[0]["CompleteCount"].ToString() + " / " + pdt.Rows[0]["PlanCount"].ToString(); + } + else + { + lbPlan.Text = ""; + label1.Text = "当前设备没有生产计划!"; + label7.Text = ""; + } + + #endregion + + + label1.Text = ""; + textBox1.SelectAll(); + + #endregion + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void txtBoxL_KeyDown(object sender, KeyEventArgs e) + { + try + { + string color1 = "", color2 = "", color3 = ""; + if (e.KeyCode == Keys.Enter) + { + string[] barCode1 = txtBoxL.Text.Split('.'); + if (barCode1.Length > 0) + { + string[] part = barCode1[0].Split('-'); + if (part.Length == 2) + { + txtBoxR.Focus(); + } + else + { + label1.Text = "左雷达支架条码有误,请重新扫描!"; + MessageBox.Show("左雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxL.SelectAll(); + return; + } + } + else + { + label1.Text = "左雷达支架条码有误,请重新扫描!"; + MessageBox.Show("左雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxL.SelectAll(); + return; + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void txtBoxR_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string color1 = "", color2 = "", color3 = ""; + + string[] barCode2 = txtBoxR.Text.Split('.'); + + if (barCode2.Length > 0) + { + string[] part = barCode2[0].Split('-'); + if (part.Length == 2) + { + color2 = part[1].ToString(); + } + else + { + label1.Text = "右雷达支架条码有误,请重新扫描!"; + MessageBox.Show("右雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxR.SelectAll(); + return; + } + + string[] barCode1 = txtBoxL.Text.Split('.'); + string[] part1 = barCode1[0].Split('-'); + + color1 = part1[1].ToString(); + + if (color1 != color2) + { + label1.Text = "左右雷达支架不匹配,请重新扫描!"; + MessageBox.Show("左右雷达支架不匹配,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxR.SelectAll(); + return; + } + else + { + textBox1.Focus(); + } + } + else + { + label1.Text = "右雷达支架条码有误,请重新扫描!"; + MessageBox.Show("右雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxL.SelectAll(); + return; + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void timer1_Tick(object sender, EventArgs e) + { + label10.BackColor = panel1.BackColor; + timer1.Stop(); + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/Form1.resx b/SjMes/PunchAssemble/PunchAndWeld/Form1.resx new file mode 100644 index 0000000..1f666f2 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Form1.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill.Designer.cs new file mode 100644 index 0000000..c0c35b8 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill.Designer.cs @@ -0,0 +1,246 @@ +namespace PunchAndWeld +{ + partial class FrmDoorSill + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.ColumnHeader 零件号; + this.label9 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.listView1 = new System.Windows.Forms.ListView(); + this.计划单 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.数量 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.零件名称 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.listView2 = new System.Windows.Forms.ListView(); + this.零件信息 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.完成数量 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.button3 = new System.Windows.Forms.Button(); + this.textBox4 = new System.Windows.Forms.TextBox(); + 零件号 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.SuspendLayout(); + // + // 零件号 + // + 零件号.Text = "零件号"; + 零件号.Width = 120; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.ForeColor = System.Drawing.Color.White; + this.label9.Location = new System.Drawing.Point(930, 7); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(338, 67); + this.label9.TabIndex = 15; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.Click += new System.EventHandler(this.label9_Click); + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(39, 265); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(298, 76); + this.label1.TabIndex = 16; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(389, 261); + this.textBox1.Margin = new System.Windows.Forms.Padding(2); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(300, 84); + this.textBox1.TabIndex = 17; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("微软雅黑", 18F); + this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.label2.Location = new System.Drawing.Point(750, 220); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(139, 59); + this.label2.TabIndex = 18; + this.label2.Text = "扫描计划单"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // textBox2 + // + this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(894, 231); + this.textBox2.Margin = new System.Windows.Forms.Padding(2); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(335, 39); + this.textBox2.TabIndex = 19; + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // listView1 + // + this.listView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(46)))), ((int)(((byte)(64))))); + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.计划单, + 零件号, + this.数量, + this.零件名称}); + this.listView1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.listView1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.listView1.FullRowSelect = true; + this.listView1.GridLines = true; + this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listView1.Location = new System.Drawing.Point(756, 291); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(473, 656); + this.listView1.TabIndex = 20; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // 计划单 + // + this.计划单.Text = "计划单"; + this.计划单.Width = 120; + // + // 数量 + // + this.数量.Text = "数量"; + // + // 零件名称 + // + this.零件名称.Text = "零件名称"; + this.零件名称.Width = 168; + // + // listView2 + // + this.listView2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(46)))), ((int)(((byte)(64))))); + this.listView2.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.零件信息, + this.完成数量}); + this.listView2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.listView2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.listView2.GridLines = true; + this.listView2.Location = new System.Drawing.Point(34, 376); + this.listView2.Name = "listView2"; + this.listView2.Size = new System.Drawing.Size(655, 571); + this.listView2.TabIndex = 21; + this.listView2.UseCompatibleStateImageBehavior = false; + this.listView2.View = System.Windows.Forms.View.Details; + // + // 零件信息 + // + this.零件信息.Text = "零件信息"; + this.零件信息.Width = 500; + // + // 完成数量 + // + this.完成数量.Text = "完成数量"; + this.完成数量.Width = 150; + // + // button3 + // + this.button3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); + this.button3.Font = new System.Drawing.Font("微软雅黑", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(1029, 119); + this.button3.Margin = new System.Windows.Forms.Padding(2); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(210, 50); + this.button3.TabIndex = 24; + this.button3.Text = "补打标签"; + this.button3.UseVisualStyleBackColor = false; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // textBox4 + // + this.textBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(436, 475); + this.textBox4.Margin = new System.Windows.Forms.Padding(2); + this.textBox4.Multiline = true; + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(453, 69); + this.textBox4.TabIndex = 37; + this.textBox4.Visible = false; + this.textBox4.DoubleClick += new System.EventHandler(this.textBox4_DoubleClick); + this.textBox4.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox4_KeyDown); + // + // FrmDoorSill + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = global::PunchAndWeld.Properties.Resources.background1; + this.ClientSize = new System.Drawing.Size(1280, 1024); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.button3); + this.Controls.Add(this.listView2); + this.Controls.Add(this.listView1); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.label2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.Controls.Add(this.label9); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmDoorSill"; + this.Text = "生产"; + this.Load += new System.EventHandler(this.FrmDoorSill_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader 计划单; + private System.Windows.Forms.ColumnHeader 数量; + private System.Windows.Forms.ColumnHeader 零件名称; + private System.Windows.Forms.ListView listView2; + private System.Windows.Forms.ColumnHeader 零件信息; + private System.Windows.Forms.ColumnHeader 完成数量; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.TextBox textBox4; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill.cs new file mode 100644 index 0000000..e9540fe --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill.cs @@ -0,0 +1,826 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using DBUtility; +using gregn6Lib; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.BLL.Mistake247; +using MESClassLibrary.BLL.PunchAndWeld; +using PunchAndWeld.DataSouce; +using PunchAndWeld.WebReference; + +namespace PunchAndWeld +{ + public partial class FrmDoorSill : Form + { + PunchAdressBLL bll = new PunchAdressBLL(); + public bool IsChangeBox = false; + public bool IsPass = false; + private string IsHigh = "1"; + + private GridppReport Report = new GridppReport(); + private string oneBarCode = ""; + string[] partNo1=new string[10]; + string zcPartNo = "", planID = "", zcPartName="",zcHigh="" ,sn; + + string stationNo = "", stationId = ""; + + public FrmDoorSill() + { + InitializeComponent(); + } + + private void FrmDoorSill_Load(object sender, EventArgs e) + { + stationNo = ConfigurationManager.AppSettings["StationNo"]; + label1.Text = ProScreenFunc.GetStation(stationNo); + stationId = ProScreenFunc.GetStationId(stationNo); + Control.CheckForIllegalCrossThreadCalls = false; + + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + textBox4.Visible = false; + textBox2.TabIndex = 0; + textBox2.Select(); + if (ConfigurationManager.AppSettings["IsHaveVisual"] == "1") + { + SqlStart(); + } + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + label9.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + if (string.IsNullOrWhiteSpace(textBox2.Text.Trim())) + { + MessageBox.Show("订单号不能为空!", "提示", MessageBoxButtons.OK); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + + if (InitList()) return; + + InitProduct(); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private bool InitList() + { + Plan247BLL bll = new Plan247BLL(); + int a = 0; + this.listView1.Items.Clear(); + + //DataTable dt = bll.SearhByOrderNo(textBox2.Text.Trim()); + DataTable dt = ProScreenFunc.GetPlanInfoByOrderNo(textBox2.Text.Trim()); + if (dt != null && dt.Rows.Count > 0) + { + + + partNo1 = new string[dt.Rows.Count]; + for (int i = 0; i < dt.Rows.Count; i++) + { + if (Convert.ToInt32(dt.Rows[i]["IsFinish"].ToString()) == 1) + { + a += 1; + if (a == dt.Rows.Count) + { + MessageBox.Show("订单已完成,请扫描其他订单!", "提示", MessageBoxButtons.OK); + textBox2.Focus(); + return true; + } + } + else + { + partNo1[i] = dt.Rows[i]["PartNo"].ToString(); + ListViewItem lvi = new ListViewItem(dt.Rows[i]["OrderNo"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["PartNo"].ToString()); //后面添加的Item都为SubItems ,即为子项 + lvi.SubItems.Add(dt.Rows[i]["OrderCount"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["ProductName"].ToString()); + //lvi.SubItems.Add(dt.Rows[i]["CompleteCount"].ToString()); + listView1.Items.Add(lvi); + } + } + + } + else + { + MessageBox.Show("订单号不存在,请重新扫描!", "提示", MessageBoxButtons.OK); + textBox2.SelectAll(); + textBox2.Focus(); + return true; + } + + return false; + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + if (string.IsNullOrWhiteSpace(textBox1.Text)) + { + MessageBox.Show("请扫描订单号!", "提示", MessageBoxButtons.OK); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + + + if (ConfigurationManager.AppSettings["IsHaveVisual"] == "1") + { + if (ProScreenFunc.HaveNotPrint(stationId)) + { + MessageBox.Show("存在未打印标签的产品,不允许扫描!"); + textBox1.SelectAll(); + return; + } + } + + CheckPartAndProduct(); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + public void CheckPartAndProduct() + { + textBox1.SelectAll(); + string barcode = textBox1.Text.Trim(); + + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + + } + oneBarCode = barcode; + + + + if (ProScreenFunc.HaveScan(barcode)) + { + DialogResult result = MessageBox.Show("条码为" + barcode + "的蒙皮已经冲孔,是否重新冲孔?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + + ScanBarcode(barcode); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + else + { + return; + } + } + else + { + ScanBarcode(barcode); + } + } + + private void ScanBarcode(string barcode) + { + //string productID1 = textBox1.Tag.ToString().Trim(); + string productID1 = ""; + string productID2 = ""; + zcPartNo = ""; + productID1 = ""; + zcPartName = ""; + zcHigh = ""; + + string[] codeSpecial = { "2200000057", "2200000058" }; + //string[] codeSpecial = ProScreenFunc.GetSpecialStockNo(); + string code = barcode.Substring(0, 10); + if (codeSpecial.Contains(code)) + { + productID2 = ProScreenFunc.GetProductID(code, ""); + //AfterScanBarcode(barcode, productID2, productID1, this.Tag.ToString().Trim()); + } + else + { + if (barcode.Substring(0, 2) != "22") + { + string[] codeSpecial1 = ProScreenFunc.GetSpecialStockNo(); + string code1 = barcode.Substring(0, 10); + if (codeSpecial1.Contains(code1)) + { + productID2 = ProScreenFunc.GetProductID(code, ""); + //AfterScanBarcode(barcode, productID2, productID1, this.Tag.ToString().Trim()); + } + else + { + productID2 = ProScreenFunc.GetProductID(barcode); + if (string.IsNullOrWhiteSpace(productID2)) + { + string stockNo = barcode.Substring(0, 10); + productID2 = ProScreenFunc.GetProductID(stockNo, ""); + } + } + } + + bool isScan = ProScreenFunc.IsScan(barcode); + + DataTable dt1 = ProScreenFunc.GetZCPartInfo(productID2, stationNo); + if (dt1 != null && dt1.Rows.Count > 0) + { + for (int i = 0; i < dt1.Rows.Count; i++) + { + if (stationNo == "ZP75" ||stationNo == "ZP76") + { + if (isScan && dt1.Rows[i]["IsHigh"].ToString() == "1") + { + zcPartNo = dt1.Rows[i]["PartNo"].ToString(); + productID1 = dt1.Rows[i]["ProductID"].ToString(); + zcPartName = dt1.Rows[i]["ProductName"].ToString(); + zcHigh = "高配"; + } + + if (!isScan && dt1.Rows[i]["IsHigh"].ToString() == "0") + { + zcPartNo = dt1.Rows[i]["PartNo"].ToString(); + productID1 = dt1.Rows[i]["ProductID"].ToString(); + zcPartName = dt1.Rows[i]["ProductName"].ToString(); + zcHigh = "低配"; + } + } + else + { + zcPartNo = dt1.Rows[i]["PartNo"].ToString(); + productID1 = dt1.Rows[i]["ProductID"].ToString(); + zcPartName = dt1.Rows[i]["ProductName"].ToString(); + } + } + + } + + + if (!((System.Collections.IList)partNo1).Contains(zcPartNo)) + { + MessageBox.Show("订单中无此计划,请检查后再扫描"); + textBox1.Text = ""; + textBox1.Focus(); + } + else + { + + ScanAll.ScanResult = false; + + //OtherPart parts = ProScreenFunc.HaveOtherPart(label1.Text.Trim(), productID1); + OtherPart parts = ProScreenFunc.HaveOtherPart(label1.Text.Trim(), productID1); + if ((parts != null) && ((!string.IsNullOrWhiteSpace(parts.productID3)) || (!string.IsNullOrWhiteSpace(parts.productID4)) || (!string.IsNullOrWhiteSpace(parts.productID5)))) + { + FrmProScreen3 frm3 = new FrmProScreen3(parts); + frm3.ShowDialog(); + } + else + { + ScanAll.ScanResult = true; + } + + + if (ScanAll.ScanResult) + { + planID = ProScreenFunc.GetPlanIDByOrderNo(textBox2.Text.Trim(), zcPartNo); + if (ConfigurationManager.AppSettings["IsHaveVisual"] != "1") + { + AfterScanBarcode(barcode, zcPartNo, productID2, productID1, planID,stationId); + } + else + { + ProScreenFunc.SavePartAndProduct(barcode, productID2, productID1, textBox2.Text.Trim(), textBox2.Text.Trim().Substring(0, 1) + "班", planID,stationId, ConfigurationManager.AppSettings["StationDescription"]); + ProScreenFunc.SaveZcCode(barcode, zcPartNo); + } + } + } + } + } + + private void AfterScanBarcode(string barcode,string zcPartNo, string productID2, string productID1, string planID,string stationId) + { + if ((IsChangeBox == true && IsPass) || (IsChangeBox == false)) + { + try + { + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo(zcPartNo, time.ToString("yyMMdd")); + if (tmp == "") + { + sn = + zcPartNo + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + } + catch (Exception e) + { + MessageBox.Show("连接数据库超时!"); + return; + } + #region 调WMS接口 + + try + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + partNo = zcPartNo; + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + if (webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1)) + { + + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + #endregion + + #region 存储 + + if (ProScreenFunc.SavePartAndProduct1(barcode, productID2, productID1, textBox2.Text.Trim(), textBox2.Text.Trim().Substring(0, 1) + "班", planID, sn,stationId, ConfigurationManager.AppSettings["StationDescription"])<=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + ProScreenFunc.SaveZcCode(barcode, zcPartNo); + + #endregion + + #region 完成数量+1 + + //bll.UpdateCount(zcPartNo, textBox2.Text.Trim()); + ProScreenFunc.AddCompleteCount(planID); + + #endregion + + #region 打印标签 + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + string path = ""; + if (zcPartNo.Contains("A2477900588-")) + { + path = Application.StartupPath + @"\aaa1.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize1); + } + else + { + path = Application.StartupPath + @"\aaa.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize); + } + + Report.Register(""); + Report.LoadFromFile(path); + + //Report.DesignPaperOrientation = GRPaperOrientation.grpoLandscape; + //report.PrintPreview(true); + Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + #endregion + + InitProduct(); + } + else + { + MessageBox.Show("雷达支架不匹配"); + } + } + + private void ReportInitialize() + { + + Report.ParameterByName("SerialNo").Value = sn; + Report.ParameterByName("oneBarCode").Value = oneBarCode; + Report.ParameterByName("zcPartNo").Value = zcPartNo; + Report.ParameterByName("zcName").Value = zcPartName; + //Report.ParameterByName("zcHigh").Value = zcHigh; 214门槛用 + } + + private void ReportInitialize1() + { + string barcode = textBox1.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + DateTime time = DateTime.Now; + if (zcPartNo.Contains("A2477900588-")) + { + Report.ParameterByName("Des").Value = "X247S"; + } + if (zcPartNo.Contains("A2477900000-")) + { + Report.ParameterByName("Des").Value = "H247S"; + } + Report.ParameterByName("PartNo").Value = zcPartNo; + Report.ParameterByName("PartName").Value = zcPartName; + Report.ParameterByName("BatchNo").Value = time.ToString("yyMMdd"); + + try + { + string tmp = ProScreenFunc.SerialNo(zcPartNo, time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + zcPartNo + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + Report.ParameterByName("SerialNo").Value = sn; + Report.ParameterByName("BarCode").Value = sn + ";24;2217;;.0;" + time.ToString("yyyy/MM/dd"); + Report.ParameterByName("oneBarCode").Value = barcode; + } + catch (Exception e) + { + MessageBox.Show("连接数据库超时!"); + } + + } + + private void InitProduct() + { + try + { + int a = 0; + this.listView2.Items.Clear(); + + DataTable dt = ProScreenFunc.GetPlanInfoByOrderNo(textBox2.Text.Trim()); + if (dt != null && dt.Rows.Count > 0) + { + for (int i = 0; i < dt.Rows.Count; i++) + { + ListViewItem lvi = new ListViewItem(dt.Rows[i]["PartNo"].ToString()); + if (dt.Rows[i]["PartNo"].ToString() == zcPartNo) + { + lvi.BackColor = Color.LimeGreen; + } + lvi.SubItems.Add(dt.Rows[i]["CompleteCount"].ToString()); + listView2.Items.Add(lvi); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + private void label9_Click(object sender, EventArgs e) + { + Environment.Exit(0); + } + + private void button3_Click(object sender, EventArgs e) + { + + DialogResult result = MessageBox.Show("是否补打标签?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + textBox4.Visible = true; + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + return; + } + }; + pass.ShowDialog(); + } + else + { + return; + } + + } + + private void textBox4_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox4.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + DataTable dtHg = ProScreenFunc.GetGh(barcode); + if (dtHg == null || dtHg.Rows.Count < 1) + { + MessageBox.Show("未装配,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + + DataTable dtBl = ProScreenFunc.GetBl(barcode); + if (dtBl != null && dtBl.Rows.Count > 0) + { + DateTime hgTime = (DateTime)Tools.NumericParse.StringToDateTime("1900-01-01 00:00:00"); + DataTable dtHG1 = ProScreenFunc.GetHG_New(barcode); + if (dtHG1 != null && dtHG1.Rows.Count > 0) + { + hgTime = (DateTime)Tools.NumericParse.StringToDateTime(dtHG1.Rows[0]["CreateTime"].ToString()); + } + + DateTime blTime = (DateTime)Tools.NumericParse.StringToDateTime(dtBl.Rows[0]["createTime"].ToString()); + if (DateTime.Compare(blTime, hgTime) > 0) + { + MessageBox.Show("产品不良,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + } + + LogSysBLL.AddInfo("条码:" + barcode + "补打标签", MethodBase.GetCurrentMethod()); + string zcID = dtHg.Rows[0]["ZcID"].ToString(); + string zcSn = dtHg.Rows[0]["SerialNo"].ToString(); + ZcPrintLabel zl = ProScreenFunc.GetZcPrintLabel(zcID); + if (zl != null && zl.zcPartNo != null && zl.zcName != null) + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + if (zl.zcPartNo.Contains("A2477900588-") || zl.zcPartNo.Contains("A2477900000-")) + { + string path = System.Windows.Forms.Application.StartupPath + @"\aaa1.grf"; + + GridppReport Report2 = new GridppReport(); + Report2.Register(""); + Report2.LoadFromFile(path); + if (zl.zcPartNo.Contains("A2477900588-")) + { + Report2.ParameterByName("Des").Value = "X247S"; + } + if (zl.zcPartNo.Contains("A2477900000-")) + { + Report2.ParameterByName("Des").Value = "H247S"; + } + Report2.ParameterByName("PartNo").Value = zl.zcPartNo; + Report2.ParameterByName("PartName").Value = zl.zcName; + string sn = dtHg.Rows[0]["SerialNo"].ToString(); + Report2.ParameterByName("SerialNo").Value = sn; + string[] tmp = sn.Split('.'); + Report2.ParameterByName("BarCode").Value = sn + ";24;2217;;.0;" + tmp[1]; + Report2.ParameterByName("oneBarCode").Value = barcode; + Report2.ParameterByName("BatchNo").Value = tmp[1]; + Report2.Print(false); + textBox4.SelectAll(); + } + else + { + string path = System.Windows.Forms.Application.StartupPath + @"\aaa.grf"; + + GridppReport Report1 = new GridppReport(); + Report1.Register(""); + Report1.LoadFromFile(path); + Report1.ParameterByName("oneBarCode").Value = barcode; + + Report1.ParameterByName("zcPartNo").Value = zl.zcPartNo; + Report1.ParameterByName("SerialNo").Value = zcSn; + Report1.ParameterByName("zcName").Value = zl.zcName; + Report1.Print(false); + textBox4.SelectAll(); + } + } + } + else + { + MessageBox.Show("根据总成号找不到对应名称,请维护基础数据!"); + textBox4_DoubleClick(sender, e); + return; + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + textBox4_DoubleClick(sender, e); + } + } + else if (e.KeyCode == Keys.Escape) + { + textBox4_DoubleClick(sender, e); + } + } + + private void textBox4_DoubleClick(object sender, EventArgs e) + { + textBox4.Text = ""; + textBox4.Visible = false; + } + + private void SqlStart() + { + try + { + SqlDependency.Start(SqlHelper.SqlConnString); + SqlDependencyWatch(); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void SqlDependencyWatch() + { + string sSQL = "SELECT [ToVisual] FROM [dbo].[tb_Punch_Code_Record]"; + + using (SqlConnection connection = new SqlConnection(SqlHelper.SqlConnString)) + { + using (SqlCommand command = new SqlCommand(sSQL, connection)) + { + command.CommandType = CommandType.Text; + connection.Open(); + SqlDependency dependency = new SqlDependency(command); + dependency.OnChange += new OnChangeEventHandler(SQLTableOnChange); + SqlDataReader sdr = command.ExecuteReader(); + } + } + } + + private void SQLTableOnChange(object sender, SqlNotificationEventArgs e) + { + SqlDependencyWatch(); + AfterScanBarcode1(); + } + + private void AfterScanBarcode1() + { + try + { + string ID = "", barcode = "", productID2 = "", productID1 = ""; + DataTable dt1 = ProScreenFunc.HavePrint(stationId); + if (dt1 != null && dt1.Rows.Count > 0) + { + //if (dt1.Rows[0]["PlanID"].ToString() != base.Tag.ToString().Trim()) + //{ + // MessageBox.Show("产品和计划不匹配"); + // return; + //} + //else + //{ + ID = dt1.Rows[0]["ID"].ToString(); + barcode = dt1.Rows[0]["barcode"].ToString(); + oneBarCode = barcode; + + //productID2 = dt1.Rows[0]["BcpID"].ToString(); + //productID1 = dt1.Rows[0]["ZcID"].ToString(); + zcPartNo = dt1.Rows[0]["PartNo"].ToString(); + zcPartName = dt1.Rows[0]["ProductName"].ToString(); + planID = dt1.Rows[0]["PlanID"].ToString(); + //} + } + else + { + return; + } + this.Invoke((EventHandler) (delegate + { + try + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + partNo = zcPartNo; + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + ProScreenFunc.AddCompleteCount(planID); + + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + string path = ""; + if (zcPartNo.Contains("A2477900588-")) + { + path = Application.StartupPath + @"\aaa1.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize1); + } + else + { + path = Application.StartupPath + @"\aaa.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize); + } + + Report.Register(""); + Report.LoadFromFile(path); + + Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + ProScreenFunc.UpdatePrintTime(ID); + + + InitProduct(); + })); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill.resx new file mode 100644 index 0000000..9b5364f --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSillNew.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSillNew.Designer.cs new file mode 100644 index 0000000..cd5f534 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSillNew.Designer.cs @@ -0,0 +1,413 @@ +namespace PunchAndWeld +{ + partial class FrmDoorSillNew + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmDoorSillNew)); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.listView1 = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.零件名称 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.button2 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.textBox5 = new System.Windows.Forms.TextBox(); + this.button4 = new System.Windows.Forms.Button(); + this.button7 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(43, 132); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(298, 76); + this.label1.TabIndex = 12; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(43, 320); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(298, 82); + this.label2.TabIndex = 13; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.White; + this.label3.Location = new System.Drawing.Point(43, 504); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(298, 87); + this.label3.TabIndex = 14; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.ForeColor = System.Drawing.Color.White; + this.label4.Location = new System.Drawing.Point(43, 700); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(298, 78); + this.label4.TabIndex = 15; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(41, 887); + this.textBox1.Margin = new System.Windows.Forms.Padding(2); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(300, 81); + this.textBox1.TabIndex = 21; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label6 + // + this.label6.BackColor = System.Drawing.Color.Transparent; + this.label6.Font = new System.Drawing.Font("微软雅黑", 180F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.ForeColor = System.Drawing.Color.Blue; + this.label6.Location = new System.Drawing.Point(376, 273); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(553, 332); + this.label6.TabIndex = 22; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label7 + // + this.label7.BackColor = System.Drawing.Color.Transparent; + this.label7.Font = new System.Drawing.Font("微软雅黑", 160F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.ForeColor = System.Drawing.Color.Lime; + this.label7.Location = new System.Drawing.Point(374, 684); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(555, 288); + this.label7.TabIndex = 23; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.Transparent; + this.label5.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.ForeColor = System.Drawing.Color.White; + this.label5.Location = new System.Drawing.Point(936, 9); + this.label5.Margin = new System.Windows.Forms.Padding(0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(340, 40); + this.label5.TabIndex = 44; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label8 + // + this.label8.BackColor = System.Drawing.Color.Transparent; + this.label8.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.ForeColor = System.Drawing.Color.White; + this.label8.Location = new System.Drawing.Point(938, 187); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(338, 67); + this.label8.TabIndex = 43; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.ForeColor = System.Drawing.Color.White; + this.label9.Location = new System.Drawing.Point(938, 74); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(338, 67); + this.label9.TabIndex = 42; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.Click += new System.EventHandler(this.label9_Click); + // + // listView1 + // + this.listView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(46)))), ((int)(((byte)(64))))); + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.零件名称, + this.columnHeader3, + this.columnHeader2}); + this.listView1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.listView1.ForeColor = System.Drawing.Color.White; + this.listView1.FullRowSelect = true; + this.listView1.GridLines = true; + this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listView1.HideSelection = false; + this.listView1.Location = new System.Drawing.Point(936, 267); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(341, 362); + this.listView1.TabIndex = 45; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged); + // + // columnHeader1 + // + this.columnHeader1.Text = "零件号"; + this.columnHeader1.Width = 120; + // + // 零件名称 + // + this.零件名称.Text = "零件名称"; + this.零件名称.Width = 175; + // + // columnHeader3 + // + this.columnHeader3.Text = "状态"; + this.columnHeader3.Width = 0; + // + // columnHeader2 + // + this.columnHeader2.Text = "数量"; + this.columnHeader2.Width = 40; + // + // button2 + // + this.button2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(1116, 664); + this.button2.Margin = new System.Windows.Forms.Padding(2); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(153, 75); + this.button2.TabIndex = 47; + this.button2.Text = "下一计划"; + this.button2.UseVisualStyleBackColor = false; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(943, 664); + this.button1.Margin = new System.Windows.Forms.Padding(2); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(153, 75); + this.button1.TabIndex = 46; + this.button1.Text = "上一计划"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button6 + // + this.button6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button6.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button6.Location = new System.Drawing.Point(947, 771); + this.button6.Margin = new System.Windows.Forms.Padding(2); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(153, 75); + this.button6.TabIndex = 48; + this.button6.Text = "计划查询"; + this.button6.UseVisualStyleBackColor = false; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // button3 + // + this.button3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(1116, 771); + this.button3.Margin = new System.Windows.Forms.Padding(2); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(153, 75); + this.button3.TabIndex = 49; + this.button3.Text = "补打标签"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // textBox2 + // + this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(414, 493); + this.textBox2.Margin = new System.Windows.Forms.Padding(2); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(453, 39); + this.textBox2.TabIndex = 50; + this.textBox2.Visible = false; + // + // textBox3 + // + this.textBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(422, 501); + this.textBox3.Margin = new System.Windows.Forms.Padding(2); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(453, 39); + this.textBox3.TabIndex = 51; + this.textBox3.Visible = false; + this.textBox3.DoubleClick += new System.EventHandler(this.textBox3_DoubleClick); + this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown); + // + // textBox4 + // + this.textBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(430, 509); + this.textBox4.Margin = new System.Windows.Forms.Padding(2); + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(453, 39); + this.textBox4.TabIndex = 52; + this.textBox4.Visible = false; + this.textBox4.DoubleClick += new System.EventHandler(this.textBox4_DoubleClick); + this.textBox4.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox4_KeyDown); + // + // textBox5 + // + this.textBox5.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox5.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox5.Location = new System.Drawing.Point(438, 517); + this.textBox5.Margin = new System.Windows.Forms.Padding(2); + this.textBox5.Name = "textBox5"; + this.textBox5.Size = new System.Drawing.Size(453, 39); + this.textBox5.TabIndex = 53; + this.textBox5.Visible = false; + // + // button4 + // + this.button4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button4.Location = new System.Drawing.Point(947, 877); + this.button4.Margin = new System.Windows.Forms.Padding(2); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(153, 75); + this.button4.TabIndex = 54; + this.button4.Text = "产品不良"; + this.button4.UseVisualStyleBackColor = false; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // button7 + // + this.button7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.button7.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button7.Location = new System.Drawing.Point(1120, 877); + this.button7.Margin = new System.Windows.Forms.Padding(2); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(153, 75); + this.button7.TabIndex = 55; + this.button7.Text = "重新视觉检测"; + this.button7.UseVisualStyleBackColor = false; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // FrmDoorSillNew + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage"))); + this.ClientSize = new System.Drawing.Size(1280, 1024); + this.Controls.Add(this.button7); + this.Controls.Add(this.button4); + this.Controls.Add(this.textBox5); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.button3); + this.Controls.Add(this.button6); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.listView1); + this.Controls.Add(this.label5); + this.Controls.Add(this.label8); + this.Controls.Add(this.label9); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmDoorSillNew"; + this.Text = "214门槛总成装配"; + this.Load += new System.EventHandler(this.FrmDoorSillNew_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.TextBox textBox5; + private System.Windows.Forms.ColumnHeader 零件名称; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.ColumnHeader columnHeader2; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSillNew.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSillNew.cs new file mode 100644 index 0000000..922bb89 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSillNew.cs @@ -0,0 +1,1220 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using DBUtility; +using gregn6Lib; +using MESClassLibrary.BLL.Log; +using PunchAndWeld.DataSouce; +using PunchAndWeld.WebReference; + +namespace PunchAndWeld +{ + public partial class FrmDoorSillNew : Form + { + public bool IsChangeBox = false; + public bool IsPass = false; + private string IsHigh = "1"; + + private GridppReport Report = new GridppReport(); + + string[] partNo1 = new string[10]; + string zcPartNo = "", planID = "", zcPartName = "", zcHigh = "", sn; + private string barCode1 = "", barCode2 = "", barCode3 = ""; + string stationNo = "", stationId=""; + + public FrmDoorSillNew() + { + InitializeComponent(); + } + + private void FrmDoorSillNew_Load(object sender, EventArgs e) + { + label5.Text = "当前版本:" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; + stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + stationId = ProScreenFunc.GetStationId(stationNo); + label1.Text = ProScreenFunc.GetStation(stationNo); + + Control.CheckForIllegalCrossThreadCalls = false; + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + if (ConfigurationManager.AppSettings["IsHaveVisual"] == "1") + { + SqlStart(); + } + + LoadScreen(); + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + label9.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + + public void LoadScreen() + { + //string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreen(stationNo); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt, stationNo); + } + else + { + label1.Text = ProScreenFunc.GetStation(stationNo); + label2.Text = ""; + label3.Text = ""; + label4.Text = ""; + //label5.Text = dt.Rows[0]["Des"].ToString(); + label6.Text = "0"; + label7.Text = "0"; + label8.Text = ""; + + this.Tag = ""; + planID = this.Tag.ToString(); + textBox1.Tag = ""; + textBox1.Text = ""; + + MessageBox.Show("无计划!", "提示", MessageBoxButtons.OK); + } + } + + public void SetPage(DataTable dt,string stationNo) + { + textBox2.Text = ""; + textBox2.Visible = false; + textBox3.Text = ""; + textBox3.Visible = false; + textBox4.Text = ""; + textBox4.Visible = false; + + textBox5.Text = ""; + textBox5.Visible = false; + + if (dt != null && dt.Rows.Count > 0) + { + #region 页面赋值 + + label1.Text = dt.Rows[0]["Des"].ToString(); + label2.Text = dt.Rows[0]["OrderNo"].ToString(); + label3.Text = dt.Rows[0]["PartNo"].ToString(); + label4.Text = dt.Rows[0]["ProductName"].ToString(); + //label5.Text = dt.Rows[0]["Des"].ToString(); + label6.Text = dt.Rows[0]["OrderCount"].ToString(); + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + label8.Text = dt.Rows[0]["OrderNo"].ToString().Substring(0, 1) + "班"; + + this.Tag = dt.Rows[0]["ID"].ToString(); //计划ID + planID = this.Tag.ToString(); + textBox1.Tag = dt.Rows[0]["ProductID1"].ToString(); + textBox1.Text = ""; + + #endregion + + #region 绑定校验物料 + + InitList(stationNo, label3.Text,""); + + #endregion + } + } + + /// + /// 上一计划 + /// + /// + /// + private void button1_Click(object sender, EventArgs e) + { + if (this.Tag == null || string.IsNullOrWhiteSpace(this.Tag.ToString())) + //if (this.Tag.ToString() == "" || string.IsNullOrWhiteSpace(this.Tag.ToString())) + { + MessageBox.Show("无上一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "上一计划"); + } + } + + /// + /// 下一计划 + /// + /// + /// + private void button2_Click(object sender, EventArgs e) + { + if (this.Tag == null || string.IsNullOrWhiteSpace(this.Tag.ToString())) + //if (this.Tag.ToString() == "") + { + MessageBox.Show("无下一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + } + + public void LoadPlanScreen(string id, string plan) + { + //string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreenPlan(id, stationNo, plan); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt, stationNo); + } + else + { + if (plan == "下一计划") + MessageBox.Show("无下一计划"); + else + MessageBox.Show("无上一计划"); + } + } + + /// + /// 计划查询 + /// + /// + /// + private void button6_Click(object sender, EventArgs e) + { + FrmProScreen2 frm = new FrmProScreen2(); + frm.OkClick += (arg1) => + { + this.Tag = arg1; + + frm.Close(); + LoadPlanScreen(arg1, "当前计划"); + }; + frm.ShowDialog(); + } + + private void InitList(string stationNo, string partNo,string tempPartNo) + { + try + { + listView1.Items.Clear(); + DataTable dt = ProScreenFunc.GetOtherPart(stationNo, partNo); + if (dt != null && dt.Rows.Count > 0) + { + for (int i = 0; i < dt.Rows.Count; i++) + { + ListViewItem lvi = new ListViewItem(dt.Rows[i]["PartNo"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["PartName"].ToString()); + + if (!string.IsNullOrWhiteSpace(dt.Rows[i]["PartNo"].ToString()) && !string.IsNullOrWhiteSpace(dt.Rows[i]["IsCheck"].ToString())) + { + lvi.SubItems.Add("未通过"); + } + lvi.SubItems.Add(dt.Rows[i]["Qty"].ToString()); + + listView1.Items.Add(lvi); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + + if (ConfigurationManager.AppSettings["IsHaveVisual"] == "1") + { + DataTable dt1 = ProScreenFunc.HavePrint(stationId); + if (dt1 != null && dt1.Rows.Count > 0) + { + zcPartNo = dt1.Rows[0]["PartNo"].ToString(); + if (ProScreenFunc.IsNeedVisual(zcPartNo)) + { + MessageBox.Show("存在未打印标签的产品,不允许扫描!"); + textBox1.SelectAll(); + return; + } + } + + } + CheckPartAndProduct(); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + public void CheckPartAndProduct() + { + try + { + textBox1.SelectAll(); + string barcode = textBox1.Text.Trim(); + + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + + } + + if (ProScreenFunc.HaveScan(barcode)) + { + DialogResult result = MessageBox.Show("条码为" + barcode + "的蒙皮已经冲孔,是否重新冲孔?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + ScanBarcode(barcode); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + else + { + return; + } + } + else + { + ScanBarcode(barcode); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + private void ScanBarcode(string barcode) + { + try + { + string productID1 = "",productID2 = "",partNo2=""; + bool high = false; + string zcPartNo1 = label3.Text; + string zcPartName1 = label4.Text; + string planId = planID; + string tagId = this.Tag.ToString(); + + productID1 = textBox1.Tag.ToString(); + + + high = ProScreenFunc.IsHigh(zcPartNo1); + + if (high && !ProScreenFunc.IsScan(textBox1.Text.Trim())) + { + MessageBox.Show("无法装配,高配需要过激光切割!", "提示", MessageBoxButtons.OK); + return; + } + + if (!high && ProScreenFunc.IsScan(textBox1.Text.Trim())) + { + MessageBox.Show("无法装配,低配不需要过激光切割!", "提示", MessageBoxButtons.OK); + return; + } + + string[] codeSpecial = ProScreenFunc.GetSpecialStockNo(); + + string code = barcode.Substring(0, 10); + if (codeSpecial.Contains(code)) + { + productID2 = ProScreenFunc.GetProductID(code, ""); + partNo2 = ProScreenFunc.GetPartNoByStockNo(code); + //AfterScanBarcode(barcode, productID2, productID1, this.Tag.ToString().Trim()); + } + else + { + if (barcode.Substring(0, 2) != "22") + { + string[] codeSpecial1 = ProScreenFunc.GetSpecialStockNo(); + string code1 = barcode.Substring(0, 10); + if (codeSpecial1.Contains(code1)) + { + productID2 = ProScreenFunc.GetProductID(code, ""); + partNo2 = ProScreenFunc.GetPartNoByStockNo(code); + } + else + { + productID2 = ProScreenFunc.GetProductID(barcode); + if (string.IsNullOrWhiteSpace(productID2)) + { + string stockNo = barcode.Substring(0, 10); + productID2 = ProScreenFunc.GetProductID(stockNo, ""); + } + partNo2 = ProScreenFunc.GetPartNoByID(productID2); + } + } + + ListViewItem liv = listView1.Items.Cast().First(x => x.SubItems[0].Text == partNo2); + int index = liv.Index; + if (index!=0) + { + MessageBox.Show("条码和总成不匹配!"); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + listView1.Items[index].SubItems[2].Text = "通过"; + + bool isScan = ProScreenFunc.IsScan(barcode); + OtherPart parts = ProScreenFunc.HaveOtherPart(stationNo, productID1); + if ((parts != null) && ((!string.IsNullOrWhiteSpace(parts.productID3)) || (!string.IsNullOrWhiteSpace(parts.productID4)) || (!string.IsNullOrWhiteSpace(parts.productID5)) || (!string.IsNullOrWhiteSpace(parts.productID6)) || (!string.IsNullOrWhiteSpace(parts.productID7)) || (!string.IsNullOrWhiteSpace(parts.productID8)))) + { + FrmProScreen3 frm=new FrmProScreen3(parts); + frm.ShowDialog(); + } + else + { + ScanAll.ScanResult = true; + ScanAll.barCode1 = ""; + ScanAll.barCode2 = ""; + ScanAll.barCode3 = ""; + ScanAll.barCode4 = ""; + ScanAll.barCode5 = ""; + ScanAll.barCode6 = ""; + } + + if (ScanAll.ScanResult) + { + bool aa = false,toWms=true; + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo1)) + { + ListViewItem liv1 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo1); + int index1 = liv1.Index; + listView1.Items[index1].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo2)) + { + ListViewItem liv2 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo2); + int index2 = liv2.Index; + listView1.Items[index2].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo3)) + { + ListViewItem liv3 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo3); + int index3 = liv3.Index; + listView1.Items[index3].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo4)) + { + ListViewItem liv4 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo4); + int index4 = liv4.Index; + listView1.Items[index4].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo5)) + { + ListViewItem liv5 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo5); + int index5 = liv5.Index; + listView1.Items[index5].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo6)) + { + ListViewItem liv6 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo6); + int index6 = liv6.Index; + listView1.Items[index6].SubItems[2].Text = "通过"; + } + + if (ConfigurationManager.AppSettings["IsHaveVisual"] != "1") + { + if ((IsChangeBox && IsPass) || (!IsChangeBox )) + { + try + { + toWms = ProScreenFunc.IsToWms(barcode); + if (!toWms) + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + //partNo = label3.Text; + partNo = zcPartNo1; + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + aa = webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + if (aa) + { + ProScreenFunc.SaveToWmsRecord(barcode); + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + if (aa ||toWms) + { + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo(zcPartNo1, time.ToString("yyMMdd")); + if (tmp == "") + { + sn = + zcPartNo1 + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + if (ProScreenFunc.SavePartAndProduct_New(barcode, productID2, productID1, + label2.Text.Trim(), label2.Text.Trim().Substring(0, 1) + "班", planId, sn, + ScanAll.barCode1, ScanAll.barCode2, ScanAll.barCode3, + ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6,stationId, ConfigurationManager.AppSettings["StationDescription"]) <=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + ProScreenFunc.SaveZcCode(barcode, zcPartNo1); + ProScreenFunc.AddCompleteCountAndFinish(planId); + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = ""; + if (zcPartNo1.Contains("A2477900588-")) + { + path = Application.StartupPath + @"\aaa1.grf"; + Report.Initialize += + new _IGridppReportEvents_InitializeEventHandler(ReportInitialize1); + } + else + { + path = Application.StartupPath + @"\ZC.grf"; + //Report.Initialize += + // new _IGridppReportEvents_InitializeEventHandler(ReportInitialize); + + DataTable headTable = new DataTable(); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("zcState"); + DataRow row = headTable.NewRow(); + row["SerialNo"] = sn; + row["oneBarCode"] = barcode; + row["zcPartNo"] = zcPartNo1; + row["zcName"] = zcPartName1; + row["zcState"] = ""; + + string reportName = ConfigurationManager.AppSettings["Printer1"]; + headTable.Rows.Add(row); + + DataTable dtDetail=ProScreenFunc.GetOtherPart(stationNo,zcPartNo1); + + ReportHelper rp = new ReportHelper(path, headTable, dtDetail, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + } + } + } + catch (Exception ex) + { + throw ex; + } + + ProScreenFunc.UpdatePrintTime(ProScreenFunc.SearchIdByBarCode(barcode)); + + + if (ProScreenFunc.CheckPlanCompleted(tagId)) + { + //LoadScreen(); + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount(tagId); + } + + DataTable dt = ProScreenFunc.GetProScreenByPlanID(tagId); + if (dt != null && dt.Rows.Count > 0) + { + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + } + } + else if (!aa && !toWms) + { + MessageBox.Show("入库失败!", "提示", MessageBoxButtons.OK); + return; + } + } + } + else + { + + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo(zcPartNo1, time.ToString("yyMMdd")); + if (tmp == "") + { + sn = + zcPartNo1 + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + if (ProScreenFunc.SavePartAndProduct_New(barcode, productID2, productID1, + label2.Text.Trim(), label2.Text.Trim().Substring(0, 1) + "班", planId, sn, + ScanAll.barCode1, ScanAll.barCode2, ScanAll.barCode3, + ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6,stationId, ConfigurationManager.AppSettings["StationDescription"]) <=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + ProScreenFunc.SaveZcCode(barcode, zcPartNo1); + if (!ProScreenFunc.IsNeedVisual(zcPartNo1)) + { + try + { + toWms = ProScreenFunc.IsToWms(barcode); + if (!toWms) + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + //partNo = label3.Text; + partNo = zcPartNo1; + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + aa = webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + if (aa) + { + ProScreenFunc.SaveToWmsRecord(barcode); + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + if (aa || !toWms) + { + ProScreenFunc.AddCompleteCountAndFinish(planId); + + if (ProScreenFunc.UpdatePrintTime(ProScreenFunc.SearchIdByBarCode(barcode))<=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = ""; + if (zcPartNo1.Contains("A2477900588-")) + { + path = Application.StartupPath + @"\aaa1.grf"; + Report.Initialize += + new _IGridppReportEvents_InitializeEventHandler(ReportInitialize1); + } + else + { + path = Application.StartupPath + @"\ZC.grf"; + + DataTable headTable = new DataTable(); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("zcState"); + DataRow row = headTable.NewRow(); + row["SerialNo"] = sn; + row["oneBarCode"] = barcode; + row["zcPartNo"] = zcPartNo1; + row["zcName"] = zcPartName1; + row["zcState"] = ""; + + string reportName = ConfigurationManager.AppSettings["Printer1"]; + headTable.Rows.Add(row); + + DataTable dtDetail = ProScreenFunc.GetOtherPart(stationNo, zcPartNo1); + + ReportHelper rp = new ReportHelper(path, headTable, dtDetail, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + } + } + } + catch (Exception ex) + { + throw ex; + } + DataTable dt = ProScreenFunc.GetProScreenByPlanID(tagId); + if (dt != null && dt.Rows.Count > 0) + { + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + } + } + else if (!aa && !toWms) + { + MessageBox.Show("入库失败!", "提示", MessageBoxButtons.OK); + return; + } + } + } + InitList(stationNo, label3.Text, ""); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + private void ReportInitialize1() + { + string barcode = textBox1.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + DateTime time = DateTime.Now; + if (zcPartNo.Contains("A2477900588-")) + { + Report.ParameterByName("Des").Value = "X247S"; + } + if (zcPartNo.Contains("A2477900000-")) + { + Report.ParameterByName("Des").Value = "H247S"; + } + Report.ParameterByName("PartNo").Value = zcPartNo; + Report.ParameterByName("PartName").Value = zcPartName; + Report.ParameterByName("BatchNo").Value = time.ToString("yyMMdd"); + string tmp = ProScreenFunc.SerialNo(zcPartNo, time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + zcPartNo + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + Report.ParameterByName("SerialNo").Value = sn; + Report.ParameterByName("BarCode").Value = sn + ";24;2217;;.0;" + time.ToString("yyyy/MM/dd"); + Report.ParameterByName("oneBarCode").Value = barcode; + } + + /// + /// 补打标签 + /// + /// + /// + private void button3_Click(object sender, EventArgs e) + { + textBox4.Text = ""; + textBox4.Visible = true; + textBox4.Focus(); + } + + private void textBox4_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox4.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + DataTable dtHg = ProScreenFunc.GetGh(barcode); + if (dtHg == null || dtHg.Rows.Count < 1) + { + MessageBox.Show("未装配,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + + LogSysBLL.AddInfo("条码:" + barcode + "补打标签", MethodBase.GetCurrentMethod()); + + string zcID = dtHg.Rows[0]["ZcID"].ToString(); + string zcSn = dtHg.Rows[0]["SerialNo"].ToString(); + ZcPrintLabel zl = ProScreenFunc.GetZcPrintLabel(zcID); + if (zl != null && zl.zcPartNo != null && zl.zcName != null) + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + if (zl.zcPartNo.Contains("A2477900588-") || zl.zcPartNo.Contains("A2477900000-")) + { + string path = Application.StartupPath + @"\aaa1.grf"; + + GridppReport Report2 = new GridppReport(); + Report2.Register(""); + Report2.LoadFromFile(path); + if (zl.zcPartNo.Contains("A2477900588-")) + { + Report2.ParameterByName("Des").Value = "X247S"; + } + if (zl.zcPartNo.Contains("A2477900000-")) + { + Report2.ParameterByName("Des").Value = "H247S"; + } + Report2.ParameterByName("PartNo").Value = zl.zcPartNo; + Report2.ParameterByName("PartName").Value = zl.zcName; + string sn = dtHg.Rows[0]["SerialNo"].ToString(); + Report2.ParameterByName("SerialNo").Value = sn; + string[] tmp = sn.Split('.'); + Report2.ParameterByName("BarCode").Value = sn + ";24;2217;;.0;" + tmp[1]; + Report2.ParameterByName("oneBarCode").Value = barcode; + Report2.ParameterByName("BatchNo").Value = tmp[1]; + Report2.Print(false); + textBox4.SelectAll(); + } + else + { + //string path = Application.StartupPath + @"\aaa.grf"; + + //GridppReport Report1 = new GridppReport(); + //Report1.Register(""); + //Report1.LoadFromFile(path); + //Report1.ParameterByName("oneBarCode").Value = barcode; + //Report1.ParameterByName("zcPartNo").Value = zl.zcPartNo; + //Report1.ParameterByName("SerialNo").Value = zcSn; + //Report1.ParameterByName("zcName").Value = zl.zcName; + //Report1.Print(false); + string path = Application.StartupPath + @"\ZC.grf"; + //Report.Initialize += + // new _IGridppReportEvents_InitializeEventHandler(ReportInitialize); + + DataTable headTable = new DataTable(); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("zcState"); + DataRow row = headTable.NewRow(); + row["SerialNo"] = zcSn; + row["oneBarCode"] = barcode; + row["zcPartNo"] = zl.zcPartNo; + row["zcName"] = zl.zcName; + row["zcState"] = dtHg.Rows[0]["ToVisual"].ToString() == "1" ? "" : "合格"; + + string reportName = ConfigurationManager.AppSettings["Printer1"]; + headTable.Rows.Add(row); + + DataTable dtDetail = ProScreenFunc.GetOtherPart(stationNo, zl.zcPartNo); + //DataRow[] drDetails = dtDetail.Select(); + //foreach (DataRow drDetail in drDetails) + //{ + // dtDetail.Rows.Add(drDetail.ItemArray); + //} + + ReportHelper rp = new ReportHelper(path, headTable, dtDetail, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + textBox4.SelectAll(); + } + } + } + else + { + MessageBox.Show("根据总成号找不到对应名称,请维护基础数据!"); + textBox4_DoubleClick(sender, e); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + } + + private void textBox4_DoubleClick(object sender, EventArgs e) + { + textBox4.Text = ""; + textBox4.Visible = false; + } + + private void SqlStart() + { + try + { + SqlDependency.Start(SqlHelper.SqlConnString); + SqlDependencyWatch(); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void SqlDependencyWatch() + { + string sSQL = "SELECT [ToVisual] FROM [dbo].[tb_Punch_Code_Record]"; + + using (SqlConnection connection = new SqlConnection(SqlHelper.SqlConnString)) + { + using (SqlCommand command = new SqlCommand(sSQL, connection)) + { + command.CommandType = CommandType.Text; + connection.Open(); + SqlDependency dependency = new SqlDependency(command); + dependency.OnChange += new OnChangeEventHandler(SQLTableOnChange); + SqlDataReader sdr = command.ExecuteReader(); + } + } + } + + private void SQLTableOnChange(object sender, SqlNotificationEventArgs e) + { + SqlDependencyWatch(); + AfterScanBarcode1(); + } + + private void AfterScanBarcode1() + { + try + { + string ID = "", barcode = "", productID2 = "", productID1 = "", planId1="", toVisual = "", zcPartNo1="", zcPartName1="", sn1=""; + //DataTable dt1 = ProScreenFunc.HavePrint(ConfigurationManager.AppSettings["StationNo"]); + DataTable dt1 = ProScreenFunc.HavePrint(stationId); + if (dt1 != null && dt1.Rows.Count > 0) + { + ID = dt1.Rows[0]["ID"].ToString(); + barcode = dt1.Rows[0]["barcode"].ToString(); + //oneBarCode = barcode; + zcPartNo1 = dt1.Rows[0]["PartNo"].ToString(); + zcPartName1 = dt1.Rows[0]["ProductName"].ToString(); + planId1 = dt1.Rows[0]["PlanID"].ToString(); + sn1 = dt1.Rows[0]["SerialNo"].ToString(); + toVisual = dt1.Rows[0]["ToVisual"].ToString(); + + if (!ProScreenFunc.IsNeedVisual(zcPartNo1)) + { + return; + } + } + else + { + return; + } + if (toVisual=="0") + { + this.Invoke((EventHandler)(delegate + { + bool aa = false, toWms = true; + + try + { + toWms = ProScreenFunc.IsToWms(barcode); + if (!toWms) + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"]; + + aa = webService.WMSInterfaceStockIn(barcode, zcPartNo1, batchNo, 1); + if (aa) + { + ProScreenFunc.SaveToWmsRecord(barcode); + } + } + + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + if (aa || toWms) + { + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = ""; + if (zcPartNo1.Contains("A2477900588-")) + { + path = Application.StartupPath + @"\aaa1.grf"; + Report.Initialize += + new _IGridppReportEvents_InitializeEventHandler(ReportInitialize1); + } + else + { + path = Application.StartupPath + @"\ZC.grf"; + DataTable headTable = new DataTable(); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("zcState"); + DataRow row = headTable.NewRow(); + row["SerialNo"] = sn1; + row["oneBarCode"] = barcode; + row["zcPartNo"] = zcPartNo1; + row["zcName"] = zcPartName1; + row["zcState"] = "合格"; + + string reportName = ConfigurationManager.AppSettings["Printer1"]; + headTable.Rows.Add(row); + + DataTable dtDetail = ProScreenFunc.GetOtherPart(ConfigurationManager.AppSettings["StationNo"], zcPartNo1); + ReportHelper rp = new ReportHelper(path, headTable, dtDetail, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + } + } + } + catch (Exception ex) + { + throw ex; + } + ProScreenFunc.UpdatePrintTime(ID); + + ProScreenFunc.AddCompleteCountAndFinish(planId1); + if (planID == planId1) + { + DataTable dt = ProScreenFunc.GetProScreenByPlanID(planId1); + if (dt != null && dt.Rows.Count > 0) + { + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + } + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + //LoadScreen(); + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount(this.Tag.ToString().Trim()); + } + } + } + else if (!aa && !toWms) + { + MessageBox.Show("WMS入库失败"); + } + })); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + + private void label9_Click(object sender, EventArgs e) + { + if (ConfigurationManager.AppSettings["IsHaveVisual"] == "1") + { + SqlDependency.Stop(SqlHelper.SqlConnString); + } + + Environment.Exit(0); + } + + private void listView1_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + /// + /// 产品不良 + /// + /// + /// + private void button4_Click(object sender, EventArgs e) + { + textBox3.Visible = true; + textBox3.Text = ""; + } + + private void textBox3_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string zcId = "", zcPartNo=""; + int toVisual = 0; + + if (string.IsNullOrWhiteSpace(textBox3.Text)) + { + MessageBox.Show("条码不能为空"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + + string barcode=""; + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + else + { + barcode = textBox3.Text.Trim(); + } + + DataTable dtHg = ProScreenFunc.GetGh(barcode); + if (dtHg == null || dtHg.Rows.Count < 1) + { + DataTable dtD = ProScreenFunc.DelInfoByBarCode(barcode); + if (dtD != null && dtD.Rows.Count > 0) + { + zcId = dtD.Rows[0]["ZcID"].ToString(); + toVisual = int.Parse(dtD.Rows[0]["ToVisual"].ToString()); + } + } + else + { + MessageBox.Show("未装配,不能删除!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + + ZcPrintLabel zl = ProScreenFunc.GetZcPrintLabel(zcId); + if (zl != null) + { + zcPartNo = zl.zcPartNo; + } + + if (ProScreenFunc.IsNeedVisual(zcPartNo)) + { + if (toVisual == 0) + { + MessageBox.Show("无法删除,请联系IT人员!"); + textBox3_DoubleClick(sender, e); + return; + } + } + else + { + MessageBox.Show("无法删除,请联系IT人员!"); + textBox3_DoubleClick(sender, e); + return; + } + + int x = ProScreenFunc.AddDel(barcode); + if (x > 0) + { + MessageBox.Show("删除成功!"); + textBox3_DoubleClick(sender, e); + } + else + { + MessageBox.Show("删除失败!"); + textBox3_DoubleClick(sender, e); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + private void textBox3_DoubleClick(object sender, EventArgs e) + { + textBox3.Visible = false; + textBox3.Text = ""; + } + + private void button7_Click(object sender, EventArgs e) + { + try + { + DialogResult result = MessageBox.Show("是否重新视觉检测?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + int a = ProScreenFunc.VisualRetest(ConfigurationManager.AppSettings["StationNo"]); + if (a > 0) + { + MessageBox.Show("重置成功!"); + } + else + { + MessageBox.Show("重置失败!"); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSillNew.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSillNew.resx new file mode 100644 index 0000000..67ecb76 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSillNew.resx @@ -0,0 +1,1435 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214.Designer.cs new file mode 100644 index 0000000..0261a13 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214.Designer.cs @@ -0,0 +1,443 @@ +namespace PunchAndWeld +{ + partial class FrmDoorSill_214 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmDoorSill_214)); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.零件名称 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.listView1 = new System.Windows.Forms.ListView(); + this.button7 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.textBox5 = new System.Windows.Forms.TextBox(); + this.button4 = new System.Windows.Forms.Button(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.label10 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(44, 130); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(298, 76); + this.label1.TabIndex = 57; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(44, 318); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(298, 82); + this.label2.TabIndex = 58; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.White; + this.label3.Location = new System.Drawing.Point(44, 502); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(298, 87); + this.label3.TabIndex = 59; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.ForeColor = System.Drawing.Color.White; + this.label4.Location = new System.Drawing.Point(44, 698); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(298, 78); + this.label4.TabIndex = 60; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(38, 889); + this.textBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(313, 70); + this.textBox1.TabIndex = 61; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label6 + // + this.label6.BackColor = System.Drawing.Color.Transparent; + this.label6.Font = new System.Drawing.Font("微软雅黑", 180F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.ForeColor = System.Drawing.Color.Blue; + this.label6.Location = new System.Drawing.Point(377, 271); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(553, 332); + this.label6.TabIndex = 62; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label7 + // + this.label7.BackColor = System.Drawing.Color.Transparent; + this.label7.Font = new System.Drawing.Font("微软雅黑", 160F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.ForeColor = System.Drawing.Color.Lime; + this.label7.Location = new System.Drawing.Point(375, 682); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(555, 288); + this.label7.TabIndex = 63; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.ForeColor = System.Drawing.Color.White; + this.label9.Location = new System.Drawing.Point(939, 72); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(338, 67); + this.label9.TabIndex = 64; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.Click += new System.EventHandler(this.label9_Click); + // + // label8 + // + this.label8.BackColor = System.Drawing.Color.Transparent; + this.label8.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.ForeColor = System.Drawing.Color.White; + this.label8.Location = new System.Drawing.Point(939, 185); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(338, 67); + this.label8.TabIndex = 65; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.Transparent; + this.label5.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.ForeColor = System.Drawing.Color.White; + this.label5.Location = new System.Drawing.Point(937, 7); + this.label5.Margin = new System.Windows.Forms.Padding(0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(340, 40); + this.label5.TabIndex = 66; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // columnHeader1 + // + this.columnHeader1.Text = "零件号"; + this.columnHeader1.Width = 120; + // + // 零件名称 + // + this.零件名称.Text = "零件名称"; + this.零件名称.Width = 175; + // + // columnHeader3 + // + this.columnHeader3.Text = "状态"; + this.columnHeader3.Width = 0; + // + // columnHeader2 + // + this.columnHeader2.Text = "数量"; + this.columnHeader2.Width = 40; + // + // listView1 + // + this.listView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(46)))), ((int)(((byte)(64))))); + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.零件名称, + this.columnHeader3, + this.columnHeader2}); + this.listView1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.listView1.ForeColor = System.Drawing.Color.White; + this.listView1.FullRowSelect = true; + this.listView1.GridLines = true; + this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listView1.HideSelection = false; + this.listView1.Location = new System.Drawing.Point(937, 349); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(341, 278); + this.listView1.TabIndex = 67; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // button7 + // + this.button7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.button7.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button7.Location = new System.Drawing.Point(1121, 875); + this.button7.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(153, 75); + this.button7.TabIndex = 77; + this.button7.Text = "重新视觉检测"; + this.button7.UseVisualStyleBackColor = false; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(944, 662); + this.button1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(153, 75); + this.button1.TabIndex = 68; + this.button1.Text = "上一计划"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button2 + // + this.button2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(1117, 662); + this.button2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(153, 75); + this.button2.TabIndex = 69; + this.button2.Text = "下一计划"; + this.button2.UseVisualStyleBackColor = false; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button6 + // + this.button6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button6.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button6.Location = new System.Drawing.Point(948, 769); + this.button6.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(153, 75); + this.button6.TabIndex = 70; + this.button6.Text = "计划查询"; + this.button6.UseVisualStyleBackColor = false; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // button3 + // + this.button3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(1117, 769); + this.button3.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(153, 75); + this.button3.TabIndex = 71; + this.button3.Text = "补打标签"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // textBox2 + // + this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(415, 491); + this.textBox2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(390, 39); + this.textBox2.TabIndex = 72; + this.textBox2.Visible = false; + // + // textBox3 + // + this.textBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(423, 499); + this.textBox3.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(390, 39); + this.textBox3.TabIndex = 73; + this.textBox3.Visible = false; + this.textBox3.DoubleClick += new System.EventHandler(this.textBox3_DoubleClick); + this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown); + // + // textBox4 + // + this.textBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(431, 507); + this.textBox4.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(390, 39); + this.textBox4.TabIndex = 74; + this.textBox4.Visible = false; + this.textBox4.DoubleClick += new System.EventHandler(this.textBox4_DoubleClick); + this.textBox4.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox4_KeyDown); + // + // textBox5 + // + this.textBox5.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox5.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox5.Location = new System.Drawing.Point(439, 515); + this.textBox5.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.textBox5.Name = "textBox5"; + this.textBox5.Size = new System.Drawing.Size(390, 39); + this.textBox5.TabIndex = 75; + this.textBox5.Visible = false; + // + // button4 + // + this.button4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button4.Location = new System.Drawing.Point(948, 875); + this.button4.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(153, 75); + this.button4.TabIndex = 76; + this.button4.Text = "产品不良"; + this.button4.UseVisualStyleBackColor = false; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.BackColor = System.Drawing.Color.Transparent; + this.checkBox1.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.checkBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(112)))), ((int)(((byte)(187))))); + this.checkBox1.Location = new System.Drawing.Point(957, 295); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(94, 32); + this.checkBox1.TabIndex = 78; + this.checkBox1.Text = "印度件"; + this.checkBox1.UseVisualStyleBackColor = false; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.BackColor = System.Drawing.Color.LimeGreen; + this.label10.Font = new System.Drawing.Font("微软雅黑", 96F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.ForeColor = System.Drawing.Color.White; + this.label10.Location = new System.Drawing.Point(513, 430); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(255, 165); + this.label10.TabIndex = 80; + this.label10.Text = "OK"; + // + // FrmDoorSill_214 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage"))); + this.ClientSize = new System.Drawing.Size(1280, 1024); + this.Controls.Add(this.label10); + this.Controls.Add(this.checkBox1); + this.Controls.Add(this.button4); + this.Controls.Add(this.textBox5); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.button3); + this.Controls.Add(this.button6); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.button7); + this.Controls.Add(this.listView1); + this.Controls.Add(this.label5); + this.Controls.Add(this.label8); + this.Controls.Add(this.label9); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmDoorSill_214"; + this.Text = "214门槛区分工位"; + this.Load += new System.EventHandler(this.FrmDoorSill_214_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader 零件名称; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.TextBox textBox5; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.Label label10; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214.cs new file mode 100644 index 0000000..84590cd --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214.cs @@ -0,0 +1,1265 @@ +using gregn6Lib; +using PunchAndWeld.DataSouce; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using DBUtility; +using MESClassLibrary.BLL.Log; +using PunchAndWeld.WebReference; +using System.Reflection.Emit; + +namespace PunchAndWeld +{ + public partial class FrmDoorSill_214 : Form + { + public bool IsChangeBox = false; + public bool IsPass = false; + private string IsHigh = "1"; + public string stationNo = "",stationId=""; + int a = 0; + int oldState = 0; + + + string[] partNo1 = new string[10]; + string planID = "", zcHigh = ""; + + private GridppReport Report = new GridppReport(); + + public FrmDoorSill_214() + { + InitializeComponent(); + } + + private void FrmDoorSill_214_Load(object sender, EventArgs e) + { + label5.Text = "当前版本:" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; + stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + stationId = ProScreenFunc.GetStationId(stationNo); + label10.Visible = false; + label10.Text = ""; + //timer2.Enabled = false; + + label1.Text = ProScreenFunc.GetStation(stationNo); + + Control.CheckForIllegalCrossThreadCalls = false; + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + + if (ConfigurationManager.AppSettings["IsHaveVisual"] == "1") + { + SqlStart(); + } + + LoadScreen(); + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + + System.Timers.Timer timer3 = new System.Timers.Timer(); + timer3.Interval = 2000; + timer3.Enabled = true; + timer3.Elapsed += new System.Timers.ElapsedEventHandler(timer3_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + label9.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + + private void timer3_Tick(object sender, EventArgs e) + { + int newState = ProScreenFunc.VisualState(); + if (newState == oldState) + { + if (label10.Text == "") + { + return; + } + } + switch (ProScreenFunc.VisualState()) + { + case 0: + //timer2.Enabled = false; + break; + case 1: + //timer2.Enabled = false; + break; + case 2: + if (a == 0) + { + label10.Visible = true; + label10.Text = "OK"; + label10.BackColor = Color.LightGreen; + a++; + } + else if (a != 0 && label10.Text != "") + { + label10.Visible = false; + label10.Text = ""; + a = 0; + } + break; + case 3: + //timer2.Enabled = true; + if (a == 0) + { + label10.Visible = true; + label10.Text = "NG"; + label10.BackColor = Color.Red; + a++; + } + else if (a != 0 && label10.Text != "") + { + label10.Visible = false; + label10.Text = ""; + a = 0; + } + break; + } + oldState = newState; + } + + private void SqlStart() + { + try + { + SqlDependency.Start(SqlHelper.SqlConnString); + SqlDependencyWatch(); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void SqlDependencyWatch() + { + string sSQL = "SELECT [ToVisual] FROM [dbo].[tb_Punch_Code_Record_DoorSill_214] where StationId='" + stationId +@"'"; + + using (SqlConnection connection = new SqlConnection(SqlHelper.SqlConnString)) + { + using (SqlCommand command = new SqlCommand(sSQL, connection)) + { + command.CommandType = CommandType.Text; + connection.Open(); + SqlDependency dependency = new SqlDependency(command); + dependency.OnChange += new OnChangeEventHandler(SQLTableOnChange); + SqlDataReader sdr = command.ExecuteReader(); + } + } + } + + private void SQLTableOnChange(object sender, SqlNotificationEventArgs e) + { + SqlDependencyWatch(); + AfterScanBarcode1(); + } + + private void AfterScanBarcode1() + { + try + { + string ID = "", barcode = "", planId1 = "", toVisual = "", zcPartNo = "", zcPartName = "", sn = "",flag=""; + DataTable dt1 = ProScreenFunc.HavePrint_1(stationId); + if (dt1 != null && dt1.Rows.Count > 0) + { + ID = dt1.Rows[0]["ID"].ToString(); + barcode = dt1.Rows[0]["barcode"].ToString(); + zcPartNo = dt1.Rows[0]["PartNo"].ToString(); + zcPartName = dt1.Rows[0]["ProductName"].ToString(); + planId1 = dt1.Rows[0]["PlanID"].ToString(); + sn = dt1.Rows[0]["SerialNo"].ToString(); + toVisual = dt1.Rows[0]["ToVisual"].ToString(); + flag= dt1.Rows[0]["Flag"].ToString(); + + if (stationNo != "ZP95") + { + + if (!ProScreenFunc.IsNeedVisual(zcPartNo) && flag == "1") + { + return; + } + } + } + else + { + return; + } + if (toVisual == "0") + { + this.Invoke((EventHandler)(delegate + { + label10.Visible = true; + label10.Text = "OK"; + label10.BackColor = Color.LimeGreen; + + Thread.Sleep(2000); + + label10.Visible = false; + + bool aa = false, toWms = true; + + try + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"]; + + aa = webService.WMSInterfaceStockIn(barcode, zcPartNo, batchNo, int.Parse(flag)); + if (aa) + { + ProScreenFunc.SaveToWmsRecord(barcode); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + if (aa) + { + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = ""; + + if (!checkBox1.Checked) + { + path = Application.StartupPath + @"\ZC.grf"; + } + else + { + path = Application.StartupPath + @"\ZCIndia.grf"; + } + DataTable headTable = new DataTable(); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("zcState"); + DataRow row = headTable.NewRow(); + row["SerialNo"] = sn; + row["oneBarCode"] = barcode; + row["zcPartNo"] = zcPartNo; + row["zcName"] = zcPartName; + //row["zcState"] = "合格"; + row["zcState"] = flag; + + string reportName = ConfigurationManager.AppSettings["Printer1"]; + headTable.Rows.Add(row); + + DataTable dtDetail = ProScreenFunc.GetOtherPart(stationNo, zcPartNo); + ReportHelper rp = new ReportHelper(path, headTable, dtDetail, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + + ProScreenFunc.UpdatePrintTime_1(ID); + + if (flag == "1") + { + ProScreenFunc.AddCompleteCountAndFinish_1(planId1); + } + + + if (planID == planId1) + { + DataTable dt = ProScreenFunc.GetProScreenByPlanID_1(planId1); + if (dt != null && dt.Rows.Count > 0) + { + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + } + + if (ProScreenFunc.CheckPlanCompleted_1(this.Tag.ToString().Trim())) + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount_1(this.Tag.ToString().Trim()); + } + + } + } + else if (!aa) + { + MessageBox.Show("WMS入库失败"); + } + })); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + public void LoadScreen() + { + DataTable dt = ProScreenFunc.GetProScreen_1(stationId); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt, stationNo); + } + else + { + label1.Text = ProScreenFunc.GetStation(stationNo); + label2.Text = ""; + label3.Text = ""; + label4.Text = ""; + label6.Text = "0"; + label7.Text = "0"; + label8.Text = ""; + + this.Tag = ""; //计划ID + planID = this.Tag.ToString(); + textBox1.Tag = ""; + textBox1.Text = ""; + + MessageBox.Show("无计划!", "提示", MessageBoxButtons.OK); + } + } + + private void button1_Click(object sender, EventArgs e) + { + if (this.Tag == null || string.IsNullOrWhiteSpace(this.Tag.ToString())) + { + MessageBox.Show("无上一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "上一计划"); + } + } + + public void LoadPlanScreen(string id, string plan) + { + DataTable dt = ProScreenFunc.GetProScreenPlan_1(id, stationNo, plan); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt, stationNo); + } + else + { + if (plan == "下一计划") + { + MessageBox.Show("无下一计划"); + } + + else + { + MessageBox.Show("无上一计划"); + } + } + } + + /// + /// 下一计划 + /// + /// + /// + private void button2_Click(object sender, EventArgs e) + { + if (this.Tag == null || string.IsNullOrWhiteSpace(this.Tag.ToString())) + { + MessageBox.Show("无下一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + } + + /// + /// 计划查询 + /// + /// + /// + private void button6_Click(object sender, EventArgs e) + { + FrmSearchPlan frm = new FrmSearchPlan(); + frm.OkClick += (arg1) => + { + this.Tag = arg1; + frm.Close(); + LoadPlanScreen(arg1, "当前计划"); + }; + frm.ShowDialog(); + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string zcPartNo = ""; + + + if (ConfigurationManager.AppSettings["IsHaveVisual"] == "1") + { + DataTable dt1 = ProScreenFunc.HavePrint_1(stationId); + if (dt1 != null && dt1.Rows.Count > 0) + { + zcPartNo = dt1.Rows[0]["PartNo"].ToString(); + + + if (ProScreenFunc.IsNeedVisual(zcPartNo) && dt1.Rows[0]["Flag"].ToString() == "1") + { + MessageBox.Show("存在未打印标签的产品,不允许扫描!"); + textBox1.SelectAll(); + return; + } + + } + } + + CheckPartAndProduct(); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + public void CheckPartAndProduct() + { + try + { + textBox1.SelectAll(); + string barcode = textBox1.Text.Trim(); + + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + #region 查询是否已扫描过,如果扫过,需输入用户名密码,确认过才可以再扫 + + if (ProScreenFunc.HaveScan_1(barcode)) + { + DialogResult result = MessageBox.Show("条码为" + barcode + "的蒙皮已经冲孔,是否重新冲孔?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + ScanBarcode(barcode); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + else + { + return; + } + } + else + { + ScanBarcode(barcode); + } + + #endregion + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void ScanBarcode(string barcode) + { + try + { + string productId1 = "", productId2 = "", partNo2 = "",sn=""; + bool high = false; + string zcPartNo = label3.Text; + string zcPartName = label4.Text; + string planId = planID; + string tagId = this.Tag.ToString(); + + + productId1 = textBox1.Tag.ToString(); + + + high = ProScreenFunc.IsHigh(zcPartNo); + + if (high && !ProScreenFunc.IsScan(barcode)) + { + MessageBox.Show("无法装配,高配需要过激光切割!", "提示", MessageBoxButtons.OK); + return; + } + + if (!high && ProScreenFunc.IsScan(barcode)) + { + MessageBox.Show("无法装配,低配不需要过激光切割!", "提示", MessageBoxButtons.OK); + return; + } + + string[] codeSpecial = ProScreenFunc.GetSpecialStockNo(); + string code = barcode.Substring(0, 10); + if (codeSpecial.Contains(code)) + { + productId2 = ProScreenFunc.GetProductID(code, ""); + partNo2 = ProScreenFunc.GetPartNoByStockNo(code); + } + else + { + if (barcode.Substring(0, 2) != "22") + { + string[] codeSpecial1 = ProScreenFunc.GetSpecialStockNo(); + string code1 = barcode.Substring(0, 10); + if (codeSpecial1.Contains(code1)) + { + productId2 = ProScreenFunc.GetProductID(code, ""); + partNo2 = ProScreenFunc.GetPartNoByStockNo(code); + } + else + { + productId2 = ProScreenFunc.GetProductID(barcode); + if (string.IsNullOrWhiteSpace(productId2)) + { + string stockNo = barcode.Substring(0, 10); + productId2 = ProScreenFunc.GetProductID(stockNo, ""); + } + partNo2 = ProScreenFunc.GetPartNoByID(productId2); + } + } + + if (!ProScreenFunc.CheckPartAndProduct_1(productId1, productId2,stationId)) + { + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + + ListViewItem liv = listView1.Items.Cast().First(x => x.SubItems[0].Text == partNo2); + int index = liv.Index; + if (index != 0) + { + MessageBox.Show("条码和总成不匹配!"); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + listView1.Items[index].SubItems[2].Text = "通过"; + + bool isScan = ProScreenFunc.IsScan(barcode); + OtherPart parts = ProScreenFunc.HaveOtherPart_1(stationId, productId1); + if ((parts != null) && ((!string.IsNullOrWhiteSpace(parts.productID3)) || (!string.IsNullOrWhiteSpace(parts.productID4)) || (!string.IsNullOrWhiteSpace(parts.productID5)) || (!string.IsNullOrWhiteSpace(parts.productID6)) || (!string.IsNullOrWhiteSpace(parts.productID7)) || (!string.IsNullOrWhiteSpace(parts.productID8)))) + { + FrmOtherParts frm = new FrmOtherParts(parts); + frm.ShowDialog(); + } + else + { + ScanAll.ScanResult = true; + ScanAll.barCode1 = ""; + ScanAll.barCode2 = ""; + ScanAll.barCode3 = ""; + ScanAll.barCode4 = ""; + ScanAll.barCode5 = ""; + ScanAll.barCode6 = ""; + } + + if (ScanAll.ScanResult) + { + bool aa = false, toWms = true; + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo1)) + { + ListViewItem liv1 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo1); + int index1 = liv1.Index; + listView1.Items[index1].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo2)) + { + ListViewItem liv2 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo2); + int index2 = liv2.Index; + listView1.Items[index2].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo3)) + { + ListViewItem liv3 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo3); + int index3 = liv3.Index; + listView1.Items[index3].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo4)) + { + ListViewItem liv4 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo4); + int index4 = liv4.Index; + listView1.Items[index4].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo5)) + { + ListViewItem liv5 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo5); + int index5 = liv5.Index; + listView1.Items[index5].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo6)) + { + ListViewItem liv6 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo6); + int index6 = liv6.Index; + listView1.Items[index6].SubItems[2].Text = "通过"; + } + + if (ConfigurationManager.AppSettings["IsHaveVisual"] != "1") + { + if ((IsChangeBox && IsPass) || (!IsChangeBox)) + { + + try + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + //partNo = label3.Text; + partNo = zcPartNo; + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + aa = webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + if (aa) + { + ProScreenFunc.SaveToWmsRecord(barcode); + } + //} + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + if (aa) + { + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo_1(zcPartNo, time.ToString("yyMMdd")); + if (tmp == "") + { + sn = + zcPartNo + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + if (checkBox1.Checked) + { + if (ProScreenFunc.SavePartAndProduct_1(barcode, productId2, productId1, + label2.Text.Trim(), label2.Text.Trim().Substring(0, 1) + "班", planId, sn, + ScanAll.barCode1, ScanAll.barCode2, ScanAll.barCode3, + ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6, stationId,1)<=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + } + else + { + if (ProScreenFunc.SavePartAndProduct_1(barcode, productId2, productId1, + label2.Text.Trim(), label2.Text.Trim().Substring(0, 1) + "班", planId, sn, + ScanAll.barCode1, ScanAll.barCode2, ScanAll.barCode3, + ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6, stationId,0)<=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + } + + ProScreenFunc.SaveZcCode(barcode, zcPartNo); + ProScreenFunc.AddCompleteCountAndFinish_1(planId); + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = ""; + + DataTable headTable = new DataTable(); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("zcState"); + DataRow row = headTable.NewRow(); + row["SerialNo"] = sn; + row["oneBarCode"] = barcode; + row["zcPartNo"] = zcPartNo; + row["zcName"] = zcPartName; + row["zcState"] = "合格"; + + string reportName = ConfigurationManager.AppSettings["Printer1"]; + headTable.Rows.Add(row); + + DataTable dtDetail = ProScreenFunc.GetOtherPart(stationNo, zcPartNo); + + ReportHelper rp = new ReportHelper(path, headTable, dtDetail, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + ProScreenFunc.UpdatePrintTime_1(ProScreenFunc.SearchIdByBarCode(barcode)); + + if (ProScreenFunc.CheckPlanCompleted_1(tagId)) + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount_1(tagId); + } + DataTable dt = ProScreenFunc.GetProScreenPlan_1(tagId,stationNo,planId); + if (dt != null && dt.Rows.Count > 0) + { + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + } + } + else if (!aa ) + { + MessageBox.Show("入库失败!", "提示", MessageBoxButtons.OK); + return; + } + } + } + else + { + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo_1(zcPartNo, time.ToString("yyMMdd")); + if (tmp == "") + { + sn = + zcPartNo + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + if (checkBox1.Checked) + { + if (ProScreenFunc.SavePartAndProduct_1(barcode, productId2, productId1, + label2.Text.Trim(), label2.Text.Trim().Substring(0, 1) + "班", planId, sn, + ScanAll.barCode1, ScanAll.barCode2, ScanAll.barCode3, + ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6, stationId,1)<=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + } + else + { + if (ProScreenFunc.SavePartAndProduct_1(barcode, productId2, productId1, + label2.Text.Trim(), label2.Text.Trim().Substring(0, 1) + "班", planId, sn, + ScanAll.barCode1, ScanAll.barCode2, ScanAll.barCode3, + ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6, stationId,0) <= 0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + } + ProScreenFunc.SaveZcCode(barcode, zcPartNo); + + if (!ProScreenFunc.IsNeedVisual(zcPartNo)) + { + if (stationNo != "ZP95") + { + try + { + //toWms = ProScreenFunc.IsToWms(barcode); + //if (!toWms) + //{ + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + //partNo = label3.Text; + partNo = zcPartNo; + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + aa = webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + if (aa) + { + ProScreenFunc.SaveToWmsRecord(barcode); + } + //} + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + if (aa) + { + ProScreenFunc.AddCompleteCountAndFinish_1(planId); + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = ""; + //path = Application.StartupPath + @"\ZC.grf"; + if (!checkBox1.Checked) + { + path = Application.StartupPath + @"\ZC.grf"; + } + else + { + path = Application.StartupPath + @"\ZCIndia.grf"; + } + + DataTable headTable = new DataTable(); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("zcState"); + DataRow row = headTable.NewRow(); + row["SerialNo"] = sn; + row["oneBarCode"] = barcode; + row["zcPartNo"] = zcPartNo; + row["zcName"] = zcPartName; + row["zcState"] = ""; + + string reportName = ConfigurationManager.AppSettings["Printer1"]; + headTable.Rows.Add(row); + + DataTable dtDetail = ProScreenFunc.GetOtherPart(stationNo, zcPartNo); + + ReportHelper rp = new ReportHelper(path, headTable, dtDetail, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + ProScreenFunc.UpdatePrintTime_1(ProScreenFunc.SearchIdByBarCode_1(barcode)); + + + if (ProScreenFunc.CheckPlanCompleted_1(tagId)) + { + //LoadScreen(); + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount_1(tagId); + } + + DataTable dt = ProScreenFunc.GetProScreenByPlanID_1(tagId); + if (dt != null && dt.Rows.Count > 0) + { + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + } + } + else if (!aa) + { + MessageBox.Show("入库失败!", "提示", MessageBoxButtons.OK); + return; + } + } + else + { + ProScreenFunc.UpdateSignal(2, 1, 1); + } + } + else + { + if (stationNo == "ZP95") + { + ProScreenFunc.UpdateSignal(1, 1, 1); + + //timer2.Enabled = true; + } + } + } + InitList(ConfigurationManager.AppSettings["StationNo"], label3.Text); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + + #region 补打标签 + + private void button3_Click(object sender, EventArgs e) + { + textBox4.Text = ""; + textBox4.Visible = true; + textBox4.Focus(); + } + + private void textBox4_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox4.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + DataTable dtHg = ProScreenFunc.GetZp(barcode); + if (dtHg == null || dtHg.Rows.Count < 1) + { + MessageBox.Show("未装配,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + + LogSysBLL.AddInfo("条码:" + barcode + "补打标签", MethodBase.GetCurrentMethod()); + + string zcID = dtHg.Rows[0]["ZcID"].ToString(); + string zcSn = dtHg.Rows[0]["SerialNo"].ToString(); + ZcPrintLabel zl = ProScreenFunc.GetZcPrintLabel(zcID); + if (zl != null && zl.zcPartNo != null && zl.zcName != null) + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = ""; + if (dtHg.Rows[0]["IsIndia"].ToString() == "0") + { + path = Application.StartupPath + @"\ZC.grf"; + } + else + { + path = Application.StartupPath + @"\ZCIndia.grf"; + } + + DataTable headTable = new DataTable(); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("zcState"); + DataRow row = headTable.NewRow(); + row["SerialNo"] = zcSn; + row["oneBarCode"] = barcode; + row["zcPartNo"] = zl.zcPartNo; + row["zcName"] = zl.zcName; + //row["zcState"] = dtHg.Rows[0]["ToVisual"].ToString() == "1" ? "" : "合格"; + row["zcState"] = dtHg.Rows[0]["Flag"].ToString() == "0" ? "不合格" : "合格"; + + string reportName = ConfigurationManager.AppSettings["Printer1"]; + headTable.Rows.Add(row); + + DataTable dtDetail = ProScreenFunc.GetOtherPart(stationNo, zl.zcPartNo); + + ReportHelper rp = new ReportHelper(path, headTable, dtDetail, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + textBox4.SelectAll(); + } + } + else + { + MessageBox.Show("根据总成号找不到对应名称,请维护基础数据!"); + textBox4_DoubleClick(sender, e); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + } + + private void textBox4_DoubleClick(object sender, EventArgs e) + { + textBox4.Text = ""; + textBox4.Visible = false; + } + + #endregion + + + /// + /// 合格转不合格 + /// + /// + /// + private void button4_Click(object sender, EventArgs e) + { + textBox3.Visible = true; + textBox3.Text = ""; + } + + private void textBox3_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string zcId = "", zcPartNo = "",tempPlanId=""; + + if (string.IsNullOrWhiteSpace(textBox3.Text)) + { + MessageBox.Show("条码不能为空"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + + string barcode = ""; + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + else + { + barcode = textBox3.Text.Trim(); + } + + DataTable dtHg = ProScreenFunc.GetZp(barcode); + if (dtHg == null || dtHg.Rows.Count < 1) + { + MessageBox.Show("未装配,不能删除!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + else + { + if (dtHg.Rows[0]["Flag"].ToString()=="0") + { + MessageBox.Show("该产品已是不合格件,无需操作!"); + textBox3_DoubleClick(sender, e); + return; + } + tempPlanId = dtHg.Rows[0]["PlanID"].ToString(); + } + + ZcPrintLabel zl = ProScreenFunc.GetZcPrintLabel(zcId); + if (zl != null) + { + zcPartNo = zl.zcPartNo; + } + + ProScreenFunc.UpdateFlag(barcode, 0); + ProScreenFunc.AddBadCount_1(tempPlanId); + + + if (ProScreenFunc.CheckPlanCompleted_1(this.Tag.ToString())) + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount_1(this.Tag.ToString()); + } + + DataTable dt = ProScreenFunc.GetProScreenPlan_1(this.Tag.ToString(), stationNo, planID); + if (dt != null && dt.Rows.Count > 0) + { + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + } + + + + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void textBox3_DoubleClick(object sender, EventArgs e) + { + textBox3.Visible = false; + textBox3.Text = ""; + } + + /// + /// 重新数据检测 + /// + /// + /// + private void button7_Click(object sender, EventArgs e) + { + try + { + DialogResult result = MessageBox.Show("是否重新视觉检测?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + ProScreenFunc.UpdateSignal(2, 1, 1); + int a = ProScreenFunc.VisualReset_1(stationId); + if (a > 0) + { + MessageBox.Show("重置成功!"); + } + else + { + MessageBox.Show("重置失败!"); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void label9_Click(object sender, EventArgs e) + { + if (ConfigurationManager.AppSettings["IsHaveVisual"] == "1") + { + SqlDependency.Stop(SqlHelper.SqlConnString); + } + + Environment.Exit(0); + } + + private void InitList(string stationNo, string partNo) + { + try + { + listView1.Items.Clear(); + DataTable dt = ProScreenFunc.GetOtherPart(stationNo, partNo); + if (dt != null && dt.Rows.Count > 0) + { + for (int i = 0; i < dt.Rows.Count; i++) + { + ListViewItem lvi = new ListViewItem(dt.Rows[i]["PartNo"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["PartName"].ToString()); + + if (!string.IsNullOrWhiteSpace(dt.Rows[i]["PartNo"].ToString()) && !string.IsNullOrWhiteSpace(dt.Rows[i]["IsCheck"].ToString())) + { + lvi.SubItems.Add("未通过"); + } + lvi.SubItems.Add(dt.Rows[i]["Qty"].ToString()); + + listView1.Items.Add(lvi); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + public void SetPage(DataTable dt, string stationNo) + { + textBox2.Text = ""; + textBox2.Visible = false; + textBox3.Text = ""; + textBox3.Visible = false; + textBox4.Text = ""; + textBox4.Visible = false; + + textBox5.Text = ""; + textBox5.Visible = false; + + if (dt != null && dt.Rows.Count > 0) + { + + + label1.Text = dt.Rows[0]["Des1"].ToString(); + label2.Text = dt.Rows[0]["OrderNo"].ToString(); + label3.Text = dt.Rows[0]["PartNo"].ToString(); + label4.Text = dt.Rows[0]["ProductName"].ToString(); + label6.Text = dt.Rows[0]["OrderCount"].ToString(); + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + label8.Text = dt.Rows[0]["OrderNo"].ToString().Substring(0, 1) + "班"; + + this.Tag = dt.Rows[0]["ID"].ToString(); + planID = this.Tag.ToString(); + textBox1.Tag = dt.Rows[0]["ProductID"].ToString(); + textBox1.Text = ""; + + InitList(stationNo, label3.Text); + + } + } + + /// + /// 初始化关键零件列表 + /// + /// 工位编号 + /// 总成零件号 + + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214.resx new file mode 100644 index 0000000..a58fa0e --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214.resx @@ -0,0 +1,1435 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214_2.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214_2.Designer.cs new file mode 100644 index 0000000..d43c302 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214_2.Designer.cs @@ -0,0 +1,451 @@ +namespace PunchAndWeld +{ + partial class FrmDoorSill_214_2 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmDoorSill_214_2)); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.零件名称 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.listView1 = new System.Windows.Forms.ListView(); + this.button7 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.textBox5 = new System.Windows.Forms.TextBox(); + this.button4 = new System.Windows.Forms.Button(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.label10 = new System.Windows.Forms.Label(); + this.timer2 = new System.Windows.Forms.Timer(this.components); + this.SuspendLayout(); + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(44, 130); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(298, 76); + this.label1.TabIndex = 57; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(44, 318); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(298, 82); + this.label2.TabIndex = 58; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.White; + this.label3.Location = new System.Drawing.Point(44, 502); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(298, 87); + this.label3.TabIndex = 59; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.ForeColor = System.Drawing.Color.White; + this.label4.Location = new System.Drawing.Point(44, 698); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(298, 78); + this.label4.TabIndex = 60; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(42, 891); + this.textBox1.Margin = new System.Windows.Forms.Padding(2); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(316, 74); + this.textBox1.TabIndex = 61; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label6 + // + this.label6.BackColor = System.Drawing.Color.Transparent; + this.label6.Font = new System.Drawing.Font("微软雅黑", 180F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.ForeColor = System.Drawing.Color.Blue; + this.label6.Location = new System.Drawing.Point(377, 271); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(553, 332); + this.label6.TabIndex = 62; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label7 + // + this.label7.BackColor = System.Drawing.Color.Transparent; + this.label7.Font = new System.Drawing.Font("微软雅黑", 160F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.ForeColor = System.Drawing.Color.Lime; + this.label7.Location = new System.Drawing.Point(375, 682); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(555, 288); + this.label7.TabIndex = 63; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.ForeColor = System.Drawing.Color.White; + this.label9.Location = new System.Drawing.Point(939, 72); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(338, 67); + this.label9.TabIndex = 64; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.Click += new System.EventHandler(this.label9_Click); + // + // label8 + // + this.label8.BackColor = System.Drawing.Color.Transparent; + this.label8.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.ForeColor = System.Drawing.Color.White; + this.label8.Location = new System.Drawing.Point(939, 185); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(338, 67); + this.label8.TabIndex = 65; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.Transparent; + this.label5.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.ForeColor = System.Drawing.Color.White; + this.label5.Location = new System.Drawing.Point(937, 7); + this.label5.Margin = new System.Windows.Forms.Padding(0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(340, 40); + this.label5.TabIndex = 66; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // columnHeader1 + // + this.columnHeader1.Text = "零件号"; + this.columnHeader1.Width = 120; + // + // 零件名称 + // + this.零件名称.Text = "零件名称"; + this.零件名称.Width = 175; + // + // columnHeader3 + // + this.columnHeader3.Text = "状态"; + this.columnHeader3.Width = 0; + // + // columnHeader2 + // + this.columnHeader2.Text = "数量"; + this.columnHeader2.Width = 40; + // + // listView1 + // + this.listView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(46)))), ((int)(((byte)(64))))); + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.零件名称, + this.columnHeader3, + this.columnHeader2}); + this.listView1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.listView1.ForeColor = System.Drawing.Color.White; + this.listView1.FullRowSelect = true; + this.listView1.GridLines = true; + this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listView1.HideSelection = false; + this.listView1.Location = new System.Drawing.Point(937, 349); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(341, 278); + this.listView1.TabIndex = 67; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // button7 + // + this.button7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.button7.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button7.Location = new System.Drawing.Point(1121, 875); + this.button7.Margin = new System.Windows.Forms.Padding(2); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(153, 75); + this.button7.TabIndex = 77; + this.button7.Text = "重新视觉检测"; + this.button7.UseVisualStyleBackColor = false; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(944, 662); + this.button1.Margin = new System.Windows.Forms.Padding(2); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(153, 75); + this.button1.TabIndex = 68; + this.button1.Text = "上一计划"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button2 + // + this.button2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(1117, 662); + this.button2.Margin = new System.Windows.Forms.Padding(2); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(153, 75); + this.button2.TabIndex = 69; + this.button2.Text = "下一计划"; + this.button2.UseVisualStyleBackColor = false; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button6 + // + this.button6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button6.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button6.Location = new System.Drawing.Point(948, 769); + this.button6.Margin = new System.Windows.Forms.Padding(2); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(153, 75); + this.button6.TabIndex = 70; + this.button6.Text = "计划查询"; + this.button6.UseVisualStyleBackColor = false; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // button3 + // + this.button3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(1117, 769); + this.button3.Margin = new System.Windows.Forms.Padding(2); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(153, 75); + this.button3.TabIndex = 71; + this.button3.Text = "补打标签"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // textBox2 + // + this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(415, 491); + this.textBox2.Margin = new System.Windows.Forms.Padding(2); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(469, 39); + this.textBox2.TabIndex = 72; + this.textBox2.Visible = false; + // + // textBox3 + // + this.textBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(423, 499); + this.textBox3.Margin = new System.Windows.Forms.Padding(2); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(469, 39); + this.textBox3.TabIndex = 73; + this.textBox3.Visible = false; + this.textBox3.DoubleClick += new System.EventHandler(this.textBox3_DoubleClick); + this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown); + // + // textBox4 + // + this.textBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(431, 507); + this.textBox4.Margin = new System.Windows.Forms.Padding(2); + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(469, 39); + this.textBox4.TabIndex = 74; + this.textBox4.Visible = false; + this.textBox4.DoubleClick += new System.EventHandler(this.textBox4_DoubleClick); + this.textBox4.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox4_KeyDown); + // + // textBox5 + // + this.textBox5.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox5.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox5.Location = new System.Drawing.Point(439, 515); + this.textBox5.Margin = new System.Windows.Forms.Padding(2); + this.textBox5.Name = "textBox5"; + this.textBox5.Size = new System.Drawing.Size(469, 39); + this.textBox5.TabIndex = 75; + this.textBox5.Visible = false; + // + // button4 + // + this.button4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button4.Location = new System.Drawing.Point(948, 875); + this.button4.Margin = new System.Windows.Forms.Padding(2); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(153, 75); + this.button4.TabIndex = 76; + this.button4.Text = "产品不良"; + this.button4.UseVisualStyleBackColor = false; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.BackColor = System.Drawing.Color.Transparent; + this.checkBox1.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.checkBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(112)))), ((int)(((byte)(187))))); + this.checkBox1.Location = new System.Drawing.Point(957, 295); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(94, 32); + this.checkBox1.TabIndex = 78; + this.checkBox1.Text = "印度件"; + this.checkBox1.UseVisualStyleBackColor = false; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.BackColor = System.Drawing.Color.LimeGreen; + this.label10.Font = new System.Drawing.Font("微软雅黑", 96F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.ForeColor = System.Drawing.Color.White; + this.label10.Location = new System.Drawing.Point(521, 348); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(255, 165); + this.label10.TabIndex = 79; + this.label10.Text = "OK"; + // + // timer2 + // + this.timer2.Interval = 2000; + this.timer2.Tick += new System.EventHandler(this.timer1_Tick_1); + // + // FrmDoorSill_214_2 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage"))); + this.ClientSize = new System.Drawing.Size(1280, 1024); + this.Controls.Add(this.label10); + this.Controls.Add(this.checkBox1); + this.Controls.Add(this.button4); + this.Controls.Add(this.textBox5); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.button3); + this.Controls.Add(this.button6); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.button7); + this.Controls.Add(this.listView1); + this.Controls.Add(this.label5); + this.Controls.Add(this.label8); + this.Controls.Add(this.label9); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmDoorSill_214_2"; + this.Text = "214门槛区分工位"; + this.Load += new System.EventHandler(this.FrmDoorSill_214_2_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader 零件名称; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.TextBox textBox5; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Timer timer2; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214_2.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214_2.cs new file mode 100644 index 0000000..bc2e092 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214_2.cs @@ -0,0 +1,1486 @@ +using gregn6Lib; +using PunchAndWeld.DataSouce; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using DBUtility; +using MESClassLibrary.BLL.Log; +using PunchAndWeld.WebReference; +using OPCAutomation; +using System.Reflection.Emit; + +namespace PunchAndWeld +{ + public partial class FrmDoorSill_214_2 : Form + { + public bool IsChangeBox = false; + public bool IsPass = false; + private string IsHigh = "1"; + public string stationNo = "",stationId=""; + + string[] partNo1 = new string[10]; + string planID = "", zcHigh = ""; + + int stationState = 0; + int isFirst = 0; + + private GridppReport Report = new GridppReport(); + OPCHelper opcHelper = new OPCHelper(); + + public FrmDoorSill_214_2() + { + InitializeComponent(); + } + + private void FrmDoorSill_214_2_Load(object sender, EventArgs e) + { + label5.Text = "当前版本:" +Assembly.GetExecutingAssembly().GetName().Version; + stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + stationId = ProScreenFunc.GetStationId(stationNo); + + label1.Text = ProScreenFunc.GetStation(stationNo); + label10.Visible = false; + timer2.Enabled=false; + + Control.CheckForIllegalCrossThreadCalls = false; + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + + + if (ConfigurationManager.AppSettings["IsHaveVisual"] == "1") + { + + try + { + if (opcHelper.CreateServer()) + { + if (opcHelper.ConnectServer("", "Kepware.KEPServerEX.V6")) + { + opcHelper.Connected = true; + + opcHelper.opcGroups = opcHelper.opcServer.OPCGroups; + opcHelper.opcGroup1 = opcHelper.opcGroups.Add("Right"); + opcHelper.SetGroupProperty(opcHelper.opcGroup1, 500); + + opcHelper.opcGroup2 = opcHelper.opcGroups.Add("Left"); + opcHelper.SetGroupProperty(opcHelper.opcGroup2, 500); + + + opcHelper.opcItems1 = opcHelper.opcGroup1.OPCItems; + opcHelper.opcItems1.DefaultIsActive = true; + opcHelper.opcItemm1 = new OPCItem[2]; + opcHelper.opcItemm1[0] = opcHelper.opcItems1.AddItem("BBMPT.ZP214.IsHigh_R", 0); + opcHelper.opcItemm1[1] = opcHelper.opcItems1.AddItem("BBMPT.ZP214.State_R", 1); + + opcHelper.opcItems2 = opcHelper.opcGroup2.OPCItems; + opcHelper.opcItems2.DefaultIsActive = true; + opcHelper.opcItemm2= new OPCItem[2]; + opcHelper.opcItemm2[0] = opcHelper.opcItems2.AddItem("BBMPT.ZP214.IsHigh_L", 0); + opcHelper.opcItemm2[1] = opcHelper.opcItems2.AddItem("BBMPT.ZP214.State_L", 1); + + + opcHelper.opcGroup1.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(opcGroup1_DataChange); + opcHelper.opcGroup2.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(opcGroup2_DataChange); + stationState =opcHelper. ReadSingleValueFromOPC2(1); + + Thread t1 = new Thread(new ThreadStart(TimeGo1)); + t1.Start(); + + } + } + else + { + MessageBox.Show("创建OPC服务失败!", "提示", MessageBoxButtons.OK); + opcHelper.Connected = false; + LogHelper.WriteErrLogBase("工位:" + label1.Text + "创建OPC服务失败!", MethodBase.GetCurrentMethod().Name); + return; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + } + + + LoadScreen(); + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + label9.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + + private void TimeGo1() + { + System.Timers.Timer timer1 = new System.Timers.Timer(); + timer1.Interval =3000; + timer1.Enabled = true; + timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick); + } + + private void timer1_Tick(object sender, EventArgs e) + { + DataTable dt = ProScreenFunc.GetSignal(); + if (dt!=null && dt.Rows.Count>0) + { + if (dt.Rows[0]["IsFinish"].ToString()=="1") + { + opcHelper.opcItemm2[0].Write(Convert.ToInt32(dt.Rows[0]["IsHigh"])); + opcHelper.opcItemm2[1].Write(1); + + ProScreenFunc.UpdateWriteDone(); + } + else if (dt.Rows[0]["IsFinish"].ToString() == "0") + { + } + } + } + + + private void AfterScanBarcode1() + { + try + { + string ID = "", barcode = "", planId1 = "", toVisual = "", zcPartNo = "", zcPartName = "", sn = "",flag=""; + DataTable dt1 = ProScreenFunc.HavePrint_1(stationId); + if (dt1 != null && dt1.Rows.Count > 0) + { + ID = dt1.Rows[0]["ID"].ToString(); + barcode = dt1.Rows[0]["barcode"].ToString(); + zcPartNo = dt1.Rows[0]["PartNo"].ToString(); + zcPartName = dt1.Rows[0]["ProductName"].ToString(); + planId1 = dt1.Rows[0]["PlanID"].ToString(); + sn = dt1.Rows[0]["SerialNo"].ToString(); + toVisual = dt1.Rows[0]["ToVisual"].ToString(); + flag= dt1.Rows[0]["Flag"].ToString()=="1"?"合格":"不合格"; + + if (!ProScreenFunc.IsNeedVisual(zcPartNo) && flag=="1") + { + return; + } + } + else + { + return; + } + if (toVisual == "0") + { + this.Invoke((EventHandler)(delegate + { + + bool aa = false, toWms = true; + + try + { + toWms = ProScreenFunc.IsToWms(barcode); + if (!toWms) + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"]; + + //aa = webService.WMSInterfaceStockIn(barcode, zcPartNo, batchNo, 1); + aa = webService.WMSInterfaceStockIn(barcode, zcPartNo, batchNo, int.Parse(flag)); + if (aa) + { + ProScreenFunc.SaveToWmsRecord(barcode); + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + if (aa || toWms) + { + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = ""; + + if (!checkBox1.Checked) + { + path = Application.StartupPath + @"\ZC.grf"; + } + else + { + path = Application.StartupPath + @"\ZCIndia.grf"; + } + DataTable headTable = new DataTable(); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("zcState"); + DataRow row = headTable.NewRow(); + row["SerialNo"] = sn; + row["oneBarCode"] = barcode; + row["zcPartNo"] = zcPartNo; + row["zcName"] = zcPartName; + //row["zcState"] = "合格"; + row["zcState"] = flag; + + string reportName = ConfigurationManager.AppSettings["Printer1"]; + headTable.Rows.Add(row); + + DataTable dtDetail = ProScreenFunc.GetOtherPart(stationNo, zcPartNo); + ReportHelper rp = new ReportHelper(path, headTable, dtDetail, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + ProScreenFunc.UpdatePrintTime_1(ID); + + if (flag == "1") + { + ProScreenFunc.AddCompleteCountAndFinish_1(planId1); + } + + + if (planID == planId1) + { + DataTable dt = ProScreenFunc.GetProScreenByPlanID_1(planId1); + if (dt != null && dt.Rows.Count > 0) + { + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + } + + + if (ProScreenFunc.CheckPlanCompleted_1(this.Tag.ToString().Trim())) + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount_1(this.Tag.ToString().Trim()); + } + + } + } + else if (!aa && !toWms) + { + MessageBox.Show("WMS入库失败"); + } + })); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + public void LoadScreen() + { + DataTable dt = ProScreenFunc.GetProScreen_1(stationId); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt, stationNo); + } + else + { + label1.Text = ProScreenFunc.GetStation(stationNo); + label2.Text = ""; + label3.Text = ""; + label4.Text = ""; + label6.Text = "0"; + label7.Text = "0"; + label8.Text = ""; + + this.Tag = ""; //计划ID + planID = this.Tag.ToString(); + textBox1.Tag = ""; + textBox1.Text = ""; + + MessageBox.Show("无计划!", "提示", MessageBoxButtons.OK); + } + } + + /// + /// 上一计划 + /// + /// + /// + private void button1_Click(object sender, EventArgs e) + { + if (this.Tag == null || string.IsNullOrWhiteSpace(this.Tag.ToString())) + { + MessageBox.Show("无上一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "上一计划"); + } + } + + public void LoadPlanScreen(string id, string plan) + { + DataTable dt = ProScreenFunc.GetProScreenPlan_1(id, stationNo, plan); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt, stationNo); + } + else + { + if (plan == "下一计划") + { + MessageBox.Show("无下一计划"); + } + + else + { + MessageBox.Show("无上一计划"); + } + } + } + + /// + /// 下一计划 + /// + /// + /// + private void button2_Click(object sender, EventArgs e) + { + if (this.Tag == null || string.IsNullOrWhiteSpace(this.Tag.ToString())) + { + MessageBox.Show("无下一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + } + + /// + /// 计划查询 + /// + /// + /// + private void button6_Click(object sender, EventArgs e) + { + FrmSearchPlan frm = new FrmSearchPlan(); + frm.OkClick += (arg1) => + { + this.Tag = arg1; + frm.Close(); + LoadPlanScreen(arg1, "当前计划"); + }; + frm.ShowDialog(); + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string zcPartNo = ""; + + if (stationState==3) + { + MessageBox.Show("视觉检测不合格,请重新检测或将产品判定为不良!"); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + + + if (ConfigurationManager.AppSettings["IsHaveVisual"] == "1") + { + DataTable dt1 = ProScreenFunc.HavePrint_1(stationId); + if (dt1 != null && dt1.Rows.Count > 0) + { + zcPartNo = dt1.Rows[0]["PartNo"].ToString(); + + + if (ProScreenFunc.IsNeedVisual(zcPartNo) && dt1.Rows[0]["Flag"].ToString() == "1") + { + MessageBox.Show("存在未打印标签的产品,不允许扫描!"); + textBox1.SelectAll(); + return; + } + } + } + + CheckPartAndProduct(); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + public void CheckPartAndProduct() + { + try + { + textBox1.SelectAll(); + string barcode = textBox1.Text.Trim(); + + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + + if (ProScreenFunc.HaveScan_1(barcode)) + { + DialogResult result = MessageBox.Show("条码为" + barcode + "的蒙皮已经冲孔,是否重新冲孔?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + ScanBarcode(barcode); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + else + { + return; + } + } + else + { + ScanBarcode(barcode); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void ScanBarcode(string barcode) + { + try + { + string productId1 = "", productId2 = "", partNo2 = "",sn=""; + bool high = false; + string zcPartNo = label3.Text; + string zcPartName = label4.Text; + string planId = planID; + string tagId = this.Tag.ToString(); + + + productId1 = textBox1.Tag.ToString(); + + + high = ProScreenFunc.IsHigh(zcPartNo); + + if (high && !ProScreenFunc.IsScan(textBox1.Text.Trim())) + { + MessageBox.Show("无法装配,高配需要过激光切割!", "提示", MessageBoxButtons.OK); + return; + } + + if (!high && ProScreenFunc.IsScan(textBox1.Text.Trim())) + { + MessageBox.Show("无法装配,低配不需要过激光切割!", "提示", MessageBoxButtons.OK); + return; + } + + string[] codeSpecial = ProScreenFunc.GetSpecialStockNo(); + string code = barcode.Substring(0, 10); + if (codeSpecial.Contains(code)) + { + productId2 = ProScreenFunc.GetProductID(code, ""); + partNo2 = ProScreenFunc.GetPartNoByStockNo(code); + } + else + { + if (barcode.Substring(0, 2) != "22") + { + string[] codeSpecial1 = ProScreenFunc.GetSpecialStockNo(); + string code1 = barcode.Substring(0, 10); + if (codeSpecial1.Contains(code1)) + { + productId2 = ProScreenFunc.GetProductID(code, ""); + partNo2 = ProScreenFunc.GetPartNoByStockNo(code); + } + else + { + productId2 = ProScreenFunc.GetProductID(barcode); + if (string.IsNullOrWhiteSpace(productId2)) + { + string stockNo = barcode.Substring(0, 10); + productId2 = ProScreenFunc.GetProductID(stockNo, ""); + } + partNo2 = ProScreenFunc.GetPartNoByID(productId2); + } + } + + if (!ProScreenFunc.CheckPartAndProduct_1(productId1, productId2,stationId)) + { + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + + ListViewItem liv = listView1.Items.Cast().First(x => x.SubItems[0].Text == partNo2); + int index = liv.Index; + if (index != 0) + { + MessageBox.Show("条码和总成不匹配!"); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + listView1.Items[index].SubItems[2].Text = "通过"; + + bool isScan = ProScreenFunc.IsScan(barcode); + OtherPart parts = ProScreenFunc.HaveOtherPart_1(stationId, productId1); + if ((parts != null) && ((!string.IsNullOrWhiteSpace(parts.productID3)) || (!string.IsNullOrWhiteSpace(parts.productID4)) || (!string.IsNullOrWhiteSpace(parts.productID5)) || (!string.IsNullOrWhiteSpace(parts.productID6)) || (!string.IsNullOrWhiteSpace(parts.productID7)) || (!string.IsNullOrWhiteSpace(parts.productID8)))) + { + FrmOtherParts frm = new FrmOtherParts(parts); + frm.ShowDialog(); + } + else + { + ScanAll.ScanResult = true; + ScanAll.barCode1 = ""; + ScanAll.barCode2 = ""; + ScanAll.barCode3 = ""; + ScanAll.barCode4 = ""; + ScanAll.barCode5 = ""; + ScanAll.barCode6 = ""; + } + + if (ScanAll.ScanResult) + { + bool aa = false, toWms = true; + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo1)) + { + ListViewItem liv1 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo1); + int index1 = liv1.Index; + listView1.Items[index1].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo2)) + { + ListViewItem liv2 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo2); + int index2 = liv2.Index; + listView1.Items[index2].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo3)) + { + ListViewItem liv3 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo3); + int index3 = liv3.Index; + listView1.Items[index3].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo4)) + { + ListViewItem liv4 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo4); + int index4 = liv4.Index; + listView1.Items[index4].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo5)) + { + ListViewItem liv5 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo5); + int index5 = liv5.Index; + listView1.Items[index5].SubItems[2].Text = "通过"; + } + + if (!string.IsNullOrWhiteSpace(ScanAll.partNo6)) + { + ListViewItem liv6 = listView1.Items.Cast() + .First(x => x.SubItems[0].Text == ScanAll.partNo6); + int index6 = liv6.Index; + listView1.Items[index6].SubItems[2].Text = "通过"; + } + + if (ConfigurationManager.AppSettings["IsHaveVisual"] != "1") + { + if ((IsChangeBox && IsPass) || (!IsChangeBox)) + { + try + { + toWms = ProScreenFunc.IsToWms(barcode); + if (!toWms) + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + //partNo = label3.Text; + partNo = zcPartNo; + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + aa = webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + if (aa) + { + ProScreenFunc.SaveToWmsRecord(barcode); + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + if (aa || toWms) + { + + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo_1(zcPartNo, time.ToString("yyMMdd")); + if (tmp == "") + { + sn = + zcPartNo + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + if (checkBox1.Checked) + { + if (ProScreenFunc.SavePartAndProduct_1(barcode, productId2, productId1, + label2.Text.Trim(), label2.Text.Trim().Substring(0, 1) + "班", planId, sn, + ScanAll.barCode1, ScanAll.barCode2, ScanAll.barCode3, + ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6, stationId,1)<=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + } + else + { + if (ProScreenFunc.SavePartAndProduct_1(barcode, productId2, productId1, + label2.Text.Trim(), label2.Text.Trim().Substring(0, 1) + "班", planId, sn, + ScanAll.barCode1, ScanAll.barCode2, ScanAll.barCode3, + ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6, stationId,0)<=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + } + + ProScreenFunc.SaveZcCode(barcode, zcPartNo); + ProScreenFunc.AddCompleteCountAndFinish_1(planId); + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = ""; + + DataTable headTable = new DataTable(); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("zcState"); + DataRow row = headTable.NewRow(); + row["SerialNo"] = sn; + row["oneBarCode"] = barcode; + row["zcPartNo"] = zcPartNo; + row["zcName"] = zcPartName; + row["zcState"] = "合格"; + + string reportName = ConfigurationManager.AppSettings["Printer1"]; + headTable.Rows.Add(row); + + DataTable dtDetail = ProScreenFunc.GetOtherPart(stationNo, zcPartNo); + + ReportHelper rp = new ReportHelper(path, headTable, dtDetail, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + ProScreenFunc.UpdatePrintTime_1(ProScreenFunc.SearchIdByBarCode(barcode)); + + + if (ProScreenFunc.CheckPlanCompleted_1(tagId)) + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount_1(tagId); + } + + DataTable dt = ProScreenFunc.GetProScreenPlan_1(tagId,stationNo,planId); + if (dt != null && dt.Rows.Count > 0) + { + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + } + } + else if (!aa && !toWms) + { + MessageBox.Show("入库失败!", "提示", MessageBoxButtons.OK); + return; + } + } + } + else + { + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo_1(zcPartNo, time.ToString("yyMMdd")); + if (tmp == "") + { + sn = + zcPartNo + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + if (checkBox1.Checked) + { + if (ProScreenFunc.SavePartAndProduct_1(barcode, productId2, productId1, + label2.Text.Trim(), label2.Text.Trim().Substring(0, 1) + "班", planId, sn, + ScanAll.barCode1, ScanAll.barCode2, ScanAll.barCode3, + ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6, stationId,1)<=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + } + else + { + if (ProScreenFunc.SavePartAndProduct_1(barcode, productId2, productId1, + label2.Text.Trim(), label2.Text.Trim().Substring(0, 1) + "班", planId, sn, + ScanAll.barCode1, ScanAll.barCode2, ScanAll.barCode3, + ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6, stationId,0) <= 0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + } + ProScreenFunc.SaveZcCode(barcode, zcPartNo); + + if (!ProScreenFunc.IsNeedVisual(zcPartNo)) + { + + opcHelper.opcItemm1[0].Write(2); + opcHelper.opcItemm1[1].Write(1); + + try + { + //toWms = ProScreenFunc.IsToWms(barcode); + //if (!toWms) + //{ + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + //partNo = label3.Text; + partNo = zcPartNo; + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + aa = webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + if (aa) + { + ProScreenFunc.SaveToWmsRecord(barcode); + } + //} + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + + if (aa) + //if (aa || !toWms) + { + ProScreenFunc.AddCompleteCountAndFinish_1(planId); + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = ""; + //path = Application.StartupPath + @"\ZC.grf"; + if (!checkBox1.Checked) + { + path = Application.StartupPath + @"\ZC.grf"; + } + else + { + path = Application.StartupPath + @"\ZCIndia.grf"; + } + + DataTable headTable = new DataTable(); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("zcState"); + DataRow row = headTable.NewRow(); + row["SerialNo"] = sn; + row["oneBarCode"] = barcode; + row["zcPartNo"] = zcPartNo; + row["zcName"] = zcPartName; + row["zcState"] = ""; + + string reportName = ConfigurationManager.AppSettings["Printer1"]; + headTable.Rows.Add(row); + + DataTable dtDetail = ProScreenFunc.GetOtherPart(stationNo, zcPartNo); + + ReportHelper rp = new ReportHelper(path, headTable, dtDetail, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + ProScreenFunc.UpdatePrintTime_1(ProScreenFunc.SearchIdByBarCode_1(barcode)); + + if (ProScreenFunc.CheckPlanCompleted_1(tagId)) + { + //LoadScreen(); + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount_1(tagId); + } + + DataTable dt = ProScreenFunc.GetProScreenByPlanID_1(tagId); + if (dt != null && dt.Rows.Count > 0) + { + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + } + } + else if (!aa && !toWms) + { + MessageBox.Show("入库失败!", "提示", MessageBoxButtons.OK); + return; + } + } + else + { + opcHelper.opcItemm1[0].Write(1); + opcHelper.opcItemm1[1].Write(1); + } + } + InitList(ConfigurationManager.AppSettings["StationNo"], label3.Text); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + void opcGroup1_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps) + { + try + { + for (int i = 1; i <= NumItems; i++) + { + int handle = Convert.ToInt32(ClientHandles.GetValue(i).ToString().Trim()); + string value = ItemValues.GetValue(i).ToString(); + string address = opcHelper.opcItemm1[(Convert.ToInt32(ClientHandles.GetValue(i)))].ItemID; + + if (handle == 1) + { + if (value=="1") + { + stationState = 1; + } + else if (value =="2") + { + stationState = 2; + + label10.Visible = true; + label10.Text = "OK"; + label10.BackColor = Color.LimeGreen; + timer2.Enabled = true; + } + else if (value=="3") + { + stationState = 3; + label10.Visible = true; + label10.Text = "NG"; + label10.BackColor = Color.Red; + timer2.Enabled = true; + } + + else if (value == "0") + { + stationState = 0; + } + } + } + } + catch(Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + void opcGroup2_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps) + { + try + { + for (int i = 1; i <= NumItems; i++) + { + int handle = Convert.ToInt32(ClientHandles.GetValue(i).ToString().Trim()); + string value = ItemValues.GetValue(i).ToString(); + string address = opcHelper.opcItemm2[(Convert.ToInt32(ClientHandles.GetValue(i)))].ItemID; + + if (handle == 1) + { + if (value == "1") + { + //stationState = 1; + } + else if (value == "2") + { + ProScreenFunc.UpdateVisualFlag("85016af3-f147-4224-bbd5-1ff72946da2b"); + + ProScreenFunc.UpdateSignal(0, 2, 0); + } + else if (value == "3") + { + stationState = 3; + ProScreenFunc.UpdateSignal(0, 3, 0); + } + else if (value == "0") + { + stationState = 0; + } + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + + #region 补打标签 + + private void button3_Click(object sender, EventArgs e) + { + textBox4.Text = ""; + textBox4.Visible = true; + textBox4.Focus(); + } + + private void textBox4_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox4.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + DataTable dtHg = ProScreenFunc.GetZp(barcode); + if (dtHg == null || dtHg.Rows.Count < 1) + { + MessageBox.Show("未装配,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + + LogSysBLL.AddInfo("条码:" + barcode + "补打标签", MethodBase.GetCurrentMethod()); + + string zcID = dtHg.Rows[0]["ZcID"].ToString(); + string zcSn = dtHg.Rows[0]["SerialNo"].ToString(); + ZcPrintLabel zl = ProScreenFunc.GetZcPrintLabel(zcID); + if (zl != null && zl.zcPartNo != null && zl.zcName != null) + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = ""; + if (dtHg.Rows[0]["IsIndia"].ToString() == "0") + { + path = Application.StartupPath + @"\ZC.grf"; + } + else + { + path = Application.StartupPath + @"\ZCIndia.grf"; + } + + DataTable headTable = new DataTable(); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("zcState"); + DataRow row = headTable.NewRow(); + row["SerialNo"] = zcSn; + row["oneBarCode"] = barcode; + row["zcPartNo"] = zl.zcPartNo; + row["zcName"] = zl.zcName; + //row["zcState"] = dtHg.Rows[0]["ToVisual"].ToString() == "1" ? "" : "合格"; + row["zcState"] = dtHg.Rows[0]["Flag"].ToString() == "0" ? "不合格" : "合格"; + + string reportName = ConfigurationManager.AppSettings["Printer1"]; + headTable.Rows.Add(row); + + DataTable dtDetail = ProScreenFunc.GetOtherPart(stationNo, zl.zcPartNo); + + ReportHelper rp = new ReportHelper(path, headTable, dtDetail, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + textBox4.SelectAll(); + } + } + else + { + MessageBox.Show("根据总成号找不到对应名称,请维护基础数据!"); + textBox4_DoubleClick(sender, e); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + } + + private void textBox4_DoubleClick(object sender, EventArgs e) + { + textBox4.Text = ""; + textBox4.Visible = false; + } + + #endregion + + + /// + /// 合格转不合格 + /// + /// + /// + private void button4_Click(object sender, EventArgs e) + { + textBox3.Visible = true; + textBox3.Text = ""; + } + + private void textBox3_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string zcId = "", zcPartNo = "",tempPlanId=""; + + if (string.IsNullOrWhiteSpace(textBox3.Text)) + { + MessageBox.Show("条码不能为空"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + + string barcode = ""; + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + else + { + barcode = textBox3.Text.Trim(); + } + + DataTable dtHg = ProScreenFunc.GetZp(barcode); + if (dtHg == null || dtHg.Rows.Count < 1) + { + MessageBox.Show("未装配,不能删除!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + else + { + if (dtHg.Rows[0]["Flag"].ToString()=="0") + { + MessageBox.Show("该产品已是不合格件,无需操作!"); + textBox3_DoubleClick(sender, e); + return; + } + tempPlanId = dtHg.Rows[0]["PlanID"].ToString(); + } + + ZcPrintLabel zl = ProScreenFunc.GetZcPrintLabel(zcId); + if (zl != null) + { + zcPartNo = zl.zcPartNo; + } + + ProScreenFunc.UpdateFlag(barcode, 0); + ProScreenFunc.AddBadCount_1(tempPlanId); + opcHelper.opcItemm1[1].Write(0); + if (ProScreenFunc.CheckPlanCompleted_1(this.Tag.ToString())) + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount_1(this.Tag.ToString()); + } + + DataTable dt = ProScreenFunc.GetProScreenPlan_1(this.Tag.ToString(), stationNo, planID); + if (dt != null && dt.Rows.Count > 0) + { + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void textBox3_DoubleClick(object sender, EventArgs e) + { + textBox3.Visible = false; + textBox3.Text = ""; + } + + /// + /// 重新数据检测 + /// + /// + /// + private void button7_Click(object sender, EventArgs e) + { + try + { + + DialogResult result = MessageBox.Show("是否重新视觉检测?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + opcHelper.opcItemm1[1].Write(1); + int a = ProScreenFunc.VisualReset_1(stationId); + if (a > 0) + { + MessageBox.Show("重置成功!"); + } + else + { + MessageBox.Show("重置失败!"); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void label9_Click(object sender, EventArgs e) + { + if (ConfigurationManager.AppSettings["IsHaveVisual"] == "1") + { + SqlDependency.Stop(SqlHelper.SqlConnString); + } + + Environment.Exit(0); + } + + private void timer1_Tick_1(object sender, EventArgs e) + { + try + { + label10.Visible = false; + timer2.Enabled = false; + + if (stationState == 2) + { + ProScreenFunc.UpdateVisualFlag(stationId); + + string ID = "", barcode = "", planId1 = "", toVisual = "", zcPartNo = "", zcPartName = "", sn = "", flag = ""; + DataTable dt1 = ProScreenFunc.HavePrint_1(stationId); + if (dt1 != null && dt1.Rows.Count > 0) + { + ID = dt1.Rows[0]["ID"].ToString(); + barcode = dt1.Rows[0]["barcode"].ToString(); + zcPartNo = dt1.Rows[0]["PartNo"].ToString(); + zcPartName = dt1.Rows[0]["ProductName"].ToString(); + planId1 = dt1.Rows[0]["PlanID"].ToString(); + sn = dt1.Rows[0]["SerialNo"].ToString(); + toVisual = dt1.Rows[0]["ToVisual"].ToString(); + flag = dt1.Rows[0]["Flag"].ToString(); + + if (!ProScreenFunc.IsNeedVisual(zcPartNo) && flag == "1") + { + return; + } + } + else + { + return; + } + if (toVisual == "0") + { + + this.Invoke((EventHandler)(delegate + { + bool aa = false, toWms = true; + + try + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"]; + + aa = webService.WMSInterfaceStockIn(barcode, zcPartNo, batchNo, int.Parse(flag)); + if (aa) + { + ProScreenFunc.SaveToWmsRecord(barcode); + } + //} + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + if (aa) + { + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = ""; + + if (!checkBox1.Checked) + { + path = Application.StartupPath + @"\ZC.grf"; + } + else + { + path = Application.StartupPath + @"\ZCIndia.grf"; + } + DataTable headTable = new DataTable(); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("zcState"); + DataRow row = headTable.NewRow(); + row["SerialNo"] = sn; + row["oneBarCode"] = barcode; + row["zcPartNo"] = zcPartNo; + row["zcName"] = zcPartName; + //row["zcState"] = "合格"; + row["zcState"] = flag; + + string reportName = ConfigurationManager.AppSettings["Printer1"]; + headTable.Rows.Add(row); + + DataTable dtDetail = ProScreenFunc.GetOtherPart(stationNo, zcPartNo); + ReportHelper rp = new ReportHelper(path, headTable, dtDetail, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + + ProScreenFunc.UpdatePrintTime_1(ID); + if (flag == "1") + { + ProScreenFunc.AddCompleteCountAndFinish_1(planId1); + } + if (planID == planId1) + { + DataTable dt = ProScreenFunc.GetProScreenByPlanID_1(planId1); + if (dt != null && dt.Rows.Count > 0) + { + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + } + + if (ProScreenFunc.CheckPlanCompleted_1(this.Tag.ToString().Trim())) + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount_1(this.Tag.ToString().Trim()); + } + } + } + else if (!aa) + { + MessageBox.Show("WMS入库失败"); + } + })); + } + } + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void InitList(string stationNo, string partNo) + { + try + { + listView1.Items.Clear(); + DataTable dt = ProScreenFunc.GetOtherPart(stationNo, partNo); + if (dt != null && dt.Rows.Count > 0) + { + for (int i = 0; i < dt.Rows.Count; i++) + { + ListViewItem lvi = new ListViewItem(dt.Rows[i]["PartNo"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["PartName"].ToString()); + + if (!string.IsNullOrWhiteSpace(dt.Rows[i]["PartNo"].ToString()) && !string.IsNullOrWhiteSpace(dt.Rows[i]["IsCheck"].ToString())) + { + lvi.SubItems.Add("未通过"); + } + lvi.SubItems.Add(dt.Rows[i]["Qty"].ToString()); + + listView1.Items.Add(lvi); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + public void SetPage(DataTable dt, string stationNo) + { + textBox2.Text = ""; + textBox2.Visible = false; + textBox3.Text = ""; + textBox3.Visible = false; + textBox4.Text = ""; + textBox4.Visible = false; + + textBox5.Text = ""; + textBox5.Visible = false; + + if (dt != null && dt.Rows.Count > 0) + { + + label1.Text = dt.Rows[0]["Des1"].ToString(); + label2.Text = dt.Rows[0]["OrderNo"].ToString(); + label3.Text = dt.Rows[0]["PartNo"].ToString(); + label4.Text = dt.Rows[0]["ProductName"].ToString(); + label6.Text = dt.Rows[0]["OrderCount"].ToString(); + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + label8.Text = dt.Rows[0]["OrderNo"].ToString().Substring(0, 1) + "班"; + + this.Tag = dt.Rows[0]["ID"].ToString(); + planID = this.Tag.ToString(); + textBox1.Tag = dt.Rows[0]["ProductID"].ToString(); + textBox1.Text = ""; + + InitList(stationNo, label3.Text); + } + } + + /// + /// 初始化关键零件列表 + /// + /// 工位编号 + /// 总成零件号 + + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214_2.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214_2.resx new file mode 100644 index 0000000..83c51a6 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmDoorSill_214_2.resx @@ -0,0 +1,1438 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + 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 + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmHybird.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmHybird.Designer.cs new file mode 100644 index 0000000..f82bc29 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmHybird.Designer.cs @@ -0,0 +1,422 @@ +namespace PunchAndWeld +{ + partial class FrmHybird + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.button7 = new System.Windows.Forms.Button(); + this.label5 = new System.Windows.Forms.Label(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.button6 = new System.Windows.Forms.Button(); + this.label10 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.button5 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // button7 + // + this.button7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.button7.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button7.Location = new System.Drawing.Point(1448, 968); + this.button7.Margin = new System.Windows.Forms.Padding(2); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(193, 75); + this.button7.TabIndex = 42; + this.button7.Text = "计划完成"; + this.button7.UseVisualStyleBackColor = false; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.Transparent; + this.label5.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.ForeColor = System.Drawing.Color.White; + this.label5.Location = new System.Drawing.Point(1418, 10); + this.label5.Margin = new System.Windows.Forms.Padding(0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(489, 40); + this.label5.TabIndex = 40; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // textBox3 + // + this.textBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(780, 547); + this.textBox3.Margin = new System.Windows.Forms.Padding(2); + this.textBox3.Multiline = true; + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(453, 69); + this.textBox3.TabIndex = 39; + this.textBox3.Visible = false; + this.textBox3.DoubleClick += new System.EventHandler(this.textBox3_DoubleClick); + this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown); + // + // textBox2 + // + this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(764, 533); + this.textBox2.Margin = new System.Windows.Forms.Padding(2); + this.textBox2.Multiline = true; + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(453, 69); + this.textBox2.TabIndex = 38; + this.textBox2.Visible = false; + this.textBox2.DoubleClick += new System.EventHandler(this.textBox2_DoubleClick); + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // timer1 + // + this.timer1.Interval = 5000; + // + // textBox4 + // + this.textBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(799, 562); + this.textBox4.Margin = new System.Windows.Forms.Padding(2); + this.textBox4.Multiline = true; + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(453, 69); + this.textBox4.TabIndex = 41; + this.textBox4.Visible = false; + this.textBox4.DoubleClick += new System.EventHandler(this.textBox4_DoubleClick); + this.textBox4.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox4_KeyDown); + // + // button6 + // + this.button6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button6.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button6.Location = new System.Drawing.Point(1678, 869); + this.button6.Margin = new System.Windows.Forms.Padding(2); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(193, 75); + this.button6.TabIndex = 37; + this.button6.Text = "计划查询"; + this.button6.UseVisualStyleBackColor = false; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // label10 + // + this.label10.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label10.BackColor = System.Drawing.Color.Transparent; + this.label10.Font = new System.Drawing.Font("微软雅黑", 150F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.label10.Location = new System.Drawing.Point(1413, 346); + this.label10.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(494, 323); + this.label10.TabIndex = 36; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.ForeColor = System.Drawing.Color.White; + this.label9.Location = new System.Drawing.Point(1418, 66); + this.label9.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(489, 101); + this.label9.TabIndex = 35; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.Click += new System.EventHandler(this.label9_Click); + // + // label8 + // + this.label8.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label8.BackColor = System.Drawing.Color.Transparent; + this.label8.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.ForeColor = System.Drawing.Color.White; + this.label8.Location = new System.Drawing.Point(1418, 165); + this.label8.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(489, 92); + this.label8.TabIndex = 34; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label7 + // + this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label7.BackColor = System.Drawing.Color.Transparent; + this.label7.Font = new System.Drawing.Font("微软雅黑", 160F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); + this.label7.Location = new System.Drawing.Point(573, 744); + this.label7.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(827, 302); + this.label7.TabIndex = 33; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label6 + // + this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label6.BackColor = System.Drawing.Color.Transparent; + this.label6.Font = new System.Drawing.Font("微软雅黑", 180F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.ForeColor = System.Drawing.Color.Blue; + this.label6.Location = new System.Drawing.Point(568, 304); + this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(832, 355); + this.label6.TabIndex = 32; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.ForeColor = System.Drawing.Color.White; + this.label4.Location = new System.Drawing.Point(60, 734); + this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(453, 79); + this.label4.TabIndex = 31; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.White; + this.label3.Location = new System.Drawing.Point(103, 546); + this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(380, 67); + this.label3.TabIndex = 30; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(103, 346); + this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(380, 68); + this.label2.TabIndex = 29; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(103, 146); + this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(380, 70); + this.label1.TabIndex = 28; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(60, 940); + this.textBox1.Margin = new System.Windows.Forms.Padding(2); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(453, 69); + this.textBox1.TabIndex = 27; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // button5 + // + this.button5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button5.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button5.Location = new System.Drawing.Point(1678, 770); + this.button5.Margin = new System.Windows.Forms.Padding(2); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(193, 75); + this.button5.TabIndex = 26; + this.button5.Text = "不良转合格"; + this.button5.UseVisualStyleBackColor = false; + this.button5.Click += new System.EventHandler(this.button5_Click); + // + // button4 + // + this.button4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button4.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button4.Location = new System.Drawing.Point(1448, 770); + this.button4.Margin = new System.Windows.Forms.Padding(2); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(193, 75); + this.button4.TabIndex = 25; + this.button4.Text = "产品不良"; + this.button4.UseVisualStyleBackColor = false; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // button3 + // + this.button3.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(1448, 869); + this.button3.Margin = new System.Windows.Forms.Padding(2); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(193, 75); + this.button3.TabIndex = 24; + this.button3.Text = "补打标签"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Visible = false; + // + // button2 + // + this.button2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button2.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(1678, 671); + this.button2.Margin = new System.Windows.Forms.Padding(2); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(193, 75); + this.button2.TabIndex = 23; + this.button2.Text = "下一计划"; + this.button2.UseVisualStyleBackColor = false; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(1448, 671); + this.button1.Margin = new System.Windows.Forms.Padding(2); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(193, 75); + this.button1.TabIndex = 22; + this.button1.Text = "上一计划"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // FrmHybird + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = global::PunchAndWeld.Properties.Resources._20200428213144; + this.ClientSize = new System.Drawing.Size(1904, 1041); + this.Controls.Add(this.button7); + this.Controls.Add(this.label5); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.button6); + this.Controls.Add(this.label10); + this.Controls.Add(this.label9); + this.Controls.Add(this.label8); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.button5); + this.Controls.Add(this.button4); + this.Controls.Add(this.button3); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmHybird"; + this.Text = "FrmHybird-206"; + this.Load += new System.EventHandler(this.FrmHybird_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button1; + + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmHybird.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmHybird.cs new file mode 100644 index 0000000..f42ef21 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmHybird.cs @@ -0,0 +1,570 @@ +using gregn6Lib; +using PunchAndWeld.DataSouce; +using PunchAndWeld.WebReference; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using DBUtility; +using MESClassLibrary.BLL.Log; +namespace PunchAndWeld +{ + public partial class FrmHybird : Form + { + private string oneBarCode = ""; + private string productID2 = ""; + private string barcode = ""; + private string productID = ""; + string stationNo = "", stationId = ""; + + public FrmHybird() + { + InitializeComponent(); + } + + private void FrmHybird_Load(object sender, EventArgs e) + { + try + { + //var serverUrl = "http://10.60.101.10:8013/"; + //var updateXmlFileName = "ProScreenUpdate.xml"; + //var updater = new AutoUpdater(); + //if (updater.CheckUpdateLoad(serverUrl, updateXmlFileName)) + //{ + // Environment.Exit(0); + //} + + label5.Text = "当前版本:" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); + stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + label1.Text = ProScreenFunc.GetStation(stationNo); + stationId = ProScreenFunc.GetStationId(stationNo); + Control.CheckForIllegalCrossThreadCalls = false; + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + + LoadScreen(); + textBox1.TabIndex = 0; + textBox1.Select(); + + timer1.Enabled = true; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + label9.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + + public void LoadScreen() + { + string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreen(stationNo); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + } + + public void SetPage(DataTable dt) + { + textBox2.Text = ""; + textBox2.Visible = false; + textBox3.Text = ""; + textBox3.Visible = false; + textBox4.Text = ""; + textBox4.Visible = false; + + if (dt != null && dt.Rows.Count > 0) + { + #region 页面赋值 + label1.Text = dt.Rows[0]["Des"].ToString(); + label2.Text = dt.Rows[0]["OrderNo"].ToString(); + label3.Text = dt.Rows[0]["PartNo"].ToString(); + label4.Text = dt.Rows[0]["ProductName"].ToString(); + //label5.Text = dt.Rows[0]["Des"].ToString(); + label6.Text = dt.Rows[0]["OrderCount"].ToString(); + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + label8.Text = dt.Rows[0]["OrderNo"].ToString().Substring(0, 1) + "班"; + label10.Text = dt.Rows[0]["BadCount"].ToString(); + + this.Tag = dt.Rows[0]["ID"].ToString(); //计划ID + textBox1.Tag = dt.Rows[0]["ProductID1"].ToString(); + textBox1.Text = ""; + #endregion + } + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + CheckPartAndProduct(); + } + } + + public void CheckPartAndProduct() + { + textBox1.SelectAll(); + barcode = textBox1.Text.Trim(); + + + if (!ProScreenFunc.CanScan(this.Tag.ToString().Trim())) + { + MessageBox.Show("完成数量等于计划数量,不允许扫描!"); + textBox1.SelectAll(); + return; + } + + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + + if (ProScreenFunc.HaveScan(barcode)) + { + if (ProScreenFunc.IsBad(barcode)) + { + MessageBox.Show("条码为" + barcode + "的蒙皮为不良品,请操作不良转合格!"); + textBox1.SelectAll(); + return; + } + + DialogResult result = MessageBox.Show("条码为" + barcode + "的蒙皮已经装配,是否重新装配?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + + ScanBarcode(barcode); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + else + { + return; + } + } + else + { + ScanBarcode(barcode); + } + + } + + private void ScanBarcode(string barcode) + { + productID = this.textBox1.Tag.ToString().Trim(); + string[] codeSpecial = ProScreenFunc.GetSpecialStockNo(); + string code = barcode.Substring(0, 10); + if (codeSpecial.Contains(code) && !ProScreenFunc.HaveInspect(barcode) && ProScreenFunc.IsFBC(code, this.label3.Text.Trim())) + { + if (ProScreenFunc.HaveScan(barcode)) + { + productID2 = ProScreenFunc.GetProductID(barcode); + if (!ProScreenFunc.CheckPartAndProduct(productID, productID2)) + { + this.InsLog(productID, productID2); + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + this.textBox1.Text = ""; + } + else + { + textBox4.Visible = true; + textBox4.Focus(); + } + } + else + { + textBox4.Visible = true; + textBox4.Focus(); + productID2 = ProScreenFunc.GetProductID(code, ""); + } + } + else + { + productID2 = ProScreenFunc.GetProductID(barcode); + if (string.IsNullOrWhiteSpace(productID2)) + { + string stockNo = barcode.Substring(0, 10); + productID2 = ProScreenFunc.GetProductID(stockNo, ""); + } + if (!ProScreenFunc.CheckPartAndProduct(productID, productID2)) + { + this.InsLog(productID, productID2); + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + this.textBox1.Text = ""; + } + else + { + ScanAll.ScanResult = false; + OtherPart parts = ProScreenFunc.HaveOtherPart(this.label1.Text.Trim(), productID); + if (parts != null && (!string.IsNullOrWhiteSpace(parts.productID3) || !string.IsNullOrWhiteSpace(parts.productID4) || !string.IsNullOrWhiteSpace(parts.productID5))) + { + FrmProScreen3 frm3 = new FrmProScreen3(parts); + frm3.ShowDialog(); + } + else + { + ScanAll.ScanResult = true; + } + if (ScanAll.ScanResult) + { + textBox4.Visible = true; + textBox4.Focus(); + } + } + } + } + + public void InsLog(string productID1, string productID2) + { + LogHelper.WriteSysLogBase("一码到底【当前扫描的零件与总成不匹配】:productID1:" + productID1 + ",productID2:" + productID2 + ",工位:" + label1.Text + ",计划ID:" + this.Tag.ToString(), MethodBase.GetCurrentMethod().Name); + } + + private void AfterScanBarcode(string barcode, string productID2, string productID1, string planID,string stationId) + { + try + { + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + partNo = label3.Text.Trim(); + batchNo = ProScreenFunc.GetPlanTime(planID).ToString("yyyyMMdd"); + + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo(label3.Text.Trim(), time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + label3.Text.Trim() + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + ProScreenFunc.SavePartAndProduct1(barcode, productID2, productID1, label2.Text, label8.Text, planID, sn,stationId, ConfigurationManager.AppSettings["StationDescription"]); + ProScreenFunc.SaveZcCode(barcode, label3.Text.Trim()); + + ProScreenFunc.AddCompleteCount(this.Tag.ToString().Trim()); + + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount(this.Tag.ToString().Trim()); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + private void button1_Click(object sender, EventArgs e) + { + if (this.Tag.ToString() == "") + { + MessageBox.Show("无上一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "上一计划"); + } + } + + private void button2_Click(object sender, EventArgs e) + { + if (this.Tag.ToString() == "") + { + MessageBox.Show("无下一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + } + + public void LoadPlanScreen(string id, string plan) + { + string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreenPlan(id, stationNo, plan); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + else + { + if (plan == "下一计划") + MessageBox.Show("无下一计划"); + else + MessageBox.Show("无上一计划"); + } + } + + private void button4_Click(object sender, EventArgs e) + { + textBox2.Visible = true; + textBox2.Focus(); + } + + private void textBox2_DoubleClick(object sender, EventArgs e) + { + textBox2.Text = ""; + textBox2.Visible = false; + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox2.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + if (ProScreenFunc.HaveScan(barcode)) + { + if (ProScreenFunc.IsBad(barcode)) + { + MessageBox.Show("该条码已经做过报废处理!", "提示"); + textBox2.Text = ""; + textBox2.Visible = false; + return; + } + string planID = ProScreenFunc.GetPlanIDByBarcode(barcode); + ProScreenFunc.AddBadCount(planID.Trim()); + ProScreenFunc.SubCompleteCount(planID.Trim()); + + ProScreenFunc.SaveRecord2(barcode, "0", planID); + DataTable dt = ProScreenFunc.GetProScreenByPlanID(this.Tag.ToString().Trim()); + SetPage(dt); + + textBox2.Text = ""; + textBox2.Visible = false; + } + else + { + MessageBox.Show("还未进行装配!", "提示"); + + textBox2.Text = ""; + textBox2.Visible = false; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + else if (e.KeyCode == Keys.Escape) + { + textBox2.Text = ""; + textBox2.Visible = false; + } + } + + private void button5_Click(object sender, EventArgs e) + { + textBox3.Visible = true; + textBox3.Focus(); + } + + private void textBox3_DoubleClick(object sender, EventArgs e) + { + textBox3.Text = ""; + textBox3.Visible = false; + } + + private void textBox3_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox3.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + if (ProScreenFunc.IsBad(barcode)) + { + string planID = ProScreenFunc.GetPlanIDByBarcode(barcode); + if (!ProScreenFunc.CheckPlanCompleted(planID)) + { + ProScreenFunc.SubBadCount(planID.Trim()); + ProScreenFunc.AddCompleteCount(planID.Trim()); + + ProScreenFunc.SaveRecord2(barcode, "1", planID); + } + else + { + string partNo = ProScreenFunc.GetPaintCode(barcode); + if (partNo == label3.Text.Trim()) + { + ProScreenFunc.AddCompleteCount(Tag.ToString().Trim()); + ProScreenFunc.SaveRecord2(barcode, "1", Tag.ToString().Trim()); + } + else + { + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描!"); + } + } + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + DataTable dt = ProScreenFunc.GetProScreenByPlanID(this.Tag.ToString().Trim()); + SetPage(dt); + } + + textBox3.Text = ""; + textBox3.Visible = false; + } + else + { + MessageBox.Show("该条码未做过报废处理,无法转合格!", "提示"); + textBox3.Text = ""; + textBox3.Visible = false; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + else if (e.KeyCode == Keys.Escape) + { + textBox3.Text = ""; + textBox3.Visible = false; + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + private void button7_Click(object sender, EventArgs e) + { + ProScreenFunc.SetPlanComplete(this.Tag.ToString().Trim()); + LoadScreen(); + } + + private void button6_Click(object sender, EventArgs e) + { + FrmProScreen2 frm = new FrmProScreen2(); + frm.Show(); + } + + private void textBox4_DoubleClick(object sender, EventArgs e) + { + textBox4.Visible = false; + textBox4.Text = ""; + } + + private void textBox4_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + + if (string.IsNullOrEmpty(textBox4.Text)) + { + MessageBox.Show("盖板条码不能为空!"); + textBox4.Focus(); + return; + } + + if (textBox4.Text.Trim().Split('-').Length!=3) + { + MessageBox.Show("盖板条码有误!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + + if (textBox4.Text.Trim().Substring(0, 11) != "A2068853104") + { + MessageBox.Show("盖板条码有误!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + + string[] aa = textBox4.Text.Trim().Split('-'); + string[] bb = label3.Text.Trim().Split('-'); + + if (aa[1] != bb[1]) + { + MessageBox.Show("盖板条码颜色不符!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + + AfterScanBarcode(barcode, productID2, productID, base.Tag.ToString().Trim(), stationId); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + private void label9_Click(object sender, EventArgs e) + { + Environment.Exit(0); + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmHybird.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmHybird.resx new file mode 100644 index 0000000..1f666f2 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmHybird.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmHybridS.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmHybridS.Designer.cs new file mode 100644 index 0000000..25c0e0f --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmHybridS.Designer.cs @@ -0,0 +1,396 @@ +namespace PunchAndWeld +{ + partial class FrmHybridS + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.button7 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.label5 = new System.Windows.Forms.Label(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.textBox5 = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(41, 897); + this.textBox1.Margin = new System.Windows.Forms.Padding(2); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(300, 39); + this.textBox1.TabIndex = 20; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label10 + // + this.label10.BackColor = System.Drawing.Color.Transparent; + this.label10.Font = new System.Drawing.Font("微软雅黑", 150F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.ForeColor = System.Drawing.Color.Red; + this.label10.Location = new System.Drawing.Point(935, 327); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(344, 293); + this.label10.TabIndex = 19; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label8 + // + this.label8.BackColor = System.Drawing.Color.Transparent; + this.label8.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.ForeColor = System.Drawing.Color.White; + this.label8.Location = new System.Drawing.Point(941, 187); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(338, 67); + this.label8.TabIndex = 18; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.ForeColor = System.Drawing.Color.White; + this.label9.Location = new System.Drawing.Point(941, 74); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(338, 67); + this.label9.TabIndex = 17; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.Click += new System.EventHandler(this.label9_Click); + // + // label7 + // + this.label7.BackColor = System.Drawing.Color.Transparent; + this.label7.Font = new System.Drawing.Font("微软雅黑", 160F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.ForeColor = System.Drawing.Color.Lime; + this.label7.Location = new System.Drawing.Point(374, 684); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(555, 288); + this.label7.TabIndex = 16; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label6 + // + this.label6.BackColor = System.Drawing.Color.Transparent; + this.label6.Font = new System.Drawing.Font("微软雅黑", 180F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.ForeColor = System.Drawing.Color.Blue; + this.label6.Location = new System.Drawing.Point(376, 273); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(553, 332); + this.label6.TabIndex = 15; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.ForeColor = System.Drawing.Color.White; + this.label4.Location = new System.Drawing.Point(43, 700); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(298, 78); + this.label4.TabIndex = 14; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.White; + this.label3.Location = new System.Drawing.Point(43, 504); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(298, 87); + this.label3.TabIndex = 13; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(43, 320); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(298, 82); + this.label2.TabIndex = 12; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(43, 132); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(298, 76); + this.label1.TabIndex = 11; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // button7 + // + this.button7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.button7.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button7.Location = new System.Drawing.Point(1120, 813); + this.button7.Margin = new System.Windows.Forms.Padding(2); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(153, 75); + this.button7.TabIndex = 28; + this.button7.Text = "计划完成"; + this.button7.UseVisualStyleBackColor = false; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // button6 + // + this.button6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button6.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button6.Location = new System.Drawing.Point(951, 814); + this.button6.Margin = new System.Windows.Forms.Padding(2); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(153, 75); + this.button6.TabIndex = 27; + this.button6.Text = "计划查询"; + this.button6.UseVisualStyleBackColor = false; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // button5 + // + this.button5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button5.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button5.Location = new System.Drawing.Point(1120, 728); + this.button5.Margin = new System.Windows.Forms.Padding(2); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(153, 75); + this.button5.TabIndex = 26; + this.button5.Text = "不良转合格"; + this.button5.UseVisualStyleBackColor = false; + this.button5.Click += new System.EventHandler(this.button5_Click); + // + // button4 + // + this.button4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button4.Location = new System.Drawing.Point(950, 728); + this.button4.Margin = new System.Windows.Forms.Padding(2); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(153, 75); + this.button4.TabIndex = 25; + this.button4.Text = "产品不良"; + this.button4.UseVisualStyleBackColor = false; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // button3 + // + this.button3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(951, 897); + this.button3.Margin = new System.Windows.Forms.Padding(2); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(153, 75); + this.button3.TabIndex = 24; + this.button3.Text = "补打标签"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Visible = false; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // button2 + // + this.button2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(1120, 640); + this.button2.Margin = new System.Windows.Forms.Padding(2); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(153, 75); + this.button2.TabIndex = 23; + this.button2.Text = "下一计划"; + this.button2.UseVisualStyleBackColor = false; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(947, 640); + this.button1.Margin = new System.Windows.Forms.Padding(2); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(153, 75); + this.button1.TabIndex = 22; + this.button1.Text = "上一计划"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.Transparent; + this.label5.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.ForeColor = System.Drawing.Color.White; + this.label5.Location = new System.Drawing.Point(939, 9); + this.label5.Margin = new System.Windows.Forms.Padding(0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(340, 41); + this.label5.TabIndex = 41; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // textBox3 + // + this.textBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(412, 477); + this.textBox3.Margin = new System.Windows.Forms.Padding(2); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(453, 39); + this.textBox3.TabIndex = 43; + this.textBox3.Visible = false; + this.textBox3.DoubleClick += new System.EventHandler(this.textBox3_DoubleClick); + this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown); + // + // textBox2 + // + this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(396, 463); + this.textBox2.Margin = new System.Windows.Forms.Padding(2); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(453, 39); + this.textBox2.TabIndex = 42; + this.textBox2.Visible = false; + this.textBox2.DoubleClick += new System.EventHandler(this.textBox2_DoubleClick); + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // textBox4 + // + this.textBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(431, 492); + this.textBox4.Margin = new System.Windows.Forms.Padding(2); + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(453, 39); + this.textBox4.TabIndex = 44; + this.textBox4.Visible = false; + this.textBox4.DoubleClick += new System.EventHandler(this.textBox4_DoubleClick); + this.textBox4.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox4_KeyDown); + // + // textBox5 + // + this.textBox5.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox5.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox5.Location = new System.Drawing.Point(414, 493); + this.textBox5.Margin = new System.Windows.Forms.Padding(2); + this.textBox5.Name = "textBox5"; + this.textBox5.Size = new System.Drawing.Size(453, 39); + this.textBox5.TabIndex = 45; + this.textBox5.Visible = false; + this.textBox5.DoubleClick += new System.EventHandler(this.textBox5_DoubleClick); + this.textBox5.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox5_KeyDown); + // + // FrmHybridS + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = global::PunchAndWeld.Properties.Resources._20200723112650; + this.ClientSize = new System.Drawing.Size(1280, 1024); + this.Controls.Add(this.textBox5); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.label5); + this.Controls.Add(this.button7); + this.Controls.Add(this.button6); + this.Controls.Add(this.button5); + this.Controls.Add(this.button4); + this.Controls.Add(this.button3); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label10); + this.Controls.Add(this.label8); + this.Controls.Add(this.label9); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmHybridS"; + this.Text = "FrmHybridS"; + this.Load += new System.EventHandler(this.FrmHybridS_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.TextBox textBox5; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmHybridS.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmHybridS.cs new file mode 100644 index 0000000..0e09212 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmHybridS.cs @@ -0,0 +1,1045 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using gregn6Lib; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.BLL.PunchAndWeld; +using OPCAutomation; +using PunchAndWeld.DataSouce; +using static System.Windows.Forms.AxHost; + +namespace PunchAndWeld +{ + public partial class FrmHybridS : Form + { + private string oneBarCode = ""; + private string productID2 = ""; + private string barcode = ""; + private string productID = ""; + string zcPartNo = "", productName=""; + private GridppReport Report = new GridppReport(); + string stationNo = "", stationId = ""; + OPCHelper opcHelper = new OPCHelper(); + private string strHostIP = ""; + PunchAdressBLL bll = new PunchAdressBLL(); + + int heartFlag = 0; + + string lbState = ""; + + public FrmHybridS() + { + InitializeComponent(); + } + + private void FrmHybridS_Load(object sender, EventArgs e) + { + //var serverUrl = "http://10.60.101.10:8013/"; + //var updateXmlFileName = "ProScreenUpdate.xml"; + //var updater = new AutoUpdater(); + //if (updater.CheckUpdateLoad(serverUrl, updateXmlFileName)) + //{ + // Environment.Exit(0); + //} + + label5.Text = "当前版本:" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); + stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + stationId = ProScreenFunc.GetStationId(stationNo); + label1.Text = ProScreenFunc.GetStation(stationNo); + + Control.CheckForIllegalCrossThreadCalls = false; + + LoadScreen(); + + if (stationNo == "ZP77") + { + button1.Visible = false; + button2.Visible = false; + + try + { + if (opcHelper.CreateServer()) + { + if (opcHelper.ConnectServer(strHostIP, "Kepware.KEPServerEX.V6")) + { + opcHelper.Connected = true; + + opcHelper.opcGroups = opcHelper.opcServer.OPCGroups; + opcHelper.opcGroup1 = opcHelper.opcGroups.Add("DeviceRead"); + opcHelper.opcGroup2 = opcHelper.opcGroups.Add("DeviceWrite"); + opcHelper.SetGroupProperty(opcHelper.opcGroup1, 500); + opcHelper.SetGroupProperty(opcHelper.opcGroup2, 500); + opcHelper.opcItems1 = opcHelper.opcGroup1.OPCItems; + opcHelper.opcItems1.DefaultIsActive = true; + + DataTable dt = bll.SearchInfo(ConfigurationManager.AppSettings["DeviceNo"], 0); + + if (dt != null && dt.Rows.Count > 0) + { + opcHelper.opcItemm1 = new OPCItem[dt.Rows.Count]; + for (int i = 0; i < dt.Rows.Count; i++) + { + opcHelper.opcItemm1[i] = opcHelper.opcItems1.AddItem(dt.Rows[i]["Address"].ToString(), i); + } + } + + opcHelper.opcItems2 = opcHelper.opcGroup2.OPCItems; + opcHelper.opcItems2.DefaultIsActive = true; + + DataTable dt1 = bll.SearchInfo(ConfigurationManager.AppSettings["DeviceNo"], 1); + if (dt1 != null && dt1.Rows.Count > 0) + { + opcHelper.opcItemm2 = new OPCItem[dt1.Rows.Count+1]; + opcHelper.opcItemm2[0] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.Heart", 0); + + for (int i = 1; i < dt1.Rows.Count+1; i++) + { + opcHelper.opcItemm2[i] = opcHelper.opcItems2.AddItem(dt1.Rows[i-1]["Address"].ToString(), i); + } + + } + if (opcHelper.ReadSingleValueFromOPC1(2).ToLower() == "true") + { + lbState = "等待放件状态"; + } + else + { + lbState = "设备未准备OK"; + } + + opcHelper.opcGroup1.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(opcGroup1_DataChange); + + } + } + else + { + MessageBox.Show("创建OPC服务失败!", "提示", MessageBoxButtons.OK); + opcHelper.Connected = false; + LogHelper.WriteErrLogBase("工位:" + label1.Text + "创建OPC服务失败!", MethodBase.GetCurrentMethod().Name); + return; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + + textBox1.TabIndex = 0; + textBox1.Select(); + + timer1.Enabled = true; + } + + void opcGroup1_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps) + { + try + { + for (int i = 1; i <= NumItems; i++) + { + int handle = Convert.ToInt32(ClientHandles.GetValue(i).ToString().Trim()); + string value = ItemValues.GetValue(i).ToString(); + string address = opcHelper.opcItemm1[(Convert.ToInt32(ClientHandles.GetValue(i)))].ItemID; + + + + if (handle == 2) + { + if (value == "1" || value.ToUpper() == "TRUE") + { + lbState = "等待放件状态"; + } + else + { + lbState = "设备未准备OK"; + } + + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + label9.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + if (heartFlag == 0) + { + opcHelper.opcItemm2[0].Write(0); + heartFlag = 1; + } + else + { + opcHelper.opcItemm2[0].Write(1); + heartFlag = 0; + } + + Thread.Sleep(500); + } + + public void LoadScreen() + { + //string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreen(stationNo); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + } + + public void SetPage(DataTable dt) + { + textBox2.Text = ""; + textBox2.Visible = false; + textBox3.Text = ""; + textBox3.Visible = false; + textBox4.Text = ""; + textBox4.Visible = false; + + textBox5.Text = ""; + textBox5.Visible = false; + + if (dt != null && dt.Rows.Count > 0) + { + #region 页面赋值 + + label1.Text = dt.Rows[0]["Des"].ToString(); + label2.Text = dt.Rows[0]["OrderNo"].ToString(); + label3.Text = dt.Rows[0]["PartNo"].ToString(); + label4.Text = dt.Rows[0]["ProductName"].ToString(); + //label5.Text = dt.Rows[0]["Des"].ToString(); + label6.Text = dt.Rows[0]["OrderCount"].ToString(); + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + label8.Text = dt.Rows[0]["OrderNo"].ToString().Substring(0, 1) + "班"; + label10.Text = dt.Rows[0]["BadCount"].ToString(); + + this.Tag = dt.Rows[0]["ID"].ToString(); //计划ID + textBox1.Tag = dt.Rows[0]["ProductID1"].ToString(); + textBox1.Text = ""; + + #endregion + } + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + if (ConfigurationManager.AppSettings["StationNo"] == "ZP77") + { + if (string.IsNullOrWhiteSpace(lbState) || lbState.Contains("未")) + { + MessageBox.Show("设备未准备OK"); + return; + } + CheckPartAndProduct_1(); + } + else + { + CheckPartAndProduct(); + } + } + } + + private void CheckPartAndProduct_1() + { + textBox1.SelectAll(); + barcode = textBox1.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + if (ProScreenFunc.HaveScan(barcode)) + { + if (ProScreenFunc.IsBad(barcode)) + { + MessageBox.Show("条码为" + barcode + "的蒙皮为不良品,请操作不良转合格!"); + textBox1.SelectAll(); + return; + } + + string[] aa = ProScreenFunc.GetSpecialHybrid(); + string[] bb = ProScreenFunc.StockZcCode(barcode).Split('-'); + if (aa.Count(p => p == bb[0]) != 0) + { + DialogResult result1 = MessageBox.Show("条码为" + barcode + "的蒙皮已经铣孔,是否重新铣孔?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result1 == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + textBox4.Visible = true; + textBox4.Focus(); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + } + else + { + textBox4.Visible = true; + textBox4.Focus(); + } + } + else + { + textBox4.Visible = true; + textBox4.Focus(); + } + } + + public void CheckPartAndProduct() + { + textBox1.SelectAll(); + barcode = textBox1.Text.Trim(); + + if (!ProScreenFunc.CanScan(this.Tag.ToString().Trim())) + { + MessageBox.Show("完成数量等于计划数量,不允许扫描!"); + textBox1.SelectAll(); + return; + } + + + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + + if (ProScreenFunc.HaveScan(barcode)) + { + if (ProScreenFunc.IsBad(barcode)) + { + MessageBox.Show("条码为" + barcode + "的蒙皮为不良品,请操作不良转合格!"); + textBox1.SelectAll(); + return; + } + + DialogResult result = MessageBox.Show("条码为" + barcode + "的蒙皮已经装配,是否重新装配?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + + ScanBarcode(barcode); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + else + { + return; + } + } + else + { + ScanBarcode(barcode); + } + + } + + + private void ScanBarcode(string barcode) + { + productID = this.textBox1.Tag.ToString().Trim(); + string[] codeSpecial = ProScreenFunc.GetSpecialStockNo(); + string code = barcode.Substring(0, 10); + if (codeSpecial.Contains(code) && !ProScreenFunc.HaveInspect(barcode) && ProScreenFunc.IsFBC(code, this.label3.Text.Trim())) + { + if (ProScreenFunc.HaveScan(barcode)) + { + productID2 = ProScreenFunc.GetProductID(barcode); + if (!ProScreenFunc.CheckPartAndProduct(productID, productID2)) + { + this.InsLog(productID, productID2); + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + this.textBox1.Text = ""; + } + else + { + textBox4.Visible = true; + textBox4.Focus(); + } + } + else + { + textBox4.Visible = true; + textBox4.Focus(); + productID2 = ProScreenFunc.GetProductID(code, ""); + } + } + else + { + productID2 = ProScreenFunc.GetProductID(barcode); + if (string.IsNullOrWhiteSpace(productID2)) + { + string stockNo = barcode.Substring(0, 10); + productID2 = ProScreenFunc.GetProductID(stockNo, ""); + } + if (!ProScreenFunc.CheckPartAndProduct(productID, productID2)) + { + this.InsLog(productID, productID2); + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + this.textBox1.Text = ""; + } + else + { + ScanAll.ScanResult = false; + OtherPart parts = ProScreenFunc.HaveOtherPart(this.label1.Text.Trim(), productID); + if (parts != null && (!string.IsNullOrWhiteSpace(parts.productID3) || !string.IsNullOrWhiteSpace(parts.productID4) || !string.IsNullOrWhiteSpace(parts.productID5))) + { + FrmProScreen3 frm3 = new FrmProScreen3(parts); + frm3.ShowDialog(); + } + else + { + ScanAll.ScanResult = true; + } + if (ScanAll.ScanResult) + { + textBox4.Visible = true; + textBox4.Focus(); + } + } + } + } + + + public void InsLog(string productID1, string productID2) + { + LogHelper.WriteSysLogBase("一码到底【当前扫描的零件与总成不匹配】:productID1:" + productID1 + ",productID2:" + productID2 + ",工位:" + label1.Text + ",计划ID:" + this.Tag.ToString(), MethodBase.GetCurrentMethod().Name); + } + + private void AfterScanBarcode(string barcode, string productID2, string productID1, string planID,string stationId) + { + try + { + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + partNo = label3.Text.Trim(); + batchNo = ProScreenFunc.GetPlanTime(planID).ToString("yyyyMMdd"); + + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo(label3.Text.Trim(), time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + label3.Text.Trim() + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + ProScreenFunc.SavePartAndProduct1(barcode, productID2, productID1, label2.Text, label8.Text, planID, sn, stationId, ConfigurationManager.AppSettings["StationDescription"]); + ProScreenFunc.SaveZcCode(barcode, label3.Text.Trim()); + ProScreenFunc.AddCompleteCount(this.Tag.ToString().Trim()); + + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount(this.Tag.ToString().Trim()); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void AfterScanBarCode_1(string barCode) + { + try + { + string productId1="", productId2 = ""; + + + if ((barCode.Substring(0, 10) == "2200000172" || barCode.Substring(0, 10) == "2200000174" || barCode.Substring(0, 10) == "2200000176") && !string.IsNullOrEmpty(ProScreenFunc.StockZcCode(barcode))) + { + string tmpZc = ProScreenFunc.StockZcCode(barcode); + + string[] aa = ProScreenFunc.GetSpecialHybrid(); + string[] bb = tmpZc.Split('-'); + if (aa.Count(p => p == bb[0]) != 0) + { + productId2 = ProScreenFunc.GetProductID(barCode); + } + else + { + productId2 = ProScreenFunc.GetProductIDByPartNo(tmpZc); + } + string stationId = ProScreenFunc.GetStationId(ConfigurationManager.AppSettings["StationNo"]); + DataTable dt = ProScreenFunc.GetProductInfo1(productId2, stationId); + if (dt != null && dt.Rows.Count > 0) + { + productId1 = dt.Rows[0]["ProductID1"].ToString(); + zcPartNo = dt.Rows[0]["PartNo"].ToString(); + productName = dt.Rows[0]["ProductName"].ToString(); + + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo(zcPartNo, time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + zcPartNo + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + if (ProScreenFunc.SavePartAndProduct1(barcode, productID2, productId1, "", "", "", sn,stationId, ConfigurationManager.AppSettings["StationDescription"]) <=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + ProScreenFunc.SaveZcCode(barcode, zcPartNo); + + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = Application.StartupPath + @"\aaa.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize_New); + Report.Register(""); + Report.LoadFromFile(path); + + Report.Print(false); + } + + textBox1.Text = ""; + textBox1.Focus(); + } + else + { + MessageBox.Show("当前扫描的零件未设置对应的总成,请检查后再扫描"); + textBox1.SelectAll(); + textBox1.Focus(); + } + } + else + { + productId2 = ProScreenFunc.GetProductID(barCode); + string stationId = ProScreenFunc.GetStationId(ConfigurationManager.AppSettings["StationNo"]); + DataTable dt = ProScreenFunc.GetProductInfo1(productId2, stationId); + if (dt != null && dt.Rows.Count > 0) + { + productId1 = dt.Rows[0]["ProductID1"].ToString(); + zcPartNo = dt.Rows[0]["PartNo"].ToString(); + productName = dt.Rows[0]["ProductName"].ToString(); + + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo(zcPartNo, time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + zcPartNo + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + if (ProScreenFunc.SavePartAndProduct1(barcode, productID2, productId1, "", "", "", sn, stationId, ConfigurationManager.AppSettings["StationDescription"]) <=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + ProScreenFunc.SaveZcCode(barcode, zcPartNo); + + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = Application.StartupPath + @"\aaa.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize_New); + Report.Register(""); + Report.LoadFromFile(path); + + Report.Print(false); + } + + textBox1.Text = ""; + textBox1.Focus(); + } + else + { + MessageBox.Show("当前扫描的零件未设置对应的总成,请检查后再扫描"); + textBox1.SelectAll(); + textBox1.Focus(); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void ReportInitialize_New() + { + Report.ParameterByName("oneBarCode").Value = barcode; + Report.ParameterByName("zcPartNo").Value = zcPartNo; + Report.ParameterByName("zcName").Value = productName; + } + + private void button1_Click(object sender, EventArgs e) + { + if (this.Tag.ToString() == "") + { + MessageBox.Show("无上一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "上一计划"); + } + } + + private void button2_Click(object sender, EventArgs e) + { + if (this.Tag.ToString() == "") + { + MessageBox.Show("无下一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + } + + public void LoadPlanScreen(string id, string plan) + { + + DataTable dt = ProScreenFunc.GetProScreenPlan(id, stationNo, plan); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + else + { + if (plan == "下一计划") + MessageBox.Show("无下一计划"); + else + MessageBox.Show("无上一计划"); + } + } + + private void button4_Click(object sender, EventArgs e) + { + textBox2.Visible = true; + textBox2.Focus(); + } + + private void textBox2_DoubleClick(object sender, EventArgs e) + { + textBox2.Text = ""; + textBox2.Visible = false; + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox2.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + + if (ProScreenFunc.HaveScan(barcode)) + { + if (ProScreenFunc.IsBad(barcode)) + { + MessageBox.Show("该条码已经做过报废处理!", "提示"); + textBox2.Text = ""; + textBox2.Visible = false; + return; + } + string planID = ProScreenFunc.GetPlanIDByBarcode(barcode); + ProScreenFunc.AddBadCount(planID.Trim()); + ProScreenFunc.SubCompleteCount(planID.Trim()); + + ProScreenFunc.SaveRecord2(barcode, "0", planID); + + DataTable dt = ProScreenFunc.GetProScreenByPlanID(this.Tag.ToString().Trim()); + SetPage(dt); + + textBox2.Text = ""; + textBox2.Visible = false; + } + else + { + MessageBox.Show("还未进行装配!", "提示"); + + textBox2.Text = ""; + textBox2.Visible = false; + } + + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + else if (e.KeyCode == Keys.Escape) + { + textBox2.Text = ""; + textBox2.Visible = false; + } + } + + private void button5_Click(object sender, EventArgs e) + { + textBox3.Visible = true; + textBox3.Focus(); + } + + private void textBox3_DoubleClick(object sender, EventArgs e) + { + textBox3.Text = ""; + textBox3.Visible = false; + } + + private void textBox3_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox3.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + if (ProScreenFunc.IsBad(barcode)) + { + string planID = ProScreenFunc.GetPlanIDByBarcode(barcode); + if (!ProScreenFunc.CheckPlanCompleted(planID)) + { + ProScreenFunc.SubBadCount(planID.Trim()); + ProScreenFunc.AddCompleteCount(planID.Trim()); + + ProScreenFunc.SaveRecord2(barcode, "1", planID); + } + else + { + string partNo = ProScreenFunc.GetPaintCode(barcode); + if (partNo == label3.Text.Trim()) + { + ProScreenFunc.AddCompleteCount(Tag.ToString().Trim()); + ProScreenFunc.SaveRecord2(barcode, "1", Tag.ToString().Trim()); + } + else + { + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描!"); + } + } + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + DataTable dt = ProScreenFunc.GetProScreenByPlanID(this.Tag.ToString().Trim()); + SetPage(dt); + } + + textBox3.Text = ""; + textBox3.Visible = false; + } + else + { + MessageBox.Show("该条码未做过报废处理,无法转合格!", "提示"); + textBox3.Text = ""; + textBox3.Visible = false; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + else if (e.KeyCode == Keys.Escape) + { + textBox3.Text = ""; + textBox3.Visible = false; + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void button7_Click(object sender, EventArgs e) + { + ProScreenFunc.SetPlanComplete(this.Tag.ToString().Trim()); + LoadScreen(); + } + + private void button6_Click(object sender, EventArgs e) + { + FrmProScreen2 frm = new FrmProScreen2(); + frm.Show(); + } + + private void textBox4_DoubleClick(object sender, EventArgs e) + { + textBox4.Visible = false; + textBox4.Text = ""; + } + + private void textBox4_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + + if (string.IsNullOrEmpty(textBox4.Text)) + { + MessageBox.Show("盖板条码不能为空!"); + textBox4.Focus(); + return; + } + + if (ConfigurationManager.AppSettings["StationNo"] == "ZP57") + { + if (textBox4.Text.Trim().Substring(0, 11) != "A2068853104") + { + MessageBox.Show("盖板条码有误!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + } + + if (ConfigurationManager.AppSettings["StationNo"] != "ZP77") + { + string[] aa = textBox4.Text.Trim().Split('-'); + string[] bb = label3.Text.Trim().Split('-'); + + if (aa[1].Substring(0, 4) != bb[1]) + { + MessageBox.Show("盖板条码颜色不符!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + AfterScanBarcode(barcode, productID2, productID, base.Tag.ToString().Trim(),stationId); + } + else + { + string[] aa = textBox4.Text.Trim().Split('-'); + string[] bb = ProScreenFunc.GetPaintCode(textBox1.Text.Trim()).Split('-'); + + if (aa[1].Substring(0, 4) != bb[1]) + { + MessageBox.Show("盖板条码颜色不符!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + opcHelper.opcItemm2[4].Write(1); + opcHelper.opcItemm2[3].Write(0); + opcHelper.opcItemm2[2].Write(1); + + AfterScanBarCode_1(barcode); + } + + textBox4.Text = ""; + textBox4.Visible = false; + textBox1.Focus(); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void label9_Click(object sender, EventArgs e) + { + Environment.Exit(0); + } + + /// + /// 补打标签 + /// + /// + /// + private void textBox5_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox5.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + DataTable dtHg = ProScreenFunc.GetGh(barcode); + if (dtHg == null || dtHg.Rows.Count < 1) + { + MessageBox.Show("未装配,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + + DataTable dtBl = ProScreenFunc.GetBl(barcode); + if (dtBl != null && dtBl.Rows.Count > 0) + { + DateTime hgTime = (DateTime)Tools.NumericParse.StringToDateTime("1900-01-01 00:00:00"); + DataTable dtHG1 = ProScreenFunc.GetHG_New(barcode); + if (dtHG1 != null && dtHG1.Rows.Count > 0) + { + hgTime = (DateTime)Tools.NumericParse.StringToDateTime(dtHG1.Rows[0]["CreateTime"].ToString()); + } + + DateTime blTime = (DateTime)Tools.NumericParse.StringToDateTime(dtBl.Rows[0]["createTime"].ToString()); + if (DateTime.Compare(blTime, hgTime) > 0) + { + MessageBox.Show("产品不良,不能补打标签!"); + textBox5_DoubleClick(sender, e); + return; + } + } + + LogSysBLL.AddInfo("条码:" + barcode + "补打标签", MethodBase.GetCurrentMethod()); + string zcID = dtHg.Rows[0]["ZcID"].ToString(); + ZcPrintLabel zl = ProScreenFunc.GetZcPrintLabel(zcID); + if (zl != null && zl.zcPartNo != null && zl.zcName != null) + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + if (zl.zcPartNo.Contains("A2477900588-") || zl.zcPartNo.Contains("A2477900000-")) + { + string path = System.Windows.Forms.Application.StartupPath + @"\aaa1.grf"; + + GridppReport Report2 = new GridppReport(); + Report2.Register(""); + Report2.LoadFromFile(path); + if (zl.zcPartNo.Contains("A2477900588-")) + { + Report2.ParameterByName("Des").Value = "X247S"; + } + if (zl.zcPartNo.Contains("A2477900000-")) + { + Report2.ParameterByName("Des").Value = "H247S"; + } + Report2.ParameterByName("PartNo").Value = zl.zcPartNo; + Report2.ParameterByName("PartName").Value = zl.zcName; + string sn = dtHg.Rows[0]["SerialNo"].ToString(); + Report2.ParameterByName("SerialNo").Value = sn; + string[] tmp = sn.Split('.'); + Report2.ParameterByName("BarCode").Value = sn + ";24;2217;;.0;" + tmp[1]; + Report2.ParameterByName("oneBarCode").Value = barcode; + Report2.ParameterByName("BatchNo").Value = tmp[1]; + Report2.Print(false); + textBox4.SelectAll(); + } + else + { + string path = System.Windows.Forms.Application.StartupPath + @"\aaa.grf"; + + GridppReport Report1 = new GridppReport(); + Report1.Register(""); + Report1.LoadFromFile(path); + Report1.ParameterByName("oneBarCode").Value = barcode; + Report1.ParameterByName("zcPartNo").Value = zl.zcPartNo; + Report1.ParameterByName("zcName").Value = zl.zcName; + Report1.Print(false); + textBox4.SelectAll(); + } + } + } + else + { + MessageBox.Show("根据总成号找不到对应名称,请维护基础数据!"); + textBox4_DoubleClick(sender, e); + return; + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void button3_Click(object sender, EventArgs e) + { + textBox5.Text = ""; + textBox5.Visible = true; + textBox5.Focus(); + } + + private void textBox5_DoubleClick(object sender, EventArgs e) + { + textBox5.Visible = false; + textBox5.Text = ""; + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmHybridS.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmHybridS.resx new file mode 100644 index 0000000..fff29bb --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmHybridS.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + True + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmInspection_WheelBrow.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmInspection_WheelBrow.Designer.cs new file mode 100644 index 0000000..b99b918 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmInspection_WheelBrow.Designer.cs @@ -0,0 +1,271 @@ + +namespace PunchAndWeld +{ + partial class FrmInspection_WheelBrow + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.button7 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.listView1 = new System.Windows.Forms.ListView(); + this.箱单号 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.零件号 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.零件名称 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.数量 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.panel1 = new System.Windows.Forms.Panel(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // textBox2 + // + this.textBox2.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(168, 44); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(407, 35); + this.textBox2.TabIndex = 112; + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // textBox1 + // + this.textBox1.Enabled = false; + this.textBox1.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(168, 110); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(407, 35); + this.textBox1.TabIndex = 110; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(22, 47); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(106, 24); + this.label2.TabIndex = 111; + this.label2.Text = "扫描条码"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(22, 113); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(106, 24); + this.label1.TabIndex = 113; + this.label1.Text = "扫描箱码"; + // + // button7 + // + this.button7.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button7.Location = new System.Drawing.Point(744, 102); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(195, 47); + this.button7.TabIndex = 131; + this.button7.Text = "查询装箱单明细"; + this.button7.UseVisualStyleBackColor = true; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // button5 + // + this.button5.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button5.Location = new System.Drawing.Point(997, 102); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(195, 47); + this.button5.TabIndex = 130; + this.button5.Text = "未入箱总成"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.button5_Click); + // + // button4 + // + this.button4.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button4.Location = new System.Drawing.Point(997, 39); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(195, 47); + this.button4.TabIndex = 129; + this.button4.Text = "补打箱单"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // button1 + // + this.button1.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(744, 39); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(195, 47); + this.button1.TabIndex = 128; + this.button1.Text = "报废"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Visible = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // listView1 + // + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.箱单号, + this.零件号, + this.零件名称, + this.数量}); + this.listView1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.listView1.GridLines = true; + this.listView1.HideSelection = false; + this.listView1.Location = new System.Drawing.Point(26, 188); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(1205, 756); + this.listView1.TabIndex = 132; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // 箱单号 + // + this.箱单号.Text = "箱单号"; + this.箱单号.Width = 300; + // + // 零件号 + // + this.零件号.Text = "零件号"; + this.零件号.Width = 250; + // + // 零件名称 + // + this.零件名称.Text = "零件名称"; + this.零件名称.Width = 400; + // + // 数量 + // + this.数量.Text = "数量"; + this.数量.Width = 150; + // + // panel1 + // + this.panel1.Controls.Add(this.button3); + this.panel1.Controls.Add(this.button2); + this.panel1.Controls.Add(this.textBox3); + this.panel1.Controls.Add(this.label9); + this.panel1.Location = new System.Drawing.Point(242, 298); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(740, 63); + this.panel1.TabIndex = 133; + // + // button3 + // + this.button3.Font = new System.Drawing.Font("宋体", 14.25F); + this.button3.Location = new System.Drawing.Point(604, 12); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(84, 33); + this.button3.TabIndex = 77; + this.button3.Text = "取消"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // button2 + // + this.button2.Font = new System.Drawing.Font("宋体", 14.25F); + this.button2.Location = new System.Drawing.Point(503, 12); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(84, 33); + this.button2.TabIndex = 76; + this.button2.Text = "确定"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // textBox3 + // + this.textBox3.Font = new System.Drawing.Font("宋体", 14.25F); + this.textBox3.Location = new System.Drawing.Point(78, 12); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(406, 29); + this.textBox3.TabIndex = 75; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.Location = new System.Drawing.Point(25, 16); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(47, 19); + this.label9.TabIndex = 74; + this.label9.Text = "箱单"; + // + // FrmInspection_WheelBrow + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1264, 985); + this.Controls.Add(this.panel1); + this.Controls.Add(this.listView1); + this.Controls.Add(this.button7); + this.Controls.Add(this.button5); + this.Controls.Add(this.button4); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Name = "FrmInspection_WheelBrow"; + this.Text = "轮眉质检"; + this.Load += new System.EventHandler(this.FrmInspection_WheelBrow_Load); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader 箱单号; + private System.Windows.Forms.ColumnHeader 零件号; + private System.Windows.Forms.ColumnHeader 零件名称; + private System.Windows.Forms.ColumnHeader 数量; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Label label9; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmInspection_WheelBrow.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmInspection_WheelBrow.cs new file mode 100644 index 0000000..0ad813e --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmInspection_WheelBrow.cs @@ -0,0 +1,466 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Windows.Forms; +using gregn6Lib; +using MESClassLibrary.BLL.Log; +using PunchAndWeld.DataSouce; + +namespace PunchAndWeld +{ + public partial class FrmInspection_WheelBrow : Form + { + public FrmInspection_WheelBrow() + { + InitializeComponent(); + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + if (textBox2.Text.Trim() == "") + { + MessageBox.Show("请扫描总成码!", "提示", MessageBoxButtons.OK); + textBox2.Focus(); + return; + } + + //string barcode = textBox2.Text.Trim(); + string barcode = ProScreenFunc.barCode(textBox2.Text.Trim()); + if (string.IsNullOrWhiteSpace(barcode)) + { + MessageBox.Show("此总成条码不存在!", "提示"); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + if (ProScreenFunc.HaveScan(barcode)) + { + if (ProScreenFunc.IsBad(barcode)) + { + MessageBox.Show("此总成已报废!", "提示"); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + + if (ProScreenFunc.IsPack(barcode)) + { + MessageBox.Show("此总成已入箱!", "提示"); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + + #region 判断是否需要打印箱单 + + int maxCount = 0, packCount = 0; + string newBox = "", newBatch = "", partName = "", partNo = "",validity="", validityDate=""; + string boxNo = ProScreenFunc.boxNo(barcode); + string batch = DateTime.Now.ToString("yyyy-MM-dd").Substring(2, 2) + DateTime.Now.ToString("yyyy-MM-dd").Substring(5, 2) + DateTime.Now.ToString("yyyy-MM-dd").Substring(8, 2); + + DataTable dt = ProScreenFunc.ZCInfo(barcode); + if (dt != null && dt.Rows.Count > 0) + { + maxCount = int.Parse(dt.Rows[0]["PackCount"].ToString()); + partNo = dt.Rows[0]["PartNo"].ToString(); + partName = dt.Rows[0]["ProductName"].ToString(); + } + + if (boxNo != "") + { + packCount = ProScreenFunc.HavePackCount(boxNo); + if (packCount >= maxCount) + { + #region 生成箱单 + + string[] xx = boxNo.Split('.'); + + if (xx[1] == batch) + { + newBox = boxNo.Substring(0, boxNo.Length - 6) + (Convert.ToInt32(boxNo.Substring(boxNo.Length - 6, 6)) + 1).ToString().PadLeft(6, '0'); + newBatch = batch; + } + else + { + newBox = partNo + "." + batch + "." + "000001"; + //newBatch = boxNo.Substring(12, 6); + newBatch = batch; + } + + #endregion + + validity = "3个月"; + validityDate = "从" + DateTime.Now.ToString("yyyy-MM-dd") + "到" + + DateTime.Now.AddMonths(3).ToString("yyyy-MM-dd"); + + ProScreenFunc.AddBoxInfo(newBox, 0, partNo, partName, newBatch, validity, validityDate); + + #region 打印箱单 + + string filename = AppDomain.CurrentDomain.BaseDirectory + "box.grf"; + + DataTable headTable = new DataTable(); + headTable.Columns.Add("BoxNo"); + headTable.Columns.Add("PartNo"); + headTable.Columns.Add("PartName"); + headTable.Columns.Add("Batch"); + + DataRow row = headTable.NewRow(); + row["BoxNo"] = newBox; + row["PartNo"] = partNo; + row["PartName"] = partName; + row["Batch"] = newBatch; + + string reportName = ConfigurationManager.AppSettings["PrinterName"]; + headTable.Rows.Add(row); + + ReportHelper rp = new ReportHelper(filename, headTable, null, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + + #endregion + } + } + else + { + #region 生成箱单 + + newBox = partNo + "." + batch + "." + "000001"; + newBatch = batch; + + #endregion + + validity = "3个月"; + validityDate = "从" + DateTime.Now.ToString("yyyy-MM-dd") + "到" + + DateTime.Now.AddMonths(3).ToString("yyyy-MM-dd"); + + ProScreenFunc.AddBoxInfo(newBox, 0, partNo, partName, newBatch, validity, validityDate); + + #region 打印箱单 + + string filename = AppDomain.CurrentDomain.BaseDirectory + "box.grf"; + + DataTable headTable = new DataTable(); + headTable.Columns.Add("BoxNo"); + headTable.Columns.Add("PartNo"); + headTable.Columns.Add("PartName"); + headTable.Columns.Add("Batch"); + + DataRow row = headTable.NewRow(); + row["BoxNo"] = newBox; + row["PartNo"] = partNo; + row["PartName"] = partName; + row["Batch"] = newBatch; + + string reportName = ConfigurationManager.AppSettings["PrinterName"]; + headTable.Rows.Add(row); + + ReportHelper rp = new ReportHelper(filename, headTable, null, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + + #endregion + } + + #endregion + + textBox1.Enabled = true; + textBox1.Focus(); + } + else + { + MessageBox.Show("还未进行装配!", "提示"); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + } + + /// + /// 报废 + /// + /// + /// + private void button1_Click(object sender, EventArgs e) + { + try + { + if (textBox2.Text.Trim() == "") + { + MessageBox.Show("请扫描总成码!", "提示", MessageBoxButtons.OK); + textBox2.Focus(); + return; + } + + string barcode = textBox2.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + if (ProScreenFunc.HaveScan(barcode)) + { + if (ProScreenFunc.IsBad(barcode)) + { + MessageBox.Show("该条码已经做过报废处理!", "提示"); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + + #region 不良数+1,完成数-1,不能扣当前计划,查询以前扫码记录,扣减相应计划 + + //根据条码查计划,传计划ID + string planID = ProScreenFunc.GetPlanIDByBarcode(barcode); + ProScreenFunc.AddBadCount(planID.Trim()); + ProScreenFunc.SubCompleteCount(planID.Trim()); + ProScreenFunc.SaveRecord2(barcode, "0", planID); + + #endregion + } + else + { + MessageBox.Show("还未进行装配!", "提示"); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + if (string.IsNullOrEmpty(textBox1.Text.Trim())) + { + MessageBox.Show("请扫描箱单!", "提示", MessageBoxButtons.OK); + textBox1.Focus(); + return; + } + + DataTable dt1 = ProScreenFunc.IsExsit(textBox1.Text.Trim()); + if (dt1 != null && dt1.Rows.Count > 0) + { + + } + else + { + MessageBox.Show("此箱单不存在!", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + + string[] aa = textBox1.Text.Trim().Split('.'); + int packCount = ProScreenFunc.HavePackCount(textBox1.Text.Trim()); + + string barcode = ProScreenFunc.barCode(textBox2.Text.Trim()); + DataTable dt = ProScreenFunc.ZCInfo(barcode); + if (dt != null && dt.Rows.Count > 0) + { + if (dt.Rows[0]["PartNo"].ToString() != aa[0]) + { + MessageBox.Show("总成和箱单不匹配!", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + + if (packCount >= int.Parse(dt.Rows[0]["PackCount"].ToString())) + { + MessageBox.Show("此箱单已装满!", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + } + + #region 装箱操作 + + //ProScreenFunc.AddPackInfo(textBox2.Text.Trim(), textBox1.Text.Trim()); + ProScreenFunc.AddPackInfo(barcode, textBox1.Text.Trim()); + + textBox2.Text = ""; + textBox1.Text = ""; + textBox2.Focus(); + textBox1.Enabled = false; + + InitList(); + + #endregion + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + } + + private void InitList() + { + try + { + listView1.Columns.Clear(); + listView1.Clear(); + listView1.Columns.Add("箱单号", 400, HorizontalAlignment.Center); + listView1.Columns.Add("总成零件号", 250, HorizontalAlignment.Center); + listView1.Columns.Add("总成名称", 400, HorizontalAlignment.Center); + listView1.Columns.Add("已装箱数量", 150, HorizontalAlignment.Center); + + DataTable dt = ProScreenFunc.PackSum(ConfigurationManager.AppSettings["StationNo"]); + if (dt != null && dt.Rows.Count > 0) + { + for (int i = 0; i < dt.Rows.Count; i++) + { + ListViewItem lvi = new ListViewItem(dt.Rows[i]["BoxNo"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["PartNo"].ToString()); //后面添加的Item都为SubItems ,即为子项 + lvi.SubItems.Add(dt.Rows[i]["ProductName"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["qty"].ToString()); + listView1.Items.Add(lvi); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + private void FrmInspection_WheelBrow_Load(object sender, EventArgs e) + { + textBox2.Focus(); + textBox1.Enabled = false; + panel1.Visible = false; + textBox1.Text = ""; + textBox2.Text = ""; + textBox3.Text = ""; + InitList(); + } + + /// + /// 补打箱单 + /// + /// + /// + private void button4_Click(object sender, EventArgs e) + { + panel1.Visible = true; + textBox3.Focus(); + } + + /// + /// 补打箱单 + /// + /// + /// + private void button2_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrEmpty(textBox3.Text.Trim())) + { + MessageBox.Show("请扫描箱单!", "提示", MessageBoxButtons.OK); + textBox3.Focus(); + return; + } + + DataTable dt = ProScreenFunc.IsExsit(textBox3.Text.Trim()); + if (dt!=null && dt.Rows.Count>0) + { + string partNo = "", partName = "", batchNo = "", validity = "", validityDate = ""; + + partNo = dt.Rows[0]["PartNo"].ToString(); + partName = dt.Rows[0]["PartName"].ToString(); + batchNo = dt.Rows[0]["BatchNo"].ToString(); + validity = dt.Rows[0]["Validity"].ToString(); + validityDate = dt.Rows[0]["ValidityDate"].ToString(); + + ProScreenFunc.AddBoxInfo(textBox3.Text.Trim(), 1, partNo, partName, batchNo, validity, validityDate); + + #region 打印箱单 + + string filename = AppDomain.CurrentDomain.BaseDirectory + "box.grf"; + + DataTable headTable = new DataTable(); + headTable.Columns.Add("BoxNo"); + headTable.Columns.Add("PartNo"); + headTable.Columns.Add("PartName"); + headTable.Columns.Add("Batch"); + + DataRow row = headTable.NewRow(); + row["BoxNo"] = textBox3.Text.Trim(); + row["PartNo"] = partNo; + row["PartName"] = partName; + row["Batch"] = batchNo; + + string reportName = ConfigurationManager.AppSettings["PrinterName"]; + headTable.Rows.Add(row); + + ReportHelper rp = new ReportHelper(filename, headTable, null, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + + #endregion + + } + else + { + MessageBox.Show("此箱单不存在!", "提示", MessageBoxButtons.OK); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void button7_Click(object sender, EventArgs e) + { + FrmPackList fr = new FrmPackList(); + fr.Show(); + } + + private void button5_Click(object sender, EventArgs e) + { + FrmNotPackList frm = new FrmNotPackList(); + frm.Show(); + } + + private void button3_Click(object sender, EventArgs e) + { + panel1.Visible = false; + textBox3.Text = ""; + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmInspection_WheelBrow.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmInspection_WheelBrow.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmInspection_WheelBrow.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmLaser.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmLaser.Designer.cs new file mode 100644 index 0000000..0ac8e7c --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmLaser.Designer.cs @@ -0,0 +1,220 @@ +namespace PunchAndWeld +{ + partial class FrmLaser + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.ColumnHeader 扫描时间; + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.listView1 = new System.Windows.Forms.ListView(); + this.条码 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.label2 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + 扫描时间 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.SuspendLayout(); + // + // 扫描时间 + // + 扫描时间.Text = "扫描时间"; + 扫描时间.Width = 305; + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(52, 292); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(298, 76); + this.label1.TabIndex = 1; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(50, 531); + this.textBox1.Margin = new System.Windows.Forms.Padding(2); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(300, 84); + this.textBox1.TabIndex = 11; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // listView1 + // + this.listView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(46)))), ((int)(((byte)(64))))); + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.条码, + 扫描时间}); + this.listView1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.listView1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.listView1.FullRowSelect = true; + this.listView1.GridLines = true; + this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listView1.Location = new System.Drawing.Point(496, 320); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(660, 522); + this.listView1.TabIndex = 12; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + this.listView1.DrawColumnHeader += new System.Windows.Forms.DrawListViewColumnHeaderEventHandler(this.listView1_DrawColumnHeader); + this.listView1.DrawItem += new System.Windows.Forms.DrawListViewItemEventHandler(this.listView1_DrawItem); + this.listView1.DrawSubItem += new System.Windows.Forms.DrawListViewSubItemEventHandler(this.listView1_DrawSubItem); + // + // 条码 + // + this.条码.Text = "条码"; + this.条码.Width = 350; + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.label2.Location = new System.Drawing.Point(510, 231); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(174, 76); + this.label2.TabIndex = 13; + this.label2.Text = "已扫描记录"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.ForeColor = System.Drawing.Color.White; + this.label9.Location = new System.Drawing.Point(920, 7); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(338, 67); + this.label9.TabIndex = 14; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.Click += new System.EventHandler(this.label9_Click); + // + // label3 + // + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.label3.Location = new System.Drawing.Point(690, 231); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(174, 76); + this.label3.TabIndex = 15; + this.label3.Text = "100"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("微软雅黑", 22F); + this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.label4.Location = new System.Drawing.Point(23, 723); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(191, 39); + this.label4.TabIndex = 16; + this.label4.Text = "214设备状态"; + // + // textBox2 + // + this.textBox2.Enabled = false; + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 22F); + this.textBox2.Location = new System.Drawing.Point(220, 723); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(212, 46); + this.textBox2.TabIndex = 17; + // + // textBox3 + // + this.textBox3.Enabled = false; + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 22F); + this.textBox3.Location = new System.Drawing.Point(220, 814); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(212, 46); + this.textBox3.TabIndex = 19; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.BackColor = System.Drawing.Color.Transparent; + this.label5.Font = new System.Drawing.Font("微软雅黑", 22F); + this.label5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.label5.Location = new System.Drawing.Point(23, 814); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(191, 39); + this.label5.TabIndex = 18; + this.label5.Text = "294设备状态"; + // + // FrmLaser + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = global::PunchAndWeld.Properties.Resources.background; + this.ClientSize = new System.Drawing.Size(1280, 1024); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.label5); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label9); + this.Controls.Add(this.label2); + this.Controls.Add(this.listView1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmLaser"; + this.Text = "激光切割"; + this.Load += new System.EventHandler(this.FrmLaser_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader 条码; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Label label5; + + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmLaser.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmLaser.cs new file mode 100644 index 0000000..9b8ec1d --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmLaser.cs @@ -0,0 +1,391 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.BLL.PunchAndWeld; +using OPCAutomation; +using PunchAndWeld.DataSouce; + +namespace PunchAndWeld +{ + public partial class FrmLaser : Form + { + public FrmLaser() + { + InitializeComponent(); + } + + public static string workClass = ""; + OPCHelper opcHelper = new OPCHelper(); + private string strHostIP = ""; + private int deviceState_A = 0, deviceState_B = 0; + private bool lFlag_A = false, rFlag_A = false, lFlag_B = false, rFlag_B = false; + + private void FrmLaser_Load(object sender, EventArgs e) + { + string stationNo = ConfigurationManager.AppSettings["StationNo"]; + label1.Text = ProScreenFunc.GetStation(stationNo); + Control.CheckForIllegalCrossThreadCalls = false; + + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + textBox1.TabIndex = 0; + textBox1.Select(); + GetWorkClass(); + ProScreenFunc.GetScanCountByClass(workClass); + InitList(); + + PunchAdressBLL bll = new PunchAdressBLL(); + + try + { + if (opcHelper.CreateServer()) + { + if (opcHelper.ConnectServer(strHostIP, "Kepware.KEPServerEX.V6")) + { + opcHelper.Connected = true; + + opcHelper.opcGroups = opcHelper.opcServer.OPCGroups; + opcHelper.opcGroup1 = opcHelper.opcGroups.Add("DeviceRead"); + opcHelper.opcGroup2 = opcHelper.opcGroups.Add("DeviceWrite"); + opcHelper.SetGroupProperty(opcHelper.opcGroup1, 500); + opcHelper.SetGroupProperty(opcHelper.opcGroup2, 500); + + + opcHelper.opcItems1 = opcHelper.opcGroup1.OPCItems; + opcHelper.opcItems1.DefaultIsActive = true; + + DataTable dt = bll.SearchInfo(ConfigurationManager.AppSettings["DeviceNo"], 0); + + if (dt != null && dt.Rows.Count > 0) + { + opcHelper.opcItemm1 = new OPCItem[dt.Rows.Count]; + for (int i = 0; i < dt.Rows.Count; i++) + { + opcHelper.opcItemm1[i] = opcHelper.opcItems1.AddItem(dt.Rows[i]["Address"].ToString(), i); + } + } + + opcHelper.opcItems2 = opcHelper.opcGroup2.OPCItems; + opcHelper.opcItems2.DefaultIsActive = true; + + DataTable dt1 = bll.SearchInfo(ConfigurationManager.AppSettings["DeviceNo"], 1); + if (dt1 != null && dt1.Rows.Count > 0) + { + opcHelper.opcItemm2 = new OPCItem[dt1.Rows.Count]; + + for (int i = 0; i < dt1.Rows.Count; i++) + { + opcHelper.opcItemm2[i] = opcHelper.opcItems2.AddItem(dt1.Rows[i]["Address"].ToString(), i); + } + } + + opcHelper.opcGroup1.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(opcGroup1_DataChange); + + deviceState_A = opcHelper.ReadSingleValueFromOPC2(0); + textBox2.Text = deviceState_A == 1 ? "运行中" : "准备OK"; + lFlag_A = opcHelper.ReadSingleValueFromOPC3(0).ToLower() == "true" ? true : false; + rFlag_A = opcHelper.ReadSingleValueFromOPC3(1).ToLower() == "true" ? true : false; + + deviceState_B = opcHelper.ReadSingleValueFromOPC2(1); + textBox3.Text = deviceState_B == 1 ? "运行中" : "准备OK"; + lFlag_B = opcHelper.ReadSingleValueFromOPC3(2).ToLower() == "true" ? true : false; + rFlag_B = opcHelper.ReadSingleValueFromOPC3(3).ToLower() == "true" ? true : false; + } + } + else + { + MessageBox.Show("创建OPC服务失败!", "提示", MessageBoxButtons.OK); + opcHelper.Connected = false; + LogHelper.WriteErrLogBase("工位:" + label1.Text + "创建OPC服务失败!", MethodBase.GetCurrentMethod().Name); + return; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + void opcGroup1_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, + ref Array Qualities, ref Array TimeStamps) + { + try + { + for (int i = 1; i <= NumItems; i++) + { + int handle = Convert.ToInt32(ClientHandles.GetValue(i).ToString().Trim()); + string value = ItemValues.GetValue(i).ToString(); + string address = opcHelper.opcItemm1[(Convert.ToInt32(ClientHandles.GetValue(i)))].ItemID; + + if (handle == 0) + { + deviceState_A = Convert.ToInt32(value); + textBox2.Text = deviceState_A == 1 ? "运行中" : "准备OK"; + } + if (handle == 1) + { + deviceState_B = Convert.ToInt32(value); + textBox3.Text = deviceState_B == 1 ? "运行中" : "准备OK"; + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + label9.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + GetWorkClass(); + label3.Text= ProScreenFunc.GetScanCountByClass(workClass); + Thread.Sleep(500); + } + + private void GetWorkClass() + { + if (DateTime.Now > DateTime.Parse(DateTime.Now.ToShortDateString() + " 07:30:00") && + DateTime.Now < DateTime.Parse(DateTime.Now.ToShortDateString() + " 19:30:00")) + { + workClass = "白班"; + } + + if (DateTime.Now > DateTime.Parse(DateTime.Now.ToShortDateString() + " 19:30:00") && + DateTime.Now < DateTime.Parse(DateTime.Now.ToShortDateString() + " 23:59:59")) + { + workClass = "夜班"; + } + + if (DateTime.Now > DateTime.Parse(DateTime.Now.ToShortDateString() + " 00:00:00") && + DateTime.Now < DateTime.Parse(DateTime.Now.ToShortDateString() + " 07:30:00")) + { + workClass = "夜班"; + } workClass = "夜班"; + //} + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + if (string.IsNullOrWhiteSpace(textBox1.Text)) + { + MessageBox.Show("条码不能为空", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + + string barcode = textBox1.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + string oneBarCode = barcode; + + if (barcode.Length != 20) + { + MessageBox.Show("条码长度有误", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + + if (ProScreenFunc.IsScan(oneBarCode)) + { + MessageBox.Show("此条码已被扫描过", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + + lFlag_A = opcHelper.ReadSingleValueFromOPC3(0).ToLower() == "true" ? true : false; + rFlag_A = opcHelper.ReadSingleValueFromOPC3(1).ToLower() == "true" ? true : false; + lFlag_B = opcHelper.ReadSingleValueFromOPC3(2).ToLower() == "true" ? true : false; + rFlag_B = opcHelper.ReadSingleValueFromOPC3(3).ToLower() == "true" ? true : false; + + if (barcode.Substring(0, 10) == "6000000175" || barcode.Substring(0, 10) == "6000000176") + { + if (deviceState_A != 2) + { + MessageBox.Show("214设备未准备OK,无法扫描", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (!rFlag_A && !lFlag_A) + { + if (ProScreenFunc.GetPartNameByStock(barcode.Substring(0, 10)).Contains("左")) + { + opcHelper.opcItemm2[0].Write(1); + } + else + { + opcHelper.opcItemm2[1].Write(1); + } + } + else + { + if (ProScreenFunc.GetPartNameByStock(barcode.Substring(0, 10)).Contains("左") ) + { + if (lFlag_A) + { + MessageBox.Show("当前应扫描214右侧门槛", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + opcHelper.opcItemm2[0].Write(1); + } + + + if (ProScreenFunc.GetPartNameByStock(barcode.Substring(0, 10)).Contains("右") ) + { + if (rFlag_A) + { + MessageBox.Show("当前应扫描214左侧门槛", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + opcHelper.opcItemm2[1].Write(1); + } + } + } + else if (barcode.Substring(0, 10) == "1230007081" || barcode.Substring(0, 10) == "1230007094") + { + if (deviceState_B != 2) + { + MessageBox.Show("294设备未准备OK,无法扫描", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (!rFlag_B && !lFlag_B) + { + if (ProScreenFunc.GetPartNameByStock(barcode.Substring(0, 10)).Contains("左")) + { + opcHelper.opcItemm2[2].Write(1); + } + else + { + opcHelper.opcItemm2[3].Write(1); + } + } + else + { + if (ProScreenFunc.GetPartNameByStock(barcode.Substring(0, 10)).Contains("左")) + { + if (lFlag_B) + { + MessageBox.Show("当前应扫描294右侧门槛", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + opcHelper.opcItemm2[2].Write(1); + } + if (ProScreenFunc.GetPartNameByStock(barcode.Substring(0, 10)).Contains("右")) + { + if (rFlag_B) + { + MessageBox.Show("当前应扫描294左侧门槛", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + opcHelper.opcItemm2[3].Write(1); + } + } + } + else + { + MessageBox.Show("条码有误!", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + + ProScreenFunc.AddScanRecord(oneBarCode); + textBox1.SelectAll(); + textBox1.Focus(); + InitList(); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void InitList() + { + try + { + listView1.Columns.Clear(); + listView1.Clear(); + listView1.Columns.Add("条码", 350, HorizontalAlignment.Left); + listView1.Columns.Add("扫描时间", 305, HorizontalAlignment.Left); + + DataTable dt = ProScreenFunc.GetScanRecord(workClass); + if (dt != null && dt.Rows.Count > 0) + { + label3.Text = dt.Rows.Count.ToString(); + for (int i = 0; i < dt.Rows.Count; i++) + { + ListViewItem lvi = new ListViewItem(dt.Rows[i]["BarCode"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["ScanTime"].ToString()); //后面添加的Item都为SubItems ,即为子项 + listView1.Items.Add(lvi); + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void label9_Click(object sender, EventArgs e) + { + Environment.Exit(0); + } + + private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) + { + //Brush s = new SolidBrush(Color.FromArgb(39, 46, 64)); + //e.Graphics.FillRectangle(s, e.Bounds);//采⽤特定颜⾊绘制标题列 + //e.DrawText();//采⽤默认⽅式绘制标题⽂本 + } + + private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e) + { + //e.DrawDefault = true;//采⽤系统默认⽅式绘制项 + } + + private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e) + { + //e.DrawDefault = true;//采⽤系统默认⽅式绘制项 + } + + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmLaser.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmLaser.resx new file mode 100644 index 0000000..7d8285f --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmLaser.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmNotPackList.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmNotPackList.Designer.cs new file mode 100644 index 0000000..b2f0bfc --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmNotPackList.Designer.cs @@ -0,0 +1,73 @@ + +namespace PunchAndWeld +{ + partial class FrmNotPackList + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.listView1 = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.SuspendLayout(); + // + // listView1 + // + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1}); + this.listView1.Font = new System.Drawing.Font("微软雅黑", 14.25F); + this.listView1.GridLines = true; + this.listView1.HideSelection = false; + this.listView1.Location = new System.Drawing.Point(13, 23); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(483, 534); + this.listView1.TabIndex = 0; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "条码"; + this.columnHeader1.Width = 470; + // + // FrmNotPackList + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(516, 575); + this.Controls.Add(this.listView1); + this.Name = "FrmNotPackList"; + this.Text = "未装箱总成"; + this.Load += new System.EventHandler(this.FrmNotPackList_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader columnHeader1; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmNotPackList.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmNotPackList.cs new file mode 100644 index 0000000..52e265c --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmNotPackList.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Windows.Forms; +using MESClassLibrary.BLL.Log; +using PunchAndWeld.DataSouce; + +namespace PunchAndWeld +{ + public partial class FrmNotPackList : Form + { + public FrmNotPackList() + { + InitializeComponent(); + } + + private void FrmNotPackList_Load(object sender, EventArgs e) + { + try + { + listView1.Columns.Clear(); + listView1.Clear(); + listView1.Columns.Add("塑件条码", 470, HorizontalAlignment.Center); + + DataTable dt = ProScreenFunc.NotPackList(ConfigurationManager.AppSettings["StationNo"]); + if (dt != null && dt.Rows.Count > 0) + { + for (int i = 0; i < dt.Rows.Count; i++) + { + ListViewItem lvi = new ListViewItem(dt.Rows[i]["barcode"].ToString()); + listView1.Items.Add(lvi); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmNotPackList.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmNotPackList.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmNotPackList.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmOtherParts.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmOtherParts.Designer.cs new file mode 100644 index 0000000..1a67e82 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmOtherParts.Designer.cs @@ -0,0 +1,443 @@ +namespace PunchAndWeld +{ + partial class FrmOtherParts + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label11 = new System.Windows.Forms.Label(); + this.textBox6 = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.textBox5 = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.qty3 = new System.Windows.Forms.Label(); + this.qty4 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.qty5 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.qty9 = new System.Windows.Forms.Label(); + this.label19 = new System.Windows.Forms.Label(); + this.qty10 = new System.Windows.Forms.Label(); + this.label21 = new System.Windows.Forms.Label(); + this.qty11 = new System.Windows.Forms.Label(); + this.label23 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label11.Location = new System.Drawing.Point(194, 436); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(108, 35); + this.label11.TabIndex = 37; + this.label11.Text = "label11"; + // + // textBox6 + // + this.textBox6.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox6.Location = new System.Drawing.Point(413, 428); + this.textBox6.Name = "textBox6"; + this.textBox6.Size = new System.Drawing.Size(514, 43); + this.textBox6.TabIndex = 36; + this.textBox6.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox6_KeyDown); + // + // label12 + // + this.label12.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label12.Location = new System.Drawing.Point(22, 431); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(180, 40); + this.label12.TabIndex = 35; + this.label12.Text = "关键零件号6:"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label9.Location = new System.Drawing.Point(194, 359); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(92, 35); + this.label9.TabIndex = 34; + this.label9.Text = "label9"; + // + // textBox5 + // + this.textBox5.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox5.Location = new System.Drawing.Point(413, 351); + this.textBox5.Name = "textBox5"; + this.textBox5.Size = new System.Drawing.Size(514, 43); + this.textBox5.TabIndex = 33; + this.textBox5.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox5_KeyDown); + // + // label10 + // + this.label10.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.Location = new System.Drawing.Point(22, 354); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(180, 40); + this.label10.TabIndex = 32; + this.label10.Text = "关键零件号5:"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label7.Location = new System.Drawing.Point(194, 285); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(92, 35); + this.label7.TabIndex = 31; + this.label7.Text = "label7"; + // + // textBox4 + // + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(413, 277); + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(514, 43); + this.textBox4.TabIndex = 30; + this.textBox4.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox4_KeyDown); + // + // label8 + // + this.label8.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.Location = new System.Drawing.Point(22, 280); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(180, 40); + this.label8.TabIndex = 29; + this.label8.Text = "关键零件号4:"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label6.Location = new System.Drawing.Point(194, 212); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(92, 35); + this.label6.TabIndex = 28; + this.label6.Text = "label6"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label5.Location = new System.Drawing.Point(194, 137); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(92, 35); + this.label5.TabIndex = 27; + this.label5.Text = "label5"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label4.Location = new System.Drawing.Point(194, 64); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(92, 35); + this.label4.TabIndex = 26; + this.label4.Text = "label4"; + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(873, 518); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(147, 55); + this.button1.TabIndex = 25; + this.button1.Text = "关闭"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // textBox3 + // + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(413, 204); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(514, 43); + this.textBox3.TabIndex = 24; + this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown); + // + // label3 + // + this.label3.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(22, 207); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(180, 40); + this.label3.TabIndex = 23; + this.label3.Text = "关键零件号3:"; + // + // textBox2 + // + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(413, 129); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(514, 43); + this.textBox2.TabIndex = 22; + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // label2 + // + this.label2.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(22, 132); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(180, 40); + this.label2.TabIndex = 21; + this.label2.Text = "关键零件号2:"; + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(413, 58); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(514, 43); + this.textBox1.TabIndex = 20; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label1 + // + this.label1.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(22, 61); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(180, 40); + this.label1.TabIndex = 19; + this.label1.Text = "关键零件号1:"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label13.Location = new System.Drawing.Point(990, 60); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(42, 35); + this.label13.TabIndex = 38; + this.label13.Text = "个"; + // + // qty3 + // + this.qty3.AutoSize = true; + this.qty3.Font = new System.Drawing.Font("微软雅黑", 20F); + this.qty3.Location = new System.Drawing.Point(943, 61); + this.qty3.Name = "qty3"; + this.qty3.Size = new System.Drawing.Size(31, 35); + this.qty3.TabIndex = 39; + this.qty3.Text = "1"; + // + // qty4 + // + this.qty4.AutoSize = true; + this.qty4.Font = new System.Drawing.Font("微软雅黑", 20F); + this.qty4.Location = new System.Drawing.Point(943, 130); + this.qty4.Name = "qty4"; + this.qty4.Size = new System.Drawing.Size(31, 35); + this.qty4.TabIndex = 41; + this.qty4.Text = "1"; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label15.Location = new System.Drawing.Point(990, 129); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(42, 35); + this.label15.TabIndex = 40; + this.label15.Text = "个"; + // + // qty5 + // + this.qty5.AutoSize = true; + this.qty5.Font = new System.Drawing.Font("微软雅黑", 20F); + this.qty5.Location = new System.Drawing.Point(943, 208); + this.qty5.Name = "qty5"; + this.qty5.Size = new System.Drawing.Size(31, 35); + this.qty5.TabIndex = 43; + this.qty5.Text = "1"; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label17.Location = new System.Drawing.Point(990, 207); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(42, 35); + this.label17.TabIndex = 42; + this.label17.Text = "个"; + // + // qty9 + // + this.qty9.AutoSize = true; + this.qty9.Font = new System.Drawing.Font("微软雅黑", 20F); + this.qty9.Location = new System.Drawing.Point(943, 281); + this.qty9.Name = "qty9"; + this.qty9.Size = new System.Drawing.Size(31, 35); + this.qty9.TabIndex = 45; + this.qty9.Text = "1"; + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label19.Location = new System.Drawing.Point(990, 280); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(42, 35); + this.label19.TabIndex = 44; + this.label19.Text = "个"; + // + // qty10 + // + this.qty10.AutoSize = true; + this.qty10.Font = new System.Drawing.Font("微软雅黑", 20F); + this.qty10.Location = new System.Drawing.Point(943, 352); + this.qty10.Name = "qty10"; + this.qty10.Size = new System.Drawing.Size(31, 35); + this.qty10.TabIndex = 47; + this.qty10.Text = "1"; + // + // label21 + // + this.label21.AutoSize = true; + this.label21.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label21.Location = new System.Drawing.Point(990, 351); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(42, 35); + this.label21.TabIndex = 46; + this.label21.Text = "个"; + // + // qty11 + // + this.qty11.AutoSize = true; + this.qty11.Font = new System.Drawing.Font("微软雅黑", 20F); + this.qty11.Location = new System.Drawing.Point(943, 429); + this.qty11.Name = "qty11"; + this.qty11.Size = new System.Drawing.Size(31, 35); + this.qty11.TabIndex = 49; + this.qty11.Text = "1"; + // + // label23 + // + this.label23.AutoSize = true; + this.label23.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label23.Location = new System.Drawing.Point(990, 428); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(42, 35); + this.label23.TabIndex = 48; + this.label23.Text = "个"; + // + // FrmOtherParts + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1087, 585); + this.Controls.Add(this.qty11); + this.Controls.Add(this.label23); + this.Controls.Add(this.qty10); + this.Controls.Add(this.label21); + this.Controls.Add(this.qty9); + this.Controls.Add(this.label19); + this.Controls.Add(this.qty5); + this.Controls.Add(this.label17); + this.Controls.Add(this.qty4); + this.Controls.Add(this.label15); + this.Controls.Add(this.qty3); + this.Controls.Add(this.label13); + this.Controls.Add(this.label11); + this.Controls.Add(this.textBox6); + this.Controls.Add(this.label12); + this.Controls.Add(this.label9); + this.Controls.Add(this.textBox5); + this.Controls.Add(this.label10); + this.Controls.Add(this.label7); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.label8); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.label3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.label2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmOtherParts"; + this.Text = "关键零件校验"; + this.Load += new System.EventHandler(this.FrmOtherParts_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label11; + private System.Windows.Forms.TextBox textBox6; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox textBox5; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label qty3; + private System.Windows.Forms.Label qty4; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label qty5; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.Label qty9; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.Label qty10; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.Label qty11; + private System.Windows.Forms.Label label23; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmOtherParts.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmOtherParts.cs new file mode 100644 index 0000000..141cc7c --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmOtherParts.cs @@ -0,0 +1,886 @@ +using MESClassLibrary.BLL.Log; +using PunchAndWeld.DataSouce; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Web.Services.Description; +using System.Windows.Forms; + +namespace PunchAndWeld +{ + public partial class FrmOtherParts : Form + { + OtherPart parts = new OtherPart(); + int[] isCheck = new int[6] { 0, 0, 0, 0, 0, 0 }; + private static string productID3 = "", productID4 = "", productID5 = "", productID6 = "", productID7 = "", productID8 = ""; + + static int a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, a6 = 0; + static string[] s1 = new string[1]; + static string[] s2 = new string[1]; + static string[] s3 = new string[1]; + static string[] s4 = new string[1]; + static string[] s5 = new string[1]; + static string[] s6 = new string[1]; + + public FrmOtherParts(OtherPart part) + { + InitializeComponent(); + parts = part; + } + + private void FrmOtherParts_Load(object sender, EventArgs e) + { + textBox1.Text = ""; + textBox2.Text = ""; + textBox3.Text = ""; + textBox4.Text = ""; + textBox5.Text = ""; + textBox6.Text = ""; + textBox1.Enabled = false; + textBox2.Enabled = false; + textBox3.Enabled = false; + textBox4.Enabled = false; + textBox5.Enabled = false; + textBox6.Enabled = false; + label4.Text = ""; + label5.Text = ""; + label6.Text = ""; + label7.Text = ""; + label9.Text = ""; + label11.Text = ""; + int[] isCheck = new int[6] { 0, 0, 0, 0, 0, 0 }; + label4.Text = ProScreenFunc.GetPartNoByID(parts.productID3); + label5.Text = ProScreenFunc.GetPartNoByID(parts.productID4); + label6.Text = ProScreenFunc.GetPartNoByID(parts.productID5); + + label7.Text = ProScreenFunc.GetPartNoByID(parts.productID6); + label9.Text = ProScreenFunc.GetPartNoByID(parts.productID7); + label11.Text = ProScreenFunc.GetPartNoByID(parts.productID8); + + qty3.Text = parts.qty3; + qty4.Text = parts.qty4; + qty5.Text = parts.qty5; + qty9.Text = parts.qty6; + qty10.Text = parts.qty7; + qty11.Text = parts.qty8; + + s1 = new string[int.Parse(qty3.Text)]; + s2 = new string[int.Parse(qty4.Text)]; + s3 = new string[int.Parse(qty5.Text)]; + s4 = new string[int.Parse(qty9.Text)]; + s5 = new string[int.Parse(qty10.Text)]; + s6 = new string[int.Parse(qty11.Text)]; + a1 = 0; a2 = 0; a3 = 0; a4 = 0; a5 = 0; a6 = 0; + + if (!string.IsNullOrWhiteSpace(parts.productID3)) + { + textBox1.Enabled = true; + } + if (!string.IsNullOrWhiteSpace(parts.productID4)) + { + textBox2.Enabled = true; + } + if (!string.IsNullOrWhiteSpace(parts.productID5)) + { + textBox3.Enabled = true; + } + + if (!string.IsNullOrWhiteSpace(parts.productID6)) + { + textBox4.Enabled = true; + } + if (!string.IsNullOrWhiteSpace(parts.productID7)) + { + textBox5.Enabled = true; + } + if (!string.IsNullOrWhiteSpace(parts.productID8)) + { + textBox6.Enabled = true; + } + + if (textBox1.Enabled) + { + textBox1.Focus(); + } + else if (textBox2.Enabled) + { + textBox2.Focus(); + } + else if (textBox3.Enabled) + { + textBox3.Focus(); + } + else if (textBox4.Enabled) + { + textBox4.Focus(); + } + else if (textBox5.Enabled) + { + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Focus(); + } + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox1.Text.Trim(); + if (string.IsNullOrWhiteSpace(barcode)) + { + MessageBox.Show("条码不能为空!", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + + productID3 = ProScreenFunc.GetProductID(barcode); + if (parts.productID3 == productID3) + { + s1[a1] = barcode; + if (a1 < int.Parse(qty3.Text)-1) + { + a1++; + textBox1.SelectAll(); + textBox1.Focus(); + } + else + { + isCheck[0] = 1; + if (textBox2.Enabled) + { + textBox2.Text = ""; + textBox2.Focus(); + } + else if (textBox3.Enabled) + { + textBox3.Text = ""; + textBox3.Focus(); + } + else if (textBox4.Enabled) + { + textBox4.Text = ""; + textBox4.Focus(); + } + else if (textBox5.Enabled) + { + textBox5.Text = ""; + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[1] = 1; + isCheck[2] = 1; + isCheck[3] = 1; + isCheck[4] = 1; + isCheck[5] = 1; + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + ScanAll.ScanResult = true; + ScanAll.barCode1 = string.Join(",", s1); + ScanAll.partNo1 = ProScreenFunc.GetPartNoByID(productID3); + ScanAll.barCode2 = ""; + ScanAll.partNo2 = ""; + ScanAll.barCode3 = ""; + ScanAll.partNo3 = ""; + + ScanAll.barCode4 =""; + ScanAll.partNo4 = ""; + ScanAll.barCode5 = ""; + ScanAll.partNo5 = ""; + ScanAll.barCode6 = ""; + ScanAll.partNo6 = ""; + this.Close(); + } + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox1.SelectAll(); + textBox1.Focus(); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox2.Text.Trim(); + if (string.IsNullOrWhiteSpace(barcode)) + { + MessageBox.Show("条码不能为空!", "提示", MessageBoxButtons.OK); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + + productID4 = ProScreenFunc.GetProductID(barcode); + if (parts.productID4 == productID4) + { + s2[a2] = barcode; + if (a2 < int.Parse(qty4.Text)-1) + { + a2++; + textBox2.SelectAll(); + textBox2.Focus(); + } + else + { + isCheck[1] = 1; + + if (textBox3.Enabled) + { + textBox3.Text = ""; + textBox3.Focus(); + } + else if (textBox4.Enabled) + { + textBox4.Text = ""; + textBox4.Focus(); + } + else if (textBox5.Enabled) + { + textBox5.Text = ""; + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[2] = 1; + isCheck[3] = 1; + isCheck[4] = 1; + isCheck[5] = 1; + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox2.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号54未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + ScanAll.ScanResult = true; + ScanAll.barCode1 = string.Join(",", s1); + ScanAll.partNo1 = ProScreenFunc.GetPartNoByID(productID3); + ScanAll.barCode2 = string.Join(",", s2); + ScanAll.partNo2 = ProScreenFunc.GetPartNoByID(productID4); + ScanAll.barCode3 = ""; + ScanAll.partNo3 = ""; + + ScanAll.barCode4 = ""; + ScanAll.partNo4 = ""; + ScanAll.barCode5 = ""; + ScanAll.partNo5 = ""; + ScanAll.barCode6 = ""; + ScanAll.partNo6 = ""; + this.Close(); + } + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox2.SelectAll(); + textBox2.Focus(); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void textBox3_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox3.Text.Trim(); + if (string.IsNullOrWhiteSpace(barcode)) + { + MessageBox.Show("条码不能为空!", "提示", MessageBoxButtons.OK); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + + productID5 = ProScreenFunc.GetProductID(barcode); + if (parts.productID5 == productID5) + { + s3[a3] = barcode; + if (a3 < int.Parse(qty5.Text)-1) + { + a3++; + textBox3.SelectAll(); + textBox3.Focus(); + } + else + { + isCheck[2] = 1; + + if (textBox4.Enabled) + { + textBox4.Text = ""; + textBox4.Focus(); + } + else if (textBox5.Enabled) + { + textBox5.Text = ""; + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[3] = 1; + isCheck[4] = 1; + isCheck[5] = 1; + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox3.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox3.Text = ""; + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + ScanAll.ScanResult = true; + ScanAll.barCode1 = string.Join(",", s1); + ScanAll.partNo1 = ProScreenFunc.GetPartNoByID(productID3); + ScanAll.barCode2 = string.Join(",", s2); + ScanAll.partNo2 = ProScreenFunc.GetPartNoByID(productID4); + ScanAll.barCode3 = string.Join(",", s3); + ScanAll.partNo3 = ProScreenFunc.GetPartNoByID(productID5); + + ScanAll.barCode4 = ""; + ScanAll.partNo4 = ""; + ScanAll.barCode5 = ""; + ScanAll.partNo5 = ""; + ScanAll.barCode6 = ""; + ScanAll.partNo6 = ""; + this.Close(); + } + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox3.SelectAll(); + textBox3.Focus(); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + + private void textBox4_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox4.Text.Trim(); + if (string.IsNullOrWhiteSpace(barcode)) + { + MessageBox.Show("条码不能为空!", "提示", MessageBoxButtons.OK); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + + + productID6 = ProScreenFunc.GetProductID(barcode); + if (parts.productID6 == productID6) + { + s4[a4] = barcode; + if (a4 < int.Parse(qty9.Text)-1) + { + a4++; + textBox4.SelectAll(); + textBox4.Focus(); + } + else + { + isCheck[3] = 1; + + if (textBox5.Enabled) + { + textBox5.Text = ""; + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[4] = 1; + isCheck[5] = 1; + + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox4.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox4.Text = ""; + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox4.Text = ""; + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + ScanAll.ScanResult = true; + ScanAll.barCode1 = string.Join(",", s1); + ScanAll.partNo1 = ProScreenFunc.GetPartNoByID(productID3); + ScanAll.barCode2 = string.Join(",", s2); + ScanAll.partNo2 = ProScreenFunc.GetPartNoByID(productID4); + ScanAll.barCode3 = string.Join(",", s4); + ScanAll.partNo3 = ProScreenFunc.GetPartNoByID(productID5); + + ScanAll.barCode4 = string.Join(",", s4); + ScanAll.partNo4 = ProScreenFunc.GetPartNoByID(productID6); + ScanAll.barCode5 = ""; + ScanAll.partNo5 = ""; + ScanAll.barCode6 = ""; + ScanAll.partNo6 = ""; + this.Close(); + } + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox4.SelectAll(); + textBox4.Focus(); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void textBox5_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox5.Text.Trim(); + if (string.IsNullOrWhiteSpace(barcode)) + { + MessageBox.Show("条码不能为空!", "提示", MessageBoxButtons.OK); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + + + + productID7 = ProScreenFunc.GetProductID(barcode); + if (parts.productID7 == productID7) + { + s5[a5] = barcode; + if (a5 < int.Parse(qty10 .Text)-1) + { + a5++; + textBox5.SelectAll(); + textBox5.Focus(); + } + else + { + isCheck[4] = 1; + + if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[4] = 1; + isCheck[5] = 1; + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox5.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox5.Text = ""; + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox5.Text = ""; + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + ScanAll.ScanResult = true; + ScanAll.barCode1 = string.Join(",", s1); + ScanAll.partNo1 = ProScreenFunc.GetPartNoByID(productID3); + ScanAll.barCode2 = string.Join(",", s2); + ScanAll.partNo2 = ProScreenFunc.GetPartNoByID(productID4); + ScanAll.barCode3 = string.Join(",", s3); + ScanAll.partNo3 = ProScreenFunc.GetPartNoByID(productID5); + + ScanAll.barCode4 = string.Join(",", s4); + ScanAll.partNo4 = ProScreenFunc.GetPartNoByID(productID6); + ScanAll.barCode5 = string.Join(",", s5); + ScanAll.partNo5 = ProScreenFunc.GetPartNoByID(productID7); + ScanAll.barCode6 = ""; + ScanAll.partNo6 = ""; + this.Close(); + } + + + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox5.SelectAll(); + textBox5.Focus(); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void textBox6_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox6.Text.Trim(); + if (string.IsNullOrWhiteSpace(barcode)) + { + MessageBox.Show("条码不能为空!", "提示", MessageBoxButtons.OK); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + + + productID8 = ProScreenFunc.GetProductID(barcode); + if (parts.productID8 == productID8) + { + s6[a6] = barcode; + if (a6 < int.Parse(qty11.Text)-1) + { + a6++; + textBox6.SelectAll(); + textBox6.Focus(); + } + else + { + isCheck[5] = 1; + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox6.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox6.Text = ""; + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox6.Text = ""; + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox6.Text = ""; + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox6.Text = ""; + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + ScanAll.barCode1 = string.Join(",", s1); + ScanAll.partNo1 = ProScreenFunc.GetPartNoByID(productID3); + ScanAll.barCode2 = string.Join(",", s2); + ScanAll.partNo2 = ProScreenFunc.GetPartNoByID(productID4); + ScanAll.barCode3 = string.Join(",", s3); + ScanAll.partNo3 = ProScreenFunc.GetPartNoByID(productID5); + + ScanAll.barCode4 = string.Join(",", s4); + ScanAll.partNo4 = ProScreenFunc.GetPartNoByID(productID6); + ScanAll.barCode5 = string.Join(",", s5); + ScanAll.partNo5 = ProScreenFunc.GetPartNoByID(productID7); + ScanAll.barCode6 = string.Join(",", s6); + ScanAll.partNo6 = ProScreenFunc.GetPartNoByID(productID8); ; + this.Close(); + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox6.SelectAll(); + textBox6.Focus(); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void button1_Click(object sender, EventArgs e) + { + ScanAll.ScanResult = false; + this.Close(); + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmOtherParts.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmOtherParts.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmOtherParts.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPackList.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmPackList.Designer.cs new file mode 100644 index 0000000..e1b3783 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPackList.Designer.cs @@ -0,0 +1,175 @@ + +namespace PunchAndWeld +{ + partial class FrmPackList + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.button2 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.listView1 = new System.Windows.Forms.ListView(); + this.箱单号 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.塑件条码 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.装箱时间 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.tableLayoutPanel1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.listView1, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.03883F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 87.96117F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1280, 800); + this.tableLayoutPanel1.TabIndex = 1; + // + // panel1 + // + this.panel1.Controls.Add(this.textBox1); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.button2); + this.panel1.Controls.Add(this.button1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(3, 3); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1274, 90); + this.panel1.TabIndex = 1; + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 16F); + this.textBox1.Location = new System.Drawing.Point(130, 31); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(607, 36); + this.textBox1.TabIndex = 7; + // + // label1 + // + this.label1.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(25, 29); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(125, 38); + this.label1.TabIndex = 6; + this.label1.Text = "箱单号:"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // button2 + // + this.button2.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(932, 27); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(90, 40); + this.button2.TabIndex = 5; + this.button2.Text = "关闭"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button1 + // + this.button1.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(770, 27); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(90, 40); + this.button1.TabIndex = 4; + this.button1.Text = "查询"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // listView1 + // + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.箱单号, + this.塑件条码, + this.装箱时间}); + this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.listView1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.listView1.GridLines = true; + this.listView1.HideSelection = false; + this.listView1.Location = new System.Drawing.Point(3, 99); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(1274, 698); + this.listView1.TabIndex = 2; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // 箱单号 + // + this.箱单号.Text = "箱单号"; + this.箱单号.Width = 400; + // + // 塑件条码 + // + this.塑件条码.Text = "塑件条码"; + this.塑件条码.Width = 400; + // + // 装箱时间 + // + this.装箱时间.Text = "装箱时间"; + this.装箱时间.Width = 300; + // + // FrmPackList + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1280, 800); + this.Controls.Add(this.tableLayoutPanel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmPackList"; + this.Text = "装箱单明细"; + this.Load += new System.EventHandler(this.FrmPackList_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ColumnHeader 箱单号; + private System.Windows.Forms.ColumnHeader 塑件条码; + private System.Windows.Forms.ColumnHeader 装箱时间; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPackList.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmPackList.cs new file mode 100644 index 0000000..310199c --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPackList.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Windows.Forms; +using PunchAndWeld.DataSouce; + +namespace PunchAndWeld +{ + public partial class FrmPackList : Form + { + public FrmPackList() + { + InitializeComponent(); + } + + private void FrmPackList_Load(object sender, EventArgs e) + { + textBox1.Text = ""; + textBox1.Focus(); + } + + private void button1_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrEmpty(textBox1.Text.Trim())) + { + MessageBox.Show("请扫描或输入箱单号!", "提示", MessageBoxButtons.OK); + textBox1.Focus(); + return; + } + + listView1.Columns.Clear(); + listView1.Clear(); + listView1.Columns.Add("箱单号", 400, HorizontalAlignment.Center); + listView1.Columns.Add("塑件条码", 400, HorizontalAlignment.Center); + listView1.Columns.Add("装箱时间", 400, HorizontalAlignment.Center); + + DataTable dt = ProScreenFunc.PackList(textBox1.Text.Trim()); + if (dt != null && dt.Rows.Count > 0) + { + for (int i = 0; i < dt.Rows.Count; i++) + { + ListViewItem lvi = new ListViewItem(dt.Rows[i]["BoxNo"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["BarCode"].ToString()); //后面添加的Item都为SubItems ,即为子项 + lvi.SubItems.Add(dt.Rows[i]["CreateTime"].ToString()); + listView1.Items.Add(lvi); + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void button2_Click(object sender, EventArgs e) + { + this.Close(); + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPackList.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmPackList.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPackList.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPassWord.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmPassWord.Designer.cs new file mode 100644 index 0000000..9f96576 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPassWord.Designer.cs @@ -0,0 +1,101 @@ +namespace PunchAndWeld +{ + partial class FrmPassWord + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.btnCancel = new System.Windows.Forms.Button(); + this.btnOk = new System.Windows.Forms.Button(); + this.txtPass = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(137, 86); + this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(29, 12); + this.label1.TabIndex = 7; + this.label1.Text = "密码"; + // + // btnCancel + // + this.btnCancel.Location = new System.Drawing.Point(307, 191); + this.btnCancel.Margin = new System.Windows.Forms.Padding(2); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(56, 26); + this.btnCancel.TabIndex = 6; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // btnOk + // + this.btnOk.Location = new System.Drawing.Point(139, 191); + this.btnOk.Margin = new System.Windows.Forms.Padding(2); + this.btnOk.Name = "btnOk"; + this.btnOk.Size = new System.Drawing.Size(56, 26); + this.btnOk.TabIndex = 5; + this.btnOk.Text = "提交"; + this.btnOk.UseVisualStyleBackColor = true; + this.btnOk.Click += new System.EventHandler(this.btnOk_Click); + // + // txtPass + // + this.txtPass.Location = new System.Drawing.Point(178, 81); + this.txtPass.Margin = new System.Windows.Forms.Padding(2); + this.txtPass.Name = "txtPass"; + this.txtPass.PasswordChar = '*'; + this.txtPass.Size = new System.Drawing.Size(176, 21); + this.txtPass.TabIndex = 4; + // + // FrmPassWord + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(538, 330); + this.Controls.Add(this.label1); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnOk); + this.Controls.Add(this.txtPass); + this.Name = "FrmPassWord"; + this.Text = "输入密码"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.Button btnOk; + private System.Windows.Forms.TextBox txtPass; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPassWord.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmPassWord.cs new file mode 100644 index 0000000..d110f55 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPassWord.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace PunchAndWeld +{ + public partial class FrmPassWord : Form + { + public event Action OkBtnClick; + + public FrmPassWord() + { + InitializeComponent(); + } + + private void btnOk_Click(object sender, EventArgs e) + { + if (string.IsNullOrEmpty(txtPass.Text)) + { + MessageBox.Show("请输入密码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtPass.Focus(); + return; + } + + if (OkBtnClick != null) + { + OkBtnClick(txtPass.Text); + } + + } + + private void btnCancel_Click(object sender, EventArgs e) + { + this.Close(); + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPassWord.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmPassWord.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPassWord.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPlan.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmPlan.Designer.cs new file mode 100644 index 0000000..cee2a69 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPlan.Designer.cs @@ -0,0 +1,274 @@ +namespace PunchAndWeld +{ + partial class FrmPlan + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.listView1 = new System.Windows.Forms.ListView(); + this.columnHeader6 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader5 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.panel1 = new System.Windows.Forms.Panel(); + this.btCal = new System.Windows.Forms.Button(); + this.btSave = new System.Windows.Forms.Button(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.comboBox2 = new System.Windows.Forms.ComboBox(); + this.label2 = new System.Windows.Forms.Label(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.btAdd = new System.Windows.Forms.Button(); + this.btEdit = new System.Windows.Forms.Button(); + this.btDel = new System.Windows.Forms.Button(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // listView1 + // + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader6, + this.columnHeader1, + this.columnHeader2, + this.columnHeader3, + this.columnHeader4, + this.columnHeader5}); + this.listView1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.listView1.FullRowSelect = true; + this.listView1.GridLines = true; + this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listView1.Location = new System.Drawing.Point(26, 106); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(1263, 601); + this.listView1.TabIndex = 7; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged); + // + // columnHeader6 + // + this.columnHeader6.Text = "ID"; + this.columnHeader6.Width = 0; + // + // columnHeader1 + // + this.columnHeader1.Text = "设备名称"; + this.columnHeader1.Width = 300; + // + // columnHeader2 + // + this.columnHeader2.Text = "零件号"; + this.columnHeader2.Width = 200; + // + // columnHeader3 + // + this.columnHeader3.Text = "零件名称"; + this.columnHeader3.Width = 400; + // + // columnHeader4 + // + this.columnHeader4.Text = "数量"; + this.columnHeader4.Width = 150; + // + // columnHeader5 + // + this.columnHeader5.Text = "完成数"; + this.columnHeader5.Width = 0; + // + // panel1 + // + this.panel1.Controls.Add(this.btCal); + this.panel1.Controls.Add(this.btSave); + this.panel1.Controls.Add(this.textBox1); + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.comboBox2); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.comboBox1); + this.panel1.Controls.Add(this.label1); + this.panel1.Location = new System.Drawing.Point(26, 58); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1263, 42); + this.panel1.TabIndex = 8; + // + // btCal + // + this.btCal.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btCal.Location = new System.Drawing.Point(1153, 14); + this.btCal.Name = "btCal"; + this.btCal.Size = new System.Drawing.Size(75, 23); + this.btCal.TabIndex = 14; + this.btCal.Text = "取消"; + this.btCal.UseVisualStyleBackColor = true; + this.btCal.Click += new System.EventHandler(this.btCal_Click); + // + // btSave + // + this.btSave.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btSave.Location = new System.Drawing.Point(1072, 13); + this.btSave.Name = "btSave"; + this.btSave.Size = new System.Drawing.Size(75, 23); + this.btSave.TabIndex = 13; + this.btSave.Text = "确定"; + this.btSave.UseVisualStyleBackColor = true; + this.btSave.Click += new System.EventHandler(this.btSave_Click); + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(935, 13); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(100, 26); + this.textBox1.TabIndex = 12; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(882, 16); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(40, 16); + this.label3.TabIndex = 11; + this.label3.Text = "数量"; + // + // comboBox2 + // + this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.comboBox2.FormattingEnabled = true; + this.comboBox2.Location = new System.Drawing.Point(462, 13); + this.comboBox2.Name = "comboBox2"; + this.comboBox2.Size = new System.Drawing.Size(374, 24); + this.comboBox2.TabIndex = 10; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(388, 16); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(72, 16); + this.label2.TabIndex = 9; + this.label2.Text = "零件名称"; + // + // comboBox1 + // + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(81, 13); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(271, 24); + this.comboBox1.TabIndex = 8; + this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(7, 16); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(72, 16); + this.label1.TabIndex = 7; + this.label1.Text = "设备名称"; + // + // btAdd + // + this.btAdd.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btAdd.Location = new System.Drawing.Point(26, 26); + this.btAdd.Name = "btAdd"; + this.btAdd.Size = new System.Drawing.Size(75, 23); + this.btAdd.TabIndex = 14; + this.btAdd.Text = "添加"; + this.btAdd.UseVisualStyleBackColor = true; + this.btAdd.Click += new System.EventHandler(this.btAdd_Click); + // + // btEdit + // + this.btEdit.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btEdit.Location = new System.Drawing.Point(133, 26); + this.btEdit.Name = "btEdit"; + this.btEdit.Size = new System.Drawing.Size(75, 23); + this.btEdit.TabIndex = 15; + this.btEdit.Text = "编辑"; + this.btEdit.UseVisualStyleBackColor = true; + this.btEdit.Click += new System.EventHandler(this.btEdit_Click); + // + // btDel + // + this.btDel.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btDel.Location = new System.Drawing.Point(238, 26); + this.btDel.Name = "btDel"; + this.btDel.Size = new System.Drawing.Size(75, 23); + this.btDel.TabIndex = 16; + this.btDel.Text = "删除"; + this.btDel.UseVisualStyleBackColor = true; + this.btDel.Click += new System.EventHandler(this.btDel_Click); + // + // FrmPlan + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1318, 729); + this.Controls.Add(this.btDel); + this.Controls.Add(this.btEdit); + this.Controls.Add(this.btAdd); + this.Controls.Add(this.panel1); + this.Controls.Add(this.listView1); + this.Name = "FrmPlan"; + this.Text = "冲孔计划"; + this.Load += new System.EventHandler(this.FrmPlan_Load); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.ColumnHeader columnHeader4; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button btSave; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ComboBox comboBox2; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button btCal; + private System.Windows.Forms.Button btAdd; + private System.Windows.Forms.Button btEdit; + private System.Windows.Forms.Button btDel; + private System.Windows.Forms.ColumnHeader columnHeader6; + private System.Windows.Forms.ColumnHeader columnHeader5; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPlan.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmPlan.cs new file mode 100644 index 0000000..41907ef --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPlan.cs @@ -0,0 +1,393 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Windows.Forms; +using MESClassLibrary.BLL.BasicInfo; +using MESClassLibrary.BLL.Log; +using MESClassLibrary.BLL.PunchAndWeld; +using MESClassLibrary.Model; + +namespace PunchAndWeld +{ + public partial class FrmPlan : Form + { + public FrmPlan() + { + InitializeComponent(); + } + + public int Flag = 0; + + private void FrmPlan_Load(object sender, EventArgs e) + { + InitDevice(); + InitPart(); + InitButton(); + + this.listView1.Columns.Clear(); + this.listView1.Columns.Add("ID", 0, HorizontalAlignment.Center); + this.listView1.Columns.Add("设备名称", 300, HorizontalAlignment.Center); + this.listView1.Columns.Add("零件号", 200, HorizontalAlignment.Center); + this.listView1.Columns.Add("零件名称", 400, HorizontalAlignment.Center); + this.listView1.Columns.Add("数量", 150, HorizontalAlignment.Center); + this.listView1.Columns.Add("完成数", 0, HorizontalAlignment.Center); + + InitList(); + } + + private void InitButton() + { + btAdd.Enabled = true; + btEdit.Enabled = true; + btDel.Enabled = true; + panel1.Visible = false; + comboBox1.SelectedIndex = -1; + comboBox2.SelectedIndex = -1; + textBox1.Text = ""; + comboBox1.Enabled = true; + comboBox2.Enabled = true; + } + + private void InitDevice() + { + try + { + PunchDeviceBLL bll=new PunchDeviceBLL(); + + comboBox1.Items.Clear(); + DataTable dt = bll.SearchInfo(); + if (dt != null && dt.Rows.Count > 0) + { + for (int i = 0; i < dt.Rows.Count; i++) + { + comboBox1.Items.Add(dt.Rows[i]["DeviceName"].ToString()); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void InitPart() + { + try + { + PunchPartBLL bll = new PunchPartBLL(); + PunchDeviceBLL pbll = new PunchDeviceBLL(); + + comboBox2.Items.Clear(); + + DataTable dt1 = pbll.SearchInfo(); + if (dt1 != null && dt1.Rows.Count > 0) + { + for (int i = 0; i < dt1.Rows.Count; i++) + { + DataTable dt = bll.SearchPunchPart(dt1.Rows[i]["DeviceNo"].ToString()); + if (dt != null && dt.Rows.Count > 0) + { + for (int j = 0; j < dt.Rows.Count; j++) + { + comboBox2.Items.Add(dt.Rows[j]["ProductName"].ToString()); + } + } + } + } + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void InitList() + { + try + { + PunchPlanBLL bll=new PunchPlanBLL(); + + this.listView1.Items.Clear(); + DataTable dt = bll.SearchAllPlan(); + if (dt != null && dt.Rows.Count > 0) + { + for (int i = 0; i < dt.Rows.Count; i++) + { + ListViewItem lvi = new ListViewItem(dt.Rows[i]["ID"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["DeviceName"].ToString()); //后面添加的Item都为SubItems ,即为子项 + lvi.SubItems.Add(dt.Rows[i]["PartNo"].ToString()); //后面添加的Item都为SubItems ,即为子项 + lvi.SubItems.Add(dt.Rows[i]["ProductName"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["PlanCount"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["CompleteCount"].ToString()); + listView1.Items.Add(lvi); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void btAdd_Click(object sender, EventArgs e) + { + btAdd.Enabled = false; + btEdit.Enabled = false; + btDel.Enabled = false; + panel1.Visible = true; + Flag = 1; + } + + private void btSave_Click(object sender, EventArgs e) + { + try + { + ProductBLL pbll=new ProductBLL(); + PunchDeviceBLL dbll=new PunchDeviceBLL(); + PunchPlanBLL planbll=new PunchPlanBLL(); + PunchPlanModel md=new PunchPlanModel(); + + string ProductID = "", deviceNo = ""; + bool IsFlag = false; + + #region 验证数据有效性 + + if (comboBox1.Text == "") + { + MessageBox.Show("设备名称不能为空!", "提示", MessageBoxButtons.OK); + return; + } + + if (comboBox2.Text == "") + { + MessageBox.Show("零件名称不能为空!", "提示", MessageBoxButtons.OK); + return; + } + + if (IsNumeric(textBox1.Text.Trim()) == false) + { + MessageBox.Show("数量必须为整数!", "提示", MessageBoxButtons.OK); + textBox1.Focus(); + return; + } + + #endregion + + #region 获取信息 + + DataTable dt1 = pbll.SearchInfoByProductName(comboBox2.Text.Trim()); + if (dt1 != null && dt1.Rows.Count > 0) + { + ProductID = dt1.Rows[0]["ProductID"].ToString(); + } + else + { + ProductID = ""; + } + + DataTable dt2 = dbll.SearchDeviceNo(comboBox1.Text.Trim()); + if (dt2 != null && dt2.Rows.Count > 0) + { + deviceNo = dt2.Rows[0]["DeviceNo"].ToString(); + } + else + { + deviceNo = ""; + } + + #endregion + + #region 添加保存 + + if (Flag == 1) + { + md.ID = Guid.NewGuid().ToString(); + md.DeviceNo = deviceNo; + md.ProductID = ProductID; + md.PlanCount = Convert.ToInt32(textBox1.Text.Trim()); + + if (planbll.AddInfo(md) == true) + { + MessageBox.Show("添加成功!", "提示", MessageBoxButtons.OK); + } + else + { + MessageBox.Show("添加失败!", "提示", MessageBoxButtons.OK); + return; + } + } + + #endregion + + #region 编辑保存 + + if (Flag == 2) + { + + if (Convert.ToInt32(textBox1.Text.Trim()) < + Convert.ToInt32(listView1.SelectedItems[0].SubItems[5].Text)) + { + MessageBox.Show("编辑失败,计划数不能小于生产数!", "提示", MessageBoxButtons.OK); + textBox1.Focus(); + return; + } + + md.ID = listView1.SelectedItems[0].Text; + md.PlanCount = Convert.ToInt32(textBox1.Text.Trim()); + + if (planbll.UpdateInfo(md) == true) + { + MessageBox.Show("编辑成功!", "提示", MessageBoxButtons.OK); + } + else + { + MessageBox.Show("编辑失败!", "提示", MessageBoxButtons.OK); + return; + } + } + + #endregion + + InitList(); + InitButton(); + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private bool IsNumeric(string str) + { + System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex(@"^[0-9]\d*$"); + return reg1.IsMatch(str); + } + + private void listView1_SelectedIndexChanged(object sender, EventArgs e) + { + try + { + if (listView1.SelectedItems.Count != 0) + { + btAdd.Enabled = true; + btEdit.Enabled = true; + btDel.Enabled = true; + + comboBox1.Text= listView1.SelectedItems[0].SubItems[1].Text; + comboBox2.Text = listView1.SelectedItems[0].SubItems[3].Text; + textBox1.Text = listView1.SelectedItems[0].SubItems[4].Text; + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void btEdit_Click(object sender, EventArgs e) + { + try + { + if (listView1.SelectedItems.Count == 0) + { + MessageBox.Show("请选择要编辑的行!", "提示", MessageBoxButtons.OK); + return; + } + + Flag = 2; + panel1.Visible = true; + btAdd.Enabled = false; + btEdit.Enabled = false; + btDel.Enabled = false; + comboBox1.Enabled = false; + comboBox2.Enabled = false; + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void btCal_Click(object sender, EventArgs e) + { + InitList(); + InitButton(); + } + + private void btDel_Click(object sender, EventArgs e) + { + try + { + PunchPlanBLL bll=new PunchPlanBLL(); + PunchPlanModel md=new PunchPlanModel(); + + if (listView1.SelectedItems.Count == 0) + { + MessageBox.Show("请选择要删除的行!", "提示", MessageBoxButtons.OK); + return; + } + + DialogResult result=MessageBox.Show("确定要删除该计划?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + if (Convert.ToInt32(listView1.SelectedItems[0].SubItems[5].Text) != 0) + { + MessageBox.Show("该计划已开始生产,无法删除!", "提示", MessageBoxButtons.OK); + return; + } + else + { + md.ID = listView1.SelectedItems[0].Text; + bll.DelInfo(md); + } + InitList(); + InitButton(); + } + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) + { + try + { + PunchPartBLL bll = new PunchPartBLL(); + PunchDeviceBLL pbll = new PunchDeviceBLL(); + + comboBox2.Items.Clear(); + + DataTable dt1 = pbll.SearchDeviceNo(comboBox1.Text.Trim()); + if (dt1 != null && dt1.Rows.Count > 0) + { + for (int i = 0; i < dt1.Rows.Count; i++) + { + DataTable dt = bll.SearchPunchPart(dt1.Rows[i]["DeviceNo"].ToString()); + if (dt != null && dt.Rows.Count > 0) + { + for (int j = 0; j < dt.Rows.Count; j++) + { + comboBox2.Items.Add(dt.Rows[j]["ProductName"].ToString()); + } + } + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPlan.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmPlan.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPlan.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPreNoPlan.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmPreNoPlan.Designer.cs new file mode 100644 index 0000000..14b208d --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPreNoPlan.Designer.cs @@ -0,0 +1,218 @@ +namespace PunchAndWeld +{ + partial class FrmPreNoPlan + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.ColumnHeader 零件号; + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmPreNoPlan)); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.listView2 = new System.Windows.Forms.ListView(); + this.零件信息 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.完成数量 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.listView1 = new System.Windows.Forms.ListView(); + this.零件名称 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.状态 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.button3 = new System.Windows.Forms.Button(); + this.label9 = new System.Windows.Forms.Label(); + 零件号 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.SuspendLayout(); + // + // 零件号 + // + 零件号.Text = "零件号"; + 零件号.Width = 150; + // + // textBox2 + // + this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(860, 230); + this.textBox2.Margin = new System.Windows.Forms.Padding(2); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(369, 39); + this.textBox2.TabIndex = 23; + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("微软雅黑", 18F); + this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.label2.Location = new System.Drawing.Point(750, 219); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(139, 59); + this.label2.TabIndex = 22; + this.label2.Text = "扫描零件"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(389, 260); + this.textBox1.Margin = new System.Windows.Forms.Padding(2); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(300, 84); + this.textBox1.TabIndex = 21; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(39, 264); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(298, 76); + this.label1.TabIndex = 20; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // listView2 + // + this.listView2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(46)))), ((int)(((byte)(64))))); + this.listView2.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.零件信息, + this.完成数量}); + this.listView2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.listView2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.listView2.GridLines = true; + this.listView2.Location = new System.Drawing.Point(33, 380); + this.listView2.Name = "listView2"; + this.listView2.Size = new System.Drawing.Size(655, 571); + this.listView2.TabIndex = 24; + this.listView2.UseCompatibleStateImageBehavior = false; + this.listView2.View = System.Windows.Forms.View.Details; + // + // 零件信息 + // + this.零件信息.Text = "产品信息"; + this.零件信息.Width = 500; + // + // 完成数量 + // + this.完成数量.Text = "完成数量"; + this.完成数量.Width = 150; + // + // listView1 + // + this.listView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(46)))), ((int)(((byte)(64))))); + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + 零件号, + this.零件名称, + this.状态}); + this.listView1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.listView1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.listView1.FullRowSelect = true; + this.listView1.GridLines = true; + this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listView1.Location = new System.Drawing.Point(756, 281); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(473, 656); + this.listView1.TabIndex = 25; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // 零件名称 + // + this.零件名称.Text = "零件名称"; + this.零件名称.Width = 200; + // + // 状态 + // + this.状态.Text = "状态"; + this.状态.Width = 150; + // + // button3 + // + this.button3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); + this.button3.Font = new System.Drawing.Font("微软雅黑", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(1019, 124); + this.button3.Margin = new System.Windows.Forms.Padding(2); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(210, 50); + this.button3.TabIndex = 26; + this.button3.Text = "补打标签"; + this.button3.UseVisualStyleBackColor = false; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.ForeColor = System.Drawing.Color.White; + this.label9.Location = new System.Drawing.Point(915, 7); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(338, 67); + this.label9.TabIndex = 27; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // FrmPreNoPlan + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage"))); + this.ClientSize = new System.Drawing.Size(1264, 985); + this.Controls.Add(this.label9); + this.Controls.Add(this.button3); + this.Controls.Add(this.listView1); + this.Controls.Add(this.listView2); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.label2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmPreNoPlan"; + this.Text = "预装不下计划版本"; + this.Load += new System.EventHandler(this.FrmPreNoPlan_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ListView listView2; + private System.Windows.Forms.ColumnHeader 零件信息; + private System.Windows.Forms.ColumnHeader 完成数量; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader 零件名称; + private System.Windows.Forms.ColumnHeader 状态; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Label label9; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPreNoPlan.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmPreNoPlan.cs new file mode 100644 index 0000000..6d25a92 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPreNoPlan.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using MESClassLibrary.BLL.Log; +using PunchAndWeld.DataSouce; + +namespace PunchAndWeld +{ + public partial class FrmPreNoPlan : Form + { + public FrmPreNoPlan() + { + InitializeComponent(); + } + + private void FrmPreNoPlan_Load(object sender, EventArgs e) + { + string stationNo = ConfigurationManager.AppSettings["StationNo"]; + label1.Text = ProScreenFunc.GetStation(stationNo); + Control.CheckForIllegalCrossThreadCalls = false; + + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + + textBox1.TabIndex = 0; + textBox2.Enabled = false; + button3.Enabled = ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true" ? true : false; + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + label9.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPreNoPlan.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmPreNoPlan.resx new file mode 100644 index 0000000..7bfe126 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPreNoPlan.resx @@ -0,0 +1,863 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + + + 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 + 7TCuPTKqWyI4iICgCaTaI5EiZIllY/2hHWB0A4d2xz+ChGa5WG83rGkvNy4M6JveDrdiX2LUVLOfsc3Y + 10lHAPZto328Ma3ZRvzbDq/a6wrN+poS88YyoX0ucqPcctr70f7v9vuaE/PG9uLf2O94rb0P3fewve4o + cRyxjVgm5m1K/H97uXbpXjPtcxHrby8X05prJa67CJXb72s3fOue15ieO6+5cDqnva1Yd6yn2e++9zf+ + u32ectdTn/ZyzXZim8312Zy7vuXiPWgv1+xjnMNcENycr1i+/bnObSNeixL7EOevWTb+bc8X225K+/VG + +xj7wum+dQ9RtBlfd/Xd6bV//hfrR3/jt2XvPvua+rXc/AAwCwJAAC5bMQow/gLwvmc/VD+yFY8D148C + v+q2QYWATYlOefv16Mw3gUjToe8uEyUCkPZyoQkVuss12qFJO0hoOvW55eL/26U9bVwYkJse62uOL0KR + 3H62tUOL7rkK47bRt29956pZX5RuCNLel1wQk9MOVZqSe++6Ylu5c9OEPVHar7e3011/rKcpMV97WlPi + PORCnyY8jOnt1yPEav9/ownEugHlqPMa62pK33rblvL+Rumex6bkrqc+ufexXWJ67v0atVwcQ9911Jyv + 5v1q/j93vM171ISuffO2r9/267Hf3UC1Pb1t1H4MSf27f1duSMff8fn6D0t9sWpHHvjMD6Y/8+rbPfoL + QFEEgABc1qLz9jVX3Zme/s6fqTtun/vqH6e7Tj+dXnLtcP4qcFOi8x6d6aZj3ZRcINOUbrgSRoU8bc2j + gk1Y0F6uL5hqQp0o7dfHhQG56e0Aa5JRdO3QIhfYjNtG30imeL0p7dApt762pow6x225ACjev1xYNIl2 + UNM+H812ukFdo++4mtL3WPMk57IRxzTuWolgrv16oymTnNeVvL+hKcsNAONYQhNCNiX3mW2/L33L5a6H + 5nw156Mdkra30f58NJ+nZtn4t5mvO2+zL0142JTYt1Gfy751D038nuzN++5Nn/6n/z59vjqkd/7kr6eX + 3bAtOy8AzJIAEIDL3stv3J6uvPvw3F8Frjpw7/7Z306vvG13HQ7m5i/NqBKd61yw0ZRcSNLu3I8KNrod + +EmWa4cP7dfHhQG56c3vtuVCzJxx+5fbRjt0ac/b1ZT2+WzWlzvHk0zvavYlSju4au9vnzjeCNSabXZL + +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 + rX82Xb/leLp284l09V2H05V37E9X3LYXYLHb91X1w4F09d1H0vVbT6Ubtp1KJz/91y6pU1Yq6ryo+6IO + vHbryXTlDALACB/vOPzwFALAxQ69/dvT5qpDv3HPPemuHWfShq0n0h1bjgF0HE8bqi/Id+08mzbuu7ce + BXh8Ct8Po86Luq99A+aKDfl6ciUEgABAI9eul2BNA8D462s3776QTk47AHz+W9M1m4+lqzYfT6++61B6 + 1R370yurzj7AIrfvq+qHA+mKu4+ka7aerDqHJ6cSAEadF3XfDTvPV3XT8XRVVS/l6shpuqna/q1VB/j0 + Cz9XdYh/PJ34xCqLdVYd7f3v+I65DvbdR+tz+/Jb96SX3bwLYLFbdlf1w970qg0H01Wbjqerq+9tZz7/ + N+p6JFvHLFPUeVH3RR3Y3IARAAIA05Rr10uwpgFg3Hm9ae+96c5Tz6aN596QNl94c9py8a1p631vrf/d + cvH5tOXetyzZ5sqme55Ld599fbrz5DPp1sOPput3nJkLAauO9hV3HsjuD3CZ27C/rh8isLpm64k6oLvj + +NPprtNVHXX+jXN1VNQzUTdNZK4ua+q0WH7juTfWdd5Ney+k67afTldvOlpt82B+f6bo+h1n0817LqRD + 7/7udOAd35EOvvM708F3fVc6VIl/a/HaMh14x59L+9/27WnHM59I1287ma7ZcmIuCFT/Ajl1/XswXbXx + aP398Mbqe9vBd1X109u//cU6KrTrqAks1Gl1vfQddZ1385576jqw+V4Y287u0woIAAGARq5dL8GaBoDX + Vh3CuU7ovem2gw+mO448mjYce7z+cfz4dyVur9Z126EHq072xXTDrnPp2urL5NXVl8or7zqoAwrkLQSA + h9LVm4+n67afSTfuvifdsu++dNvhh9OGo49l65tx7jz+RP1v1HFR10WdF3Vf1IGzCsWu23oy3bjnQrp5 + 1/l0x4EH0p3VvsUP499diX/vOv54uuvYY0sWv60Vv+16+4H70827z6cbqk58fQNmkxswwAjt+je+H+48 + n27cfjrdsvdCuqP6Pnfn0aqOinom6qaJzNVld5+Y+zfquDsOPlDXeTfuuacOGes/ABI3YASAAMAU5dr1 + EqxpABiBXHSA41Hg+C2s+D2WW6uO6K0HHky3Vp3kZauWv2V/1fncd7HuvEcnvn7Mru5oH5zKjz0D60B0 + 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 + KFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS + 5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWu + XS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1 + EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+B + ABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggA + AQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAA + gEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAY + FAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEER + AAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEg + AFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIA + pcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCq + XLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq1 + 6yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLte + AgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQ + AAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEg + AACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIA + MCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACD + IgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgC + QACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAE + AEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACg + VLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqV + a9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2 + vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dL + IAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQC + QAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAE + AGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAA + BkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQ + BIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUA + CACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAA + QKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACU + Kteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly + 7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteu + l0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJ + BIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AA + CADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAA + AAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADA + oAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyK + ABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgA + AYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAA + KFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS + 5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWu + XS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1 + EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+B + ABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggA + AQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAA + gEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAY + FAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEER + AAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEg + AFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIA + pcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCq + XLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq1 + 6yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLte + AgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQ + AAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEg + AACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIA + MCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACD + IgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgC + QACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAE + AEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACg + VLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqV + a9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2 + vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dL + IAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQC + QAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAE + AGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAA + BkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQ + BIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUA + CACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAA + QKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACU + Kteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly + 7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteu + l0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJ + BIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AA + CADAoAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAA + AAyKABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADA + oAgAAYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyK + ABAAKFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgA + AYBS5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAA + KFWuXS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS + 5dr1EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWu + XS+BABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1 + EggAAQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+B + ABAAgEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggA + AQAYFAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAA + gEERAAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAY + FAEgAFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEER + AAIApcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEg + AFCqXLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIA + pcq16yUQAAIAMCgCQACgVLl2vQQCQAAABkUACACUKteul0AACADAoAgAAYBS5dr1EggAAQAYFAEgAFCq + XLteAgEgAACDIgAEAEqVa9dLIAAEAGBQBIAAQKly7XoJBIAAAAyKABAAKFWuXS+BABAAgEERAAIApcq1 + 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 + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPrintOrder.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmPrintOrder.Designer.cs new file mode 100644 index 0000000..c7c01a1 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPrintOrder.Designer.cs @@ -0,0 +1,131 @@ +namespace PunchAndWeld +{ + partial class FrmPrintOrder + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.listView1 = new System.Windows.Forms.ListView(); + this.序号 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.零件号 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.数量 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.button2 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // listView1 + // + this.listView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(46)))), ((int)(((byte)(64))))); + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.序号, + this.零件号, + this.数量}); + this.listView1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.listView1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.listView1.GridLines = true; + this.listView1.Location = new System.Drawing.Point(46, 85); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(939, 436); + this.listView1.TabIndex = 7; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // 序号 + // + this.序号.Text = "序号"; + // + // 零件号 + // + this.零件号.Text = "零件号"; + this.零件号.Width = 200; + // + // 数量 + // + this.数量.Text = "数量"; + this.数量.Width = 200; + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.textBox1.Location = new System.Drawing.Point(160, 37); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(441, 35); + this.textBox1.TabIndex = 6; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.label1.Location = new System.Drawing.Point(70, 40); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(75, 28); + this.label1.TabIndex = 5; + this.label1.Text = "订单号"; + // + // button2 + // + this.button2.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(115)))), ((int)(((byte)(193))))); + this.button2.Location = new System.Drawing.Point(702, 40); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(78, 35); + this.button2.TabIndex = 9; + this.button2.Text = "打印"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // FrmPrintOrder + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(46)))), ((int)(((byte)(64))))); + this.ClientSize = new System.Drawing.Size(1030, 554); + this.Controls.Add(this.listView1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.Controls.Add(this.button2); + this.Name = "FrmPrintOrder"; + this.Text = "打印订单"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader 序号; + private System.Windows.Forms.ColumnHeader 零件号; + private System.Windows.Forms.ColumnHeader 数量; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button button2; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPrintOrder.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmPrintOrder.cs new file mode 100644 index 0000000..782fa77 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPrintOrder.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Windows.Forms; +using gregn6Lib; +using MESClassLibrary.BLL.Log; +using PunchAndWeld.DataSouce; + +namespace PunchAndWeld +{ + public partial class FrmPrintOrder : Form + { + public FrmPrintOrder() + { + InitializeComponent(); + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + this.listView1.Items.Clear(); + DataTable dt = ProScreenFunc.GetPlanInfoByOrderNo(textBox1.Text.Trim()); + if (dt != null && dt.Rows.Count > 0) + { + for (int i = 0; i < dt.Rows.Count; i++) + { + ListViewItem lvi = new ListViewItem(dt.Rows[i]["OrderNo"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["PartNo"].ToString()); //后面添加的Item都为SubItems ,即为子项 + lvi.SubItems.Add(dt.Rows[i]["PartName2"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["OrderCount"].ToString()); + listView1.Items.Add(lvi); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + } + + private void button2_Click(object sender, EventArgs e) + { + try + { + string filename = System.AppDomain.CurrentDomain.BaseDirectory + "订单.grf"; + + DataTable headTable = new DataTable(); + headTable.Columns.Add("OrderNo"); + DataRow row = headTable.NewRow(); + + row["OrderNo"] = textBox1.Text.Trim(); + string reportName = ConfigurationManager.AppSettings["PrinterName"]; + + headTable.Rows.Add(row); + + DataTable dtDetail = ProScreenFunc.DetailOrderNo(textBox1.Text.Trim()); + ReportHelper rp = new ReportHelper(filename, headTable, dtDetail, (int)GRPaperOrientation.grpoDefault, 1, reportName); + + rp.Report.Print(false); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmPrintOrder.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmPrintOrder.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmPrintOrder.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen.Designer.cs new file mode 100644 index 0000000..fc0de06 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen.Designer.cs @@ -0,0 +1,424 @@ +namespace PunchAndWeld +{ + partial class FrmProScreen + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.button6 = new System.Windows.Forms.Button(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.button7 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(1450, 678); + this.button1.Margin = new System.Windows.Forms.Padding(2); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(193, 75); + this.button1.TabIndex = 0; + this.button1.Text = "上一计划"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button2 + // + this.button2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button2.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(1680, 678); + this.button2.Margin = new System.Windows.Forms.Padding(2); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(193, 75); + this.button2.TabIndex = 1; + this.button2.Text = "下一计划"; + this.button2.UseVisualStyleBackColor = false; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button3 + // + this.button3.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(1450, 876); + this.button3.Margin = new System.Windows.Forms.Padding(2); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(193, 75); + this.button3.TabIndex = 2; + this.button3.Text = "补打标签"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // button4 + // + this.button4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button4.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button4.Location = new System.Drawing.Point(1450, 777); + this.button4.Margin = new System.Windows.Forms.Padding(2); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(193, 75); + this.button4.TabIndex = 3; + this.button4.Text = "产品不良"; + this.button4.UseVisualStyleBackColor = false; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // button5 + // + this.button5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button5.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button5.Location = new System.Drawing.Point(1680, 777); + this.button5.Margin = new System.Windows.Forms.Padding(2); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(193, 75); + this.button5.TabIndex = 4; + this.button5.Text = "不良转合格"; + this.button5.UseVisualStyleBackColor = false; + this.button5.Click += new System.EventHandler(this.button5_Click); + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(62, 947); + this.textBox1.Margin = new System.Windows.Forms.Padding(2); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(453, 69); + this.textBox1.TabIndex = 5; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(105, 153); + this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(380, 70); + this.label1.TabIndex = 6; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(105, 353); + this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(380, 68); + this.label2.TabIndex = 7; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.White; + this.label3.Location = new System.Drawing.Point(105, 553); + this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(380, 67); + this.label3.TabIndex = 8; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.ForeColor = System.Drawing.Color.White; + this.label4.Location = new System.Drawing.Point(62, 741); + this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(453, 79); + this.label4.TabIndex = 9; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label6 + // + this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label6.BackColor = System.Drawing.Color.Transparent; + this.label6.Font = new System.Drawing.Font("微软雅黑", 180F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.ForeColor = System.Drawing.Color.Blue; + this.label6.Location = new System.Drawing.Point(570, 311); + this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(832, 355); + this.label6.TabIndex = 11; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label7 + // + this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label7.BackColor = System.Drawing.Color.Transparent; + this.label7.Font = new System.Drawing.Font("微软雅黑", 160F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); + this.label7.Location = new System.Drawing.Point(575, 751); + this.label7.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(827, 302); + this.label7.TabIndex = 12; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label8 + // + this.label8.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label8.BackColor = System.Drawing.Color.Transparent; + this.label8.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.ForeColor = System.Drawing.Color.White; + this.label8.Location = new System.Drawing.Point(1420, 172); + this.label8.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(489, 92); + this.label8.TabIndex = 13; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.ForeColor = System.Drawing.Color.White; + this.label9.Location = new System.Drawing.Point(1420, 73); + this.label9.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(489, 101); + this.label9.TabIndex = 14; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.Click += new System.EventHandler(this.label9_Click); + // + // label10 + // + this.label10.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label10.BackColor = System.Drawing.Color.Transparent; + this.label10.Font = new System.Drawing.Font("微软雅黑", 150F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.label10.Location = new System.Drawing.Point(1415, 353); + this.label10.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(494, 323); + this.label10.TabIndex = 15; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // button6 + // + this.button6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button6.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button6.Location = new System.Drawing.Point(1680, 876); + this.button6.Margin = new System.Windows.Forms.Padding(2); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(193, 75); + this.button6.TabIndex = 16; + this.button6.Text = "计划查询"; + this.button6.UseVisualStyleBackColor = false; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // timer1 + // + this.timer1.Interval = 5000; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // textBox2 + // + this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(766, 540); + this.textBox2.Margin = new System.Windows.Forms.Padding(2); + this.textBox2.Multiline = true; + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(453, 69); + this.textBox2.TabIndex = 17; + this.textBox2.Visible = false; + this.textBox2.DoubleClick += new System.EventHandler(this.textBox2_DoubleClick); + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // textBox3 + // + this.textBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(782, 554); + this.textBox3.Margin = new System.Windows.Forms.Padding(2); + this.textBox3.Multiline = true; + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(453, 69); + this.textBox3.TabIndex = 18; + this.textBox3.Visible = false; + this.textBox3.DoubleClick += new System.EventHandler(this.textBox3_DoubleClick); + this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown); + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.Transparent; + this.label5.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.ForeColor = System.Drawing.Color.White; + this.label5.Location = new System.Drawing.Point(1420, 17); + this.label5.Margin = new System.Windows.Forms.Padding(0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(489, 40); + this.label5.TabIndex = 19; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // textBox4 + // + this.textBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(801, 569); + this.textBox4.Margin = new System.Windows.Forms.Padding(2); + this.textBox4.Multiline = true; + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(453, 69); + this.textBox4.TabIndex = 20; + this.textBox4.Visible = false; + this.textBox4.DoubleClick += new System.EventHandler(this.textBox4_DoubleClick); + this.textBox4.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox4_KeyDown); + // + // button7 + // + this.button7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.button7.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button7.Location = new System.Drawing.Point(1450, 975); + this.button7.Margin = new System.Windows.Forms.Padding(2); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(193, 75); + this.button7.TabIndex = 21; + this.button7.Text = "计划完成"; + this.button7.UseVisualStyleBackColor = false; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // FrmProScreen + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = global::PunchAndWeld.Properties.Resources._20200428213144; + this.ClientSize = new System.Drawing.Size(1920, 1080); + this.Controls.Add(this.button7); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.label5); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.button6); + this.Controls.Add(this.label10); + this.Controls.Add(this.label9); + this.Controls.Add(this.label8); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.button5); + this.Controls.Add(this.button4); + this.Controls.Add(this.button3); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Margin = new System.Windows.Forms.Padding(2); + this.Name = "FrmProScreen"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "FrmProScreen"; + this.Load += new System.EventHandler(this.FrmProScreen_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.Button button7; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen.cs new file mode 100644 index 0000000..521b5c0 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen.cs @@ -0,0 +1,1004 @@ +using gregn6Lib; +using PunchAndWeld.DataSouce; +using PunchAndWeld.WebReference; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using DBUtility; +using MESClassLibrary.BLL.Log; + +namespace PunchAndWeld +{ + public partial class FrmProScreen : Form + { + private GridppReport Report = new GridppReport(); + private string oneBarCode = "", stationNo = "", stationId = ""; + + public FrmProScreen() + { + InitializeComponent(); + } + + private void FrmProScreen_Load(object sender, EventArgs e) + { + try + { + var serverUrl = "http://10.60.101.10:8013/"; + var updateXmlFileName = "ProScreenUpdate.xml"; + var updater = new AutoUpdater(); + if (updater.CheckUpdateLoad(serverUrl, updateXmlFileName)) + { + Environment.Exit(0); + } + + label5.Text = "当前版本:" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); + stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + stationId = ProScreenFunc.GetStationId(stationNo); + label1.Text = ProScreenFunc.GetStation(stationNo); + + Control.CheckForIllegalCrossThreadCalls = false; + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + + LoadScreen(); + textBox1.TabIndex = 0; + textBox1.Select(); + + if (ConfigurationManager.AppSettings["IsHaveVisual"].ToString() == "1") + { + SqlStart(); + } + + timer1.Enabled = true; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + label9.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + CheckPartAndProduct(); + } + } + + public void LoadScreen() + { + string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreen(stationNo); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + } + + public void SetPage(DataTable dt) + { + textBox2.Text = ""; + textBox2.Visible = false; + textBox3.Text = ""; + textBox3.Visible = false; + textBox4.Text = ""; + textBox4.Visible = false; + + if (dt != null && dt.Rows.Count > 0) + { + label1.Text = dt.Rows[0]["Des"].ToString(); + label2.Text = dt.Rows[0]["OrderNo"].ToString(); + label3.Text = dt.Rows[0]["PartNo"].ToString(); + label4.Text = dt.Rows[0]["ProductName"].ToString(); + //label5.Text = dt.Rows[0]["Des"].ToString(); + label6.Text = dt.Rows[0]["OrderCount"].ToString(); + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + label8.Text = dt.Rows[0]["OrderNo"].ToString().Substring(0, 1) + "班"; + label10.Text = dt.Rows[0]["BadCount"].ToString(); + + this.Tag = dt.Rows[0]["ID"].ToString(); + textBox1.Tag = dt.Rows[0]["ProductID1"].ToString(); + textBox1.Text = ""; + } + } + + public void LoadPlanScreen(string id, string plan) + { + string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreenPlan(id, stationNo, plan); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + else + { + if(plan == "下一计划") + MessageBox.Show("无下一计划"); + else + MessageBox.Show("无上一计划"); + } + } + + public void CheckPartAndProduct() + { + textBox1.SelectAll(); + string barcode = textBox1.Text.Trim(); + + if (barcode.Length != 20) + { + MessageBox.Show("条码位数有误,请重新扫描!"); + textBox1.SelectAll(); + return; + } + oneBarCode = barcode; + + if (!ProScreenFunc.CanScan(this.Tag.ToString().Trim())) + { + MessageBox.Show("完成数量等于计划数量,不允许扫描!"); + textBox1.SelectAll(); + return; + } + + if (ConfigurationManager.AppSettings["IsHaveVisual"].ToString() == "1") + { + DataTable dt = ProScreenFunc.NotPrintBarCode(stationId); + if (dt!=null && dt.Rows.Count > 0) + { + MessageBox.Show("存在未打印标签的产品,不允许扫描!条码为:" + dt.Rows[0]["barcode"].ToString() ); + textBox1.SelectAll(); + return; + } + } + + + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + + if (ProScreenFunc.HaveScan(barcode)) + { + if (ProScreenFunc.IsBad(barcode)) + { + MessageBox.Show("条码为" + barcode + "的蒙皮为不良品,请操作不良转合格!"); + textBox1.SelectAll(); + return; + } + + DialogResult result = MessageBox.Show("条码为" + barcode + "的蒙皮已经装配,是否重新装配?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + + ScanBarcode(barcode); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + else + { + return; + } + } + else + { + ScanBarcode(barcode); + } + + + } + + private void ScanBarcode(string barcode) + { + string productID = this.textBox1.Tag.ToString().Trim(); + string[] codeSpecial = ProScreenFunc.GetSpecialStockNo(); + string code = barcode.Substring(0, 10); + if (codeSpecial.Contains(code) && !ProScreenFunc.HaveInspect(barcode) && ProScreenFunc.IsFBC(code, this.label3.Text.Trim())) + { + if (ProScreenFunc.HaveScan(barcode)) + { + string productID2 = ProScreenFunc.GetProductID(barcode); + if (!ProScreenFunc.CheckPartAndProduct(productID, productID2)) + { + this.InsLog(productID, productID2); + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + this.textBox1.Text = ""; + return; + } + else + { + SavePunch(barcode, productID2, productID, base.Tag.ToString().Trim()); + if (ConfigurationManager.AppSettings["IsHaveVisual"].ToString() != "1") + { + this.AfterScanBarcode1(barcode, productID2, productID, base.Tag.ToString().Trim()); + } + + } + } + else + { + string productID2 = ProScreenFunc.GetProductID(code, ""); + SavePunch(barcode, productID2, productID, base.Tag.ToString().Trim()); + if (ConfigurationManager.AppSettings["IsHaveVisual"].ToString() != "1") + { + this.AfterScanBarcode1(barcode, productID2, productID, base.Tag.ToString().Trim()); + } + } + } + else + { + string productID2 = ProScreenFunc.GetProductID(barcode); + if (string.IsNullOrWhiteSpace(productID2)) + { + string stockNo = barcode.Substring(0, 10); + productID2 = ProScreenFunc.GetProductID(stockNo, ""); + } + if (!ProScreenFunc.CheckPartAndProduct(productID, productID2)) + { + this.InsLog(productID, productID2); + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + this.textBox1.Text = ""; + return; + } + else + { + ScanAll.ScanResult = false; + OtherPart parts = ProScreenFunc.HaveOtherPart(this.label1.Text.Trim(), productID); + if (parts != null && (!string.IsNullOrWhiteSpace(parts.productID3) || !string.IsNullOrWhiteSpace(parts.productID4) || !string.IsNullOrWhiteSpace(parts.productID5))) + { + FrmProScreen3 frm3 = new FrmProScreen3(parts); + frm3.ShowDialog(); + } + else + { + ScanAll.ScanResult = true; + } + if (ScanAll.ScanResult) + { + + if (ConfigurationManager.AppSettings["IsHaveVisual"].ToString() != "1") + { + this.AfterScanBarcode1(barcode, productID2, productID, base.Tag.ToString().Trim()); + } + else + { + SavePunch(barcode, productID2, productID, base.Tag.ToString().Trim()); + } + } + } + } + } + + private void AfterScanBarcode() + { + string ID = "", barcode = "", productID2="", productID1=""; + + DataTable dt1 = ProScreenFunc.HavePrint(stationId); + if (dt1 != null && dt1.Rows.Count > 0) + { + if (dt1.Rows[0]["PlanID"].ToString() != base.Tag.ToString().Trim()) + { + MessageBox.Show("产品和计划不匹配"); + return; + } + else + { + ID = dt1.Rows[0]["ID"].ToString(); + barcode = dt1.Rows[0]["barcode"].ToString(); + oneBarCode = barcode; + productID2 = dt1.Rows[0]["BcpID"].ToString(); + productID1 = dt1.Rows[0]["ZcID"].ToString(); + } + } + else + { + return; + } + + this.Invoke((EventHandler) (delegate + { + try + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", + MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + partNo = label3.Text.Trim(); + //2020-11-11 由原来的datetime.Now.ToString("yyyyMMdd")修改成计划的录入时间 + batchNo = ProScreenFunc.GetPlanTime(base.Tag.ToString().Trim()).ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + bool aa = webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + if (aa) + { + + ProScreenFunc.AddCompleteCount(this.Tag.ToString().Trim()); + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + string path = ""; + if (label3.Text.Trim().Contains("A2477900588-")) + { + path = Application.StartupPath + @"\aaa1.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize1); + } + else + { + path = Application.StartupPath + @"\aaa.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize); + } + + Report.Register(""); + Report.LoadFromFile(path); + + //Report.DesignPaperOrientation = GRPaperOrientation.grpoLandscape; + //report.PrintPreview(true); + Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + LogHelper.WriteLog("条码号:" + barcode + "工位:" + label1.Text.Trim() + "打印时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")); + ProScreenFunc.UpdatePrintTime(ID); + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount(this.Tag.ToString().Trim()); + } + + } + else + { + MessageBox.Show("WMS入库失败,请稍后重新扫描"); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), + MethodBase.GetCurrentMethod().Name); + } + + ProScreenFunc.SavePartAndProductBF(barcode, productID2, productID1, label2.Text, label8.Text, + base.Tag.ToString().Trim()); + })); + } + + private void AfterScanBarcode1(string barcode, string productID2, string productID1, string planID) + { + + try + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + partNo = label3.Text.Trim(); + batchNo = ProScreenFunc.GetPlanTime(planID).ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + bool aa = webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + if (aa) + { + + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo(label3.Text.Trim(), time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + label3.Text.Trim() + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + ProScreenFunc.SavePartAndProduct1(barcode, productID2, productID1, label2.Text, label8.Text, planID, sn,stationId, ConfigurationManager.AppSettings["StationDescription"]); + ProScreenFunc.SaveZcCode(barcode, label3.Text.Trim()); + ProScreenFunc.AddCompleteCount(this.Tag.ToString().Trim()); + + + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + string path = ""; + if (label3.Text.Trim().Contains("A2477900588-") || label3.Text.Trim().Contains("A2477900000-")) + { + path = Application.StartupPath + @"\aaa1.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize1); + } + else + { + path = Application.StartupPath + @"\aaa.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize); + } + + Report.Register(""); + Report.LoadFromFile(path); + + //Report.DesignPaperOrientation = GRPaperOrientation.grpoLandscape; + //report.PrintPreview(true); + Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount(this.Tag.ToString().Trim()); + } + } + else + { + MessageBox.Show("WMS入库失败,请稍后重新扫描"); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + + ProScreenFunc.SavePartAndProductBF(barcode, productID2, productID1, label2.Text, label8.Text, planID); + } + + private void SavePunch(string barcode, string productID2, string productID1, string planID) + { + #region 存储 + + ProScreenFunc.SavePartAndProduct(barcode, productID2, productID1, label2.Text, label8.Text, planID, stationId, ConfigurationManager.AppSettings["StationDescription"]); + ProScreenFunc.SaveZcCode(barcode, label3.Text.Trim()); + + #endregion + } + + private void ReportInitialize() + { + Report.ParameterByName("oneBarCode").Value = oneBarCode; + Report.ParameterByName("zcPartNo").Value = label3.Text.Trim(); + Report.ParameterByName("zcName").Value = label4.Text.Trim(); + } + + private void ReportInitialize1() + { + string barcode = textBox1.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + DateTime time = DateTime.Now; + if (label3.Text.Trim().Contains("A2477900588-")) + { + Report.ParameterByName("Des").Value = "X247S"; + } + if (label3.Text.Trim().Contains("A2477900000-")) + { + Report.ParameterByName("Des").Value = "H247S"; + } + Report.ParameterByName("PartNo").Value = label3.Text.Trim(); + Report.ParameterByName("PartName").Value = label4.Text.Trim(); + Report.ParameterByName("BatchNo").Value = time.ToString("yyMMdd"); + string tmp = ProScreenFunc.SerialNo(label3.Text.Trim(), time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + label3.Text.Trim() + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + Report.ParameterByName("SerialNo").Value = sn; + Report.ParameterByName("BarCode").Value = sn + ";24;2217;;.0;" + time.ToString("yyyy/MM/dd"); + Report.ParameterByName("oneBarCode").Value = barcode; + //Report.ParameterByName("PartName").Value = label4.Text.Trim(); + //Report.ParameterByName("BatchNo").Value = time.ToString("yyMMdd"); + //string tmp = ProScreenFunc.SerialNo(label3.Text.Trim(), time.ToString("yyMMdd")); + //string sn = ""; + //if (tmp == "") + //{ + // sn = + // label3.Text.Trim() + "." + time.ToString("yyMMdd") + ".000001"; + //} + //else + //{ + // sn = tmp.Substring(0, tmp.Length - 6) + + // (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + // .PadLeft(6, '0'); + //} + + //Report.ParameterByName("SerialNo").Value = sn; + //Report.ParameterByName("BarCode").Value = sn + ";24;2217;;.0;" + time.ToString("yyyy/MM/dd"); + } + + private void label9_Click(object sender, EventArgs e) + { + SqlDependency.Stop(SqlHelper.SqlConnString); + Environment.Exit(0); + } + + /// + /// 下一计划 + /// + /// + /// + private void button2_Click(object sender, EventArgs e) + { + if (this.Tag.ToString() == "") + { + MessageBox.Show("无下一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + } + + /// + /// 上一计划 + /// + /// + /// + private void button1_Click(object sender, EventArgs e) + { + if (this.Tag.ToString() == "") + { + MessageBox.Show("无上一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "上一计划"); + } + + } + + /// + /// 产品不良 + /// + /// + /// + private void button4_Click(object sender, EventArgs e) + { + textBox2.Visible = true; + textBox2.Focus(); + } + + /// + /// 不良转合格 + /// + /// + /// + private void button5_Click(object sender, EventArgs e) + { + textBox3.Visible = true; + textBox3.Focus(); + } + + private void button6_Click(object sender, EventArgs e) + { + FrmProScreen2 frm = new FrmProScreen2(); + frm.Show(); + } + + private void timer1_Tick(object sender, EventArgs e) + { + string orderNo = label2.Text.Trim(); + if (string.IsNullOrWhiteSpace(orderNo)) + { + LoadScreen(); + } + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox2.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + + if (ProScreenFunc.HaveScan(barcode)) + { + + if (ProScreenFunc.IsBad(barcode)) + { + MessageBox.Show("该条码已经做过报废处理!", "提示"); + textBox2.Text = ""; + textBox2.Visible = false; + return; + } + + string planID = ProScreenFunc.GetPlanIDByBarcode(barcode); + ProScreenFunc.AddBadCount(planID.Trim()); + ProScreenFunc.SubCompleteCount(planID.Trim()); + + ProScreenFunc.SaveRecord2(barcode, "0", planID); + + DataTable dt = ProScreenFunc.GetProScreenByPlanID(this.Tag.ToString().Trim()); + SetPage(dt); + + //label10.Text = (Tools.NumericParse.StringToInt(label10.Text.Trim()) + 1).ToString(); + //label7.Text = (Tools.NumericParse.StringToInt(label7.Text.Trim()) - 1).ToString(); + + textBox2.Text = ""; + textBox2.Visible = false; + } + else + { + MessageBox.Show("还未进行装配!", "提示"); + + textBox2.Text = ""; + textBox2.Visible = false; + } + + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + else if (e.KeyCode == Keys.Escape) + { + textBox2.Text = ""; + textBox2.Visible = false; + } + + } + + private void textBox3_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox3.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + if (ProScreenFunc.IsBad(barcode)) + { + + string planID = ProScreenFunc.GetPlanIDByBarcode(barcode); + if (!ProScreenFunc.CheckPlanCompleted(planID)) + { + ProScreenFunc.SubBadCount(planID.Trim()); + ProScreenFunc.AddCompleteCount(planID.Trim()); + + ProScreenFunc.SaveRecord2(barcode, "1", planID); + } + else + { + string partNo = ProScreenFunc.GetPaintCode(barcode); + if (partNo == label3.Text.Trim()) + { + ProScreenFunc.AddCompleteCount(Tag.ToString().Trim()); + ProScreenFunc.SaveRecord2(barcode, "1", Tag.ToString().Trim()); + } + else + { + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描!"); + } + } + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + + DataTable dt = ProScreenFunc.GetProScreenByPlanID(this.Tag.ToString().Trim()); + SetPage(dt); + } + + textBox3.Text = ""; + textBox3.Visible = false; + } + else + { + MessageBox.Show("该条码未做过报废处理,无法转合格!", "提示"); + textBox3.Text = ""; + textBox3.Visible = false; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + + } + else if(e.KeyCode == Keys.Escape) + { + textBox3.Text = ""; + textBox3.Visible = false; + } + } + + private void textBox3_DoubleClick(object sender, EventArgs e) + { + textBox3.Text = ""; + textBox3.Visible = false; + } + + private void textBox2_DoubleClick(object sender, EventArgs e) + { + textBox2.Text = ""; + textBox2.Visible = false; + } + + private void button3_Click(object sender, EventArgs e) + { + DialogResult result = MessageBox.Show("是否补打标签?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + textBox4.Text = ""; + textBox4.Visible = true; + textBox4.Focus(); + + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + return; + } + }; + pass.ShowDialog(); + } + else + { + return; + } + } + + public void InsLog(string productID1, string productID2) + { + LogHelper.WriteSysLogBase("一码到底【当前扫描的零件与总成不匹配】:productID1:" + productID1 + ",productID2:" + productID2 + ",工位:" + label1.Text + ",计划ID:" + this.Tag.ToString(), MethodBase.GetCurrentMethod().Name); + } + + private void button7_Click(object sender, EventArgs e) + { + ProScreenFunc.SetPlanComplete(this.Tag.ToString().Trim()); + LoadScreen(); + } + + private void textBox4_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox4.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + DataTable dtHg = ProScreenFunc.GetGh(barcode); + if (dtHg == null || dtHg.Rows.Count < 1) + { + MessageBox.Show("未装配,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + + DataTable dtBl = ProScreenFunc.GetBl(barcode); + if (dtBl != null && dtBl.Rows.Count > 0) + { + DateTime hgTime = (DateTime)Tools.NumericParse.StringToDateTime("1900-01-01 00:00:00"); + DataTable dtHG1 = ProScreenFunc.GetHG_New(barcode); + if (dtHG1 != null && dtHG1.Rows.Count > 0) + { + hgTime = (DateTime)Tools.NumericParse.StringToDateTime(dtHG1.Rows[0]["CreateTime"].ToString()); + } + + DateTime blTime = (DateTime)Tools.NumericParse.StringToDateTime(dtBl.Rows[0]["createTime"].ToString()); + if (DateTime.Compare(blTime, hgTime) > 0) + { + MessageBox.Show("产品不良,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + } + + + LogSysBLL.AddInfo("条码:" + barcode + "补打标签", MethodBase.GetCurrentMethod()); + + string zcID = dtHg.Rows[0]["ZcID"].ToString(); + ZcPrintLabel zl = ProScreenFunc.GetZcPrintLabel(zcID); + if (zl != null && zl.zcPartNo != null && zl.zcName != null) + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + if (zl.zcPartNo.Contains("A2477900588-") || zl.zcPartNo.Contains("A2477900000-")) + { + string path = System.Windows.Forms.Application.StartupPath + @"\aaa1.grf"; + + GridppReport Report2 = new GridppReport(); + Report2.Register(""); + Report2.LoadFromFile(path); + if (zl.zcPartNo.Contains("A2477900588-")) + { + Report2.ParameterByName("Des").Value = "X247S"; + } + if (zl.zcPartNo.Contains("A2477900000-")) + { + Report2.ParameterByName("Des").Value = "H247S"; + } + Report2.ParameterByName("PartNo").Value = zl.zcPartNo; + Report2.ParameterByName("PartName").Value = zl.zcName; + string sn = dtHg.Rows[0]["SerialNo"].ToString(); + Report2.ParameterByName("SerialNo").Value = sn; + string[] tmp = sn.Split('.'); + Report2.ParameterByName("BarCode").Value = sn + ";24;2217;;.0;" + tmp[1]; + Report2.ParameterByName("oneBarCode").Value = barcode; + Report2.ParameterByName("BatchNo").Value = tmp[1]; + Report2.Print(false); + textBox4.SelectAll(); + } + else + { + string path = System.Windows.Forms.Application.StartupPath + @"\aaa.grf"; + + GridppReport Report1 = new GridppReport(); + Report1.Register(""); + Report1.LoadFromFile(path); + Report1.ParameterByName("oneBarCode").Value = barcode; + Report1.ParameterByName("zcPartNo").Value = zl.zcPartNo; + Report1.ParameterByName("zcName").Value = zl.zcName; + Report1.Print(false); + textBox4.SelectAll(); + } + } + } + else + { + MessageBox.Show("根据总成号找不到对应名称,请维护基础数据!"); + textBox4_DoubleClick(sender, e); + return; + } + + } + catch (Exception ex) + { + textBox4_DoubleClick(sender, e); + } + } + else if (e.KeyCode == Keys.Escape) + { + textBox4_DoubleClick(sender, e); + } + + + } + + private void textBox4_DoubleClick(object sender, EventArgs e) + { + textBox4.Text = ""; + textBox4.Visible = false; + } + + private void SqlStart() + { + try + { + SqlDependency.Start(SqlHelper.SqlConnString); + SqlDependencyWatch(); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(),MethodBase.GetCurrentMethod().Name); + } + } + + private void SqlDependencyWatch() + { + //string sSQL = "SELECT [ToVisual] FROM [dbo].[tb_Punch_Code_Record] where StationId='"+ stationId +@"'"; + string sSQL = "SELECT [ToVisual] FROM [dbo].[tb_Punch_Code_Record] where StationId='"+ stationId +@"'"; + + using (SqlConnection connection = new SqlConnection(SqlHelper.SqlConnString)) + { + using (SqlCommand command = new SqlCommand(sSQL, connection)) + { + command.CommandType = CommandType.Text; + connection.Open(); + SqlDependency dependency = new SqlDependency(command); + dependency.OnChange += new OnChangeEventHandler(SQLTableOnChange); + SqlDataReader sdr = command.ExecuteReader(); + } + } + } + + private void SQLTableOnChange(object sender, SqlNotificationEventArgs e) + { + SqlDependencyWatch(); + AfterScanBarcode(); + } + } +} + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen.resx new file mode 100644 index 0000000..0b1bdb9 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 46 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen2.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen2.Designer.cs new file mode 100644 index 0000000..9bc6b09 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen2.Designer.cs @@ -0,0 +1,346 @@ +namespace PunchAndWeld +{ + partial class FrmProScreen2 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.dateTimePicker2 = new System.Windows.Forms.DateTimePicker(); + this.label2 = new System.Windows.Forms.Label(); + this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker(); + this.label1 = new System.Windows.Forms.Label(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.CreateTime = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.OrderNo = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.PartNo = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.ProductName = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.OrderCount = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.CompleteCount = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.BadCount = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.IsFinish = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.ID = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.dataGridView1, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.03883F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 87.96117F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1280, 800); + this.tableLayoutPanel1.TabIndex = 0; + // + // panel1 + // + this.panel1.Controls.Add(this.button3); + this.panel1.Controls.Add(this.button2); + this.panel1.Controls.Add(this.button1); + this.panel1.Controls.Add(this.dateTimePicker2); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.dateTimePicker1); + this.panel1.Controls.Add(this.label1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(3, 3); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1274, 90); + this.panel1.TabIndex = 1; + // + // button3 + // + this.button3.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(798, 26); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(90, 40); + this.button3.TabIndex = 6; + this.button3.Text = "确定"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // button2 + // + this.button2.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(932, 27); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(90, 40); + this.button2.TabIndex = 5; + this.button2.Text = "关闭"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button1 + // + this.button1.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(672, 27); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(90, 40); + this.button1.TabIndex = 4; + this.button1.Text = "查询"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // dateTimePicker2 + // + this.dateTimePicker2.Format = System.Windows.Forms.DateTimePickerFormat.Short; + this.dateTimePicker2.Location = new System.Drawing.Point(456, 36); + this.dateTimePicker2.Name = "dateTimePicker2"; + this.dateTimePicker2.Size = new System.Drawing.Size(105, 23); + this.dateTimePicker2.TabIndex = 3; + // + // label2 + // + this.label2.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(415, 28); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(35, 38); + this.label2.TabIndex = 2; + this.label2.Text = "到"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // dateTimePicker1 + // + this.dateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Short; + this.dateTimePicker1.Location = new System.Drawing.Point(304, 36); + this.dateTimePicker1.Name = "dateTimePicker1"; + this.dateTimePicker1.Size = new System.Drawing.Size(105, 23); + this.dateTimePicker1.TabIndex = 1; + // + // label1 + // + this.label1.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(193, 28); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(125, 38); + this.label1.TabIndex = 0; + this.label1.Text = "查询时间:"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // dataGridView1 + // + this.dataGridView1.AllowUserToAddRows = false; + this.dataGridView1.AllowUserToDeleteRows = false; + this.dataGridView1.AllowUserToOrderColumns = true; + this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; + this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.CreateTime, + this.OrderNo, + this.PartNo, + this.ProductName, + this.OrderCount, + this.CompleteCount, + this.BadCount, + this.IsFinish, + this.ID}); + this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataGridView1.Location = new System.Drawing.Point(3, 99); + this.dataGridView1.MultiSelect = false; + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.ReadOnly = true; + this.dataGridView1.RowTemplate.Height = 30; + this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dataGridView1.Size = new System.Drawing.Size(1274, 698); + this.dataGridView1.TabIndex = 2; + // + // CreateTime + // + this.CreateTime.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.CreateTime.DataPropertyName = "CreateTime"; + dataGridViewCellStyle1.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CreateTime.DefaultCellStyle = dataGridViewCellStyle1; + this.CreateTime.Frozen = true; + this.CreateTime.HeaderText = "计划时间"; + this.CreateTime.MinimumWidth = 150; + this.CreateTime.Name = "CreateTime"; + this.CreateTime.ReadOnly = true; + this.CreateTime.Width = 150; + // + // OrderNo + // + this.OrderNo.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.OrderNo.DataPropertyName = "OrderNo"; + dataGridViewCellStyle2.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.OrderNo.DefaultCellStyle = dataGridViewCellStyle2; + this.OrderNo.FillWeight = 5.267243F; + this.OrderNo.Frozen = true; + this.OrderNo.HeaderText = "订单编号"; + this.OrderNo.MinimumWidth = 200; + this.OrderNo.Name = "OrderNo"; + this.OrderNo.ReadOnly = true; + this.OrderNo.Width = 200; + // + // PartNo + // + this.PartNo.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.PartNo.DataPropertyName = "PartNo"; + dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.PartNo.DefaultCellStyle = dataGridViewCellStyle3; + this.PartNo.FillWeight = 21.62265F; + this.PartNo.Frozen = true; + this.PartNo.HeaderText = "零件号"; + this.PartNo.MinimumWidth = 200; + this.PartNo.Name = "PartNo"; + this.PartNo.ReadOnly = true; + this.PartNo.Width = 200; + // + // ProductName + // + this.ProductName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.ProductName.DataPropertyName = "ProductName"; + dataGridViewCellStyle4.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ProductName.DefaultCellStyle = dataGridViewCellStyle4; + this.ProductName.FillWeight = 43.37886F; + this.ProductName.Frozen = true; + this.ProductName.HeaderText = "产品名称"; + this.ProductName.MinimumWidth = 400; + this.ProductName.Name = "ProductName"; + this.ProductName.ReadOnly = true; + this.ProductName.Width = 400; + // + // OrderCount + // + this.OrderCount.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.OrderCount.DataPropertyName = "OrderCount"; + dataGridViewCellStyle5.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.OrderCount.DefaultCellStyle = dataGridViewCellStyle5; + this.OrderCount.FillWeight = 87.44866F; + this.OrderCount.Frozen = true; + this.OrderCount.HeaderText = "订单数"; + this.OrderCount.MinimumWidth = 100; + this.OrderCount.Name = "OrderCount"; + this.OrderCount.ReadOnly = true; + // + // CompleteCount + // + this.CompleteCount.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.CompleteCount.DataPropertyName = "CompleteCount"; + dataGridViewCellStyle6.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CompleteCount.DefaultCellStyle = dataGridViewCellStyle6; + this.CompleteCount.FillWeight = 176.2806F; + this.CompleteCount.Frozen = true; + this.CompleteCount.HeaderText = "完成数"; + this.CompleteCount.MinimumWidth = 100; + this.CompleteCount.Name = "CompleteCount"; + this.CompleteCount.ReadOnly = true; + // + // BadCount + // + this.BadCount.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.BadCount.DataPropertyName = "BadCount"; + dataGridViewCellStyle7.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.BadCount.DefaultCellStyle = dataGridViewCellStyle7; + this.BadCount.FillWeight = 355.33F; + this.BadCount.Frozen = true; + this.BadCount.HeaderText = "不良数"; + this.BadCount.MinimumWidth = 100; + this.BadCount.Name = "BadCount"; + this.BadCount.ReadOnly = true; + // + // IsFinish + // + this.IsFinish.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.IsFinish.DataPropertyName = "IsFinish"; + dataGridViewCellStyle8.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.IsFinish.DefaultCellStyle = dataGridViewCellStyle8; + this.IsFinish.FillWeight = 10.672F; + this.IsFinish.Frozen = true; + this.IsFinish.HeaderText = "是否完成"; + this.IsFinish.MinimumWidth = 100; + this.IsFinish.Name = "IsFinish"; + this.IsFinish.ReadOnly = true; + this.IsFinish.Visible = false; + // + // ID + // + this.ID.DataPropertyName = "ID"; + this.ID.HeaderText = "ID"; + this.ID.Name = "ID"; + this.ID.ReadOnly = true; + this.ID.Visible = false; + // + // FrmProScreen2 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1280, 800); + this.Controls.Add(this.tableLayoutPanel1); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.Name = "FrmProScreen2"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "FrmProScreen2"; + this.Load += new System.EventHandler(this.FrmProScreen2_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.DateTimePicker dateTimePicker2; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.DateTimePicker dateTimePicker1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.DataGridViewTextBoxColumn CreateTime; + private System.Windows.Forms.DataGridViewTextBoxColumn OrderNo; + private System.Windows.Forms.DataGridViewTextBoxColumn PartNo; + private System.Windows.Forms.DataGridViewTextBoxColumn ProductName; + private System.Windows.Forms.DataGridViewTextBoxColumn OrderCount; + private System.Windows.Forms.DataGridViewTextBoxColumn CompleteCount; + private System.Windows.Forms.DataGridViewTextBoxColumn BadCount; + private System.Windows.Forms.DataGridViewTextBoxColumn IsFinish; + private System.Windows.Forms.DataGridViewTextBoxColumn ID; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen2.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen2.cs new file mode 100644 index 0000000..6965072 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen2.cs @@ -0,0 +1,97 @@ +using PunchAndWeld.DataSouce; +using System; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Windows.Forms; + +namespace PunchAndWeld +{ + public partial class FrmProScreen2 : Form + { + public FrmProScreen2() + { + InitializeComponent(); + } + + public event Action OkClick; + + private void FrmProScreen2_Load(object sender, EventArgs e) + { + #region 日期默认当天 + + dateTimePicker1.Text = DateTime.Now.ToShortDateString(); + dateTimePicker2.Text = DateTime.Now.ToShortDateString(); + + #endregion + + #region 查询 + + Query(dateTimePicker1.Value.ToString("yyyy-MM-dd").Trim(), dateTimePicker2.Value.ToString("yyyy-MM-dd").Trim()); + + #endregion + } + + private void button1_Click(object sender, EventArgs e) + { + #region 查询 + + Query(dateTimePicker1.Value.ToString("yyyy-MM-dd").Trim(), dateTimePicker2.Value.ToString("yyyy-MM-dd").Trim()); + + #endregion + } + + public void Query(string starttime, string endtime) + { + string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dtt = (DataTable)dataGridView1.DataSource; + if(dtt != null) + dtt.Rows.Clear(); + + DataTable dt = ProScreenFunc.QueryPlanDetail(starttime, endtime, stationNo); + dataGridView1.DataSource = dt; + //dataGridView1.AutoGenerateColumns = false; + ChangBackColor(); + } + + private void ChangBackColor() { + if (dataGridView1.Rows.Count > 0) + { + foreach (DataGridViewRow row in dataGridView1.Rows) + { + if (row.Cells["IsFinish"].Value.ToString() == "3") + { + row.DefaultCellStyle.ForeColor = Color.Green; + } + else + { + row.DefaultCellStyle.ForeColor = Color.Red; + } + } + } + } + + private void button2_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void button3_Click(object sender, EventArgs e) + { + if (dataGridView1.SelectedRows.Count == 0) + { + MessageBox.Show("请选择一个计划"); + return; + } + + int index = dataGridView1.CurrentRow.Index; //取得选中行的索引 + string id = dataGridView1.Rows[index].Cells["ID"].Value.ToString(); //获取单元格列名为‘Id’的值 + + if (OkClick != null) + { + OkClick(id); + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen2.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen2.resx new file mode 100644 index 0000000..f92408c --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen2.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen3.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen3.Designer.cs new file mode 100644 index 0000000..1e7c852 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen3.Designer.cs @@ -0,0 +1,287 @@ +namespace PunchAndWeld +{ + partial class FrmProScreen3 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.textBox5 = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.textBox6 = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + this.label1.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(12, 43); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(180, 40); + this.label1.TabIndex = 0; + this.label1.Text = "关键零件号1:"; + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(403, 40); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(486, 43); + this.textBox1.TabIndex = 1; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // textBox2 + // + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(403, 111); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(486, 43); + this.textBox2.TabIndex = 3; + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // label2 + // + this.label2.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(12, 114); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(180, 40); + this.label2.TabIndex = 2; + this.label2.Text = "关键零件号2:"; + // + // textBox3 + // + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(403, 186); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(486, 43); + this.textBox3.TabIndex = 5; + this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown); + // + // label3 + // + this.label3.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(12, 189); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(180, 40); + this.label3.TabIndex = 4; + this.label3.Text = "关键零件号3:"; + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(742, 470); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(147, 55); + this.button1.TabIndex = 6; + this.button1.Text = "关闭"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label4.Location = new System.Drawing.Point(184, 46); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(92, 35); + this.label4.TabIndex = 7; + this.label4.Text = "label4"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label5.Location = new System.Drawing.Point(184, 119); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(92, 35); + this.label5.TabIndex = 8; + this.label5.Text = "label5"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label6.Location = new System.Drawing.Point(184, 194); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(92, 35); + this.label6.TabIndex = 9; + this.label6.Text = "label6"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label7.Location = new System.Drawing.Point(184, 267); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(92, 35); + this.label7.TabIndex = 12; + this.label7.Text = "label7"; + // + // textBox4 + // + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(403, 259); + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(486, 43); + this.textBox4.TabIndex = 11; + this.textBox4.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox4_KeyDown); + // + // label8 + // + this.label8.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.Location = new System.Drawing.Point(12, 262); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(180, 40); + this.label8.TabIndex = 10; + this.label8.Text = "关键零件号4:"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label9.Location = new System.Drawing.Point(184, 341); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(92, 35); + this.label9.TabIndex = 15; + this.label9.Text = "label9"; + // + // textBox5 + // + this.textBox5.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox5.Location = new System.Drawing.Point(403, 333); + this.textBox5.Name = "textBox5"; + this.textBox5.Size = new System.Drawing.Size(486, 43); + this.textBox5.TabIndex = 14; + this.textBox5.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox5_KeyDown); + // + // label10 + // + this.label10.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.Location = new System.Drawing.Point(12, 336); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(180, 40); + this.label10.TabIndex = 13; + this.label10.Text = "关键零件号5:"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label11.Location = new System.Drawing.Point(184, 418); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(108, 35); + this.label11.TabIndex = 18; + this.label11.Text = "label11"; + // + // textBox6 + // + this.textBox6.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox6.Location = new System.Drawing.Point(403, 410); + this.textBox6.Name = "textBox6"; + this.textBox6.Size = new System.Drawing.Size(486, 43); + this.textBox6.TabIndex = 17; + this.textBox6.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox6_KeyDown); + // + // label12 + // + this.label12.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label12.Location = new System.Drawing.Point(12, 413); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(180, 40); + this.label12.TabIndex = 16; + this.label12.Text = "关键零件号6:"; + // + // FrmProScreen3 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(917, 543); + this.Controls.Add(this.label11); + this.Controls.Add(this.textBox6); + this.Controls.Add(this.label12); + this.Controls.Add(this.label9); + this.Controls.Add(this.textBox5); + this.Controls.Add(this.label10); + this.Controls.Add(this.label7); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.label8); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.label3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.label2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmProScreen3"; + this.Text = " "; + this.Load += new System.EventHandler(this.FrmProScreen3_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox textBox5; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.TextBox textBox6; + private System.Windows.Forms.Label label12; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen3.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen3.cs new file mode 100644 index 0000000..35e9598 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen3.cs @@ -0,0 +1,729 @@ +using PunchAndWeld.DataSouce; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace PunchAndWeld +{ + public partial class FrmProScreen3 : Form + { + OtherPart parts = new OtherPart(); + private static string productID3 = "", productID4 = "", productID5 = "", productID6 = "", productID7 = "", productID8 = ""; + int[] isCheck = new int[6] { 0, 0, 0, 0, 0, 0 }; + + public FrmProScreen3() + { + InitializeComponent(); + } + + public FrmProScreen3(OtherPart part) + { + InitializeComponent(); + parts = part; + } + + private void FrmProScreen3_Load(object sender, EventArgs e) + { + textBox1.Text = ""; + textBox2.Text = ""; + textBox3.Text = ""; + textBox4.Text = ""; + textBox5.Text = ""; + textBox6.Text = ""; + textBox1.Enabled = false; + textBox2.Enabled = false; + textBox3.Enabled = false; + textBox4.Enabled = false; + textBox5.Enabled = false; + textBox6.Enabled = false; + label4.Text = ""; + label5.Text = ""; + label6.Text = ""; + label7.Text = ""; + label9.Text = ""; + label11.Text = ""; + int[] isCheck = new int[6] { 0, 0, 0, 0, 0, 0 }; + label4.Text = ProScreenFunc.GetPartNoByID(parts.productID3); + label5.Text = ProScreenFunc.GetPartNoByID(parts.productID4); + label6.Text = ProScreenFunc.GetPartNoByID(parts.productID5); + + label7.Text = ProScreenFunc.GetPartNoByID(parts.productID6); + label9.Text = ProScreenFunc.GetPartNoByID(parts.productID7); + label11.Text = ProScreenFunc.GetPartNoByID(parts.productID8); + + + if (!string.IsNullOrWhiteSpace(parts.productID3)) + { + textBox1.Enabled = true; + } + if (!string.IsNullOrWhiteSpace(parts.productID4)) + { + textBox2.Enabled = true; + } + if (!string.IsNullOrWhiteSpace(parts.productID5)) + { + textBox3.Enabled = true; + } + + if (!string.IsNullOrWhiteSpace(parts.productID6)) + { + textBox4.Enabled = true; + } + if (!string.IsNullOrWhiteSpace(parts.productID7)) + { + textBox5.Enabled = true; + } + if (!string.IsNullOrWhiteSpace(parts.productID8)) + { + textBox6.Enabled = true; + } + + if (textBox1.Enabled ) + { + textBox1.Focus(); + } + else if (textBox2.Enabled ) + { + textBox2.Focus(); + } + else if (textBox3.Enabled ) + { + textBox3.Focus(); + } + else if (textBox4.Enabled ) + { + textBox4.Focus(); + } + else if (textBox5.Enabled ) + { + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Focus(); + } + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox1.Text.Trim(); + + productID3 = ProScreenFunc.GetProductID(barcode); + if (parts.productID3 == productID3) + { + isCheck[0] = 1; + if (textBox2.Enabled) + { + textBox2.Text = ""; + textBox2.Focus(); + } + else if (textBox3.Enabled) + { + textBox3.Text = ""; + textBox3.Focus(); + } + else if (textBox4.Enabled) + { + textBox4.Text = ""; + textBox4.Focus(); + } + else if (textBox5.Enabled) + { + textBox5.Text = ""; + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[1] = 1; + isCheck[2] = 1; + isCheck[3] = 1; + isCheck[4] = 1; + isCheck[5] = 1; + + #region 判断关键零件是否都校验 + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + #endregion + + ScanAll.ScanResult = true; + ScanAll.barCode1 = textBox1.Text.Trim(); + ScanAll.partNo1 = ProScreenFunc.GetPartNoByID(productID3); + ScanAll.barCode2 = textBox2.Text.Trim(); + ScanAll.partNo2 = ""; + ScanAll.barCode3 = textBox3.Text.Trim(); + ScanAll.partNo3 = ""; + + ScanAll.barCode4 = textBox4.Text.Trim(); + ScanAll.partNo4 = ""; + ScanAll.barCode5 = textBox5.Text.Trim(); + ScanAll.partNo5 = ""; + ScanAll.barCode6 = textBox6.Text.Trim(); + ScanAll.partNo6 = ""; + + this.Close(); + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox1.Text = ""; + } + } + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox2.Text.Trim(); + productID4 = ProScreenFunc.GetProductID(barcode); + if (parts.productID4 == productID4) + { + isCheck[1] = 1; + + if (textBox3.Enabled ) + { + textBox3.Text = ""; + textBox3.Focus(); + } + else if (textBox4.Enabled) + { + textBox4.Text = ""; + textBox4.Focus(); + } + else if (textBox5.Enabled) + { + textBox5.Text = ""; + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[2] = 1; + isCheck[3] = 1; + isCheck[4] = 1; + isCheck[5] = 1; + + #region 判断关键零件是否都校验 + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox2.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号54未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + #endregion + + ScanAll.ScanResult = true; + ScanAll.barCode1 = textBox1.Text.Trim(); + ScanAll.partNo1 = ProScreenFunc.GetPartNoByID(productID3); + ScanAll.barCode2 = textBox2.Text.Trim(); + ScanAll.partNo2 = ProScreenFunc.GetPartNoByID(productID4); + ScanAll.barCode3 = textBox3.Text.Trim(); + ScanAll.partNo3 = ""; + + ScanAll.barCode4 = textBox4.Text.Trim(); + ScanAll.partNo4 = ""; + ScanAll.barCode5 = textBox5.Text.Trim(); + ScanAll.partNo5 = ""; + ScanAll.barCode6 = textBox6.Text.Trim(); + ScanAll.partNo6 = ""; + this.Close(); + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox2.Text = ""; + } + } + } + + private void textBox3_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox3.Text.Trim(); + productID5 = ProScreenFunc.GetProductID(barcode); + if (parts.productID5 == productID5) + { + isCheck[2] = 1; + + if (textBox4.Enabled) + { + textBox4.Text = ""; + textBox4.Focus(); + } + else if (textBox5.Enabled) + { + textBox5.Text = ""; + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[3] = 1; + isCheck[4] = 1; + isCheck[5] = 1; + + #region 判断关键零件是否都校验 + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox3.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox3.Text = ""; + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + #endregion + + ScanAll.ScanResult = true; + ScanAll.barCode1 = textBox1.Text.Trim(); + ScanAll.partNo1 = ProScreenFunc.GetPartNoByID(productID3); + ScanAll.barCode2 = textBox2.Text.Trim(); + ScanAll.partNo2 = ProScreenFunc.GetPartNoByID(productID4); + ScanAll.barCode3 = textBox3.Text.Trim(); + ScanAll.partNo3 = ProScreenFunc.GetPartNoByID(productID5); + + ScanAll.barCode4 = textBox4.Text.Trim(); + ScanAll.partNo4 = ""; + ScanAll.barCode5 = textBox5.Text.Trim(); + ScanAll.partNo5 = ""; + ScanAll.barCode6 = textBox6.Text.Trim(); + ScanAll.partNo6 = ""; + this.Close(); + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox3.Text = ""; + } + } + } + + private void button1_Click(object sender, EventArgs e) + { + ScanAll.ScanResult = false; + this.Close(); + } + + private void textBox4_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox4.Text.Trim(); + productID6 = ProScreenFunc.GetProductID(barcode); + if (parts.productID6 == productID6) + { + isCheck[3] = 1; + + if (textBox5.Enabled) + { + textBox5.Text = ""; + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[4] = 1; + isCheck[5] = 1; + + #region 判断关键零件是否都校验 + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox4.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox4.Text = ""; + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox4.Text = ""; + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + #endregion + + ScanAll.ScanResult = true; + ScanAll.barCode1 = textBox1.Text.Trim(); + ScanAll.partNo1 = ProScreenFunc.GetPartNoByID(productID3); + ScanAll.barCode2 = textBox2.Text.Trim(); + ScanAll.partNo2 = ProScreenFunc.GetPartNoByID(productID4); + ScanAll.barCode3 = textBox3.Text.Trim(); + ScanAll.partNo3 = ProScreenFunc.GetPartNoByID(productID5); + + ScanAll.barCode4 = textBox4.Text.Trim(); + ScanAll.partNo4 = ProScreenFunc.GetPartNoByID(productID6); + ScanAll.barCode5 = textBox5.Text.Trim(); + ScanAll.partNo5 = ""; + ScanAll.barCode6 = textBox6.Text.Trim(); + ScanAll.partNo6 = ""; + this.Close(); + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox4.Text = ""; + } + } + } + + private void textBox5_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox5.Text.Trim(); + productID7 = ProScreenFunc.GetProductID(barcode); + if (parts.productID7 == productID7) + { + isCheck[4] = 1; + + if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[5] = 1; + + #region 判断关键零件是否都校验 + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox5.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox5.Text = ""; + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox5.Text = ""; + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + #endregion + + ScanAll.ScanResult = true; + ScanAll.barCode1 = textBox1.Text.Trim(); + ScanAll.partNo1 = ProScreenFunc.GetPartNoByID(productID3); + ScanAll.barCode2 = textBox2.Text.Trim(); + ScanAll.partNo2 = ProScreenFunc.GetPartNoByID(productID4); + ScanAll.barCode3 = textBox3.Text.Trim(); + ScanAll.partNo3 = ProScreenFunc.GetPartNoByID(productID5); + + ScanAll.barCode4 = textBox4.Text.Trim(); + ScanAll.partNo4 = ProScreenFunc.GetPartNoByID(productID6); + ScanAll.barCode5 = textBox5.Text.Trim(); + ScanAll.partNo5 = ProScreenFunc.GetPartNoByID(productID7); + ScanAll.barCode6 = textBox6.Text.Trim(); + ScanAll.partNo6 = ""; + this.Close(); + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox4.Text = ""; + } + } + } + + private void textBox6_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox6.Text.Trim(); + productID8 = ProScreenFunc.GetProductID(barcode); + if (parts.productID8 == productID8) + { + isCheck[5] = 1; + + #region 判断关键零件是否都校验 + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox6.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox6.Text = ""; + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox6.Text = ""; + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox6.Text = ""; + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox6.Text = ""; + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + #endregion + + ScanAll.ScanResult = true; + ScanAll.barCode1 = textBox1.Text.Trim(); + ScanAll.partNo1 = ProScreenFunc.GetPartNoByID(productID3); + ScanAll.barCode2 = textBox2.Text.Trim(); + ScanAll.partNo2 = ProScreenFunc.GetPartNoByID(productID4); + ScanAll.barCode3 = textBox3.Text.Trim(); + ScanAll.partNo3 = ProScreenFunc.GetPartNoByID(productID5); + + ScanAll.barCode4 = textBox4.Text.Trim(); + ScanAll.partNo4 = ProScreenFunc.GetPartNoByID(productID6); + ScanAll.barCode5 = textBox5.Text.Trim(); + ScanAll.partNo5 = ProScreenFunc.GetPartNoByID(productID7); + ScanAll.barCode6 = textBox6.Text.Trim(); + ScanAll.partNo6 = ProScreenFunc.GetPartNoByID(productID8); + this.Close(); + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox4.Text = ""; + } + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen3.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen3.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen3.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumper.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumper.Designer.cs new file mode 100644 index 0000000..c9949de --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumper.Designer.cs @@ -0,0 +1,516 @@ +namespace PunchAndWeld +{ + partial class FrmProScreenBumper + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.button6 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.lbFinish = new System.Windows.Forms.Label(); + this.lbOK = new System.Windows.Forms.Label(); + this.lbmode = new System.Windows.Forms.Label(); + this.lbState = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.PanelRD = new System.Windows.Forms.Panel(); + this.button7 = new System.Windows.Forms.Button(); + this.LbBoxR = new System.Windows.Forms.Label(); + this.txtBoxR = new System.Windows.Forms.TextBox(); + this.lbBoxL = new System.Windows.Forms.Label(); + this.txtBoxL = new System.Windows.Forms.TextBox(); + this.PanelRD.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(63, 152); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(453, 67); + this.label1.TabIndex = 0; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(63, 351); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(453, 67); + this.label2.TabIndex = 1; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.White; + this.label3.Location = new System.Drawing.Point(63, 551); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(453, 67); + this.label3.TabIndex = 2; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.ForeColor = System.Drawing.Color.White; + this.label4.Location = new System.Drawing.Point(63, 753); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(453, 67); + this.label4.TabIndex = 3; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label6 + // + this.label6.BackColor = System.Drawing.Color.Transparent; + this.label6.Font = new System.Drawing.Font("微软雅黑", 180F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.ForeColor = System.Drawing.Color.Blue; + this.label6.Location = new System.Drawing.Point(563, 301); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(831, 332); + this.label6.TabIndex = 5; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label7 + // + this.label7.BackColor = System.Drawing.Color.Transparent; + this.label7.Font = new System.Drawing.Font("微软雅黑", 160F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.ForeColor = System.Drawing.Color.Lime; + this.label7.Location = new System.Drawing.Point(570, 744); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(824, 288); + this.label7.TabIndex = 6; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.ForeColor = System.Drawing.Color.White; + this.label9.Location = new System.Drawing.Point(1430, 64); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(453, 67); + this.label9.TabIndex = 7; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.Click += new System.EventHandler(this.label9_Click); + // + // label8 + // + this.label8.BackColor = System.Drawing.Color.Transparent; + this.label8.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.ForeColor = System.Drawing.Color.White; + this.label8.Location = new System.Drawing.Point(1430, 185); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(453, 67); + this.label8.TabIndex = 8; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label10 + // + this.label10.BackColor = System.Drawing.Color.Transparent; + this.label10.Font = new System.Drawing.Font("微软雅黑", 150F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.ForeColor = System.Drawing.Color.Red; + this.label10.Location = new System.Drawing.Point(1423, 351); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(469, 304); + this.label10.TabIndex = 9; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(63, 944); + this.textBox1.Margin = new System.Windows.Forms.Padding(2); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(453, 71); + this.textBox1.TabIndex = 10; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // timer1 + // + this.timer1.Interval = 5000; + // + // textBox3 + // + this.textBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(778, 549); + this.textBox3.Margin = new System.Windows.Forms.Padding(2); + this.textBox3.Multiline = true; + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(469, 108); + this.textBox3.TabIndex = 20; + this.textBox3.Visible = false; + this.textBox3.DoubleClick += new System.EventHandler(this.textBox3_DoubleClick); + this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown); + // + // textBox2 + // + this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(762, 535); + this.textBox2.Margin = new System.Windows.Forms.Padding(2); + this.textBox2.Multiline = true; + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(469, 108); + this.textBox2.TabIndex = 19; + this.textBox2.Visible = false; + this.textBox2.DoubleClick += new System.EventHandler(this.textBox2_DoubleClick); + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // button6 + // + this.button6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button6.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button6.Location = new System.Drawing.Point(1759, 744); + this.button6.Margin = new System.Windows.Forms.Padding(2); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(154, 50); + this.button6.TabIndex = 26; + this.button6.Text = "计划查询"; + this.button6.UseVisualStyleBackColor = false; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // button5 + // + this.button5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button5.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button5.Location = new System.Drawing.Point(1572, 744); + this.button5.Margin = new System.Windows.Forms.Padding(2); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(180, 50); + this.button5.TabIndex = 25; + this.button5.Text = "不良转合格"; + this.button5.UseVisualStyleBackColor = false; + this.button5.Click += new System.EventHandler(this.button5_Click); + // + // button4 + // + this.button4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button4.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button4.Location = new System.Drawing.Point(1411, 742); + this.button4.Margin = new System.Windows.Forms.Padding(2); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(154, 50); + this.button4.TabIndex = 24; + this.button4.Text = "产品不良"; + this.button4.UseVisualStyleBackColor = false; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // button3 + // + this.button3.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(1759, 683); + this.button3.Margin = new System.Windows.Forms.Padding(2); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(154, 50); + this.button3.TabIndex = 23; + this.button3.Text = "补打标签"; + this.button3.UseVisualStyleBackColor = true; + // + // button2 + // + this.button2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button2.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(1572, 683); + this.button2.Margin = new System.Windows.Forms.Padding(2); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(180, 50); + this.button2.TabIndex = 22; + this.button2.Text = "下一计划"; + this.button2.UseVisualStyleBackColor = false; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(1411, 683); + this.button1.Margin = new System.Windows.Forms.Padding(2); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(154, 50); + this.button1.TabIndex = 21; + this.button1.Text = "上一计划"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // lbFinish + // + this.lbFinish.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbFinish.Location = new System.Drawing.Point(1572, 860); + this.lbFinish.Name = "lbFinish"; + this.lbFinish.Size = new System.Drawing.Size(341, 50); + this.lbFinish.TabIndex = 34; + this.lbFinish.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lbOK + // + this.lbOK.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbOK.Location = new System.Drawing.Point(1572, 919); + this.lbOK.Name = "lbOK"; + this.lbOK.Size = new System.Drawing.Size(341, 50); + this.lbOK.TabIndex = 33; + this.lbOK.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lbmode + // + this.lbmode.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbmode.Location = new System.Drawing.Point(1572, 978); + this.lbmode.Name = "lbmode"; + this.lbmode.Size = new System.Drawing.Size(341, 50); + this.lbmode.TabIndex = 32; + this.lbmode.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lbState + // + this.lbState.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbState.Location = new System.Drawing.Point(1572, 801); + this.lbState.Name = "lbState"; + this.lbState.Size = new System.Drawing.Size(341, 50); + this.lbState.TabIndex = 31; + this.lbState.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label5 + // + this.label5.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.Location = new System.Drawing.Point(1411, 801); + this.label5.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(154, 50); + this.label5.TabIndex = 28; + this.label5.Text = "设备状态"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label11 + // + this.label11.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label11.Location = new System.Drawing.Point(1411, 860); + this.label11.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(154, 50); + this.label11.TabIndex = 27; + this.label11.Text = "运行状态"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label12 + // + this.label12.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label12.Location = new System.Drawing.Point(1411, 919); + this.label12.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(154, 50); + this.label12.TabIndex = 29; + this.label12.Text = "冲焊状态"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label13 + // + this.label13.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label13.Location = new System.Drawing.Point(1411, 978); + this.label13.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(154, 50); + this.label13.TabIndex = 30; + this.label13.Text = "设备模式"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // PanelRD + // + this.PanelRD.Controls.Add(this.button7); + this.PanelRD.Controls.Add(this.LbBoxR); + this.PanelRD.Controls.Add(this.txtBoxR); + this.PanelRD.Controls.Add(this.lbBoxL); + this.PanelRD.Controls.Add(this.txtBoxL); + this.PanelRD.Location = new System.Drawing.Point(716, 524); + this.PanelRD.Name = "PanelRD"; + this.PanelRD.Size = new System.Drawing.Size(598, 114); + this.PanelRD.TabIndex = 35; + // + // button7 + // + this.button7.BackColor = System.Drawing.Color.LightCoral; + this.button7.Location = new System.Drawing.Point(497, 3); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(94, 32); + this.button7.TabIndex = 13; + this.button7.Text = "关闭"; + this.button7.UseVisualStyleBackColor = false; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // LbBoxR + // + this.LbBoxR.AutoSize = true; + this.LbBoxR.Location = new System.Drawing.Point(8, 87); + this.LbBoxR.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.LbBoxR.Name = "LbBoxR"; + this.LbBoxR.Size = new System.Drawing.Size(89, 12); + this.LbBoxR.TabIndex = 12; + this.LbBoxR.Text = "扫描右雷达支架"; + // + // txtBoxR + // + this.txtBoxR.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtBoxR.Location = new System.Drawing.Point(116, 83); + this.txtBoxR.Name = "txtBoxR"; + this.txtBoxR.Size = new System.Drawing.Size(475, 23); + this.txtBoxR.TabIndex = 11; + this.txtBoxR.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBoxR_KeyDown); + // + // lbBoxL + // + this.lbBoxL.AutoSize = true; + this.lbBoxL.Location = new System.Drawing.Point(8, 50); + this.lbBoxL.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.lbBoxL.Name = "lbBoxL"; + this.lbBoxL.Size = new System.Drawing.Size(89, 12); + this.lbBoxL.TabIndex = 10; + this.lbBoxL.Text = "扫描左雷达支架"; + // + // txtBoxL + // + this.txtBoxL.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtBoxL.Location = new System.Drawing.Point(116, 43); + this.txtBoxL.Name = "txtBoxL"; + this.txtBoxL.Size = new System.Drawing.Size(475, 23); + this.txtBoxL.TabIndex = 9; + this.txtBoxL.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBoxL_KeyDown); + // + // FrmProScreenBumper + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = global::PunchAndWeld.Properties.Resources._987654341; + this.ClientSize = new System.Drawing.Size(1920, 1080); + this.Controls.Add(this.PanelRD); + this.Controls.Add(this.lbFinish); + this.Controls.Add(this.lbOK); + this.Controls.Add(this.lbmode); + this.Controls.Add(this.lbState); + this.Controls.Add(this.label5); + this.Controls.Add(this.label11); + this.Controls.Add(this.label12); + this.Controls.Add(this.label13); + this.Controls.Add(this.button6); + this.Controls.Add(this.button5); + this.Controls.Add(this.button4); + this.Controls.Add(this.button3); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label10); + this.Controls.Add(this.label8); + this.Controls.Add(this.label9); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmProScreenBumper"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "FrmProScreenBumper"; + this.Load += new System.EventHandler(this.FrmProScreenBumper_Load); + this.PanelRD.ResumeLayout(false); + this.PanelRD.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label lbFinish; + private System.Windows.Forms.Label lbOK; + private System.Windows.Forms.Label lbmode; + private System.Windows.Forms.Label lbState; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Panel PanelRD; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Label LbBoxR; + private System.Windows.Forms.TextBox txtBoxR; + private System.Windows.Forms.Label lbBoxL; + private System.Windows.Forms.TextBox txtBoxL; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumper.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumper.cs new file mode 100644 index 0000000..2d5ec7b --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumper.cs @@ -0,0 +1,729 @@ +using MESClassLibrary.BLL.PunchAndWeld; +using OPCAutomation; +using PunchAndWeld.DataSouce; +using PunchAndWeld.WebReference; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; + +namespace PunchAndWeld +{ + public partial class FrmProScreenBumper : Form + { + OPCHelper opcHelper = new OPCHelper(); + private string strHostIP = ""; + private string strHostName = ""; + PunchAdressBLL bll = new PunchAdressBLL(); + public bool IsChangeBox = false; + public bool IsPass = false; + string stationNo = "", stationId=""; + + public FrmProScreenBumper() + { + InitializeComponent(); + } + + private void FrmProScreenBumper_Load(object sender, EventArgs e) + { + stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + label1.Text = ProScreenFunc.GetStation(stationNo); + stationId = ProScreenFunc.GetStationId(stationNo); + Control.CheckForIllegalCrossThreadCalls = false; + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + + LoadScreen(); + textBox1.TabIndex = 0; + textBox1.Select(); + + timer1.Enabled = true; + + try + { + if (opcHelper.CreateServer()) + { + if (opcHelper.ConnectServer(strHostIP, "Kepware.KEPServerEX.V6")) + { + opcHelper.Connected = true; + + opcHelper.opcGroups = opcHelper.opcServer.OPCGroups; + opcHelper.opcGroup1 = opcHelper.opcGroups.Add("DeviceRead"); + opcHelper.opcGroup2 = opcHelper.opcGroups.Add("DeviceWrite"); + opcHelper.SetGroupProperty(opcHelper.opcGroup1, 500); + opcHelper.SetGroupProperty(opcHelper.opcGroup2, 500); + + + opcHelper.opcItems1 = opcHelper.opcGroup1.OPCItems; + opcHelper.opcItems1.DefaultIsActive = true; + + DataTable dt = bll.SearchInfo(ConfigurationManager.AppSettings["DeviceNo"], 0); + if (dt != null && dt.Rows.Count > 0) + { + opcHelper.opcItemm1 = new OPCItem[dt.Rows.Count]; + for (int i = 0; i < dt.Rows.Count; i++) + { + opcHelper.opcItemm1[i] = opcHelper.opcItems1.AddItem(dt.Rows[i]["Address"].ToString(), i); + } + } + opcHelper.opcItems2 = opcHelper.opcGroup2.OPCItems; + opcHelper.opcItems2.DefaultIsActive = true; + + DataTable dt1 = bll.SearchInfo(ConfigurationManager.AppSettings["DeviceNo"], 1); + if (dt1 != null && dt1.Rows.Count > 0) + { + opcHelper.opcItemm2 = new OPCItem[dt1.Rows.Count]; + for (int i = 0; i < dt1.Rows.Count; i++) + { + opcHelper.opcItemm2[i] = opcHelper.opcItems2.AddItem(dt1.Rows[i]["Address"].ToString(), i); + } + } + opcHelper.opcGroup1.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(opcGroup1_DataChange); + + + if (opcHelper.ReadSingleValueFromOPC1(2).ToLower() == "true") + { + lbState.Text = "等待放件状态"; + } + else + { + lbState.Text = "设备未准备OK"; + } + if (opcHelper.ReadSingleValueFromOPC1(0).ToLower() == "true") + { + lbFinish.Text = "运行完成"; + //textBox1.Enabled = true; + } + else + { + lbFinish.Text = "正在运行"; + //textBox1.Enabled = false; + } + + if (opcHelper.ReadSingleValueFromOPC1(4).ToLower() == "true") + { + lbOK.Text = "NG"; + } + else + { + lbOK.Text = "OK"; + } + + if (opcHelper.ReadSingleValueFromOPC2(1) == 1) + { + lbmode.Text = "手动"; + } + else if (opcHelper.ReadSingleValueFromOPC2(1) == 2) + { + lbmode.Text = "复位"; + } + else if (opcHelper.ReadSingleValueFromOPC2(1) == 3) + { + lbmode.Text = "自动"; + } + else if (opcHelper.ReadSingleValueFromOPC2(1) == 4) + { + lbmode.Text = "半自动"; + } + + } + } + else + { + MessageBox.Show("创建OPC服务失败!", "提示", MessageBoxButtons.OK); + opcHelper.Connected = false; + LogHelper.WriteErrLogBase("工位:" + label1.Text + "创建OPC服务失败!", MethodBase.GetCurrentMethod().Name); + return; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + label9.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + + public void LoadScreen() + { + //string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreen(stationNo); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + } + + public void SetPage(DataTable dt) + { + textBox2.Text = ""; + textBox2.Visible = false; + textBox3.Text = ""; + textBox3.Visible = false; + txtBoxL.Text = ""; + txtBoxR.Text = ""; + PanelRD.Visible = false; + + if (dt != null && dt.Rows.Count > 0) + { + #region 页面赋值 + label1.Text = dt.Rows[0]["Des"].ToString(); + label2.Text = dt.Rows[0]["OrderNo"].ToString(); + label3.Text = dt.Rows[0]["PartNo"].ToString(); + label4.Text = dt.Rows[0]["ProductName"].ToString(); + //label5.Text = dt.Rows[0]["Des"].ToString(); + label6.Text = dt.Rows[0]["OrderCount"].ToString(); + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + label8.Text = dt.Rows[0]["OrderNo"].ToString().Substring(0, 1) + "班"; + label10.Text = dt.Rows[0]["BadCount"].ToString(); + + this.Tag = dt.Rows[0]["ID"].ToString(); //计划ID + textBox1.Tag = dt.Rows[0]["ProductID1"].ToString(); + textBox1.Text = ""; + #endregion + } + } + + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string sbState = lbState.Text.Trim(); + if (string.IsNullOrWhiteSpace(sbState) || sbState.Contains("未")) + { + MessageBox.Show("设备未准备OK"); + return; + } + else + { + CheckPartAndProduct(); + } + } + } + + public void CheckPartAndProduct() + { + textBox1.SelectAll(); + string barcode = textBox1.Text.Trim(); + + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + + if (ProScreenFunc.HaveScan(barcode)) + { + DialogResult result = MessageBox.Show("条码为" + barcode + "的蒙皮已经冲孔,是否重新冲孔?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + + ScanBarcode(barcode); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + else + { + return; + } + } + else + { + ScanBarcode(barcode); + } + + } + + private void ScanBarcode(string barcode) + { + string productID1 = textBox1.Tag.ToString().Trim(); + string productID2 = ""; + + string[] codeSpecial = { "2200000057", "2200000058" }; + string code = barcode.Substring(0, 10); + if (codeSpecial.Contains(code)) + { + productID2 = ProScreenFunc.GetProductID(code, ""); + AfterScanBarcode(barcode, productID2, productID1, this.Tag.ToString().Trim()); + } + else + { + if (barcode.Substring(0, 2) != "22") + { + string stockNo = barcode.Substring(0, 10); + productID2 = ProScreenFunc.GetProductID(stockNo, ""); + } + else + { + productID2 = ProScreenFunc.GetProductID(barcode); + } + + if (!ProScreenFunc.CheckPartAndProduct(productID1, productID2)) + { + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + textBox1.Text = ""; + } + else + { + + ScanAll.ScanResult = false; + + OtherPart parts = ProScreenFunc.HaveOtherPart(label1.Text.Trim(), productID1); + if ((parts != null) && ((!string.IsNullOrWhiteSpace(parts.productID3)) || (!string.IsNullOrWhiteSpace(parts.productID4)) || (!string.IsNullOrWhiteSpace(parts.productID5)))) + { + FrmProScreen3 frm3 = new FrmProScreen3(parts); + frm3.ShowDialog(); + } + else + { + ScanAll.ScanResult = true; + } + + + if (ScanAll.ScanResult) + { + AfterScanBarcode(barcode, productID2, productID1, this.Tag.ToString().Trim()); + } + } + } + } + + private void AfterScanBarcode(string barcode, string productID2, string productID1, string planID) + { + + if (IsChangeBox) + { + PanelRD.Visible = true; + } + + if (IsPass) + { + + try + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + partNo = label3.Text.Trim(); + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + + ProScreenFunc.SavePartAndProduct(barcode, productID2, productID1, label2.Text, label8.Text, planID,stationId, ConfigurationManager.AppSettings["StationDescription"]); + ProScreenFunc.SaveZcCode(barcode, label3.Text.Trim()); + + ProScreenFunc.AddCompleteCount(this.Tag.ToString().Trim()); + + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + label7.Text = (Tools.NumericParse.StringToInt(label7.Text.Trim()) + 1).ToString(); + } + + } + else + { + return; + } + } + + private void timer1_Tick(object sender, EventArgs e) + { + string orderNo = label2.Text.Trim(); + if (string.IsNullOrWhiteSpace(orderNo)) + { + LoadScreen(); + } + } + + public void LoadPlanScreen(string id, string plan) + { + //string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreenPlan(id, stationNo, plan); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + else + { + if (plan == "下一计划") + MessageBox.Show("无下一计划"); + else + MessageBox.Show("无上一计划"); + } + } + + #region 按钮 + + private void button1_Click(object sender, EventArgs e) + { + LoadPlanScreen(this.Tag.ToString(), "上一计划"); + } + + private void button2_Click(object sender, EventArgs e) + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + + private void button4_Click(object sender, EventArgs e) + { + textBox2.Visible = true; + textBox2.Focus(); + } + + private void button5_Click(object sender, EventArgs e) + { + textBox3.Visible = true; + textBox3.Focus(); + } + + private void button6_Click(object sender, EventArgs e) + { + FrmProScreen2 frm = new FrmProScreen2(); + frm.Show(); + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox2.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + + if (ProScreenFunc.HaveScan(barcode)) + { + + string planID = ProScreenFunc.GetPlanIDByBarcode(barcode); + ProScreenFunc.AddBadCount(planID.Trim()); + ProScreenFunc.SubCompleteCount(planID.Trim()); + + ProScreenFunc.SaveRecord2(barcode, "0", planID); + DataTable dt = ProScreenFunc.GetProScreenByPlanID(this.Tag.ToString().Trim()); + SetPage(dt); + + //label10.Text = (Tools.NumericParse.StringToInt(label10.Text.Trim()) + 1).ToString(); + //label7.Text = (Tools.NumericParse.StringToInt(label7.Text.Trim()) - 1).ToString(); + + textBox2.Text = ""; + textBox2.Visible = false; + } + else + { + MessageBox.Show("还未进行装配!", "提示"); + + textBox2.Text = ""; + textBox2.Visible = false; + } + + #endregion + + } + else if (e.KeyCode == Keys.Escape) + { + textBox2.Text = ""; + textBox2.Visible = false; + } + + } + + private void textBox3_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox3.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + + string planID = ProScreenFunc.GetPlanIDByBarcode(barcode); + ProScreenFunc.SubBadCount(planID.Trim()); + ProScreenFunc.AddCompleteCount(planID.Trim()); + + ProScreenFunc.SaveRecord2(barcode, "1", planID); + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + //label10.Text = (Tools.NumericParse.StringToInt(label10.Text.Trim()) - 1).ToString(); + //label7.Text = (Tools.NumericParse.StringToInt(label7.Text.Trim()) + 1).ToString(); + + DataTable dt = ProScreenFunc.GetProScreenByPlanID(this.Tag.ToString().Trim()); + SetPage(dt); + } + + textBox3.Text = ""; + textBox3.Visible = false; + } + else if (e.KeyCode == Keys.Escape) + { + textBox3.Text = ""; + textBox3.Visible = false; + } + } + + private void textBox3_DoubleClick(object sender, EventArgs e) + { + textBox3.Text = ""; + textBox3.Visible = false; + } + + private void textBox2_DoubleClick(object sender, EventArgs e) + { + textBox2.Text = ""; + textBox2.Visible = false; + } + + private void label9_Click(object sender, EventArgs e) + { + Environment.Exit(0); + } + + + void opcGroup1_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps) + { + try + { + for (int i = 1; i <= NumItems; i++) + { + int handle = Convert.ToInt32(ClientHandles.GetValue(i).ToString().Trim()); + string value = ItemValues.GetValue(i).ToString(); + string address = opcHelper.opcItemm1[(Convert.ToInt32(ClientHandles.GetValue(i)))].ItemID; + + + if (handle == 0) + { + if (value == "1" || value.ToUpper() == "TRUE") + { + lbFinish.Text = "运行完成"; + + } + else + { + lbFinish.Text = "正在运行"; + } + } + if (handle == 1) + { + if (value == "1") + { + lbmode.Text = "手动"; + } + else if (value == "2") + { + lbmode.Text = "复位"; + } + else if (value == "3") + { + lbmode.Text = "自动"; + } + else if (value == "4") + { + lbmode.Text = "半自动"; + } + } + + if (handle == 2) + { + if (value == "1" || value.ToUpper() == "TRUE") + { + lbState.Text = "等待放件状态"; + } + else + { + lbState.Text = "设备未准备OK"; + } + } + if (handle == 3 || handle == 4) + { + if (value == "1" || value.ToUpper() == "TRUE") + { + IsChangeBox = true; + } + else + { + IsChangeBox = false; + } + } + + if (handle == 5) + { + if (value == "1" || value.ToUpper() == "TRUE") + { + lbOK.Text = "NG"; + } + else + { + lbOK.Text = "OK"; + } + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void button7_Click(object sender, EventArgs e) + { + txtBoxL.Text = ""; + txtBoxR.Text = ""; + PanelRD.Visible = false; + } + + private void txtBoxL_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string[] barCode1 = txtBoxL.Text.Split('.'); + if (barCode1.Length > 0) + { + string[] part = barCode1[0].Split('-'); + if (part.Length == 2) + { + txtBoxR.Focus(); + } + else + { + MessageBox.Show("左雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxL.SelectAll(); + return; + } + } + else + { + MessageBox.Show("左雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxL.SelectAll(); + return; + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void txtBoxR_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string color1 = "", color2 = ""; + + string[] barCode2 = txtBoxR.Text.Split('.'); + + if (barCode2.Length > 0) + { + string[] part = barCode2[0].Split('-'); + if (part.Length == 2) + { + color2 = part[1].ToString(); + } + else + { + MessageBox.Show("右雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxR.SelectAll(); + return; + } + + string[] barCode1 = txtBoxL.Text.Split('.'); + string[] part1 = barCode1[0].Split('-'); + + color1 = part1[1].ToString(); + + if (color1 != color2) + { + MessageBox.Show("左右雷达支架不匹配,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxR.SelectAll(); + return; + } + else + { + IsPass = true; + + txtBoxL.Text = ""; + txtBoxR.Text = ""; + PanelRD.Visible = false; + + textBox1.Focus(); + } + } + else + { + MessageBox.Show("右雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxL.SelectAll(); + return; + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumper.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumper.resx new file mode 100644 index 0000000..1f666f2 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumper.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumperS.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumperS.Designer.cs new file mode 100644 index 0000000..2791685 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumperS.Designer.cs @@ -0,0 +1,538 @@ +namespace PunchAndWeld +{ + partial class FrmProScreenBumperS + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.button6 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.lbFinish = new System.Windows.Forms.Label(); + this.lbOK = new System.Windows.Forms.Label(); + this.lbmode = new System.Windows.Forms.Label(); + this.lbState = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.PanelRD = new System.Windows.Forms.Panel(); + this.button7 = new System.Windows.Forms.Button(); + this.LbBoxR = new System.Windows.Forms.Label(); + this.txtBoxR = new System.Windows.Forms.TextBox(); + this.lbBoxL = new System.Windows.Forms.Label(); + this.txtBoxL = new System.Windows.Forms.TextBox(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.PanelRD.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(43, 131); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(298, 76); + this.label1.TabIndex = 0; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(43, 319); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(298, 82); + this.label2.TabIndex = 1; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.White; + this.label3.Location = new System.Drawing.Point(43, 503); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(298, 87); + this.label3.TabIndex = 2; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.ForeColor = System.Drawing.Color.White; + this.label4.Location = new System.Drawing.Point(43, 699); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(298, 78); + this.label4.TabIndex = 3; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label6 + // + this.label6.BackColor = System.Drawing.Color.Transparent; + this.label6.Font = new System.Drawing.Font("微软雅黑", 180F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.ForeColor = System.Drawing.Color.Blue; + this.label6.Location = new System.Drawing.Point(376, 272); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(553, 332); + this.label6.TabIndex = 5; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label7 + // + this.label7.BackColor = System.Drawing.Color.Transparent; + this.label7.Font = new System.Drawing.Font("微软雅黑", 160F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.ForeColor = System.Drawing.Color.Lime; + this.label7.Location = new System.Drawing.Point(374, 683); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(555, 288); + this.label7.TabIndex = 6; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.ForeColor = System.Drawing.Color.White; + this.label9.Location = new System.Drawing.Point(941, 73); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(338, 67); + this.label9.TabIndex = 7; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.Click += new System.EventHandler(this.label9_Click); + // + // label8 + // + this.label8.BackColor = System.Drawing.Color.Transparent; + this.label8.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.ForeColor = System.Drawing.Color.White; + this.label8.Location = new System.Drawing.Point(941, 186); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(338, 67); + this.label8.TabIndex = 8; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label10 + // + this.label10.BackColor = System.Drawing.Color.Transparent; + this.label10.Font = new System.Drawing.Font("微软雅黑", 150F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.ForeColor = System.Drawing.Color.Red; + this.label10.Location = new System.Drawing.Point(935, 326); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(344, 293); + this.label10.TabIndex = 9; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label10.Click += new System.EventHandler(this.label10_Click); + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(44, 885); + this.textBox1.Margin = new System.Windows.Forms.Padding(2); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(300, 74); + this.textBox1.TabIndex = 10; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // timer1 + // + this.timer1.Interval = 5000; + // + // textBox3 + // + this.textBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(427, 567); + this.textBox3.Margin = new System.Windows.Forms.Padding(2); + this.textBox3.Multiline = true; + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(0, 104); + this.textBox3.TabIndex = 20; + this.textBox3.Visible = false; + this.textBox3.DoubleClick += new System.EventHandler(this.textBox3_DoubleClick); + this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown); + // + // textBox2 + // + this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(411, 553); + this.textBox2.Margin = new System.Windows.Forms.Padding(2); + this.textBox2.Multiline = true; + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(0, 104); + this.textBox2.TabIndex = 19; + this.textBox2.Visible = false; + this.textBox2.DoubleClick += new System.EventHandler(this.textBox2_DoubleClick); + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // button6 + // + this.button6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button6.Font = new System.Drawing.Font("微软雅黑", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button6.Location = new System.Drawing.Point(1178, 703); + this.button6.Margin = new System.Windows.Forms.Padding(2); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(97, 50); + this.button6.TabIndex = 26; + this.button6.Text = "计划查询"; + this.button6.UseVisualStyleBackColor = false; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // button5 + // + this.button5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button5.Font = new System.Drawing.Font("微软雅黑", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button5.Location = new System.Drawing.Point(1050, 703); + this.button5.Margin = new System.Windows.Forms.Padding(2); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(123, 50); + this.button5.TabIndex = 25; + this.button5.Text = "不良转合格"; + this.button5.UseVisualStyleBackColor = false; + this.button5.Click += new System.EventHandler(this.button5_Click); + // + // button4 + // + this.button4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button4.Font = new System.Drawing.Font("微软雅黑", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button4.Location = new System.Drawing.Point(940, 703); + this.button4.Margin = new System.Windows.Forms.Padding(2); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(104, 50); + this.button4.TabIndex = 24; + this.button4.Text = "产品不良"; + this.button4.UseVisualStyleBackColor = false; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // button3 + // + this.button3.Font = new System.Drawing.Font("微软雅黑", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(1178, 644); + this.button3.Margin = new System.Windows.Forms.Padding(2); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(97, 50); + this.button3.TabIndex = 23; + this.button3.Text = "补打标签"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // button2 + // + this.button2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button2.Font = new System.Drawing.Font("微软雅黑", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(1050, 644); + this.button2.Margin = new System.Windows.Forms.Padding(2); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(123, 50); + this.button2.TabIndex = 22; + this.button2.Text = "下一计划"; + this.button2.UseVisualStyleBackColor = false; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(940, 644); + this.button1.Margin = new System.Windows.Forms.Padding(2); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(104, 50); + this.button1.TabIndex = 21; + this.button1.Text = "上一计划"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // lbFinish + // + this.lbFinish.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbFinish.Location = new System.Drawing.Point(1065, 821); + this.lbFinish.Name = "lbFinish"; + this.lbFinish.Size = new System.Drawing.Size(210, 45); + this.lbFinish.TabIndex = 34; + this.lbFinish.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lbOK + // + this.lbOK.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbOK.Location = new System.Drawing.Point(1065, 880); + this.lbOK.Name = "lbOK"; + this.lbOK.Size = new System.Drawing.Size(210, 45); + this.lbOK.TabIndex = 33; + this.lbOK.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lbmode + // + this.lbmode.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbmode.Location = new System.Drawing.Point(1065, 939); + this.lbmode.Name = "lbmode"; + this.lbmode.Size = new System.Drawing.Size(210, 45); + this.lbmode.TabIndex = 32; + this.lbmode.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lbState + // + this.lbState.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbState.Location = new System.Drawing.Point(1065, 764); + this.lbState.Name = "lbState"; + this.lbState.Size = new System.Drawing.Size(210, 45); + this.lbState.TabIndex = 31; + this.lbState.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label5 + // + this.label5.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.Location = new System.Drawing.Point(940, 764); + this.label5.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(120, 45); + this.label5.TabIndex = 28; + this.label5.Text = "设备状态"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label11 + // + this.label11.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label11.Location = new System.Drawing.Point(940, 821); + this.label11.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(120, 45); + this.label11.TabIndex = 27; + this.label11.Text = "运行状态"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label12 + // + this.label12.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label12.Location = new System.Drawing.Point(940, 880); + this.label12.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(120, 45); + this.label12.TabIndex = 29; + this.label12.Text = "冲焊状态"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label13 + // + this.label13.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label13.Location = new System.Drawing.Point(940, 939); + this.label13.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(120, 45); + this.label13.TabIndex = 30; + this.label13.Text = "设备模式"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // PanelRD + // + this.PanelRD.Controls.Add(this.button7); + this.PanelRD.Controls.Add(this.LbBoxR); + this.PanelRD.Controls.Add(this.txtBoxR); + this.PanelRD.Controls.Add(this.lbBoxL); + this.PanelRD.Controls.Add(this.txtBoxL); + this.PanelRD.Location = new System.Drawing.Point(365, 542); + this.PanelRD.Name = "PanelRD"; + this.PanelRD.Size = new System.Drawing.Size(598, 114); + this.PanelRD.TabIndex = 35; + this.PanelRD.Visible = false; + // + // button7 + // + this.button7.BackColor = System.Drawing.Color.LightCoral; + this.button7.Location = new System.Drawing.Point(497, 3); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(94, 32); + this.button7.TabIndex = 13; + this.button7.Text = "关闭"; + this.button7.UseVisualStyleBackColor = false; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // LbBoxR + // + this.LbBoxR.AutoSize = true; + this.LbBoxR.Location = new System.Drawing.Point(8, 87); + this.LbBoxR.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.LbBoxR.Name = "LbBoxR"; + this.LbBoxR.Size = new System.Drawing.Size(89, 12); + this.LbBoxR.TabIndex = 12; + this.LbBoxR.Text = "扫描右雷达支架"; + // + // txtBoxR + // + this.txtBoxR.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtBoxR.Location = new System.Drawing.Point(116, 83); + this.txtBoxR.Name = "txtBoxR"; + this.txtBoxR.Size = new System.Drawing.Size(475, 23); + this.txtBoxR.TabIndex = 11; + this.txtBoxR.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBoxR_KeyDown); + // + // lbBoxL + // + this.lbBoxL.AutoSize = true; + this.lbBoxL.Location = new System.Drawing.Point(8, 50); + this.lbBoxL.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.lbBoxL.Name = "lbBoxL"; + this.lbBoxL.Size = new System.Drawing.Size(89, 12); + this.lbBoxL.TabIndex = 10; + this.lbBoxL.Text = "扫描左雷达支架"; + // + // txtBoxL + // + this.txtBoxL.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtBoxL.Location = new System.Drawing.Point(116, 43); + this.txtBoxL.Name = "txtBoxL"; + this.txtBoxL.Size = new System.Drawing.Size(475, 23); + this.txtBoxL.TabIndex = 9; + this.txtBoxL.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBoxL_KeyDown); + // + // textBox4 + // + this.textBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(414, 478); + this.textBox4.Margin = new System.Windows.Forms.Padding(2); + this.textBox4.Multiline = true; + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(453, 104); + this.textBox4.TabIndex = 36; + this.textBox4.Visible = false; + this.textBox4.DoubleClick += new System.EventHandler(this.textBox4_DoubleClick); + this.textBox4.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox4_KeyDown); + // + // FrmProScreenBumperS + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = global::PunchAndWeld.Properties.Resources._20200723112650; + this.ClientSize = new System.Drawing.Size(1280, 1024); + this.Controls.Add(this.PanelRD); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.lbFinish); + this.Controls.Add(this.lbOK); + this.Controls.Add(this.lbmode); + this.Controls.Add(this.lbState); + this.Controls.Add(this.label5); + this.Controls.Add(this.label11); + this.Controls.Add(this.label12); + this.Controls.Add(this.label13); + this.Controls.Add(this.button6); + this.Controls.Add(this.button5); + this.Controls.Add(this.button4); + this.Controls.Add(this.button3); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label10); + this.Controls.Add(this.label8); + this.Controls.Add(this.label9); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmProScreenBumperS"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "FrmProScreenBumper"; + this.Load += new System.EventHandler(this.FrmProScreenBumper_Load); + this.PanelRD.ResumeLayout(false); + this.PanelRD.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label lbFinish; + private System.Windows.Forms.Label lbOK; + private System.Windows.Forms.Label lbmode; + private System.Windows.Forms.Label lbState; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Panel PanelRD; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Label LbBoxR; + private System.Windows.Forms.TextBox txtBoxR; + private System.Windows.Forms.Label lbBoxL; + private System.Windows.Forms.TextBox txtBoxL; + private System.Windows.Forms.TextBox textBox4; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumperS.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumperS.cs new file mode 100644 index 0000000..a45c6b7 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumperS.cs @@ -0,0 +1,2060 @@ +using MESClassLibrary.BLL.PunchAndWeld; +using OPCAutomation; +using PunchAndWeld.DataSouce; +using PunchAndWeld.WebReference; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using gregn6Lib; +using MESClassLibrary.BLL.Log; + +namespace PunchAndWeld +{ + public partial class FrmProScreenBumperS : Form + { + OPCHelper opcHelper = new OPCHelper(); + private string strHostIP = ""; + PunchAdressBLL bll = new PunchAdressBLL(); + public bool IsChangeBox = false; + public bool IsPass = false; + private string IsHigh = "1"; + string zcPartNo = "", productName = ""; + + private GridppReport Report = new GridppReport(); + private string oneBarCode = "", stationNo ="", stationId = ""; + + + public FrmProScreenBumperS() + { + InitializeComponent(); + } + + private void FrmProScreenBumper_Load(object sender, EventArgs e) + { + //this.WindowState = FormWindowState.Maximized; + stationNo = ConfigurationManager.AppSettings["StationNo"]; + stationId = ProScreenFunc.GetStationId(stationNo); + label1.Text = ProScreenFunc.GetStation(stationNo); + Control.CheckForIllegalCrossThreadCalls = false; + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + + if (stationNo != "ZP70") + { + textBox1.TabIndex = 0; + textBox1.Select(); + } + else + { + txtBoxL.Select(); + txtBoxL.Focus(); + } + + if (stationNo == "ZP89" || stationNo == "ZP90") + { + button4.Visible = false; + button5.Visible = false; + button6.Visible = false; + } + + timer1.Enabled = true; + + try + { + if (opcHelper.CreateServer()) + { + if (opcHelper.ConnectServer(strHostIP, "Kepware.KEPServerEX.V6")) + { + opcHelper.Connected = true; + + + opcHelper.opcGroups = opcHelper.opcServer.OPCGroups; + opcHelper.opcGroup1 = opcHelper.opcGroups.Add("DeviceRead"); + opcHelper.opcGroup2 = opcHelper.opcGroups.Add("DeviceWrite"); + opcHelper.SetGroupProperty(opcHelper.opcGroup1, 500); + opcHelper.SetGroupProperty(opcHelper.opcGroup2, 500); + + opcHelper.opcItems1 = opcHelper.opcGroup1.OPCItems; + opcHelper.opcItems1.DefaultIsActive = true; + + DataTable dt = bll.SearchInfo(ConfigurationManager.AppSettings["DeviceNo"], 0); + + if (dt != null && dt.Rows.Count > 0) + { + opcHelper.opcItemm1 = new OPCItem[dt.Rows.Count]; + for (int i = 0; i < dt.Rows.Count; i++) + { + opcHelper.opcItemm1[i] = opcHelper.opcItems1.AddItem(dt.Rows[i]["Address"].ToString(), i); + } + } + + opcHelper.opcItems2 = opcHelper.opcGroup2.OPCItems; + opcHelper.opcItems2.DefaultIsActive = true; + + DataTable dt1 = bll.SearchInfo(ConfigurationManager.AppSettings["DeviceNo"], 1); + if (dt1 != null && dt1.Rows.Count > 0) + { + if (stationNo == "ZP61") + { + opcHelper.opcItemm2 = new OPCItem[dt1.Rows.Count + 16]; + } + else if (stationNo == "ZP88") + { + opcHelper.opcItemm2 = new OPCItem[dt1.Rows.Count + 1]; + } + else + { + opcHelper.opcItemm2 = new OPCItem[dt1.Rows.Count]; + } + + for (int i = 0; i < dt1.Rows.Count; i++) + { + opcHelper.opcItemm2[i] = opcHelper.opcItems2.AddItem(dt1.Rows[i]["Address"].ToString(), i); + if (stationNo == "ZP88" && i == dt1.Rows.Count - 1) + { + string[] tempStr = dt1.Rows[i]["Address"].ToString().Split('.'); + opcHelper.opcItemm2[i+1] = opcHelper.opcItems2.AddItem(tempStr[0]+"."+ tempStr[1]+ ".StartM", i+1); + } + } + + if (stationNo == "ZP61") + { + opcHelper.opcItemm2[dt1.Rows.Count + 0] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.White1", dt1.Rows.Count + 0); + opcHelper.opcItemm2[dt1.Rows.Count + 1] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.White2", dt1.Rows.Count + 1); + + opcHelper.opcItemm2[dt1.Rows.Count + 2] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.Black1", dt1.Rows.Count + 2); + opcHelper.opcItemm2[dt1.Rows.Count + 3] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.Black2", dt1.Rows.Count + 3); + + opcHelper.opcItemm2[dt1.Rows.Count + 4] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.Silver1", dt1.Rows.Count + 4); + opcHelper.opcItemm2[dt1.Rows.Count + 5] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.Silver2", dt1.Rows.Count + 5); + + opcHelper.opcItemm2[dt1.Rows.Count + 6] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.White3", dt1.Rows.Count + 6); + opcHelper.opcItemm2[dt1.Rows.Count + 7] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.White4", dt1.Rows.Count + 7); + + opcHelper.opcItemm2[dt1.Rows.Count + 8] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.Gray1", dt1.Rows.Count + 8); + opcHelper.opcItemm2[dt1.Rows.Count + 9] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.Gray2", dt1.Rows.Count + 9); + + opcHelper.opcItemm2[dt1.Rows.Count + 10] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.Blue1", dt1.Rows.Count + 10); + opcHelper.opcItemm2[dt1.Rows.Count + 11] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.Blue2", dt1.Rows.Count + 11); + + opcHelper.opcItemm2[dt1.Rows.Count + 12] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.Green1", dt1.Rows.Count + 12); + opcHelper.opcItemm2[dt1.Rows.Count + 13] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.Green2", dt1.Rows.Count + 13); + + opcHelper.opcItemm2[dt1.Rows.Count + 14] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.Black3", dt1.Rows.Count + 14); + opcHelper.opcItemm2[dt1.Rows.Count + 15] = opcHelper.opcItems2.AddItem("BBMPT.Punch167.Black4", dt1.Rows.Count + 15); + } + + + } + + opcHelper.opcGroup1.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(opcGroup1_DataChange); + + + if (opcHelper.ReadSingleValueFromOPC1(2).ToLower() == "true") + { + lbState.Text = "等待放件状态"; + } + else + { + lbState.Text = "设备未准备OK"; + } + + if (opcHelper.ReadSingleValueFromOPC1(0).ToLower() == "true") + { + lbFinish.Text = "运行完成"; + //textBox1.Enabled = true; + } + else + { + lbFinish.Text = "正在运行"; + //textBox1.Enabled = false; + } + + if (opcHelper.ReadSingleValueFromOPC1(4).ToLower() == "true") + { + lbOK.Text = "NG"; + } + else + { + lbOK.Text = "OK"; + } + + if (opcHelper.ReadSingleValueFromOPC2(1) == 1) + { + lbmode.Text = "手动"; + } + else if (opcHelper.ReadSingleValueFromOPC2(1) == 2) + { + lbmode.Text = "复位"; + } + else if (opcHelper.ReadSingleValueFromOPC2(1) == 3) + { + lbmode.Text = "自动"; + } + else if (opcHelper.ReadSingleValueFromOPC2(1) == 4) + { + lbmode.Text = "半自动"; + } + + } + } + else + { + MessageBox.Show("创建OPC服务失败!", "提示", MessageBoxButtons.OK); + opcHelper.Connected = false; + LogHelper.WriteErrLogBase("工位:" + label1.Text + "创建OPC服务失败!", MethodBase.GetCurrentMethod().Name); + return; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + LoadScreen(); + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + label9.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + + public void LoadScreen() + { + //string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreen(stationNo); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + + } + + public void SetPage(DataTable dt) + { + textBox2.Text = ""; + textBox2.Visible = false; + textBox3.Text = ""; + textBox3.Visible = false; + txtBoxL.Text = ""; + txtBoxR.Text = ""; + IsHigh = "1"; + PanelRD.Visible = false; + + if (dt != null && dt.Rows.Count > 0) + { + + label1.Text = dt.Rows[0]["Des"].ToString(); + label2.Text = dt.Rows[0]["OrderNo"].ToString(); + label3.Text = dt.Rows[0]["PartNo"].ToString(); + label4.Text = dt.Rows[0]["ProductName"].ToString(); + //label5.Text = dt.Rows[0]["Des"].ToString(); + label6.Text = dt.Rows[0]["OrderCount"].ToString(); + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + label8.Text = dt.Rows[0]["OrderNo"].ToString().Substring(0, 1) + "班"; + label10.Text = dt.Rows[0]["BadCount"].ToString(); + IsHigh = dt.Rows[0]["IsHigh"].ToString(); + + this.Tag = dt.Rows[0]["ID"].ToString(); + textBox1.Tag = dt.Rows[0]["ProductID1"].ToString(); + textBox1.Text = ""; + + if (stationNo == "ZP61") + { + + if (label4.Text.Contains("极地白")) + { + opcHelper.opcItemm2[4].Write(1); + opcHelper.opcItemm2[5].Write(1); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + if (label4.Text.Contains("曜")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(1); + opcHelper.opcItemm2[7].Write(1); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + if (label4.Text.Contains("银")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(1); + opcHelper.opcItemm2[9].Write(1); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + if (label4.Text.Contains("乳石白")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(1); + opcHelper.opcItemm2[11].Write(1); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + if (label4.Text.Contains("石墨灰")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(1); + opcHelper.opcItemm2[13].Write(1); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + #region 竞技蓝 + + if (label4.Text.Contains("竞技蓝")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(1); + opcHelper.opcItemm2[15].Write(1); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + #endregion + + #region 松石绿 + + if (label4.Text.Contains("绿松蓝")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(1); + opcHelper.opcItemm2[17].Write(1); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + #endregion + + #region 鲁宾黑 + + if (label4.Text.Contains("鲁宾黑")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(1); + opcHelper.opcItemm2[19].Write(1); + } + + #endregion + } + + + if (stationNo == "ZP70" || stationNo == "ZP72"|| stationNo == "ZP80") + { + OpenPanelRD(); + } + } + } + + private void OpenPanelRD() + { + if (stationNo == "ZP70") + { + lbBoxL.Text = "扫描奔驰标"; + LbBoxR.Visible = false; + txtBoxR.Visible = false; + button7.Visible = false; + } + + if (stationNo == "ZP72" ||stationNo == "ZP80") + { + button7.Visible = false; + } + PanelRD.Visible = true; + txtBoxL.Select(); + txtBoxL.Focus(); + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + //CheckPartAndProduct(); + string sbState = lbState.Text.Trim(); + if (string.IsNullOrWhiteSpace(sbState) || sbState.Contains("未")) + { + MessageBox.Show("设备未准备OK"); + return; + } + else + { + if (stationNo != "ZP61" && stationNo != "ZP67" && stationNo != "ZP69" && stationNo != "ZP87" && stationNo != "ZP88" && stationNo != "ZP89" && stationNo != "ZP90") + { + CheckPartAndProduct(); + } + else + { + CheckPartAndProduct_New(); + } + } + } + } + + public void CheckPartAndProduct() + { + textBox1.SelectAll(); + string barcode = textBox1.Text.Trim(); + + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + + } + oneBarCode = barcode; + + if (ProScreenFunc.HaveScan(barcode)) + { + DialogResult result = MessageBox.Show("条码为" + barcode + "的蒙皮已经冲孔,是否重新冲孔?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + + ScanBarcode(barcode); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + else + { + return; + } + } + else + { + ScanBarcode(barcode); + } + + } + + public void CheckPartAndProduct_New() + { + textBox1.SelectAll(); + string barcode = textBox1.Text.Trim(); + + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + + } + oneBarCode = barcode; + + + if (ProScreenFunc.HaveScan(barcode)) + { + string tmpZc = ProScreenFunc.StockZcCode(barcode); + string[] aa = ProScreenFunc.GetSpecialHybrid(); + string[] bb = tmpZc.Split('-'); + + if (aa.Count(p => p == bb[0]) == 0) + { + + DialogResult result = MessageBox.Show("条码为" + barcode + "的蒙皮已经冲孔,是否重新冲孔?", "提示", + MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + + ScanBarcode_New(oneBarCode); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + } + else + { + //if (barcode.Substring(0, 10) == "2200000176") + //{ + // MessageBox.Show("条码为" + barcode + "的已经是高配无需再次冲孔"); + // return; + //} + ScanBarcode_New(oneBarCode); + } + } + else + { + ScanBarcode_New(oneBarCode); + } + } + + private void ScanBarcode(string barcode) + { + string productID1 = textBox1.Tag.ToString().Trim(); + string productID2 = ""; + + string[] codeSpecial = { "2200000057", "2200000058" }; + string code = barcode.Substring(0, 10); + //string stationNo = ConfigurationManager.AppSettings["StationNo"]; + if (codeSpecial.Contains(code)) + { + productID2 = ProScreenFunc.GetProductID(code, ""); + AfterScanBarcode(barcode, productID2, productID1, this.Tag.ToString().Trim()); + } + else + { + if (barcode.Substring(0, 2) != "22") + { + string stockNo = barcode.Substring(0, 10); + productID2 = ProScreenFunc.GetProductID(stockNo, ""); + } + else + { + productID2 = ProScreenFunc.GetProductID(barcode); + } + + if (!ProScreenFunc.CheckPartAndProduct(productID1, productID2)) + { + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + textBox1.Text = ""; + } + else + { + + ScanAll.ScanResult = false; + + OtherPart parts = ProScreenFunc.HaveOtherPart(stationNo, productID1); + if ((parts != null) && ((!string.IsNullOrWhiteSpace(parts.productID3)) || (!string.IsNullOrWhiteSpace(parts.productID4)) || (!string.IsNullOrWhiteSpace(parts.productID5)) || (!string.IsNullOrWhiteSpace(parts.productID6)) || (!string.IsNullOrWhiteSpace(parts.productID7)) || (!string.IsNullOrWhiteSpace(parts.productID8)))) + { + FrmProScreen3 frm3 = new FrmProScreen3(parts); + frm3.ShowDialog(); + } + else + { + ScanAll.ScanResult = true; + ScanAll.barCode1 = ""; + ScanAll.barCode2 = ""; + ScanAll.barCode3 = ""; + ScanAll.barCode4 = ""; + ScanAll.barCode5 = ""; + ScanAll.barCode6 = ""; + } + + if (ScanAll.ScanResult) + { + if (stationNo == "ZP70" || stationNo == "ZP72" || stationNo == "ZP80") + { + if (IsPass) + { + + if (ConfigurationManager.AppSettings["DeviceNo"] != "BMPTJQSB-05-166") + { + if (IsHigh == "0") + { + opcHelper.opcItemm2[3].Write("1"); + opcHelper.opcItemm2[1].Write("0"); + opcHelper.opcItemm2[2].Write("1"); + } + else + { + opcHelper.opcItemm2[3].Write("1"); + opcHelper.opcItemm2[2].Write("0"); + opcHelper.opcItemm2[1].Write("1"); + } + } + else + { + if (IsHigh == "0") + { + opcHelper.opcItemm2[2].Write("1"); + } + else + { + opcHelper.opcItemm2[1].Write("1"); + } + } + + AfterScanBarcode(barcode, productID2, productID1, this.Tag.ToString().Trim()); + } + else + { + if (stationNo == "ZP70") + { + MessageBox.Show("未校验奔驰标!", "提示", MessageBoxButtons.OK); + } + else + { + MessageBox.Show("未校验雷达支架!", "提示", MessageBoxButtons.OK); + } + } + } + else + { + + if (ConfigurationManager.AppSettings["DeviceNo"] != "BMPTJQSB-05-166") + { + if (IsHigh == "0") + { + opcHelper.opcItemm2[3].Write("1"); + opcHelper.opcItemm2[1].Write("0"); + opcHelper.opcItemm2[2].Write("1"); + } + else + { + opcHelper.opcItemm2[3].Write("1"); + opcHelper.opcItemm2[2].Write("0"); + opcHelper.opcItemm2[1].Write("1"); + } + } + else + { + if (IsHigh == "0") + { + opcHelper.opcItemm2[2].Write("1"); + //opcItemm2[2].Write("1"); + } + else + { + opcHelper.opcItemm2[1].Write("1"); + //opcItemm2[1].Write("1"); + } + } + + AfterScanBarcode(barcode, productID2, productID1, this.Tag.ToString().Trim()); + } + + } + } + } + } + + private void AfterScanBarcode(string barcode, string productID2, string productID1, string planID) + { + if ((IsChangeBox == true && IsPass) || (IsChangeBox == false)) + { + int res = 0; + + try + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + partNo = label3.Text.Trim(); + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + string sn=""; + + + if (stationNo == "ZP83") + { + res=ProScreenFunc.SavePartAndProduct_New(barcode, productID2, productID1, + label2.Text.Trim(), label8.Text, planID, sn, + ScanAll.barCode1, ScanAll.barCode2, ScanAll.barCode3, + ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6,stationId, ConfigurationManager.AppSettings["StationDescription"]); + } + else + { + res = ProScreenFunc.SavePartAndProduct(barcode, productID2, productID1, label2.Text, label8.Text, planID, stationId, ConfigurationManager.AppSettings["StationDescription"]); + } + + if (res<=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + + ProScreenFunc.SaveZcCode(barcode, label3.Text.Trim()); + ProScreenFunc.AddCompleteCount(this.Tag.ToString().Trim()); + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = ""; + if (label3.Text.Trim().Contains("A2477900588-")) + { + path = Application.StartupPath + @"\aaa1.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize1); + } + else + { + path = Application.StartupPath + @"\aaa.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize); + } + + Report.Register(""); + Report.LoadFromFile(path); + + //Report.DesignPaperOrientation = GRPaperOrientation.grpoLandscape; + //report.PrintPreview(true); + Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + label7.Text = (Tools.NumericParse.StringToInt(label7.Text.Trim()) + 1).ToString(); + } + + } + else + { + MessageBox.Show("雷达支架不匹配"); + } + } + + private void ScanBarcode_New(string barCode) + { + try + { + string productId1 = "", productId2 = ""; + string tmpZc = ProScreenFunc.StockZcCode(barCode); + string[] aa = ProScreenFunc.GetSpecialHybrid(); + string[] bb = tmpZc.Split('-'); + if (aa.Count(p => p == bb[0]) > 0) + { + if (ConfigurationManager.AppSettings["StationNo"] == "ZP61") + { + productId2 = ProScreenFunc.GetProductIDByPartNo(tmpZc); + } + else + { + opcHelper.opcItemm2[1].Write("1"); + return; + } + } + else + { + if (ConfigurationManager.AppSettings["StationNo"] == "ZP61") + { + if (!string.IsNullOrEmpty(tmpZc)) + { + if (tmpZc.Contains("PH")) + { + opcHelper.opcItemm2[1].Write("1"); + return; + } + } + } + productId2 = ProScreenFunc.GetProductID(barCode); + } + + if (ConfigurationManager.AppSettings["StationNo"] == "ZP61") + { + string productID1 = textBox1.Tag.ToString().Trim(); + if (!ProScreenFunc.CheckPartAndProduct(productID1, productId2)) + { + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + textBox1.SelectAll (); + textBox1.Focus (); + return; + } + } + string stationId = ProScreenFunc.GetStationId(ConfigurationManager.AppSettings["StationNo"]); + DataTable dt = ProScreenFunc.GetProductInfo1(productId2, stationId); + if (dt != null && dt.Rows.Count > 0) + { + productId1 = dt.Rows[0]["ProductID1"].ToString(); + zcPartNo = dt.Rows[0]["PartNo"].ToString(); + IsHigh = dt.Rows[0]["IsHigh"].ToString(); + productName = dt.Rows[0]["ProductName"].ToString(); + + + ScanAll.ScanResult = false; + + OtherPart parts = ProScreenFunc.HaveOtherPart(label1.Text.Trim(), productId1); + if ((parts != null) && ((!string.IsNullOrWhiteSpace(parts.productID3)) || (!string.IsNullOrWhiteSpace(parts.productID4)) || (!string.IsNullOrWhiteSpace(parts.productID5)))) + { + FrmProScreen3 frm3 = new FrmProScreen3(parts); + frm3.ShowDialog(); + } + else + { + ScanAll.ScanResult = true; + } + + if (ScanAll.ScanResult) + { + + if (ConfigurationManager.AppSettings["DeviceNo"] != "BMPTJQSB-05-166") + { + if (stationNo=="ZP88") + { + if (IsHigh == "0") + { + opcHelper.opcItemm2[3].Write("1"); + opcHelper.opcItemm2[1].Write("0"); + opcHelper.opcItemm2[2].Write("1"); + opcHelper.opcItemm2[4].Write("0"); + } + else if (IsHigh == "1") + { + opcHelper.opcItemm2[3].Write("1"); + opcHelper.opcItemm2[2].Write("0"); + opcHelper.opcItemm2[1].Write("1"); + opcHelper.opcItemm2[4].Write("0"); + } + else if (IsHigh == "2") + { + opcHelper.opcItemm2[4].Write("1"); + opcHelper.opcItemm2[3].Write("1"); + opcHelper.opcItemm2[2].Write("0"); + opcHelper.opcItemm2[1].Write("0"); + } + } + else + { + if (IsHigh == "0") + { + opcHelper.opcItemm2[3].Write("1"); + opcHelper.opcItemm2[1].Write("0"); + opcHelper.opcItemm2[2].Write("1"); + } + else if (IsHigh == "1") + { + opcHelper.opcItemm2[3].Write("1"); + opcHelper.opcItemm2[2].Write("0"); + opcHelper.opcItemm2[1].Write("1"); + } + else if (IsHigh == "2") + { + } + } + } + else + { + if (IsHigh == "0") + { + opcHelper.opcItemm2[2].Write("1"); + } + else if (IsHigh == "1") + { + opcHelper.opcItemm2[1].Write("1"); + } + } + + if (ConfigurationManager.AppSettings["StationNo"] == "ZP61") + { + + #region 极地白 + + if (productName.Contains("极地白")) + { + opcHelper.opcItemm2[4].Write(1); + opcHelper.opcItemm2[5].Write(1); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + #endregion + + #region 曜岩黑 + + if (productName.Contains("曜")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(1); + opcHelper.opcItemm2[7].Write(1); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + #endregion + + #region 高科技银 + + if (productName.Contains("银")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(1); + opcHelper.opcItemm2[9].Write(1); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + #endregion + + #region 乳石白 + + if (productName.Contains("乳石白")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(1); + opcHelper.opcItemm2[11].Write(1); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + #endregion + + #region 石墨灰 + + if (productName.Contains("石墨灰")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(1); + opcHelper.opcItemm2[13].Write(1); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + #endregion + + #region 竞技蓝 + + if (productName.Contains("竞技蓝")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(1); + opcHelper.opcItemm2[15].Write(1); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + #endregion + + #region 松石绿 + + if (productName.Contains("绿松蓝")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(1); + opcHelper.opcItemm2[17].Write(1); + + opcHelper.opcItemm2[18].Write(0); + opcHelper.opcItemm2[19].Write(0); + } + + #endregion + + #region 鲁宾黑 + + if (productName.Contains("鲁宾黑")) + { + opcHelper.opcItemm2[4].Write(0); + opcHelper.opcItemm2[5].Write(0); + + opcHelper.opcItemm2[6].Write(0); + opcHelper.opcItemm2[7].Write(0); + + opcHelper.opcItemm2[8].Write(0); + opcHelper.opcItemm2[9].Write(0); + + opcHelper.opcItemm2[10].Write(0); + opcHelper.opcItemm2[11].Write(0); + + opcHelper.opcItemm2[12].Write(0); + opcHelper.opcItemm2[13].Write(0); + + opcHelper.opcItemm2[14].Write(0); + opcHelper.opcItemm2[15].Write(0); + + opcHelper.opcItemm2[16].Write(0); + opcHelper.opcItemm2[17].Write(0); + + opcHelper.opcItemm2[18].Write(1); + opcHelper.opcItemm2[19].Write(1); + } + + #endregion + } + + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo(zcPartNo, time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + zcPartNo + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + AfterScanBarcode_New(barCode, productId2, productId1, zcPartNo, sn); + } + } + else + { + MessageBox.Show("当前扫描的零件未设置对应的总成,请检查后再扫描"); + textBox1.SelectAll(); + textBox1.Focus(); + } + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + MessageBox.Show("连接数据库超时!"); + } + } + + private void AfterScanBarcode_New(string barcode, string productId2, string productId1, string zcPartNo,string sn) + { + if ((IsChangeBox == true && IsPass) || (IsChangeBox == false)) + { + + try + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + batchNo = DateTime.Now.ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + webService.WMSInterfaceStockIn(barcode, zcPartNo, batchNo, 1); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + ProScreenFunc.SavePartAndProduct2(barcode, productId2, productId1, "", "", "",sn,ProScreenFunc.GetStationId(ConfigurationManager.AppSettings["StationNo"]), ConfigurationManager.AppSettings["StationDescription"]); + ProScreenFunc.SaveZcCode(barcode, zcPartNo); + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToLower() == "true") + { + string path = Application.StartupPath + @"\aaa.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize_New); + + Report.Register(""); + Report.LoadFromFile(path); + Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + + label7.Text = ProScreenFunc.CompleteQty(ProScreenFunc.GetStationId(ConfigurationManager.AppSettings["StationNo"])).ToString(); + } + else + { + MessageBox.Show("雷达支架不匹配"); + } + } + private void ReportInitialize() + { + Report.ParameterByName("oneBarCode").Value = oneBarCode; + Report.ParameterByName("zcPartNo").Value = label3.Text.Trim(); + Report.ParameterByName("zcName").Value = label4.Text.Trim(); + } + + private void ReportInitialize_New() + { + Report.ParameterByName("oneBarCode").Value = oneBarCode; + Report.ParameterByName("zcPartNo").Value = zcPartNo; + Report.ParameterByName("zcName").Value = productName; + } + + private void ReportInitialize1() + { + string barcode = textBox1.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + DateTime time = DateTime.Now; + if (label3.Text.Trim().Contains("A2477900588-")) + { + Report.ParameterByName("Des").Value = "X247S"; + } + if (label3.Text.Trim().Contains("A2477900000-")) + { + Report.ParameterByName("Des").Value = "H247S"; + } + Report.ParameterByName("PartNo").Value = label3.Text.Trim(); + Report.ParameterByName("PartName").Value = label4.Text.Trim(); + Report.ParameterByName("BatchNo").Value = time.ToString("yyMMdd"); + string tmp = ProScreenFunc.SerialNo(label3.Text.Trim(), time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + label3.Text.Trim() + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + Report.ParameterByName("SerialNo").Value = sn; + Report.ParameterByName("BarCode").Value = sn + ";24;2217;;.0;" + time.ToString("yyyy/MM/dd"); + Report.ParameterByName("oneBarCode").Value = barcode; + //Report.ParameterByName("PartName").Value = label4.Text.Trim(); + //Report.ParameterByName("BatchNo").Value = time.ToString("yyMMdd"); + //string tmp = ProScreenFunc.SerialNo(label3.Text.Trim(), time.ToString("yyMMdd")); + //string sn = ""; + //if (tmp == "") + //{ + // sn = + // label3.Text.Trim() + "." + time.ToString("yyMMdd") + ".000001"; + //} + //else + //{ + // sn = tmp.Substring(0, tmp.Length - 6) + + // (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + // .PadLeft(6, '0'); + //} + + //Report.ParameterByName("SerialNo").Value = sn; + //Report.ParameterByName("BarCode").Value = sn + ";24;2217;;.0;" + time.ToString("yyyy/MM/dd"); + } + + private void timer1_Tick(object sender, EventArgs e) + { + string orderNo = label2.Text.Trim(); + if (string.IsNullOrWhiteSpace(orderNo)) + { + LoadScreen(); + } + } + + public void LoadPlanScreen(string id, string plan) + { + string stationNo = ConfigurationManager.AppSettings["StationNo"]; + IsPass = false; + + DataTable dt = ProScreenFunc.GetProScreenPlan(id, stationNo, plan); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + else + { + if (plan == "下一计划") + { + MessageBox.Show("无下一计划"); + textBox1.SelectAll(); + textBox1.Focus(); + } + else + { + MessageBox.Show("无上一计划"); + textBox1.SelectAll(); + textBox1.Focus(); + } + } + textBox1.SelectAll(); + textBox1.Focus(); + } + + #region 按钮 + + private void button1_Click(object sender, EventArgs e) + { + LoadPlanScreen(this.Tag.ToString(), "上一计划"); + if (ConfigurationManager.AppSettings["StationNo"] == "ZP70") + { + txtBoxL.Select(); + txtBoxL.Focus(); + } + } + + private void button2_Click(object sender, EventArgs e) + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + if (ConfigurationManager.AppSettings["StationNo"] == "ZP70") + { + txtBoxL.Select(); + txtBoxL.Focus(); + } + } + + private void button4_Click(object sender, EventArgs e) + { + textBox2.Visible = true; + textBox2.Focus(); + } + + private void button5_Click(object sender, EventArgs e) + { + textBox3.Visible = true; + textBox3.Focus(); + } + + private void button6_Click(object sender, EventArgs e) + { + FrmProScreen2 frm = new FrmProScreen2(); + frm.Show(); + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox2.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + #region 不合格扫码后先判断该条码是否已经变成总成,如果没有变成总成,报错未进行装配,如果已是总成,那么完成数减一,不合格数加一 + + if (ProScreenFunc.HaveScan(barcode)) + { + #region 调WMS接口--20200522注销:不需要调WMS接口 + + //try + //{ + // LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + // string stockNo = ""; + // string batchNo = ""; + // string partNo = ""; + // ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + // partNo = label3.Text.Trim(); + // batchNo = DateTime.Now.ToString("yyyyMMdd"); + + // WMSWebService webService = new WMSWebService(); + // webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + // webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 0); + //} + //catch (Exception ex) + //{ + // LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + //} + + #endregion + + #region 不良数+1,完成数-1,不能扣当前计划,查询以前扫码记录,扣减相应计划 + + //根据条码查计划,传计划ID + string planID = ProScreenFunc.GetPlanIDByBarcode(barcode); + ProScreenFunc.AddBadCount(planID.Trim()); + ProScreenFunc.SubCompleteCount(planID.Trim()); + + ProScreenFunc.SaveRecord2(barcode, "0", planID); + + #endregion + + //根据计划ID查计划,页面赋值 + DataTable dt = ProScreenFunc.GetProScreenByPlanID(this.Tag.ToString().Trim()); + SetPage(dt); + + //label10.Text = (Tools.NumericParse.StringToInt(label10.Text.Trim()) + 1).ToString(); + //label7.Text = (Tools.NumericParse.StringToInt(label7.Text.Trim()) - 1).ToString(); + + textBox2.Text = ""; + textBox2.Visible = false; + } + else + { + MessageBox.Show("还未进行装配!", "提示"); + + textBox2.Text = ""; + textBox2.Visible = false; + } + + #endregion + + } + else if (e.KeyCode == Keys.Escape) + { + textBox2.Text = ""; + textBox2.Visible = false; + } + + } + + private void textBox3_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox3.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + #region 调WMS接口--20200522注销:不需要调WMS接口 + + //try + //{ + // LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + // string stockNo = ""; + // string batchNo = ""; + // string partNo = ""; + // ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + // partNo = label3.Text.Trim(); + // batchNo = DateTime.Now.ToString("yyyyMMdd"); + + // WMSWebService webService = new WMSWebService(); + // webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + // webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + //} + //catch (Exception ex) + //{ + // LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + //} + + #endregion + + #region 不良数-1,完成数+1 + + string planID = ProScreenFunc.GetPlanIDByBarcode(barcode); + ProScreenFunc.SubBadCount(planID.Trim()); + ProScreenFunc.AddCompleteCount(planID.Trim()); + + ProScreenFunc.SaveRecord2(barcode, "1", planID); + + #endregion + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + //label10.Text = (Tools.NumericParse.StringToInt(label10.Text.Trim()) - 1).ToString(); + //label7.Text = (Tools.NumericParse.StringToInt(label7.Text.Trim()) + 1).ToString(); + + DataTable dt = ProScreenFunc.GetProScreenByPlanID(this.Tag.ToString().Trim()); + SetPage(dt); + } + + textBox3.Text = ""; + textBox3.Visible = false; + } + else if (e.KeyCode == Keys.Escape) + { + textBox3.Text = ""; + textBox3.Visible = false; + } + } + + private void textBox3_DoubleClick(object sender, EventArgs e) + { + textBox3.Text = ""; + textBox3.Visible = false; + } + + private void textBox2_DoubleClick(object sender, EventArgs e) + { + textBox2.Text = ""; + textBox2.Visible = false; + } + + #endregion + + private void label9_Click(object sender, EventArgs e) + { + Environment.Exit(0); + } + + + void opcGroup1_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps) + { + try + { + for (int i = 1; i <= NumItems; i++) + { + int handle = Convert.ToInt32(ClientHandles.GetValue(i).ToString().Trim()); + string value = ItemValues.GetValue(i).ToString(); + string address = opcHelper.opcItemm1[(Convert.ToInt32(ClientHandles.GetValue(i)))].ItemID; + + if (handle == 0) + { + if (value == "1" || value.ToUpper() == "TRUE") + { + lbFinish.Text = "运行完成"; + + } + else + { + lbFinish.Text = "正在运行"; + } + } + + if (handle == 1) + { + if (value == "1") + { + lbmode.Text = "手动"; + } + else if (value == "2") + { + lbmode.Text = "复位"; + } + else if (value == "3") + { + lbmode.Text = "自动"; + } + else if (value == "4") + { + lbmode.Text = "半自动"; + } + } + if (handle == 2) + { + if (value == "1" || value.ToUpper() == "TRUE") + { + lbState.Text = "等待放件状态"; + } + else + { + lbState.Text = "设备未准备OK"; + } + } + + if (handle == 3 || handle == 4) + { + if (value == "1" || value.ToUpper() == "TRUE") + { + IsChangeBox = true; + OpenPanelRD(); + } + else + { + IsChangeBox = false; + //PanelRD.Visible = false; + } + } + + + if (handle == 5) + { + if (value == "1" || value.ToUpper() == "TRUE") + { + lbOK.Text = "NG"; + } + else + { + lbOK.Text = "OK"; + } + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void button7_Click(object sender, EventArgs e) + { + txtBoxL.Text = ""; + txtBoxR.Text = ""; + PanelRD.Visible = false; + } + + private void txtBoxL_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + if (ConfigurationManager.AppSettings["StationNo"] == "ZP70") + { + if (label3.Text.Contains("A1778858705P-") || label3.Text.Contains("A1778858705W-")) + { + if (txtBoxL.Text.Trim() == "A0008176203") + { + IsPass = true; + txtBoxL.Text = ""; + PanelRD.Visible = false; + textBox1.Focus(); + } + else + { + MessageBox.Show("奔驰标条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxL.SelectAll(); + } + } + if (label3.Text.Contains("A1778858705AP-") || label3.Text.Contains("A1778858705AW-")) + { + if (txtBoxL.Text.Trim() == "A0008170408") + { + IsPass = true; + txtBoxL.Text = ""; + PanelRD.Visible = false; + textBox1.Focus(); + } + else + { + MessageBox.Show("奔驰标条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxL.SelectAll(); + } + } + } + else + { + string[] barCode1 = txtBoxL.Text.Split('.'); + if (barCode1.Length > 0) + { + string[] part = barCode1[0].Split('-'); + if (part.Length == 2) + { + txtBoxR.Focus(); + } + else + { + MessageBox.Show("左雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxL.SelectAll(); + return; + } + } + else + { + MessageBox.Show("左雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxL.SelectAll(); + return; + } + } + + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void txtBoxR_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + string color1 = "", color2 = ""; + + string[] barCode2 = txtBoxR.Text.Split('.'); + + if (barCode2.Length > 0) + { + string[] part = barCode2[0].Split('-'); + if (part.Length == 2) + { + color2 = part[1].ToString(); + } + else + { + MessageBox.Show("右雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxR.SelectAll(); + return; + } + + string[] barCode1 = txtBoxL.Text.Split('.'); + string[] part1 = barCode1[0].Split('-'); + + color1 = part1[1].ToString(); + + if (color1 != color2) + { + MessageBox.Show("左右雷达支架不匹配,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxR.SelectAll(); + return; + } + else + { + + string[] planCs = label3.Text.Trim().Split('-'); + if (planCs.Length > 1) + { + string planC = planCs[1]; + if (planC == color1) + { + IsPass = true; + + txtBoxL.Text = ""; + txtBoxR.Text = ""; + PanelRD.Visible = false; + + textBox1.Focus(); + } + } + else + { + IsPass = false; + MessageBox.Show("雷达支架颜色与计划颜色不一致"); + + txtBoxL.Text = ""; + txtBoxR.Text = ""; + txtBoxL.Focus(); + + return; + } + } + } + else + { + MessageBox.Show("右雷达支架条码有误,请重新扫描!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + txtBoxL.SelectAll(); + return; + } + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void button3_Click(object sender, EventArgs e) + { + textBox4.Text = ""; + textBox4.Visible = true; + textBox4.Focus(); + } + + private void textBox4_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox4.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + DataTable dtHg = ProScreenFunc.GetGh(barcode); + if (dtHg == null || dtHg.Rows.Count < 1) + { + MessageBox.Show("未装配,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + + DataTable dtBl = ProScreenFunc.GetBl(barcode); + if (dtBl != null && dtBl.Rows.Count > 0) + { + DateTime hgTime = (DateTime)Tools.NumericParse.StringToDateTime("1900-01-01 00:00:00"); + DataTable dtHG1 = ProScreenFunc.GetHG_New(barcode); + if (dtHG1 != null && dtHG1.Rows.Count > 0) + { + hgTime = (DateTime)Tools.NumericParse.StringToDateTime(dtHG1.Rows[0]["CreateTime"].ToString()); + } + + DateTime blTime = (DateTime)Tools.NumericParse.StringToDateTime(dtBl.Rows[0]["createTime"].ToString()); + if (DateTime.Compare(blTime, hgTime) > 0) + { + MessageBox.Show("产品不良,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + } + + + LogSysBLL.AddInfo("条码:" + barcode + "补打标签", MethodBase.GetCurrentMethod()); + + string zcID = dtHg.Rows[0]["ZcID"].ToString(); + ZcPrintLabel zl = ProScreenFunc.GetZcPrintLabel(zcID); + if (zl != null && zl.zcPartNo != null && zl.zcName != null) + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + if (zl.zcPartNo.Contains("A2477900588-") || zl.zcPartNo.Contains("A2477900000-")) + { + string path = System.Windows.Forms.Application.StartupPath + @"\aaa1.grf"; + + GridppReport Report2 = new GridppReport(); + Report2.Register(""); + Report2.LoadFromFile(path); + if (zl.zcPartNo.Contains("A2477900588-")) + { + Report2.ParameterByName("Des").Value = "X247S"; + } + if (zl.zcPartNo.Contains("A2477900000-")) + { + Report2.ParameterByName("Des").Value = "H247S"; + } + Report2.ParameterByName("PartNo").Value = zl.zcPartNo; + Report2.ParameterByName("PartName").Value = zl.zcName; + string sn = dtHg.Rows[0]["SerialNo"].ToString(); + Report2.ParameterByName("SerialNo").Value = sn; + string[] tmp = sn.Split('.'); + Report2.ParameterByName("BarCode").Value = sn + ";24;2217;;.0;" + tmp[1]; + Report2.ParameterByName("oneBarCode").Value = barcode; + Report2.ParameterByName("BatchNo").Value = tmp[1]; + Report2.Print(false); + textBox4.SelectAll(); + } + else + { + string path = System.Windows.Forms.Application.StartupPath + @"\aaa.grf"; + + GridppReport Report1 = new GridppReport(); + Report1.Register(""); + Report1.LoadFromFile(path); + Report1.ParameterByName("oneBarCode").Value = barcode; + Report1.ParameterByName("zcPartNo").Value = zl.zcPartNo; + Report1.ParameterByName("zcName").Value = zl.zcName; + Report1.Print(false); + textBox4.SelectAll(); + } + } + } + else + { + MessageBox.Show("根据总成号找不到对应名称,请维护基础数据!"); + textBox4_DoubleClick(sender, e); + return; + } + + } + catch (Exception ex) + { + textBox4_DoubleClick(sender, e); + } + } + else if (e.KeyCode == Keys.Escape) + { + textBox4_DoubleClick(sender, e); + } + } + + private void textBox4_DoubleClick(object sender, EventArgs e) + { + textBox4.Text = ""; + textBox4.Visible = false; + } + + private void label10_Click(object sender, EventArgs e) + { + + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumperS.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumperS.resx new file mode 100644 index 0000000..1f666f2 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenBumperS.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenS.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenS.Designer.cs new file mode 100644 index 0000000..0ba1a4f --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenS.Designer.cs @@ -0,0 +1,429 @@ +namespace PunchAndWeld +{ + partial class FrmProScreenS + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.button2 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button7 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.textBox5 = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // label4 + // + this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.ForeColor = System.Drawing.Color.White; + this.label4.Location = new System.Drawing.Point(45, 698); + this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(293, 79); + this.label4.TabIndex = 14; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.White; + this.label3.Location = new System.Drawing.Point(45, 519); + this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(293, 67); + this.label3.TabIndex = 13; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(45, 328); + this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(293, 68); + this.label2.TabIndex = 12; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(45, 138); + this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(293, 70); + this.label1.TabIndex = 11; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(38, 897); + this.textBox1.Margin = new System.Windows.Forms.Padding(2); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(310, 69); + this.textBox1.TabIndex = 10; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label6 + // + this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label6.BackColor = System.Drawing.Color.Transparent; + this.label6.Font = new System.Drawing.Font("微软雅黑", 180F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.ForeColor = System.Drawing.Color.Blue; + this.label6.Location = new System.Drawing.Point(372, 298); + this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(554, 303); + this.label6.TabIndex = 15; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label7 + // + this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label7.BackColor = System.Drawing.Color.Transparent; + this.label7.Font = new System.Drawing.Font("微软雅黑", 160F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); + this.label7.Location = new System.Drawing.Point(377, 691); + this.label7.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(549, 302); + this.label7.TabIndex = 16; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label8 + // + this.label8.BackColor = System.Drawing.Color.Transparent; + this.label8.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.ForeColor = System.Drawing.Color.White; + this.label8.Location = new System.Drawing.Point(939, 180); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(338, 67); + this.label8.TabIndex = 18; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.ForeColor = System.Drawing.Color.White; + this.label9.Location = new System.Drawing.Point(939, 87); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(338, 67); + this.label9.TabIndex = 17; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.Click += new System.EventHandler(this.label9_Click); + // + // label10 + // + this.label10.BackColor = System.Drawing.Color.Transparent; + this.label10.Font = new System.Drawing.Font("微软雅黑", 150F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.ForeColor = System.Drawing.Color.Red; + this.label10.Location = new System.Drawing.Point(933, 328); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(344, 293); + this.label10.TabIndex = 19; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label10.Click += new System.EventHandler(this.label10_Click); + // + // button2 + // + this.button2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(1116, 642); + this.button2.Margin = new System.Windows.Forms.Padding(2); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(153, 75); + this.button2.TabIndex = 21; + this.button2.Text = "下一计划"; + this.button2.UseVisualStyleBackColor = false; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(948, 642); + this.button1.Margin = new System.Windows.Forms.Padding(2); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(153, 75); + this.button1.TabIndex = 20; + this.button1.Text = "上一计划"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button5 + // + this.button5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button5.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button5.Location = new System.Drawing.Point(1116, 734); + this.button5.Margin = new System.Windows.Forms.Padding(2); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(156, 75); + this.button5.TabIndex = 23; + this.button5.Text = "不良转合格"; + this.button5.UseVisualStyleBackColor = false; + this.button5.Click += new System.EventHandler(this.button5_Click); + // + // button4 + // + this.button4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button4.Location = new System.Drawing.Point(946, 734); + this.button4.Margin = new System.Windows.Forms.Padding(2); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(156, 75); + this.button4.TabIndex = 22; + this.button4.Text = "产品不良"; + this.button4.UseVisualStyleBackColor = false; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // button7 + // + this.button7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.button7.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button7.Location = new System.Drawing.Point(948, 917); + this.button7.Margin = new System.Windows.Forms.Padding(2); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(156, 75); + this.button7.TabIndex = 26; + this.button7.Text = "计划完成"; + this.button7.UseVisualStyleBackColor = false; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // button6 + // + this.button6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button6.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button6.Location = new System.Drawing.Point(1116, 828); + this.button6.Margin = new System.Windows.Forms.Padding(2); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(156, 75); + this.button6.TabIndex = 25; + this.button6.Text = "计划查询"; + this.button6.UseVisualStyleBackColor = false; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // button3 + // + this.button3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(948, 828); + this.button3.Margin = new System.Windows.Forms.Padding(2); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(156, 75); + this.button3.TabIndex = 24; + this.button3.Text = "补打标签"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // textBox4 + // + this.textBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(431, 492); + this.textBox4.Margin = new System.Windows.Forms.Padding(2); + this.textBox4.Multiline = true; + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(453, 69); + this.textBox4.TabIndex = 29; + this.textBox4.Visible = false; + this.textBox4.DoubleClick += new System.EventHandler(this.textBox4_DoubleClick); + this.textBox4.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox4_KeyDown); + // + // textBox3 + // + this.textBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(412, 477); + this.textBox3.Margin = new System.Windows.Forms.Padding(2); + this.textBox3.Multiline = true; + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(453, 69); + this.textBox3.TabIndex = 28; + this.textBox3.Visible = false; + this.textBox3.DoubleClick += new System.EventHandler(this.textBox3_DoubleClick); + this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown); + // + // textBox2 + // + this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(396, 463); + this.textBox2.Margin = new System.Windows.Forms.Padding(2); + this.textBox2.Multiline = true; + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(453, 69); + this.textBox2.TabIndex = 27; + this.textBox2.Visible = false; + this.textBox2.DoubleClick += new System.EventHandler(this.textBox2_DoubleClick); + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.Transparent; + this.label5.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.ForeColor = System.Drawing.Color.White; + this.label5.Location = new System.Drawing.Point(941, 28); + this.label5.Margin = new System.Windows.Forms.Padding(0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(328, 40); + this.label5.TabIndex = 30; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // timer1 + // + this.timer1.Interval = 5000; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // textBox5 + // + this.textBox5.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox5.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox5.Location = new System.Drawing.Point(414, 478); + this.textBox5.Margin = new System.Windows.Forms.Padding(2); + this.textBox5.Multiline = true; + this.textBox5.Name = "textBox5"; + this.textBox5.Size = new System.Drawing.Size(453, 69); + this.textBox5.TabIndex = 31; + this.textBox5.Visible = false; + this.textBox5.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox5_KeyDown); + // + // FrmProScreenS + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = global::PunchAndWeld.Properties.Resources._20200723112650; + this.ClientSize = new System.Drawing.Size(1280, 1024); + this.Controls.Add(this.textBox5); + this.Controls.Add(this.label5); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.button7); + this.Controls.Add(this.button6); + this.Controls.Add(this.button3); + this.Controls.Add(this.button5); + this.Controls.Add(this.button4); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.label10); + this.Controls.Add(this.label8); + this.Controls.Add(this.label9); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.textBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmProScreenS"; + this.Text = "FrmProScreenS"; + this.Load += new System.EventHandler(this.FrmProScreenS_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.TextBox textBox5; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenS.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenS.cs new file mode 100644 index 0000000..3ce2745 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenS.cs @@ -0,0 +1,1235 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using DBUtility; +using gregn6Lib; +using MESClassLibrary.BLL.Log; +using PunchAndWeld.DataSouce; +using PunchAndWeld.WebReference; + +namespace PunchAndWeld +{ + public partial class FrmProScreenS : Form + { + private GridppReport Report = new GridppReport(); + private string oneBarCode = "", stationNo ="",stationId =""; + + public FrmProScreenS() + { + InitializeComponent(); + } + + private void FrmProScreenS_Load(object sender, EventArgs e) + { + try + { + var serverUrl = "http://10.60.101.10:8013/"; + var updateXmlFileName = "ProScreenUpdate.xml"; + var updater = new AutoUpdater(); + if (updater.CheckUpdateLoad(serverUrl, updateXmlFileName)) + { + Environment.Exit(0); + } + + label5.Text = "当前版本:" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); + stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + stationId = ProScreenFunc.GetStationId(stationNo); + label1.Text = ProScreenFunc.GetStation(stationNo); + + Control.CheckForIllegalCrossThreadCalls = false; + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + + LoadScreen(); + textBox1.TabIndex = 0; + textBox1.Select(); + + if (ConfigurationManager.AppSettings["IsHaveVisual"].ToString() == "1") + { + SqlStart(); + } + + timer1.Enabled = true; + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + label9.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + + public void LoadScreen() + { + string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreen(stationNo); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + } + + public void SetPage(DataTable dt) + { + textBox2.Text = ""; + textBox2.Visible = false; + textBox3.Text = ""; + textBox3.Visible = false; + textBox4.Text = ""; + textBox4.Visible = false; + + if (dt != null && dt.Rows.Count > 0) + { + label1.Text = dt.Rows[0]["Des"].ToString(); + label2.Text = dt.Rows[0]["OrderNo"].ToString(); + label3.Text = dt.Rows[0]["PartNo"].ToString(); + label4.Text = dt.Rows[0]["ProductName"].ToString(); + //label5.Text = dt.Rows[0]["Des"].ToString(); + label6.Text = dt.Rows[0]["OrderCount"].ToString(); + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + label8.Text = dt.Rows[0]["OrderNo"].ToString().Substring(0, 1) + "班"; + label10.Text = dt.Rows[0]["BadCount"].ToString(); + + this.Tag = dt.Rows[0]["ID"].ToString(); + textBox1.Tag = dt.Rows[0]["ProductID1"].ToString(); + textBox1.Text = ""; + } + } + + private void SqlStart() + { + try + { + SqlDependency.Start(SqlHelper.SqlConnString); + SqlDependencyWatch(); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void SqlDependencyWatch() + { + string sSQL = @"SELECT [ToVisual] FROM [dbo].[tb_Punch_Code_Record] where StationId='" + stationId +@"'"; + + using (SqlConnection connection = new SqlConnection(SqlHelper.SqlConnString)) + { + using (SqlCommand command = new SqlCommand(sSQL, connection)) + { + command.CommandType = CommandType.Text; + connection.Open(); + SqlDependency dependency = new SqlDependency(command); + dependency.OnChange += new OnChangeEventHandler(SQLTableOnChange); + SqlDataReader sdr = command.ExecuteReader(); + } + } + } + + private void SQLTableOnChange(object sender, SqlNotificationEventArgs e) + { + SqlDependencyWatch(); + AfterScanBarcode(); + } + + private void AfterScanBarcode() + { + string ID = "", barcode = "", productID2 = "", productID1 = ""; + + DataTable dt1 = ProScreenFunc.HavePrint(stationId); + if (dt1 != null && dt1.Rows.Count > 0) + { + if (dt1.Rows[0]["PlanID"].ToString() != base.Tag.ToString().Trim()) + { + MessageBox.Show("产品和计划不匹配"); + return; + } + else + { + ID = dt1.Rows[0]["ID"].ToString(); + barcode = dt1.Rows[0]["barcode"].ToString(); + oneBarCode = barcode; + productID2 = dt1.Rows[0]["BcpID"].ToString(); + productID1 = dt1.Rows[0]["ZcID"].ToString(); + } + } + else + { + return; + } + + this.Invoke((EventHandler)(delegate + { + + try + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", + MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + partNo = label3.Text.Trim(); + //2020-11-11 由原来的datetime.Now.ToString("yyyyMMdd")修改成计划的录入时间 + batchNo = ProScreenFunc.GetPlanTime(base.Tag.ToString().Trim()).ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + bool aa = webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + if (aa) + { + + ProScreenFunc.AddCompleteCount(this.Tag.ToString().Trim()); + + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + string path = ""; + if (label3.Text.Trim().Contains("A2477900588-")) + { + path = Application.StartupPath + @"\aaa1.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize1); + } + else + { + path = Application.StartupPath + @"\aaa.grf"; + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize); + } + + Report.Register(""); + Report.LoadFromFile(path); + + //Report.DesignPaperOrientation = GRPaperOrientation.grpoLandscape; + //report.PrintPreview(true); + Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + ProScreenFunc.UpdatePrintTime(ID); + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount(this.Tag.ToString().Trim()); + } + } + else + { + MessageBox.Show("WMS入库失败,请稍后重新扫描"); + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), + MethodBase.GetCurrentMethod().Name); + } + + ProScreenFunc.SavePartAndProductBF(barcode, productID2, productID1, label2.Text, label8.Text, + base.Tag.ToString().Trim()); + })); + } + + private void AfterScanBarcode1(string barcode, string productID2, string productID1, string planID) + { + + try + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + partNo = label3.Text.Trim(); + //2020-11-11 由原来的datetime.Now.ToString("yyyyMMdd")修改成计划的录入时间 + batchNo = ProScreenFunc.GetPlanTime(planID).ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + + if (!barcode.Contains("A2958855702-9040")) + { + bool aa = webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 1); + if (aa) + { + + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo(label3.Text.Trim(), time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + label3.Text.Trim() + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + if (ProScreenFunc.SavePartAndProduct1(barcode, productID2, productID1, label2.Text, label8.Text, + planID, sn,stationId, ConfigurationManager.AppSettings["StationDescription"]) <=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + ProScreenFunc.SaveZcCode(barcode, label3.Text.Trim()); + ProScreenFunc.AddCompleteCount(this.Tag.ToString().Trim()); + + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + string path = ""; + if (label3.Text.Trim().Contains("A2477900588-") || + label3.Text.Trim().Contains("A2477900000-")) + { + path = Application.StartupPath + @"\aaa1.grf"; + Report.Initialize += + new _IGridppReportEvents_InitializeEventHandler(ReportInitialize1); + } + else if (label3.Text.Trim().Contains("B2958855702-") || + label3.Text.Trim().Contains("B2958855703-")) + { + path = Application.StartupPath + @"\aaa2.grf"; + Report.Initialize += + new _IGridppReportEvents_InitializeEventHandler(ReportInitialize2); + } + else + { + path = Application.StartupPath + @"\aaa.grf"; + Report.Initialize += + new _IGridppReportEvents_InitializeEventHandler(ReportInitialize); + } + + Report.Register(""); + Report.LoadFromFile(path); + + //Report.DesignPaperOrientation = GRPaperOrientation.grpoLandscape; + //report.PrintPreview(true); + Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount(this.Tag.ToString().Trim()); + } + + } + else + { + MessageBox.Show("WMS入库失败,请稍后重新扫描"); + } + } + else + { + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo(label3.Text.Trim(), time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + label3.Text.Trim() + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + if (ProScreenFunc.SavePartAndProduct1(barcode, productID2, productID1, label2.Text, label8.Text, + planID, sn,stationId, ConfigurationManager.AppSettings["StationDescription"]) <=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + ProScreenFunc.SaveZcCode(barcode, label3.Text.Trim()); + + ProScreenFunc.AddCompleteCount(this.Tag.ToString().Trim()); + + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + string path = ""; + if (label3.Text.Trim().Contains("A2477900588-") || + label3.Text.Trim().Contains("A2477900000-")) + { + path = Application.StartupPath + @"\aaa1.grf"; + Report.Initialize += + new _IGridppReportEvents_InitializeEventHandler(ReportInitialize1); + } + else if (label3.Text.Trim().Contains("B2958855702-") || + label3.Text.Trim().Contains("B2958855703-")) + { + path = Application.StartupPath + @"\aaa2.grf"; + Report.Initialize += + new _IGridppReportEvents_InitializeEventHandler(ReportInitialize2); + } + else + { + path = Application.StartupPath + @"\aaa.grf"; + Report.Initialize += + new _IGridppReportEvents_InitializeEventHandler(ReportInitialize); + } + + Report.Register(""); + Report.LoadFromFile(path); + + //Report.DesignPaperOrientation = GRPaperOrientation.grpoLandscape; + //report.PrintPreview(true); + Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount(this.Tag.ToString().Trim()); + } + + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + ProScreenFunc.SavePartAndProductBF(barcode, productID2, productID1, label2.Text, label8.Text, planID); + } + + private void SavePunch(string barcode, string productID2, string productID1, string planID,string stationId) + { + + ProScreenFunc.SavePartAndProduct(barcode, productID2, productID1, label2.Text, label8.Text, planID, stationId, ConfigurationManager.AppSettings["StationDescription"]); + ProScreenFunc.SaveZcCode(barcode, label3.Text.Trim()); + } + + private void ReportInitialize() + { + try + { + DateTime time = DateTime.Now; + string tmp = ProScreenFunc.SerialNo(label3.Text.Trim(), time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + label3.Text.Trim() + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + Report.ParameterByName("SerialNo").Value = sn; + Report.ParameterByName("oneBarCode").Value = oneBarCode; + Report.ParameterByName("zcPartNo").Value = label3.Text.Trim(); + Report.ParameterByName("zcName").Value = label4.Text.Trim(); + } + catch (Exception ex) + { + MessageBox.Show("连接数据库超时!"); + } + + } + + private void ReportInitialize1() + { + string barcode = textBox1.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + DateTime time = DateTime.Now; + if (label3.Text.Trim().Contains("A2477900588-")) + { + Report.ParameterByName("Des").Value = "X247S"; + } + if (label3.Text.Trim().Contains("A2477900000-")) + { + Report.ParameterByName("Des").Value = "H247S"; + } + Report.ParameterByName("PartNo").Value = label3.Text.Trim(); + Report.ParameterByName("PartName").Value = label4.Text.Trim(); + Report.ParameterByName("BatchNo").Value = time.ToString("yyMMdd"); + string tmp = ProScreenFunc.SerialNo(label3.Text.Trim(), time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + label3.Text.Trim() + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + Report.ParameterByName("SerialNo").Value = sn; + Report.ParameterByName("BarCode").Value = sn + ";24;2217;;.0;" + time.ToString("yyyy/MM/dd"); + Report.ParameterByName("oneBarCode").Value = barcode; + } + + private void ReportInitialize2() + { + string barcode = textBox1.Text.Trim(); + DateTime time = DateTime.Now; + + string tmp = ProScreenFunc.SerialNo(label3.Text.Trim(), time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = + label3.Text.Trim() + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + Report.ParameterByName("BarCode").Value = sn; + Report.ParameterByName("PartName").Value = label4.Text.Trim(); + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + CheckPartAndProduct(); + } + } + + public void CheckPartAndProduct() + { + textBox1.SelectAll(); + string barcode = textBox1.Text.Trim(); + + if (!barcode.Contains("A2958855702-9040")) + { + if (barcode.Length != 20 ) + { + MessageBox.Show("条码位数有误,请重新扫描!"); + textBox1.SelectAll(); + return; + } + + oneBarCode = barcode; + } + + if (!ProScreenFunc.CanScan(this.Tag.ToString().Trim())) + { + MessageBox.Show("完成数量等于计划数量,不允许扫描!"); + textBox1.SelectAll(); + return; + } + + if (ConfigurationManager.AppSettings["IsHaveVisual"].ToString() == "1") + { + if (ProScreenFunc.HaveNotPrint(stationId)) + { + MessageBox.Show("存在未打印标签的产品,不允许扫描!"); + textBox1.SelectAll(); + return; + } + } + + if (!barcode.Contains("A2958855702-9040")) + { + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + } + + + if (ProScreenFunc.HaveScan(barcode)) + { + if (ProScreenFunc.IsBad(barcode)) + { + MessageBox.Show("条码为" + barcode + "的蒙皮为不良品,请操作不良转合格!"); + textBox1.SelectAll(); + return; + } + + + if (ProScreenFunc.IsPunch(barcode, ConfigurationManager.AppSettings["StationNo"])) + { + DialogResult result = MessageBox.Show("条码为" + barcode + "的蒙皮已经装配,是否重新装配?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + + ScanBarcode(barcode); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + else + { + return; + } + + } + else + { + ScanBarcode(barcode); + } + } + else + { + ScanBarcode(barcode); + } + + } + + private void ScanBarcode(string barcode) + { + string productID = this.textBox1.Tag.ToString().Trim(); + string[] codeSpecial = ProScreenFunc.GetSpecialStockNo(); + string code = barcode.Substring(0, 10); + + if (codeSpecial.Contains(code) && !ProScreenFunc.HaveInspect(barcode) && ProScreenFunc.IsFBC(code, this.label3.Text.Trim())) + { + if (ProScreenFunc.HaveScan(barcode)) + { + string productID2 = ProScreenFunc.GetProductID(barcode); + if (!ProScreenFunc.CheckPartAndProduct(productID, productID2)) + { + this.InsLog(productID, productID2); + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + this.textBox1.Text = ""; + } + else + { + SavePunch(barcode, productID2, productID, base.Tag.ToString().Trim(),stationId); + if (ConfigurationManager.AppSettings["IsHaveVisual"].ToString() != "1") + { + + if (!barcode.Contains("A2958855702-9040")) + { + this.AfterScanBarcode1(barcode, productID2, productID, base.Tag.ToString().Trim()); + } + else + { + textBox5.Visible = true; + textBox5.Focus(); + } + } + } + } + else + { + string productID2 = ProScreenFunc.GetProductID(code, ""); + SavePunch(barcode, productID2, productID, base.Tag.ToString().Trim(), stationId); + if (ConfigurationManager.AppSettings["IsHaveVisual"].ToString() != "1") + { + if (!barcode.Contains("A2958855702-9040")) + { + this.AfterScanBarcode1(barcode, productID2, productID, base.Tag.ToString().Trim()); + } + else + { + textBox5.Visible = true; + textBox5.Focus(); + } + } + } + } + else + { + string productID2 = ProScreenFunc.GetProductID(barcode); + if (string.IsNullOrWhiteSpace(productID2)) + { + string stockNo = barcode.Substring(0, 10); + productID2 = ProScreenFunc.GetProductID(stockNo, ""); + } + + if (barcode.Contains("A2958855702-9040")) + { + productID2 = ProScreenFunc.GetProductIDByPartNo("A2958855702-9040"); + } + if (!ProScreenFunc.CheckPartAndProduct(productID, productID2)) + { + this.InsLog(productID, productID2); + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + this.textBox1.Text = ""; + } + else + { + ScanAll.ScanResult = false; + OtherPart parts = ProScreenFunc.HaveOtherPart(this.label1.Text.Trim(), productID); + if (parts != null && (!string.IsNullOrWhiteSpace(parts.productID3) || !string.IsNullOrWhiteSpace(parts.productID4) || !string.IsNullOrWhiteSpace(parts.productID5))) + { + FrmProScreen3 frm3 = new FrmProScreen3(parts); + frm3.ShowDialog(); + } + else + { + ScanAll.ScanResult = true; + } + if (ScanAll.ScanResult) + { + + if (ConfigurationManager.AppSettings["IsHaveVisual"].ToString() != "1") + { + if (!barcode.Contains("A2958855702-9040")) + { + this.AfterScanBarcode1(barcode, productID2, productID, base.Tag.ToString().Trim()); + } + else + { + textBox5.Visible = true; + textBox5.Focus(); + } + } + else + { + SavePunch(barcode, productID2, productID, base.Tag.ToString().Trim(),stationId); + } + } + } + } + } + + public void InsLog(string productID1, string productID2) + { + LogHelper.WriteSysLogBase("一码到底【当前扫描的零件与总成不匹配】:productID1:" + productID1 + ",productID2:" + productID2 + ",工位:" + label1.Text + ",计划ID:" + this.Tag.ToString(), MethodBase.GetCurrentMethod().Name); + } + + private void button1_Click(object sender, EventArgs e) + { + if (this.Tag.ToString() == "") + { + MessageBox.Show("无上一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "上一计划"); + } + } + + public void LoadPlanScreen(string id, string plan) + { + string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreenPlan(id, stationNo, plan); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + else + { + if (plan == "下一计划") + MessageBox.Show("无下一计划"); + else + MessageBox.Show("无上一计划"); + } + } + + private void button2_Click(object sender, EventArgs e) + { + if (this.Tag.ToString() == "") + { + MessageBox.Show("无下一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + } + + private void button4_Click(object sender, EventArgs e) + { + textBox2.Visible = true; + textBox2.Focus(); + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox2.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + + + if (ProScreenFunc.HaveScan(barcode)) + { + #region 调WMS接口--20200522注销:不需要调WMS接口 + + //try + //{ + // LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + // string stockNo = ""; + // string batchNo = ""; + // string partNo = ""; + // ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + // partNo = label3.Text.Trim(); + // batchNo = DateTime.Now.ToString("yyyyMMdd"); + + // WMSWebService webService = new WMSWebService(); + // webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + // webService.WMSInterfaceStockIn(barcode, partNo, batchNo, 0); + //} + //catch (Exception ex) + //{ + // LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + //} + + #endregion + + if (ProScreenFunc.IsBad(barcode)) + { + MessageBox.Show("该条码已经做过报废处理!", "提示"); + textBox2.Text = ""; + textBox2.Visible = false; + return; + } + + string planID = ProScreenFunc.GetPlanIDByBarcode(barcode); + ProScreenFunc.AddBadCount(planID.Trim()); + ProScreenFunc.SubCompleteCount(planID.Trim()); + + ProScreenFunc.SaveRecord2(barcode, "0", planID); + + + DataTable dt = ProScreenFunc.GetProScreenByPlanID(this.Tag.ToString().Trim()); + SetPage(dt); + + //label10.Text = (Tools.NumericParse.StringToInt(label10.Text.Trim()) + 1).ToString(); + //label7.Text = (Tools.NumericParse.StringToInt(label7.Text.Trim()) - 1).ToString(); + + textBox2.Text = ""; + textBox2.Visible = false; + } + else + { + MessageBox.Show("还未进行装配!", "提示"); + + textBox2.Text = ""; + textBox2.Visible = false; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + else if (e.KeyCode == Keys.Escape) + { + textBox2.Text = ""; + textBox2.Visible = false; + } + } + + private void button5_Click(object sender, EventArgs e) + { + textBox3.Visible = true; + textBox3.Focus(); + } + + private void textBox3_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox3.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + + + if (ProScreenFunc.IsBad(barcode)) + { + + string planID = ProScreenFunc.GetPlanIDByBarcode(barcode); + if (!ProScreenFunc.CheckPlanCompleted(planID)) + { + ProScreenFunc.SubBadCount(planID.Trim()); + ProScreenFunc.AddCompleteCount(planID.Trim()); + + ProScreenFunc.SaveRecord2(barcode, "1", planID); + } + else + { + string partNo = ProScreenFunc.GetPaintCode(barcode); + if (partNo == label3.Text.Trim()) + { + ProScreenFunc.AddCompleteCount(Tag.ToString().Trim()); + ProScreenFunc.SaveRecord2(barcode, "1", Tag.ToString().Trim()); + } + else + { + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描!"); + } + } + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + //label10.Text = (Tools.NumericParse.StringToInt(label10.Text.Trim()) - 1).ToString(); + //label7.Text = (Tools.NumericParse.StringToInt(label7.Text.Trim()) + 1).ToString(); + + DataTable dt = ProScreenFunc.GetProScreenByPlanID(this.Tag.ToString().Trim()); + SetPage(dt); + } + + textBox3.Text = ""; + textBox3.Visible = false; + } + else + { + MessageBox.Show("该条码未做过报废处理,无法转合格!", "提示"); + textBox3.Text = ""; + textBox3.Visible = false; + } + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + + } + else if (e.KeyCode == Keys.Escape) + { + textBox3.Text = ""; + textBox3.Visible = false; + } + } + + private void textBox2_DoubleClick(object sender, EventArgs e) + { + textBox2.Text = ""; + textBox2.Visible = false; + } + + private void textBox3_DoubleClick(object sender, EventArgs e) + { + textBox3.Text = ""; + textBox3.Visible = false; + } + + private void button3_Click(object sender, EventArgs e) + { + DialogResult result = MessageBox.Show("是否补打标签?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + textBox4.Text = ""; + textBox4.Visible = true; + textBox4.Focus(); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + return; + } + }; + pass.ShowDialog(); + } + else + { + return; + } + + + } + + private void textBox4_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox4.Text.Trim(); + if (!barcode.Contains("A2958855702")) + { + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + } + + DataTable dtHg = ProScreenFunc.GetGh(barcode); + if (dtHg == null || dtHg.Rows.Count < 1) + { + MessageBox.Show("未装配,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + + DataTable dtBl = ProScreenFunc.GetBl(barcode); + if (dtBl != null && dtBl.Rows.Count > 0) + { + DateTime hgTime = (DateTime)Tools.NumericParse.StringToDateTime("1900-01-01 00:00:00"); + DataTable dtHG1 = ProScreenFunc.GetHG_New(barcode); + if (dtHG1 != null && dtHG1.Rows.Count > 0) + { + hgTime = (DateTime)Tools.NumericParse.StringToDateTime(dtHG1.Rows[0]["CreateTime"].ToString()); + } + + DateTime blTime = (DateTime)Tools.NumericParse.StringToDateTime(dtBl.Rows[0]["createTime"].ToString()); + if (DateTime.Compare(blTime, hgTime) > 0) + { + MessageBox.Show("产品不良,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + } + + + LogSysBLL.AddInfo("条码:" + barcode + "补打标签", MethodBase.GetCurrentMethod()); + + string zcID = dtHg.Rows[0]["ZcID"].ToString(); + ZcPrintLabel zl = ProScreenFunc.GetZcPrintLabel(zcID); + if (zl != null && zl.zcPartNo != null && zl.zcName != null) + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + if (zl.zcPartNo.Contains("A2477900588-") || zl.zcPartNo.Contains("A2477900000-")) + { + string path = System.Windows.Forms.Application.StartupPath + @"\aaa1.grf"; + + GridppReport Report2 = new GridppReport(); + Report2.Register(""); + Report2.LoadFromFile(path); + if (zl.zcPartNo.Contains("A2477900588-")) + { + Report2.ParameterByName("Des").Value = "X247S"; + } + if (zl.zcPartNo.Contains("A2477900000-")) + { + Report2.ParameterByName("Des").Value = "H247S"; + } + Report2.ParameterByName("PartNo").Value = zl.zcPartNo; + Report2.ParameterByName("PartName").Value = zl.zcName; + string sn = dtHg.Rows[0]["SerialNo"].ToString(); + Report2.ParameterByName("SerialNo").Value = sn; + string[] tmp = sn.Split('.'); + Report2.ParameterByName("BarCode").Value = sn + ";24;2217;;.0;" + tmp[1]; + Report2.ParameterByName("oneBarCode").Value = barcode; + Report2.ParameterByName("BatchNo").Value = tmp[1]; + Report2.Print(false); + textBox4.SelectAll(); + } + else if (zl.zcPartNo.Contains("B2958855702") || zl.zcPartNo.Contains("B2958855703")) + { + string path = System.Windows.Forms.Application.StartupPath + @"\aaa2.grf"; + + GridppReport Report3 = new GridppReport(); + Report3.Register(""); + Report3.LoadFromFile(path); + + Report3.ParameterByName("BarCode").Value = dtHg.Rows[0]["SerialNo"].ToString(); + Report3.ParameterByName("PartName").Value = zl.zcName; + Report3.Print(false); + textBox4.SelectAll(); + } + else + { + string path = System.Windows.Forms.Application.StartupPath + @"\aaa.grf"; + + GridppReport Report1 = new GridppReport(); + Report1.Register(""); + Report1.LoadFromFile(path); + Report1.ParameterByName("oneBarCode").Value = barcode; + Report1.ParameterByName("zcName").Value = zl.zcName; + Report1.ParameterByName("zcPartNo").Value = zl.zcPartNo; + Report1.ParameterByName("SerialNo").Value = dtHg.Rows[0]["SerialNo"].ToString(); + Report1.Print(false); + textBox4.SelectAll(); + } + } + } + else + { + MessageBox.Show("根据总成号找不到对应名称,请维护基础数据!"); + textBox4_DoubleClick(sender, e); + return; + } + + } + catch (Exception ex) + { + textBox4_DoubleClick(sender, e); + } + } + else if (e.KeyCode == Keys.Escape) + { + textBox4_DoubleClick(sender, e); + } + } + + private void textBox4_DoubleClick(object sender, EventArgs e) + { + textBox4.Text = ""; + textBox4.Visible = false; + } + + private void button6_Click(object sender, EventArgs e) + { + FrmProScreen2 frm = new FrmProScreen2(); + frm.Show(); + } + + private void button7_Click(object sender, EventArgs e) + { + ProScreenFunc.SetPlanComplete(this.Tag.ToString().Trim()); + LoadScreen(); + } + + private void label9_Click(object sender, EventArgs e) + { + SqlDependency.Stop(SqlHelper.SqlConnString); + Environment.Exit(0); + } + + private void label10_Click(object sender, EventArgs e) + { + + } + + private void textBox5_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string boxNo = textBox5.Text.Trim(); + + if (label3.Text.Trim() == "B2958855702-9040") + { + if (!boxNo.Contains("A2958855901") || !boxNo.Contains("A2958856001") || + !boxNo.Contains("A2958858401") || !boxNo.Contains("A2958859001")) + { + MessageBox.Show("电镀条和总成不匹配,请重新扫描!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + } + else if (label3.Text.Trim() == "B2958855703-9040") + { + if (!boxNo.Contains("A2958856501") || !boxNo.Contains("A2958856601") || + !boxNo.Contains("A2958858901") || !boxNo.Contains("A2958859301")) + { + MessageBox.Show("电镀条和总成不匹配,请重新扫描!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + } + + string barcode = textBox1.Text.Trim(); + string productID2 = ProScreenFunc.GetProductIDByPartNo("A2958855702-9040"); + string productID = this.textBox1.Tag.ToString().Trim(); + + AfterScanBarcode1(barcode,productID2,productID,Tag.ToString()); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + } + + private void timer1_Tick(object sender, EventArgs e) + { + + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenS.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenS.resx new file mode 100644 index 0000000..1f666f2 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreenS.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow.Designer.cs new file mode 100644 index 0000000..f3d12bd --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow.Designer.cs @@ -0,0 +1,341 @@ + +namespace PunchAndWeld +{ + partial class FrmProScreen_WheelBrow + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.button7 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.SuspendLayout(); + // + // label4 + // + this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.ForeColor = System.Drawing.Color.White; + this.label4.Location = new System.Drawing.Point(48, 697); + this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(293, 79); + this.label4.TabIndex = 18; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.White; + this.label3.Location = new System.Drawing.Point(48, 518); + this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(293, 67); + this.label3.TabIndex = 17; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(48, 327); + this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(293, 68); + this.label2.TabIndex = 16; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(48, 137); + this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(293, 70); + this.label1.TabIndex = 15; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(38, 894); + this.textBox1.Margin = new System.Windows.Forms.Padding(2); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(310, 69); + this.textBox1.TabIndex = 19; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.Transparent; + this.label5.Font = new System.Drawing.Font("微软雅黑", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.ForeColor = System.Drawing.Color.White; + this.label5.Location = new System.Drawing.Point(943, 29); + this.label5.Margin = new System.Windows.Forms.Padding(0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(328, 40); + this.label5.TabIndex = 36; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label10 + // + this.label10.BackColor = System.Drawing.Color.Transparent; + this.label10.Font = new System.Drawing.Font("微软雅黑", 150F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.ForeColor = System.Drawing.Color.Red; + this.label10.Location = new System.Drawing.Point(935, 329); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(344, 293); + this.label10.TabIndex = 35; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label8 + // + this.label8.BackColor = System.Drawing.Color.Transparent; + this.label8.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.ForeColor = System.Drawing.Color.White; + this.label8.Location = new System.Drawing.Point(941, 181); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(338, 67); + this.label8.TabIndex = 34; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.ForeColor = System.Drawing.Color.White; + this.label9.Location = new System.Drawing.Point(941, 88); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(338, 67); + this.label9.TabIndex = 33; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.Click += new System.EventHandler(this.label9_Click); + // + // label7 + // + this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label7.BackColor = System.Drawing.Color.Transparent; + this.label7.Font = new System.Drawing.Font("微软雅黑", 160F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); + this.label7.Location = new System.Drawing.Point(379, 692); + this.label7.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(549, 302); + this.label7.TabIndex = 32; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label6 + // + this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label6.BackColor = System.Drawing.Color.Transparent; + this.label6.Font = new System.Drawing.Font("微软雅黑", 180F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.ForeColor = System.Drawing.Color.Blue; + this.label6.Location = new System.Drawing.Point(374, 299); + this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(554, 303); + this.label6.TabIndex = 31; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // button7 + // + this.button7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.button7.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button7.Location = new System.Drawing.Point(950, 862); + this.button7.Margin = new System.Windows.Forms.Padding(2); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(156, 75); + this.button7.TabIndex = 41; + this.button7.Text = "计划完成"; + this.button7.UseVisualStyleBackColor = false; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // button6 + // + this.button6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button6.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button6.Location = new System.Drawing.Point(1118, 750); + this.button6.Margin = new System.Windows.Forms.Padding(2); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(156, 75); + this.button6.TabIndex = 40; + this.button6.Text = "计划查询"; + this.button6.UseVisualStyleBackColor = false; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // button3 + // + this.button3.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(950, 750); + this.button3.Margin = new System.Windows.Forms.Padding(2); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(156, 75); + this.button3.TabIndex = 39; + this.button3.Text = "补打标签"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // button2 + // + this.button2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button2.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(1118, 640); + this.button2.Margin = new System.Windows.Forms.Padding(2); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(153, 75); + this.button2.TabIndex = 38; + this.button2.Text = "下一计划"; + this.button2.UseVisualStyleBackColor = false; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(950, 640); + this.button1.Margin = new System.Windows.Forms.Padding(2); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(153, 75); + this.button1.TabIndex = 37; + this.button1.Text = "上一计划"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // textBox4 + // + this.textBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(414, 506); + this.textBox4.Margin = new System.Windows.Forms.Padding(2); + this.textBox4.Multiline = true; + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(453, 69); + this.textBox4.TabIndex = 42; + this.textBox4.Visible = false; + this.textBox4.DoubleClick += new System.EventHandler(this.textBox4_DoubleClick); + this.textBox4.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox4_KeyDown); + // + // timer1 + // + this.timer1.Interval = 5000; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // FrmProScreen_WheelBrow + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = global::PunchAndWeld.Properties.Resources._20200723112650; + this.ClientSize = new System.Drawing.Size(1280, 1024); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.button7); + this.Controls.Add(this.button6); + this.Controls.Add(this.button3); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.label5); + this.Controls.Add(this.label10); + this.Controls.Add(this.label8); + this.Controls.Add(this.label9); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmProScreen_WheelBrow"; + this.Text = "轮眉"; + this.Load += new System.EventHandler(this.FrmProScreen_WheelBrow_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.Timer timer1; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow.cs new file mode 100644 index 0000000..cf9d3f3 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow.cs @@ -0,0 +1,600 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using gregn6Lib; +using MESClassLibrary.BLL.Log; +using PunchAndWeld.DataSouce; +using PunchAndWeld.WebReference; + +namespace PunchAndWeld +{ + public partial class FrmProScreen_WheelBrow : Form + { + private GridppReport Report = new GridppReport(); + private string oneBarCode = ""; + string stationNo = "", stationId = ""; + + public FrmProScreen_WheelBrow() + { + InitializeComponent(); + } + + private void FrmProScreen_WheelBrow_Load(object sender, EventArgs e) + { + try + { + var serverUrl = "http://10.60.101.10:8013/"; + var updateXmlFileName = "ProScreenUpdate.xml"; + var updater = new AutoUpdater(); + if (updater.CheckUpdateLoad(serverUrl, updateXmlFileName)) + { + Environment.Exit(0); + } + + label5.Text = "当前版本:" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); + stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + stationId = ProScreenFunc.GetStationId(stationNo); + label1.Text = ProScreenFunc.GetStation(stationNo); + + Control.CheckForIllegalCrossThreadCalls = false; + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + + LoadScreen(); + textBox1.TabIndex = 0; + textBox1.Select(); + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + label9.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + + public void LoadScreen() + { + //string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreen(stationNo); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + } + + public void SetPage(DataTable dt) + { + textBox4.Text = ""; + textBox4.Visible = false; + + if (dt != null && dt.Rows.Count > 0) + { + #region 页面赋值 + + label1.Text = dt.Rows[0]["Des"].ToString(); + label2.Text = dt.Rows[0]["OrderNo"].ToString(); + label3.Text = dt.Rows[0]["PartNo"].ToString(); + label4.Text = dt.Rows[0]["ProductName"].ToString(); + //label5.Text = dt.Rows[0]["Des"].ToString(); + label6.Text = dt.Rows[0]["OrderCount"].ToString(); + label7.Text = dt.Rows[0]["CompleteCount"].ToString(); + label8.Text = dt.Rows[0]["OrderNo"].ToString().Substring(0, 1) + "班"; + label10.Text = dt.Rows[0]["BadCount"].ToString(); + + this.Tag = dt.Rows[0]["ID"].ToString(); //计划ID + textBox1.Tag = dt.Rows[0]["ProductID1"].ToString(); + textBox1.Text = ""; + + #endregion + } + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + CheckPartAndProduct(); + } + } + + public void CheckPartAndProduct() + { + textBox1.SelectAll(); + string barcode = textBox1.Text.Trim(); + + if (barcode.Length != 20) + { + MessageBox.Show("条码位数有误,请重新扫描!"); + textBox1.SelectAll(); + return; + } + + #region 查询完成数==计划数,如果相等,就不允许扫描 + + if (!ProScreenFunc.CanScan(this.Tag.ToString().Trim())) + { + MessageBox.Show("完成数量等于计划数量,不允许扫描!"); + textBox1.SelectAll(); + return; + } + + #endregion + + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + #region 查询是否已扫描过,如果扫过,需输入用户名密码,确认过才可以再扫 + + if (ProScreenFunc.HaveScan(barcode)) + { + if (ProScreenFunc.IsBad(barcode)) + { + MessageBox.Show("条码为" + barcode + "的蒙皮为不良品!"); + textBox1.SelectAll(); + return; + } + + DialogResult result = MessageBox.Show("条码为" + barcode + "的蒙皮已经装配,是否重新装配?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); + if (result == DialogResult.OK) + { + FrmPassWord pass = new FrmPassWord(); + pass.OkBtnClick += (arg1) => + { + if (!string.IsNullOrEmpty(arg1) && + arg1.ToLower() == ConfigurationManager.AppSettings["password"].ToLower()) + { + pass.Close(); + + ScanBarcode(barcode); + } + else + { + MessageBox.Show("密码错误,请重新输入!", "提示", MessageBoxButtons.OK); + } + }; + pass.ShowDialog(); + } + else + { + return; + } + } + else + { + ScanBarcode(barcode); + } + + #endregion + } + + private void ScanBarcode(string barcode) + { + string productID = this.textBox1.Tag.ToString().Trim(); + string[] codeSpecial = ProScreenFunc.GetSpecialStockNo(); + string code = barcode.Substring(0, 10); + + if (codeSpecial.Contains(code) && !ProScreenFunc.HaveInspect(barcode) && ProScreenFunc.IsFBC(code, this.label3.Text.Trim())) + { + if (ProScreenFunc.HaveScan(barcode)) + { + string productID2 = ProScreenFunc.GetProductID(barcode); + if (!ProScreenFunc.CheckPartAndProduct(productID, productID2)) + { + this.InsLog(productID, productID2); + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + this.textBox1.Text = ""; + } + else + { + SavePunch(barcode, productID2, productID, base.Tag.ToString().Trim(),stationId); + if (ConfigurationManager.AppSettings["IsHaveVisual"].ToString() != "1") + { + this.AfterScanBarcode1(barcode, productID2, productID, base.Tag.ToString().Trim()); + } + + } + } + else + { + string productID2 = ProScreenFunc.GetProductID(code, ""); + SavePunch(barcode, productID2, productID, base.Tag.ToString().Trim(), stationId); + if (ConfigurationManager.AppSettings["IsHaveVisual"].ToString() != "1") + { + this.AfterScanBarcode1(barcode, productID2, productID, base.Tag.ToString().Trim()); + } + } + } + else + { + string productID2 = ""; + + productID2 = ProScreenFunc.GetProductID(barcode); + if (string.IsNullOrWhiteSpace(productID2)) + { + string stockNo = barcode.Substring(0, 10); + productID2 = ProScreenFunc.GetProductID(stockNo, ""); + } + + if (!ProScreenFunc.CheckPartAndProduct(productID, productID2)) + { + this.InsLog(productID, productID2); + MessageBox.Show("当前扫描的零件与总成不匹配,请检查后再扫描"); + this.textBox1.Text = ""; + } + else + { + ScanAll.ScanResult = false; + OtherPart parts = ProScreenFunc.HaveOtherPart(this.label1.Text.Trim(), productID); + if (parts != null && (!string.IsNullOrWhiteSpace(parts.productID3) || + !string.IsNullOrWhiteSpace(parts.productID4) || + !string.IsNullOrWhiteSpace(parts.productID5))) + { + FrmProScreen3 frm3 = new FrmProScreen3(parts); + frm3.ShowDialog(); + } + else + { + ScanAll.ScanResult = true; + } + + if (ScanAll.ScanResult) + { + if (ConfigurationManager.AppSettings["IsHaveVisual"].ToString() != "1") + { + this.AfterScanBarcode1(barcode, productID2, productID, base.Tag.ToString().Trim()); + } + else + { + SavePunch(barcode, productID2, productID, base.Tag.ToString().Trim(), stationId); + } + } + } + } + } + + public void InsLog(string productID1, string productID2) + { + LogHelper.WriteSysLogBase("一码到底【当前扫描的零件与总成不匹配】:productID1:" + productID1 + ",productID2:" + productID2 + ",工位:" + label1.Text + ",计划ID:" + this.Tag.ToString(), MethodBase.GetCurrentMethod().Name); + } + + private void SavePunch(string barcode, string productID2, string productID1, string planID,string stationId) + { + #region 存储 + + ProScreenFunc.SavePartAndProduct(barcode, productID2, productID1, label2.Text, label8.Text, planID,stationId, ConfigurationManager.AppSettings["StationDescription"]); + ProScreenFunc.SaveZcCode(barcode, label3.Text.Trim()); + + #endregion + } + + private void AfterScanBarcode1(string barcode, string productID2, string productID1, string planID) + { + #region 调WMS接口 + + try + { + LogHelper.WriteSysLogBase("条码号:" + barcode + "工位:" + label1.Text.Trim() + ",一码到底调用WMS接口", MethodBase.GetCurrentMethod().Name); + + string stockNo = ""; + string batchNo = ""; + string partNo = ""; + string filename = "", printName = "", tmp="",sn="", reportName=""; + ProScreenFunc.GetCode(barcode, out stockNo, out batchNo, out partNo); + + partNo = label3.Text.Trim(); + //2020-11-11 由原来的datetime.Now.ToString("yyyyMMdd")修改成计划的录入时间 + batchNo = ProScreenFunc.GetPlanTime(planID).ToString("yyyyMMdd"); + + WMSWebService webService = new WMSWebService(); + webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + + #region 存储 + + DateTime time = DateTime.Now; + tmp = ProScreenFunc.SerialNo(label3.Text.Trim(), time.ToString("yyMMdd")); + sn = ""; + if (tmp == "") + { + sn = + label3.Text.Trim() + "." + time.ToString("yyMMdd") + ".000001"; + } + else + { + sn = tmp.Substring(0, tmp.Length - 6) + + (int.Parse(tmp.Substring(tmp.Length - 6, 6)) + 1).ToString() + .PadLeft(6, '0'); + } + + if ( ProScreenFunc.SavePartAndProduct1(barcode, productID2, productID1, label2.Text, label8.Text, + planID, sn,stationId, ConfigurationManager.AppSettings["StationDescription"])<=0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + + //ProScreenFunc.SaveZcCode(barcode, label3.Text.Trim()); + + #endregion + + #region 完成数量+1 + + if ( ProScreenFunc.AddCompleteCount(this.Tag.ToString().Trim()) <= 0) + { + MessageBox.Show("连接数据库失败!"); + return; + } + + #endregion + + #region 打印标签 + + try + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + filename = AppDomain.CurrentDomain.BaseDirectory + "aaa.grf"; + + DataTable headTable = new DataTable(); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("BatchNo"); + + DataRow row = headTable.NewRow(); + row["zcPartNo"] = label3.Text.Trim(); + row["zcName"] = label4.Text.Trim(); + row["BatchNo"] = time.ToString("yyMMdd"); + row["oneBarCode"] = barcode; + row["SerialNo"] = sn; + + reportName = ConfigurationManager.AppSettings["PrinterName"]; + headTable.Rows.Add(row); + + ReportHelper rp = new ReportHelper(filename, headTable, null, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + } + } + catch (Exception ex) + { + throw ex; + } + + #endregion + + #region 是否计划已完成 + + if (ProScreenFunc.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + label7.Text = ProScreenFunc.GetCompleteCount(this.Tag.ToString().Trim()); + } + + #endregion + } + catch (Exception ex) + { + LogHelper.WriteErrLogBase("工位:" + label1.Text.Trim() + ",一码到底调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + #endregion + + ProScreenFunc.SavePartAndProductBF(barcode, productID2, productID1, label2.Text, label8.Text, planID); + } + + /// + /// 上一计划 + /// + /// + /// + private void button1_Click(object sender, EventArgs e) + { + if (this.Tag.ToString() == "") + { + MessageBox.Show("无上一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "上一计划"); + } + } + + public void LoadPlanScreen(string id, string plan) + { + //string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + + DataTable dt = ProScreenFunc.GetProScreenPlan(id, stationNo, plan); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + else + { + if (plan == "下一计划") + MessageBox.Show("无下一计划"); + else + MessageBox.Show("无上一计划"); + } + } + + /// + /// 下一计划 + /// + /// + /// + private void button2_Click(object sender, EventArgs e) + { + if (this.Tag.ToString() == "") + { + MessageBox.Show("无下一计划!", "提示"); + } + else + { + LoadPlanScreen(this.Tag.ToString(), "下一计划"); + } + } + + /// + /// 补打标签 + /// + /// + /// + private void button3_Click(object sender, EventArgs e) + { + textBox4.Text = ""; + textBox4.Visible = true; + textBox4.Focus(); + } + + private void textBox4_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string barcode = textBox4.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = ProScreenFunc.UniteBarCodeToOne(barcode); + } + + DataTable dtHg = ProScreenFunc.GetGh(barcode); + if (dtHg == null || dtHg.Rows.Count < 1) + { + MessageBox.Show("未装配,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + + DataTable dtBl = ProScreenFunc.GetBl(barcode); + if (dtBl != null && dtBl.Rows.Count > 0) + { + DateTime hgTime = (DateTime)Tools.NumericParse.StringToDateTime("1900-01-01 00:00:00"); + DataTable dtHG1 = ProScreenFunc.GetHG_New(barcode); + if (dtHG1 != null && dtHG1.Rows.Count > 0) + { + hgTime = (DateTime)Tools.NumericParse.StringToDateTime(dtHG1.Rows[0]["CreateTime"].ToString()); + } + + DateTime blTime = (DateTime)Tools.NumericParse.StringToDateTime(dtBl.Rows[0]["createTime"].ToString()); + if (DateTime.Compare(blTime, hgTime) > 0) + { + MessageBox.Show("产品不良,不能补打标签!"); + textBox4_DoubleClick(sender, e); + return; + } + } + + LogSysBLL.AddInfo("条码:" + barcode + "补打标签", MethodBase.GetCurrentMethod()); + + string zcID = dtHg.Rows[0]["ZcID"].ToString(); + ZcPrintLabel zl = ProScreenFunc.GetZcPrintLabel(zcID); + if (zl != null && zl.zcPartNo != null && zl.zcName != null) + { + if (ConfigurationManager.AppSettings["PrintEnable"].ToString().ToLower() == "true") + { + string filename = AppDomain.CurrentDomain.BaseDirectory + "aaa.grf"; + + DataTable headTable = new DataTable(); + headTable.Columns.Add("zcPartNo"); + headTable.Columns.Add("zcName"); + headTable.Columns.Add("oneBarCode"); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("BatchNo"); + + DataRow row = headTable.NewRow(); + row["zcPartNo"] = zl.zcPartNo; + row["zcName"] = zl.zcName; + string sn = dtHg.Rows[0]["SerialNo"].ToString(); + string[] tmp = sn.Split('.'); + row["BatchNo"] = tmp[1]; + row["oneBarCode"] = barcode; + row["SerialNo"] = dtHg.Rows[0]["SerialNo"].ToString(); ; + + string reportName = ConfigurationManager.AppSettings["PrinterName"]; + headTable.Rows.Add(row); + + ReportHelper rp = new ReportHelper(filename, headTable, null, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + } + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + textBox4_DoubleClick(sender, e); + } + } + } + + private void textBox4_DoubleClick(object sender, EventArgs e) + { + textBox4.Text = ""; + textBox4.Visible = false; + } + + private void timer1_Tick(object sender, EventArgs e) + { + string orderNo = label2.Text.Trim(); + if (string.IsNullOrWhiteSpace(orderNo)) + { + LoadScreen(); + } + } + + /// + /// 计划完成 + /// + /// + /// + private void button7_Click(object sender, EventArgs e) + { + ProScreenFunc.SetPlanComplete(this.Tag.ToString().Trim()); + LoadScreen(); + } + + /// + /// 计划查询 + /// + /// + /// + private void button6_Click(object sender, EventArgs e) + { + FrmProScreen2 frm = new FrmProScreen2(); + frm.Show(); + } + + private void label9_Click(object sender, EventArgs e) + { + Environment.Exit(0); + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow.resx new file mode 100644 index 0000000..1f666f2 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow_New.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow_New.Designer.cs new file mode 100644 index 0000000..55856e8 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow_New.Designer.cs @@ -0,0 +1,361 @@ +namespace PunchAndWeld +{ + partial class FrmProScreen_WheelBrow_New + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label8 = new System.Windows.Forms.Label(); + this.完成数 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.数量 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.零件名称 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.零件号 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.计划单 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.listView1 = new System.Windows.Forms.ListView(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.txtScanPlan = new System.Windows.Forms.TextBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.uc1 = new PunchAndWeld.Uc(); + this.uc2 = new PunchAndWeld.Uc(); + this.uc3 = new PunchAndWeld.Uc(); + this.uc4 = new PunchAndWeld.Uc(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.Location = new System.Drawing.Point(846, 43); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(130, 24); + this.label8.TabIndex = 131; + this.label8.Text = "扫描计划单"; + // + // 完成数 + // + this.完成数.Text = "完成数"; + // + // 数量 + // + this.数量.DisplayIndex = 2; + this.数量.Text = "数量"; + this.数量.Width = 100; + // + // 零件名称 + // + this.零件名称.DisplayIndex = 3; + this.零件名称.Text = "零件名称"; + this.零件名称.Width = 200; + // + // 零件号 + // + this.零件号.Text = "零件号"; + this.零件号.Width = 120; + // + // 计划单 + // + this.计划单.Text = "计划单"; + this.计划单.Width = 120; + // + // listView1 + // + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.计划单, + this.零件号, + this.零件名称, + this.数量, + this.完成数}); + this.listView1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.listView1.GridLines = true; + this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listView1.Location = new System.Drawing.Point(850, 90); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(549, 629); + this.listView1.TabIndex = 132; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // button3 + // + this.button3.Font = new System.Drawing.Font("宋体", 14.25F); + this.button3.Location = new System.Drawing.Point(472, 12); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(84, 33); + this.button3.TabIndex = 77; + this.button3.Text = "取消"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // button2 + // + this.button2.Font = new System.Drawing.Font("宋体", 14.25F); + this.button2.Location = new System.Drawing.Point(371, 12); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(84, 33); + this.button2.TabIndex = 76; + this.button2.Text = "确定"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // textBox3 + // + this.textBox3.Font = new System.Drawing.Font("宋体", 14.25F); + this.textBox3.Location = new System.Drawing.Point(126, 12); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(221, 29); + this.textBox3.TabIndex = 75; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.Location = new System.Drawing.Point(14, 16); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(104, 19); + this.label7.TabIndex = 74; + this.label7.Text = "扫描半成品"; + // + // txtScanPlan + // + this.txtScanPlan.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtScanPlan.Location = new System.Drawing.Point(992, 35); + this.txtScanPlan.Name = "txtScanPlan"; + this.txtScanPlan.Size = new System.Drawing.Size(407, 35); + this.txtScanPlan.TabIndex = 130; + this.txtScanPlan.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtScanPlan_KeyDown); + // + // panel1 + // + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.Controls.Add(this.button3); + this.panel1.Controls.Add(this.button2); + this.panel1.Controls.Add(this.textBox3); + this.panel1.Controls.Add(this.label7); + this.panel1.Location = new System.Drawing.Point(101, 107); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(603, 63); + this.panel1.TabIndex = 129; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.Location = new System.Drawing.Point(392, 464); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(106, 24); + this.label5.TabIndex = 128; + this.label5.Text = "后右轮眉"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.Location = new System.Drawing.Point(35, 464); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(106, 24); + this.label6.TabIndex = 127; + this.label6.Text = "前右轮眉"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.Location = new System.Drawing.Point(403, 261); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(106, 24); + this.label4.TabIndex = 126; + this.label4.Text = "后左轮眉"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(35, 261); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(106, 24); + this.label3.TabIndex = 125; + this.label3.Text = "前左轮眉"; + // + // button1 + // + this.button1.Font = new System.Drawing.Font("宋体", 18F); + this.button1.Location = new System.Drawing.Point(605, 42); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(182, 50); + this.button1.TabIndex = 124; + this.button1.Text = "补打总成条码"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // textBox2 + // + this.textBox2.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(173, 90); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(407, 35); + this.textBox2.TabIndex = 122; + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(173, 39); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(407, 35); + this.textBox1.TabIndex = 120; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(27, 93); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(130, 24); + this.label2.TabIndex = 121; + this.label2.Text = "扫描半成品"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(27, 42); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(130, 24); + this.label1.TabIndex = 123; + this.label1.Text = "扫描配置码"; + // + // uc1 + // + this.uc1.Location = new System.Drawing.Point(160, 195); + this.uc1.Name = "uc1"; + this.uc1.PartInfo = null; + this.uc1.Size = new System.Drawing.Size(200, 137); + this.uc1.Sum = null; + this.uc1.TabIndex = 133; + // + // uc2 + // + this.uc2.Location = new System.Drawing.Point(557, 195); + this.uc2.Name = "uc2"; + this.uc2.PartInfo = null; + this.uc2.Size = new System.Drawing.Size(200, 137); + this.uc2.Sum = null; + this.uc2.TabIndex = 134; + // + // uc3 + // + this.uc3.Location = new System.Drawing.Point(160, 407); + this.uc3.Name = "uc3"; + this.uc3.PartInfo = null; + this.uc3.Size = new System.Drawing.Size(200, 137); + this.uc3.Sum = null; + this.uc3.TabIndex = 135; + // + // uc4 + // + this.uc4.Location = new System.Drawing.Point(557, 407); + this.uc4.Name = "uc4"; + this.uc4.PartInfo = null; + this.uc4.Size = new System.Drawing.Size(200, 137); + this.uc4.Sum = null; + this.uc4.TabIndex = 136; + // + // FrmProScreen_WheelBrow_New + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1427, 754); + this.Controls.Add(this.uc4); + this.Controls.Add(this.uc3); + this.Controls.Add(this.uc2); + this.Controls.Add(this.uc1); + this.Controls.Add(this.label8); + this.Controls.Add(this.listView1); + this.Controls.Add(this.txtScanPlan); + this.Controls.Add(this.panel1); + this.Controls.Add(this.label5); + this.Controls.Add(this.label6); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Name = "FrmProScreen_WheelBrow_New"; + this.Text = "254S轮眉-生产"; + this.Load += new System.EventHandler(this.FrmProScreen_WheelBrow_New_Load); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label8; + private System.Windows.Forms.ColumnHeader 完成数; + private System.Windows.Forms.ColumnHeader 数量; + private System.Windows.Forms.ColumnHeader 零件名称; + private System.Windows.Forms.ColumnHeader 零件号; + private System.Windows.Forms.ColumnHeader 计划单; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox txtScanPlan; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private Uc uc1; + private Uc uc2; + private Uc uc3; + private Uc uc4; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow_New.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow_New.cs new file mode 100644 index 0000000..7ce206b --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow_New.cs @@ -0,0 +1,475 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Windows.Forms; +using gregn6Lib; +using MESClassLibrary.BLL.Log; +using PunchAndWeld.DataSouce; + +namespace PunchAndWeld +{ + public partial class FrmProScreen_WheelBrow_New : Form + { + public FrmProScreen_WheelBrow_New() + { + InitializeComponent(); + } + + string[] partNo1 = new string[10]; + private string planID = ""; + private string zcPartNo = "",zcPartName=""; + string stationNo = "", stationId = ""; + + private void txtScanPlan_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + if (string.IsNullOrWhiteSpace(txtScanPlan.Text.Trim())) + { + MessageBox.Show("订单号不能为空!", "提示", MessageBoxButtons.OK); + txtScanPlan.SelectAll(); + txtScanPlan.Focus(); + return; + } + + #region 判断订单号是否存在 + + if (InitList()) return; + + #endregion + + InitData(); + + textBox1.Focus(); + + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private bool InitList() + { + int a = 0; + this.listView1.Items.Clear(); + + DataTable dt = ProScreenFunc.GetPlanInfoByOrderNo(txtScanPlan.Text.Trim()); + if (dt != null && dt.Rows.Count > 0) + { + #region 判断订单是否生产完成 + + partNo1 = new string[dt.Rows.Count]; + for (int i = 0; i < dt.Rows.Count; i++) + { + if (Convert.ToInt32(dt.Rows[i]["IsFinish"].ToString()) == 1) + { + a += 1; + if (a == dt.Rows.Count) + { + MessageBox.Show("订单已完成,请扫描其他订单!", "提示", MessageBoxButtons.OK); + txtScanPlan.Focus(); + return true; + } + } + else + { + partNo1[i] = dt.Rows[i]["PartNo"].ToString(); + ListViewItem lvi = new ListViewItem(dt.Rows[i]["OrderNo"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["PartNo"].ToString()); //后面添加的Item都为SubItems ,即为子项 + + lvi.SubItems.Add(dt.Rows[i]["ProductName"].ToString()); + lvi.SubItems.Add(dt.Rows[i]["OrderCount"].ToString()); + listView1.Items.Add(lvi); + } + } + + #endregion + } + else + { + MessageBox.Show("订单号不存在,请重新扫描!", "提示", MessageBoxButtons.OK); + textBox2.SelectAll(); + textBox2.Focus(); + return true; + } + + return false; + } + + public void InitData() + { + string[] part = + { + "A2548850000", "A2548850400", "A2548850200", "A2548850600" + }; + + string[] sum = new string[4]; + + try + { + for (int i = 0; i < 4; i++) + { + sum[i] = ProScreenFunc.SumByPartNo(txtScanPlan.Text.Trim(), part[i]); + } + + #region + + uc1.PartInfo = "A2548850000 前部左侧轮眉"; + uc2.PartInfo = "A2548850400 后部左侧轮眉"; + uc3.PartInfo = "A2548850200 前部右侧轮眉"; + uc4.PartInfo = "A2548850600 后部右侧轮眉"; + + uc1.Sum = sum[0]; + uc2.Sum = sum[1]; + uc3.Sum = sum[2]; + uc4.Sum = sum[3]; + + #endregion + + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + if (txtScanPlan.Text.Trim() == "") + { + MessageBox.Show("请扫描计划单!", "提示", MessageBoxButtons.OK); + txtScanPlan.Focus(); + return; + } + + if (string.IsNullOrWhiteSpace(textBox1.Text.Trim())) + { + MessageBox.Show("配置码不能为空,请重新输入!", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + + if (!ProScreenFunc.CheckDeviceNo(textBox1.Text.Trim(),stationId)) + { + MessageBox.Show("配置码有误,请重新输入!", "提示", MessageBoxButtons.OK); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + textBox2.Enabled = true; + textBox2.Focus(); + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + private void FrmProScreen_WheelBrow_New_Load(object sender, EventArgs e) + { + txtScanPlan.Focus(); + textBox2.Enabled = false; + panel1.Visible = false; + stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + stationId = ProScreenFunc.GetStationId(stationNo); + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + if (txtScanPlan.Text.Trim() == "") + { + MessageBox.Show("请扫描计划单!", "提示", MessageBoxButtons.OK); + txtScanPlan.Focus(); + return; + } + + if (string.IsNullOrWhiteSpace(textBox2.Text.Trim())) + { + MessageBox.Show("半成品条码不能为空,请重新输入!", "提示", MessageBoxButtons.OK); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + + if (textBox2.Text.Trim().Length != 20) + { + MessageBox.Show("半成品条码位数有误,请重新扫描!"); + textBox1.SelectAll(); + return; + } + + if (ProScreenFunc.IsPunch(textBox2.Text.Trim(), stationNo)) + { + MessageBox.Show("半成品条码已经装配过,请重新扫描!"); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + + #region 根据半成品查询总成零件号 + + DataTable dt= ProScreenFunc.ZcPartNo(textBox2.Text.Substring(0,10)); + if (dt != null && dt.Rows.Count > 0) + { + zcPartNo = dt.Rows[0]["PartNo"].ToString(); + zcPartName = dt.Rows[0]["ProductName"].ToString(); + } + + #endregion + + #region 查询完成数==计划数,如果相等,就不允许扫描 + + string sum = ProScreenFunc.SumByPartNo(txtScanPlan.Text.Trim(), zcPartNo); + string planCount = ProScreenFunc.PlanCountByPartNo(txtScanPlan.Text.Trim(), zcPartNo); + + if (int.Parse(planCount) <= int.Parse(sum)) + { + MessageBox.Show("该零件已生产完成!"); + textBox2.SelectAll(); + return; + } + else + { + #region 校验配置码和半成品码是否匹配 + + if (!ProScreenFunc.IsCheck(textBox1.Text.Trim(), textBox2.Text.Substring(0,10))) + { + MessageBox.Show("配置码和半成品条码不匹配,请重新扫描!"); + textBox2.SelectAll(); + return; + } + else + { + #region 保存条码 + + string newbatch = DateTime.Now.ToString("yyyy-MM-dd").Substring(2, 2) + + DateTime.Now.ToString("yyyy-MM-dd").Substring(5, 2) + + DateTime.Now.ToString("yyyy-MM-dd").Substring(8, 2); + string oldPartNo = ProScreenFunc.LastNo(zcPartNo + "." + newbatch); + string newPartNo =oldPartNo==""?zcPartNo + "." + newbatch+".000001": oldPartNo + .Substring(0, oldPartNo.Length - 6) + + (Convert.ToInt32(oldPartNo + .Substring(oldPartNo.Length - 6, 6)) + 1) + .ToString() + .PadLeft(6, '0'); + string validityDate = "从" + DateTime.Now.ToString("yyyy-MM-dd") + "到" + + DateTime.Now.AddMonths(3).ToString("yyyy-MM-dd"); + + Assembly1 md = new Assembly1(); + + md.ID = Guid.NewGuid().ToString(); + + md.PartNo = newPartNo; + md.PartName = zcPartName; + md.Color = "通用"; + md.BatchNo = newbatch; + md.BarCode = textBox2.Text.Trim(); + md.TapeBatchNo = md.BatchNo; + md.Validity = "3个月"; + md.ValidityDate = validityDate; + md.Flag = 0; + md.PartType = ""; + md.Des = ""; + + ProScreenFunc.AddAssembly(md); + + #endregion + + #region 打印 + + string filename = AppDomain.CurrentDomain.BaseDirectory + "aa.grf"; + + DataTable headTable = new DataTable(); + headTable.Columns.Add("PartNo"); + headTable.Columns.Add("PartName"); + headTable.Columns.Add("BatchNo"); + headTable.Columns.Add("ValidityDate"); + + DataRow row = headTable.NewRow(); + row["PartNo"] = newPartNo; + row["PartName"] = zcPartName; + row["BatchNo"] = newbatch; + row["ValidityDate"] = validityDate; + + string reportName = ""; + if (newPartNo.Substring(0, 11) == "A2548850000" || + newPartNo.Substring(0, 11) == "A2548850600") + { + reportName = ConfigurationManager.AppSettings["PrinterName"]; + } + else + { + reportName = ConfigurationManager.AppSettings["PrinterName1"]; + } + headTable.Rows.Add(row); + + ReportHelper rp = new ReportHelper(filename, headTable, null, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + + #endregion + + md.PrintTime=DateTime.Now; + ProScreenFunc.UpdateAssembly(md); + + #region 保存总成信息 + + planID = ProScreenFunc.GetPlanIDByOrderNo(txtScanPlan.Text.Trim(), zcPartNo); + + ProScreenFunc.SavePartAndProduct1(textBox2.Text.Trim(), ProScreenFunc.GetProductIDByPartNo(textBox2.Text.Trim().Substring(0, 10)), ProScreenFunc.GetProductIDByPartNo(zcPartNo), txtScanPlan.Text.Trim(), txtScanPlan.Text.Trim().Substring(0, 1) + "班", planID, newPartNo,stationId, ConfigurationManager.AppSettings["StationDescription"]); + ProScreenFunc.SaveZcCode(textBox2.Text.Trim(), zcPartNo); + + ProScreenFunc.AddCompleteCount(planID); + + #endregion + + InitData(); + } + + #endregion + } + + #endregion + + + textBox1.SelectAll(); + textBox1.Focus(); + textBox2.Text = ""; + textBox2.Enabled = false; + } + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + + private void button1_Click(object sender, EventArgs e) + { + panel1.Visible = true; + textBox3.Focus(); + } + + private void button3_Click(object sender, EventArgs e) + { + panel1.Visible = false; + textBox3.Text = ""; + } + + private void button2_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBox3.Text)) + { + MessageBox.Show("半成品不能为空,请重新扫描!"); + textBox3.Text = ""; + textBox3.SelectAll(); + return; + } + + if (!ProScreenFunc.HaveScan(textBox3.Text.Trim())) + { + MessageBox.Show("半成品未进行装配,请重新扫描!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + + #region 补打 + + string partNo = "", partName = "", batchNo = "", validityDate = ""; + + DataTable dt = ProScreenFunc.AssemblyInfo(textBox3.Text.Trim()); + if (dt != null && dt.Rows.Count > 0) + { + partNo = dt.Rows[0]["PartNo"].ToString(); + partName = dt.Rows[0]["PartName"].ToString(); + batchNo = dt.Rows[0]["BatchNo"].ToString(); + validityDate = dt.Rows[0]["ValidityDate"].ToString(); + } + + Assembly1 md=new Assembly1(); + md.ID = Guid.NewGuid().ToString(); + + md.PartNo = partNo; + md.PartName = partName; + md.Color = "通用"; + md.BatchNo = batchNo; + md.BarCode = textBox3.Text.Trim(); + md.TapeBatchNo = md.BatchNo; + md.Validity = "3个月"; + md.ValidityDate = validityDate; + md.Flag = 1; + md.PartType = ""; + md.Des = ""; + + ProScreenFunc.AddAssembly(md); + + string filename = AppDomain.CurrentDomain.BaseDirectory + "aa.grf"; + + DataTable headTable = new DataTable(); + headTable.Columns.Add("PartNo"); + headTable.Columns.Add("PartName"); + headTable.Columns.Add("BatchNo"); + headTable.Columns.Add("ValidityDate"); + + DataRow row = headTable.NewRow(); + row["PartNo"] = partNo; + row["PartName"] = partName; + row["BatchNo"] = batchNo; + row["ValidityDate"] = validityDate; + + //string reportName = partName.Contains('左') ? ConfigurationManager.AppSettings["PrinterName"] : ConfigurationManager.AppSettings["PrinterName1"]; + string reportName = ""; + if (partNo.Substring(0, 11) == "A2548850000" || + partNo.Substring(0, 11) == "A2548850600") + { + reportName = ConfigurationManager.AppSettings["PrinterName"]; + } + else + { + reportName = ConfigurationManager.AppSettings["PrinterName1"]; + } + + headTable.Rows.Add(row); + + ReportHelper rp = new ReportHelper(filename, headTable, null, + (int)GRPaperOrientation.grpoDefault, 1, reportName); + rp.Report.Print(false); + + md.PrintTime = DateTime.Now; + ProScreenFunc.UpdateAssembly(md); + + #endregion + + panel1.Visible = false; + textBox3.Text = ""; + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod()); + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow_New.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow_New.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmProScreen_WheelBrow_New.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmSearchPlan.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmSearchPlan.Designer.cs new file mode 100644 index 0000000..0548909 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmSearchPlan.Designer.cs @@ -0,0 +1,343 @@ +namespace PunchAndWeld +{ + partial class FrmSearchPlan + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle33 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle34 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle35 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle36 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle37 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle38 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle39 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle40 = new System.Windows.Forms.DataGridViewCellStyle(); + this.ID = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.panel1 = new System.Windows.Forms.Panel(); + this.btOk = new System.Windows.Forms.Button(); + this.btClose = new System.Windows.Forms.Button(); + this.btSearch = new System.Windows.Forms.Button(); + this.dateTimePicker2 = new System.Windows.Forms.DateTimePicker(); + this.label2 = new System.Windows.Forms.Label(); + this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker(); + this.label1 = new System.Windows.Forms.Label(); + this.BadCount = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.CompleteCount = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.OrderCount = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.ProductName = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.PartNo = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.OrderNo = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.CreateTime = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.IsFinish = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.tableLayoutPanel1.SuspendLayout(); + this.SuspendLayout(); + // + // ID + // + this.ID.DataPropertyName = "ID"; + this.ID.HeaderText = "ID"; + this.ID.Name = "ID"; + this.ID.ReadOnly = true; + this.ID.Visible = false; + // + // panel1 + // + this.panel1.Controls.Add(this.btOk); + this.panel1.Controls.Add(this.btClose); + this.panel1.Controls.Add(this.btSearch); + this.panel1.Controls.Add(this.dateTimePicker2); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.dateTimePicker1); + this.panel1.Controls.Add(this.label1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(3, 3); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1258, 85); + this.panel1.TabIndex = 1; + // + // btOk + // + this.btOk.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btOk.Location = new System.Drawing.Point(798, 26); + this.btOk.Name = "btOk"; + this.btOk.Size = new System.Drawing.Size(90, 40); + this.btOk.TabIndex = 6; + this.btOk.Text = "确定"; + this.btOk.UseVisualStyleBackColor = true; + this.btOk.Click += new System.EventHandler(this.btOk_Click); + // + // btClose + // + this.btClose.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btClose.Location = new System.Drawing.Point(932, 27); + this.btClose.Name = "btClose"; + this.btClose.Size = new System.Drawing.Size(90, 40); + this.btClose.TabIndex = 5; + this.btClose.Text = "关闭"; + this.btClose.UseVisualStyleBackColor = true; + this.btClose.Click += new System.EventHandler(this.btClose_Click); + // + // btSearch + // + this.btSearch.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btSearch.Location = new System.Drawing.Point(672, 27); + this.btSearch.Name = "btSearch"; + this.btSearch.Size = new System.Drawing.Size(90, 40); + this.btSearch.TabIndex = 4; + this.btSearch.Text = "查询"; + this.btSearch.UseVisualStyleBackColor = true; + this.btSearch.Click += new System.EventHandler(this.btSearch_Click); + // + // dateTimePicker2 + // + this.dateTimePicker2.Format = System.Windows.Forms.DateTimePickerFormat.Short; + this.dateTimePicker2.Location = new System.Drawing.Point(456, 36); + this.dateTimePicker2.Name = "dateTimePicker2"; + this.dateTimePicker2.Size = new System.Drawing.Size(105, 21); + this.dateTimePicker2.TabIndex = 3; + // + // label2 + // + this.label2.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(415, 28); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(35, 38); + this.label2.TabIndex = 2; + this.label2.Text = "到"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // dateTimePicker1 + // + this.dateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Short; + this.dateTimePicker1.Location = new System.Drawing.Point(304, 36); + this.dateTimePicker1.Name = "dateTimePicker1"; + this.dateTimePicker1.Size = new System.Drawing.Size(105, 21); + this.dateTimePicker1.TabIndex = 1; + // + // label1 + // + this.label1.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(193, 28); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(125, 38); + this.label1.TabIndex = 0; + this.label1.Text = "查询时间:"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // BadCount + // + this.BadCount.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.BadCount.DataPropertyName = "BadCount"; + dataGridViewCellStyle33.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.BadCount.DefaultCellStyle = dataGridViewCellStyle33; + this.BadCount.FillWeight = 355.33F; + this.BadCount.Frozen = true; + this.BadCount.HeaderText = "不良数"; + this.BadCount.MinimumWidth = 100; + this.BadCount.Name = "BadCount"; + this.BadCount.ReadOnly = true; + // + // CompleteCount + // + this.CompleteCount.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.CompleteCount.DataPropertyName = "CompleteCount"; + dataGridViewCellStyle34.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CompleteCount.DefaultCellStyle = dataGridViewCellStyle34; + this.CompleteCount.FillWeight = 176.2806F; + this.CompleteCount.Frozen = true; + this.CompleteCount.HeaderText = "完成数"; + this.CompleteCount.MinimumWidth = 100; + this.CompleteCount.Name = "CompleteCount"; + this.CompleteCount.ReadOnly = true; + // + // OrderCount + // + this.OrderCount.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.OrderCount.DataPropertyName = "OrderCount"; + dataGridViewCellStyle35.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.OrderCount.DefaultCellStyle = dataGridViewCellStyle35; + this.OrderCount.FillWeight = 87.44866F; + this.OrderCount.Frozen = true; + this.OrderCount.HeaderText = "订单数"; + this.OrderCount.MinimumWidth = 100; + this.OrderCount.Name = "OrderCount"; + this.OrderCount.ReadOnly = true; + // + // ProductName + // + this.ProductName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.ProductName.DataPropertyName = "ProductName"; + dataGridViewCellStyle36.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ProductName.DefaultCellStyle = dataGridViewCellStyle36; + this.ProductName.FillWeight = 43.37886F; + this.ProductName.Frozen = true; + this.ProductName.HeaderText = "产品名称"; + this.ProductName.MinimumWidth = 400; + this.ProductName.Name = "ProductName"; + this.ProductName.ReadOnly = true; + this.ProductName.Width = 400; + // + // PartNo + // + this.PartNo.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.PartNo.DataPropertyName = "PartNo"; + dataGridViewCellStyle37.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.PartNo.DefaultCellStyle = dataGridViewCellStyle37; + this.PartNo.FillWeight = 21.62265F; + this.PartNo.Frozen = true; + this.PartNo.HeaderText = "零件号"; + this.PartNo.MinimumWidth = 200; + this.PartNo.Name = "PartNo"; + this.PartNo.ReadOnly = true; + this.PartNo.Width = 200; + // + // OrderNo + // + this.OrderNo.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.OrderNo.DataPropertyName = "OrderNo"; + dataGridViewCellStyle38.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.OrderNo.DefaultCellStyle = dataGridViewCellStyle38; + this.OrderNo.FillWeight = 5.267243F; + this.OrderNo.Frozen = true; + this.OrderNo.HeaderText = "订单编号"; + this.OrderNo.MinimumWidth = 200; + this.OrderNo.Name = "OrderNo"; + this.OrderNo.ReadOnly = true; + this.OrderNo.Width = 200; + // + // CreateTime + // + this.CreateTime.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.CreateTime.DataPropertyName = "CreateTime"; + dataGridViewCellStyle39.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CreateTime.DefaultCellStyle = dataGridViewCellStyle39; + this.CreateTime.Frozen = true; + this.CreateTime.HeaderText = "计划时间"; + this.CreateTime.MinimumWidth = 150; + this.CreateTime.Name = "CreateTime"; + this.CreateTime.ReadOnly = true; + this.CreateTime.Width = 150; + // + // dataGridView1 + // + this.dataGridView1.AllowUserToAddRows = false; + this.dataGridView1.AllowUserToDeleteRows = false; + this.dataGridView1.AllowUserToOrderColumns = true; + this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; + this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.CreateTime, + this.OrderNo, + this.PartNo, + this.ProductName, + this.OrderCount, + this.CompleteCount, + this.BadCount, + this.IsFinish, + this.ID}); + this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataGridView1.Location = new System.Drawing.Point(3, 94); + this.dataGridView1.MultiSelect = false; + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.ReadOnly = true; + this.dataGridView1.RowTemplate.Height = 30; + this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dataGridView1.Size = new System.Drawing.Size(1258, 664); + this.dataGridView1.TabIndex = 2; + // + // IsFinish + // + this.IsFinish.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.IsFinish.DataPropertyName = "IsFinish"; + dataGridViewCellStyle40.Font = new System.Drawing.Font("微软雅黑", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.IsFinish.DefaultCellStyle = dataGridViewCellStyle40; + this.IsFinish.FillWeight = 10.672F; + this.IsFinish.Frozen = true; + this.IsFinish.HeaderText = "是否完成"; + this.IsFinish.MinimumWidth = 100; + this.IsFinish.Name = "IsFinish"; + this.IsFinish.ReadOnly = true; + this.IsFinish.Visible = false; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.dataGridView1, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.03883F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 87.96117F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1264, 761); + this.tableLayoutPanel1.TabIndex = 1; + // + // FrmSearchPlan + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1264, 761); + this.Controls.Add(this.tableLayoutPanel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmSearchPlan"; + this.Text = "计划查询"; + this.Load += new System.EventHandler(this.FrmSearchPlan_Load); + this.panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.tableLayoutPanel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.DataGridViewTextBoxColumn ID; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button btOk; + private System.Windows.Forms.Button btClose; + private System.Windows.Forms.Button btSearch; + private System.Windows.Forms.DateTimePicker dateTimePicker2; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.DateTimePicker dateTimePicker1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.DataGridViewTextBoxColumn BadCount; + private System.Windows.Forms.DataGridViewTextBoxColumn CompleteCount; + private System.Windows.Forms.DataGridViewTextBoxColumn OrderCount; + private System.Windows.Forms.DataGridViewTextBoxColumn ProductName; + private System.Windows.Forms.DataGridViewTextBoxColumn PartNo; + private System.Windows.Forms.DataGridViewTextBoxColumn OrderNo; + private System.Windows.Forms.DataGridViewTextBoxColumn CreateTime; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.DataGridViewTextBoxColumn IsFinish; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmSearchPlan.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmSearchPlan.cs new file mode 100644 index 0000000..e4155a4 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmSearchPlan.cs @@ -0,0 +1,96 @@ +using PunchAndWeld.DataSouce; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace PunchAndWeld +{ + public partial class FrmSearchPlan : Form + { + public FrmSearchPlan() + { + InitializeComponent(); + } + + public event Action OkClick; + + private void FrmSearchPlan_Load(object sender, EventArgs e) + { + #region 日期默认当天 + + dateTimePicker1.Text = DateTime.Now.ToShortDateString(); + dateTimePicker2.Text = DateTime.Now.ToShortDateString(); + + #endregion + + #region 查询 + + Query(dateTimePicker1.Value.ToString("yyyy-MM-dd").Trim(), dateTimePicker2.Value.ToString("yyyy-MM-dd").Trim()); + + #endregion + } + + public void Query(string starttime, string endtime) + { + string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString(); + DataTable dtt = (DataTable)dataGridView1.DataSource; + if (dtt != null) + dtt.Rows.Clear(); + + DataTable dt = ProScreenFunc.QueryPlanDetail_1(starttime, endtime, stationNo); + dataGridView1.DataSource = dt; + ChangBackColor(); + } + + private void ChangBackColor() + { + if (dataGridView1.Rows.Count > 0) + { + foreach (DataGridViewRow row in dataGridView1.Rows) + { + if (row.Cells["IsFinish"].Value.ToString() == "3") + { + row.DefaultCellStyle.ForeColor = Color.Green; + } + else + { + row.DefaultCellStyle.ForeColor = Color.Red; + } + } + } + } + + private void btClose_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void btSearch_Click(object sender, EventArgs e) + { + Query(dateTimePicker1.Value.ToString("yyyy-MM-dd").Trim(), dateTimePicker2.Value.ToString("yyyy-MM-dd").Trim()); + } + + private void btOk_Click(object sender, EventArgs e) + { + if (dataGridView1.SelectedRows.Count == 0) + { + MessageBox.Show("请选择一个计划"); + return; + } + + int index = dataGridView1.CurrentRow.Index; //取得选中行的索引 + string id = dataGridView1.Rows[index].Cells["ID"].Value.ToString(); //获取单元格列名为‘Id’的值 + + if (OkClick != null) + { + OkClick(id); + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmSearchPlan.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmSearchPlan.resx new file mode 100644 index 0000000..a56fed7 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmSearchPlan.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmTest.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmTest.Designer.cs new file mode 100644 index 0000000..f5c63cb --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmTest.Designer.cs @@ -0,0 +1,59 @@ +namespace PunchAndWeld +{ + partial class FrmTest + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.textBox1 = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(53, 98); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(194, 21); + this.textBox1.TabIndex = 0; + // + // FrmTest + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(497, 386); + this.Controls.Add(this.textBox1); + this.Name = "FrmTest"; + this.Text = "FrmTest"; + this.Load += new System.EventHandler(this.FrmTest_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox textBox1; + } +} \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmTest.cs b/SjMes/PunchAssemble/PunchAndWeld/FrmTest.cs new file mode 100644 index 0000000..720e0aa --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmTest.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Data.SqlClient; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using DBUtility; +using gregn6Lib; + + +namespace PunchAndWeld +{ + public partial class FrmTest : Form + { + private string ConnectionString = ""; + private GridppReport Report = new GridppReport(); + + public FrmTest() + { + InitializeComponent(); + } + + private void FrmTest_Load(object sender, EventArgs e) + { + try + { + ConnectionString = SqlHelper.SqlConnString; + SqlStart(); + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString()); + } + } + + private void SqlStart() + { + try + { + + SqlDependency.Start(ConnectionString);//调用SqlDependency.Start(String strConnectionString)方法,在应用程序端启用依赖监听器。 + SqlDependencyWatch(); + //RefreshTable(); + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString()); + } + } + + /* 建立SQL监控 */ + private void SqlDependencyWatch() + { + string sSQL = "SELECT [ToVisual] FROM [dbo].[tb_aa]"; + + using (SqlConnection connection = new SqlConnection(ConnectionString)) + { + using (SqlCommand command = new SqlCommand(sSQL, connection)) + { + command.CommandType = CommandType.Text; + connection.Open(); + SqlDependency dependency = new SqlDependency(command); + dependency.OnChange += new OnChangeEventHandler(SQLTableOnChange); + SqlDataReader sdr = command.ExecuteReader(); + } + } + + } + + private void SQLTableOnChange(object sender, SqlNotificationEventArgs e) + { + SqlDependencyWatch(); + show(); + } + + public delegate void Print(); + + public event Print OnClick; + + private void show() + { + try + { + string sSQL = "SELECT top 1 * from [dbo].[tb_aa] where ToVisual=0 order by id"; + + //DataTable dt = new DataTable(); + //using (SqlConnection connection = new SqlConnection(ConnectionString)) + //{ + // connection.Open(); + // using (SqlCommand cmd = new SqlCommand(sSQL, connection)) + // { + // using (SqlDataAdapter dr = new SqlDataAdapter(sSQL, connection)) + // { + // dr.Fill(dt); + // string aa = dt.Rows[0]["ID"].ToString(); + // this.Invoke((EventHandler)(delegate { textBox1.Text = aa; })); + // } + // } + //} + + string path = "D:\\aaa.grf"; + this.Invoke((EventHandler)(delegate + { + Report.Register(""); + Report.LoadFromFile(path); + Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize); +; + Report.Print(false); + })); + + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString()); + } + + + } + + private void ReportInitialize() + { + Report.ParameterByName("zcPartNo").Value = "111"; + Report.ParameterByName("zcName").Value = "X247门槛"; + } + + + + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/FrmTest.resx b/SjMes/PunchAssemble/PunchAndWeld/FrmTest.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/FrmTest.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/Img/20200428213144.png b/SjMes/PunchAssemble/PunchAndWeld/Img/20200428213144.png new file mode 100644 index 0000000..1477097 Binary files /dev/null and b/SjMes/PunchAssemble/PunchAndWeld/Img/20200428213144.png differ diff --git a/SjMes/PunchAssemble/PunchAndWeld/Img/Preassembly.png b/SjMes/PunchAssemble/PunchAndWeld/Img/Preassembly.png new file mode 100644 index 0000000..12b8208 Binary files /dev/null and b/SjMes/PunchAssemble/PunchAndWeld/Img/Preassembly.png differ diff --git a/SjMes/PunchAssemble/PunchAndWeld/Img/Preassembly1.png b/SjMes/PunchAssemble/PunchAndWeld/Img/Preassembly1.png new file mode 100644 index 0000000..12d0570 Binary files /dev/null and b/SjMes/PunchAssemble/PunchAndWeld/Img/Preassembly1.png differ diff --git a/SjMes/PunchAssemble/PunchAndWeld/Img/new.png b/SjMes/PunchAssemble/PunchAndWeld/Img/new.png new file mode 100644 index 0000000..403ced3 Binary files /dev/null and b/SjMes/PunchAssemble/PunchAndWeld/Img/new.png differ diff --git a/SjMes/PunchAssemble/PunchAndWeld/Interop.OPCAutomation.dll b/SjMes/PunchAssemble/PunchAndWeld/Interop.OPCAutomation.dll new file mode 100644 index 0000000..f5340f3 Binary files /dev/null and b/SjMes/PunchAssemble/PunchAndWeld/Interop.OPCAutomation.dll differ diff --git a/SjMes/PunchAssemble/PunchAndWeld/LogHelper.cs b/SjMes/PunchAssemble/PunchAndWeld/LogHelper.cs new file mode 100644 index 0000000..afaae45 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/LogHelper.cs @@ -0,0 +1,136 @@ + +using DBUtility; +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Text; + +namespace PunchAndWeld +{ + public class LogHelper + { + private static string CodeVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString().Trim(); + + // + //保存日志的文件夹 + // + private static string logPath = AppDomain.CurrentDomain.BaseDirectory + @"log\"; + + /// + /// 写日志 + /// + /// + /// + public static void WriteLog(string msg, string errorFile = "") + { + try + { + if (string.IsNullOrEmpty(msg)) + { + return; + } + else + { + msg = string.Format("程序版本号:{0},Time:{1},Message:{2}", CodeVersion, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff"), msg); + } + //如果不存在log文件夹 则创建 + if (!Directory.Exists(logPath)) + { + Directory.CreateDirectory(logPath); + } + + StreamWriter sw = File.AppendText(logPath + errorFile + DateTime.Now.ToString("yyyyMMdd") + ".Log"); + sw.WriteLine(msg); + sw.Close(); + } + catch (Exception ex) + { + + } + } + /// + /// 拼接错误日志 + /// + /// 异常类 + /// 异常类文件夹名,可为空 + public static void WriteLogManager(Exception ex, string errorFile = "") + { + StringBuilder str = new StringBuilder();//保存到文件中的日志信息 + str.AppendLine("****************************异常文本****************************"); + str.AppendLine("【程序版本号】:" + CodeVersion + " 【出现时间】:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); + if (ex != null) + { + str.AppendLine(string.Format("【异常类型】:{0}\r\n【异常信息】:{1}\r\n【异常方法】:{2}\r\n【堆栈调用】:{3}", ex.GetType().Name, ex.Message, ex.TargetSite, ex.StackTrace)); + } + else + { + str.AppendLine(string.Format("【未处理应用程序线程错误】:{0}", ex)); + } + str.AppendLine("****************************************************************"); + //保存日志 + WriteLog(str.ToString(), "Error" + errorFile); + } + + /// + /// 系统日志(写数据库) + /// + /// + /// + public static void WriteSysLogBase(string msg, string method) + { + try + { + if (msg.Contains("'")) + { + msg = msg.Replace("'", "''"); + } + string sql = @" INSERT INTO [dbo].[LogSys] + ([ID] + ,[SysContent] + ,[SysSource] + ,[CreateTime]) + VALUES + ((SELECT NEWID()) + ,'" + msg + @"' + ,'" + method + @"' + ,(SELECT GETDATE())) "; + SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + throw ex; + } + } + + /// + /// 错误日志(写数据库) + /// + /// + /// + public static void WriteErrLogBase(string msg, string method) + { + try + { + string sql = @" + INSERT INTO [dbo].[LogErr] + ([ID] + ,[ErrContent] + ,[ErrSource] + ,[ErrTime]) + VALUES + ((SELECT NEWID()) + ,'" + msg + @"' + ,'" + method + @"' + ,(SELECT GETDATE())) + "; + SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + catch (Exception ex) + { + throw ex; + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/OPCHelper.cs b/SjMes/PunchAssemble/PunchAndWeld/OPCHelper.cs new file mode 100644 index 0000000..8afcd02 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/OPCHelper.cs @@ -0,0 +1,115 @@ +using OPCAutomation; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace PunchAndWeld +{ + public class OPCHelper + { + public OPCServer opcServer; + public OPCGroups opcGroups; + public OPCGroup opcGroup1; + public OPCItems opcItems1; + public OPCItem[] opcItemm1; + + public OPCGroup opcGroup2; + public OPCItems opcItems2; + public OPCItem[] opcItemm2; + public string[] ItemIDs; + public object ItemValues; + public object Qualities; + public object TimeStamps; + public bool Connected = false; + + public bool CreateServer() + { + try + { + opcServer = new OPCServer(); + } + catch(Exception ex) + { + LogHelper.WriteErrLogBase(ex.ToString(),MethodBase.GetCurrentMethod().Name); + return false; + } + return true; + } + + public bool ConnectServer(string strHostIP, string strHostName) + { + try + { + opcServer.Connect(strHostName, strHostIP); + } + catch + { + return false; + } + return true; + } + + public void SetGroupProperty(OPCGroup opcGroup, int updateRate) + { + opcGroup.IsActive = true; + opcGroup.DeadBand = 0; + opcGroup.UpdateRate = updateRate; + opcGroup.IsSubscribed = true; + } + + public string ReadSingleValueFromOPC1(int i) + { + object ItemValues; + object Qualities; + object TimeStamps; + + opcItemm1[i].Read(1, out ItemValues, out Qualities, out TimeStamps); + + if ((ItemValues != null) && (Qualities.ToString() != "Good")) + { + return ItemValues.ToString(); + } + else + { + return ""; + } + } + public int ReadSingleValueFromOPC2(int i) + { + object ItemValues; + object Qualities; + object TimeStamps; + + opcItemm1[i].Read(1, out ItemValues, out Qualities, out TimeStamps); + + if ((ItemValues != null) && (Qualities.ToString() != "Good")) + { + return Convert.ToInt32(ItemValues.ToString()); + } + else + { + return 0; + } + } + + public string ReadSingleValueFromOPC3(int i) + { + object ItemValues; + object Qualities; + object TimeStamps; + + opcItemm2[i].Read(1, out ItemValues, out Qualities, out TimeStamps); + + if ((ItemValues != null) && (Qualities.ToString() != "Good")) + { + return ItemValues.ToString(); + } + else + { + return ""; + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/Program.cs b/SjMes/PunchAssemble/PunchAndWeld/Program.cs new file mode 100644 index 0000000..0dd81b6 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Program.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace PunchAndWeld +{ + static class Program + { + /// + /// 应用程序的主入口点。 + /// + /// + + public static bool IsPass = false; + [STAThread] + static void Main() + { + bool isRuned; + System.Threading.Mutex mutex = new System.Threading.Mutex(true, "OnlyRunOneInstance", out isRuned); + + if (isRuned) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + string aa = ConfigurationManager.AppSettings["ProScreenMode"]; + switch (aa) + { + case "1": + Application.Run(new FrmProScreen()); + break; + case "2": + Application.Run(new FrmProScreenBumper()); + break; + case "3": + Application.Run(new FrmProScreenBumperS()); + break; + case "4": + Application.Run(new FrmHybridS()); + break; + + case "5": + Application.Run(new FrmProScreenS()); + break; + case "6": + Application.Run(new FrmProScreen_WheelBrow()); + break; + case "7": + Application.Run(new FrmInspection_WheelBrow()); + break; + case "8": + Application.Run(new FrmLaser()); + break; + case "9": + Application.Run(new FrmDoorSill()); + break; + case "10": + Application.Run(new FrmPrintOrder()); + break; + case "11": + Application.Run(new FrmPreNoPlan()); + break; + case "12": + Application.Run(new FrmDoorSillNew()); + break; + case "13": + Application.Run(new FrmDoorSill_214()); + break; + case "14": + Application.Run(new FrmDoorSill_214_2()); + break; + } + + mutex.ReleaseMutex(); + } + else + { + MessageBox.Show("程序已启动!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/Properties/AssemblyInfo.cs b/SjMes/PunchAssemble/PunchAndWeld/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..710972e --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("PunchAndWeld")] +[assembly: AssemblyDescription("冲孔焊接设备")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("PunchAndWeld")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("67ea0222-cfb6-4ded-b473-70a9ab3af0a8")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.19")] +[assembly: AssemblyFileVersion("1.0.0.19")] diff --git a/SjMes/PunchAssemble/PunchAndWeld/Properties/Resources.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/Properties/Resources.Designer.cs new file mode 100644 index 0000000..4169c2c --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Properties/Resources.Designer.cs @@ -0,0 +1,113 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace PunchAndWeld.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PunchAndWeld.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap _20200428213144 { + get { + object obj = ResourceManager.GetObject("20200428213144", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap _20200723112650 { + get { + object obj = ResourceManager.GetObject("20200723112650", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap _987654341 { + get { + object obj = ResourceManager.GetObject("987654341", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap background { + get { + object obj = ResourceManager.GetObject("background", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap background1 { + get { + object obj = ResourceManager.GetObject("background1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/Properties/Resources.resx b/SjMes/PunchAssemble/PunchAndWeld/Properties/Resources.resx new file mode 100644 index 0000000..d0f9928 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Properties/Resources.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\background.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\20200723112650.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\20200428213144.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\987654341.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\background1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/Properties/Settings.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/Properties/Settings.Designer.cs new file mode 100644 index 0000000..4c3430b --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Properties/Settings.Designer.cs @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace PunchAndWeld.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)] + [global::System.Configuration.DefaultSettingValueAttribute("http://10.60.101.10:8056/WMSWebService.asmx")] + public string PunchAndWeld_WebReference_WMSWebService { + get { + return ((string)(this["PunchAndWeld_WebReference_WMSWebService"])); + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/Properties/Settings.settings b/SjMes/PunchAssemble/PunchAndWeld/Properties/Settings.settings new file mode 100644 index 0000000..8f528de --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Properties/Settings.settings @@ -0,0 +1,9 @@ + + + + + + http://10.60.101.10:8056/WMSWebService.asmx + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/PunchAndWeld.csproj b/SjMes/PunchAssemble/PunchAndWeld/PunchAndWeld.csproj new file mode 100644 index 0000000..1ebcd86 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/PunchAndWeld.csproj @@ -0,0 +1,424 @@ + + + + + Debug + AnyCPU + {D6371D99-5220-4A51-A72C-966FB4BFCD2C} + WinExe + Properties + PunchAndWeld + PunchAndWeld + v4.0 + 512 + + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + True + .\Interop.OPCAutomation.dll + + + ..\MESClassLibrary\bin\Debug\MESClassLibrary.dll + + + False + .\SchTaskExtAPI.dll + + + + + + + + + + + + + + + + + + + False + DataSouce\Tools.dll + + + + + + + Form + + + Form1.cs + + + Form + + + FrmDoorSill.cs + + + Form + + + FrmDoorSillNew.cs + + + Form + + + FrmDoorSill_214_2.cs + + + Form + + + FrmDoorSill_214.cs + + + Form + + + FrmHybird.cs + + + Form + + + FrmHybridS.cs + + + Form + + + FrmInspection_WheelBrow.cs + + + Form + + + FrmLaser.cs + + + Form + + + FrmNotPackList.cs + + + Form + + + FrmOtherParts.cs + + + Form + + + FrmPackList.cs + + + Form + + + FrmPassWord.cs + + + Form + + + FrmPlan.cs + + + Form + + + FrmPreNoPlan.cs + + + Form + + + FrmPrintOrder.cs + + + Form + + + FrmProScreen.cs + + + Form + + + FrmProScreen2.cs + + + Form + + + FrmProScreen3.cs + + + Form + + + FrmProScreenBumperS.cs + + + Form + + + FrmProScreenBumper.cs + + + Form + + + FrmProScreenS.cs + + + Form + + + FrmProScreen_WheelBrow.cs + + + Form + + + FrmProScreen_WheelBrow_New.cs + + + Form + + + FrmSearchPlan.cs + + + Form + + + FrmTest.cs + + + + + + + + UserControl + + + Uc.cs + + + + True + True + Reference.map + + + Form1.cs + + + FrmDoorSill.cs + + + FrmDoorSillNew.cs + + + FrmDoorSill_214_2.cs + + + FrmDoorSill_214.cs + + + FrmHybird.cs + + + FrmHybridS.cs + + + FrmInspection_WheelBrow.cs + + + FrmLaser.cs + + + FrmNotPackList.cs + + + FrmOtherParts.cs + + + FrmPackList.cs + + + FrmPassWord.cs + + + FrmPlan.cs + + + FrmPreNoPlan.cs + + + FrmPrintOrder.cs + + + FrmProScreen.cs + + + FrmProScreen2.cs + + + FrmProScreen3.cs + + + FrmProScreenBumperS.cs + + + FrmProScreenBumper.cs + + + FrmProScreenS.cs + + + FrmProScreen_WheelBrow.cs + + + FrmProScreen_WheelBrow_New.cs + + + FrmSearchPlan.cs + + + FrmTest.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + Uc.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + MSDiscoCodeGenerator + Reference.cs + + + + + + Designer + + + + + + + + + + + + + + + + + + + + + + Dynamic + Web References\WebReference\ + http://10.60.101.10:8056/WMSWebService.asmx + + + + + Settings + PunchAndWeld_WebReference_WMSWebService + + + + + {C5A16330-A084-48C9-BC0F-0D0B37A14123} + 6 + 0 + 0 + tlbimp + False + True + + + {4018F953-1BFE-441E-8A04-DC8BA1FF060E} + 6 + 0 + 0 + tlbimp + False + True + + + {00020430-0000-0000-C000-000000000046} + 2 + 0 + 0 + primary + False + True + + + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/ReportHelper.cs b/SjMes/PunchAssemble/PunchAndWeld/ReportHelper.cs new file mode 100644 index 0000000..ec6a942 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/ReportHelper.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using gregn6Lib; + +namespace PunchAndWeld +{ + public class ReportHelper + { + public GridppReport Report; + private DataTable _dtDataDetail; + public ReportHelper(string filename, DataTable dtDataHead, DataTable dtDataDetail, int paperOrigntation, short copies, string printerName) + { + Init(filename, dtDataHead, dtDataDetail, paperOrigntation, copies, printerName); + } + + private void Init(string filename, DataTable dtDataHead, DataTable dtDataDetail, int paperOrigntation, short copies, string printerName) + { + try + { + _dtDataDetail = dtDataDetail; + Report = new GridppReport(); + Report.LoadFromFile(filename); + Report.FetchRecord += Report_FetchRecord; + Report.Printer.PrinterName = printerName; + Report.Printer.PaperOrientation = (GRPaperOrientation)paperOrigntation; + Report.Printer.Copies = copies; + FillParameters(Report, dtDataHead); + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + + } + + public void Print(bool isPreview, bool isShowDialog = true) + { + if (isPreview) + Report.PrintPreview(true); + else + Report.Print(isShowDialog); + } + + private void Report_FetchRecord() + { + if (_dtDataDetail != null) + { + FillRecordToReport(Report, _dtDataDetail); + } + } + + private void FillRecordToReport(IGridppReport report, DataTable dtDetail) + { + foreach (DataRow dr in dtDetail.Rows) + { + report.DetailGrid.Recordset.Append(); + foreach (DataColumn dc in dtDetail.Columns) + { + var field = report.FieldByName(dc.ColumnName); + if (field == null) continue; + field.Value = dr[dc.ColumnName]; + } + report.DetailGrid.Recordset.Post(); + } + } + + private void FillParameters(GridppReport report, DataTable dtHead) + { + if (dtHead.Rows.Count == 0) return; + foreach (DataColumn dc in dtHead.Columns) + { + var param = report.ParameterByName(dc.ColumnName); + if (param == null) continue; + param.Value = dtHead.Rows[0][dc.ColumnName]; + } + } + + public static string GetTemplateFile(string sourfilename) + { + var ofd = new OpenFileDialog + { + Filter = @"Grid++ files (*.grf)|*.grf", + Multiselect = false, + RestoreDirectory = true, + FileName = sourfilename, + InitialDirectory = Path.GetDirectoryName(sourfilename), + }; + if (ofd.ShowDialog() != DialogResult.OK) return string.Empty; + return ofd.FileName; + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/Resources/20200428213144.png b/SjMes/PunchAssemble/PunchAndWeld/Resources/20200428213144.png new file mode 100644 index 0000000..41064f6 Binary files /dev/null and b/SjMes/PunchAssemble/PunchAndWeld/Resources/20200428213144.png differ diff --git a/SjMes/PunchAssemble/PunchAndWeld/Resources/20200723112650.png b/SjMes/PunchAssemble/PunchAndWeld/Resources/20200723112650.png new file mode 100644 index 0000000..f68c0bd Binary files /dev/null and b/SjMes/PunchAssemble/PunchAndWeld/Resources/20200723112650.png differ diff --git a/SjMes/PunchAssemble/PunchAndWeld/Resources/987654341.png b/SjMes/PunchAssemble/PunchAndWeld/Resources/987654341.png new file mode 100644 index 0000000..41064f6 Binary files /dev/null and b/SjMes/PunchAssemble/PunchAndWeld/Resources/987654341.png differ diff --git a/SjMes/PunchAssemble/PunchAndWeld/Resources/background.png b/SjMes/PunchAssemble/PunchAndWeld/Resources/background.png new file mode 100644 index 0000000..394fabe Binary files /dev/null and b/SjMes/PunchAssemble/PunchAndWeld/Resources/background.png differ diff --git a/SjMes/PunchAssemble/PunchAndWeld/Resources/background1.png b/SjMes/PunchAssemble/PunchAndWeld/Resources/background1.png new file mode 100644 index 0000000..1be0475 Binary files /dev/null and b/SjMes/PunchAssemble/PunchAndWeld/Resources/background1.png differ diff --git a/SjMes/PunchAssemble/PunchAndWeld/SchTaskExtAPI.dll b/SjMes/PunchAssemble/PunchAndWeld/SchTaskExtAPI.dll new file mode 100644 index 0000000..a055a5a Binary files /dev/null and b/SjMes/PunchAssemble/PunchAndWeld/SchTaskExtAPI.dll differ diff --git a/SjMes/PunchAssemble/PunchAndWeld/UC.Designer.cs b/SjMes/PunchAssemble/PunchAndWeld/UC.Designer.cs new file mode 100644 index 0000000..983f2fb --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/UC.Designer.cs @@ -0,0 +1,87 @@ +namespace PunchAndWeld +{ + partial class Uc + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label2 = new System.Windows.Forms.Label(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(4, 4); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(193, 49); + this.label1.TabIndex = 0; + this.label1.Text = "label1"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // panel1 + // + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.label1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(200, 137); + this.panel1.TabIndex = 1; + // + // label2 + // + this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label2.Font = new System.Drawing.Font("宋体", 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(4, 52); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(193, 80); + this.label2.TabIndex = 1; + this.label2.Text = "label2"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // UC + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.panel1); + this.Name = "UC"; + this.Size = new System.Drawing.Size(200, 137); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label2; + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/UC.cs b/SjMes/PunchAssemble/PunchAndWeld/UC.cs new file mode 100644 index 0000000..c6dbe9c --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/UC.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace PunchAndWeld +{ + public partial class Uc : UserControl + { + public Uc() + { + InitializeComponent(); + } + private string part; + private string sum; + + public string PartInfo + { + get { return part; } + set { label1.Text = value; } + } + + public string Sum + { + get { return sum; } + set { label2.Text = value; } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/UC.resx b/SjMes/PunchAssemble/PunchAndWeld/UC.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/UC.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/Upload.cs b/SjMes/PunchAssemble/PunchAndWeld/Upload.cs new file mode 100644 index 0000000..1375579 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Upload.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections.Generic; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; + +namespace PunchAndWeld +{ + public class Upload + { + public static void DownLoad(string Url, string FileName) + { + bool Value = false; + WebResponse response = null; + Stream stream = null; + try + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); + + response = request.GetResponse(); + stream = response.GetResponseStream(); + + if (!response.ContentType.ToLower().StartsWith("text/")) + { + Value = SaveBinaryFile(response, FileName); + } + } + catch (Exception err) + { + string aa = err.ToString(); + } + } + + /// + /// Save a binary file to disk. + /// + /// The response used to save the file + // 将二进制文件保存到磁盘 + private static bool SaveBinaryFile(WebResponse response, string FileName) + { + bool Value = true; + byte[] buffer = new byte[1024]; + + try + { + if (File.Exists(FileName)) + File.Delete(FileName); + Stream outStream = System.IO.File.Create(FileName); + Stream inStream = response.GetResponseStream(); + + int l; + do + { + l = inStream.Read(buffer, 0, buffer.Length); + if (l > 0) + outStream.Write(buffer, 0, l); + } + while (l > 0); + + outStream.Close(); + inStream.Close(); + } + catch + { + Value = false; + } + return Value; + } + + public void Down(string url, string dtnow) + { + WebRequest wreq = WebRequest.Create(url); + HttpWebResponse wresp = (HttpWebResponse)wreq.GetResponse(); + Stream s = wresp.GetResponseStream(); + System.Drawing.Image img; + img = System.Drawing.Image.FromStream(s); + img.Save("D:\\" + dtnow, ImageFormat.Jpeg); + MemoryStream ms = new MemoryStream(); + img.Save(ms, ImageFormat.Jpeg); + img.Dispose(); + } + + public static bool DoConnComputer(string ip, string folder, string strName, string strPsw) + { + try + { + return SchTaskExtAPI.ConnectOtherComputer.DoConnectOtherComputer(ip, folder, strName, strPsw); + } + catch (Exception ex) + { + throw ex; + } + } + } +} diff --git a/SjMes/PunchAssemble/PunchAndWeld/Web References/WebReference/Reference.cs b/SjMes/PunchAssemble/PunchAndWeld/Web References/WebReference/Reference.cs new file mode 100644 index 0000000..11ef218 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Web References/WebReference/Reference.cs @@ -0,0 +1,398 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +// +// 此源代码是由 Microsoft.VSDesigner 4.0.30319.42000 版自动生成。 +// +#pragma warning disable 1591 + +namespace PunchAndWeld.WebReference { + using System; + using System.Web.Services; + using System.Diagnostics; + using System.Web.Services.Protocols; + using System.Xml.Serialization; + using System.ComponentModel; + + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.3761.0")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Web.Services.WebServiceBindingAttribute(Name="WMSWebServiceSoap", Namespace="http://tempuri.org/")] + public partial class WMSWebService : System.Web.Services.Protocols.SoapHttpClientProtocol { + + private System.Threading.SendOrPostCallback ConnectTestOperationCompleted; + + private System.Threading.SendOrPostCallback WMSSprayingForAppOperationCompleted; + + private System.Threading.SendOrPostCallback WMSSprayingForCSOperationCompleted; + + private System.Threading.SendOrPostCallback AddStockInBarcodeOperationCompleted; + + private System.Threading.SendOrPostCallback InsertInspectOperationCompleted; + + private System.Threading.SendOrPostCallback WMSInterfaceStockInOperationCompleted; + + private bool useDefaultCredentialsSetExplicitly; + + /// + public WMSWebService() { + this.Url = global::PunchAndWeld.Properties.Settings.Default.PunchAndWeld_WebReference_WMSWebService; + if ((this.IsLocalFileSystemWebService(this.Url) == true)) { + this.UseDefaultCredentials = true; + this.useDefaultCredentialsSetExplicitly = false; + } + else { + this.useDefaultCredentialsSetExplicitly = true; + } + } + + public new string Url { + get { + return base.Url; + } + set { + if ((((this.IsLocalFileSystemWebService(base.Url) == true) + && (this.useDefaultCredentialsSetExplicitly == false)) + && (this.IsLocalFileSystemWebService(value) == false))) { + base.UseDefaultCredentials = false; + } + base.Url = value; + } + } + + public new bool UseDefaultCredentials { + get { + return base.UseDefaultCredentials; + } + set { + base.UseDefaultCredentials = value; + this.useDefaultCredentialsSetExplicitly = true; + } + } + + /// + public event ConnectTestCompletedEventHandler ConnectTestCompleted; + + /// + public event WMSSprayingForAppCompletedEventHandler WMSSprayingForAppCompleted; + + /// + public event WMSSprayingForCSCompletedEventHandler WMSSprayingForCSCompleted; + + /// + public event AddStockInBarcodeCompletedEventHandler AddStockInBarcodeCompleted; + + /// + public event InsertInspectCompletedEventHandler InsertInspectCompleted; + + /// + public event WMSInterfaceStockInCompletedEventHandler WMSInterfaceStockInCompleted; + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/ConnectTest", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public string ConnectTest() { + object[] results = this.Invoke("ConnectTest", new object[0]); + return ((string)(results[0])); + } + + /// + public void ConnectTestAsync() { + this.ConnectTestAsync(null); + } + + /// + public void ConnectTestAsync(object userState) { + if ((this.ConnectTestOperationCompleted == null)) { + this.ConnectTestOperationCompleted = new System.Threading.SendOrPostCallback(this.OnConnectTestOperationCompleted); + } + this.InvokeAsync("ConnectTest", new object[0], this.ConnectTestOperationCompleted, userState); + } + + private void OnConnectTestOperationCompleted(object arg) { + if ((this.ConnectTestCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.ConnectTestCompleted(this, new ConnectTestCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/WMSSprayingForApp", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void WMSSprayingForApp(string barcode) { + this.Invoke("WMSSprayingForApp", new object[] { + barcode}); + } + + /// + public void WMSSprayingForAppAsync(string barcode) { + this.WMSSprayingForAppAsync(barcode, null); + } + + /// + public void WMSSprayingForAppAsync(string barcode, object userState) { + if ((this.WMSSprayingForAppOperationCompleted == null)) { + this.WMSSprayingForAppOperationCompleted = new System.Threading.SendOrPostCallback(this.OnWMSSprayingForAppOperationCompleted); + } + this.InvokeAsync("WMSSprayingForApp", new object[] { + barcode}, this.WMSSprayingForAppOperationCompleted, userState); + } + + private void OnWMSSprayingForAppOperationCompleted(object arg) { + if ((this.WMSSprayingForAppCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.WMSSprayingForAppCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/WMSSprayingForCS", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool WMSSprayingForCS(string barcode, int isOK, out string errorReason) { + object[] results = this.Invoke("WMSSprayingForCS", new object[] { + barcode, + isOK}); + errorReason = ((string)(results[1])); + return ((bool)(results[0])); + } + + /// + public void WMSSprayingForCSAsync(string barcode, int isOK) { + this.WMSSprayingForCSAsync(barcode, isOK, null); + } + + /// + public void WMSSprayingForCSAsync(string barcode, int isOK, object userState) { + if ((this.WMSSprayingForCSOperationCompleted == null)) { + this.WMSSprayingForCSOperationCompleted = new System.Threading.SendOrPostCallback(this.OnWMSSprayingForCSOperationCompleted); + } + this.InvokeAsync("WMSSprayingForCS", new object[] { + barcode, + isOK}, this.WMSSprayingForCSOperationCompleted, userState); + } + + private void OnWMSSprayingForCSOperationCompleted(object arg) { + if ((this.WMSSprayingForCSCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.WMSSprayingForCSCompleted(this, new WMSSprayingForCSCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/AddStockInBarcode", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void AddStockInBarcode(string barcode) { + this.Invoke("AddStockInBarcode", new object[] { + barcode}); + } + + /// + public void AddStockInBarcodeAsync(string barcode) { + this.AddStockInBarcodeAsync(barcode, null); + } + + /// + public void AddStockInBarcodeAsync(string barcode, object userState) { + if ((this.AddStockInBarcodeOperationCompleted == null)) { + this.AddStockInBarcodeOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddStockInBarcodeOperationCompleted); + } + this.InvokeAsync("AddStockInBarcode", new object[] { + barcode}, this.AddStockInBarcodeOperationCompleted, userState); + } + + private void OnAddStockInBarcodeOperationCompleted(object arg) { + if ((this.AddStockInBarcodeCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.AddStockInBarcodeCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/InsertInspect", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void InsertInspect(string barcode, string InspectTimes) { + this.Invoke("InsertInspect", new object[] { + barcode, + InspectTimes}); + } + + /// + public void InsertInspectAsync(string barcode, string InspectTimes) { + this.InsertInspectAsync(barcode, InspectTimes, null); + } + + /// + public void InsertInspectAsync(string barcode, string InspectTimes, object userState) { + if ((this.InsertInspectOperationCompleted == null)) { + this.InsertInspectOperationCompleted = new System.Threading.SendOrPostCallback(this.OnInsertInspectOperationCompleted); + } + this.InvokeAsync("InsertInspect", new object[] { + barcode, + InspectTimes}, this.InsertInspectOperationCompleted, userState); + } + + private void OnInsertInspectOperationCompleted(object arg) { + if ((this.InsertInspectCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.InsertInspectCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/WMSInterfaceStockIn", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool WMSInterfaceStockIn(string barcode, string partNo, string batchNo, int isOK) { + object[] results = this.Invoke("WMSInterfaceStockIn", new object[] { + barcode, + partNo, + batchNo, + isOK}); + return ((bool)(results[0])); + } + + /// + public void WMSInterfaceStockInAsync(string barcode, string partNo, string batchNo, int isOK) { + this.WMSInterfaceStockInAsync(barcode, partNo, batchNo, isOK, null); + } + + /// + public void WMSInterfaceStockInAsync(string barcode, string partNo, string batchNo, int isOK, object userState) { + if ((this.WMSInterfaceStockInOperationCompleted == null)) { + this.WMSInterfaceStockInOperationCompleted = new System.Threading.SendOrPostCallback(this.OnWMSInterfaceStockInOperationCompleted); + } + this.InvokeAsync("WMSInterfaceStockIn", new object[] { + barcode, + partNo, + batchNo, + isOK}, this.WMSInterfaceStockInOperationCompleted, userState); + } + + private void OnWMSInterfaceStockInOperationCompleted(object arg) { + if ((this.WMSInterfaceStockInCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.WMSInterfaceStockInCompleted(this, new WMSInterfaceStockInCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + public new void CancelAsync(object userState) { + base.CancelAsync(userState); + } + + private bool IsLocalFileSystemWebService(string url) { + if (((url == null) + || (url == string.Empty))) { + return false; + } + System.Uri wsUri = new System.Uri(url); + if (((wsUri.Port >= 1024) + && (string.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) == 0))) { + return true; + } + return false; + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.3761.0")] + public delegate void ConnectTestCompletedEventHandler(object sender, ConnectTestCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.3761.0")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class ConnectTestCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal ConnectTestCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public string Result { + get { + this.RaiseExceptionIfNecessary(); + return ((string)(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.3761.0")] + public delegate void WMSSprayingForAppCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.3761.0")] + public delegate void WMSSprayingForCSCompletedEventHandler(object sender, WMSSprayingForCSCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.3761.0")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class WMSSprayingForCSCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal WMSSprayingForCSCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public bool Result { + get { + this.RaiseExceptionIfNecessary(); + return ((bool)(this.results[0])); + } + } + + /// + public string errorReason { + get { + this.RaiseExceptionIfNecessary(); + return ((string)(this.results[1])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.3761.0")] + public delegate void AddStockInBarcodeCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.3761.0")] + public delegate void InsertInspectCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.3761.0")] + public delegate void WMSInterfaceStockInCompletedEventHandler(object sender, WMSInterfaceStockInCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.8.3761.0")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class WMSInterfaceStockInCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal WMSInterfaceStockInCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public bool Result { + get { + this.RaiseExceptionIfNecessary(); + return ((bool)(this.results[0])); + } + } + } +} + +#pragma warning restore 1591 \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/Web References/WebReference/Reference.map b/SjMes/PunchAssemble/PunchAndWeld/Web References/WebReference/Reference.map new file mode 100644 index 0000000..5c52f22 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Web References/WebReference/Reference.map @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/Web References/WebReference/WMSWebService.disco b/SjMes/PunchAssemble/PunchAndWeld/Web References/WebReference/WMSWebService.disco new file mode 100644 index 0000000..6f32314 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Web References/WebReference/WMSWebService.disco @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/Web References/WebReference/WMSWebService.wsdl b/SjMes/PunchAssemble/PunchAndWeld/Web References/WebReference/WMSWebService.wsdl new file mode 100644 index 0000000..d30b84f --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/Web References/WebReference/WMSWebService.wsdl @@ -0,0 +1,453 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SjMes/PunchAssemble/PunchAndWeld/signal/Punch128.csv b/SjMes/PunchAssemble/PunchAndWeld/signal/Punch128.csv new file mode 100644 index 0000000..6e01265 --- /dev/null +++ b/SjMes/PunchAssemble/PunchAndWeld/signal/Punch128.csv @@ -0,0 +1,17 @@ +Tag Name,Address,Data Type,Respect Data Type,Client Access,Scan Rate,Scaling,Raw Low,Raw High,Scaled Low,Scaled High,Scaled Data Type,Clamp Low,Clamp High,Eng Units,Description,Negate Value +"Alarm","K0000.05",Boolean,1,R/W,100,,,,,,,,,,"", +"ChangeBoxL","K0000.03",Boolean,1,R/W,100,,,,,,,,,,"״֧Ƿ", +"ChangeBoxR","K0000.02",Boolean,1,R/W,100,,,,,,,,,,"״֧Ƿ", +"CycleTime","K0016",Word,1,R/W,100,,,,,,,,,,"һѭ", +"Finish","K0000.00",Boolean,1,R/W,100,,,,,,,,,,"", +"Mode","K0011",Word,1,R/W,100,,,,,,,,,,"豸ģʽ", +"NGQty","K0015",Word,1,R/W,100,,,,,,,,,,"NG", +"OK","K0000.04",Boolean,1,R/W,100,,,,,,,,,,"OK/NG", +"OKQty","K0014",Word,1,R/W,100,,,,,,,,,,"OK", +"OnLineTime","K0017",Word,1,R/W,100,,,,,,,,,,"豸ϵʱ", +"Qty","K0013",Long,1,R/W,100,,,,,,,,,,"", +"ScanOK","K0001.00",Boolean,1,R/W,100,,,,,,,,,,"ɨɹ", +"StartH","K0000.06",Boolean,1,R/W,100,,,,,,,,,,"ź", +"StartL","K0000.07",Boolean,1,R/W,100,,,,,,,,,,"ź", +"State","K0000.01",Boolean,1,R/W,100,,,,,,,,,,"豸״̬", +"TotalQty","K0012",Long,1,R/W,100,,,,,,,,,,"豸ܲ", diff --git a/SjMes/PunchAssemble/PunchAndWeld/signal/二厂冲孔模拟信号点位.png b/SjMes/PunchAssemble/PunchAndWeld/signal/二厂冲孔模拟信号点位.png new file mode 100644 index 0000000..de76a62 Binary files /dev/null and b/SjMes/PunchAssemble/PunchAndWeld/signal/二厂冲孔模拟信号点位.png differ
序号点检内容" + i + "
" + (j + 1).ToString() + "" + info[j].InspectionContent + "