Browse Source

1. 新增FQC007檢驗功能

2. 修正工單顯示標工問題
PTD
Ray 3 years ago
parent
commit
f32a3ae961
  1. 188
      AMESCoreStudio.Web/Controllers/FQCController.cs
  2. 10
      AMESCoreStudio.Web/Controllers/PCSController.cs
  3. 27
      AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs
  4. 6
      AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs
  5. 180
      AMESCoreStudio.Web/Views/FQC/FQC007.cshtml
  6. 178
      AMESCoreStudio.Web/Views/FQC/FQC007A.cshtml
  7. 9
      AMESCoreStudio.Web/Views/FQC/FQC007D.cshtml
  8. 13
      AMESCoreStudio.Web/Views/FQC/FQC009.cshtml
  9. 62
      AMESCoreStudio.Web/Views/FQC/FQC009U.cshtml
  10. 6
      AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterController.cs
  11. 28
      AMESCoreStudio.WebApi/Controllers/AMES/QcItemController.cs
  12. 12
      AMESCoreStudio.WebApi/Controllers/AMES/StandardWorkTimesController.cs
  13. 11
      AMESCoreStudio.WebApi/Controllers/AMES/WipFqcItemController.cs
  14. 6
      AMESCoreStudio.WebApi/DTO/AMES/FqcDto.cs

188
AMESCoreStudio.Web/Controllers/FQCController.cs

@ -675,6 +675,24 @@ namespace AMESCoreStudio.Web.Controllers
model = result.Data.FirstOrDefault();
model.h_InhouseNo = model.InhouseNo;
model.h_SeqID = model.SeqID.ToString();
// 抓全部檢驗工項
var result_QcItem = await _fqcApi.GetQcItemQuery(0, 0, 0);
// 取綁定工單檢驗工項資料
var result_WipFQC = await _fqcApi.GetWipFqcItemByWipNo(model.WipNo);
if (result_WipFQC.Count == 0)
{
//工單無設定檢驗工項時 在抓料號綁定檢驗工項
var result_MaterialFQC = await _fqcApi.GetMaterialFqcItemsByitemNo(model.ItemNo);
if (result_MaterialFQC.Count != 0)
{
model.qcItemDtos = result_QcItem.Data.Where(w => result_MaterialFQC.Select(s => s.QcItemID).Contains(w.ItemID)).ToList();
}
}
else
{
model.qcItemDtos = result_QcItem.Data.Where(w => result_WipFQC.Select(s => s.QcItemID).Contains(w.ItemID)).ToList();
}
}
else
{
@ -912,7 +930,7 @@ namespace AMESCoreStudio.Web.Controllers
}
#endregion
#region
#region
[HttpGet]
public async Task<IActionResult> FQC007D(int fqc)
{
@ -926,60 +944,128 @@ namespace AMESCoreStudio.Web.Controllers
[HttpPost]
public async Task<IActionResult> FQC007DAsync(FqcDto model, string Result, IFormFile formFile)
{
// 檔案上傳
string FileName = string.Empty;
string NewName = string.Empty;
string FilePath = string.Empty;
//var fileProvider = _fileServerProvider.GetProvider("/aa");
//var fileInfo = fileProvider.GetFileInfo("/");
//if (formFile != null)
//{
// if (formFile.Length > 0)
// {
// FqcResultMaster fqcResultMaster = await _fqcApi.GetFqcResultMaster(model.FqcID);
// //取得使用者上傳檔案的原始檔名
// FileName = Path.GetFileName(formFile.FileName);
// //取原始檔名中的副檔名
// //var fileExt = Path.GetExtension(FileName);
// //為避免使用者上傳的檔案名稱發生重複,重新給一個亂數名稱
// //NewName = Path.GetRandomFileName() + fileExt;
// //指定要寫入的路徑、檔名和副檔名
// FilePath = $@"{_env.WebRootPath}\UploadFolder\FQC\{model.wipInfo.WipNO}";
// var path = $@"{FilePath}\{FileName}";
// if (!System.IO.Directory.Exists(FilePath))
// {
// System.IO.Directory.CreateDirectory(FilePath);
// }
// using (var stream = new FileStream(path, FileMode.Create))
// {
// await formFile.CopyToAsync(stream);
// }
// model.wipInfoBlob.WipNo = model.wipInfo.WipNO;
// model.wipInfoBlob.ImageName = FileName;
// model.wipInfoBlob.Filepath = $@"\UploadFolder\{model.wipInfo.WipNO}\";
// result = await _pcsApi.PostWipInfoBlob(JsonConvert.SerializeObject(model.wipInfoBlob));
// }
//}
//if (result.Success)
//{
// var _msg = "新增成功!";
// return RedirectToAction("WindowReload", "Home", new { msg = _msg });
//}
//else
//{
// ModelState.AddModelError("error", result.Msg);
//}
FqcResultMaster fqcResultMaster = await _fqcApi.GetFqcResultMaster(model.FqcID);
if (fqcResultMaster == null)
{
ModelState.AddModelError("error", "找不到FQC開單紀錄");
return View("FQC007D", model);
}
return View("FQC007B", model);
if (formFile != null)
{
if (formFile.Length > 0)
{
// 檔案上傳
string FileName = string.Empty;
string NewName = string.Empty;
string FilePath = string.Empty;
//取得使用者上傳檔案的原始檔名
FileName = Path.GetFileName(formFile.FileName);
//取原始檔名中的副檔名
//var fileExt = Path.GetExtension(FileName);
//為避免使用者上傳的檔案名稱發生重複,重新給一個亂數名稱
//NewName = Path.GetRandomFileName() + fileExt;
//指定要寫入的路徑、檔名和副檔名
FilePath = $@"{_env.WebRootPath}\UploadFolder\FQC\{fqcResultMaster.InhouseNo}-{fqcResultMaster.SeqID}";
var path = $@"{FilePath}\{FileName}";
if (!System.IO.Directory.Exists(FilePath))
{
System.IO.Directory.CreateDirectory(FilePath);
}
using (var stream = new FileStream(path, FileMode.Create))
{
await formFile.CopyToAsync(stream);
}
FqcResultMasterBlob fqcResultMasterBlob = new FqcResultMasterBlob()
{
FqcID = model.FqcID,
ImageName = FileName,
Filepath = $@"\UploadFolder\FQC\{fqcResultMaster.InhouseNo}-{fqcResultMaster.SeqID}\",
CreateUserID = GetLogInUserID(),
UpdateUserID = GetLogInUserID()
};
var result = await _fqcApi.PostFqcResultMasterBlob(JsonConvert.SerializeObject(fqcResultMasterBlob));
if (result.Success)
{
ModelState.AddModelError("error", "上傳成功!");
}
else
{
ModelState.AddModelError("error", "上傳失敗,錯誤訊息:" + result.Msg);
}
}
}
else
{
ModelState.AddModelError("error", "ssddf");
}
model.fqcResultMasterBlobs = await _fqcApi.GetFqcResultMasterBlobByFqcID(model.FqcID);
return View("FQC007D", model);
}
#endregion
#region 檢驗工項維護
[HttpGet]
public ActionResult FQC007A(FqcDto model)
{
return View(model);
}
[HttpGet]
public async Task<IActionResult> FQC007AItemQuery(string wipNo, string itemNo)
{
var result = await _fqcApi.GetQcItemQuery(0, 0, 0, itemNo, wipNo);
return Json(new Table() { code = 0, data = result.Data, count = result.DataTotal });
}
[HttpPost]
public async Task<IActionResult> FQC007AAsync(string itemID, string groupID, string wipNo, string itemNo)
{
// 取工單綁定檢驗工項
var result_WipFQC = await _fqcApi.GetWipFqcItemByWipNo(wipNo);
// 有勾選的ItemID
var checkItemID = itemID.Split(',').ToList();
// 有勾選的GroupID
var checkGroupID = groupID.Split(',').ToList();
// 取勾選有的 = 新增
var insertItemID = checkItemID.Except(result_WipFQC.Select(s => s.QcItemID.ToString()));
for (int i = 0; i < checkItemID.Count; i++)
{
if (insertItemID.Where(w => w == checkItemID[i]).Any())
{
WipFqcItem wipFqcItem = new WipFqcItem
{
WipNo = wipNo,
ItemNo = itemNo,
QcItemID = Int32.Parse(checkItemID[i]),
QcGroupID = Int32.Parse(checkGroupID[i]),
CreateUserID = GetLogInUserID(),
CreateDate = DateTime.Now,
UpdateUserID = GetLogInUserID(),
UpdateDate = DateTime.Now
};
await _fqcApi.PostWipFqcItem(JsonConvert.SerializeObject(wipFqcItem));
}
}
// 取有料號綁定 = 需要刪除
var deteleItemID = result_WipFQC.Select(s => s.QcItemID.ToString()).Except(checkItemID);
foreach (var item in deteleItemID)
{
var wipFQCID = result_WipFQC.Where(w => w.QcItemID == Int32.Parse(item)).FirstOrDefault().WipFqcitemID;
await _fqcApi.DeleteWipFqcItem(wipFQCID);
}
return Json(new { code = 0, msg = "", success = true });
}
#endregion
#endregion
#region FQC008 FQC查詢

10
AMESCoreStudio.Web/Controllers/PCSController.cs

@ -2054,12 +2054,12 @@ namespace AMESCoreStudio.Web.Controllers
model.wipInfoBlobs = await _pcsApi.GetWipInfoBlob(model.wipInfo.WipNO);
// 取料號對應工時
var cycleTime = await _pcsApi.GetCycleTimesByItemNo(model.wipAtt.ItemNO);
cycleTime = cycleTime.Where(w => w.LineID == model.wipInfo.LineID &&
w.SectionNo == model.wipInfo.UnitNO).ToList();
var standardWorkTimes = await _pcsApi.GetStandardWorkTimeByItemNo(model.wipAtt.ItemNO);
standardWorkTimes = standardWorkTimes.Where(w => w.LineID == model.wipInfo.LineID &&
w.UnitNo == model.wipInfo.UnitNO).ToList();
if (cycleTime.Count != 0)
model.itemNoCT1 = cycleTime.FirstOrDefault().CT1.ToString();
if (standardWorkTimes.Count != 0)
model.itemNoCT1 = standardWorkTimes.FirstOrDefault().CT.ToString();
}

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

@ -79,9 +79,11 @@ namespace AMESCoreStudio.Web
/// <param name="groupID">檢驗類別ID</param>
/// <param name="page">頁數</param>
/// <param name="limit">比數</param>
/// <param name="itemNo">料號</param>
/// <param name="wipNo">工單號碼</param>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/QcItem/QcItemQuery")]
ITask<ResultModel<QcItemDto>> GetQcItemQuery(int groupID, int page, int limit,string itemNo = null);
ITask<ResultModel<QcItemDto>> GetQcItemQuery(int groupID, int page, int limit,string itemNo = null,string wipNo = null);
/// <summary>
/// 查詢檢驗項目維護 ID
@ -336,7 +338,6 @@ namespace AMESCoreStudio.Web
[WebApiClient.Attributes.HttpGet("api/NGClasses/Group/{no}")]
ITask<List<NGClass>> GetNGClassesByGroup(string no, int page = 0, int limit = 10);
/// <summary>
/// 不良現象-List
/// </summary>
@ -416,6 +417,26 @@ namespace AMESCoreStudio.Web
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/FqcResultMasterBlob/ByFQCID/{id}")]
ITask<List<FqcResultMasterBlob>> GetFqcResultMasterBlobByFqcID(int id);
/// <summary>
/// WipFqcItem 查詢工單綁定檢驗工項
/// </summary>
/// <param name="id">料號</param>
[WebApiClient.Attributes.HttpGet("api/WipFqcItem/ByWipNo/{id}")]
ITask<List<WipFqcItem>> GetWipFqcItemByWipNo(string id);
/// <summary>
/// WipFqcItem 新增工單綁定檢驗工項
/// </summary>
[WebApiClient.Attributes.HttpPost("api/WipFqcItem")]
ITask<ResultModel<WipFqcItem>> PostWipFqcItem([FromBody, RawJsonContent] string model);
/// <summary>
/// WipFqcItem 刪除工單綁定檢驗工項
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/WipFqcItem/{id}")]
ITask<ResultModel<string>> DeleteWipFqcItem(int id);
#endregion
#region FQC008 FQC查詢
@ -438,7 +459,7 @@ namespace AMESCoreStudio.Web
, string status = null, int page = 0, int limit = 10);
#endregion
#region FQC009
#region FQC009 料號檢驗工項維護
/// <summary>
/// MaterialItem 料號基本資料檔
/// </summary>

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

@ -1102,9 +1102,9 @@ namespace AMESCoreStudio.Web
ITask<List<OutfitCommodityInfo>> GetOutfitCommodityInfo();
#endregion
#region CycleTimes 料號對應工時
[WebApiClient.Attributes.HttpGet("api/CycleTimes/ByItemNo/{id}")]
ITask<List<CycleTime>> GetCycleTimesByItemNo(string id);
#region StandardWorkTimes 料號對應工時
[WebApiClient.Attributes.HttpGet("api/StandardWorkTimes/ByItemNo/{id}")]
ITask<List<StandardWorkTime>> GetStandardWorkTimeByItemNo(string id);
#endregion
#region WipReturn 工單退回紀錄

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

@ -218,57 +218,101 @@
</div>
</div>
@*<table class="layui-hide" id="test" lay-filter="test"></table>*@
<table id="MydataTable" class="layui-table">
@{ int i = 0;}
<thead>
<tr>
<th>
箱號
</th>
<th>
總數量
</th>
<th>
已抽數量
</th>
<th>
抽驗PASS數量
</th>
<th>
抽驗FAIL數量
</th>
<th>
檢視
</th>
</tr>
</thead>
<tbody>
@foreach (var index in Model.fqcDetails)
{
<tr>
<td>
@index.SerialNo
</td>
<td>
@index.Qty
</td>
<td>
@index.HasQty
</td>
<td>
@index.PassQty
</td>
<td>
@index.FailQty
</td>
<td>
</td>
</tr>
i++;
}
</tbody>
</table>
<div class="layui-collapse">
<div class="layui-colla-item">
<h2 class="layui-colla-title">細項資料</h2>
<div class="layui-colla-content layui-show">
<table id="MydataTable" class="layui-table">
@{ int i = 0;}
<thead>
<tr>
<th>
箱號
</th>
<th>
總數量
</th>
<th>
已抽數量
</th>
<th>
抽驗PASS數量
</th>
<th>
抽驗FAIL數量
</th>
<th>
檢視
</th>
</tr>
</thead>
<tbody>
@foreach (var index in Model.fqcDetails)
{
<tr>
<td>
@index.SerialNo
</td>
<td>
@index.Qty
</td>
<td>
@index.HasQty
</td>
<td>
@index.PassQty
</td>
<td>
@index.FailQty
</td>
<td>
</td>
</tr>
i++;
}
</tbody>
</table>
</div>
</div>
<div class="layui-colla-item">
<h2 class="layui-colla-title">檢驗工項</h2>
<div class="layui-colla-content layui-show">
<a class="layui-btn layui-btn-sm layui-btn-normal" id="attachment" title="新增" lay-submit onclick="addQcItem()">
<i class="layui-icon layui-icon-sm">&#xe61f;</i>
</a>
<table id="QcItemTable" class="layui-table">
<thead>
<tr>
<th lay-data="{field:'groupNameCN', width:100,sort: true}">類別中文</th>
<th lay-data="{field:'groupNameEN', width:100,sort: true}">類別英文</th>
<th lay-data="{field:'itemNameCN', width:100,sort: true}">項目中文</th>
<th lay-data="{field:'itemNameEN', width:100,sort: true}">項目英文</th>
</tr>
</thead>
<tbody>
@foreach (var index in Model.qcItemDtos)
{
<tr>
<td>
@index.GroupNameCN
</td>
<td>
@index.GroupNameEN
</td>
<td>
@index.ItemNameCN
</td>
<td>
@index.ItemNameEN
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
</div>
</div>
</form>
</div>
@ -314,11 +358,17 @@
});
};
// 文件上傳
function upload() {
layui.use('layer', function () {
var layer = layui.layer;
layer.open({
title: '文件上傳',
if (@Model.FqcID == 0) {parent.hg.msg('請搜尋入庫單號!');
return;
};
layui.use('layer', function () {
var layer = layui.layer;
layer.open({
title: '文件上傳',
type: 2,
area: ['600px', '400px'],
fixed: false, //不固定
@ -328,6 +378,28 @@
});
};
// QCITEM
function addQcItem() {
if (@Model.FqcID == 0) {parent.hg.msg('請搜尋入庫單號!');
return;
}
layui.use('layer', function () {
var layer = layui.layer;
layer.open({
title: '檢驗工項維護',
type: 2,
area: ['700px', '500px'],
fixed: false, //不固定
maxmin: true,
content: '/FQC/FQC007A?wipNo=@Model.WipNo&itemNo=@Model.ItemNo',
end: function () {
//hg.msg('新增成功');
window.location.reload();
}
});
});
}
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {

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

@ -1,6 +1,6 @@

@{ ViewData["Title"] = "工單檢驗工項維護";
Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
@model AMESCoreStudio.WebApi.DTO.AMES.FqcDto
@{ Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
<style>
.control-label {
@ -9,66 +9,34 @@
</style>
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-form">
<div class="layui-form-item ">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
<div class="layui-inline">
<label class="layui-form-label">料號:</label>
<div class="layui-input-inline">
<input id="itemNo" name="itemNo" style="text-transform:uppercase;" autocomplete="off" class="layui-input" placeholder="請輸入料號">
<input id="itemNoOld" name="itemNoOld" type="hidden" />
</div>
</div>
<div class="layui-inline layui-show-xs-block">
<button class="layui-btn layui-btn-sm layui-btn-normal" id="querysubmit" lay-submit lay-filter="querysubmit">
<i class="layui-icon layui-icon-sm">&#xe615;</i>
</button>
</div>
</div>
</div>
</div>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="layui-card-body">
<input type="hidden" asp-for="WipNo" value="@Model.WipNo" />
<input type="hidden" asp-for="ItemNo" value="@Model.ItemNo" />
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3" id="error"></span>
<table class="layui-hide" id="tableQuery" name="tableQuery" lay-filter="tableQuery"></table>
</div>
</div>
<script type="text/html" id="toolbarDemo">
<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"><i class="layui-icon">&#xe640;</i>儲存</button>
</div>
</script>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
//搜索
$('#querysubmit').click(function () {
hg.msghide('刷新数据!');
initQuery();
});
function initQuery(data) {
layui.use(['form', 'table'], function () {
var itemNo = $('#itemNo').val().toUpperCase();
$('#itemNoOld').val(itemNo);
//记录当前页数据的临时变量
//var $ = layui.$;
//var id_lists = [];
layui.use(['form', 'table'], function () {
table = layui.table;
form = layui.form;
//方法級渲染
table.render({ //其它参数在此省略
elem: '#tableQuery',
url: "@Url.Action("FQC009ItemQuery", "FQC")",
url: "@Url.Action("FQC007AItemQuery", "FQC")",
title: '檢驗工項',
id: 'itemID',
page: false, //开启分页
@ -77,14 +45,8 @@
defaultToolbar: ['filter', 'print', 'exports'],
cols: tableCols,
response: { msgName: 'msg' },
where: {itemNo:itemNo},
where: {itemNo:'@Model.ItemNo',wipNo:'@Model.WipNo'},
done: function (res, curr, count) {
//
if (res.msg != '') {
hg.msg(res.msg);
$('#error').text(res.msg);
}
//迴圈所有資料,找出對應關係,設定checkbox選中狀態
for (var i = 0; i < res.data.length; i++) {
if (res.data[i].check) {
@ -101,17 +63,6 @@
//触发事件
table.on('toolbar(tableQuery)', function (obj) {
if ($('#itemNo').val().replace(/\s+/g, '').toUpperCase() == '') {
hg.msg('請輸入料號,請再重新查詢!');
return;
}
if ($('#itemNo').val().toUpperCase() != $('#itemNoOld').val()) {
hg.msg('保存失敗,原先查詢料號有異動過,請再重新查詢!');
return;
};
var checkStatus = table.checkStatus(obj.config.id);
if (obj.event == 'add') {
if (checkStatus && checkStatus.data.length > 0) {
@ -120,99 +71,41 @@
var groupID = checkStatus.data.map(function (x) { return x.groupID }).join(',');
hg.confirm("確定要綁定有勾選的檢驗工項嗎?", function () {
$.ajax({
url: '/FQC/FQC009C',
data: { 'itemID': itemID, 'groupID': groupID ,'itemNo': $('#itemNo').val().toUpperCase() },
url: '/FQC/FQC007A',
data: { 'itemID': itemID, 'groupID': groupID, 'wipNo':'@Model.WipNo','itemNo':'@Model.ItemNo'},
type: 'POST',
success: function (data) {
if (data.success) {
hg.msg('保存成功!');
parent.hg.msg('儲存成功!');
//重载表格数据
//initQuery(data);
}
else {
//hg.msg(data.msg);
hg.msg(data.msg);
//parent.hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
parent.hg.msg("网络请求失败!");
}
});
});
} else {
hg.msg('请勾選要綁定的檢驗工項,再執行!');
parent.hg.msg('请勾選要綁定的檢驗工項,再執行!');
}
}
});
/**
* 复选框的点击事件
* 主要操作为:
* 将所有的勾选成功的id储存传入后台拉取数据存到本地销售数据库
*/
//var id_checkeds = [];//所有選中的ID
//table.on('checkbox(tableQuery)', function (obj) {
// //console.log(obj.type); //如果触发的是全选,则为:all,如果触发的是单选,则为:one
// //var data = 'one' === obj.type ? [obj.data] : cookiePageArray;
// var is_all = obj.type == 'all' ? true : false ; // 是否全選
// var is_checked = obj.checked; // 是否選中
// if (is_all) {
// if (is_checked) id_checkeds = id_lists;
// if (!is_checked) is_checkeds = [];
// }
// if(!is_all)
// {
// var this_PKID = obj.data.itemID;
// if (!is_checked) {
// id_checkeds.splice($.inArray(this_PKID, id_checkeds), 1);
// }
// if (is_checked) {
// var index = $.inArray(this_PKID, id_checkeds);
// if (index == -1) {
// id_checkeds.push(this_PKID);
// }
// }
// }
// console.log(id_checkeds);
// ////if (obj.type == 'one') {
// ////遍历数据
// //$.each(data, function (index, item) {
// // //假设你数据中 id 是唯一关键字
// // if (obj.checked) {
// // //.增加已选中项
// // layui.data('checked', {
// // key: item.itemID, value: item
// // });
// // } else {
// // //.删除
// // layui.data('checked', {
// // key: item.itemID, remove: true
// // });
// // }
// //});
// //}
//});
});
};
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
initQuery();
});
//监听表单提交事件
////监听表单提交事件
//hg.form.onsubmit('querysubmit', function (data) {
// table && table.reload(data);
//});
var tableCols = [[
{ type: 'checkbox', title:'全選' },
{
@ -235,45 +128,6 @@
},
]
];
var Toolbar = [{
text: '保存',
layuiicon: '&#xe640;',
class: 'layui-btn',
handler: function (obj, row) {
if (obj.checkstatus && obj.checkstatus.data.length > 0) {
console.log(obj.checkstatus.data.map(function (x) { return x.itemID }).join(','))
hg.confirm("確定要綁定有勾選的檢驗工項嗎?", function () {
$.ajax({
url: '/FQC/FQC009C',
data: { 'ids': obj.checkstatus.data.map(function (x) { return x.itemID }).join(','), 'itemNo':'aaa' },
type: 'POST',
success: function (data) {
if (data.success) {
hg.msg('保存成功!');
//重载表格数据
table && table.reload();
}
else {
//hg.msg(data.msg);
hg.msg('保存失败!');
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
} else {
hg.msg('请勾選要綁定的檢驗工項,再執行!');
}
}
}
];
//基本数据表格
//var tableQuery = hg.table.datatable('tableQuery', '檢驗工項', '/FQC/FQC009ItemQuery', {}, tableCols, Toolbar, false, 'full-100', ['filter', 'print', 'exports']);
</script>

9
AMESCoreStudio.Web/Views/FQC/FQC007D.cshtml

@ -1,7 +1,5 @@
@model AMESCoreStudio.WebApi.DTO.AMES.FqcDto
@{ ViewData["Title"] = "FQC文件維護";
@{
Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
<style>
@ -52,6 +50,11 @@
<input type="hidden" asp-for="WipNo">
</div>
</div>
<div class="layui-form-item">
<div style="text-align:center">
<input type="submit" value="保存" class="layui-btn" />
</div>
</div>
</form>
</div>

13
AMESCoreStudio.Web/Views/FQC/FQC009.cshtml

@ -29,7 +29,6 @@
</div>
</div>
<div class="layui-card-body">
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3" id="error"></span>
<table class="layui-hide" id="tableQuery" name="tableQuery" lay-filter="tableQuery"></table>
@ -37,7 +36,7 @@
</div>
<script type="text/html" id="toolbarDemo">
<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>
</script>
@ -50,7 +49,7 @@
<script type="text/javascript">
//搜索
$('#querysubmit').click(function () {
hg.msghide('刷新数据!');
hg.msghide('刷新資料!');
initQuery();
});
@ -107,7 +106,7 @@
}
if ($('#itemNo').val().toUpperCase() != $('#itemNoOld').val()) {
hg.msg('存失敗,原先查詢料號有異動過,請再重新查詢!');
hg.msg('存失敗,原先查詢料號有異動過,請再重新查詢!');
return;
};
@ -120,12 +119,12 @@
var groupID = checkStatus.data.map(function (x) { return x.groupID }).join(',');
hg.confirm("確定要綁定有勾選的檢驗工項嗎?", function () {
$.ajax({
url: '/FQC/FQC009C',
url: '/FQC/FQC009',
data: { 'itemID': itemID, 'groupID': groupID ,'itemNo': $('#itemNo').val().toUpperCase() },
type: 'POST',
success: function (data) {
if (data.success) {
hg.msg('存成功!');
hg.msg('存成功!');
//重载表格数据
//initQuery(data);
}
@ -135,7 +134,7 @@
}
},
error: function () {
hg.msg("网络请求失败!");
hg.msg("網路請求失敗!");
}
});

62
AMESCoreStudio.Web/Views/FQC/FQC009U.cshtml

@ -1,62 +0,0 @@
@model AMESCoreStudio.WebApi.Models.AMES.QcGroup
@{ ViewData["Title"] = "FQC001U";
Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="layui-card">
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="FQC001" class="layui-form">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="GroupID" value="@Model.GroupID" />
<div class="layui-form-item">
<label asp-for="GroupNameCN" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="GroupNameCN" class="layui-input" autocomplete="off" placeholder="請輸入檢驗類別中文" />
<span asp-validation-for="GroupNameCN" class="layui-bg-red"></span>
</div>
</div>
<div class="layui-form-item">
<label asp-for="GroupNameEN" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="GroupNameEN" class="layui-input" placeholder="請輸入檢驗類別英文" />
</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>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
layui.use(['form'], function () {
form = layui.form;
});
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

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

@ -37,12 +37,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
public async Task<ActionResult<FqcResultMaster>> GetFqcResultMaster(int id)
{
var fqcResultMaster = await _context.FqcResultMasters.FindAsync(id);
if (fqcResultMaster == null)
{
return NotFound();
}
return fqcResultMaster;
}

28
AMESCoreStudio.WebApi/Controllers/AMES/QcItemController.cs

@ -54,9 +54,10 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="page">頁數</param>
/// <param name="limit">筆數</param>
/// <param name="itemNo">料號</param>
/// <param name="wipNo">工單號碼</param>
/// <returns></returns>
[HttpGet("QcItemQuery")]
public async Task<ResultModel<QcItemDto>> GetQcItemQuery(int groupID = 0, int page = 0, int limit = 10, string itemNo = null)
public async Task<ResultModel<QcItemDto>> GetQcItemQuery(int groupID = 0, int page = 0, int limit = 10, string itemNo = null, string wipNo = null)
{
IQueryable<QcItem> q = _context.QcItems;
ResultModel<QcItemDto> result = new ResultModel<QcItemDto>();
@ -87,17 +88,32 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
GroupNameEN = s.GetQcGroup.GroupNameEN
}).ToListAsync();
// 有輸入料號跟QCITEM 比對有資料打勾
var itemID = _context.MaterialItems.Where(w => w.ItemNo == itemNo).FirstOrDefault();
if (itemID != null)
// 先判斷工單是否有資料
var wipFqcItem = await _context.WipFqcItems.Where(w => w.WipNo == wipNo).ToListAsync();
if (wipFqcItem.Count != 0)
{
var marterialFQCItems = _context.MaterialFqcItems.Where(w => w.ItemID == itemID.ItemID);
foreach (var item in result.Data)
{
if (marterialFQCItems.Where(w => w.QcItemID == item.ItemID).Any())
if (wipFqcItem.Where(w => w.QcItemID == item.ItemID).Any())
item.check = true;
}
}
else
{
// 有輸入料號跟QCITEM 比對有資料打勾
var itemID = _context.MaterialItems.Where(w => w.ItemNo == itemNo).FirstOrDefault();
if (itemID != null)
{
var marterialFQCItems = _context.MaterialFqcItems.Where(w => w.ItemID == itemID.ItemID);
foreach (var item in result.Data)
{
if (marterialFQCItems.Where(w => w.QcItemID == item.ItemID).Any())
item.check = true;
}
}
}
return result;
}

12
AMESCoreStudio.WebApi/Controllers/AMES/StandardWorkTimesController.cs

@ -174,6 +174,18 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return standardWorkTime;
}
/// <summary>
/// 工單料號查詢
/// </summary>
/// <param name="id">工單料號</param>
/// <returns></returns>
[HttpGet("ByItemNo/{id}")]
public async Task<ActionResult<IEnumerable<StandardWorkTime>>> GetStandardWorkTimeByItemNo(string id)
{
IQueryable<StandardWorkTime> q = _context.StandardWorkTimes.Where(w => w.ItemNo == id.Trim().ToUpper());
return await q.ToListAsync();
}
/// <summary>
///
/// </summary>

11
AMESCoreStudio.WebApi/Controllers/AMES/WipFqcItemController.cs

@ -46,6 +46,17 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return wipFqcItem;
}
/// <summary>
/// 工單號碼查詢綁定檢驗工項
/// </summary>
/// <param name="id">工單號碼</param>
/// <returns></returns>
[HttpGet("ByWipNo/{id}")]
public async Task<ActionResult<IEnumerable<WipFqcItem>>> GetWipFqcItemByWipNo(string id)
{
return await _context.WipFqcItems.Where(w => w.WipNo == id).ToListAsync();
}
/// <summary>
/// 更新工單對應工項資料檔
/// </summary>

6
AMESCoreStudio.WebApi/DTO/AMES/FqcDto.cs

@ -19,6 +19,7 @@ namespace AMESCoreStudio.WebApi.DTO.AMES
{
fqcDetails = new List<FqcDetailDto>();
fqcResultMasterBlobs = new List<Models.AMES.FqcResultMasterBlob>();
qcItemDtos = new List<QcItemDto>();
}
/// <summary>
@ -156,6 +157,11 @@ namespace AMESCoreStudio.WebApi.DTO.AMES
/// </summary>
public List<Models.AMES.FqcResultMasterBlob> fqcResultMasterBlobs { get; set; }
/// <summary>
/// 檢查工項
/// </summary>
public List<QcItemDto> qcItemDtos { get; set; }
public class FqcDetailDto
{
/// <summary>

Loading…
Cancel
Save