..
This commit is contained in:
		| @@ -21,43 +21,45 @@ namespace FPJ0000.JobReport_ | ||||
|  | ||||
|         private void __Load(object sender, EventArgs e) | ||||
|         { | ||||
|             this.sd.Value = DateTime.Parse( DateTime.Now.Year.ToString("0000") + "-01-01"); | ||||
|             this.ed.Value = DateTime.Now; | ||||
|             //this.sd.Value = DateTime.Parse(DateTime.Now.Year.ToString("0000") + "-01-01"); | ||||
|             //this.ed.Value = DateTime.Now; | ||||
|  | ||||
|             //담당자목록 | ||||
|  | ||||
|             var dt_users = FCOMMON.DBM.getUserTable();// getGroupList("name + '(' + id + ')'", "Users", "[level] > 0 and [level] < 10", false, false); | ||||
|             this.cmbUser.DisplayMember = "dispName"; | ||||
|             this.cmbUser.ValueMember = "id"; | ||||
|             this.cmbUser.DataSource = dt_users; | ||||
|             //this.cmbUser.DisplayMember = "dispName"; | ||||
|             //this.cmbUser.ValueMember = "id"; | ||||
|             //this.cmbUser.DataSource = dt_users; | ||||
|         } | ||||
|  | ||||
|         void __Closed(object sender, FormClosedEventArgs e) | ||||
|         { | ||||
|            | ||||
|  | ||||
|         } | ||||
|  | ||||
|         private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) | ||||
|         { | ||||
|             OpenFileDialog od = new OpenFileDialog(); | ||||
|             od.Filter = "excel|*.xlsx|all files|*.*"; | ||||
|            // od.InitialDirectory = FCOMMON.Util.CurrentPath + "model"; | ||||
|             // od.InitialDirectory = FCOMMON.Util.CurrentPath + "model"; | ||||
|             od.FilterIndex = 1; | ||||
|             od.RestoreDirectory = true; | ||||
|             if (od.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; | ||||
|             textBox1.Text = od.FileName; | ||||
|         } | ||||
|  | ||||
|         string sd = ""; | ||||
|         string ed = ""; | ||||
|         private void button1_Click(object sender, EventArgs e) | ||||
|         { | ||||
|               int ColumnNameNo = (int)numericUpDown2.Value; | ||||
|             if(textBox1.Text.Trim() == "") | ||||
|  | ||||
|             if (textBox1.Text.Trim() == "") | ||||
|             { | ||||
|                 FCOMMON.Util.MsgE("파일을 선택하세요"); | ||||
|                 textBox1.Focus(); | ||||
|                 return; | ||||
|             } | ||||
|             if(!System.IO.File.Exists(textBox1.Text)) | ||||
|             if (!System.IO.File.Exists(textBox1.Text)) | ||||
|             { | ||||
|                 FCOMMON.Util.MsgE("입력하신 파일이 존재하지 않습니다."); | ||||
|                 textBox1.Focus(); | ||||
| @@ -65,17 +67,16 @@ namespace FPJ0000.JobReport_ | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             dtExcel.Columns.Clear(); | ||||
|             dtExcel.Rows.Clear(); | ||||
|             dtExcel.AcceptChanges(); | ||||
|              | ||||
|  | ||||
|  | ||||
|             libxl.Book book;// = new libxl.BinBook(); | ||||
|             book = new libxl.XmlBook(); | ||||
|             book.setKey(FCOMMON.info.libxlCompany, FCOMMON.info.libxlKey); | ||||
|             try | ||||
|             { | ||||
|                 book.load(textBox1.Text); | ||||
|             }catch (Exception ex) | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 FCOMMON.Util.MsgE(ex.Message); | ||||
|                 return; | ||||
| @@ -88,132 +89,168 @@ namespace FPJ0000.JobReport_ | ||||
|                 book = null; | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             var sheet = book.getSheet(sheetNum); | ||||
|             var MaxRow = sheet.lastRow();             | ||||
|             var MaxRow = sheet.lastRow(); | ||||
|             var MinRow = sheet.firstRow(); | ||||
|  | ||||
|             MaxRow = (int)Math.Min(MaxRow, nudE.Value-1); | ||||
|             MinRow = (int)Math.Max(MinRow, nudS.Value-1); | ||||
|             if(MinRow <= (ColumnNameNo-1)) | ||||
|             { | ||||
|                 FCOMMON.Util.MsgI("시작줄을 제목줄 보다 커야 합니다. 자동으로 +1 증가합니다."); | ||||
|                 MinRow = ColumnNameNo ; | ||||
|             } | ||||
|             MaxRow = (int)Math.Min(MaxRow, nudE.Value - 1); | ||||
|             MinRow = (int)Math.Max(MinRow, nudS.Value - 1); | ||||
|  | ||||
|  | ||||
|             var MaxCol = sheet.lastCol(); | ||||
|             var MinCol = sheet.firstCol(); | ||||
|  | ||||
|             MaxCol = (int)Math.Min(MaxCol, nudCE.Value - 1); | ||||
|             MinCol = (int)Math.Max(MinCol, nudCS.Value - 1); | ||||
|  | ||||
|             //제목줄을 처리한다.  181029 | ||||
|             List<string> cols = new List<string>(); | ||||
|  | ||||
|             string sDate = sd.Value.ToShortDateString(); | ||||
|             string eDate = ed.Value.ToShortDateString(); | ||||
|            | ||||
|             for (int c = MinCol; c <= MaxCol; c++) | ||||
|             //현재 자료 모두 삭제 | ||||
|             this.dsPRJ.JobReport.Clear(); | ||||
|             this.dsPRJ.JobReport.AcceptChanges(); | ||||
|             var dt_users = FCOMMON.DBM.getUserTable(); | ||||
|  | ||||
|             try | ||||
|             { | ||||
|                 var strVallue = sheet.readStr(ColumnNameNo-1, c); | ||||
|                 if (strVallue.Trim()=="" ) | ||||
|                 { | ||||
|                     if (c == MinCol) | ||||
|                     { | ||||
|                         //첫줄 첫행이 빈값이면 처리하지 않는다. | ||||
|                         FCOMMON.Util.MsgE("열 제목에 빈값이 있어 처리되지 못합니다."); | ||||
|                         return; | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         //빈값이 나왓으므로 열 최대값을 변경해준다. | ||||
|                         if(c < MaxCol) | ||||
|                         { | ||||
|                             FCOMMON.Util.MsgI("빈값으로 인해 최대 열 번호를 " + c.ToString() + "로 변경합니다"); | ||||
|                             MaxCol = c; | ||||
|                             break; | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 cols.Add(strVallue); | ||||
|                 this.dtExcel.Columns.Add(strVallue); | ||||
|                  | ||||
|             } | ||||
|  | ||||
|  | ||||
|             try{ | ||||
|                 for (int r = MinRow; r <= MaxRow; r++) | ||||
|                 { | ||||
|                     DataRow dr =  dtExcel.NewRow(); | ||||
|                     var dr = this.dsPRJ.JobReport.NewJobReportRow(); | ||||
|                     dr.wdate = DateTime.Now; | ||||
|                     dr.import = true; | ||||
|                     dr.wuid = "dev"; | ||||
|                     dr.gcode = FCOMMON.info.Login.gcode; | ||||
|                     dr.pidx = -1; | ||||
|  | ||||
|                     Boolean nullColumn = false; | ||||
|                     for (int c = MinCol; c <= MaxCol; c++) | ||||
|                     //날짜읽기 | ||||
|                     var colidx = 0;// | ||||
|                     if (nuddate.Value > 0) | ||||
|                     { | ||||
|                         if (sheet.isDate(r, c)) | ||||
|                         colidx = (int)(nuddate.Value - 1); | ||||
|                         if (sheet.isDate(r, colidx)) | ||||
|                         { | ||||
|                             var datevalue = sheet.readNum(r, c); | ||||
|                             var datevalue = sheet.readNum(r, colidx); | ||||
|                             int y, m, d; | ||||
|                             y = m = d = 0; | ||||
|                             book.dateUnpack(datevalue, ref y, ref m, ref d); | ||||
|                             if (y == 1900) y = DateTime.Now.Year; | ||||
|                             if (y >= 2000) | ||||
|                                 dr[cols[c - MinCol]] = string.Format("{0:0000}-{1:00}-{2:00}", y, m, d); | ||||
|                             else | ||||
|                                 dr[cols[c - MinCol]] = string.Empty; | ||||
|                              | ||||
|                             //일자가 만약 넘어서면 패스한다. | ||||
|                             if(cols[c]=="일자" ) | ||||
|                             { | ||||
|                                 string value = dr[cols[c - MinCol]].ToString(); | ||||
|                                 if(value == "") | ||||
|                                 { | ||||
|                                     nullColumn = true;  //날짜가 없다면 패스 | ||||
|                                     break; | ||||
|                                 } else if(value.CompareTo(sDate) < 0) | ||||
|                                 { | ||||
|                                     nullColumn = true;  //과거데이터라서 패스 | ||||
|                                     break; | ||||
|                                 } else if(value.CompareTo(eDate) > 0) | ||||
|                                 { | ||||
|                                     nullColumn = true; //미래데이터 패스 | ||||
|                                     break; | ||||
|                                 } | ||||
|                             } | ||||
|                             dr.pdate = string.Format("{0:0000}-{1:00}-{2:00}", y, m, d); | ||||
|                         } | ||||
|                         else | ||||
|                         { | ||||
|                             var dateStrin = sheet.readStr(r, c); | ||||
|  | ||||
|                             var strVallue = sheet.readStr(r, c); | ||||
|                             if (strVallue.Trim() == "" && c == MinCol) | ||||
|                             dr.pdate = sheet.readStr(r, colidx); | ||||
|                             var spldat = dr.pdate.Split('/'); | ||||
|                             if (spldat.Length == 2) | ||||
|                             { | ||||
|                                 //첫줄 첫행이 빈값이면 처리하지 않는다. | ||||
|                                 nullColumn = true; | ||||
|                                 break; | ||||
|                                 dr.pdate = DateTime.Now.Year.ToString("0000") + "-" + spldat[0].PadLeft(2, '0') + "-" + spldat[1].PadLeft(2, '0'); | ||||
|                             } | ||||
|                             if (cols[c - MinCol].Trim() != "") | ||||
|                                 dr[cols[c - MinCol]] = strVallue; | ||||
|                         } | ||||
|                     } | ||||
|                     if (nullColumn) continue; //줄처리를 못한 경우 넘어감 | ||||
|                     if (dr != null) | ||||
|  | ||||
|                     //요청 | ||||
|                     if (nudreq.Value > 0) | ||||
|                     { | ||||
|                         dtExcel.Rows.Add(dr); | ||||
|                         colidx = (int)(nudreq.Value - 1); | ||||
|                         dr.requestpart = sheet.readStr(r, colidx); | ||||
|                     } | ||||
|  | ||||
|                     //패키지 | ||||
|                     if (nudpack.Value > 0) | ||||
|                     { | ||||
|                         colidx = (int)(nudpack.Value - 1); | ||||
|                         dr.package = sheet.readStr(r, colidx); | ||||
|                     } | ||||
|  | ||||
|                     //상태 | ||||
|                     if (nudst.Value > 0) | ||||
|                     { | ||||
|                         colidx = (int)(nudst.Value - 1); | ||||
|                         dr.status = sheet.readStr(r, colidx); | ||||
|                     } | ||||
|  | ||||
|                     //형태 | ||||
|                     if (nudtype.Value > 0) | ||||
|                     { | ||||
|                         colidx = (int)(nudtype.Value - 1); | ||||
|                         dr.type = sheet.readStr(r, colidx); | ||||
|                     } | ||||
|  | ||||
|                     //분류 | ||||
|                     if (nudbunru.Value > 0) | ||||
|                     { | ||||
|                         colidx = (int)(nudbunru.Value - 1); | ||||
|                         dr.process = sheet.readStr(r, colidx); | ||||
|                     } | ||||
|  | ||||
|                     //프로젝트/아이템                     | ||||
|                     if (nuditem.Value > 0) | ||||
|                     { | ||||
|                         colidx = (int)(nuditem.Value - 1); | ||||
|                         dr.projectName = sheet.readStr(r, colidx); | ||||
|                     } | ||||
|  | ||||
|                     //비고 | ||||
|                     if (nudbio.Value > 0) | ||||
|                     { | ||||
|                         colidx = (int)(nudbio.Value - 1); | ||||
|                         dr.description = sheet.readStr(r, colidx); | ||||
|                     } | ||||
|  | ||||
|                     //시간 | ||||
|                     if (nudhrd.Value > 0) | ||||
|                     { | ||||
|                         colidx = (int)(nudhrd.Value - 1); | ||||
|                         try | ||||
|                         { | ||||
|                             dr.hrs = sheet.readNum(r, colidx); | ||||
|                         } | ||||
|                         catch { dr.hrs = 0; }  | ||||
|                          | ||||
|                     } | ||||
|                     //OT | ||||
|                     if (nudot.Value > 0) | ||||
|                     { | ||||
|                         colidx = (int)(nudot.Value - 1); | ||||
|                         try | ||||
|                         { | ||||
|                             dr.ot = sheet.readNum(r, colidx); | ||||
|                         } | ||||
|                         catch { dr.ot = 0; } | ||||
|  | ||||
|                     } | ||||
|                     //uid | ||||
|                     if (nuduid.Value > 0) | ||||
|                     { | ||||
|                         colidx = (int)(nuduid.Value - 1); | ||||
|                         dr.uid = sheet.readStr(r, colidx); | ||||
|                     } | ||||
|  | ||||
|                     //susername | ||||
|                     if (nudname.Value > 0) | ||||
|                     { | ||||
|                         colidx = (int)(nudname.Value - 1); | ||||
|                         if(string.IsNullOrEmpty(dr.uid)==true) | ||||
|                         { | ||||
|                             var username = sheet.readStr(r, colidx); | ||||
|                             var users = dt_users.Select("name='" + username + "'"); | ||||
|                             if(users.Length == 1) | ||||
|                             { | ||||
|                                 dr.uid = users[0]["id"].ToString(); | ||||
|                             } | ||||
|                         } | ||||
|                           | ||||
|                     } | ||||
|  | ||||
|                     this.dsPRJ.JobReport.AddJobReportRow(dr); | ||||
|                 } | ||||
|                 dtExcel.AcceptChanges(); | ||||
|             } | ||||
|            catch(Exception ex) | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 FCOMMON.Util.MsgE("불러오는 중 오류 발생\n" + ex.Message); | ||||
|             } | ||||
|             // | ||||
|             book = null; | ||||
|  | ||||
|             this.bs.DataSource = dtExcel; | ||||
|             this.dataGridView1.DataSource = dtExcel; | ||||
|  | ||||
|             this.bn.BindingSource = this.bs; | ||||
|  | ||||
|             if(this.bs.Count < 1) | ||||
|             if (this.bs.Count < 1) | ||||
|             { | ||||
|                 FCOMMON.Util.MsgE("입력된 자료가 없습니다.\n\n지정된 엑셀의 1번째 칸에 값이 없다면 입력되지 않습니다."); | ||||
|             } | ||||
| @@ -222,16 +259,11 @@ namespace FPJ0000.JobReport_ | ||||
|  | ||||
|         private void button3_Click(object sender, EventArgs e) | ||||
|         { | ||||
|             if(dtExcel == null || dtExcel.Rows.Count < 1) | ||||
|             if (dsPRJ.JobReport == null || dsPRJ.JobReport.Rows.Count < 1) | ||||
|             { | ||||
|                 FCOMMON.Util.MsgE("등록 가능한 자료가 없습니다."); | ||||
|                 return; | ||||
|             } | ||||
|             if(cmbUser.SelectedValue == null || cmbUser.Text.Trim()=="") | ||||
|             { | ||||
|                 FCOMMON.Util.MsgE("사번이 입력되지 않았습니다."); | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             System.Text.StringBuilder sb = new StringBuilder(); | ||||
|             sb.AppendLine("다음 자료를 추가하시겠습니까?"); | ||||
| @@ -241,75 +273,12 @@ namespace FPJ0000.JobReport_ | ||||
|             sb.AppendLine("실행 하려면 '예' 를 누르세요"); | ||||
|             var dlg = FCOMMON.Util.MsgQ(sb.ToString()); | ||||
|             if (dlg != System.Windows.Forms.DialogResult.Yes) return; | ||||
|              | ||||
|             | ||||
|  | ||||
|             dt.Clear(); | ||||
|             dt.AcceptChanges(); | ||||
|  | ||||
|             this.progressBar1.Value = 0; | ||||
|             this.progressBar1.Maximum = dtExcel.Rows.Count; | ||||
|  | ||||
|             //12,13 | ||||
|             foreach (DataRow dr in dtExcel.Rows) | ||||
|             { | ||||
|                 this.progressBar1.Value += 1; | ||||
|  | ||||
|                 //데이터추가 | ||||
|                 var newdr = dt.NewRow(); | ||||
|                 if (dr[1] == DBNull.Value || dr[1].ToString()=="") continue;   //nullerror | ||||
|  | ||||
|                 var strdate = dr[1].ToString().Replace('/','-'); | ||||
|                 var datebuf = strdate.Split('-'); | ||||
|                 if (datebuf.Length == 2) | ||||
|                 { | ||||
|                     strdate = DateTime.Now.Year.ToString("0000") + "-" + | ||||
|                         datebuf[0].PadLeft(2, '0') + "-" + | ||||
|                         datebuf[1].PadLeft(2, '0'); | ||||
|                 } | ||||
|                 newdr["pdate"] = strdate; | ||||
|  | ||||
|                 newdr["uid"] = cmbUser.SelectedValue.ToString(); // tbNo.Text.Trim(); | ||||
|                 newdr["requestpart"] = dr[2].ToString().Trim(); | ||||
|                 newdr["package"] = dr[3].ToString().Trim(); | ||||
|                 newdr["status"] = dr[4].ToString().Trim(); | ||||
|                 newdr["type"] = dr[5].ToString(); | ||||
|                 newdr["process"] = dr[6].ToString(); | ||||
|                 newdr["projectName"] = dr[7].ToString(); | ||||
|                 newdr["description"] = dr[8].ToString(); | ||||
|  | ||||
|  | ||||
|                 //프로젝트이름을 검색해서 PIDX를 결정해준다. | ||||
|                 newdr["pidx"] = -1;// dr[3].ToString(); | ||||
|  | ||||
|                 string hrsstr = ""; | ||||
|                 if (dr[9] != DBNull.Value) hrsstr = dr[9].ToString().Trim(); | ||||
|                 if (hrsstr.Trim() == "") hrsstr = "0"; | ||||
|                 newdr["hrs"] = double.Parse(hrsstr); | ||||
|  | ||||
|                 string otstr = ""; | ||||
|                 if (dr[10] != DBNull.Value) otstr = dr[10].ToString().Trim(); | ||||
|                 if (otstr.Trim() == "") otstr = "0"; | ||||
|                 newdr["ot"] = double.Parse(otstr); | ||||
|  | ||||
|  | ||||
|                 | ||||
|                  | ||||
|                  | ||||
|                 | ||||
|                 | ||||
|                 newdr["remark"] = ""; | ||||
|  | ||||
|                 newdr["import"] = true; | ||||
|                 newdr["wuid"] = FCOMMON.info.Login.no; | ||||
|                 newdr["wdate"] = DateTime.Now;   | ||||
|  | ||||
|                dt.Rows.Add(newdr); | ||||
|             } | ||||
|  | ||||
|             var taE = new dsPRJTableAdapters.JobReportTableAdapter(); | ||||
|             if (checkBox1.Checked) taE.DeleteImport(sd.Value.ToShortDateString(), ed.Value.ToShortDateString(), FCOMMON.info.Login.no, FCOMMON.info.Login.gcode); | ||||
|             taE.Update((dsPRJ.JobReportDataTable)dt); | ||||
|             //if (checkBox1.Checked) taE.DeleteImport(sd, ed, FCOMMON.info.Login.no, FCOMMON.info.Login.gcode); | ||||
|             taE.Update(dsPRJ.JobReport); | ||||
|  | ||||
|             dt.AcceptChanges(); | ||||
|             FCOMMON.Util.MsgI("Save OK"); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 chi
					chi