Browse Source

1. FQC查詢加入委外廠商

2. FQC抽驗修正視窗問題
PTD
Ray 3 years ago
parent
commit
719e69493b
  1. 36
      AMESCoreStudio.Web/Controllers/FQCController.cs
  2. 3
      AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs
  3. 6
      AMESCoreStudio.Web/Views/FQC/FQC007.cshtml
  4. 2
      AMESCoreStudio.Web/Views/FQC/FQC007A.cshtml
  5. 152
      AMESCoreStudio.Web/Views/FQC/FQC007C.cshtml
  6. 55
      AMESCoreStudio.Web/Views/FQC/FQC008.cshtml
  7. 17
      AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseMasterController.cs
  8. 10
      AMESCoreStudio.WebApi/DTO/AMES/FqcInhouseMasterDto.cs

36
AMESCoreStudio.Web/Controllers/FQCController.cs

@ -30,11 +30,13 @@ namespace AMESCoreStudio.Web.Controllers
private readonly ILogger<PCSController> _logger; private readonly ILogger<PCSController> _logger;
public readonly IFQC _fqcApi; public readonly IFQC _fqcApi;
private readonly IWebHostEnvironment _env; private readonly IWebHostEnvironment _env;
public FQCController(ILogger<PCSController> logger, IFQC fqcApi, IWebHostEnvironment env) public readonly IPCS _pcsApi;
public FQCController(ILogger<PCSController> logger, IFQC fqcApi, IWebHostEnvironment env , IPCS pcsApi)
{ {
_logger = logger; _logger = logger;
_fqcApi = fqcApi; _fqcApi = fqcApi;
_env = env; _env = env;
_pcsApi = pcsApi;
} }
#region 下拉選單 #region 下拉選單
@ -161,6 +163,28 @@ namespace AMESCoreStudio.Web.Controllers
//将数据Json化并传到前台视图 //将数据Json化并传到前台视图
return Json(new { data = item }); return Json(new { data = item });
} }
/// <summary>
/// 廠別/委外廠
/// </summary>
/// <returns></returns>
private async Task GetFactoryInfo()
{
var result = await _pcsApi.GetFactoryInfo();
var FactoryInfo = new List<SelectListItem>();
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;
}
#endregion #endregion
#region FQC001 檢驗類別維護 #region FQC001 檢驗類別維護
@ -887,7 +911,7 @@ namespace AMESCoreStudio.Web.Controllers
if (model.StatusNo == "F") if (model.StatusNo == "F")
FqcResultMaster.FailQty += 1; FqcResultMaster.FailQty += 1;
else else
{ {
FqcResultMaster.PassQty += 1; FqcResultMaster.PassQty += 1;
FqcResultDetail.NgReasonNo = ""; FqcResultDetail.NgReasonNo = "";
FqcResultDetail.NgMemo = ""; FqcResultDetail.NgMemo = "";
@ -1135,19 +1159,21 @@ namespace AMESCoreStudio.Web.Controllers
#endregion #endregion
#region FQC008 FQC查詢 #region FQC008 FQC查詢
public IActionResult FQC008() public async Task<IActionResult> FQC008()
{ {
await GetFactoryInfo();
return View(); return View();
} }
public async Task<IActionResult> FQC008QueryAsync(string barcodeNo, string wipNo public async Task<IActionResult> FQC008QueryAsync(string barcodeNo, string wipNo
, string boxNo, string inhouseNo, string date_str, string date_end , string boxNo, string inhouseNo, string date_str, string date_end ,string factoryID
, string status, int page = 0, int limit = 10) , string status, int page = 0, int limit = 10)
{ {
IResultModel<FqcInhouseMasterDto> result = await _fqcApi.GetFqcInhouseMasterQuery(barcodeNo: barcodeNo, wipNo: wipNo IResultModel<FqcInhouseMasterDto> result = await _fqcApi.GetFqcInhouseMasterQuery(barcodeNo: barcodeNo, wipNo: wipNo
, boxNo: boxNo, inhouseNo: inhouseNo, date_str: date_str, date_end: date_end , boxNo: boxNo, inhouseNo: inhouseNo, date_str: date_str, date_end: date_end
, status: status, page: page, limit: limit); , status: status, page: page, limit: limit , factoryID: factoryID);
await GetFactoryInfo();
if (result.Data.Count() != 0) if (result.Data.Count() != 0)
{ {
return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal }); return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal });

3
AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs

@ -452,11 +452,12 @@ namespace AMESCoreStudio.Web
/// <param name="status">抽驗結果</param> /// <param name="status">抽驗結果</param>
/// <param name="page">頁數</param> /// <param name="page">頁數</param>
/// <param name="limit">筆數</param> /// <param name="limit">筆數</param>
/// <param name="factoryID">委外廠商</param>
/// <returns></returns> /// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/FqcInhouseMaster/FqcInhouseMasterQuery")] [WebApiClient.Attributes.HttpGet("api/FqcInhouseMaster/FqcInhouseMasterQuery")]
ITask<ResultModel<FqcInhouseMasterDto>> GetFqcInhouseMasterQuery(string barcodeNo = null, string wipNo = null ITask<ResultModel<FqcInhouseMasterDto>> GetFqcInhouseMasterQuery(string barcodeNo = null, string wipNo = null
, string boxNo = null, string inhouseNo = null, string date_str = null, string date_end = null , string boxNo = null, string inhouseNo = null, string date_str = null, string date_end = null
, string status = null, int page = 0, int limit = 10); , string status = null, int page = 0, int limit = 10 ,string factoryID = null);
#endregion #endregion
#region FQC009 料號檢驗工項維護 #region FQC009 料號檢驗工項維護

6
AMESCoreStudio.Web/Views/FQC/FQC007.cshtml

@ -444,9 +444,11 @@
layer.open({ layer.open({
title: '抽驗', title: '抽驗',
type: 2, type: 2,
area: ['600px', '600px'], area: ['600px', '550px'],
fixed: false, //不固定 fixed: false, //不固定
maxmin: true, maxmin: false,
scrollbar: true,
moveOut:true,
content: '/FQC/FQC007C?inhouseNo=@Model.h_InhouseNo&seq=@Model.h_SeqID' content: '/FQC/FQC007C?inhouseNo=@Model.h_InhouseNo&seq=@Model.h_SeqID'
}); });
}); });

2
AMESCoreStudio.Web/Views/FQC/FQC007A.cshtml

@ -19,7 +19,7 @@
</div> </div>
<script type="text/html" id="toolbarDemo"> <script type="text/html" id="toolbarDemo">
<div class="layui-btn-container"> <div class="layui-btn-container">
<button class="layui-btn layui-btn-sm layui-btn" lay-event="add"><i class="layui-icon">&#xe640;</i>儲存</button> <button class="layui-btn layui-btn-sm layui-btn" lay-event="add">儲存</button>
</div> </div>
</script> </script>

152
AMESCoreStudio.Web/Views/FQC/FQC007C.cshtml

@ -11,90 +11,86 @@
</style> </style>
<div class="layui-card"> <div class="layui-card">
<div class="row"> <form enctype="multipart/form-data" method="post" asp-action="FQC007C" class="layui-form">
<div class="col-sm-12"> <div asp-validation-summary="ModelOnly" class="text-danger"></div>
<form enctype="multipart/form-data" method="post" asp-action="FQC007C" class="layui-form"> <input type="hidden" asp-for="InhouseNo" value="@Model.InhouseNo" />
<div asp-validation-summary="ModelOnly" class="text-danger"></div> <input type="hidden" asp-for="SeqID" value="@Model.SeqID" />
<input type="hidden" asp-for="InhouseNo" value="@Model.InhouseNo" /> <div class="layui-form-item">
<input type="hidden" asp-for="SeqID" value="@Model.SeqID" /> <label asp-for="BarcodeNo" class="layui-form-label"></label>
<div class="layui-form-item"> <div class="layui-input-block">
<label asp-for="BarcodeNo" class="layui-form-label"></label> <input asp-for="BarcodeNo" class="layui-input" autocomplete="off" />
<div class="layui-input-block"> </div>
<input asp-for="BarcodeNo" class="layui-input" autocomplete="off" />
</div>
</div>
<div class="layui-form-item">
<label asp-for="ExtraBarcodeNo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="ExtraBarcodeNo" class="layui-input" />
</div>
</div>
<div class="layui-form-item">
<label asp-for="BoxNo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="BoxNo" class="layui-input" />
</div>
</div>
<div class="layui-form-item">
<label asp-for="StatusNo" class="layui-form-label"></label>
<div class="layui-input-block">
<select asp-for="StatusNo" lay-submit asp-items="@ViewBag.StatusTypeSelect">
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">不良群組</label>
<div class="layui-input-block">
<select id="ngGroup" lay-filter="ngGroup" lay-submit asp-items="@ViewBag.NGGroupSelect">
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">不良類別</label>
<div class="layui-input-block">
<select id="ngClass" lay-filter="ngClass" lay-submit>
<option value="0">N/A</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label asp-for="NgReasonNo" class="layui-form-label"></label>
<div class="layui-input-block">
<select asp-for="NgReasonNo" id="ngReasonNo" lay-submit>
<option value="0">N/A</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label asp-for="NgMemo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="BoxNo" class="layui-input" />
</div>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="layui-row" style="text-align:center">
<div class="layui-col-md12">
<input type="submit" value="保存" class="layui-btn" />
</div>
</div>
</form>
</div> </div>
</div>
<div class="layui-form-item">
<label asp-for="ExtraBarcodeNo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="ExtraBarcodeNo" class="layui-input" />
</div>
</div>
<div class="layui-form-item">
<label asp-for="BoxNo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="BoxNo" class="layui-input" />
</div>
</div>
<div class="layui-form-item">
<label asp-for="StatusNo" class="layui-form-label"></label>
<div class="layui-input-block">
<select asp-for="StatusNo" lay-submit asp-items="@ViewBag.StatusTypeSelect">
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">不良群組</label>
<div class="layui-input-block">
<select id="ngGroup" lay-filter="ngGroup" lay-submit asp-items="@ViewBag.NGGroupSelect">
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">不良類別</label>
<div class="layui-input-block">
<select id="ngClass" lay-filter="ngClass" lay-submit>
<option value="0">N/A</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label asp-for="NgReasonNo" class="layui-form-label"></label>
<div class="layui-input-block">
<select asp-for="NgReasonNo" id="ngReasonNo" lay-submit>
<option value="0">N/A</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label asp-for="NgMemo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="BoxNo" class="layui-input" />
</div>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="layui-row" style="text-align:center">
<div class="layui-col-md12">
<input type="submit" value="保存" class="layui-btn" />
</div>
</div>
</form>
</div> </div>
@section Scripts { @section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); @{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); } await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript"> <script type="text/javascript">
function getNGClassList(data) function getNGClassList(data)
{ {
$.ajax( $.ajax(
@ -171,7 +167,7 @@
parent.hg.msg(error); parent.hg.msg(error);
} }
}); });
</script> </script>
} }

55
AMESCoreStudio.Web/Views/FQC/FQC008.cshtml

@ -4,9 +4,9 @@
} }
<style type="text/css"> <style type="text/css">
.layui-table-main .layui-table-cell { /*.layui-table-main .layui-table-cell {*/
/*height: auto !important;*/ /*height: auto !important;*/
white-space: normal; /*white-space: normal;
} }
.layui-table img { .layui-table img {
@ -27,7 +27,7 @@
.layui-table-cell { .layui-table-cell {
height: auto; height: auto;
white-space: normal; white-space: normal;
} }*/
</style> </style>
@ -43,7 +43,19 @@
<div class="layui-form"> <div class="layui-form">
<div class="layui-row"> <div class="layui-row">
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-col-sm4"> <div class="layui-col-sm3">
<div class="layui-inline">
<label class="layui-form-label">委外廠商:</label>
<div class="layui-input-inline" style="width:150px">
<select id="factory" lay-filter="factory" name="factory" asp-items="@ViewBag.FactoryInfoList" class="">
<option value="">全部</option>
</select>
</div>
<input id="factoryID" type="hidden" name="factoryID" value="" />
</div>
</div>
<div class="layui-col-sm3">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">內部序號:</label> <label class="layui-form-label">內部序號:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:150px">
@ -51,7 +63,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm3">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">工單號碼:</label> <label class="layui-form-label">工單號碼:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:150px">
@ -59,7 +71,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm3">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">包裝箱號:</label> <label class="layui-form-label">包裝箱號:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:150px">
@ -125,8 +137,20 @@
, format: 'yyyy/MM/dd' , format: 'yyyy/MM/dd'
, theme: 'grid' , theme: 'grid'
}); });
form.on('select(factory)', function (data) {
$("#factoryID").val(data.value);
//roleName = data.elem[data.elem.selectedIndex].text;
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
//hg.msghide("刷新数据!");
//table && table.reload();
});
}); });
//监听表单提交事件 //监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) { hg.form.onsubmit('querysubmit', function (data) {
hg.msghide("重新載入資料.."); hg.msghide("重新載入資料..");
@ -135,7 +159,7 @@
var tableCols = [[ var tableCols = [[
{ {
field: 'werks', field: 'factoryNo',
width: 80, width: 80,
title: '委外廠', title: '委外廠',
sort: true sort: true
@ -155,8 +179,7 @@
{ {
field: 'seqID', field: 'seqID',
title: '順序', title: '順序',
width: 80, width: 60
sort: true
}, },
{ {
field: 'wipNo', field: 'wipNo',
@ -170,9 +193,8 @@
}, },
{ {
field: 'inhouseQty', field: 'inhouseQty',
width: 80, width: 60,
title: '批量', title: '批量'
sort: true
}, },
//{ //{
// field: 'serialNo', // field: 'serialNo',
@ -193,15 +215,12 @@
}, },
{ {
field: 'qaMeno', field: 'qaMeno',
title: '備註', title: '備註'
}, },
,
{ {
field: 'right',
width: 80,
title: '操作', title: '操作',
align: 'center', align: 'center',
fixed: 'right', width: 75,
templet: function (d) { templet: function (d) {
return '<a class="layui-btn layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a>' return '<a class="layui-btn layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a>'
} }
@ -228,5 +247,5 @@
{{ d.statusName }} {{ d.statusName }}
{{# } }} {{# } }}
</script> </script>
} }
} }

17
AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseMasterController.cs

@ -90,20 +90,24 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="status">抽驗結果</param> /// <param name="status">抽驗結果</param>
/// <param name="page">頁數</param> /// <param name="page">頁數</param>
/// <param name="limit">筆數</param> /// <param name="limit">筆數</param>
/// <param name="factoryID">委外廠商ID</param>
/// <returns></returns> /// <returns></returns>
[HttpGet("FqcInhouseMasterQuery")] [HttpGet("FqcInhouseMasterQuery")]
public async Task<ResultModel<FqcInhouseMasterDto>> GetFqcInhouseMasterQuery(string barcodeNo, string wipNo, string boxNo public async Task<ResultModel<FqcInhouseMasterDto>> GetFqcInhouseMasterQuery(string barcodeNo, string wipNo, string boxNo
, string inhouseNo, string date_str, string date_end, string status, int page = 0, int limit = 10) , string inhouseNo, string date_str, string date_end, string status, string factoryID, int page = 0, int limit = 10)
{ {
var q = from q1 in _context.FqcInhouseMasters var q = from q1 in _context.FqcInhouseMasters
//join q2 in _context.FqcInhouseDetails on new { q1.InhouseNo, q1.SeqID } equals new { q2.InhouseNo, q2.SeqID } //join q2 in _context.FqcInhouseDetails on new { q1.InhouseNo, q1.SeqID } equals new { q2.InhouseNo, q2.SeqID }
join q3 in _context.FqcResultMasters on q1.InhouseNo equals q3.InhouseNo into j1 join q3 in _context.FqcResultMasters on q1.InhouseNo equals q3.InhouseNo into j1
from q3 in j1.DefaultIfEmpty() from q3 in j1.DefaultIfEmpty()
join q4 in _context.WipInfos on q1.WipNo equals q4.WipNO into s join q4 in _context.WipInfos on q1.WipNo equals q4.WipNO into s
from q4 in s.DefaultIfEmpty() from q4 in s.DefaultIfEmpty()
join q5 in _context.FactoryInfos on q4.Werks equals q5.FactoryID.ToString() into j2
from q5 in j2.DefaultIfEmpty()
select new FqcInhouseMasterDto select new FqcInhouseMasterDto
{ {
Werks = q4.Werks, Werks = q4.Werks,
FactoryNo = q5.FactoryNo,
InhouseNo = q1.InhouseNo, InhouseNo = q1.InhouseNo,
SeqID = q1.SeqID, SeqID = q1.SeqID,
WipNo = q1.WipNo, WipNo = q1.WipNo,
@ -126,6 +130,9 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (!string.IsNullOrWhiteSpace(status)) if (!string.IsNullOrWhiteSpace(status))
q = q.Where(w => w.StatusName == status); q = q.Where(w => w.StatusName == status);
if (!string.IsNullOrWhiteSpace(factoryID))
q = q.Where(w => w.Werks.ToString() == factoryID);
// 優先用內部序號取出包裝序號 // 優先用內部序號取出包裝序號
if (!string.IsNullOrWhiteSpace(barcodeNo)) if (!string.IsNullOrWhiteSpace(barcodeNo))
{ {
@ -154,7 +161,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
ResultModel<FqcInhouseMasterDto> result = new ResultModel<FqcInhouseMasterDto>(); ResultModel<FqcInhouseMasterDto> result = new ResultModel<FqcInhouseMasterDto>();
// Table 頁數 // Table 頁數
if (page > 0) if (page > 0)
@ -218,7 +225,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
CustomerNo = q4.CustomerNO, CustomerNo = q4.CustomerNO,
CustomerMedical = q4.CustomerMedical, CustomerMedical = q4.CustomerMedical,
CustomerVIP = q4.CustomerVIP, CustomerVIP = q4.CustomerVIP,
Werk = q4.Werks+"-"+q5.FactoryNameCh, Werk = q4.Werks + "-" + q5.FactoryNameCh,
BIOS = q2.BIOS, BIOS = q2.BIOS,
CPU = q2.CPU, CPU = q2.CPU,
OS = q2.OS, OS = q2.OS,
@ -229,7 +236,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
Proved = q2.Proved, Proved = q2.Proved,
Proved_Name = q7.UserName, Proved_Name = q7.UserName,
UpdateUser = q8.UserNo, UpdateUser = q8.UserNo,
UpdateUser_Name =q8.UserName UpdateUser_Name = q8.UserName
}; };
var query = await q.Distinct().ToListAsync(); var query = await q.Distinct().ToListAsync();

10
AMESCoreStudio.WebApi/DTO/AMES/FqcInhouseMasterDto.cs

@ -16,10 +16,16 @@ namespace AMESCoreStudio.WebApi.DTO.AMES
public partial class FqcInhouseMasterDto public partial class FqcInhouseMasterDto
{ {
/// <summary> /// <summary>
/// 委外廠 /// 委外廠ID
/// </summary> /// </summary>
[DataMember] [DataMember]
public string Werks { get; set; } public string Werks { get; set; }
/// <summary>
/// 委外廠No
/// </summary>
[DataMember]
public string FactoryNo { get; set; }
/// <summary> /// <summary>
/// 入庫單號碼 /// 入庫單號碼

Loading…
Cancel
Save