diff --git a/AMESCoreStudio.Web/Controllers/FQCController.cs b/AMESCoreStudio.Web/Controllers/FQCController.cs
index 67806974..4d16dd8a 100644
--- a/AMESCoreStudio.Web/Controllers/FQCController.cs
+++ b/AMESCoreStudio.Web/Controllers/FQCController.cs
@@ -43,7 +43,7 @@ namespace AMESCoreStudio.Web.Controllers
_env = env;
_pcsApi = pcsApi;
_bllApi = bllApi;
- _basApi = basApi;
+ _basApi = basApi;
}
#region 下拉選單
@@ -1210,6 +1210,9 @@ namespace AMESCoreStudio.Web.Controllers
if (model.QaResult == "P")
await _fqcApi.PassingByFQC(model.InhouseNo, model.SeqID, GetLogInUserID());
+ //FQC報表自動派送
+ await CheckFQCToMail(fqcInhouseMaster.ItemNo, model.QaResult, model.InhouseNo, model.SeqID);
+
var _msg = "新增成功!";
return RedirectToAction("WindowReload", "Home", new { msg = _msg });
}
@@ -1222,6 +1225,60 @@ namespace AMESCoreStudio.Web.Controllers
}
#endregion
+ #region 自動寄信
+ ///
+ /// 判斷是否設定FQC自動自動寄信
+ ///
+ /// 料號
+ /// 抽驗結果
+ /// FQC單號
+ /// FQC單號_編號
+ ///
+ private async Task CheckFQCToMail(string Material, string Result, string inhouseNo, int seqID)
+ {
+ var result = await _fqcApi.GetFqcNoticeMailQuery(material: Material, fqcResult: Result, status: "Y");
+ if (result.Data.Count() != 0)
+ {
+ var MailGroup = result.Data.Select(s => s.MailGroup).ToArray();
+ // 檔案上傳 到暫存區
+ string FileName = $"{inhouseNo}_{seqID} {DateTime.Now:yyyyMMddHHmm}.xls";
+ string NewName = string.Empty;
+ string FilePath = string.Empty;
+ //取得使用者上傳檔案的原始檔名
+ //取原始檔名中的副檔名
+ //var fileExt = Path.GetExtension(FileName);
+ //為避免使用者上傳的檔案名稱發生重複,重新給一個亂數名稱
+ //NewName = Path.GetRandomFileName() + fileExt;
+ //指定要寫入的路徑、檔名和副檔名
+ FilePath = $@"{_env.WebRootPath}\UploadFolder\FQC\Temp";
+ var path = $@"{FilePath}\{FileName}";
+
+ if (!Directory.Exists(FilePath))
+ {
+ Directory.CreateDirectory(FilePath);
+ }
+
+ string mimeType = "";
+ int extension = 1;
+ Dictionary param = new Dictionary();
+ var localReport = GetReprot(inhouseNo, seqID);
+ var reportResult = localReport.Result.Execute(RenderType.Excel, extension, param, mimeType);
+
+ using (var stream = new FileStream(path, FileMode.Create))
+ {
+ await stream.WriteAsync(reportResult.MainStream, 0, reportResult.MainStream.Length);
+ }
+
+ Result = Result == "P" ? "允收" : "驗退";
+ string Subject = $"FQC自動派送發信 FQC單號:{inhouseNo} 料號:{Material}";
+ string Body = $@"FQC單號:{inhouseNo} 料號:{Material}
+ 檢驗結果為:{Result}";
+
+ await _bllApi.PostToMail(Subject, Body, string.Join(',', MailGroup) , "", false, path);
+ }
+ }
+ #endregion
+
#region 附件
[HttpGet]
public async Task FQC007D(int fqc)
@@ -1294,7 +1351,7 @@ namespace AMESCoreStudio.Web.Controllers
}
else
{
- ModelState.AddModelError("error", "ssddf");
+ ModelState.AddModelError("error", "請確認是否夾帶檔案");
}
model.fqcResultMasterBlobs = await _fqcApi.GetFqcResultMasterBlobByFqcID(model.FqcID);
return View("FQC007D", model);
@@ -1519,133 +1576,38 @@ namespace AMESCoreStudio.Web.Controllers
{
string mimeType = "";
int extension = 1;
- var path = $"{this._env.WebRootPath}\\Reports\\FQC010View.rdlc";
- LocalReport localReport = new LocalReport(path);
Dictionary param = new Dictionary();
- System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
- System.Text.Encoding.GetEncoding(1252);
- var FQC010Master = new FQC010VIiew();
- IResultModel resultFqcQuery;
- resultFqcQuery = _fqcApi.GetFqcQuery(inhouseNo, seqID).InvokeAsync().Result;
-
- if (resultFqcQuery.Data.Count() != 0)
- {
- var FqcQuery = resultFqcQuery.Data.FirstOrDefault();
- // Enum 轉換
- FqcQuery.AQLType = EnumFQC.GetDisplayName((EnumFQC.EnumAQL_Type)Enum.Parse(typeof(EnumFQC.EnumAQL_Type), FqcQuery.AQLType));
- FqcQuery.InspectionStatus = EnumFQC.GetDisplayName((EnumFQC.EnumInspection_Status)Enum.Parse(typeof(EnumFQC.EnumInspection_Status), FqcQuery.InspectionStatus));
-
- FQC010Master = new FQC010VIiew()
- {
- DefectDescription = FqcQuery.QaMeno,
- InspectionDate = FqcQuery.EndTime,
- AC = FqcQuery.AcQty.ToString(),
- Approved = FqcQuery.Supervisor_Name,
- AQL = FqcQuery.AQL.ToString(),
- SpeciallyAdoption = FqcQuery.SpecialPo,
- BIOSVer = FqcQuery.BIOS,
- ECN = FqcQuery.PLMECN,
- ECNMemo = FqcQuery.ECN_Memo,
- Factory = FqcQuery.Werk.Split('-')[0],
- FactoryRemark = FqcQuery.Werk.Split('-')[1],
- InspectionInstrumentNumber = FqcQuery.OutfitNo,
- InspectionItems = $"OS:[{FqcQuery.OS}] CPU test:[{FqcQuery.CPU}] RAM test:[{FqcQuery.RAM}]",
- InspectionNumber = FqcQuery.InhouseNo,
- InspectionStatus = FqcQuery.InspectionStatus,
- InspectionType = FqcQuery.InspectionTypeName,
- Inspector = FqcQuery.UpdateUser_Name,
- Judgment = "Defect Quantity",
- Line = FqcQuery.InhouseMemo,
- LotSize = FqcQuery.InhouseQty.ToString(),
- Major = FqcQuery.MajorQty.ToString(),
- MedicalModel = FqcQuery.CustomerMedical,
- Minor = FqcQuery.MinorQty.ToString(),
- Model = FqcQuery.ItemNo,
- ModelName = FqcQuery.ModelNo,
- NOTE = FqcQuery.Note,
- OrderNumber = FqcQuery.WipNo,
- QuotDescription = FqcQuery.QuotDescription,
- ReMajor = FqcQuery.ReQty.ToString(),
- Sample = FqcQuery.QcQty.ToString(),
- QuotName = FqcQuery.QuotName,
- //StorageLocation = "9000",
- Avalue = "AVALUE",
- VIP = FqcQuery.CustomerVIP,
- WaiveRequisition = FqcQuery.StatusName,
- AQLType = FqcQuery.AQLType
- };
-
- // 抓全部檢驗工項
- var result_QcItem = await _fqcApi.GetQcItemQuery(0, 0, 0);
- // 取綁定工單檢驗工項資料
- var result_WipFQC = await _fqcApi.GetWipFqcItemByWipNo(FqcQuery.WipNo);
- if (result_WipFQC.Count == 0)
- {
- //工單無設定檢驗工項時 在抓料號綁定檢驗工項
- var result_MaterialFQC = await _fqcApi.GetMaterialFqcItemsByitemNo(FqcQuery.ItemNo);
- if (result_MaterialFQC.Count != 0)
- {
- // 檢驗工項
- foreach (var item in result_QcItem.Data.Where(w => result_MaterialFQC.Select(s => s.QcItemID).Contains(w.ItemID)).ToList())
- {
- FQC010Master.Detail1.Add(new FQC010Detail1
- {
- ItemID = item.ItemID.ToString(),
- ItemName = item.ItemNameCN,
- ItemType = item.ItemTypeName
- });
- }
- }
- }
- else
- {
- // 檢驗工項
- foreach (var item in result_QcItem.Data.Where(w => result_WipFQC.Select(s => s.QcItemID).Contains(w.ItemID)).ToList())
- {
- FQC010Master.Detail1.Add(new FQC010Detail1
- {
- ItemID = item.ItemID.ToString(),
- ItemName = item.ItemNameCN,
- ItemType = item.ItemTypeName
- });
- }
- }
-
- // 條碼細項
- var fqcDetail = await _fqcApi.FQC007InhouseDetails(FqcQuery.InhouseNo, Convert.ToInt32(FqcQuery.SeqID));
- foreach (var item in fqcDetail.Data)
- {
- FQC010Master.Detail2.Add(new FQC010Detail2
- {
- ProductionSerialNumber = item.BarcodeNo,
- ShippingSerialNumber = item.ExtraBarcodeNo,
- IsSample = item.IsSample,
- InspectionResults = item.StatusNo
- });
- }
- }
+ var localReport = GetReprot(inhouseNo, seqID);
+ var result = localReport.Result.Execute(RenderType.Pdf, extension, param, mimeType);
+ return File(result.MainStream, "application/pdf");
+ }
- var FQC010Masters = new List();
- FQC010Masters.Add(FQC010Master);
+ public async Task FQC010_Excel(string inhouseNo, int seqID)
+ {
+ string mimeType = "";
+ int extension = 1;
+ Dictionary param = new Dictionary();
+ var localReport = GetReprot(inhouseNo, seqID);
+ var result = localReport.Result.Execute(RenderType.Excel, extension, param, mimeType);
+ return File(result.MainStream, "application/msexcel", "Export.xls");
+ //return File(result.MainStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Export.xlsx");
- localReport.AddDataSource("DataSet1", FQC010Masters);
- localReport.AddDataSource("DataSet2", FQC010Master.Detail1);
- localReport.AddDataSource("DataSet3", FQC010Master.Detail2);
- var result = localReport.Execute(RenderType.Pdf, extension, param, mimeType);
- return File(result.MainStream, "application/pdf");
- //var result = localReport.Execute(RenderType.Excel, extension, param, mimeType);
//return File(result.MainStream, "application/msexcel", "Export.xls");
}
- public async Task FQC010_Excel(string inhouseNo, int seqID)
+ ///
+ /// 產生FQC報表
+ ///
+ /// FQC單號
+ /// FQC單號_編號
+ ///
+ private async Task GetReprot(string inhouseNo, int seqID)
{
- string mimeType = "";
- int extension = 1;
var path = $"{this._env.WebRootPath}\\Reports\\FQC010View.rdlc";
LocalReport localReport = new LocalReport(path);
- Dictionary param = new Dictionary();
+
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
System.Text.Encoding.GetEncoding(1252);
var FQC010Master = new FQC010VIiew();
@@ -1756,12 +1718,7 @@ namespace AMESCoreStudio.Web.Controllers
localReport.AddDataSource("DataSet2", FQC010Master.Detail1);
localReport.AddDataSource("DataSet3", FQC010Master.Detail2);
- //var result = localReport.Execute(RenderType.Pdf, extension, param, mimeType);
- //return File(result.MainStream, "application/pdf");
-
- var result = localReport.Execute(RenderType.Excel, extension, param, mimeType);
- await _bllApi.PostToMail("主旨", "內容", "", "raylin@hotmail.com", false, result.MainStream);
- return File(result.MainStream, "application/msexcel", "Export.xls");
+ return localReport;
}
#endregion
@@ -1815,7 +1772,7 @@ namespace AMESCoreStudio.Web.Controllers
var checkMaterialItem = await _pcsApi.GetMaterialItemByItemNO(modelRequest.Material.ToUpper());
if (checkMaterialItem == null)
{
- isValid = false;
+ isValid = false;
ModelState.AddModelError("error", "找不到料號");
}
diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IBLL.cs b/AMESCoreStudio.Web/HttpApis/AMES/IBLL.cs
index 8b6645fa..bccd68c7 100644
--- a/AMESCoreStudio.Web/HttpApis/AMES/IBLL.cs
+++ b/AMESCoreStudio.Web/HttpApis/AMES/IBLL.cs
@@ -28,7 +28,7 @@ namespace AMESCoreStudio.Web
/// 附件
///
[WebApiClient.Attributes.HttpPost("api/Mail/ToMail")]
- ITask> PostToMail(string Subject, string Body, string ToMailGroup, string ToMail, bool ToCC = false, byte[] Attachment = null);
+ ITask> PostToMail(string Subject, string Body, string ToMailGroup, string ToMail, bool ToCC = false, string Attachment = null);
#endregion
}
}
diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs b/AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs
index 6b52ed5a..713ee797 100644
--- a/AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs
+++ b/AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs
@@ -559,7 +559,7 @@ namespace AMESCoreStudio.Web
///
///
[WebApiClient.Attributes.HttpGet("api/FqcNoticeMail/Query")]
- ITask> GetFqcNoticeMailQuery(string material, string fqcResult, string status, int page = 0, int limit = 10);
+ ITask> GetFqcNoticeMailQuery(string material, string fqcResult = null, string status = null, int page = 0, int limit = 10);
///
/// 查詢FQC報表自動派送 ID
diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/FqcNoticeMailController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/FqcNoticeMailController.cs
index 24ce4884..ee0c9e7c 100644
--- a/AMESCoreStudio.WebApi/Controllers/AMES/FqcNoticeMailController.cs
+++ b/AMESCoreStudio.WebApi/Controllers/AMES/FqcNoticeMailController.cs
@@ -40,7 +40,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
// GET: api/FqcNoticeMail/5
[HttpGet("{id}")]
- public async Task GetFqcNoticeMail(int id)
+ public async Task GetFqcNoticeMailBy(int id)
{
IQueryable q = _context.FqcNoticeMails.Where(w => w.FqcNoticeMailID == id);
var result = await q.FirstOrDefaultAsync();
diff --git a/AMESCoreStudio.WebApi/Controllers/BLL/MailController.cs b/AMESCoreStudio.WebApi/Controllers/BLL/MailController.cs
index 89bd086a..df0e473c 100644
--- a/AMESCoreStudio.WebApi/Controllers/BLL/MailController.cs
+++ b/AMESCoreStudio.WebApi/Controllers/BLL/MailController.cs
@@ -44,7 +44,7 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
/// 附件
///
[HttpPost("ToMail")]
- public async Task> PostMail(string Subject, string Body, string ToMailGroup, string ToMail, bool ToCC = false, byte[] Attachment = null)
+ public async Task> PostMail(string Subject, string Body, string ToMailGroup, string ToMail, bool ToCC = false, string Attachment = null)
{
ResultModel result = new ResultModel();
@@ -84,7 +84,7 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
foreach (var userMail in await q.ToListAsync())
{
- if (string.IsNullOrWhiteSpace(userMail.UserEMail))
+ if (!string.IsNullOrWhiteSpace(userMail.UserEMail))
{
mesMail.CC.Add(new MailAddress(userMail.UserEMail));
}
@@ -127,7 +127,7 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
foreach (var userMail in await q.ToListAsync())
{
- if (string.IsNullOrWhiteSpace(userMail.UserEMail))
+ if (!string.IsNullOrWhiteSpace(userMail.UserEMail))
{
mesMail.To.Add(new MailAddress(userMail.UserEMail));
}
@@ -153,10 +153,7 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
// 是否有附件檔案
if (Attachment != null)
{
- using (MemoryStream ms = new MemoryStream(Attachment))
- {
- mesMail.Attachments.Add(new Attachment(ms, "application/msexcel", "Export.xls"));
- }
+ mesMail.Attachments.Add(new Attachment(Attachment));
}
SmtpClient mailClient = new SmtpClient(mailSmtpServer, mailSmtpPort);
@@ -165,18 +162,19 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
NetworkCredential nc = new NetworkCredential();
nc.UserName = mailUser;
nc.Password = mailPassword;
- mailClient.Credentials = nc;
- mailClient.Send(mesMail);
+
try
{
+ mailClient.Credentials = nc;
+ mailClient.Send(mesMail);
result.Success = true;
- result.Msg = "OK";
+ result.Msg = "寄信成功";
}
catch (Exception ex)
{
result.Success = false;
- result.Msg = ex.InnerException.Message;
+ result.Msg = "寄信失敗,錯誤:" + ex.InnerException.Message;
}
return result;