Browse Source

1. FQC抽驗加入入庫單備註

2. 工單新增加入 "MoidByOnlyOne": "Y" 判斷是否只能有一筆工單號碼
PTD
Ray 2 years ago
parent
commit
49df1eed90
  1. 84
      AMESCoreStudio.Web/Controllers/PCSController.cs
  2. 10
      AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs
  3. 2
      AMESCoreStudio.Web/Views/FQC/FQC007.cshtml
  4. 75
      AMESCoreStudio.Web/Views/PCS/PCS003.cshtml
  5. 2
      AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseMasterController.cs
  6. 41
      AMESCoreStudio.WebApi/Controllers/AMES/WipInfoBlobController.cs
  7. 2
      AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs
  8. 42
      AMESCoreStudio.WebApi/Controllers/AMES/WipSopController.cs
  9. 5
      AMESCoreStudio.WebApi/DTO/AMES/WipSopDto.cs
  10. 8
      AMESCoreStudio.WebApi/Models/AMES/WipInfoBlob.cs
  11. 7
      AMESCoreStudio.WebApi/Models/AMES/WipSop.cs

84
AMESCoreStudio.Web/Controllers/PCSController.cs

@ -23,6 +23,7 @@ using AMESCoreStudio.WebApi.Enum;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using ClosedXML.Excel; using ClosedXML.Excel;
using Microsoft.VisualBasic;
namespace AMESCoreStudio.Web.Controllers namespace AMESCoreStudio.Web.Controllers
{ {
@ -141,13 +142,13 @@ namespace AMESCoreStudio.Web.Controllers
if (!string.IsNullOrWhiteSpace(Msg)) if (!string.IsNullOrWhiteSpace(Msg))
Msg = "必填欄位未填寫:" + Msg.Substring(0, (Msg.Length - 1)); Msg = "必填欄位未填寫:(" + Msg.Substring(0, (Msg.Length - 1)) + " )";
return Msg; return Msg;
} }
/// <summary> /// <summary>
/// 工單工程 存判斷 /// 工單工程 存判斷
/// </summary> /// </summary>
/// <param name="model"></param> /// <param name="model"></param>
/// <returns></returns> /// <returns></returns>
@ -265,8 +266,6 @@ namespace AMESCoreStudio.Web.Controllers
} }
#endregion #endregion
#region 下拉選單 #region 下拉選單
/// <summary> /// <summary>
/// 產品別 /// 產品別
@ -1455,6 +1454,38 @@ namespace AMESCoreStudio.Web.Controllers
var result = await _pcsApi.DeleteWipBarcodeOther(wipNo.Trim().ToUpper()); var result = await _pcsApi.DeleteWipBarcodeOther(wipNo.Trim().ToUpper());
return Json(new Result() { success = result.Success, msg = result.Msg, data = null }); return Json(new Result() { success = result.Success, msg = result.Msg, data = null });
} }
/// <summary>
/// 確認是否PLM有新的 ECN/ECR
/// </summary>
/// <param name="ItemNo">工單料號</param>
/// <param name="OldEcnEcr">目前ECN ECR</param>
/// <returns></returns>
public async Task<IActionResult> CheckUpdateEcnOrEcr(string ItemNo, string OldEcnEcr)
{
IResultModel<string> result;
result = await _fqcApi.GetPLMEcn(ItemNo);
if (result.Success)
{
// 如果舊的ECN/ECR 跟新的
//if (OldEcnEcr.Trim().ToUpper() == result.Msg.Trim().ToUpper())
//result.Msg = "";
}
return Json(new Result() { success = result.Success, msg = result.Msg, data = null });
}
/// <summary>
/// 刪除工單檔案
/// </summary>
/// <param name="wipNo">工單號碼</param>
/// <param name="fileName">檔案名稱</param>
/// <returns></returns>
[HttpPost]
public async Task<JsonResult> DeleteWipInfoBlob(string wipNo, string fileName)
{
var result = await _pcsApi.DeleteWipInfoBlobByFileName(wipNo, fileName);
return Json(new Result() { success = result.Success, msg = result.Msg, data = null });
}
#endregion #endregion
///// <summary> ///// <summary>
@ -1632,7 +1663,7 @@ namespace AMESCoreStudio.Web.Controllers
TempData["request"] = JsonConvert.SerializeObject(model); TempData["request"] = JsonConvert.SerializeObject(model);
return Redirect("PCS001N"); return Redirect("PCS001N");
} }
// //
await WipDataSelectAll(model.wipInfo.WipNO, model.wipAtt.ItemNO, model.wipInfo.UnitNO); await WipDataSelectAll(model.wipInfo.WipNO, model.wipAtt.ItemNO, model.wipInfo.UnitNO);
IResultModel result; IResultModel result;
int UserID = GetLogInUserID(); int UserID = GetLogInUserID();
@ -1652,10 +1683,18 @@ namespace AMESCoreStudio.Web.Controllers
// 判斷是否有開重複工單+生產單位 // 判斷是否有開重複工單+生產單位
var wipInfoQuery = await _pcsApi.GetWipInfoByWipNO(model.wipInfo.WipNO); var wipInfoQuery = await _pcsApi.GetWipInfoByWipNO(model.wipInfo.WipNO);
if (wipInfoQuery.Any()) if (wipInfoQuery.Any())
{ // 判斷工單號碼 在工單基本資料檔只能有一筆(不判斷是否不同製程)
ViewBag.MoidByOnlyOne = _configuration["MoidByOnlyOne"];
if (ViewBag.MoidByOnlyOne == "Y")
{ {
if (wipInfoQuery.Where(w => w.UnitNO == model.wipInfo.UnitNO).Count() != 0) if (wipInfoQuery.Count() != 0)
{ {
Msg += " 同樣生產單位已建立相同工單了 "; Msg += $",工單號碼【{model.wipInfo.WipNO}】已重複建立";
}
}
else if (wipInfoQuery.Where(w => w.UnitNO == model.wipInfo.UnitNO).Count() != 0)
{
Msg += ",同樣生產單位已建立相同工單了";
} }
} }
@ -1693,8 +1732,11 @@ namespace AMESCoreStudio.Web.Controllers
model.wipInfo.CustomerMedical = model.wipInfo.CustomerMedical == "Y" ? "true" : "false"; model.wipInfo.CustomerMedical = model.wipInfo.CustomerMedical == "Y" ? "true" : "false";
model.wipInfo.CustomerVIP = model.wipInfo.CustomerVIP == "Y" ? "true" : "false"; model.wipInfo.CustomerVIP = model.wipInfo.CustomerVIP == "Y" ? "true" : "false";
model.wipInfo.SFISFlowCk = model.wipInfo.SFISFlowCk == "Y" ? "true" : "false"; model.wipInfo.SFISFlowCk = model.wipInfo.SFISFlowCk == "Y" ? "true" : "false";
ModelState.AddModelError("error", Msg);
if (Msg.StartsWith(","))
Msg = Msg.Substring(1, Msg.Length - 1);
ModelState.AddModelError("error", Msg);
return View("PCS001N", model); return View("PCS001N", model);
} }
@ -2578,8 +2620,6 @@ namespace AMESCoreStudio.Web.Controllers
wipDataViewModel.wipBarcodeOther = model.wipBarcodeOther; wipDataViewModel.wipBarcodeOther = model.wipBarcodeOther;
var Msg = CheckWipInfoInsert(wipDataViewModel); var Msg = CheckWipInfoInsert(wipDataViewModel);
// 判斷是否有開重複工單+生產單位 // 判斷是否有開重複工單+生產單位
var wipInfoQuery = await _pcsApi.GetWipInfoByWipNO(model.wipInfo.WipNO); var wipInfoQuery = await _pcsApi.GetWipInfoByWipNO(model.wipInfo.WipNO);
if (wipInfoQuery.Any()) if (wipInfoQuery.Any())
@ -2614,13 +2654,6 @@ namespace AMESCoreStudio.Web.Controllers
Msg += ",SOP文件 請填寫SOP文件敘述 "; Msg += ",SOP文件 請填寫SOP文件敘述 ";
} }
//// 判斷MAC是否正確
//var CheckMACMsg = CheckMACData(model);
//if (!string.IsNullOrWhiteSpace(CheckMACMsg))
//{
// Msg += "," + CheckMACMsg;
//}
// 判斷標籤 工單性質選擇 WipAttr非標96工單時,則旁邊欄位必填 // 判斷標籤 工單性質選擇 WipAttr非標96工單時,則旁邊欄位必填
if (model.wipLabel.WipAttr == "B" && string.IsNullOrWhiteSpace(model.wipLabel.NonstandardWoMemo)) if (model.wipLabel.WipAttr == "B" && string.IsNullOrWhiteSpace(model.wipLabel.NonstandardWoMemo))
{ {
@ -8302,6 +8335,23 @@ namespace AMESCoreStudio.Web.Controllers
} }
foreach (var item in model.WipSops.Where(w => w.WipSOPID != -1)) foreach (var item in model.WipSops.Where(w => w.WipSOPID != -1))
{ {
// 判斷是否有紀錄Sop版本,沒有需要建立第一版
if (item.SOPType == "A")
{
var SopVer = await _pcsApi.GetWipSopForSopVer(model.wipInfo.WipNO, model.wipAtt.ItemNO, item.SOPName);
if (SopVer.Success)
{
if (SopVer.Msg == "N")
{
var GetSopVer = await _pcsApi.GetDocEsopViewByNo(item.SOPName);
if (GetSopVer.Count != 0)
{
item.SOPVer = GetSopVer.FirstOrDefault().document_version;
}
}
}
}
item.WipNo = model.wipInfo.WipNO; item.WipNo = model.wipInfo.WipNO;
item.ItemNo = model.wipAtt.ItemNO; item.ItemNo = model.wipAtt.ItemNO;
item.CreateUserID = UserID; item.CreateUserID = UserID;

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

@ -1217,6 +1217,13 @@ namespace AMESCoreStudio.Web
/// <returns></returns> /// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/WipSop/{id}")] [WebApiClient.Attributes.HttpDelete("api/WipSop/{id}")]
ITask<ResultModel<WipSop>> DeleteWipSop(int id); ITask<ResultModel<WipSop>> DeleteWipSop(int id);
/// <summary>
/// 查詢是否有紀錄SOP版本
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/WipSop/SelectSopVer")]
ITask<ResultModel<WipSop>> GetWipSopForSopVer(string wipNo = "", string itemNo = "", string sopName = "");
#endregion #endregion
#region RuleStation 流程站別資料維護 #region RuleStation 流程站別資料維護
@ -1293,6 +1300,9 @@ namespace AMESCoreStudio.Web
[WebApiClient.Attributes.HttpGet("api/WipInfoBlob/ByWipNo/{id}")] [WebApiClient.Attributes.HttpGet("api/WipInfoBlob/ByWipNo/{id}")]
ITask<List<WipInfoBlob>> GetWipInfoBlob(string id); ITask<List<WipInfoBlob>> GetWipInfoBlob(string id);
[WebApiClient.Attributes.HttpDelete("api/WipInfoBlob/ByFileName")]
ITask<ResultModel<WipInfoBlob>> DeleteWipInfoBlobByFileName(string wipNo, string fileName);
#endregion #endregion
#region OutfitCommodityInfo 治具種類資料檔 #region OutfitCommodityInfo 治具種類資料檔

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

@ -344,7 +344,7 @@
</div> </div>
<div class="layui-row"> <div class="layui-row">
<div class="layui-col-xs1"> <div class="layui-col-xs1">
<label class="layui-form-label-col" style="text-align:right;">入庫單備註描述:</label> <label class="layui-form-label-col" style="text-align:right;">入庫單備註:</label>
</div> </div>
<div class="layui-col-xs11"> <div class="layui-col-xs11">
<div class="layui-form-item"> <div class="layui-form-item">

75
AMESCoreStudio.Web/Views/PCS/PCS003.cshtml

@ -198,12 +198,14 @@
</div> </div>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-inline"> <div class="layui-inline">
<label asp-for="wipAtt.ECN" class="layui-form-label"></label> <label asp-for="wipAtt.ECN" class="layui-form-label"></label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input asp-for="wipAtt.ECN" class="layui-input" /> <input asp-for="wipAtt.ECN" style="width: 150px; display: initial" class="layui-input" />
<a onclick="GetPLM_ECN();" class="layui-btn layui-btn-sm layui-btn-normal" style="padding: 0 5px;" title="更新ECN/ECR">
<i class="layui-icon layui-icon-sm">&#xe669;</i>
</a>
</div> </div>
<label asp-for="wipAtt.EAN" class="layui-form-label"></label> <label asp-for="wipAtt.EAN" class="layui-form-label"></label>
<div class="layui-input-inline"> <div class="layui-input-inline">
@ -1104,10 +1106,11 @@
<table lay-filter="demo" class="layui-table"> <table lay-filter="demo" class="layui-table">
<thead> <thead>
<tr> <tr>
Remark
<th lay-data="{field:'username'}">檔案名稱</th> <th lay-data="{field:'username'}">檔案名稱</th>
<th lay-data="{field:'experience', sort:true}">檔案路徑</th> <th lay-data="{field:'experience', sort:true}">檔案路徑</th>
<th lay-data="{field:'right', width:80, sort:true}">預覽</th> <th lay-data="{field:'remark'}">備註</th>
<th lay-data="{field:'right', width:80, sort:true}">下載</th> <th lay-data="{field:'right', width:120, sort:true}"></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -1121,10 +1124,13 @@
<span id="Filepath">@index.Filepath</span> <span id="Filepath">@index.Filepath</span>
</td> </td>
<td> <td>
<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-read" onclick="show(this)">預覽</a> <span id="Remark">@index.Remark</span>
</td> </td>
<td> <td>
<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-read" onclick="show(this)">預覽</a>
<a class="layui-btn layui-btn-normal layui-btn-xs" onclick="filedownload(this)">下載</a> <a class="layui-btn layui-btn-normal layui-btn-xs" onclick="filedownload(this)">下載</a>
<a class="layui-btn layui-btn-normal layui-btn-xs layui-btn-danger" onclick="deleteFile(this)">刪除</a>
</td> </td>
</tr> </tr>
} }
@ -1306,7 +1312,6 @@
// 刪除出貨序號 // 刪除出貨序號
$("#DeleteBarcodeOther").click(function (event) { $("#DeleteBarcodeOther").click(function (event) {
layer.confirm('確定是否要刪除出貨序號?', { layer.confirm('確定是否要刪除出貨序號?', {
btn: ['確定', '取消'] btn: ['確定', '取消']
}, function () { }, function () {
@ -1485,6 +1490,40 @@
$(obj).attr("href", filePath); $(obj).attr("href", filePath);
}; };
// 檔案刪除
function deleteFile(obj) {
layer.confirm('確定是否要刪除該筆檔案?', {
btn: ['確定', '取消']
}, function () {
layer.closeAll('dialog');
var FileName = $(obj).closest("TR").find('span[id*=FileName]').text();
$.ajax({
url: '@Url.Action("DeleteWipInfoBlobByFileName", "PCS")',
dataType: 'json',
data: { "wipNo": '@Model.wipInfo.WipNO', "fileName": FileName },
cache: false,
type: "POST",
success: function (result) {
// 錯誤訊息
if (!result.success) {
parent.hg.msg(result.msg);
}
else {
$("#wipBarcodeOther_StartNO").val('');
$("#wipBarcodeOther_EndNO").val('');
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert("檔案刪除失敗,請洽系統管理員!!");
}
});
})
var Path = $(obj).closest("TR").find('span[id*=Filepath]').text();
var FileName = $(obj).closest("TR").find('span[id*=FileName]').text();
filePath = `/PCS/FileDownload?Path=${Path}&FileName=${FileName}`;
$(obj).attr("href", filePath);
}
function getFlowRuleList(data) { function getFlowRuleList(data) {
$.ajax( $.ajax(
{ {
@ -1922,6 +1961,30 @@
}); });
// 更新ECN or ECR
function GetPLM_ECN() {
$.ajax({
url: "@Url.Action("FQC007GetPLMECN", "FQC")",
type: "Post",
data: { "ItemNo": '@Model.wipAtt.ItemNO' },
success: function (result) {
if (result.success) {
var result_msg = result.msg;
if ('@Model.wipAtt.ItemNO')
layer.confirm('比對與PLM ECN/ECR不一樣,確定更新ECN/ECR嗎?', {
btn: ['確定', '取消']
},
$("#wipAtt_ECN").val(result_msg);
}
else {
parent.hg.msg(result.msg);
}
},
error: function (result) {
parent.hg.msg(`呼叫API失敗`);
}
});
}
</script> </script>
} }

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

@ -263,7 +263,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
SpecialPo = q2.SpecialPo, SpecialPo = q2.SpecialPo,
StatusName = q1.Status == "P" ? string.IsNullOrWhiteSpace(q2.SpecialPo) ? "允收Pass" : "特採允收" : q1.Status == "R" ? "批退Reject" : "", StatusName = q1.Status == "P" ? string.IsNullOrWhiteSpace(q2.SpecialPo) ? "允收Pass" : "特採允收" : q1.Status == "R" ? "批退Reject" : "",
FqcID = q2.WipNo == null ? 0 : q2.FqcID, FqcID = q2.WipNo == null ? 0 : q2.FqcID,
InhouseMemo = q2.InhouseMemo, InhouseMemo = q1.InhouseMemo,
ManualQaMeno = q2.ManualQaMeno, ManualQaMeno = q2.ManualQaMeno,
QaMeno = q2.QaMeno, QaMeno = q2.QaMeno,
CustomerNo = q4.CustomerNO, CustomerNo = q4.CustomerNO,

41
AMESCoreStudio.WebApi/Controllers/AMES/WipInfoBlobController.cs

@ -127,6 +127,47 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return wipInfoBlob; return wipInfoBlob;
} }
/// <summary>
/// 刪除工單上傳檔案
/// </summary>
/// <param name="wipNo">工單號碼</param>
/// <param name="fileName">檔案名稱</param>
/// <returns></returns>
[HttpDelete("ByFileName")]
public async Task<ResultModel<WipInfoBlob>> DeleteWipInfoBlobByFileName(string wipNo, string fileName)
{
ResultModel<WipInfoBlob> result = new ResultModel<WipInfoBlob>();
if (!string.IsNullOrWhiteSpace(wipNo) && !string.IsNullOrWhiteSpace(fileName))
{
result.Success = false;
result.Msg = "請輸入要刪除的資料";
}
else
{
var wipInfoBlob = await _context.WipInfoBlobs.Where(w => w.WipNo.Trim().ToUpper() == wipNo.Trim().ToUpper() &&
w.ImageName.Trim().ToUpper() == fileName.Trim().ToUpper()).ToListAsync();
if (wipInfoBlob.Count() != 0)
{
try
{
_context.WipInfoBlobs.Remove(wipInfoBlob.FirstOrDefault());
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
}
}
return result;
}
private bool WipInfoBlobExists(int id) private bool WipInfoBlobExists(int id)
{ {
return _context.WipInfoBlobs.Any(e => e.WipBlobID == id); return _context.WipInfoBlobs.Any(e => e.WipBlobID == id);

2
AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs

@ -1813,7 +1813,7 @@ FROM [SFIS].[dbo].[ZPDKeyPart] B WHERE B.[IsActive] = 1 AND B.[ProductSN] = (S
[HttpGet("WipInfoByWipNo/{wipno}")] [HttpGet("WipInfoByWipNo/{wipno}")]
public async Task<ActionResult<IEnumerable<WipInfo>>> GetWipInfoByWipNo(string wipno) public async Task<ActionResult<IEnumerable<WipInfo>>> GetWipInfoByWipNo(string wipno)
{ {
IQueryable<WipInfo> q = _context.WipInfos.Where(w => w.WipNO == wipno); IQueryable<WipInfo> q = _context.WipInfos.Where(w => w.WipNO.ToUpper().Trim() == wipno.ToUpper().Trim());
var WipInfo = await q.ToListAsync(); var WipInfo = await q.ToListAsync();
return WipInfo; return WipInfo;
} }

42
AMESCoreStudio.WebApi/Controllers/AMES/WipSopController.cs

@ -89,6 +89,43 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return result; return result;
} }
/// <summary>
/// 查詢是否有紀錄SOP版本
/// </summary>
/// <param name="wipNo">工單號碼</param>
/// <param name="itemNo">料號</param>
/// <param name="sopName">SOP文號</param>
/// <returns></returns>
[HttpGet("SelectSopVer")]
public async Task<ResultModel<WipSop>> GetWipSopForSopVer(string wipNo = "", string itemNo = "", string sopName = "")
{
ResultModel<WipSop> result = new ResultModel<WipSop>();
IQueryable<WipSop> q = _context.WipSops.Where(w => w.WipNo.Trim().ToUpper() == wipNo.Trim().ToUpper() &&
w.ItemNo.Trim().ToUpper() == itemNo.Trim().ToUpper() &&
w.SOPName.Trim().ToUpper() == sopName.Trim().ToUpper() &&
w.SOPType == "A" && string.IsNullOrWhiteSpace(w.SOPVer));
var query = await q.ToListAsync();
try
{
if (query.Count() == 0)
{
result.Msg = "N";
}
else
{
result.Msg = "Y";
}
result.Success = true;
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
/// <summary> /// <summary>
/// 新增工單製程對應SOP資料檔 /// 新增工單製程對應SOP資料檔
/// </summary> /// </summary>
@ -97,7 +134,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
[HttpPost] [HttpPost]
public async Task<ResultModel<WipSop>> PostWipSop([FromBody] WipSop wipSop) public async Task<ResultModel<WipSop>> PostWipSop([FromBody] WipSop wipSop)
{ {
ResultModel<WipSop> result = new ResultModel<WipSop>(); ResultModel<WipSop> result = new ResultModel<WipSop>();
Helper helper = new Helper(_context); Helper helper = new Helper(_context);
wipSop.WipSOPID = helper.GetIDKey("WIP_SOP_ID").Result; wipSop.WipSOPID = helper.GetIDKey("WIP_SOP_ID").Result;
@ -122,9 +158,9 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="wipSop"></param> /// <param name="wipSop"></param>
/// <returns></returns> /// <returns></returns>
[HttpPut] [HttpPut]
public async Task<ResultModel<WipKp>> PutWipSop(WipSop wipSop) public async Task<ResultModel<WipSop>> PutWipSop(WipSop wipSop)
{ {
ResultModel<WipKp> result = new ResultModel<WipKp>(); ResultModel<WipSop> result = new ResultModel<WipSop>();
_context.Entry(wipSop).State = EntityState.Modified; _context.Entry(wipSop).State = EntityState.Modified;
//設置容器空間某一個模型的某一個欄位 不提交到資料庫 //設置容器空間某一個模型的某一個欄位 不提交到資料庫
//DbContent.Entry是要更新到資料庫的整個對象 //DbContent.Entry是要更新到資料庫的整個對象

5
AMESCoreStudio.WebApi/DTO/AMES/WipSopDto.cs

@ -66,6 +66,11 @@ namespace AMESCoreStudio.WebApi.DTO.AMES
public string UnitNoName { get; set; } public string UnitNoName { get; set; }
/// <summary>
/// SOP第一次版本
/// </summary>
public string SOPVer { get; set; }
/// <summary> /// <summary>
/// 建立UserID /// 建立UserID
/// </summary> /// </summary>

8
AMESCoreStudio.WebApi/Models/AMES/WipInfoBlob.cs

@ -58,6 +58,14 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[DataMember] [DataMember]
public string Filepath { get; set; } public string Filepath { get; set; }
/// <summary>
/// 檔案備註
/// </summary>
[Column("REMARK")]
[StringLength(500)]
[DataMember]
public string Remark { get; set; }
/// <summary> /// <summary>
/// 建立UserID /// 建立UserID
/// </summary> /// </summary>

7
AMESCoreStudio.WebApi/Models/AMES/WipSop.cs

@ -72,6 +72,13 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[StringLength(10)] [StringLength(10)]
public string UnitNo { get; set; } public string UnitNo { get; set; }
/// <summary>
/// SOP第一次版本
/// </summary>
[Column("SOP_VER")]
[DataMember]
public string SOPVer { get; set; }
/// <summary> /// <summary>
/// 建立UserID /// 建立UserID
/// </summary> /// </summary>

Loading…
Cancel
Save