using System; using System.Collections.Generic; using System.Linq; using System.Text; using ICSSoft.Frame.Data.Entity; using ICSSoft.Base.Config.DBHelper; using System.Data; using System.Data.SqlClient; using ICSSoft.Base.Config.AppConfig; using ICSSoft.Frame.APP.Entity; namespace ICSSoft.Frame.Data.DAL { public class ICSEQPSTPDAL { #region 新增和修改 public static void Add(List InfoList, string dsconn) { FramDataContext db = new FramDataContext(dsconn); db.Connection.Open(); db.Transaction = db.Connection.BeginTransaction(); try { foreach (FormICSEQPSTPUIModelNew info in InfoList) { bool isNew = false; var line = db.ICSEQPSTP.SingleOrDefault(a => a.ID == info.ID); if (line == null) { isNew = true; line = new ICSEQPSTP(); } var codes = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.EQPTypeCode == info.EQPTypeCode && a.ID != info.ID); if (codes.ToList().Count > 0) { throw new Exception("已存在相同产品工序设备类型的标准工时"); } line.ID = info.ID; line.ITEMCODE = info.ITEMCODE; line.OPCODE = info.OPCODE; line.EQPCODE = info.EQPCODE; line.ETTRCODE = info.ETTRCODE; line.ISREF = info.ISREF; line.Status = "New"; var line1 = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.ISREF == "是" && a.ID != info.ID); if (line1.ToList().Count > 0 && info.ISREF == "是") { //throw new Exception("已存在相同产品工序的默认标准工时"); //已经存在则改为是 foreach (var stp in line1.ToList()) { stp.ISREF = "否"; } } line.STIME = Convert.ToDecimal(info.STIME); line.RTIME = Convert.ToDecimal(info.RTIME); line.MUSER = AppConfig.UserId; line.MUSERName = AppConfig.UserName; line.MTIME = DateTime.Now; line.WorkPoint = AppConfig.WorkPointCode; line.EATTRIBUTE1 = info.EATTRIBUTE1; line.EQPTypeCode = info.EQPTypeCode; //20180626新增 line.BladeModelAndBrand = info.BladeModelAndBrand; line.OutsourcingProperties = info.OutsourcingProperties; line.ToolingNo = info.ToolingNo; if (isNew) db.ICSEQPSTP.InsertOnSubmit(line); db.SubmitChanges(); } db.Transaction.Commit(); } catch (Exception ex) { db.Transaction.Rollback(); throw ex; } } #endregion #region 新增和修改List public static string AddList(List InfoList, string dsconn) { FramDataContext db = new FramDataContext(dsconn); db.Connection.Open(); db.Transaction = db.Connection.BeginTransaction(); try { string str = ""; foreach (FormICSEQPSTPUIModelNew info in InfoList) { var codes = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.EQPTypeCode == info.EQPTypeCode); List list = codes.ToList(); if (list.Count > 0) { //已审核不做处理 if (list[0].Status == "Check") { var line = list[0]; line.ITEMCODE = info.ITEMCODE; line.OPCODE = info.OPCODE; line.EQPCODE = info.EQPCODE; line.EQPTypeCode = info.EQPTypeCode; line.ETTRCODE = info.ETTRCODE; line.STIME = Convert.ToDecimal(info.STIME); line.ISREF = info.ISREF; line.RTIME = info.RTIME; line.Status = info.Status; line.MUSER = AppConfig.UserId; line.MUSERName = AppConfig.UserName; line.MTIME = DateTime.Now; line.WorkPoint = AppConfig.WorkPointCode; line.EATTRIBUTE1 = info.EATTRIBUTE1; line.OutsourcingProperties = info.OutsourcingProperties; line.BladeModelAndBrand = info.BladeModelAndBrand; line.ToolingNo = info.ToolingNo; db.SubmitChanges(); } else //未审核时需要更新 { //str += "存货编码:" + info.ITEMCODE + "工序代码:" + info.OPCODE + "设备类型" + info.EQPTypeCode + "已维护标准工时" + "\r\n"; //continue; var line = list[0]; line.ITEMCODE = info.ITEMCODE; line.OPCODE = info.OPCODE; line.EQPCODE = info.EQPCODE; line.EQPTypeCode = info.EQPTypeCode; line.ETTRCODE = info.ETTRCODE; line.STIME = Convert.ToDecimal(info.STIME); line.ISREF = info.ISREF; line.RTIME = info.RTIME; line.Status = info.Status; var line1 = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.ISREF == "是" && a.EQPTypeCode != info.EQPTypeCode); if (line1.ToList().Count > 0 && info.ISREF == "是") { //str += "存货编码:" + info.ITEMCODE + "工序代码:" + info.OPCODE + "已存在默认标准工时" + "\r\n"; //continue; foreach (var stp in line1.ToList()) { stp.ISREF = "否"; } } line.OutsourcingProperties = info.OutsourcingProperties; line.BladeModelAndBrand = info.BladeModelAndBrand; line.ToolingNo = info.ToolingNo; line.MUSER = AppConfig.UserId; line.MUSERName = AppConfig.UserName; line.MTIME = DateTime.Now; line.WorkPoint = AppConfig.WorkPointCode; line.EATTRIBUTE1 = info.EATTRIBUTE1; db.SubmitChanges(); } } else { bool isNew = false; var line = db.ICSEQPSTP.SingleOrDefault(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.EQPTypeCode == info.EQPTypeCode); if (line == null) { isNew = true; line = new ICSEQPSTP(); line.ID = AppConfig.GetGuid(); } //line.ID = info.ID; line.ITEMCODE = info.ITEMCODE; line.OPCODE = info.OPCODE; //line.EQPCODE = info.EQPCODE; line.EQPTypeCode = info.EQPTypeCode; line.ETTRCODE = info.ETTRCODE; line.STIME = Convert.ToDecimal(info.STIME); line.ISREF = info.ISREF; line.RTIME = info.RTIME; line.Status = info.Status; var line1 = db.ICSEQPSTP.Where(a => a.ITEMCODE == info.ITEMCODE && a.OPCODE == info.OPCODE && a.EQPTypeCode != info.EQPTypeCode && a.ISREF == "是"); if (line1.ToList().Count > 0 && info.ISREF == "是") { //str += "存货编码:" + info.ITEMCODE + "工序代码:" + info.OPCODE + "已存在默认标准工时" + "\r\n"; foreach (var stp in line1.ToList()) { stp.ISREF = "否"; } //continue; } line.MUSER = AppConfig.UserId; line.MUSERName = AppConfig.UserName; line.MTIME = DateTime.Now; line.WorkPoint = AppConfig.WorkPointCode; line.EATTRIBUTE1 = info.EATTRIBUTE1; line.OutsourcingProperties = info.OutsourcingProperties; line.BladeModelAndBrand = info.BladeModelAndBrand; line.ToolingNo = info.ToolingNo; if (isNew) db.ICSEQPSTP.InsertOnSubmit(line); db.SubmitChanges(); } } db.Transaction.Commit(); return str; } catch (Exception ex) { db.Transaction.Rollback(); throw ex; } } #endregion #region 通过ID查询 public static DataTable searchInfoByID(string ID, string dsconn) { // string sql = @"select a.ID, //a.ITEMCODE, //a.OPCODE, //a.EQPCODE, //a.ETTRCOde, //a.STIME, //a.RTIME, //a.ISREF, //a.OutsourcingProperties , //a.BladeModelAndBrand, //a.ToolingNo, // //a.WorkPoint, //a.MUSER, //a.MUSERName, //a.MTIME, //a.EATTRIBUTE1, //a.EQPTypeCode, //b.INVNAME ItemName, //c.OPDESC, //d.EnumText as EQPTypeName, //e.EQPName // // FROM ICSEQPSTP a // left join ICSINVENTORY b on a.ITEMCODE=b.INVCODE // left join ICSOP c on a.OPCODE=C.OPCODE // left join ( select * from Sys_EnumValues where EnumKey='001') d on a.EQPTypeCode=d.EnumValue // left join ICSEquipment e on a.EQPCODE=E.EQPCODE // where a.ID='{0}'"; string sql = @"select a.ID, a.ITEMCODE, a.OPCODE, a.EQPCODE, a.ETTRCOde, a.STIME, a.RTIME, a.ISREF, a.OutsourcingProperties , a.BladeModelAndBrand, a.ToolingNo, a.WorkPoint, a.MUSER, a.MUSERName, a.MTIME, a.EATTRIBUTE1, a.EQPTypeCode, b.INVNAME ItemName, c.OPDESC, a.EQPTypeCode as EQPTypeCode, -- d.TypeCODE AS EQPCODE, d.TypeDESC as EQPTypeName FROM ICSEQPSTP a left join ICSINVENTORY b on a.ITEMCODE=b.INVCODE left join ICSOP c on a.OPCODE=C.OPCODE LEFT JOIN ICSEquipmentType d ON a.EQPTypeCode=d.TypeCODE -- left join ( select * from Sys_EnumValues where EnumKey='001') d on a.EQPTypeCode=d.EnumValue -- left join ICSEquipment e on a.EQPCODE=E.EQPCODE where a.ID='{0}';"; sql = string.Format(sql, ID); DataTable dt = DBHelper.ExecuteDataset(dsconn, CommandType.Text, sql).Tables[0]; return dt; } #endregion #region 是否存在 public static bool IsIncluding(string ItemCode, string OPCode, string eqptype, string dsconn) { FramDataContext db = new FramDataContext(dsconn); db.Connection.Open(); db.Transaction = db.Connection.BeginTransaction(); try { var line = db.ICSEQPSTP.SingleOrDefault(a => a.ITEMCODE == ItemCode && a.OPCODE == OPCode && a.EQPTypeCode == eqptype); if (line == null) return true; else return false; } catch (Exception ex) { db.Transaction.Rollback(); throw ex; } } #endregion #region 删除 public static void deleteInfo(List codeList, string dsconn) { FramDataContext db = new FramDataContext(dsconn); db.Connection.Open(); db.Transaction = db.Connection.BeginTransaction(); try { var lines = db.ICSEQPSTP.Where(a => codeList.Contains(a.ID)); db.ICSEQPSTP.DeleteAllOnSubmit(lines); db.SubmitChanges(); db.Transaction.Commit(); } catch (Exception ex) { db.Transaction.Rollback(); throw ex; } } #endregion #region 审核 public static void checkInfo(List codeList, string dsconn) { FramDataContext db = new FramDataContext(dsconn); db.Connection.Open(); db.Transaction = db.Connection.BeginTransaction(); try { var lines = db.ICSEQPSTP.Where(a => codeList.Contains(a.ID)); foreach (var line in lines) { line.Status = "Check"; } db.SubmitChanges(); db.Transaction.Commit(); } catch (Exception ex) { db.Transaction.Rollback(); throw ex; } } #endregion } }