using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; namespace FCOMMON { public static partial class DBM { public static SqlConnection getCn() { string cs = FCOMMON.info.CS; SqlConnection cn = new SqlConnection(); cn.ConnectionString = cs; return cn; } public struct sItemInfo { public int idx; public string sid; public string model; public string supply; public string name; public string unit; public float scale; public string price; public int supplyidx; public string project; public int qty; } public static byte[] getImagByteArray(System.Drawing.Image img) { if (img == null || img.Width < 1 || img.Height < 1) return null; //이미지가 640보다 크면 조정한다. if (img.Width > 640) { var newrate = (640.0 / img.Width * 1.0); var newheight = (int)(img.Height * newrate); //높이값 다시 계산 var newimg = new System.Drawing.Bitmap(640, newheight); var g = System.Drawing.Graphics.FromImage(newimg); g.DrawImage(img, new System.Drawing.Rectangle(0, 0, 640, newheight)); g.Dispose(); img = (System.Drawing.Image)(newimg.Clone()); } else if (img.Height > 480) { var newrate = (480.0 / img.Height * 1.0); var newwidth = (int)(img.Width * newrate); //높이값 다시 계산 var newimg = new System.Drawing.Bitmap(newwidth, 480); var g = System.Drawing.Graphics.FromImage(newimg); g.DrawImage(img, new System.Drawing.Rectangle(0, 0, newwidth, 480)); g.Dispose(); img = (System.Drawing.Image)(newimg.Clone()); } System.IO.MemoryStream sm = new System.IO.MemoryStream(); img.Save(sm, System.Drawing.Imaging.ImageFormat.Jpeg); var buffer = sm.GetBuffer(); sm.Dispose(); return buffer; } public static Boolean setImageData(System.Drawing.Bitmap img, string table, string field, int idx) { return setImageData((System.Drawing.Image)img, table, field, idx); } public static Boolean setImageData(System.Drawing.Image img, string table, string field, int idx) { if (img == null || img.Width < 1 || img.Height < 1) return false; //이미지가 640보다 크면 조정한다. if (img.Width > 640) { var newrate = (640.0 / img.Width * 1.0); var newheight = (int)(img.Height * newrate); //높이값 다시 계산 var newimg = new System.Drawing.Bitmap(640, newheight); var g = System.Drawing.Graphics.FromImage(newimg); g.DrawImage(img, new System.Drawing.Rectangle(0, 0, 640, newheight)); g.Dispose(); img = (System.Drawing.Image)(newimg.Clone()); } else if (img.Height > 480) { var newrate = (480.0 / img.Height * 1.0); var newwidth = (int)(img.Width * newrate); //높이값 다시 계산 var newimg = new System.Drawing.Bitmap(newwidth, 480); var g = System.Drawing.Graphics.FromImage(newimg); g.DrawImage(img, new System.Drawing.Rectangle(0, 0, newwidth, 480)); g.Dispose(); img = (System.Drawing.Image)(newimg.Clone()); } var cn = getCn(); cn.Open(); Boolean retval = false; string sql = "update " + table + " set " + field + " = @data" + " where idx = @idx"; var cmd = new SqlCommand(sql, cn); System.IO.MemoryStream sm = new System.IO.MemoryStream(); img.Save(sm, System.Drawing.Imaging.ImageFormat.Jpeg); var buffer = sm.GetBuffer(); sm.Dispose(); cmd.Parameters.Add(new SqlParameter("idx", idx)); cmd.Parameters.Add(new SqlParameter("data", buffer)); try { cmd.ExecuteNonQuery(); retval = true; } catch { } cn.Close(); cn.Dispose(); return retval; } /// /// 지정쿼리를 실행합니다. /// /// /// public static int ExecuteNonQuery(string sql) { var cn = getCn(); cn.Open(); var cmd = new SqlCommand(sql, cn); var retval = cmd.ExecuteNonQuery(); cn.Close(); cn.Dispose(); return retval; } public static int ExecuteScalarI(string sql) { var cn = getCn(); cn.Open(); var cmd = new SqlCommand(sql, cn); var retval = (int)(cmd.ExecuteScalar()); cn.Close(); cn.Dispose(); return retval; } public static string ExecuteScalar(string sql) { var cn = getCn(); cn.Open(); var cmd = new SqlCommand(sql, cn); var retval = cmd.ExecuteScalar().ToString(); cn.Close(); cn.Dispose(); return retval; } public static System.Drawing.Image GetImageData(string table, string field, int idx) { var cn = getCn(); cn.Open(); string sql = "select " + field + " from " + table + " where idx = " + idx.ToString(); var cmd = new SqlCommand(sql, cn); var data = cmd.ExecuteScalar() as byte[]; System.Drawing.Bitmap bmp = null; if (data != null) { System.IO.MemoryStream ms = new System.IO.MemoryStream(data); bmp = new System.Drawing.Bitmap(ms, true); ms.Dispose(); } cn.Close(); cn.Dispose(); return bmp; } public static sItemInfo getLastPurchaseInfo(int idx) { var cn = getCn(); cn.Open(); var retval = new sItemInfo(); retval.idx = -1; string sql = "select isnull(max(idx),-1) from Purchase where pumidx = " + idx.ToString(); var cmd = new SqlCommand(sql, cn); int maxidx = int.Parse(cmd.ExecuteScalar().ToString()); if (maxidx == -1) return retval; cmd.CommandText = "select * from Purchase where idx = " + maxidx.ToString(); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { retval.idx = (int)rdr["idx"]; if (rdr["sid"] != DBNull.Value) retval.sid = rdr["sid"].ToString(); if (rdr["pumscale"] != DBNull.Value) retval.model = rdr["pumscale"].ToString(); if (rdr["supply"] != DBNull.Value) retval.supply = rdr["supply"].ToString(); if (rdr["supplyidx"] != DBNull.Value) retval.supplyidx = int.Parse(rdr["supplyidx"].ToString()); else retval.supplyidx = -1; if (rdr["pumname"] != DBNull.Value) retval.name = rdr["pumname"].ToString(); if (rdr["pumunit"] != DBNull.Value) retval.unit = rdr["pumunit"].ToString(); if (rdr["project"] != DBNull.Value) retval.project = rdr["project"].ToString(); if (rdr["pumprice"] != DBNull.Value) retval.price = rdr["pumprice"].ToString(); else retval.price = "0"; if (rdr["pumqty"] != DBNull.Value) retval.qty = int.Parse(rdr["pumqty"].ToString()); else retval.qty = 0; } cn.Close(); cn.Dispose(); return retval; } /// /// 서플라이정보를 찾습니다. 1개의데이터가 검색된 경우에만 사용 됩니다. /// /// /// /// /// /// public static Boolean getFindSupply(string nameLike, out int idx, out string nameK, out string nameE) { idx = -1; nameE = ""; nameK = ""; var cn = getCn(); cn.Open(); string sql = "select idx,name,name2 from Customs where (name like '%SEEMAX%' or name2 like '%{0}%')"; sql = string.Format(sql, nameLike); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); int cnt = 0; while (rdr.Read()) { idx = (int)rdr["idx"]; if (rdr["name"] != DBNull.Value) nameK = rdr["name"].ToString(); if (rdr["name2"] != DBNull.Value) nameE = rdr["name2"].ToString(); cnt += 1; } cn.Close(); cn.Dispose(); return cnt == 1; } /// /// 프로젝트 주간내역을 추가합니다 /// /// /// /// public static Boolean addProjectHistory(int ProjectIdx, string pdate, string Message,string rtf) { var cn = getCn(); cn.Open(); string sql = "insert into ProjectsHistory(pidx,pdate,remark,remark2,wuid,wdate)" + " values(@pidx,@pdate,@remark,@remark2,@wuid,@wdate)"; var cmd = new SqlCommand(sql, cn); cmd.Parameters.Add(new SqlParameter("pidx", ProjectIdx)); cmd.Parameters.Add(new SqlParameter("pdate", pdate)); cmd.Parameters.Add(new SqlParameter("remark", Message)); cmd.Parameters.Add(new SqlParameter("remark2", rtf)); cmd.Parameters.Add(new SqlParameter("wuid", FCOMMON.info.Login.no)); cmd.Parameters.Add(new SqlParameter("wdate", DateTime.Now)); var cnt = cmd.ExecuteNonQuery(); cmd.Dispose(); cn.Close(); cn.Dispose(); return cnt == 1; } public static sItemInfo getItemInfo(int idx) { var cn = getCn(); cn.Open(); var retval = new sItemInfo(); retval.idx = -1; string sql = "select * from Items where gcode='" + FCOMMON.info.Login.gcode + "' and idx = " + idx.ToString(); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { retval.idx = (int)rdr["idx"]; if (rdr["sid"] != DBNull.Value) retval.sid = rdr["sid"].ToString(); if (rdr["model"] != DBNull.Value) retval.model = rdr["model"].ToString(); if (rdr["supply"] != DBNull.Value) retval.supply = rdr["supply"].ToString(); if (rdr["supplyidx"] != DBNull.Value) retval.supplyidx = int.Parse(rdr["supplyidx"].ToString()); if (rdr["name"] != DBNull.Value) retval.name = rdr["name"].ToString(); if (rdr["unit"] != DBNull.Value) retval.unit = rdr["unit"].ToString(); if (rdr["scale"] != DBNull.Value) retval.scale = float.Parse(rdr["scale"].ToString()); if (rdr["price"] != DBNull.Value) retval.price = rdr["price"].ToString(); } cn.Close(); cn.Dispose(); return retval; } public static int addItemInfo(sItemInfo info) { int retval = -1; var cn = getCn(); cn.Open(); string sql = "insert into Items" + " ([gcode],[cate],[sid],[model],[supply],[supplyidx],[name],[unit],[scale],[price],[wuid],[wdate])" + " values " + " (@gcode,@cate,@sid,@model,@supply,@supplyidx,@name,@unit,@scale,@price,@wuid,@wdate)"; var cmd = new SqlCommand(sql, cn); cmd.Parameters.Add(new SqlParameter("@gcode", FCOMMON.info.Login.gcode)); cmd.Parameters.Add(new SqlParameter("@cate", "etc")); cmd.Parameters.Add(new SqlParameter("@sid", info.sid)); cmd.Parameters.Add(new SqlParameter("@model", info.model)); cmd.Parameters.Add(new SqlParameter("@supply", info.supply)); cmd.Parameters.Add(new SqlParameter("@supplyidx", info.supplyidx)); cmd.Parameters.Add(new SqlParameter("@name", info.name)); cmd.Parameters.Add(new SqlParameter("@unit", info.unit)); cmd.Parameters.Add(new SqlParameter("@scale", info.scale)); cmd.Parameters.Add(new SqlParameter("@price", info.price)); cmd.Parameters.Add(new SqlParameter("@wuid", FCOMMON.info.Login.no)); cmd.Parameters.Add(new SqlParameter("@wdate", DateTime.Now)); var iCnt = cmd.ExecuteNonQuery(); if (iCnt == 1) { cmd.CommandText = "select isnull(idx,-1) from Items where gcode=@gcode and [sid] = @sid"; cmd.Parameters.Clear(); cmd.Parameters.Add(new SqlParameter("gcode", FCOMMON.info.Login.gcode)); cmd.Parameters.Add(new SqlParameter("sid", info.sid)); retval = (int)cmd.ExecuteScalar(); } cn.Close(); cn.Dispose(); return retval; } public static sItemInfo getItemInfo(string sid) { var cn = getCn(); cn.Open(); var retval = new sItemInfo(); retval.idx = -1; string sql = "select * from Items where [gcode] = '" + FCOMMON.info.Login.gcode + "' and [sid] = '" + sid + "'"; var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { retval.idx = (int)rdr["idx"]; if (rdr["sid"] != DBNull.Value) retval.sid = rdr["sid"].ToString(); if (rdr["model"] != DBNull.Value) retval.model = rdr["model"].ToString(); if (rdr["supply"] != DBNull.Value) retval.supply = rdr["supply"].ToString(); if (rdr["supplyidx"] != DBNull.Value) retval.supplyidx = int.Parse(rdr["supplyidx"].ToString()); if (rdr["name"] != DBNull.Value) retval.name = rdr["name"].ToString(); if (rdr["unit"] != DBNull.Value) retval.unit = rdr["unit"].ToString(); if (rdr["scale"] != DBNull.Value) retval.scale = float.Parse(rdr["scale"].ToString()); if (rdr["price"] != DBNull.Value) retval.price = rdr["price"].ToString(); } cn.Close(); cn.Dispose(); return retval; } public static Dictionary getUserList(int baseLevel = 1) { string where = "isnull(level,0) >= " + baseLevel.ToString(); return getTwoColumnList("vGroupUser", "id", "name", where, "name"); } public static System.Data.DataTable getUserTable(int baseLevel = 1) { var cn = getCn(); cn.Open(); var retval = new sItemInfo(); retval.idx = -1; string sql = "select [id],[name],([name] +'(' +[id] +')') as dispName,[dept],[email],[level],[tel] " + " from Users " + " where gcode='" + FCOMMON.info.Login.gcode + "' and [id] <> 'dev' and dept like '%" + FCOMMON.info.Login.dept.Replace("'", "''") + "%' order by [name]"; var cmd = new SqlCommand(sql, cn); var da = new SqlDataAdapter(sql, cn); var ds = new System.Data.DataSet(); da.Fill(ds); cn.Close(); cn.Dispose(); if (ds.Tables.Count > 0) return ds.Tables[0]; else return null; } private static Dictionary MakeDataTable(List list) { var retval = new Dictionary(); foreach (var item in list) retval.Add(item, item); return retval; } private static System.Data.DataTable MakeDataTable(Dictionary list) { System.Data.DataTable dt = new System.Data.DataTable(); dt.Columns.Add("Key"); dt.Columns.Add("Value"); dt.Columns.Add("KeyValue"); foreach (var item in list) { dt.Rows.Add(new string[] { item.Key, item.Value, string.Format("[{0}] {1}", item.Key, item.Value) }); } dt.AcceptChanges(); return dt; } public static Dictionary getProjectList(string StateCode = "") { string where = "status = '{0}'"; if (StateCode != "") where = string.Format(where, StateCode); else where = string.Empty; return getTwoColumnList("Projects", "idx", "name", where, "status,name"); } public static System.Data.DataTable getProjectData(string StateCode = "") { var list = getProjectList(StateCode); return MakeDataTable(list); } public static Dictionary getCodeList(string GroupCode = "99") { string where = "Grp = '{0}'"; where = string.Format(where, GroupCode); return getTwoColumnList("Common", "code", "memo", where, "code"); } public static string getCodeSavlue(string GroupCode, string code) { var cn = getCn(); cn.Open(); var sql = "select isnull(SValue,'')" + " from Common" + " where gcode='" + FCOMMON.info.Login.gcode + "' and Grp = '{0}' and code = '{1}'"; sql = string.Format(sql, GroupCode, code); var cmd = new SqlCommand(sql, cn); var data = cmd.ExecuteScalar(); cmd.Dispose(); cn.Close(); cn.Dispose(); return data.ToString(); } public struct sCodeData { public string code; public string title; public string svalue; public string grp; } public static sCodeData getCodeBySvalue(string GroupCode, string svalue) { var retval = new sCodeData(); retval.code = string.Empty; retval.title = string.Empty; retval.svalue = string.Empty; retval.grp = string.Empty; var cn = getCn(); cn.Open(); var sql = "select isnull(code,''),isnull(memo,'')" + " from Common" + " where gcode='" + FCOMMON.info.Login.gcode + "' and Grp = '{0}' and svalue = '{1}'"; sql = string.Format(sql, GroupCode, svalue); var cmd = new SqlCommand(sql, cn); var da = cmd.ExecuteReader(); while (da.Read()) { retval.code = da[0].ToString(); retval.title = da[1].ToString(); } cmd.Dispose(); cn.Close(); cn.Dispose(); retval.grp = GroupCode; retval.svalue = svalue; return retval; } public static sCodeData getCodeByMemo(string GroupCode, string memo) { var retval = new sCodeData(); retval.code = string.Empty; retval.title = string.Empty; retval.svalue = string.Empty; retval.grp = string.Empty; var cn = getCn(); cn.Open(); var sql = "select isnull(code,''),isnull(memo,'')" + " from Common" + " where gcode='" + FCOMMON.info.Login.gcode + "' and Grp = '{0}' and memo = '{1}'"; sql = string.Format(sql, GroupCode, memo); var cmd = new SqlCommand(sql, cn); var da = cmd.ExecuteReader(); while (da.Read()) { retval.code = da[0].ToString(); retval.title = da[1].ToString(); } cmd.Dispose(); cn.Close(); cn.Dispose(); retval.grp = GroupCode; retval.svalue = memo; return retval; } public static Boolean insertCommonCode(string GroupCode, string code, string memo, string svalue = "") { var cn = getCn(); cn.Open(); var sql = "insert into common(gcode,grp,code,svalue,memo,wuid,wdate)" + " values(@gcode,@grp,@code,@svalue,@memo,@wuid,@wdate)"; sql = string.Format(sql, GroupCode, memo); var cmd = new SqlCommand(sql, cn); cmd.Parameters.Add(new SqlParameter("gcode", FCOMMON.info.Login.gcode)); cmd.Parameters.Add(new SqlParameter("grp", GroupCode)); cmd.Parameters.Add(new SqlParameter("code", code)); cmd.Parameters.Add(new SqlParameter("memo", memo)); cmd.Parameters.Add(new SqlParameter("svalue", svalue)); cmd.Parameters.Add(new SqlParameter("wuid", FCOMMON.info.Login.no)); cmd.Parameters.Add(new SqlParameter("wdate", DateTime.Now)); var da = cmd.ExecuteNonQuery(); cmd.Dispose(); cn.Close(); cn.Dispose(); return da > 0; } public static sCodeData getCodeByCode(string GroupCode, string code) { var retval = new sCodeData(); retval.code = string.Empty; retval.title = string.Empty; retval.svalue = string.Empty; retval.grp = string.Empty; var cn = getCn(); cn.Open(); var sql = "select isnull(code,''),isnull(memo,'')" + " from Common" + " where gcode='" + FCOMMON.info.Login.gcode + "' and Grp = '{0}' and code = '{1}'"; sql = string.Format(sql, GroupCode, code); var cmd = new SqlCommand(sql, cn); var da = cmd.ExecuteReader(); while (da.Read()) { retval.code = da[0].ToString(); retval.title = da[1].ToString(); } cmd.Dispose(); cn.Close(); cn.Dispose(); retval.grp = GroupCode; retval.svalue = code; return retval; } /// /// 지정된 프로젝트의 마지막 업무일지 데이터를 반환함 /// /// /// public static System.Data.DataTable getLastJobReportData(string uid, int projectIdx) { var cn = getCn(); cn.Open(); var sql = "select top 1 * from JobReport" + " where gcode ='" + FCOMMON.info.Login.gcode + "' and isnull(pidx,-1)=" + projectIdx.ToString() + " and uid ='" + uid + "'" + " order by pdate desc, idx desc"; var da = new SqlDataAdapter(sql, cn); var ds = new System.Data.DataSet(); da.Fill(ds); cn.Close(); if (ds.Tables.Count > 0) return ds.Tables[0]; else return null; } public static System.Data.DataTable getLastJobReportDatabyProjectName(string uid, string prjName) { var cn = getCn(); cn.Open(); var sql = "select top 1 * from JobReport" + " where gcode='" + FCOMMON.info.Login.gcode + "' and isnull(projectName,'') like '" + prjName + "'" + " and uid ='" + uid + "'" + " order by pdate desc, idx desc"; var da = new SqlDataAdapter(sql, cn); var ds = new System.Data.DataSet(); da.Fill(ds); cn.Close(); if (ds.Tables.Count > 0) return ds.Tables[0]; else return null; } public static System.Data.DataTable getLastJobReportData(string uid, string type) { var cn = getCn(); cn.Open(); var sql = "select top 1 * from JobReport" + " where gcode = '" + FCOMMON.info.Login.gcode + "' and isnull([type],'')='" + type + "'" + " and uid ='" + uid + "'" + " order by pdate desc, idx desc"; var da = new SqlDataAdapter(sql, cn); var ds = new System.Data.DataSet(); da.Fill(ds); cn.Close(); if (ds.Tables.Count > 0) return ds.Tables[0]; else return null; } public static System.Data.DataTable getProcessList() { System.Data.DataTable retval = new System.Data.DataTable(); retval.Columns.Add("Code"); retval.Columns.Add("Value"); var cn = getCn(); cn.Open(); var sql = "select isnull(processs,'') as process" + " from Users" + " where processs is not null and gcode='{0}'" + " group by processs" + " order by process"; sql = string.Format(sql, FCOMMON.info.Login.gcode); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); var cnt = 0; while (rdr.Read()) { retval.Rows.Add(new string[] { cnt.ToString(), rdr[0].ToString() }); cnt += 1; } rdr.Close(); cmd.Dispose(); cn.Close(); cn.Dispose(); return retval; } public static System.Data.DataTable getUserProjectList(string userName) { System.Data.DataTable retval = new System.Data.DataTable(); retval.Columns.Add("Code"); retval.Columns.Add("Value"); var cn = getCn(); cn.Open(); var sql = "select idx,isnull(name,''),pdate from Projects" + " where gcode='{0}'" + " and (isnull(userManager,'') like '%{1}%'" + " or isnull(userMain,'') like '%{1}%'" + " or isnull(usersub,'') like '%{1}%')" + " order by pdate desc,name"; sql = string.Format(sql, FCOMMON.info.Login.gcode, userName); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { retval.Rows.Add(new string[] { rdr[0].ToString(), rdr[1].ToString() }); } rdr.Close(); cmd.Dispose(); cn.Close(); cn.Dispose(); return retval; } public static System.Data.DataTable getCodeTable(string GroupCode = "99") { System.Data.DataTable retval = new System.Data.DataTable(); retval.Columns.Add("Code"); retval.Columns.Add("Value"); retval.Columns.Add("SValue"); var cn = getCn(); cn.Open(); var sql = "select isnull(code,''),isnull(memo ,''),isnull(svalue,'')" + " from common" + " where gcode='" + FCOMMON.info.Login.gcode + "' and grp = '" + GroupCode + "'" + " and isnull(code,'') <> ''" + " order by isnull(memo,'')"; var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { retval.Rows.Add(new string[] { rdr[0].ToString(), rdr[1].ToString(), rdr[2].ToString() }); } rdr.Close(); cmd.Dispose(); cn.Close(); cn.Dispose(); return retval; } public static Dictionary getTwoColumnList(string table, string col1, string col2, string where = "", string order = "") { Dictionary retval = new Dictionary(); var cn = getCn(); cn.Open(); var sql = "select isnull({1},''),isnull({2},'')" + " from {0} " + " where gcode = '" + FCOMMON.info.Login.gcode + "' "; if (where != "") sql += " and " + where; if (order != "") sql += " order by " + order; sql = string.Format(sql, table, col1, col2); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { retval.Add(rdr[0].ToString(), rdr[1].ToString()); } rdr.Close(); cmd.Dispose(); cn.Close(); cn.Dispose(); return retval; } public static List getPlaceList(string gcode) { var retval = new List(); var cn = getCn(); cn.Open(); var sql = "select isnull(place,'')" + " from Inventory " + " where gcode = '{0}'" + " order by place"; sql = string.Format(sql, gcode); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { retval.Add(rdr[0].ToString()); } rdr.Close(); cmd.Dispose(); cn.Close(); cn.Dispose(); return retval; } public static Dictionary getGroupTable(string GroupColumn, string table, string where = "", Boolean desc = false) { var list = getGroupList(GroupColumn, table, where, desc); return MakeDataTable(list); } /// /// 데이터중 첫번째 자료를 반환 합니다. /// /// /// /// /// /// public static String getFirstValue(string column, string table, string where = "", string order = "") { string retval = string.Empty; var cn = getCn(); cn.Open(); var sql = "select {0} " + " from {1} " + " where gcode='" + FCOMMON.info.Login.gcode + "' and isnull({0},'') != '' "; if (where != "") sql += " and " + where; if (order != "") sql += " order by " + order; sql = string.Format(sql, "[" + column + "]", table); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { if (rdr[0] != null) retval = rdr[0].ToString(); } cmd.Dispose(); cn.Close(); cn.Dispose(); return retval; } /// /// 지정된 사용자/월의 전체 근무시간 초과시간을 반환함 /// /// 사용자번호 /// 지정월(2019-05) /// 근무시간 /// 최대근무시간(근무일수*8) /// 초과근무시간 public static void getWorkTime(string uid, string yymm, out float work, out int total, out float ot) { work = 0; total = 0; ot = 0; string retval = string.Empty; var cn = getCn(); try { cn.Open(); var sql = "select isnull(sum(hrs),0) as hrs,isnull(sum(ot),0) as ot,dbo.getWorkDayCount('{1}') as workday" + " from JobReport" + " where gcode='" + FCOMMON.info.Login.gcode + "' and uid = '{0}' and substring(pdate,1,7) = '{1}'"; sql = string.Format(sql, uid, yymm); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { work = float.Parse(rdr[0].ToString()); ot = float.Parse(rdr[1].ToString()); total = int.Parse(rdr[2].ToString()) * 8; } cmd.Dispose(); cn.Close(); cn.Dispose(); } catch { work = 0; total = 0; ot = 0; } finally { if (cn != null) cn.Dispose(); } } public static int addItem(string pumname, string sid, string model, decimal price, string supply, int supplyidx = -1, byte[] pic = null) { var cn = getCn(); cn.Open(); int retval = -1; var cmd2 = new SqlCommand("", cn); cmd2.CommandText = string.Format("select count(*) from Items " + " where ISNULL(REPLACE(name, ' ', '') + REPLACE(model, ' ', ''), '') = '{0}'", pumname.Replace(" ", "").Replace("'", "''") + model.Replace(" ", "").Replace("'", "''")); var cnt = int.Parse(cmd2.ExecuteScalar().ToString()); if (cnt == 0) { DateTime wdate = DateTime.Now; if (pic == null) { cmd2.CommandText = "insert into items(gcode,cate,name,sid,model,scale,unit,supply,supplyidx,price,wuid,wdate)" + "values(@gcode,@cate,@name,@sid,@model,@scale,@unit,@supply,@supplyidx,@price,@wuid,@wdate)"; } else { cmd2.CommandText = "insert into items(gcode,cate,name,sid,model,scale,unit,supply,supplyidx,price,image,wuid,wdate)" + "values(@gcode,@cate,@name,@sid,@model,@scale,@unit,@supply,@supplyidx,@price,@image,@wuid,@wdate)"; } cmd2.Parameters.Clear(); cmd2.Parameters.Add(new SqlParameter("gcode", FCOMMON.info.Login.gcode)); cmd2.Parameters.Add(new SqlParameter("cate", "--")); cmd2.Parameters.Add(new SqlParameter("name", pumname.Trim())); cmd2.Parameters.Add(new SqlParameter("sid", sid.Trim())); cmd2.Parameters.Add(new SqlParameter("model", model.Trim())); cmd2.Parameters.Add(new SqlParameter("scale", 1.0)); cmd2.Parameters.Add(new SqlParameter("unit", "EA")); cmd2.Parameters.Add(new SqlParameter("supply", supply)); if (pic != null) cmd2.Parameters.Add(new SqlParameter("image", pic)); cmd2.Parameters.Add(new SqlParameter("supplyidx", supplyidx)); cmd2.Parameters.Add(new SqlParameter("price", price)); cmd2.Parameters.Add(new SqlParameter("wuid", FCOMMON.info.Login.no)); cmd2.Parameters.Add(new SqlParameter("wdate", wdate)); retval += cmd2.ExecuteNonQuery(); //추가된 데이터를 찾아서 다시 검색한다. //if (retval == 0) //{ // cmd2.CommandText = "select idx from Items where gcode=@gcode and name = @name and sid = @sid and model = @model and wuid = @wuid and wdate = @wdate"; // retval = int.Parse(cmd2.ExecuteScalar().ToString()); //} //else retval = -1; } //{ cmd2.CommandText = string.Format("select min(idx) from Items where gcode='" + FCOMMON.info.Login.gcode + "' and ISNULL(REPLACE(name, ' ', '') + REPLACE(model, ' ', ''), '') = '{0}'", pumname.Replace(" ", "").Replace("'", "''") + model.Replace(" ", "").Replace("'", "''")); var itemdata = cmd2.ExecuteScalar(); if (itemdata == DBNull.Value || itemdata == null) { retval = -1; } else { var strItem = itemdata.ToString(); if (strItem == "") retval = -1; else retval = int.Parse(strItem); } //} cmd2.Dispose(); cn.Close(); cn.Dispose(); return retval; } public static Boolean UpdateItemSID(int itemIdx, string sid) { var cn = getCn(); cn.Open(); int retval = 0; var cmd2 = new SqlCommand("", cn); cmd2.CommandText = string.Format("update Items set sid=@sid where idx=@idx"); cmd2.Parameters.Clear(); cmd2.Parameters.Add(new SqlParameter("idx", itemIdx)); cmd2.Parameters.Add(new SqlParameter("sid", sid)); retval = cmd2.ExecuteNonQuery(); cmd2.Dispose(); cn.Close(); cn.Dispose(); return retval != 0; } public static List getGroupList(string GroupColumn, string table, string where = "", Boolean desc = false, Boolean useColumncover = true) { List retval = new List(); var cn = getCn(); cn.Open(); var sql = "select {0} " + " from {1} " + " where gcode='" + FCOMMON.info.Login.gcode + "' and isnull({0},'') != '' "; if (table.ToUpper() == "USERS") sql = "select {0} " + " from {1} " + " where isnull({0},'') != '' "; if (where != "") sql += " and " + where; sql += " group by {0} " + " order by {0} "; if (desc) sql += " desc"; if (useColumncover) sql = string.Format(sql, "[" + GroupColumn + "]", table); else sql = string.Format(sql, GroupColumn, table); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { retval.Add(rdr[0].ToString()); } cmd.Dispose(); cn.Close(); cn.Dispose(); return retval; } public static String getPathKJ(string dept) { var cn = getCn(); cn.Open(); var sql = "select max(isnull(path_kj,'')) " + " from UserGroup " + " where dept = '" + dept + "'"; sql = string.Format(sql); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteScalar(); cmd.Dispose(); cn.Close(); cn.Dispose(); if (rdr == null) return string.Empty; else return rdr.ToString(); } public static Boolean setPathKJ(string dept, string path) { var cn = getCn(); cn.Open(); var sql = "update UserGroup set path_kj=@path" + " where dept = @dept"; sql = string.Format(sql); var cmd = new SqlCommand(sql, cn); cmd.Parameters.Add(new SqlParameter("path", path)); cmd.Parameters.Add(new SqlParameter("dept", dept)); var rdr = cmd.ExecuteNonQuery(); cmd.Dispose(); cn.Close(); cn.Dispose(); return rdr > 0; } public static List getDateList(string table, string where = "", Boolean desc = false) { return getGroupList("pdate", table, where, desc); } public static int UpdateItemIndexbySID() { int retval = 0; var cn1 = getCn(); cn1.Open(); var cn2 = getCn(); cn2.Open(); var sql = "select idx, " + " isnull(pumname,'') as pumname, " + " isnull([sid],'') as [sid], " + " isnull(pumscale,'') as pummodel, " + " isnull(pumunit,'EA') as pumunit, " + " isnull(pumprice,0) as pumprice, " + " isnull(supply,'') as supply, " + " isnull(supplyidx,-1) as supplyidx" + " from purchase " + " where gcode='" + FCOMMON.info.Login.gcode + "' and isnull(sid,'') <> '' and " + " isnull(sid,'') <> '신규'" + " and isnull(pumidx,-1) = -1 " + " and len(sid) = 9" + " and isnull(pumname,'') <> ''"; var cmd2 = new SqlCommand("", cn2); var cmd = new SqlCommand(sql, cn1); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { var pumname = rdr["pumname"].ToString(); var pummodel = rdr["pummodel"].ToString(); var pumunit = rdr["pumunit"].ToString(); var pumprice = decimal.Parse(rdr["pumprice"].ToString()); var supply = rdr["supply"].ToString(); var supplyidx = int.Parse(rdr["supplyidx"].ToString()); var sid = rdr["sid"].ToString(); var idx = int.Parse(rdr["idx"].ToString()); //아이템정보에서 이 sid 가 1개 존재한다면 그것에 연결한다. var sql2 = "select isnull(idx,-1) from Items where gcode='" + FCOMMON.info.Login.gcode + "' and [sid] = '" + sid + "'"; cmd2.CommandText = sql2; var itemdata = cmd2.ExecuteScalar(); if (itemdata != null && itemdata.ToString() != "-1") { cmd2.CommandText = "update purchase set pumidx = " + itemdata.ToString() + " where gcode='" + FCOMMON.info.Login.gcode + "' and idx=" + idx.ToString(); retval += cmd2.ExecuteNonQuery(); } else { cmd2.CommandText = "insert into items(gcode,cate,name,sid,model,scale,unit,supply,supplyidx,price,wuid,wdate)" + "values(@gcode,@cate,@name,@sid,@model,@scale,@unit,@supply,@supplyidx,@price,@wuid,@wdate)"; cmd2.Parameters.Clear(); cmd2.Parameters.Add(new SqlParameter("gcode", FCOMMON.info.Login.gcode)); cmd2.Parameters.Add(new SqlParameter("cate", "--")); cmd2.Parameters.Add(new SqlParameter("name", pumname)); cmd2.Parameters.Add(new SqlParameter("sid", sid)); cmd2.Parameters.Add(new SqlParameter("model", pummodel)); cmd2.Parameters.Add(new SqlParameter("scale", 1.0)); cmd2.Parameters.Add(new SqlParameter("unit", pumunit)); cmd2.Parameters.Add(new SqlParameter("supply", supply)); cmd2.Parameters.Add(new SqlParameter("supplyidx", supplyidx)); cmd2.Parameters.Add(new SqlParameter("price", pumprice)); cmd2.Parameters.Add(new SqlParameter("wuid", "dev")); cmd2.Parameters.Add(new SqlParameter("wdate", DateTime.Now)); retval += cmd2.ExecuteNonQuery(); } } cmd2.Dispose(); cmd.Dispose(); cn1.Close(); cn1.Dispose(); cn2.Close(); cn2.Dispose(); return retval; } } }