/// <summary> /// 簽核人抓取異常郵件通知 /// </summary> /// <param name="dtHead">表頭</param> /// <param name="handler">處理人</param> /// <param name="errReason">異常原因</param> protected void GetHandlerErrAlarm(DataTable dtHead, string errReason) { DataRow drHead = dtHead.Rows[0]; string sLongonId = drHead["ERNAM"].ToString().Trim().Replace(" ", ""); string sCaseno = drHead["MBLNR_A"].ToString().Trim(); string plantCode = drHead["WERKS"].ToString().Trim(); string sub = "[" + plantCode + "]GoodsMovement--獲取簽核人錯誤"; string body = "Dear's \r\n"; body += " 單號-" + sCaseno + ";申請人-" + sLongonId + "\r\n"; body += errReason + "\r\n"; SPMBasic SPMBasic_class = new SPMBasic(); string applicant = SPMBasic_class.GetEMailByEName(sLongonId); SendMail mail = new SendMail(); ArrayList to = new ArrayList(); if (applicant.Length > 0) { to.Add(applicant); } ArrayList cc = new ArrayList(); cc.Add(DBIO.GetITWindow(plantCode)); mail.SendMail_Normal(to, cc, sub, body, false); }
protected void btnConfirm_Click(object sender, DirectEventArgs e) { StringBuilder errMsg = new StringBuilder(); StringBuilder errMsg1 = new StringBuilder(); StringBuilder errMsg2 = new StringBuilder(); string file = FileAttachment.FileName; string Result = string.Empty; int total_num = 0; int ok_num = 0; int ng_num = 0; bool isok = true; if (sbProd_group.Text.Length == 0) { Alert("請選擇產品類別!"); return; } if (!FileAttachment.HasFile) { Alert("請選擇数据文件!"); return; } else { string type = file.Substring(file.LastIndexOf(".") + 1).ToLower(); if (type == "xlsx") { //把文件轉成流 Stream stream = FileAttachment.PostedFile.InputStream; if (stream.Length == 8889) { Alert("導入的資料表為空,請檢查!"); return; } try { DataTable dt = ReadByExcelLibrary(stream); if (dt.Rows.Count > 0) { NPIMgmt oMgmt = new NPIMgmt(lblSite.Text, lblBu.Text); NPI_Standard oStandard = oMgmt.InitialLeaveMgmt(); Model_NPI_APP_MEMBER oModel_NPI_APP_Member = new Model_NPI_APP_MEMBER(); oModel_NPI_APP_Member._UPDATE_USERID = lblLogonId.Text.Trim(); oModel_NPI_APP_Member._UPDATE_TIME = DateTime.Today; oModel_NPI_APP_Member._DOC_NO = txtDOC_NO.Text; for (int i = 0; i < dt.Rows.Count; i++) { string dept = dt.Rows[i]["Dept"].ToString(); string Category = dt.Rows[i]["Category"].ToString(); string WriteName = dt.Rows[i]["WriteEname"].ToString(); string ReplyEName = dt.Rows[i]["ReplyEName"].ToString(); string CheckedEName = dt.Rows[i]["CheckedEName"].ToString(); DataTable dtW = CheckUserInfo(WriteName); DataTable dtR = CheckUserInfo(ReplyEName); DataTable dtC = CheckUserInfo(CheckedEName); #region 檢查 Write Reply Check人員必須都為空或者都不為空 if (Category == "DFX TeamMember" || Category == "CTQ TeamMember" || Category == "ISSUES TeamMember" || Category == "PFMEA TeamMember") { #region if (WriteName.Length == 0 && (ReplyEName.Length > 0 && CheckedEName.Length > 0)) { errMsg.Append("第" + (i + 2) + "行"); errMsg.Append("簽核人員必須都為空後者都不為空</br>"); } if (WriteName.Length == 0 && (ReplyEName.Length == 0 && CheckedEName.Length > 0)) { errMsg.Append("第" + (i + 2) + "行"); errMsg.Append("簽核人員必須都為空後者都不為空</br>"); } if (WriteName.Length == 0 && (ReplyEName.Length > 0 && CheckedEName.Length == 0)) { errMsg.Append("第" + (i + 2) + "行"); errMsg.Append("簽核人員必須都為空後者都不為空</br>"); } if (ReplyEName.Length == 0 && (WriteName.Length > 0 && CheckedEName.Length > 0)) { errMsg.Append("第" + (i + 2) + "行"); errMsg.Append("簽核人員必須都為空後者都不為空</br>"); } if (ReplyEName.Length == 0 && (WriteName.Length == 0 && CheckedEName.Length > 0)) { errMsg.Append("第" + (i + 2) + "行"); errMsg.Append("簽核人員必須都為空後者都不為空</br>"); } if (ReplyEName.Length == 0 && (WriteName.Length > 0 && CheckedEName.Length == 0)) { errMsg.Append("第" + (i + 2) + "行"); errMsg.Append("簽核人員必須都為空後者都不為空</br>"); } if (CheckedEName.Length == 0 && (ReplyEName.Length > 0 && WriteName.Length > 0)) { errMsg.Append("第" + (i + 2) + "行"); errMsg.Append("簽核人員必須都為空後者都不為空</br>"); } if (CheckedEName.Length == 0 && (ReplyEName.Length == 0 && WriteName.Length > 0)) { errMsg.Append("第" + (i + 2) + "行"); errMsg.Append("簽核人員必須都為空後者都不為空</br>"); } if (CheckedEName.Length == 0 && (ReplyEName.Length > 0 && WriteName.Length == 0)) { errMsg.Append("第" + (i + 2) + "行"); errMsg.Append("簽核人員必須都為空後者都不為空</br>"); } #endregion } #endregion #region 檢查關卡名的準確性 if (!IsStepName(Category)) { isok = false; errMsg.Append("第" + (i + 2) + "行"); errMsg.Append("關卡名填寫錯誤!</br>"); } #endregion #region 檢查成員名準確性 不為空時 拼寫是否正確 if (Category == "DFX TeamMember" || Category == "CTQ TeamMember" || Category == "ISSUES TeamMember" || Category == "PFMEA TeamMember") { if (dtW.Rows.Count == 0 && WriteName.Length > 0) { isok = false; errMsg.Append("第" + (i + 2) + "行Write人員不存在</br>"); } if (dtR.Rows.Count == 0 && ReplyEName.Length > 0) { isok = false; errMsg.Append("第" + (i + 2) + "行Reply人員不存在</br>"); } if (dtC.Rows.Count == 0 && CheckedEName.Length > 0) { isok = false; errMsg.Append("第" + (i + 2) + "行Check人員不存在</br>"); } } else { if (WriteName.Length > 0) { if (dtW.Rows.Count == 0) { isok = false; errMsg.Append("第" + (i + 2) + "行Write人員不存在</br>"); } } if (ReplyEName.Length > 0) { if (dtR.Rows.Count == 0) { isok = false; errMsg.Append("第" + (i + 2) + "行Reply人員不存在</br>"); } } if (CheckedEName.Length > 0) { if (dtC.Rows.Count == 0) { isok = false; errMsg.Append("第" + (i + 2) + "行Check人員不存在</br>"); } } } #endregion } #region 數據處理 foreach (DataRow dr in dt.Rows) { total_num = dt.Rows.Count; try { oModel_NPI_APP_Member._Category = dr["Category"].ToString(); oModel_NPI_APP_Member._DEPT = dr["Dept"].ToString();; oModel_NPI_APP_Member._WriteEname = dr["WriteEname"].ToString(); oModel_NPI_APP_Member._ReplyEName = dr["ReplyEname"].ToString(); oModel_NPI_APP_Member._CheckedEname = dr["CheckedEname"].ToString(); SPMBasic oSpmBasic = new SPMBasic(); oModel_NPI_APP_Member._ReplyEmai = oSpmBasic.GetEMailByEName(dr["ReplyEname"].ToString()); oModel_NPI_APP_Member._WriteEmail = oSpmBasic.GetEMailByEName(dr["WriteEname"].ToString()); oModel_NPI_APP_Member._CheckedEmail = oSpmBasic.GetEMailByEName(dr["CheckedEname"].ToString()); if (isok) { Dictionary <string, object> result = oStandard.RecordOperation_APPMemeber(oModel_NPI_APP_Member, Status_Operation.ADD); if ((bool)result["Result"]) { ok_num += 1; } else { ng_num += 1; Alert((string)result["ErrMsg"].ToString()); } } else { ng_num += 1; } } catch (Exception ex) { Alert(ex.ToString()); } } #endregion if (errMsg.Length == 0) { string DocNo = txtDOC_NO.Text; string ProductType = sbProd_group.Text; string DFXCategory = "DFX TeamMember"; string CTQCategory = "CTQ TeamMember"; DataTable dtDFXCount = CompareDeptCountDFX(DocNo, ProductType, DFXCategory); DataTable dtCTQCount = CompareDeptCountCTQ(DocNo, ProductType, CTQCategory); string DFXDept = dtDFXCount.Rows[0]["Dept"].ToString(); string CTQDept = dtCTQCount.Rows[0]["Dept"].ToString(); #region 先判斷DFX CTQ的部門數量是否一致 if (DFXDept.Length > 0) { errMsg2.Append("DFX " + DFXDept + "部門未維護</br>"); } if (CTQDept.Length > 0) { errMsg2.Append("CTQ " + CTQDept + "部門未維護</br>"); } if (errMsg2.Length > 0) { DeleteExist(txtDOC_NO.Text);//有異常則刪除已上傳的資料 BindMember(txtDOC_NO.Text, string.Empty); Alert(string.Format("錯誤信息:<BR/>{0}", errMsg2.ToString())); return; } #endregion #region 根據已經Insert的數據進行第二次Check判斷 該部門某個階段都為空 其餘階段也必須為空 for (int i = 0; i < dt.Rows.Count; i++) { string WriteEname = dt.Rows[i]["WriteEname"].ToString(); string ReplyEName = dt.Rows[i]["ReplyEName"].ToString(); string CheckedEName = dt.Rows[i]["CheckedEName"].ToString(); string WriteDept = dt.Rows[i]["Dept"].ToString(); //DataTable dtCheckCount = CheckDFXDept(DocNo, ProductType, Category);//當前團隊 if (WriteEname.Length == 0 && ReplyEName.Length == 0 && CheckedEName.Length == 0) { string DFXType = dt.Rows[i]["Category"].ToString(); #region DFX 對應部門的簽核人 DataTable dtDFX = GetMember(txtDOC_NO.Text, "DFX TeamMember", WriteDept); string WriteDFX = dtDFX.Rows[0]["WriteEname"].ToString(); string ReplyDFX = dtDFX.Rows[0]["ReplyEName"].ToString(); string CheckedDFX = dtDFX.Rows[0]["CheckedEName"].ToString(); #endregion #region CTQ 對應部門簽核人 DataTable dtCTQ = GetMember(txtDOC_NO.Text, "CTQ TeamMember", WriteDept); string WriteCTQ = dtCTQ.Rows[0]["WriteEname"].ToString(); string ReplyCTQ = dtCTQ.Rows[0]["ReplyEName"].ToString(); string CheckedCTQ = dtCTQ.Rows[0]["CheckedEName"].ToString(); #endregion #region Issue 對應部門簽核人 DataTable dtIssue = GetMember(txtDOC_NO.Text, "ISSUES TeamMember", WriteDept); string WriteIssue = dtIssue.Rows[0]["WriteEname"].ToString(); string ReplyIssue = dtIssue.Rows[0]["ReplyEName"].ToString(); string CheckedIssue = dtIssue.Rows[0]["CheckedEName"].ToString(); #endregion #region FMEA 對應部門簽核人 DataTable dtFMEA = GetMember(txtDOC_NO.Text, "PFMEA TeamMember", WriteDept); string WriteFMEA = dtFMEA.Rows[0]["WriteEname"].ToString(); string ReplyFMEA = dtFMEA.Rows[0]["ReplyEName"].ToString(); string CheckedFMEA = dtFMEA.Rows[0]["CheckedEName"].ToString(); #endregion #region Check Part 1 if (DFXType == "DFX TeamMember") { if (WriteCTQ.Length > 0 || ReplyCTQ.Length > 0 || CheckedCTQ.Length > 0) { errMsg1.Append("DFX " + WriteDept + "部門人員為空時, CTQ也必須都為空</br>"); } if (WriteIssue.Length > 0 || ReplyIssue.Length > 0 || CheckedIssue.Length > 0) { errMsg1.Append("DFX " + WriteDept + "部門人員為空時, Issue也必須都為空</br>"); } if (WriteFMEA.Length > 0 || ReplyFMEA.Length > 0 || CheckedFMEA.Length > 0) { errMsg1.Append("DFX " + WriteDept + "部門人員為空時, FMEA也必須都為空</br>"); } } if (DFXType == "CTQ TeamMember") { if (WriteDFX.Length > 0 || ReplyDFX.Length > 0 || CheckedDFX.Length > 0) { errMsg1.Append("CTQ " + WriteDept + "部門人員為空時, DFX也必須都為空</br>"); } if (WriteIssue.Length > 0 || ReplyIssue.Length > 0 || CheckedIssue.Length > 0) { errMsg1.Append("CTQ " + WriteDept + "部門人員為空時, Issue也必須都為空</br>"); } if (WriteFMEA.Length > 0 || ReplyFMEA.Length > 0 || CheckedFMEA.Length > 0) { errMsg1.Append("CTQ " + WriteDept + "部門人員為空時, FMEA也必須都為空</br>"); } } if (DFXType == "ISSUES TeamMember") { if (WriteDFX.Length > 0 || ReplyDFX.Length > 0 || CheckedDFX.Length > 0) { errMsg1.Append("Issue " + WriteDept + "部門人員為空時, DFX也必須都為空</br>"); } if (WriteCTQ.Length > 0 || ReplyCTQ.Length > 0 || CheckedCTQ.Length > 0) { errMsg1.Append("Issue " + WriteDept + "部門人員為空時, CTQ也必須都為空</br>"); } if (WriteFMEA.Length > 0 || ReplyFMEA.Length > 0 || CheckedFMEA.Length > 0) { errMsg1.Append("Issue " + WriteDept + "部門人員為空時, FMEA也必須都為空</br>"); } } if (DFXType == "PFMEA TeamMember") { if (WriteDFX.Length > 0 || ReplyDFX.Length > 0 || CheckedDFX.Length > 0) { errMsg1.Append("FMEA " + WriteDept + "部門人員為空時, DFX也必須都為空</br>"); } if (WriteCTQ.Length > 0 || ReplyCTQ.Length > 0 || CheckedCTQ.Length > 0) { errMsg1.Append("FMEA " + WriteDept + "部門人員為空時, CTQ也必須都為空</br>"); } if (WriteIssue.Length > 0 || ReplyIssue.Length > 0 || CheckedIssue.Length > 0) { errMsg1.Append("FMEA " + WriteDept + "部門人員為空時, Issue也必須都為空</br>"); } } #endregion #region Check Part2 #endregion } if (errMsg1.Length > 0) { DeleteExist(txtDOC_NO.Text);//有異常則刪除已上傳的資料 BindMember(txtDOC_NO.Text, string.Empty); Alert(string.Format("錯誤信息:<BR/>{0}", errMsg1.ToString())); return; } } #endregion } } } catch (Exception ex) { Alert("Excel數據有問題,錯誤信息: " + ex.Message); return; } } else { Alert("文件類型只能為xlsx"); return; } } //存在錯誤信息 則刪除已新增的數據 if (errMsg.Length > 0) { DeleteExist(txtDOC_NO.Text); BindMember(txtDOC_NO.Text, string.Empty); Alert(string.Format("錯誤信息:<BR/>{0}", errMsg.ToString())); } else { BindMember(txtDOC_NO.Text, string.Empty); Alert(string.Format("上傳筆數:{0}<BR/>成功筆數:{1}<BR/>失敗筆數:{2}<BR/>錯誤信息:<BR/>{3}", total_num.ToString(), ok_num.ToString(), ng_num.ToString(), errMsg.ToString())); } }
protected void btnAdd_Click(object sender, DirectEventArgs e) { string Catgory = cmbType.SelectedItem.Text; string Dept = cobDept.SelectedItem.Text; string WriteEname = sbName.SelectedItem.Value; string ReplyEname = sbReply.SelectedItem.Value; string CheckedEname = sbChecked.SelectedItem.Value; #region [ Valid Fields] StringBuilder ErrMsg = new StringBuilder(); if (string.IsNullOrEmpty(Catgory)) { ErrMsg.Append("請選擇團隊類別</br>"); } if (string.IsNullOrEmpty(Dept)) { ErrMsg.Append("請選擇部門</br>"); } if (string.IsNullOrEmpty(WriteEname)) { ErrMsg.Append("請選擇填寫人員</br>"); } if (string.IsNullOrEmpty(ReplyEname)) { ErrMsg.Append("請選擇回覆人員</br>"); } if (ErrMsg.ToString().Length > 0) { Alert(ErrMsg.ToString()); } #endregion NPIMgmt oMgmt = new NPIMgmt(lblSite.Text, lblBu.Text); NPI_Standard oStandard = oMgmt.InitialLeaveMgmt(); Model_NPI_APP_MEMBER oModel_NPI_APP_Member = new Model_NPI_APP_MEMBER(); oModel_NPI_APP_Member._UPDATE_USERID = lblLogonId.Text.Trim(); oModel_NPI_APP_Member._UPDATE_TIME = DateTime.Today; oModel_NPI_APP_Member._Category = Catgory; oModel_NPI_APP_Member._DEPT = Dept; oModel_NPI_APP_Member._WriteEname = WriteEname; oModel_NPI_APP_Member._ReplyEName = ReplyEname; oModel_NPI_APP_Member._DOC_NO = txtDOC_NO.Text; oModel_NPI_APP_Member._CheckedEname = CheckedEname; SPMBasic oSpmBasic = new SPMBasic(); oModel_NPI_APP_Member._ReplyEmai = oSpmBasic.GetEMailByEName(ReplyEname); oModel_NPI_APP_Member._WriteEmail = oSpmBasic.GetEMailByEName(WriteEname); oModel_NPI_APP_Member._CheckedEmail = oSpmBasic.GetEMailByEName(CheckedEname); try { Dictionary <string, object> result = oStandard.RecordOperation_APPMemeber(oModel_NPI_APP_Member, Status_Operation.ADD); if ((bool)result["Result"]) { Alert("新增團隊成員成功!"); } else { Alert((string)result["ErrMsg"].ToString()); } } catch (Exception ex) { Alert(ex.ToString()); } BindMember(txtDOC_NO.Text, string.Empty); }