vick_wang419@hotmail.com.tw 1 year ago
parent
commit
eb6d17ffff
  1. 351
      AMESCoreStudio.Web/Controllers/FQCController.cs
  2. 187
      AMESCoreStudio.Web/Controllers/LABController.cs
  3. 30
      AMESCoreStudio.Web/Controllers/REPController.cs
  4. 147
      AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs
  5. 113
      AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs
  6. 6
      AMESCoreStudio.Web/Views/FQC/FQC007V.cshtml
  7. 69
      AMESCoreStudio.Web/Views/FQC/FQC008.cshtml
  8. 102
      AMESCoreStudio.Web/Views/LAB/LAB001.cshtml
  9. 64
      AMESCoreStudio.Web/Views/LAB/LAB001C.cshtml
  10. 65
      AMESCoreStudio.Web/Views/LAB/LAB001U.cshtml
  11. 10
      AMESCoreStudio.Web/Views/REP/REP001R.cshtml
  12. 144
      AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseDetailController.cs
  13. 76
      AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseMasterController.cs
  14. 146
      AMESCoreStudio.WebApi/Controllers/AMES/FqcItemController.cs
  15. 196
      AMESCoreStudio.WebApi/Controllers/AMES/FqcItemGroupController.cs
  16. 159
      AMESCoreStudio.WebApi/Controllers/AMES/FqcItemGroupMaterialController.cs
  17. 33
      AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterController.cs
  18. 129
      AMESCoreStudio.WebApi/Controllers/AMES/LabelParamController.cs
  19. 147
      AMESCoreStudio.WebApi/Controllers/AMES/LabelTemplateDetailController.cs
  20. 165
      AMESCoreStudio.WebApi/Controllers/AMES/LabelTemplateMasterController.cs
  21. 14
      AMESCoreStudio.WebApi/Controllers/AMES/MaterialItemController.cs
  22. 43
      AMESCoreStudio.WebApi/Controllers/AMES/QcItemController.cs
  23. 2
      AMESCoreStudio.WebApi/DTO/AMES/FqcResultDto.cs
  24. 40
      AMESCoreStudio.WebApi/Models/AMES/FqcItem.cs
  25. 85
      AMESCoreStudio.WebApi/Models/AMES/LabelParam.cs
  26. 75
      AMESCoreStudio.WebApi/Models/AMES/LabelTemplateDetail.cs
  27. 109
      AMESCoreStudio.WebApi/Models/AMES/LabelTemplateMaster.cs
  28. 24
      AMESCoreStudio.WebApi/Models/AMESContext.cs

351
AMESCoreStudio.Web/Controllers/FQCController.cs

@ -1,23 +1,28 @@
using AMESCoreStudio.CommonTools.Result; using Microsoft.AspNetCore.Mvc;
using AMESCoreStudio.Web.Models; using System.Threading.Tasks;
using AMESCoreStudio.WebApi.DTO.AMES;
using AMESCoreStudio.WebApi.Enum;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.WebApi.Models.BAS;
using AspNetCore.Reporting;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.StaticFiles;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using AMESCoreStudio.Web.Models;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using System; using AMESCoreStudio.WebApi;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using Microsoft.AspNetCore.Mvc.Rendering;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.WebApi.Models.BAS;
using AMESCoreStudio.Web.ViewModels;
using AMESCoreStudio.Web.ViewModels.PCS;
using AMESCoreStudio.WebApi.DTO.AMES;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using AMESCoreStudio.CommonTools.Result;
using System;
using System.IO;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Hosting;
using System.ComponentModel.DataAnnotations;
using AspNetCore.Reporting;
using System.Text.Encodings;
using AMESCoreStudio.WebApi.Enum;
using Microsoft.AspNetCore.StaticFiles;
namespace AMESCoreStudio.Web.Controllers namespace AMESCoreStudio.Web.Controllers
{ {
@ -838,18 +843,11 @@ namespace AMESCoreStudio.Web.Controllers
var result_WipFQC = await _fqcApi.GetWipFqcItemByWipNo(model.WipNo); var result_WipFQC = await _fqcApi.GetWipFqcItemByWipNo(model.WipNo);
if (result_WipFQC.Count == 0) if (result_WipFQC.Count == 0)
{ {
////工單無設定檢驗工項時 在抓料號綁定檢驗工項 //工單無設定檢驗工項時 在抓料號綁定檢驗工項
//var result_MaterialFQC = await _fqcApi.GetMaterialFqcItemsByitemNo(model.ItemNo); var result_MaterialFQC = await _fqcApi.GetMaterialFqcItemsByitemNo(model.ItemNo);
//if (result_MaterialFQC.Count != 0) if (result_MaterialFQC.Count != 0)
//{
// model.qcItemDtos = result_QcItem.Data.Where(w => result_MaterialFQC.Select(s => s.QcItemID).Contains(w.ItemID)).ToList();
//}
// 改抓FQC設定群組內綁定的料號取 FQC設定群組項目
var result_FqcItem = await _fqcApi.GetFqcItemByItemNo(model.ItemNo);
if (result_FqcItem.Count != 0)
{ {
model.qcItemDtos = result_QcItem.Data.Where(w => result_FqcItem.Select(s => s.QcItemId).Contains(w.ItemID)).ToList(); model.qcItemDtos = result_QcItem.Data.Where(w => result_MaterialFQC.Select(s => s.QcItemID).Contains(w.ItemID)).ToList();
} }
} }
else else
@ -983,19 +981,6 @@ namespace AMESCoreStudio.Web.Controllers
return View(model); return View(model);
} }
/// <summary>
/// 確認是否可以開立FQC檢驗單
/// </summary>
/// <param name="inhouseNo">入庫單號碼</param>
/// <param name="seqid">序號</param>
/// <returns></returns>
[HttpPost]
public async Task<JsonResult> CheckFqcIssue(string inhouseNo, int seqID = 0)
{
var result = await _fqcApi.CheckFqcIssue(inhouseNo, seqID);
return Json(new Result() { success = result.Success, msg = result.Msg, data = null });
}
[HttpPost] [HttpPost]
public async Task FQC007AjaxJson(FqcDto model) public async Task FQC007AjaxJson(FqcDto model)
{ {
@ -1408,11 +1393,6 @@ namespace AMESCoreStudio.Web.Controllers
{ {
await _fqcApi.PostSMS_CAR_FQC(JsonConvert.SerializeObject(fqcResultMaster)); await _fqcApi.PostSMS_CAR_FQC(JsonConvert.SerializeObject(fqcResultMaster));
} }
// 執行判斷無序號工單檢驗完成
else if (model.QaResult == "P" && fqcItem.InspectionStatus == "D")
{
await _fqcApi.GetFqcExecuteWithoutWipNoComplete(fqcItem.WipNo);
}
if (!result.Success) if (!result.Success)
{ {
@ -2300,289 +2280,6 @@ namespace AMESCoreStudio.Web.Controllers
} }
#endregion #endregion
#region FQC013 檢驗項目群組名稱維護
public IActionResult FQC013()
{
return View();
}
//新增頁面
public IActionResult FQC013C()
{
return View();
}
//修改页面
[HttpGet]
public async Task<IActionResult> FQC013U(int id)
{
var result = await _fqcApi.GetFqcItemGroups(id);
return View(result);
}
/// <summary>
/// 刪除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<IActionResult> FQC013D(int id)
{
var result = await _fqcApi.DeleteFqcItemGroup(id);
return Json(new Result() { success = result.Success, msg = result.Msg });
}
//頁面提交,id=0 添加,id>0 修改
[HttpPost]
public async Task<IActionResult> FQC013Async(FqcItemGroup model)
{
IResultModel result;
// 判斷是否有重複的群組代號
var checkData = await _fqcApi.GetFqcItemGroupQuery(no: model.ItemGroupNo);
if (checkData.Data.Any(w => w.ItemGroupNo == model.ItemGroupNo))
{
// 新增 群組
if (model.FqcItemGroupId == 0)
{
ModelState.AddModelError("error", "已有建立相同的群組代號,請在確認");
return View("FQC013C", model);
}
// 修改 群組
else if (checkData.Data.Any(w => w.ItemGroupNo == model.ItemGroupNo && w.FqcItemGroupId != model.FqcItemGroupId))
{
ModelState.AddModelError("error", "已有建立相同的群組代號,請在確認");
return View("FQC013U", model);
}
}
if (ModelState.IsValid)
{
if (model.FqcItemGroupId == 0)
{
model.CreateUserID = GetLogInUserID();
result = await _fqcApi.PostFqcItemGroup(JsonConvert.SerializeObject(model));
}
else
{
model.UpdateUserID = GetLogInUserID();
result = await _fqcApi.PutFqcItemGroup(JsonConvert.SerializeObject(model));
}
if (result.Success)
{
var _msg = model.FqcItemGroupId == 0 ? "新增成功!" : "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
if (model.FqcItemGroupId == 0)
{
return View("FQC013C", model);
}
return View("FQC013U", model);
}
/// <summary>
/// FQC檢驗項目群組名稱設定檔 By Query
/// </summary>
/// <param name="no">群組代號</param>
/// <param name="name">群組名稱</param>
/// <param name="desc">群組描述</param>
/// <param name="itemNo">料號</param>
/// <param name="page">頁數</param>
/// <param name="limit">筆數</param>
/// <returns></returns>
[HttpGet]
public async Task<IActionResult> FQC013Query(string no,
string name,
string desc,
string itemNo,
int page = 0,
int limit = 10)
{
var result = await _fqcApi.GetFqcItemGroupQuery(no, name, desc, itemNo, page, limit);
if (result.Data.Count() != 0)
{
return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal });
}
return Json(new Table() { count = 0, data = null });
}
#region FQC013A FQC群組綁設定檢驗工項維護
public async Task<IActionResult> FQC013A(int fqcItemGroupId = 0)
{
var result = await _fqcApi.GetFqcItemGroups(fqcItemGroupId);
if (result != null)
{
ViewBag.GroupNo = result.ItemGroupNo;
ViewBag.GroupName = result.ItemGroupName;
}
ViewBag.GroupId = fqcItemGroupId;
return View();
}
/// <summary>
/// 查詢 FQC檢驗群組綁定工項
/// </summary>
/// <param name="fqcItemGroupId"></param>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <returns></returns>
public async Task<ActionResult> FQC013A_Query(int fqcItemGroupId = 0, int page = 0, int limit = 1)
{
var result = await _fqcApi.GetQcItemQuery(0, 0, limit, fqcItemGroupId: fqcItemGroupId);
return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal });
}
[HttpPost]
public async Task<IActionResult> FQC013A_Submit(string itemID, string groupID, int fqcItemGroupId)
{
// 取料號綁定檢驗工項
var result_FqcItem = await _fqcApi.GetFqcItemByFqcGroupId(fqcItemGroupId);
// 有勾選的ItemID
var checkItemID = itemID.Split(',').ToList();
// 有勾選的GroupID
var checkGroupID = groupID.Split(',').ToList();
// 取勾選有的 = 新增
var insertItemID = checkItemID.Except(result_FqcItem.Select(s => s.QcItemId.ToString()));
for (int i = 0; i < checkItemID.Count; i++)
{
if (insertItemID.Where(w => w == checkItemID[i]).Any())
{
FqcItem FqcItem = new FqcItem
{
GroupId = fqcItemGroupId,
QcItemId = Int32.Parse(checkItemID[i]),
QcGroupId = Int32.Parse(checkGroupID[i]),
CreateUserID = GetLogInUserID(),
CreateDate = DateTime.Now,
UpdateUserID = GetLogInUserID(),
UpdateDate = DateTime.Now
};
await _fqcApi.PostFqcItem(JsonConvert.SerializeObject(FqcItem));
}
}
// 取有料號綁定 = 需要刪除
var deteleItemID = result_FqcItem.Select(s => s.QcItemId.ToString()).Except(checkItemID);
foreach (var item in deteleItemID)
{
var FqcItemId = result_FqcItem.Where(w => w.QcItemId == Int32.Parse(item)).FirstOrDefault().FqcItemId;
await _fqcApi.DeleteFqcItem(FqcItemId);
}
return Json(new { code = 0, msg = "", success = true });
}
#endregion
#region FQC013B FQC群組綁定料號
public async Task<IActionResult> FQC013B(int groupId = 0)
{
var result = await _fqcApi.GetFqcItemGroups(groupId);
if (result != null)
{
ViewBag.GroupNo = result.ItemGroupNo;
ViewBag.GroupName = result.ItemGroupName;
}
ViewBag.GroupId = groupId;
return View();
}
/// <summary>
/// 查詢 FQC檢驗群組綁定工項
/// </summary>
/// <param name="fqcItemGroupId"></param>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <returns></returns>
public async Task<ActionResult> FQC013B_Query(int groupId)
{
var result = await _fqcApi.GetFqcItemGroupMaterialByGroupId(groupId);
return Json(new Table() { code = 0, msg = "", data = result, count = result.Count() });
}
/// <summary>
/// 新增料號
/// </summary>
/// <param name="groupId">群組ID</param>
/// <param name="materialNo">料號</param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> FQC013B_addMaterial(int groupId, string materialNo)
{
var msg = string.Empty;
var result = await _fqcApi.GetMaterialItemByItemNO(materialNo);
if (result == null)
{
msg = $"在料號主檔找不到該筆料號【{materialNo}】";
return Json(new { code = 0, msg, success = false });
}
else
{
var check = await _fqcApi.GetFqcItemGroupMaterialByItemId(result.ItemID);
if (check.Any())
{
msg = $"該筆料號【{materialNo}】已有在群組綁定了,請在確認";
return Json(new { code = 0, msg, success = false });
}
}
var model = new FqcItemGroupMaterial
{
GroupId = groupId,
ItemId = result.ItemID,
CreateUserID = GetLogInUserID(),
CreateDate = DateTime.Now,
UpdateUserID = GetLogInUserID(),
UpdateDate = DateTime.Now
};
await _fqcApi.PostFqcItemGroupMaterial(JsonConvert.SerializeObject(model));
return Json(new { code = 0, msg = "綁定成功", success = true });
}
/// <summary>
/// FQC檢驗群組刪除綁定料號
/// </summary>
/// <param name="groupId">FQC檢驗群組ID</param>
/// <param name="itemId">料號ID</param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> FQC013B_Delete(int groupId, int itemId)
{
// 取料號綁定檢驗工項
var result = await _fqcApi.DeleteFqcItemGroupMaterial(groupId, itemId);
if (result == 1)
return Json(new { code = 0, msg = "", success = true });
else
return Json(new { code = 0, msg = "", success = false });
}
/// <summary>
/// 回傳PLM料號品名_AutoComplete
/// </summary>
/// <param name="search"></param>
/// <returns></returns>
[HttpPost]
public async Task<JsonResult> GetMeterialItemAutoComplete(string search)
{
var result = await _fqcApi.GetMeterialAutoComplete(search);
return Json(new { data = result });
}
#endregion
#endregion
/// <summary> /// <summary>
/// 登入UserID /// 登入UserID
/// </summary> /// </summary>

187
AMESCoreStudio.Web/Controllers/LABController.cs

@ -0,0 +1,187 @@
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using AMESCoreStudio.CommonTools.Result;
using Microsoft.AspNetCore.Hosting;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using AMESCoreStudio.Web.Models;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc.Rendering;
using System.Linq;
using AMESCoreStudio.WebApi.Models;
using System;
using System.Data;
using AMESCoreStudio.Web.ViewModels;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.WebApi.DTO.AMES;
namespace AMESCoreStudio.Web.Controllers
{
public class LABController : Controller
{
private readonly ILogger<LABController> _logger;
public readonly IREP _repApi;
public readonly IPPS _ppsApi;
public readonly IBAS _basApi;
public readonly IPCS _pcsApi;
public readonly ISYS _sysApi;
public readonly IKCS _kcsApi;
public readonly IQRS _qrsApi;
public readonly ILAB _labApi;
private readonly IWebHostEnvironment _env;
public LABController(ILogger<LABController> logger, IREP repApi, IPPS ppsApi, IBAS basApi, IPCS pcsApi, ISYS sysApi, IKCS kcsApi, IWebHostEnvironment env, IQRS qrsApi, IESUN esunApi, ILAB labApi)
{
_logger = logger;
_repApi = repApi;
_ppsApi = ppsApi;
_basApi = basApi;
_pcsApi = pcsApi;
_sysApi = sysApi;
_kcsApi = kcsApi;
_qrsApi = qrsApi;
_labApi = labApi;
_env = env;
}
private void GetFlagList()
{
var FlagList = new List<SelectListItem>();
FlagList.Add(new SelectListItem("Y", "Y"));
FlagList.Add(new SelectListItem("N", "N"));
ViewBag.FlagList = FlagList;
}
public void GetUserID()
{
var userID = "";
HttpContext.Request.Cookies.TryGetValue("UserID", out userID);
int user_id = 0;
if (userID != null)
{
if (int.Parse(userID.ToString()) >= 0)
{
user_id = int.Parse(userID.ToString());
}
}
ViewBag.UserID = user_id;
}
#region LAB001工作群組維護相關
public IActionResult LAB001()
{
return View();
}
//新增頁面
public IActionResult LAB001C()
{
GetFlagList();
return View();
}
//修改页面
[HttpGet]
public async Task<IActionResult> LAB001U(int id)
{
GetFlagList();
var result = await _labApi.GetLabelParam(id);
if (result.LabelFieldID == 0)
{
return View();
}
return View(result);
}
//頁面提交,id=0 添加,id>0 修改
[HttpPost]
public async Task<IActionResult> LAB001CSaveAsync(LabelParam model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _labApi.PostLabelParam(JsonConvert.SerializeObject(model));
if (result.Success) //yiru modify 2022-09-27
{
var _msg = "添加成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
return View("LAB001C", model);
}
public async Task<IActionResult> LAB001USaveAsync(LabelParam model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _labApi.PutLabelParam(model.LabelFieldID, JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
return View("LAB001U", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetLabParamsAsync()
{
var result = await _labApi.GetLabParams();
if (result.Count > 0)
{
return Json(new Table() { code = 0, msg = "", data = result, count = result.Count });
}
return Json(new Table() { count = 0, data = null });
}
#endregion
}
}

30
AMESCoreStudio.Web/Controllers/REPController.cs

@ -533,6 +533,16 @@ namespace AMESCoreStudio.Web.Controllers
} }
} }
if (old_part_no == "" || old_part_no == null)
{
return Json(new { _msg = "舊組件序號不可為空" });
}
if (new_part_no == "" || new_part_no == null)
{
return Json(new { _msg = "新組件序號不可為空" });
}
NgKeypart model = new NgKeypart(); NgKeypart model = new NgKeypart();
model.ComponentID = component_id; model.ComponentID = component_id;
model.OldPartNo = old_part_no; model.OldPartNo = old_part_no;
@ -562,6 +572,16 @@ namespace AMESCoreStudio.Web.Controllers
} }
} }
if (old_part_no == "")
{
return Json(new { _msg = "舊組件序號不可為空" });
}
if (new_part_no == "")
{
return Json(new { _msg = "新組件序號不可為空" });
}
NgKeypart ng_key_part = new NgKeypart(); NgKeypart ng_key_part = new NgKeypart();
ng_key_part.ComponentID = component_id; ng_key_part.ComponentID = component_id;
ng_key_part.OldPartNo = old_part_no; ng_key_part.OldPartNo = old_part_no;
@ -944,17 +964,19 @@ namespace AMESCoreStudio.Web.Controllers
} }
} }
var ng_keypart = await _repApi.GetNgKeyparts(model.ngComponent.ComponentID);
List<BarCodeCheckDto.inputItem> items = new List<BarCodeCheckDto.inputItem>(); List<BarCodeCheckDto.inputItem> items = new List<BarCodeCheckDto.inputItem>();
//判斷組件是否更換 //判斷組件是否更換
for (int i = 0; i < ng_component.Count; i++) for (int i = 0; i < ng_keypart.Count; i++)
{ {
if (ng_component[i].NewPartNo != "" && ng_component[i].NewPartNo != null) if (ng_keypart[i].NewPartNo != "" && ng_keypart[i].NewPartNo != null)
{ {
items.Add(new BarCodeCheckDto.inputItem items.Add(new BarCodeCheckDto.inputItem
{ {
inputType = "KP", inputType = "KP",
inputData = ng_component[i].NewPartNo, inputData = ng_keypart[i].NewPartNo,
oldInputData = ng_component[i].OldPartNo oldInputData = ng_keypart[i].OldPartNo
}); });
} }
} }

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

@ -81,10 +81,9 @@ namespace AMESCoreStudio.Web
/// <param name="limit">比數</param> /// <param name="limit">比數</param>
/// <param name="itemNo">料號</param> /// <param name="itemNo">料號</param>
/// <param name="wipNo">工單號碼</param> /// <param name="wipNo">工單號碼</param>
/// <param name="fqcItemGroupId">FQC檢驗設定群組</param>
/// <returns></returns> /// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/QcItem/QcItemQuery")] [WebApiClient.Attributes.HttpGet("api/QcItem/QcItemQuery")]
ITask<ResultModel<QcItemDto>> GetQcItemQuery(int groupID, int page, int limit, string itemNo = null, string wipNo = null ,int fqcItemGroupId = 0) ; ITask<ResultModel<QcItemDto>> GetQcItemQuery(int groupID, int page, int limit, string itemNo = null, string wipNo = null);
/// <summary> /// <summary>
/// 查詢檢驗項目維護 ID /// 查詢檢驗項目維護 ID
@ -463,13 +462,6 @@ namespace AMESCoreStudio.Web
[WebApiClient.Attributes.HttpDelete("api/WipFqcItem/{id}")] [WebApiClient.Attributes.HttpDelete("api/WipFqcItem/{id}")]
ITask<ResultModel<string>> DeleteWipFqcItem(int id); ITask<ResultModel<string>> DeleteWipFqcItem(int id);
/// <summary>
/// FqcItem 查詢料號對應設定群組綁定檢驗工項
/// </summary>
/// <param name="id">料號</param>
[WebApiClient.Attributes.HttpGet("api/FqcItem/ByItemNo/{id}")]
ITask<List<FqcItem>> GetFqcItemByItemNo(string id);
/// <summary> /// <summary>
/// FQC抽驗過站 /// FQC抽驗過站
/// </summary> /// </summary>
@ -534,22 +526,6 @@ namespace AMESCoreStudio.Web
[WebApiClient.Attributes.HttpDelete("api/FqcResultMasterBlob/ByFileName")] [WebApiClient.Attributes.HttpDelete("api/FqcResultMasterBlob/ByFileName")]
ITask<ResultModel<FqcResultMasterBlob>> DeleteFqcResultMasterBlob(int fqcId, string fileName); ITask<ResultModel<FqcResultMasterBlob>> DeleteFqcResultMasterBlob(int fqcId, string fileName);
/// <summary>
/// 執行判斷無序號工單檢驗完成
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/FqcResultMaster/ExecuteWithoutWipNoComplete/{id}")]
ITask<string> GetFqcExecuteWithoutWipNoComplete(string id);
/// <summary>
/// 確認FQC抽驗時,箱號是否已經跑到FQC流程
/// </summary>
/// <param name="inhouseNo">入庫單號</param>
/// <param name="seqID">順序</param>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/FqcInhouseMaster/CheckFqcIssue")]
ITask<ResultModel<string>> CheckFqcIssue(string inhouseNo, int seqID);
#endregion #endregion
#region FQC008 FQC查詢 #region FQC008 FQC查詢
@ -651,7 +627,7 @@ namespace AMESCoreStudio.Web
/// <returns></returns> /// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/FqcInhouseMaster/{no}/{seq}")] [WebApiClient.Attributes.HttpDelete("api/FqcInhouseMaster/{no}/{seq}")]
ITask<ResultModel<string>> DeleteFqcInhouseMaster(string no, int seq); ITask<ResultModel<string>> DeleteFqcInhouseMaster(string no, int seq);
/// <summary> /// <summary>
/// 刪除FQC 表身 /// 刪除FQC 表身
@ -661,124 +637,5 @@ namespace AMESCoreStudio.Web
ITask<ResultModel<string>> DeleteFqcInhouseDetail(string no, int seq); ITask<ResultModel<string>> DeleteFqcInhouseDetail(string no, int seq);
#endregion #endregion
#region FQC013 檢驗項目群組相關維護
/// <summary>
/// FqcItem 新增檢驗項目群組綁定設定檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/FqcItem")]
ITask<ResultModel<FqcItem>> PostFqcItem([FromBody, RawJsonContent] string model);
/// <summary>
/// FqcItem 更新檢驗項目群組綁定設定檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/FqcItem")]
ITask<ResultModel<FqcItem>> PutFqcItem([FromBody, RawJsonContent] string model);
/// <summary>
/// FqcItem 刪除檢驗項目群組綁定設定檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/FqcItem/{id}")]
ITask<ResultModel<string>> DeleteFqcItem(int id);
/// <summary>
/// FqcItem 查詢 ByFqcGroupId
/// </summary>
/// <param name="id">FqcGroupId</param>
[WebApiClient.Attributes.HttpGet("api/FqcItem/ByFqcGroupId/{id}")]
ITask<List<FqcItem>> GetFqcItemByFqcGroupId(int id);
/// <summary>
/// FqcItemGroup 查詢FQC檢驗項目群組名稱設定檔 By ID
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/FqcItemGroup/{id}")]
ITask<FqcItemGroup> GetFqcItemGroups(int id);
/// <summary>
/// FqcItemGroup 新增FQC檢驗項目群組名稱設定檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/FqcItemGroup")]
ITask<ResultModel<FqcItemGroup>> PostFqcItemGroup([FromBody, RawJsonContent] string model);
/// <summary>
/// FqcItemGroup 更新FQC檢驗項目群組名稱設定檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/FqcItemGroup")]
ITask<ResultModel<FqcItemGroup>> PutFqcItemGroup([FromBody, RawJsonContent] string model);
/// <summary>
/// FqcItemGroup 刪除FQC檢驗項目群組名稱設定檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/FqcItemGroup/{id}")]
ITask<ResultModel<string>> DeleteFqcItemGroup(int id);
/// <summary>
/// FQC檢驗項目群組名稱設定檔 By Query
/// </summary>
/// <param name="no">群組代號</param>
/// <param name="name">群組名稱</param>
/// <param name="desc">群組描述</param>
/// <param name="itemNo">料號</param>
/// <param name="page">頁數</param>
/// <param name="limit">筆數</param>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/FqcItemGroup/FqcItemGroupQuery")]
ITask<ResultModel<FqcItemGroup>> GetFqcItemGroupQuery(string no = null,
string name = null,
string desc = null,
string itemNo = null,
int page = 0,
int limit = 10);
/// <summary>
/// 新增 檢驗群組指定料號設定檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/FqcItemGroupMaterial")]
ITask<ResultModel<FqcItemGroupMaterial>> PostFqcItemGroupMaterial([FromBody, RawJsonContent] string model);
/// <summary>
/// 更新 檢驗群組指定料號設定檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/FqcItemGroupMaterial")]
ITask<ResultModel<FqcItemGroupMaterial>> PutFqcItemGroupMaterial([FromBody, RawJsonContent] string model);
/// <summary>
/// FqcItemGroupMaterial 查詢檢驗群組指定料號設定檔 By GroupId
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/FqcItemGroupMaterial/ByGroupId/{id}")]
ITask<List<FqcItemGroupMaterial>> GetFqcItemGroupMaterialByGroupId(int id);
/// <summary>
/// FqcItemGroupMaterial 查詢檢驗群組指定料號設定檔 By ItemId
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/FqcItemGroupMaterial/ByItemId/{id}")]
ITask<List<FqcItemGroupMaterial>> GetFqcItemGroupMaterialByItemId(int id);
/// <summary>
/// 刪除 檢驗群組指定料號設定檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/FqcItemGroupMaterial/{id}/{id1}")]
ITask<int> DeleteFqcItemGroupMaterial(int id, int id1);
/// <summary>
/// 查詢料號_AutoComplete
/// </summary>
/// <param name="id">料號</param>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/MaterialItem/AutoComplete/{id}")]
ITask<List<MaterialItem>> GetMeterialAutoComplete(string id);
#endregion
} }
} }

113
AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs

@ -0,0 +1,113 @@
using System.Collections.Generic;
using WebApiClient;
using WebApiClient.Attributes;
using AMESCoreStudio.WebApi;
using Microsoft.AspNetCore.Mvc;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.WebApi.Models.BAS;
using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.WebApi.DTO.AMES;
namespace AMESCoreStudio.Web
{
[JsonReturn]
public interface ILAB: IHttpApi
{
/// <summary>
/// Label 參數查詢by ID
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/LabelParam/{id}")]
ITask<LabelParam> GetLabelParam(int id);
/// <summary>
/// Label 參數儲存
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/LabelParam")]
ITask<ResultModel<LabelParam>> PostLabelParam([FromBody, RawJsonContent] string model);
/// <summary>
/// Label 參數修改
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/LabelParam")]
ITask<ResultModel<LabelParam>> PutLabelParam(int id, [FromBody, RawJsonContent] string model);
/// <summary>
/// 獲取Label 全部參數資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/LabelParam")]
ITask<List<LabelParam>> GetLabParams();
/// <summary>
/// Label 參數儲存
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/LabelTemplateMaster")]
ITask<ResultModel<LabelTemplateMaster>> PostLabelTemplateMaster([FromBody, RawJsonContent] string model);
/// <summary>
/// Label 參數修改
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/LabelTemplateMaster")]
ITask<ResultModel<LabelTemplateMaster>> PutLabeTemplateMaster(int id, [FromBody, RawJsonContent] string model);
/// <summary>
/// Label 參數儲存
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/LabelTemplatDetail")]
ITask<ResultModel<LabelTemplateDetail>> PostLabelTemplateDetail([FromBody, RawJsonContent] string model);
/// <summary>
/// Label 參數修改
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/LabelTemplateDetail")]
ITask<ResultModel<LabelTemplateDetail>> PutLabeTemplateDetail(int id, [FromBody, RawJsonContent] string model);
/// <summary>
/// Label 參數查詢by ID
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/LabelTemplateMaster/{id}")]
ITask<LabelTemplateMaster> GetLabelTemplateMaster(int id);
/// <summary>
/// Label 參數查詢by ID
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/LabelTemplateDetail/{id}")]
ITask<List<LabelTemplateDetail>> GetLabelTemplateDetail(int id);
/// <summary>
/// 獲取Label 全部參數資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/LabelTemplateMaster/LabelTemplatebyMatnr/{LabelMatnr}/{Status}")]
ITask<List<LabelTemplateMaster>> GetLabelTemplateDto(string LabelMatnr, string Status, int page , int limit );
/// <summary>
/// 獲取Label 全部參數資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/LabelTemplateDetail/byTemplateIDMulti/{id}")]
ITask<List<dynamic>> GetLabelTemplatebyMatnr(int id);
}
}

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

@ -59,11 +59,11 @@
title: '', title: '',
fixed: 'right', fixed: 'right',
templet: function (d) { templet: function (d) {
if (d.statusNo !== null) { if (d.statusNo.length === 0) {
return '<a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">刪除</a>'; return '<a></a>';
} }
else { else {
return '<a></a>' return '<a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>';
} }
} }
}] }]

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

@ -7,27 +7,27 @@
/*.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 {
max-width: 60px; max-width: 60px;
max-height: 28px; max-height: 28px;
} }
.layui-tree-main { .layui-tree-main {
cursor: pointer; cursor: pointer;
padding-right: 10px; padding-right: 10px;
float: left; float: left;
border-width: 1px; border-width: 1px;
border-style: solid; border-style: solid;
border-color: #e6e6e6; border-color: #e6e6e6;
margin: 10px 0; margin: 10px 0;
} }
.layui-table-cell { .layui-table-cell {
height: auto; height: auto;
white-space: normal; white-space: normal;
}*/ }*/
</style> </style>
@ -254,7 +254,7 @@
} }
else { else {
aa = '<a class="layui-btn layui-btn-warm layui-icon layui-icon-list layui-btn-xs" lay-event="edit">檢視</a>\ aa = '<a class="layui-btn layui-btn-warm layui-icon layui-icon-list layui-btn-xs" lay-event="edit">檢視</a>\
<a class="layui-btn layui-btn-xs" lay-event="PDF">PDF</a> <a class="layui-btn layui-btn-xs" lay-event="Excel">Excel</a>' <a class="layui-btn layui-btn-xs" lay-event="PDF">PDF</a> <a class="layui-btn layui-btn-xs" lay-event="Excel">Excel</a>'
} }
return aa; return aa;
} }
@ -273,31 +273,14 @@
//通过行tool编辑,lay-event="edit" //通过行tool编辑,lay-event="edit"
function edit(obj) { function edit(obj) {
$.ajax({ if (obj.data.inhouseNo) {
url: "@Url.Action("CheckFqcIssue", "FQC")", hg.open('FQC抽驗作業', '/FQC/FQC007?inhouseNo=' + obj.data.inhouseNo + '&seqID=' + obj.data.seqID, '', '', true);
type: "POST",
data: { "inhouseNo": obj.data.inhouseNo, "seqID": obj.data.seqID },
success: function (result) {
if (result.success) {
if (obj.data.inhouseNo) {
hg.open('FQC抽驗作業', '/FQC/FQC007?inhouseNo=' + obj.data.inhouseNo + '&seqID=' + obj.data.seqID, '', '', true);
var tempwindow = window.open('_blank'); // 先打開頁面
tempwindow.location = 'https://sms.avalue.com.tw/SMS/SUP/SFIS_SMS001.aspx?MODEL_NO=' + obj.data.modelNo;
var tempwindow1 = window.open('_blank'); // 先打開頁面
tempwindow1.location = 'http://qazone.avalue.com.tw/qazone/sfislinktocfqr.aspx?QF=2&QA_PRDID=' + obj.data.itemNo;
}
}
else {
parent.hg.msg(result.msg);
}
},
error: function (result) {
alert(`開啟FQC失敗,請聯繫系統管理員`);
}
});
var tempwindow = window.open('_blank'); // 先打開頁面
tempwindow.location = 'https://sms.avalue.com.tw/SMS/SUP/SFIS_SMS001.aspx?MODEL_NO=' + obj.data.modelNo;
var tempwindow1 = window.open('_blank'); // 先打開頁面
tempwindow1.location = 'http://qazone.avalue.com.tw/qazone/sfislinktocfqr.aspx?QF=2&QA_PRDID=' + obj.data.itemNo;
}
} }
function PDF(obj) { function PDF(obj) {

102
AMESCoreStudio.Web/Views/LAB/LAB001.cshtml

@ -0,0 +1,102 @@
@{
ViewData["Title"] = "Label 需填寫欄位維護";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<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>
</div>
</div>
<div class="layui-card-body">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
field: 'labelFieldID',
width: 200,
title: '#'
},
{
field: 'labelFieldName',
title: '標籤欄位名稱'
},
{
field: 'paramName',
title: '標籤變數名稱'
},
{
field: 'statusNo',
title: '狀態',
templet: function (d) {
return d.statusNo === 'Y' ? '啟用' : '停用';
}
},
{
field: 'right',
width: 200,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a>'
}
}]
];
//通过行tool编辑,lay-event="edit"
function edit(obj) {
if (obj.data.labelFieldID) {
hg.open('修改參數名稱', '/LAB/LAB001U/' + obj.data.labelFieldID, 640,320);
}
}
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.groupID) {
hg.confirm("工作群組:" + obj.data.groupName + ",确定要删除吗?", function () {
$.ajax({
url: '/WHS/WHS001D',
data: { id: obj.data.groupID },
type: 'POST',
success: function (data) {
if (data.success) {
obj.del(); //只删本地数据
hg.msghide("删除成功!");
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
}
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增工作群組', '/LAB/LAB001C', 640, 320);
}
}
];
//基本数据表格
var table = hg.table.datatable('test', 'Label 需填寫欄位', '/LAB/GetLabParams', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
</script>
}

64
AMESCoreStudio.Web/Views/LAB/LAB001C.cshtml

@ -0,0 +1,64 @@
@model AMESCoreStudio.WebApi.Models.AMES.LabelParam
@{ ViewData["Title"] = "WHS001C";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="LAB001CSave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="LabelFieldName" class="control-label col-sm-3"></label>
<input asp-for="LabelFieldName" class="form-control col-sm-9" placeholder="請輸入欄位名稱" />
<span asp-validation-for="LabelFieldName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ParamName" class="control-label col-sm-3"></label>
<input asp-for="ParamName" class="form-control col-sm-9" placeholder="請輸入變數名稱" />
<span asp-validation-for="ParamName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="StatusNo" class="control-label col-sm-3"></label>
<label class="layui-form-label" style="margin-right: 10px;">
<input type="radio" asp-for="StatusNo" value="Y" checked>
啟用
</label>
<label class="layui-form-label">
<input type="radio" asp-for="StatusNo" value="N">
停用
</label>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="儲存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

65
AMESCoreStudio.Web/Views/LAB/LAB001U.cshtml

@ -0,0 +1,65 @@
@model AMESCoreStudio.WebApi.Models.AMES.LabelParam
@{ ViewData["Title"] = "LAB001U";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="LAB001USave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="LabelFieldID" />
<div class="form-group form-inline my-sm-1">
<label asp-for="LabelFieldName" class="control-label col-sm-3"></label>
<input asp-for="LabelFieldName" class="form-control col-sm-9" readonly="readonly" />
<span asp-validation-for="LabelFieldName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ParamName" class="control-label col-sm-3"></label>
<input asp-for="ParamName" class="form-control col-sm-9" readonly="readonly" />
<span asp-validation-for="ParamName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="StatusNo" class="control-label col-sm-3"></label>
<label class="layui-form-label" style="margin-right: 10px;">
<input type="radio" asp-for="StatusNo" value="Y">
啟用
</label>
<label class="layui-form-label">
<input type="radio" asp-for="StatusNo" value="N">
停用
</label>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="儲存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

10
AMESCoreStudio.Web/Views/REP/REP001R.cshtml

@ -658,6 +658,16 @@
var old_part_no = $('#txtOldPartNo').val(); var old_part_no = $('#txtOldPartNo').val();
var new_part_no = $('#txtNewPartNo').val(); var new_part_no = $('#txtNewPartNo').val();
if (old_part_no == "" || old_part_no == null) {
alert("舊組件序號不可為空");
return;
}
if (new_part_no == "" || new_part_no == null) {
alert("新組件序號不可為空");
return;
}
$.ajax({ $.ajax({
url: '@Url.Action("SaveNgKeypart", "REP")', url: '@Url.Action("SaveNgKeypart", "REP")',
dataType: 'json', dataType: 'json',

144
AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseDetailController.cs

@ -1,14 +1,16 @@
using AMESCoreStudio.CommonTools.Result; using System;
using AMESCoreStudio.WebApi.DTO.AMES;
using AMESCoreStudio.WebApi.Extensions;
using AMESCoreStudio.WebApi.Models.AMES;
using Dapper;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.WebApi.DTO.AMES;
using Dapper;
using AMESCoreStudio.WebApi.Extensions;
namespace AMESCoreStudio.WebApi.Controllers.AMES namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
@ -70,33 +72,32 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
ResultModel<FqcResultDto> result = new ResultModel<FqcResultDto>(); ResultModel<FqcResultDto> result = new ResultModel<FqcResultDto>();
var fqcResultDto = new List<FqcResultDto>(); var fqcResultDto = new List<FqcResultDto>();
var querySql = @" SELECT DISTINCT SERIAL_NO AS BoxNo , BARCODE_NO AS BarcodeNo , EXTRA_BARCODE_NO AS ExtraBarcodeNo var FqcInhouseDetails = await _context.FqcInhouseDetails.Where(w => w.SerialNo == boxNo && w.InhouseNo == inhouseNo
FROM ( && w.SeqID == seqID).FirstOrDefaultAsync();
SELECT A.BARCODE_NO , A.EXTRA_BARCODE_NO , B.SERIAL_NO ,B.INHOUSE_NO
FROM JHAMES.BARCODE_INFO A , JHAMES.FQC_INHOUSE_DETAIL B
WHERE B.SERIAL_NO = A.BOX_NO
AND B.INHOUSE_NO = :InhouseNo
AND B.SEQ_ID = :SeqId
AND B.BARCODE_NO = '0'
UNION ALL
SELECT BARCODE_NO , EXTRA_BARCODE_NO , SERIAL_NO ,INHOUSE_NO
FROM JHAMES.FQC_INHOUSE_DETAIL
WHERE INHOUSE_NO = :InhouseNo
AND SEQ_ID = :SeqId
AND BARCODE_NO <> '0')
WHERE SERIAL_NO=:BoxNo ";
DynamicParameters p = new DynamicParameters();
p.Add("InhouseNo", inhouseNo);
p.Add("SeqId", seqID);
p.Add("BoxNo", boxNo);
fqcResultDto = _context.Database.DapperQuery<FqcResultDto>(querySql, p).ToList();
// 取FQC_ID // 取FQC_ID
if (fqcResultDto.Any()) if (FqcInhouseDetails != null)
{ {
var FqcResultMaster = await _context.FqcResultMasters.Where(w => w.InhouseNo == inhouseNo var BarcodeInfo = new List<BarcodeInfo>();
&& w.SeqID == seqID) if (FqcInhouseDetails.SerialType == "B")
BarcodeInfo = await _context.BarcodeInfoes.Where(w => w.BoxNo == FqcInhouseDetails.SerialNo).ToListAsync();
else
BarcodeInfo = await _context.BarcodeInfoes.Where(w => w.BarcodeNo == FqcInhouseDetails.SerialNo).ToListAsync();
// 先塞入資料
foreach (var item in BarcodeInfo)
{
fqcResultDto.Add(new FqcResultDto
{
BarcodeNo = item.BarcodeNo,
ExtraBarcodeNo = item.ExtraBarcodeNo,
BoxNo = item.BoxNo,
StatusNo = ""
});
}
var FqcResultMaster = await _context.FqcResultMasters.Where(w => w.InhouseNo == FqcInhouseDetails.InhouseNo
&& w.SeqID == FqcInhouseDetails.SeqID)
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();
// 取抽驗結果 // 取抽驗結果
if (FqcResultMaster != null) if (FqcResultMaster != null)
@ -109,7 +110,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
if (item.BarcodeNo == item2.BarcodeNo) if (item.BarcodeNo == item2.BarcodeNo)
{ {
item2.StatusNo = item.StatusNo == "P" ? "PASS" : "NG"; item2.StatusNo = item.StatusNo;
item2.NgReasonNo = item.NgReasonNo; item2.NgReasonNo = item.NgReasonNo;
item2.NgReasonDesc = NgReasons.Where(w => w.NGReasonNo == item.NgReasonNo).FirstOrDefault() == null ? "" : NgReasons.Where(w => w.NGReasonNo == item.NgReasonNo).FirstOrDefault().NGReasonDesc; item2.NgReasonDesc = NgReasons.Where(w => w.NGReasonNo == item.NgReasonNo).FirstOrDefault() == null ? "" : NgReasons.Where(w => w.NGReasonNo == item.NgReasonNo).FirstOrDefault().NGReasonDesc;
item2.NgMemo = item.NgMemo; item2.NgMemo = item.NgMemo;
@ -144,51 +145,54 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
ResultModel<FqcResultDto> result = new ResultModel<FqcResultDto>(); ResultModel<FqcResultDto> result = new ResultModel<FqcResultDto>();
var fqcResultDto = new List<FqcResultDto>(); var fqcResultDto = new List<FqcResultDto>();
var querySql = @" SELECT DISTINCT SERIAL_NO AS BoxNo , BARCODE_NO AS BarcodeNo , EXTRA_BARCODE_NO AS ExtraBarcodeNo var FqcInhouseDetails = await _context.FqcInhouseDetails.Where(w => w.InhouseNo == inhouseNo
FROM ( && w.SeqID == seqID).ToListAsync();
SELECT A.BARCODE_NO , A.EXTRA_BARCODE_NO , B.SERIAL_NO ,B.INHOUSE_NO
FROM JHAMES.BARCODE_INFO A , JHAMES.FQC_INHOUSE_DETAIL B
WHERE B.SERIAL_NO = A.BOX_NO
AND B.INHOUSE_NO = :InhouseNo
AND B.SEQ_ID = :SeqId
AND B.BARCODE_NO = '0'
UNION ALL
SELECT BARCODE_NO , EXTRA_BARCODE_NO , SERIAL_NO ,INHOUSE_NO
FROM JHAMES.FQC_INHOUSE_DETAIL
WHERE INHOUSE_NO = :InhouseNo
AND SEQ_ID = :SeqId
AND BARCODE_NO <> '0') ";
DynamicParameters p = new DynamicParameters();
p.Add("InhouseNo", inhouseNo);
p.Add("SeqId", seqID);
fqcResultDto = _context.Database.DapperQuery<FqcResultDto>(querySql, p).ToList();
// 取FQC_ID // 取FQC_ID
if (fqcResultDto.Any()) if (FqcInhouseDetails.Count != 0)
{ {
var FqcResultMaster = await _context.FqcResultMasters.Where(w => w.InhouseNo == inhouseNo foreach (var item in FqcInhouseDetails)
&& w.SeqID == seqID)
.FirstOrDefaultAsync();
if (FqcResultMaster != null)
{ {
var BarcodeInfo = new List<BarcodeInfo>();
if (item.SerialType == "B")
BarcodeInfo = await _context.BarcodeInfoes.Where(w => w.BoxNo == item.SerialNo).ToListAsync();
else
BarcodeInfo = await _context.BarcodeInfoes.Where(w => w.BarcodeNo == item.SerialNo).ToListAsync();
// 先塞入資料
foreach (var item1 in BarcodeInfo)
{
fqcResultDto.Add(new FqcResultDto
{
BarcodeNo = item1.BarcodeNo,
ExtraBarcodeNo = item1.ExtraBarcodeNo,
BoxNo = item1.BoxNo,
StatusNo = ""
});
}
var FqcResultMaster = await _context.FqcResultMasters.Where(w => w.InhouseNo == item.InhouseNo
&& w.SeqID == item.SeqID)
.FirstOrDefaultAsync();
var NgReasons = await _context.NGReasons.ToListAsync(); var NgReasons = await _context.NGReasons.ToListAsync();
var FqcResultDetail = await _context.FqcResultDetails.Where(w => w.FqcID == FqcResultMaster.FqcID).ToListAsync();
foreach (var item in fqcResultDto) // 取抽驗結果
if (FqcResultMaster != null)
{ {
// 取抽驗結果 var FqcResultDetail = await _context.FqcResultDetails.Where(w => w.FqcID == FqcResultMaster.FqcID).ToListAsync();
if (FqcResultMaster != null) foreach (var item1 in FqcResultDetail)
{ {
foreach (var item1 in FqcResultDetail) foreach (var item2 in fqcResultDto)
{ {
if (item1.BarcodeNo == item.BarcodeNo) if (item1.BarcodeNo == item2.BarcodeNo)
{ {
item.StatusNo = item1.StatusNo == "P" ? "PASS" : "NG"; item2.StatusNo = item1.StatusNo == "P" ? "PASS" : "NG";
item.NgReasonNo = item1.NgReasonNo; item2.NgReasonNo = item1.NgReasonNo;
item.NgReasonDesc = NgReasons.Where(w => w.NGReasonNo == item1.NgReasonNo).FirstOrDefault() == null ? "" : NgReasons.Where(w => w.NGReasonNo == item1.NgReasonNo).FirstOrDefault().NGReasonDesc; item2.NgReasonDesc = NgReasons.Where(w => w.NGReasonNo == item1.NgReasonNo).FirstOrDefault() == null ? "" : NgReasons.Where(w => w.NGReasonNo == item1.NgReasonNo).FirstOrDefault().NGReasonDesc;
item.NgMemo = item1.NgMemo; item2.NgMemo = item1.NgMemo;
item.IsSample = "Y"; item2.IsSample = "Y";
item.CreateName = await new Helper(_context).GetUserName(item1.CreateUserID); item2.CreateName = await new Helper(_context).GetUserName(item.CreateUserID);
continue; continue;
} }
} }
@ -218,7 +222,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="wipId">WIPID</param> /// <param name="wipId">WIPID</param>
/// <returns></returns> /// <returns></returns>
[HttpGet("GetCheckFqcOnGoIng")] [HttpGet("GetCheckFqcOnGoIng")]
public async Task<IEnumerable<dynamic>> GetCheckFqcOnGoIng(string boxNo, int wipId) public async Task<IEnumerable<dynamic>> GetCheckFqcOnGoIng(string boxNo , int wipId)
{ {
var querySql = @" SELECT * FROM JHAMES.FQC_INHOUSE_MASTER M var querySql = @" SELECT * FROM JHAMES.FQC_INHOUSE_MASTER M
INNER JOIN JHAMES.FQC_INHOUSE_DETAIL D ON M.INHOUSE_NO = D.INHOUSE_NO AND M.SEQ_ID = D.SEQ_ID INNER JOIN JHAMES.FQC_INHOUSE_DETAIL D ON M.INHOUSE_NO = D.INHOUSE_NO AND M.SEQ_ID = D.SEQ_ID

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

@ -10,8 +10,6 @@ using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.WebApi.DTO.AMES; using AMESCoreStudio.WebApi.DTO.AMES;
using AMESCoreStudio.CommonTools.Result; using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.WebApi.Enum; using AMESCoreStudio.WebApi.Enum;
using AMESCoreStudio.WebApi.Extensions;
using Dapper;
namespace AMESCoreStudio.WebApi.Controllers.AMES namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
@ -224,6 +222,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
resultQuery = resultQuery.Skip((page - 1) * limit).Take(limit).ToList(); resultQuery = resultQuery.Skip((page - 1) * limit).Take(limit).ToList();
} }
result.Data = resultQuery; result.Data = resultQuery;
// 判斷結束時間 // 判斷結束時間
@ -370,79 +369,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return result; return result;
} }
/// <summary>
/// 確認FQC開立抽驗時,是否資料與流程都完成
/// </summary>
/// <param name="inhouseNo">入庫單號碼</param>
/// <param name="seqid">序號</param>
/// <returns></returns>
[HttpGet("CheckFqcIssue")]
public async Task<ResultModel<String>> CheckFqcIssue(string inhouseNo, int seqid = 1)
{
ResultModel<String> result = new ResultModel<String> { Success = true };
var CheckFqcNextProcess = await GetCheckFqcNextProcess(inhouseNo , seqid);
if (CheckFqcNextProcess.Any())
{
result.Success = false;
result.Msg = "該筆入庫單尚有序號未跑完流程,請確認";
return result;
}
var CheckFqcDetailExist = await GetCheckFqcDetailExist(inhouseNo, seqid);
if (!CheckFqcDetailExist.Any())
{
result.Success = false;
result.Msg = "該筆入庫單未有箱號紀錄,請確認";
return result;
}
return result;
}
/// <summary>
/// 確認FQC抽驗時是否已經跑到FQC流程
/// </summary>
/// <param name="inhouseNo">入庫單號碼</param>
/// <param name="seqid">序號</param>
/// <returns>有資料:尚未跑完流程</returns>
private async Task<List<dynamic>> GetCheckFqcNextProcess(string inhouseNo, int seqid = 1)
{
var querySql = @" SELECT A.STATION_ID , A.WIP_ID , A.FLOW_RULE_ID , A.NEXT_STATION_ID FROM
(SELECT B.STATION_ID , B.WIP_ID , W.FLOW_RULE_ID , R.NEXT_STATION_ID FROM JHAMES.FQC_INHOUSE_DETAIL D
INNER JOIN JHAMES.BARCODE_INFO B ON D.SERIAL_NO = B.BOX_NO
INNER JOIN JHAMES.WIP_INFO W ON B.WIP_ID = W.WIP_ID
INNER JOIN JHAMES.RULES R ON R.FLOW_RULE_ID = W.FLOW_RULE_ID AND R.STATION_ID = B.STATION_ID
WHERE D.INHOUSE_NO = :InhouseNo AND D.SEQ_ID=:Seqid
GROUP BY B.STATION_ID , B.WIP_ID , W.FLOW_RULE_ID , R.NEXT_STATION_ID) A ,
JHAMES.STATIONS S WHERE S.STATION_ID=A.NEXT_STATION_ID AND S.TYPE_NO != 'F' ";
DynamicParameters p = new DynamicParameters();
p.Add("InhouseNo", inhouseNo);
p.Add("SeqId", seqid);
var result = await _context.Database.DapperQueryAsync<dynamic>(querySql, p);
return result.ToList();
}
/// <summary>
/// 確認FQC開立抽驗時,InhouseDetail是否有資料
/// </summary>
/// <param name="inhouseNo">入庫單號碼</param>
/// <param name="seqid">序號</param>
/// <returns>沒資料:Detail沒有資料</returns>
private async Task<List<dynamic>> GetCheckFqcDetailExist(string inhouseNo, int seqid = 1)
{
var querySql = @" SELECT * FROM JHAMES.FQC_INHOUSE_MASTER M
INNER JOIN JHAMES.FQC_INHOUSE_DETAIL D ON M.INHOUSE_NO = D.INHOUSE_NO AND M.SEQ_ID = D.SEQ_ID
INNER JOIN JHAMES.WIP_INFO W ON W.WIP_NO = M.WIP_NO AND W.WIP_TYPE != 'N'
WHERE D.INHOUSE_NO = :InhouseNo AND D.SEQ_ID=:Seqid ";
DynamicParameters p = new DynamicParameters();
p.Add("InhouseNo", inhouseNo);
p.Add("SeqId", seqid);
var result = await _context.Database.DapperQueryAsync<dynamic>(querySql, p);
return result.ToList();
}
/// <summary> /// <summary>
/// 更新入庫單 /// 更新入庫單
/// </summary> /// </summary>

146
AMESCoreStudio.WebApi/Controllers/AMES/FqcItemController.cs

@ -7,13 +7,11 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi; using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES; using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.WebApi.DTO.AMES;
namespace AMESCoreStudio.WebApi.Controllers.AMES namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
/// <summary> /// <summary>
/// FQC檢驗項目群組綁定設定檔 /// FQC檢驗結果ID
/// </summary> /// </summary>
[Route("api/[controller]")] [Route("api/[controller]")]
[ApiController] [ApiController]
@ -26,134 +24,104 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
_context = context; _context = context;
} }
// GET: api/FqcItem
[HttpGet] [HttpGet]
public async Task<ActionResult<IEnumerable<FqcItem>>> GetFqcItems() public async Task<ActionResult<IEnumerable<FqcItem>>> GetFqcItems()
{ {
return await _context.FqcItems.ToListAsync(); return await _context.FqcItems.ToListAsync();
} }
// GET: api/FqcItem/5
[HttpGet("{id}")] [HttpGet("{id}")]
public async Task<ActionResult<FqcItem>> GetFqcItem(int id) public async Task<ActionResult<FqcItem>> GetFqcItem(int id)
{ {
var fqcItem = await _context.FqcItems.FindAsync(id); var fqcItem = await _context.FqcItems.FindAsync(id);
return fqcItem;
}
/// <summary> if (fqcItem == null)
/// FQC檢驗項目群組綁定設定檔 to GroupID(FQC檢驗群組) {
/// </summary> return NotFound();
/// <param name="id">料號</param> }
/// <returns></returns>
[HttpGet("ByFqcGroupId/{id}")]
public async Task<IEnumerable<FqcItem>> GetFqcItemByFqcGroupId(int id)
{
IQueryable<FqcItem> q = _context.FqcItems;
var result = await q.Where(p => p.GroupId == id).ToListAsync();
return result;
}
/// <summary> return fqcItem;
/// 料號查詢FQC檢驗群組及綁定檢驗工項
/// </summary>
/// <param name="id">料號</param>
/// <returns></returns>
[HttpGet("ByItemNo/{id}")]
public async Task<ActionResult<IEnumerable<FqcItem>>> GetFqcItemByItemNo(string id)
{
var itemID = 0;
var result = await _context.MaterialItems.Where(w => w.ItemNo == id).ToListAsync();
if (result.Count() != 0)
itemID = result.FirstOrDefault().ItemID;
var q = from q1 in _context.FqcItems
join q2 in _context.FqcItemGroupMaterials on q1.GroupId equals q2.GroupId where q2.ItemId == itemID
select q1;
return await q.ToListAsync();
} }
/// <summary> // PUT: api/FqcItem/5
/// 更新檢驗項目群組綁定設定檔 // To protect from overposting attacks, enable the specific properties you want to bind to, for
/// </summary> // more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
/// <param name="fqcItem"></param> [HttpPut("{id}")]
/// <returns></returns> public async Task<IActionResult> PutFqcItem(int id, FqcItem fqcItem)
[HttpPut]
public async Task<ResultModel<FqcItem>> PutFqcItem(FqcItem fqcItem)
{ {
ResultModel<FqcItem> result = new ResultModel<FqcItem>(); if (id != fqcItem.FqcID)
{
return BadRequest();
}
_context.Entry(fqcItem).State = EntityState.Modified; _context.Entry(fqcItem).State = EntityState.Modified;
_context.Entry<FqcItem>(fqcItem).Property("CreateDate").IsModified = false;
_context.Entry<FqcItem>(fqcItem).Property("CreateUserID").IsModified = false;
fqcItem.UpdateDate = DateTime.Now;
try try
{ {
await _context.SaveChangesAsync(); await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
} }
catch (Exception ex) catch (DbUpdateConcurrencyException)
{ {
result.Success = false; if (!FqcItemExists(id))
result.Msg = ex.InnerException.Message; {
return NotFound();
}
else
{
throw;
}
} }
return result;
return NoContent();
} }
/// <summary> // POST: api/FqcItem
/// 新增檢驗項目群組綁定設定檔 // To protect from overposting attacks, enable the specific properties you want to bind to, for
/// </summary> // more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
/// <param name="fqcItem"></param>
/// <returns></returns>
[HttpPost] [HttpPost]
public async Task<ResultModel<FqcItem>> PostFqcItem(FqcItem fqcItem) public async Task<ActionResult<FqcItem>> PostFqcItem(FqcItem fqcItem)
{ {
ResultModel<FqcItem> result = new ResultModel<FqcItem>();
Helper helper = new Helper(_context);
fqcItem.FqcItemId = helper.GetIDKey("FQC_ITEM_ID").Result;
_context.FqcItems.Add(fqcItem); _context.FqcItems.Add(fqcItem);
try try
{ {
await _context.SaveChangesAsync(); await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
} }
catch (Exception ex) catch (DbUpdateException)
{ {
result.Success = false; if (FqcItemExists(fqcItem.FqcID))
result.Msg = ex.InnerException.Message; {
return Conflict();
}
else
{
throw;
}
} }
return result;
return CreatedAtAction("GetFqcItem", new { id = fqcItem.FqcID }, fqcItem);
} }
// DELETE: api/FqcItem/5 // DELETE: api/FqcItem/5
[HttpDelete("{id}")] [HttpDelete("{id}")]
public async Task<ResultModel<string>> DeleteFqcItem(int id) public async Task<ActionResult<FqcItem>> DeleteFqcItem(int id)
{ {
ResultModel<string> result = new ResultModel<string>();
var fqcItem = await _context.FqcItems.FindAsync(id); var fqcItem = await _context.FqcItems.FindAsync(id);
if (fqcItem == null)
try
{ {
if (fqcItem == null) return NotFound();
{
result.Success = false;
result.Msg = "找不到要刪除資料";
}
else
{
_context.FqcItems.Remove(fqcItem);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
} }
return result;
_context.FqcItems.Remove(fqcItem);
await _context.SaveChangesAsync();
return fqcItem;
}
private bool FqcItemExists(int id)
{
return _context.FqcItems.Any(e => e.FqcID == id);
} }
} }
} }

196
AMESCoreStudio.WebApi/Controllers/AMES/FqcItemGroupController.cs

@ -1,196 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
using System.Text.RegularExpressions;
using Dapper;
using AMESCoreStudio.WebApi.Extensions;
using System.Data;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
/// FQC檢驗項目群組名稱設定檔
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class FqcItemGroupController : ControllerBase
{
private readonly AMESContext _context;
public FqcItemGroupController(AMESContext context)
{
_context = context;
}
[HttpGet]
public async Task<ActionResult<IEnumerable<FqcItemGroup>>> GetFqcItemGroups()
{
return await _context.FqcItemGroups.ToListAsync();
}
[HttpGet("{id}")]
public async Task<ActionResult<FqcItemGroup>> GetFqcItemGroup(int id)
{
var fqcItemGroup = await _context.FqcItemGroups.FindAsync(id);
return fqcItemGroup;
}
/// <summary>
/// FQC檢驗項目群組名稱設定檔 By Query
/// </summary>
/// <param name="no">群組代號</param>
/// <param name="name">群組名稱</param>
/// <param name="desc">群組描述</param>
/// <param name="itemNo">料號</param>
/// <param name="page">頁數</param>
/// <param name="limit">筆數</param>
/// <returns></returns>
[HttpGet("FqcItemGroupQuery")]
public async Task<ResultModel<FqcItemGroup>> GetFqcItemGroupQuery(string no, string name, string desc, string itemNo, int page = 0, int limit = 10)
{
ResultModel<FqcItemGroup> result = new ResultModel<FqcItemGroup>();
var query = @$" SELECT DISTINCT
G.FQC_ITEM_GROUP_ID AS fqcItemGroupId ,
G.ITEM_GROUP_NO AS itemGroupNo ,
G.ITEM_GROUP_NAME AS itemGroupName ,
G.ITEM_GROUP_DESC AS itemGroupDesc
FROM JHAMES.FQC_ITEM_GROUP G
LEFT JOIN JHAMES.FQC_ITEM_GROUP_MATERIAL GM ON G.FQC_ITEM_GROUP_ID = GM.GROUP_ID
LEFT JOIN JHAMES.MATERIAL_ITEM M ON GM.ITEM_ID = M.ITEM_ID
WHERE 1 = 1 ";
DynamicParameters p = new DynamicParameters();
if (!string.IsNullOrWhiteSpace(no))
{
query += " AND UPPER(G.ITEM_GROUP_NO) LIKE :No ";
p.Add("No", $"%{no.Trim().ToUpper()}%", DbType.String);
}
if (!string.IsNullOrWhiteSpace(name))
{
query += " AND G.ITEM_GROUP_NAME LIKE :Name ";
p.Add("Name", $"%{name.Trim().ToUpper()}%", DbType.String);
}
if (!string.IsNullOrWhiteSpace(desc))
{
query += " AND G.ITEM_GROUP_DESC LIKE :GroupDesc ";
p.Add("GroupDesc", $"%{desc.Trim().ToUpper()}%", DbType.String);
}
if (!string.IsNullOrWhiteSpace(itemNo))
{
query += " AND UPPER(M.ITEM_NO) LIKE :ItemNo ";
p.Add("ItemNo", $"%{itemNo.Trim().ToUpper()}%", DbType.String);
}
var q = await _context.Database.DapperQueryAsync<FqcItemGroup>(query, p);
// 紀錄筆數
result.DataTotal = q.Count();
// Table 頁數
if (page > 0)
{
q = q.Skip((page - 1) * limit).Take(limit);
}
result.Data = q;
return result;
}
/// <summary>
/// 更新FQC檢驗項目群組名稱設定檔
/// </summary>
/// <param name="fqcItemGroup"></param>
/// <returns></returns>
[HttpPut]
public async Task<ResultModel<FqcItemGroup>> PutFqcItemGroup(FqcItemGroup fqcItemGroup)
{
ResultModel<FqcItemGroup> result = new ResultModel<FqcItemGroup>();
_context.Entry(fqcItemGroup).State = EntityState.Modified;
_context.Entry<FqcItemGroup>(fqcItemGroup).Property("CreateDate").IsModified = false;
_context.Entry<FqcItemGroup>(fqcItemGroup).Property("CreateUserID").IsModified = false;
fqcItemGroup.UpdateDate = DateTime.Now;
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
/// <summary>
/// 新增FQC檢驗項目群組名稱設定檔
/// </summary>
/// <param name="fqcItemGroup"></param>
/// <returns></returns>
[HttpPost]
public async Task<ResultModel<FqcItemGroup>> PostFqcItemGroup(FqcItemGroup fqcItemGroup)
{
ResultModel<FqcItemGroup> result = new ResultModel<FqcItemGroup>();
Helper helper = new Helper(_context);
fqcItemGroup.FqcItemGroupId = helper.GetIDKey("FQC_ITEM_GROUP_ID").Result;
_context.FqcItemGroups.Add(fqcItemGroup);
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
[HttpDelete("{id}")]
public async Task<ResultModel<string>> DeleteFqcItemGroup(int id)
{
ResultModel<string> result = new ResultModel<string>();
var fqcItemGroup = await _context.FqcItemGroups.FindAsync(id);
var fqcItem = await _context.FqcItems.Where(w => w.GroupId == id).ToListAsync();
var fqcItemGroupMaterial = await _context.FqcItemGroupMaterials
.Where(w => w.GroupId == id).ToListAsync();
try
{
if (fqcItemGroup == null)
{
result.Success = false;
result.Msg = "找不到要刪除資料";
}
else
{
_context.FqcItemGroups.Remove(fqcItemGroup);
_context.FqcItems.RemoveRange(fqcItem);
_context.FqcItemGroupMaterials.RemoveRange(fqcItemGroupMaterial);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
}
}

159
AMESCoreStudio.WebApi/Controllers/AMES/FqcItemGroupMaterialController.cs

@ -1,159 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
using System.Text.RegularExpressions;
using Dapper;
using AMESCoreStudio.WebApi.Extensions;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
/// FQC檢驗項目群組指定料號設定檔
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class FqcItemGroupMaterialController : ControllerBase
{
private readonly AMESContext _context;
public FqcItemGroupMaterialController(AMESContext context)
{
_context = context;
}
[HttpGet]
public async Task<ActionResult<IEnumerable<FqcItemGroupMaterial>>> GetFqcItemGroupMaterials()
{
return await _context.FqcItemGroupMaterials.ToListAsync();
}
/// <summary>
/// By GroupId 查詢
/// </summary>
/// <param name="id">GroupId</param>
/// <returns></returns>
[HttpGet("ByGroupId/{id}")]
public async Task<ActionResult<IEnumerable<FqcItemGroupMaterial>>> GetFqcItemGroupMaterialByGroupId(int id)
{
var query = @" SELECT
F.GROUP_ID AS groupId ,
M.ITEM_ID AS itemId ,
M.ITEM_NO AS itemNo ,
M.ITEM_DESC AS itemDesc ,
F.CREATE_USERID AS createUserID ,
F.CREATE_DATE AS createDate ,
F.UPDATE_USERID AS updateUserID ,
F.UPDATE_DATE AS updateDate
FROM JHAMES.FQC_ITEM_GROUP_MATERIAL F
INNER JOIN JHAMES.MATERIAL_ITEM M ON F.ITEM_ID = M.ITEM_ID
WHERE F.GROUP_ID = :GroupId";
DynamicParameters p = new DynamicParameters();
p.Add("GroupId", id);
var result = await _context.Database.DapperQueryAsync<FqcItemGroupMaterial>(query, p);
return result.ToList();
}
/// <summary>
/// By ItemId 查詢
/// </summary>
/// <param name="id">ItemId</param>
/// <returns></returns>
[HttpGet("ByItemId/{id}")]
public async Task<ActionResult<IEnumerable<FqcItemGroupMaterial>>> GetFqcItemGroupMaterialByItemId(int id)
{
var query = @" SELECT
F.GROUP_ID AS groupId ,
M.ITEM_ID AS itemId ,
M.ITEM_NO AS itemNo ,
M.ITEM_DESC AS itemDesc ,
F.CREATE_USERID AS createUserID ,
F.CREATE_DATE AS createDate ,
F.UPDATE_USERID AS updateUserID ,
F.UPDATE_DATE AS updateDate
FROM JHAMES.FQC_ITEM_GROUP_MATERIAL F
INNER JOIN JHAMES.MATERIAL_ITEM M ON F.ITEM_ID = M.ITEM_ID
WHERE F.ITEM_ID = :ItemId";
DynamicParameters p = new DynamicParameters();
p.Add("ItemId", id);
var result = await _context.Database.DapperQueryAsync<FqcItemGroupMaterial>(query, p);
return result.ToList();
}
/// <summary>
/// 更新檢驗群組指定料號設定檔
/// </summary>
/// <param name="fqcItemGroupMaterial"></param>
/// <returns></returns>
[HttpPut]
public async Task<ResultModel<FqcItemGroupMaterial>> PutFqcItemGroupMaterial(FqcItemGroupMaterial fqcItemGroupMaterial)
{
ResultModel<FqcItemGroupMaterial> result = new ResultModel<FqcItemGroupMaterial>();
_context.Entry(fqcItemGroupMaterial).State = EntityState.Modified;
_context.Entry<FqcItemGroupMaterial>(fqcItemGroupMaterial).Property("CreateDate").IsModified = false;
_context.Entry<FqcItemGroupMaterial>(fqcItemGroupMaterial).Property("CreateUserID").IsModified = false;
fqcItemGroupMaterial.UpdateDate = DateTime.Now;
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
/// <summary>
/// 新增檢驗群組指定料號設定檔
/// </summary>
/// <param name="fqcItemGroupMaterial"></param>
/// <returns></returns>
[HttpPost]
public async Task<ResultModel<FqcItemGroupMaterial>> PostFqcItemGroupMaterial(FqcItemGroupMaterial fqcItemGroupMaterial)
{
ResultModel<FqcItemGroupMaterial> result = new ResultModel<FqcItemGroupMaterial>();
_context.FqcItemGroupMaterials.Add(fqcItemGroupMaterial);
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
/// <summary>
/// 刪除 檢驗群組指定料號設定檔
/// </summary>
/// <param name="id">GroupId</param>
/// <param name="id1">itemId</param>
/// <returns></returns>
[HttpDelete("{id}/{id1}")]
public async Task<ActionResult<int>> DeleteFqcItemGroupMaterial(int id, int id1)
{
var query = @" DELETE JHAMES.FQC_ITEM_GROUP_MATERIAL WHERE GROUP_ID =:id
AND ITEM_ID = :id1";
DynamicParameters p = new DynamicParameters();
p.Add("id", id);
p.Add("id1", id1);
var result = await _context.Database.DapperExecuteAsync(query, p);
return result;
}
}
}

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

@ -345,39 +345,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return result; return result;
} }
/// <summary>
/// 執行判斷無序號工單檢驗完成
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("ExecuteWithoutWipNoComplete/{id}")]
public async Task<ActionResult<string>> ExecuteWithoutWipNoComplete(string id)
{
var query = @$" SELECT SUM(INHOUSE_QTY) , PLAN_QTY , WIP_NO FROM
(SELECT DISTINCT I.INHOUSE_QTY , I.INHOUSE_NO , I.SEQ_ID , W.PLAN_QTY, W.WIP_NO
FROM JHAMES.FQC_INHOUSE_MASTER I
INNER JOIN JHAMES.FQC_RESULT_MASTER F ON I.INHOUSE_NO = F.INHOUSE_NO AND I.SEQ_ID = F.SEQ_ID
INNER JOIN JHAMES.WIP_INFO W ON F.WIP_NO = W.WIP_NO
WHERE F.INSPECTION_STATUS = 'D'
AND I.STATUS = 'P'
AND I.WIP_NO=:WipNo) A
GROUP BY WIP_NO, PLAN_QTY
HAVING SUM(INHOUSE_QTY) = PLAN_QTY ";
DynamicParameters p = new DynamicParameters();
p.Add("WipNo", id.Trim().ToUpper(), DbType.String);
var q = await _context.Database.DapperQueryAsync<dynamic>(query, p);
if (q.Any())
{
query = @" UPDATE JHAMES.WIP_INFO SET STATUS_NO='E' WHERE WIP_NO=:WipNo ";
await _context.Database.DapperExecuteAsync(query, p);
return "該筆工單已執行結案";
}
return "該筆工單尚未全部抽驗完成";
}
/// <summary> /// <summary>
/// 更新FQC檢驗單結果 /// 更新FQC檢驗單結果
/// </summary> /// </summary>

129
AMESCoreStudio.WebApi/Controllers/AMES/LabelParamController.cs

@ -0,0 +1,129 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
///
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class LabelParamController : ControllerBase
{
private readonly AMESContext _context;
public LabelParamController(AMESContext context)
{
_context = context;
}
// GET: api/LabelParam
[HttpGet]
public async Task<ActionResult<IEnumerable<LabelParam>>> GetLabelParams()
{
return await _context.LabelParams.ToListAsync();
}
// GET: api/LabelParam/5
[HttpGet("{id}")]
public async Task<ActionResult<LabelParam>> GetLabelParam(int id)
{
var LabelParam = await _context.LabelParams.FindAsync(id);
if (LabelParam == null)
{
return NotFound();
}
return LabelParam;
}
/// <summary>
/// 更新Label參數檔
/// </summary>
/// <param name="labelParam"></param>
/// <returns></returns>
[HttpPut]
public async Task<ResultModel<LabelParam>> PutBarcodeOutfit(LabelParam labelParam)
{
ResultModel<LabelParam> result = new ResultModel<LabelParam>();
_context.Entry(labelParam).State = EntityState.Modified;
//設置容器空間某一個模型的某一個欄位 不提交到資料庫
_context.Entry<LabelParam>(labelParam).Property("CreateDate").IsModified = false;
_context.Entry<LabelParam>(labelParam).Property("CreateUserID").IsModified = false;
labelParam.UpdateDate = DateTime.Now;
labelParam.UpdateUserID = 0;
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
/// <summary>
/// 新增更新Label參數檔
/// </summary>
/// <param name="labelParam"></param>
/// <returns></returns>
[HttpPost]
public async Task<ResultModel<LabelParam>> PostBarcodeOutfit(LabelParam labelParam)
{
ResultModel<LabelParam> result = new ResultModel<LabelParam>();
try
{
Helper helper = new Helper(_context);
labelParam.LabelFieldID = helper.GetIDKey("LABEL_FIELD_ID").Result;
_context.LabelParams.Add(labelParam);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
// DELETE: api/LabelParam/5
[HttpDelete("{id}")]
public async Task<ActionResult<LabelParam>> DeleteLabelParam(int id)
{
var LabelParam = await _context.LabelParams.FindAsync(id);
if (LabelParam == null)
{
return NotFound();
}
_context.LabelParams.Remove(LabelParam);
await _context.SaveChangesAsync();
return LabelParam;
}
private bool LabelParamExists(int id)
{
return _context.LabelParams.Any(e => e.LabelFieldID == id);
}
}
}

147
AMESCoreStudio.WebApi/Controllers/AMES/LabelTemplateDetailController.cs

@ -0,0 +1,147 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
/// FQC檢驗結果ID
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class LabelTemplateDetailController : ControllerBase
{
private readonly AMESContext _context;
public LabelTemplateDetailController(AMESContext context)
{
_context = context;
}
// GET: api/LabelTemplateDetail
[HttpGet]
public async Task<ActionResult<IEnumerable<LabelTemplateDetail>>> GetLabelTemplateDetails()
{
return await _context.LabelTemplateDetails.ToListAsync();
}
// GET: api/LabelTemplateDetail/5
[HttpGet("{id}")]
public async Task<ActionResult<IEnumerable<LabelTemplateDetail>>> GetLabelTemplateDetail(int id)
{
var labelTemplateDetail = await _context.LabelTemplateDetails.Where(w=>w.TemplateID == id).ToListAsync();
return labelTemplateDetail;
}
// GET: api/LabelTemplateDetail/5
[HttpGet("byTemplateIDMulti/{id}")]
public async Task<ActionResult<IEnumerable<dynamic>>> GetLabelTemplateDetailbyTemplateIDMulti(int id)
{
var q = from p in _context.LabelParams
join d in _context.LabelTemplateDetails
on new { p.LabelFieldID, TemplateID = id } equals new { d.LabelFieldID, d.TemplateID } into d1
from subd in d1.DefaultIfEmpty()
where p.StatusNo == "Y"
select new
{
LabelFieldID = p.LabelFieldID,
LabelFieldName = p.LabelFieldName,
ParamName = p.ParamName,
TemplateID = subd != null ? 1 : 0 //有此欄位則顯示為1 沒有就為0
};
var query = await q.ToListAsync();
return query;
}
/// <summary>
/// 更新Label參數檔
/// </summary>
/// <param name="LabelTemplateDetail"></param>
/// <returns></returns>
[HttpPut]
public async Task<ResultModel<LabelTemplateDetail>> PutLabelTemplateDetail(LabelTemplateDetail LabelTemplateDetail)
{
ResultModel<LabelTemplateDetail> result = new ResultModel<LabelTemplateDetail>();
_context.Entry(LabelTemplateDetail).State = EntityState.Modified;
//設置容器空間某一個模型的某一個欄位 不提交到資料庫
_context.Entry<LabelTemplateDetail>(LabelTemplateDetail).Property("CreateDate").IsModified = false;
_context.Entry<LabelTemplateDetail>(LabelTemplateDetail).Property("CreateUserID").IsModified = false;
LabelTemplateDetail.UpdateDate = DateTime.Now;
LabelTemplateDetail.UpdateUserID = 0;
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
/// <summary>
/// 新增更新Label參數檔
/// </summary>
/// <param name="LabelTemplateDetail"></param>
/// <returns></returns>
[HttpPost]
public async Task<ResultModel<LabelTemplateDetail>> PostLabelTemplateDetail(LabelTemplateDetail LabelTemplateDetail)
{
ResultModel<LabelTemplateDetail> result = new ResultModel<LabelTemplateDetail>();
try
{
Helper helper = new Helper(_context);
LabelTemplateDetail.TemplateID = helper.GetIDKey("TEMPLATE_ID").Result;
_context.LabelTemplateDetails.Add(LabelTemplateDetail);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
// DELETE: api/LabelTemplateDetail/5
[HttpDelete("{id}")]
public async Task<ActionResult<LabelTemplateDetail>> DeleteLabelTemplateDetail(int id)
{
var LabelTemplateDetail = await _context.LabelTemplateDetails.FindAsync(id);
if (LabelTemplateDetail == null)
{
return NotFound();
}
_context.LabelTemplateDetails.Remove(LabelTemplateDetail);
await _context.SaveChangesAsync();
return LabelTemplateDetail;
}
private bool LabelTemplateDetailExists(int id)
{
return _context.LabelTemplateDetails.Any(e => e.TemplateID == id);
}
}
}

165
AMESCoreStudio.WebApi/Controllers/AMES/LabelTemplateMasterController.cs

@ -0,0 +1,165 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.WebApi.DTO.AMES;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
///
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class LabelTemplateMasterController : ControllerBase
{
private readonly AMESContext _context;
public LabelTemplateMasterController(AMESContext context)
{
_context = context;
}
// GET: api/LabelTemplateMaster
[HttpGet]
public async Task<ActionResult<IEnumerable<LabelTemplateMaster>>> GetLabelTemplateMasters()
{
return await _context.LabelTemplateMasters.ToListAsync();
}
// GET: api/LabelTemplateMaster/5
[HttpGet("{id}")]
public async Task<ActionResult<LabelTemplateMaster>> GetLabelTemplateMaster(int id)
{
var LabelTemplateMaster = await _context.LabelTemplateMasters.FindAsync(id);
if (LabelTemplateMaster == null)
{
return NotFound();
}
return LabelTemplateMaster;
}
/// <summary>
/// 更新Label參數檔
/// </summary>
/// <param name="LabelTemplateMaster"></param>
/// <returns></returns>
[HttpPut]
public async Task<ResultModel<LabelTemplateMaster>> PutLabelTemplateMaster(LabelTemplateMaster LabelTemplateMaster)
{
ResultModel<LabelTemplateMaster> result = new ResultModel<LabelTemplateMaster>();
_context.Entry(LabelTemplateMaster).State = EntityState.Modified;
//設置容器空間某一個模型的某一個欄位 不提交到資料庫
_context.Entry<LabelTemplateMaster>(LabelTemplateMaster).Property("CreateDate").IsModified = false;
_context.Entry<LabelTemplateMaster>(LabelTemplateMaster).Property("CreateUserID").IsModified = false;
LabelTemplateMaster.UpdateDate = DateTime.Now;
LabelTemplateMaster.UpdateUserID = 0;
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
/// <summary>
/// 新增更新Label參數檔
/// </summary>
/// <param name="LabelTemplateMaster"></param>
/// <returns></returns>
[HttpPost]
public async Task<ResultModel<LabelTemplateMaster>> PostLabelTemplateMaster(LabelTemplateMaster LabelTemplateMaster)
{
ResultModel<LabelTemplateMaster> result = new ResultModel<LabelTemplateMaster>();
try
{
Helper helper = new Helper(_context);
LabelTemplateMaster.TemplateID = helper.GetIDKey("TEMPLATE_ID").Result;
_context.LabelTemplateMasters.Add(LabelTemplateMaster);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
// DELETE: api/LabelTemplateMaster/5
[HttpDelete("{id}")]
public async Task<ActionResult<LabelTemplateMaster>> DeleteLabelTemplateMaster(int id)
{
var LabelTemplateMaster = await _context.LabelTemplateMasters.FindAsync(id);
if (LabelTemplateMaster == null)
{
return NotFound();
}
_context.LabelTemplateMasters.Remove(LabelTemplateMaster);
await _context.SaveChangesAsync();
return LabelTemplateMaster;
}
// GET: api/LabelTemplateMaster/5
[HttpGet("LabelTemplatebyMatnr/{LabelMatnr}/{Status}")]
public async Task<ActionResult<IEnumerable<LabelTemplateMaster>>> GetLabelTemplatebyMatnr(string LabelMatnr, string Status, int page = 0, int limit = 10)
{
IQueryable<LabelTemplateMaster> q = _context.LabelTemplateMasters;
if (!string.IsNullOrEmpty(LabelMatnr) && LabelMatnr != "*")
{
q.Where(w => w.LabelMatnr.Equals(LabelMatnr));
}
if (!string.IsNullOrEmpty(Status) && Status != "*")
{
q.Where(w => w.StatusNo.Equals(Status) );
}
if (page > 0)
{
q = q.OrderBy(p => p.LabelMatnr).Skip((page - 1) * limit).Take(limit);
}
else
{
q = q.OrderBy(p => p.LabelMatnr);
}
var labelTemplateMasters = await q.ToListAsync();
return labelTemplateMasters;
}
private bool LabelTemplateMasterExists(int id)
{
return _context.LabelTemplateMasters.Any(e => e.TemplateID == id);
}
}
}

14
AMESCoreStudio.WebApi/Controllers/AMES/MaterialItemController.cs

@ -68,7 +68,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
public async Task <MaterialItem> GetMaterialItemByItemNO(string id) public async Task <MaterialItem> GetMaterialItemByItemNO(string id)
{ {
IQueryable<MaterialItem> q = _context.MaterialItems; IQueryable<MaterialItem> q = _context.MaterialItems;
var result = await q.Where(p => p.ItemNo == id).FirstOrDefaultAsync(); var result = q.Where(p => p.ItemNo == id).FirstOrDefault();
return result; return result;
} }
@ -87,18 +87,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return result; return result;
} }
/// <summary>
/// 關鍵字查詢
/// </summary>
/// <param name="id">料號</param>
/// <returns></returns>
[HttpGet("AutoComplete/{id}")]
public async Task<ActionResult<IEnumerable<MaterialItem>>> GetMeterialAutoComplete(string id)
{
var materialItems = await _context.MaterialItems.Where(w => w.ItemNo.ToUpper().Contains(id.ToUpper())).Take(20).ToListAsync();
return materialItems;
}
/// <summary> /// <summary>
/// 新增料號基本資料檔 /// 新增料號基本資料檔
/// </summary> /// </summary>

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

@ -56,10 +56,9 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="limit">筆數</param> /// <param name="limit">筆數</param>
/// <param name="itemNo">料號</param> /// <param name="itemNo">料號</param>
/// <param name="wipNo">工單號碼</param> /// <param name="wipNo">工單號碼</param>
/// <param name="fqcItemGroupId">FQC檢驗設定群組</param>
/// <returns></returns> /// <returns></returns>
[HttpGet("QcItemQuery")] [HttpGet("QcItemQuery")]
public async Task<ResultModel<QcItemDto>> GetQcItemQuery(int groupID = 0, int page = 0, int limit = 10, string itemNo = null, string wipNo = null, int fqcItemGroupId = 0) 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; IQueryable<QcItem> q = _context.QcItems;
ResultModel<QcItemDto> result = new ResultModel<QcItemDto>(); ResultModel<QcItemDto> result = new ResultModel<QcItemDto>();
@ -76,6 +75,8 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
q = q.Skip((page - 1) * limit).Take(limit); q = q.Skip((page - 1) * limit).Take(limit);
} }
//var aa = System.Enum.IsDefined(typeof(EnumFQC.EnumQCItem_Type), "A") ? EnumFQC.GetDisplayName((EnumFQC.EnumQCItem_Type)System.Enum.Parse(typeof(EnumFQC.EnumQCItem_Type), "A")) : "";
result.Data = await q.Select(s => new QcItemDto result.Data = await q.Select(s => new QcItemDto
{ {
ItemID = s.ItemID, ItemID = s.ItemID,
@ -90,51 +91,31 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
GroupNameEN = s.GetQcGroup.GroupNameCN ?? "", GroupNameEN = s.GetQcGroup.GroupNameCN ?? "",
ItemType = s.Type ItemType = s.Type
}).ToListAsync(); }).ToListAsync();
// 先判斷工單是否有資料 // 先判斷工單是否有資料
if (!string.IsNullOrWhiteSpace(wipNo)) var wipFqcItem = await _context.WipFqcItems.Where(w => w.WipNo == wipNo).ToListAsync();
if (wipFqcItem.Count != 0)
{ {
var wipFqcItem = await _context.WipFqcItems.Where(w => w.WipNo == wipNo).ToListAsync(); foreach (var item in result.Data)
if (wipFqcItem.Count != 0)
{ {
foreach (var item in result.Data) if (wipFqcItem.Where(w => w.QcItemID == item.ItemID).Any())
{ item.check = true;
if (wipFqcItem.Where(w => w.QcItemID == item.ItemID).Any())
item.check = true;
}
} }
} }
else
// 有輸入料號跟QCITEM 比對有資料打勾
if (!string.IsNullOrWhiteSpace(itemNo))
{ {
// 有輸入料號跟QCITEM 比對有資料打勾
var itemID = _context.MaterialItems.Where(w => w.ItemNo == itemNo).FirstOrDefault(); var itemID = _context.MaterialItems.Where(w => w.ItemNo == itemNo).FirstOrDefault();
if (itemID != null) if (itemID != null)
{ {
var q1 = from q2 in _context.FqcItems var marterialFQCItems = _context.MaterialFqcItems.Where(w => w.ItemID == itemID.ItemID);
join q3 in _context.FqcItemGroupMaterials on q2.GroupId equals q3.GroupId
where q3.ItemId == itemID.ItemID
select q2;
foreach (var item in result.Data) foreach (var item in result.Data)
{ {
if (q1.Where(w => w.QcItemId == item.ItemID).Any()) if (marterialFQCItems.Where(w => w.QcItemID == item.ItemID).Any())
item.check = true; item.check = true;
} }
} }
} }
// 有設定FQC檢驗項目群組
if (fqcItemGroupId != 0)
{
var fqcItem = await _context.FqcItems.Where(w => w.GroupId == fqcItemGroupId).ToListAsync();
foreach (var item in result.Data)
{
if (fqcItem.Where(w => w.QcItemId == item.ItemID).Any())
item.check = true;
}
}
result.Data.Select(s => s.ItemTypeName = result.Data.Select(s => s.ItemTypeName =
System.Enum.IsDefined(typeof(EnumFQC.EnumQCItem_Type), s.ItemType ?? "") ? System.Enum.IsDefined(typeof(EnumFQC.EnumQCItem_Type), s.ItemType ?? "") ?
EnumFQC.GetDisplayName((EnumFQC.EnumQCItem_Type)System.Enum.Parse(typeof(EnumFQC.EnumQCItem_Type), s.ItemType)) : "") EnumFQC.GetDisplayName((EnumFQC.EnumQCItem_Type)System.Enum.Parse(typeof(EnumFQC.EnumQCItem_Type), s.ItemType)) : "")

2
AMESCoreStudio.WebApi/DTO/AMES/FqcResultDto.cs

@ -63,7 +63,7 @@ namespace AMESCoreStudio.WebApi.DTO.AMES
/// </summary> /// </summary>
[Display(Name = "狀態")] [Display(Name = "狀態")]
[Column("STATUS_NO")] [Column("STATUS_NO")]
public string StatusNo { get; set; } public string StatusNo { get; set; } = "P";
/// <summary> /// <summary>
/// IsSample /// IsSample

40
AMESCoreStudio.WebApi/Models/AMES/FqcItem.cs

@ -2,47 +2,51 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.Runtime.Serialization;
#nullable disable #nullable disable
namespace AMESCoreStudio.WebApi.Models.AMES namespace AMESCoreStudio.WebApi.Models.AMES
{ {
/// <summary> /// <summary>
/// FQC檢驗項目群組綁定設定 /// FQC细目資料
/// </summary> /// </summary>
[Keyless]
[Table("FQC_ITEM", Schema = "JHAMES")] [Table("FQC_ITEM", Schema = "JHAMES")]
[Index(nameof(FqcID), nameof(ItemID), Name = "FQC_ITEM_AK1", IsUnique = true)]
public partial class FqcItem public partial class FqcItem
{ {
/// <summary>
/// ID
/// </summary>
[Key]
[DataMember]
[Column("FQC_ITEM_ID")]
public int FqcItemId { get; set; }
/// <summary> /// <summary>
/// FQC檢驗項目群組ID /// FQC檢驗結果ID
/// </summary> /// </summary>
[Key]
[DataMember] [DataMember]
[Column("GROUP_ID")] [Display(Name = "FQC檢驗結果ID")]
public int GroupId { get; set; } [Required(ErrorMessage = "{0},不能空白")]
[Column("FQC_ID")]
public int FqcID { get; set; }
/// <summary> /// <summary>
/// 檢驗類別ID /// 细目序號ID
/// </summary> /// </summary>
[Key]
[DataMember] [DataMember]
[Column("QC_GROUP_ID")] [Display(Name = "细目序號ID")]
public int QcGroupId { get; set; } [Required(ErrorMessage = "{0},不能空白")]
[Column("ITEM_ID")]
public int ItemID { get; set; }
/// <summary> /// <summary>
/// 檢驗項目ID /// 细目内容
/// </summary> /// </summary>
[DataMember] [DataMember]
[Column("QC_ITEM_ID")] [Display(Name = "细目内容")]
public int QcItemId { get; set; } [Required(ErrorMessage = "{0},不能空白")]
[Column("ITEM_CONTENT")]
[StringLength(200)]
public string ItemContent { get; set; }
/// <summary> /// <summary>
/// 建立UserID /// 建立UserID

85
AMESCoreStudio.WebApi/Models/AMES/LabelParam.cs

@ -0,0 +1,85 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using System.Runtime.Serialization;
#nullable disable
namespace AMESCoreStudio.WebApi.Models.AMES
{
/// <summary>
/// Label 參數設定檔
/// </summary>
[Table("LABEL_PARAM", Schema = "JHAMES")]
public partial class LabelParam
{
/// <summary>
/// 標籤欄位ID
/// </summary>
[Key]
[Column("LABEL_FIELD_ID")]
[DataMember]
public int LabelFieldID { get; set; }
/// <summary>
/// 標籤欄位名稱
/// </summary>
[DataMember]
[Display(Name = "欄位名稱")]
[Required(ErrorMessage = "{0},不能空白")]
[Column("LABEL_FIELD_NAME")]
[StringLength(60)]
public string LabelFieldName { get; set; }
/// <summary>
/// 標籤變數名稱
/// </summary>
[DataMember]
[Display(Name = "變數名稱")]
[Column("PARAM_NAME")]
[StringLength(100)]
public string ParamName { get; set; }
/// <summary>
/// 狀態 P:PASS F:FAIL
/// </summary>
[DataMember]
[Display(Name = "狀態")]
[Required]
[Column("STATUS_NO")]
[StringLength(1)]
public string StatusNo { get; set; } = "P";
/// <summary>
/// 建立UserID
/// </summary>
[Column("CREATE_USERID")]
[Required]
[DataMember]
public int CreateUserID { get; set; } = 0;
/// <summary>
/// 建立日期
/// </summary>
[Required]
[Column("CREATE_DATE")]
[DataMember]
public DateTime CreateDate { get; set; } = DateTime.Now;
/// <summary>
/// 更新UserID
/// </summary>
[Column("UPDATE_USERID")]
[DataMember]
public int UpdateUserID { get; set; } = 0;
/// <summary>
/// 更新日期
/// </summary>
[Column("UPDATE_DATE")]
[DataMember]
public DateTime? UpdateDate { get; set; } = DateTime.Now;
}
}

75
AMESCoreStudio.WebApi/Models/AMES/LabelTemplateDetail.cs

@ -0,0 +1,75 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using System.Runtime.Serialization;
#nullable disable
namespace AMESCoreStudio.WebApi.Models.AMES
{
/// <summary>
/// Label 參數設定檔
/// </summary>
[Table("LABEL_TEMPLATE_DETAIL", Schema = "JHAMES")]
public partial class LabelTemplateDetail
{
/// <summary>
/// 標籤欄位ID
/// </summary>
[Key]
[Column("TEMPLATE_ID")]
[DataMember]
public int TemplateID { get; set; }
/// <summary>
/// 標籤欄位名稱
/// </summary>
[DataMember]
[Display(Name = "標籤欄位ID")]
[Required(ErrorMessage = "{0},不能空白")]
[Column("LABEL_FIELD_ID")]
[StringLength(60)]
public int LabelFieldID { get; set; }
/// <summary>
/// 建立UserID
/// </summary>
[Column("CREATE_USERID")]
[DataMember]
public int CreateUserID { get; set; } = 0;
/// <summary>
/// 建立日期
/// </summary>
[Required]
[Column("CREATE_DATE")]
[DataMember]
public DateTime CreateDate { get; set; } = DateTime.Now;
/// <summary>
/// 更新UserID
/// </summary>
[Column("UPDATE_USERID")]
[DataMember]
public int UpdateUserID { get; set; } = 0;
/// <summary>
/// 更新日期
/// </summary>
[Column("UPDATE_DATE")]
[DataMember]
public DateTime? UpdateDate { get; set; } = DateTime.Now;
/// <summary>
/// 流程站別資料
/// </summary>
[ForeignKey("LabelFieldID")]
[DataMember]
public virtual LabelParam GetLabelParam { get; set; }
}
}

109
AMESCoreStudio.WebApi/Models/AMES/LabelTemplateMaster.cs

@ -0,0 +1,109 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using System.Runtime.Serialization;
#nullable disable
namespace AMESCoreStudio.WebApi.Models.AMES
{
/// <summary>
/// Label 參數設定檔
/// </summary>
[Table("LABEL_TEMPLATE_MASTER", Schema = "JHAMES")]
public partial class LabelTemplateMaster
{
/// <summary>
/// 標籤欄位ID
/// </summary>
[Key]
[Column("TEMPLATE_ID")]
[DataMember]
public int TemplateID { get; set; }
/// <summary>
/// 標籤欄位名稱
/// </summary>
[DataMember]
[Display(Name = "標籤料號")]
[Required(ErrorMessage = "{0},不能空白")]
[Column("LABEL_MATNR")]
[StringLength(20)]
public string LabelMatnr { get; set; }
/// <summary>
/// 標籤變數名稱
/// </summary>
[DataMember]
[Display(Name = "標籤檔案")]
[Column("LABEL_FILE")]
[StringLength(100)]
public string LabelFile { get; set; }
/// <summary>
/// 狀態 P:PASS F:FAIL
/// </summary>
[DataMember]
[Display(Name = "狀態")]
[Required]
[Column("STATUS_NO")]
[StringLength(1)]
public string StatusNo { get; set; }
/// <summary>
/// 圖檔
/// </summary>
[Column("IMAGE_NAME")]
[Display(Name = "圖檔")]
[DataMember]
public string ImageName { get; set; }
/// <summary>
/// 建立UserID
/// </summary>
[Column("CREATE_USERID")]
[DataMember]
public int CreateUserID { get; set; } = 0;
/// <summary>
/// 建立日期
/// </summary>
[Required]
[Column("CREATE_DATE")]
[DataMember]
public DateTime CreateDate { get; set; } = DateTime.Now;
/// <summary>
/// 更新UserID
/// </summary>
[Column("UPDATE_USERID")]
[DataMember]
public int UpdateUserID { get; set; } = 0;
/// <summary>
/// 更新日期
/// </summary>
[Column("UPDATE_DATE")]
[DataMember]
public DateTime? UpdateDate { get; set; } = DateTime.Now;
/// <summary>
/// 備註說明
/// </summary>
[DataMember]
[Display(Name = "備註說明")]
[Column("REMARK")]
public string Remark { get; set; }
/// <summary>
/// 流程站別資料
/// </summary>
[ForeignKey("TemplateID")]
[DataMember]
public virtual List<LabelTemplateDetail> GetLabelTemplateDetail { get; set; }
}
}

24
AMESCoreStudio.WebApi/Models/AMESContext.cs

@ -117,6 +117,7 @@ namespace AMESCoreStudio.WebApi
modelBuilder.Entity<FqcInhouseDetail>().HasKey(c => new { c.InhouseNo, c.SeqID, c.SerialNo }); modelBuilder.Entity<FqcInhouseDetail>().HasKey(c => new { c.InhouseNo, c.SeqID, c.SerialNo });
modelBuilder.Entity<FqcResultDetail>().HasKey(c => new { c.FqcID, c.BoxNo, c.BarcodeNo }); modelBuilder.Entity<FqcResultDetail>().HasKey(c => new { c.FqcID, c.BoxNo, c.BarcodeNo });
modelBuilder.Entity<FqcBarcode>().HasKey(c => new { c.FqcID, c.BarcodeID }); modelBuilder.Entity<FqcBarcode>().HasKey(c => new { c.FqcID, c.BarcodeID });
modelBuilder.Entity<FqcItem>().HasKey(c => new { c.FqcID, c.ItemID });
modelBuilder.Entity<FqcResultMasterBlob>().HasKey(e => new { e.FqcID, e.CreateDate }); modelBuilder.Entity<FqcResultMasterBlob>().HasKey(e => new { e.FqcID, e.CreateDate });
modelBuilder.Entity<NgInfo>().HasOne(r => r.Barcode).WithMany().HasForeignKey(r => r.BarcodeID).IsRequired(); modelBuilder.Entity<NgInfo>().HasOne(r => r.Barcode).WithMany().HasForeignKey(r => r.BarcodeID).IsRequired();
modelBuilder.Entity<NgInfo>().HasOne(r => r.Wip).WithMany().HasForeignKey(r => r.WipId).IsRequired(); modelBuilder.Entity<NgInfo>().HasOne(r => r.Wip).WithMany().HasForeignKey(r => r.WipId).IsRequired();
@ -155,7 +156,6 @@ namespace AMESCoreStudio.WebApi
modelBuilder.Entity<NGReason>().HasKey(c => new { c.NGClassNo, c.NGReasonNo }); modelBuilder.Entity<NGReason>().HasKey(c => new { c.NGClassNo, c.NGReasonNo });
modelBuilder.Entity<QcRate>().HasKey(c => new { c.Yrer, c.Month, c.QcRateType, c.ProductType }); modelBuilder.Entity<QcRate>().HasKey(c => new { c.Yrer, c.Month, c.QcRateType, c.ProductType });
modelBuilder.Entity<CSfisKeypart>().HasNoKey(); modelBuilder.Entity<CSfisKeypart>().HasNoKey();
modelBuilder.Entity<FqcItemGroupMaterial>().HasKey(c => new { c.GroupId, c.ItemId });
} }
/// <summary> /// <summary>
@ -654,6 +654,11 @@ namespace AMESCoreStudio.WebApi
/// </summary> /// </summary>
public virtual DbSet<FqcBarcode> FqcBarcodes { get; set; } public virtual DbSet<FqcBarcode> FqcBarcodes { get; set; }
/// <summary>
/// FQC细目資料檔
/// </summary>
public virtual DbSet<FqcItem> FqcItems { get; set; }
/// <summary> /// <summary>
/// 抽驗批退資料檔 /// 抽驗批退資料檔
/// </summary> /// </summary>
@ -997,24 +1002,25 @@ namespace AMESCoreStudio.WebApi
public DbSet<TestInfo> TestInfoes { get; set; } public DbSet<TestInfo> TestInfoes { get; set; }
/// <summary> /// <summary>
/// FQC檢驗項目群組綁定設定檔 /// 維修不良序號
/// </summary> /// </summary>
public virtual DbSet<FqcItem> FqcItems { get; set; } public DbSet<NgKeypart> NgKeyparts { get; set; }
/// <summary> /// <summary>
/// FQC檢驗項目群組名稱 /// 標籤參數設定
/// </summary> /// </summary>
public virtual DbSet<FqcItemGroup> FqcItemGroups { get; set; } public DbSet<LabelParam> LabelParams { get; set; }
/// <summary> /// <summary>
/// FQC檢驗項目群組指定料號設定檔 /// 標籤樣板維護
/// </summary> /// </summary>
public virtual DbSet<FqcItemGroupMaterial> FqcItemGroupMaterials { get; set; } public DbSet<LabelTemplateMaster> LabelTemplateMasters { get; set; }
/// <summary> /// <summary>
/// 維修不良序號 /// 標籤樣板維護Detail
/// </summary> /// </summary>
public DbSet<NgKeypart> NgKeyparts { get; set; } public DbSet<LabelTemplateDetail> LabelTemplateDetails { get; set; }
} }
} }

Loading…
Cancel
Save