Browse Source

1. FQC查詢報表-加入廠別查詢條件及顯示統計類別細項

PTD
Sai 2 years ago
parent
commit
29fd4cba98
  1. 58
      AMESCoreStudio.Web/Controllers/QRSController.cs
  2. 9
      AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs
  3. 22
      AMESCoreStudio.Web/Views/QRS/QRS016.cshtml
  4. 128
      AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterController.cs

58
AMESCoreStudio.Web/Controllers/QRSController.cs

@ -793,6 +793,29 @@ namespace AMESCoreStudio.Web.Controllers
ViewBag.LineList = LineItems;
}
/// <summary>
/// 廠別/委外廠
/// </summary>
/// <returns></returns>
private async Task GetFactoryInfo()
{
var result = await _pcsApi.GetFactoryInfo();
var FactoryInfo = new List<SelectListItem>();
result = result.Where(w => w.StatusNo == "A").OrderBy(o => o.FactoryID).ToList();
for (int i = 0; i < result.Count; i++)
{
FactoryInfo.Add(new SelectListItem(result[i].FactoryNo + "-" + result[i].FactoryNameCh, result[i].FactoryID.ToString()));
}
if (FactoryInfo.Count == 0)
{
FactoryInfo.Add(new SelectListItem("N/A", null));
}
ViewBag.FactoryInfoList = FactoryInfo;
}
[HttpPost]
public async Task<JsonResult> GetUnitLineJson(string unit_no)
{
@ -8721,7 +8744,7 @@ namespace AMESCoreStudio.Web.Controllers
public async Task<IActionResult> QRS016()
{
await GetUnitList();
await GetFactoryInfo();
ViewBag.StartDate = System.DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
ViewBag.EndDate = System.DateTime.Now.ToString("yyyy-MM-dd");
@ -8750,8 +8773,9 @@ namespace AMESCoreStudio.Web.Controllers
string model_no = param[2];
string start_date = param[3];
string end_date = param[4];
string factoryID = param[5];
var result = await _pcsApi.GetFQCHeaderData4QRS016(wip_no, item_no, model_no, start_date, end_date);
var result = await _pcsApi.GetFQCHeaderData4QRS016(wip_no, item_no, model_no, start_date, end_date, factoryID);
var query = new QRS016ViewModel();
@ -8772,16 +8796,16 @@ namespace AMESCoreStudio.Web.Controllers
return Json(query.FqcDatas);
}
public async Task<IActionResult> QRS016AAsync(string modelNO, string itemNO, string wipNO, string dateStart, string dateEnd)
public async Task<IActionResult> QRS016AAsync(string modelNO, string itemNO, string wipNO, string dateStart, string dateEnd, string factoryID, string factoryName)
{
//
ViewData["ParamList"] = modelNO + "_" + itemNO + "_" + wipNO + "_" + dateStart + "_" + dateEnd;
ViewData["ParamList"] = modelNO + "_" + itemNO + "_" + wipNO + "_" + dateStart + "_" + dateEnd + "_" + factoryID;
ViewData["Title"] = "查詢條件 - 工單號碼 : " + wipNO + "; 料號 : " + itemNO + "; 機種 : " + modelNO + "; 檢驗日期 : " + dateStart + " ~ " + dateEnd;
ViewData["Title"] = "查詢條件 - 工單號碼 : " + wipNO + "; 料號 : " + itemNO + "; 機種 : " + modelNO + "; 檢驗日期 : " + dateStart + " ~ " + dateEnd + $"; 委外廠別 : {factoryID}({factoryName})";
string fqcDataList = "<font size='3'>";
IResultModel<dynamic> result = await _pcsApi.GetFQCHeaderData4QRS016(wipNO, itemNO, modelNO, dateStart, dateEnd);
IResultModel<dynamic> result = await _pcsApi.GetFQCHeaderData4QRS016(wipNO, itemNO, modelNO, dateStart, dateEnd, factoryID);
if (result.DataTotal > 0)
{
@ -8807,6 +8831,28 @@ namespace AMESCoreStudio.Web.Controllers
fqcDataList = fqcDataList + "</table>";
}
// 各細項統計
IResultModel<QRS016Detail> resultDetail = await _pcsApi.GetFQCHeaderData4QRS016Detail(wipNO, itemNO, modelNO, dateStart, dateEnd, factoryID);
if (resultDetail.Success)
{
fqcDataList += "<br/>";
fqcDataList += "<table border='1' width='70%'><tr><td width='80' style='text-align:center'>類別</td>" +
"<td style='text-align:center'>FQC總抽驗數</td>" +
"<td width='200' style='text-align:center'>FQC允收數</td>" +
"<td width='200' style='text-align:center'>FQC批退數</td>" +
"<td width='160' style='text-align:center'>批退率</td></tr>";
foreach (var item in resultDetail.Data)
{
fqcDataList += $"<tr style='text-align:center'><td>{item.type}</td>";
fqcDataList += $"<td>{item.allQty}</td>";
fqcDataList += $"<td>{item.passQty}</td>";
fqcDataList += $"<td>{item.failQty}</td>";
fqcDataList += $"<td>{item.rejectRate}%</td></tr>";
}
fqcDataList += $"</table>";
}
fqcDataList = fqcDataList + "</font>";
ViewData["FQCDataList"] = fqcDataList;
return View();

9
AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs

@ -1131,7 +1131,14 @@ namespace AMESCoreStudio.Web
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/FqcResultMaster/GetFQCHeaderData4QRS016")]
ITask<ResultModel<dynamic>> GetFQCHeaderData4QRS016(string wipNO, string itemNO, string modelNO, string dateStart, string dateEnd);
ITask<ResultModel<dynamic>> GetFQCHeaderData4QRS016(string wipNO, string itemNO, string modelNO, string dateStart, string dateEnd ,string factoryID);
/// <summary>
/// FQC查詢報表 細項統計
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/FqcResultMaster/GetFQCHeaderData4QRS016ByDetail")]
ITask<ResultModel<QRS016Detail>> GetFQCHeaderData4QRS016Detail(string wipNO, string itemNO, string modelNO, string dateStart, string dateEnd, string factoryID);
/// <summary>
/// 查詢FQC明細資料

22
AMESCoreStudio.Web/Views/QRS/QRS016.cshtml

@ -15,7 +15,7 @@
<div class="layui-form">
<div class="layui-row">
<div class="layui-form-item">
<div class="layui-col-sm3">
<div class="layui-col-sm4">
<div class="layui-inline">
<label class="layui-form-label">工單號碼:</label>
<div class="layui-input-inline" style="width:160px">
@ -23,7 +23,7 @@
</div>
</div>
</div>
<div class="layui-col-sm3">
<div class="layui-col-sm4">
<div class="layui-inline">
<label class="layui-form-label">料號:</label>
<div class="layui-input-inline" style="width:160px">
@ -31,7 +31,7 @@
</div>
</div>
</div>
<div class="layui-col-sm3">
<div class="layui-col-sm4">
<div class="layui-inline">
<label class="layui-form-label">機種:</label>
<div class="layui-input-inline" style="width:160px">
@ -39,7 +39,7 @@
</div>
</div>
</div>
<div class="layui-col-sm8">
<div class="layui-col-sm4">
<div class="layui-inline">
<label class="layui-form-label">檢驗日期:</label>
<div class="layui-input-inline" style="width:160px">
@ -51,6 +51,16 @@
</div>
</div>
</div>
<div class="layui-col-sm4">
<div class="layui-inline">
<label class="layui-form-label">委外廠商:</label>
<div class="layui-input-inline" style="width:200px">
<select id="factoryID" lay-filter="factory" name="factoryID" asp-items="@ViewBag.FactoryInfoList" class="">
<option value="">全部</option>
</select>
</div>
</div>
</div>
<div class="layui-col-sm1">
<div class="layui-inline layui-show-xs-block">
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit onclick="result()" lay-filter="querysubmit">
@ -90,8 +100,10 @@
var wipNO = $("#wipNO").val();
var dateStart = $("#dateStart").val();
var dateEnd = $("#dateEnd").val();
var factoryID = $("#factoryID").val();
var factoryName = $("#factoryID option:selected").text();
var query = "?modelNO=" + modelNO + "&itemNO=" + itemNO + "&wipNO=" + wipNO + "&dateStart=" + dateStart + "&dateEnd=" + dateEnd;
var query = "?modelNO=" + modelNO + "&itemNO=" + itemNO + "&wipNO=" + wipNO + "&dateStart=" + dateStart + "&dateEnd=" + dateEnd + "&factoryID=" + factoryID + "&factoryName=" + factoryName;
hg.open('FQC查詢報表', '/QRS/QRS016A' + query, '', '', true);
};

128
AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterController.cs

@ -8,6 +8,7 @@ using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.WebApi.DTO;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
@ -67,11 +68,12 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <returns></returns>
[Route("[action]")]
[HttpGet]
public async Task<ResultModel<dynamic>> GetFQCHeaderData4QRS016(string wipNO, string itemNO, string modelNO, string dateStart, string dateEnd)
public async Task<ResultModel<dynamic>> GetFQCHeaderData4QRS016(string wipNO, string itemNO, string modelNO, string dateStart, string dateEnd ,string factoryID)
{
ResultModel<dynamic> result = new ResultModel<dynamic>();
var q = from q1 in _context.FqcResultMasters
join q2 in _context.CalendarTables on q1.CreateDate.Date equals q2.TimeID
join q3 in _context.WipInfos on q1.WipNo equals q3.WipNO
select new
{
q1.FqcID,
@ -83,7 +85,8 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
q1.PassQty,
q1.FailQty,
q1.QaResult,
q2.WeekOfYear
q2.WeekOfYear,
q3.Werks
};
if (wipNO != null && wipNO != "")
@ -98,6 +101,10 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{
q = q.Where(w => w.ModelNo == modelNO);
}
if (factoryID != null && factoryID != "")
{
q = q.Where(w => w.Werks == factoryID);
}
if (dateStart != null && dateStart != "" && dateEnd != null && dateEnd != "")
{
q = q.Where(w => w.CreateDate >= DateTime.Parse(dateStart + " 00:00:00") && w.CreateDate <= DateTime.Parse(dateEnd + " 23:59:59"));
@ -145,6 +152,123 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return result;
}
/// <summary>
/// FQC查詢報表QRS016 細項統計
/// </summary>
/// <returns></returns>
[Route("[action]")]
[HttpGet]
public async Task<ResultModel<DTO.AMES.QRS016Detail>> GetFQCHeaderData4QRS016ByDetail(string wipNO, string itemNO, string modelNO, string dateStart, string dateEnd, string factoryID)
{
ResultModel<DTO.AMES.QRS016Detail> result = new ResultModel<DTO.AMES.QRS016Detail>();
var q = from q1 in _context.FqcResultMasters
join q2 in _context.WipInfos on q1.WipNo equals q2.WipNO
select new DTO.AMES.QRS016Detail
{
wipNo = q1.WipNo,
itemNo = q1.ItemNo,
modelNo = q1.ModelNo,
werks = q2.Werks,
startTime = q1.StartTime,
qaResult = q1.QaResult,
customerMedical = q2.CustomerMedical,
unitNo = q2.UnitNO
};
if (wipNO != null && wipNO != "")
{
q = q.Where(w => w.wipNo.Trim().ToUpper() == wipNO.Trim().ToUpper());
}
if (itemNO != null && itemNO != "")
{
q = q.Where(w => w.itemNo.Trim().ToUpper() == itemNO.Trim().ToUpper());
}
if (modelNO != null && modelNO != "")
{
q = q.Where(w => w.modelNo.Trim().ToUpper() == modelNO.Trim().ToUpper());
}
if (factoryID != null && factoryID != "")
{
q = q.Where(w => w.werks == factoryID);
}
if (dateStart != null && dateStart != "" && dateEnd != null && dateEnd != "")
{
q = q.Where(w => w.startTime >= DateTime.Parse(dateStart + " 00:00:00") && w.startTime <= DateTime.Parse(dateEnd + " 23:59:59"));
}
var query = new List<DTO.AMES.QRS016Detail>();
int allQty = 0;
int passQty = 0;
int failQty = 0;
double rejectRate = 0;
// 醫療
var data = q.Where(w => w.customerMedical == "Y").ToList();
allQty = data.Count();
passQty = data.Where(w => w.qaResult == "P").Count();
failQty = data.Where(w => w.qaResult == "R").Count();
rejectRate = failQty == 0 ? 0 : Math.Round(((double)failQty / (double)allQty), 2, MidpointRounding.AwayFromZero) * 100;
query.Add(new DTO.AMES.QRS016Detail
{
type = "醫療",
allQty = allQty,
passQty = passQty,
failQty = failQty,
rejectRate = rejectRate
});
// 系統組裝
data.Clear();
data = q.Where(w => w.customerMedical == "N" && w.unitNo == "B").ToList();
allQty = data.Count();
passQty = data.Where(w => w.qaResult == "P").Count();
failQty = data.Where(w => w.qaResult == "R").Count();
rejectRate = failQty == 0 ? 0 : Math.Round(((double)failQty / (double)allQty), 2, MidpointRounding.AwayFromZero) * 100;
query.Add(new DTO.AMES.QRS016Detail
{
type = "系統組裝",
allQty = allQty,
passQty = passQty,
failQty = failQty,
rejectRate = rejectRate
});
// 單板
data.Clear();
data = q.Where(w => w.customerMedical == "N" && w.unitNo == "S").ToList();
allQty = data.Count();
passQty = data.Where(w => w.qaResult == "P").Count();
failQty = data.Where(w => w.qaResult == "R").Count();
rejectRate = failQty == 0 ? 0 : Math.Round(((double)failQty / (double)allQty), 2, MidpointRounding.AwayFromZero) * 100;
query.Add(new DTO.AMES.QRS016Detail
{
type = "單板",
allQty = allQty,
passQty = passQty,
failQty = failQty,
rejectRate = rejectRate
});
//紀錄筆數
result.DataTotal = query.Count();
result.Data = query;
if (query.Count == 0)
{
result.Msg = "查無資料";
result.Success = false;
return result;
}
result.Success = true;
result.Msg = "OK";
return result;
}
/// <summary>
/// 查詢FQC明細資料
/// </summary>

Loading…
Cancel
Save