Browse Source

1. 修改工單查詢 檢驗完成日期顯示判斷

2. 調整工單維護中 抓取安勤提供api
3. FQC查詢畫面 抽驗完成時間調整
PTD
Sai 2 years ago
parent
commit
5dd577e53c
  1. 33
      AMESCoreStudio.Web/Controllers/PCSController.cs
  2. 2
      AMESCoreStudio.Web/Views/FQC/FQC008.cshtml
  3. 21
      AMESCoreStudio.Web/Views/PCS/PCS001N.cshtml
  4. 234
      AMESCoreStudio.Web/Views/PCS/PCS003.cshtml
  5. 46
      AMESCoreStudio.Web/Views/PCS/PCS034.cshtml
  6. 4
      AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs
  7. 9
      AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs

33
AMESCoreStudio.Web/Controllers/PCSController.cs

@ -1519,6 +1519,7 @@ namespace AMESCoreStudio.Web.Controllers
var result = await _pcsApi.GetItApiEcnByWipNo(wipNo); var result = await _pcsApi.GetItApiEcnByWipNo(wipNo);
var json = JsonConvert.DeserializeObject<WebApi.Models.aValue_API.ProductDetail>(result); var json = JsonConvert.DeserializeObject<WebApi.Models.aValue_API.ProductDetail>(result);
return Json(new Result() { success = true, data = json }); return Json(new Result() { success = true, data = json });
} }
#endregion #endregion
@ -3279,6 +3280,7 @@ namespace AMESCoreStudio.Web.Controllers
public async Task<JsonResult> GetMAC(string itemno, string wipNo, int planQTY) public async Task<JsonResult> GetMAC(string itemno, string wipNo, int planQTY)
{ {
string msg = string.Empty;
var q = await _pcsApi.GetMACInfo(itemno); var q = await _pcsApi.GetMACInfo(itemno);
if (q != null) if (q != null)
@ -3286,13 +3288,16 @@ namespace AMESCoreStudio.Web.Controllers
// 工單數量*單板MAC數 // 工單數量*單板MAC數
var MacQty = planQTY * q.Qty; var MacQty = planQTY * q.Qty;
var wipMAC = await _pcsApi.GetWipMAC(wipNo); var wipMAC = await _pcsApi.GetWipMAC(wipNo);
// 目前該筆供單已取MAC數量
var getWipMacQty = wipMAC.Select(s => s.Qty).Sum(); var getWipMacQty = wipMAC.Select(s => s.Qty).Sum();
// 判斷目前工單數量*單板MAC數 == DB已記使用MAC數量 // 判斷目前工單數量*單板MAC數 == DB已記使用MAC數量
if (planQTY * q.Qty <= getWipMacQty) if (planQTY * q.Qty <= getWipMacQty)
{ {
return Json(new { _msg = "已取滿MAC數量,請在確認" }); msg = "該筆工單已取滿MAC數量,請在確認";
return Json(new Result() { success = false, data = null, msg = msg });
} }
// 剩下工單未取MAC數量
MacQty = MacQty - getWipMacQty; MacQty = MacQty - getWipMacQty;
// 當前值 16 進位 // 當前值 16 進位
@ -3300,20 +3305,31 @@ namespace AMESCoreStudio.Web.Controllers
var Entire = new Code.Entire(); var Entire = new Code.Entire();
// 最小值 // Table 當前值 最小值
var Mix = (int.Parse(Entire.DecHex(Value, "HexToDec")) + 1); var Mix = (int.Parse(Entire.DecHex(Value, "HexToDec")) + 1);
if (Mix > int.Parse(Entire.DecHex(q.Max.ToString(), "HexToDec")))
{
msg = "可使用MAC區間已用完,請在確認";
return Json(new Result() { success = false, data = null, msg = msg });
}
// 最大值 // 最大值
var Max = (int.Parse(Entire.DecHex(Value, "HexToDec")) + MacQty); var Max = (int.Parse(Entire.DecHex(Value, "HexToDec")) + MacQty);
// 當最大值 > DB設定最大值 已超過目前區間
// 當最大值 > DB設定最大值
if (Max > int.Parse(Entire.DecHex(q.Max.ToString(), "HexToDec"))) if (Max > int.Parse(Entire.DecHex(q.Max.ToString(), "HexToDec")))
{ {
return Json(new { _msg = "自動配MAC已超過設定最大值,請在確認!" }); // 先把剩下區間用完
Max = int.Parse(Entire.DecHex(q.Max.ToString(), "HexToDec"));
// 取剩下的MAC數量
msg = $"已將剩下MAC區間取完:【{Max - Mix + 1}】pcs,尚有:【{MacQty - (Max - Mix + 1)}】pcs還沒取,請再申請一組新的MAC區間";
MacQty = Max - Mix + 1;
// return Json(new { _msg = "自動配MAC已超過設定最大值,請在確認!" });
} }
// 低於安全量 Mail通知 // 低於安全量 Mail通知
// 取完剩餘數量 // 取完剩餘數量
var NowQty = Max - int.Parse(Entire.DecHex(q.Max.ToString(), "HexToDec")); var NowQty = int.Parse(Entire.DecHex(q.Max.ToString(), "HexToDec")) - Max;
if (NowQty <= q.SafeQty) if (NowQty <= q.SafeQty)
{ {
@ -3339,9 +3355,10 @@ namespace AMESCoreStudio.Web.Controllers
mix = MACstr, mix = MACstr,
max = MACend, max = MACend,
}; };
return Json(x); return Json(new Result() { success = true, data = x, msg = msg });
} }
return Json(new { _msg = "查無相關MAC對應" }); msg = "查無相關MAC對應";
return Json(new Result() { success = false, data = null, msg = msg });
} }
/// <summary> /// <summary>

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

@ -233,7 +233,7 @@
field: 'endTime', field: 'endTime',
title: '抽驗結束時間', title: '抽驗結束時間',
sort: true, sort: true,
templet: '<div>{{ layui.util.toDateString(d.endTime, "yyyy/MM/dd") }}</div>' templet: '<div>{{ layui.util.toDateString(d.endTime, "yyyy/MM/dd HH:mm:ss") }}</div>'
}, },
{ {
field: 'qaMemo', field: 'qaMemo',

21
AMESCoreStudio.Web/Views/PCS/PCS001N.cshtml

@ -506,11 +506,11 @@
}); });
// 產生MAC // 產生MAC
$("#GetMAC").click(function (event) { $("#GetMAC").click(function (event) {
var wipNO = $('#wipAtt_ItemNO').val(); var wipNO = $('#wipAtt_ItemNO').val();
var planQTY = $('#wipInfo_PlanQTY').val(); var planQTY = $('#wipInfo_PlanQTY').val();
if (wipNO == '' || !wipNO) { if (wipNO == '' || !wipNO) {
parent.hg.msg("請輸入號"); parent.hg.msg("請輸入工程編號");
return; return;
} }
if (planQTY == '' || !planQTY || planQTY == 0) { if (planQTY == '' || !planQTY || planQTY == 0) {
@ -520,18 +520,19 @@
$.ajax({ $.ajax({
url: '@Url.Action("GetMAC", "PCS")', url: '@Url.Action("GetMAC", "PCS")',
dataType: 'json', dataType: 'json',
data: { "itemno": $("#wipAtt_ItemNO").val(), "wipNo": $('#wipInfo_WipNO').val() ,"planQTY": $('#wipInfo_PlanQTY').val() }, data: { "itemno": $("#wipAtt_ItemNO").val(), "wipNo": $('#wipInfo_WipNO').val(), "planQTY": $('#wipInfo_PlanQTY').val() },
cache: false, cache: false,
type: "POST", type: "POST",
success: function (data, textStatus, jqXHR) { success: function (result, textStatus, jqXHR) {
if (data._msg != undefined) { if (result.success) {
parent.hg.msg(data._msg); var contactdiv = `<tr><td>${result.data.mix}</td><td>${result.data.max}</td></tr>`;
$('#MACTable').append(contactdiv);
if (result.msg.length != 0) {
parent.hg.msg(result.msg);
}
} }
else { else {
var contactdiv = '<tr>' + parent.hg.msg(result.msg);
`<td>${data.mix}</td>
<td>${data.max}</td></tr>`;
$('#MACTable').append(contactdiv);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {

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

@ -250,14 +250,14 @@
<tbody> <tbody>
@foreach (var index in Model.wipBarcodes) @foreach (var index in Model.wipBarcodes)
{ {
<tr> <tr>
<td> <td>
@index.StartNO @index.StartNO
</td> </td>
<td> <td>
@index.EndNO @index.EndNO
</td> </td>
</tr> </tr>
} }
</tbody> </tbody>
</table> </table>
@ -309,14 +309,14 @@
<tbody> <tbody>
@foreach (var index in Model.wipMACs) @foreach (var index in Model.wipMACs)
{ {
<tr> <tr>
<td> <td>
@index.Title@index.StartNO @index.Title@index.StartNO
</td> </td>
<td> <td>
@index.Title@index.EndNO @index.Title@index.EndNO
</td> </td>
</tr> </tr>
} }
</tbody> </tbody>
</table> </table>
@ -381,30 +381,30 @@
<tbody> <tbody>
@foreach (var index in Model.WipKps) @foreach (var index in Model.WipKps)
{ {
<tr> <tr>
<td> <td>
<input name="WipKps[@k].WipKpID" type="hidden" value="@index.WipKpID" /> <input name="WipKps[@k].WipKpID" type="hidden" value="@index.WipKpID" />
<input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.KpName" name="WipKps[@k].KpName" /> <input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.KpName" name="WipKps[@k].KpName" />
</td> </td>
<td> <td>
<select asp-for="@index.KpNo" name="WipKps[@k].KpNo" asp-items="@ViewBag.ItemsList" class=""></select> <select asp-for="@index.KpNo" name="WipKps[@k].KpNo" asp-items="@ViewBag.ItemsList" class=""></select>
</td> </td>
<td> <td>
<input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.KpSeq" name="WipKps[@k].KpSeq" /> <input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.KpSeq" name="WipKps[@k].KpSeq" />
</td> </td>
<td> <td>
<input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.Title" name="WipKps[@k].Title" /> <input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.Title" name="WipKps[@k].Title" />
</td> </td>
<td> <td>
<input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.Length" name="WipKps[@k].Length" /> <input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.Length" name="WipKps[@k].Length" />
</td> </td>
<td> <td>
<select asp-for="@index.UnitNo" name="WipKps[@k].UnitNo" asp-items="@ViewBag.FactoryUnitByWipNo" class=""></select> <select asp-for="@index.UnitNo" name="WipKps[@k].UnitNo" asp-items="@ViewBag.FactoryUnitByWipNo" class=""></select>
</td> </td>
<td> <td>
<a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" onclick="Remove(this);">刪除</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" onclick="Remove(this);">刪除</a>
</td> </td>
</tr> </tr>
k++; k++;
} }
</tbody> </tbody>
@ -455,11 +455,11 @@
<input asp-for="itemNoCT1" type="hidden" value="@Model.itemNoCT1" /> <input asp-for="itemNoCT1" type="hidden" value="@Model.itemNoCT1" />
@if (!string.IsNullOrWhiteSpace(Model.itemNoCT1)) @if (!string.IsNullOrWhiteSpace(Model.itemNoCT1))
{ {
<span style="color:red">有維護標準工時</span> <span style="color:red">有維護標準工時</span>
} }
else else
{ {
<span style="color:red">**無維護標準工時**</span> <span style="color:red">**無維護標準工時**</span>
} }
</div> </div>
</div> </div>
@ -502,9 +502,9 @@
<label class="layui-form-label">DIP</label> <label class="layui-form-label">DIP</label>
<div class="layui-input-block"> <div class="layui-input-block">
<cl-checkbox asp-items="@ViewBag.GetCheckboxDIP" asp-for="wipBoard.DipSides" asp-skin="defult"></cl-checkbox> <cl-checkbox asp-items="@ViewBag.GetCheckboxDIP" asp-for="wipBoard.DipSides" asp-skin="defult"></cl-checkbox>
<input @if (Model.wipBoard != null) { @(Model.wipBoard.DipCarrier == "Y" ? "checked" : "") } type="checkbox" title="CARRIER" name="wipBoard.DipCarrier" /> <input @if (Model.wipBoard != null) { @(Model.wipBoard.DipCarrier == "Y" ? "checked" : "") } type="checkbox" title="CARRIER" name="wipBoard.DipCarrier" />
<input @if (Model.wipBoard != null) { @(Model.wipBoard.DipTape == "Y" ? "checked" : "") } type="checkbox" title="貼付膠帶" name="wipBoard.DipTape" /> <input @if (Model.wipBoard != null) { @(Model.wipBoard.DipTape == "Y" ? "checked" : "") } type="checkbox" title="貼付膠帶" name="wipBoard.DipTape" />
<input @if (Model.wipBoard != null) { @(Model.wipBoard.DipSolderMask == "Y" ? "checked" : "") } type="checkbox" title="點防焊膠" name="wipBoard.DipSolderMask" /> <input @if (Model.wipBoard != null) { @(Model.wipBoard.DipSolderMask == "Y" ? "checked" : "") } type="checkbox" title="點防焊膠" name="wipBoard.DipSolderMask" />
</div> </div>
</div> </div>
</div> </div>
@ -520,7 +520,7 @@
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">燒錄</label> <label class="layui-form-label">燒錄</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input @if (Model.wipBoard != null) { @(Model.wipBoard.Burn == "Y" ? "checked" : "") } type="checkbox" title="是否燒入" name="wipBoard.Burn" /> <input @if (Model.wipBoard != null) { @(Model.wipBoard.Burn == "Y" ? "checked" : "") } type="checkbox" title="是否燒入" name="wipBoard.Burn" />
</div> </div>
<label class="layui-form-label">燒機位置</label> <label class="layui-form-label">燒機位置</label>
@ -541,7 +541,7 @@
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">零件烘烤</label> <label class="layui-form-label">零件烘烤</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input @if (Model.wipBoard != null) { @(Model.wipBoard.ISPartsBake == "Y" ? "checked" : "") } type="checkbox" title="零件是否需要烘烤" name="wipBoard.ISPartsBake" /> <input @if (Model.wipBoard != null) { @(Model.wipBoard.ISPartsBake == "Y" ? "checked" : "") } type="checkbox" title="零件是否需要烘烤" name="wipBoard.ISPartsBake" />
</div> </div>
<label class="layui-form-label">零件烘烤溫度</label> <label class="layui-form-label">零件烘烤溫度</label>
<div class="layui-input-inline" style="width:100px"> <div class="layui-input-inline" style="width:100px">
@ -554,7 +554,7 @@
</div> </div>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input @if (Model.wipBoard != null) { @(Model.wipBoard.PartsBakeOvertime == "Y" ? "checked" : "") } type="checkbox" title="零件烘烤超過48hrs" name="wipBoard.PartsBakeOvertime" /> <input @if (Model.wipBoard != null) { @(Model.wipBoard.PartsBakeOvertime == "Y" ? "checked" : "") } type="checkbox" title="零件烘烤超過48hrs" name="wipBoard.PartsBakeOvertime" />
</div> </div>
</div> </div>
</div> </div>
@ -570,7 +570,7 @@
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">PCB烘烤</label> <label class="layui-form-label">PCB烘烤</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input @if (Model.wipBoard != null) { @(Model.wipBoard.ISPcbBake == "Y" ? "checked" : "") } type="checkbox" title="PCB是否需要烘烤" name="wipBoard.ISPcbBake" /> <input @if (Model.wipBoard != null) { @(Model.wipBoard.ISPcbBake == "Y" ? "checked" : "") } type="checkbox" title="PCB是否需要烘烤" name="wipBoard.ISPcbBake" />
</div> </div>
<div class="layui-input-inline"> <div class="layui-input-inline">
<select asp-items="@ViewBag.GetPCBBakeTypeSelect" asp-for="wipBoard.PcbBake" class=""></select> <select asp-items="@ViewBag.GetPCBBakeTypeSelect" asp-for="wipBoard.PcbBake" class=""></select>
@ -700,11 +700,11 @@
<input asp-for="itemNoCT1" type="hidden" value="@Model.itemNoCT1" /> <input asp-for="itemNoCT1" type="hidden" value="@Model.itemNoCT1" />
@if (!string.IsNullOrWhiteSpace(Model.itemNoCT1)) @if (!string.IsNullOrWhiteSpace(Model.itemNoCT1))
{ {
<span style="color:red">有維護標準工時</span> <span style="color:red">有維護標準工時</span>
} }
else else
{ {
<span style="color:red">**無維護標準工時**</span> <span style="color:red">**無維護標準工時**</span>
} }
</div> </div>
</div> </div>
@ -878,7 +878,7 @@
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">FINE_PACKAGE</label> <label class="layui-form-label">FINE_PACKAGE</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input @if (Model.wipSystem != null) { @(Model.wipSystem.FinePackage == "Y" ? "checked" : "") } type="checkbox" title="是否為精裝" name="wipSystem.FinePackage" /> <input @if (Model.wipSystem != null) { @(Model.wipSystem.FinePackage == "Y" ? "checked" : "") } type="checkbox" title="是否為精裝" name="wipSystem.FinePackage" />
</div> </div>
</div> </div>
</div> </div>
@ -952,23 +952,23 @@
<tbody> <tbody>
@foreach (var index in Model.WipOutfits) @foreach (var index in Model.WipOutfits)
{ {
<tr> <tr>
<td>
<input name="WipOutfits[@l].WipOutfitID" type="hidden" value="@index.WipOutfitID" />
<select asp-for="@index.PartNo" name="WipOutfits[@l].PartNo" asp-items="@ViewBag.OutfitCommodityInfo" class=""></select>
</td>
<td>
<select asp-for="@index.UnitNo" name="WipOutfits[@l].UnitNo" asp-items="@ViewBag.FactoryUnitByWipNo" class=""></select>
</td>
<td> <td>
<select asp-for="@index.StationID" name="WipOutfits[@l].StationID" asp-items="@ViewBag.RuleStationByWipNoUnitNoList" class=""></select> <input name="WipOutfits[@l].WipOutfitID" type="hidden" value="@index.WipOutfitID" />
</td> <select asp-for="@index.PartNo" name="WipOutfits[@l].PartNo" asp-items="@ViewBag.OutfitCommodityInfo" class=""></select>
<td> </td>
<a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" onclick="Remove(this);">刪除</a> <td>
</td> <select asp-for="@index.UnitNo" name="WipOutfits[@l].UnitNo" asp-items="@ViewBag.FactoryUnitByWipNo" class=""></select>
</tr> </td>
<td>
<select asp-for="@index.StationID" name="WipOutfits[@l].StationID" asp-items="@ViewBag.RuleStationByWipNoUnitNoList" class=""></select>
</td>
<td>
<a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" onclick="Remove(this);">刪除</a>
</td>
</tr>
l++; l++;
} }
</tbody> </tbody>
@ -1013,27 +1013,27 @@
<tbody> <tbody>
@foreach (var index in Model.WipSops) @foreach (var index in Model.WipSops)
{ {
<tr> <tr>
<td> <td>
<input name="WipSops[@i].WipSOPID" type="hidden" value="@index.WipSOPID" /> <input name="WipSops[@i].WipSOPID" type="hidden" value="@index.WipSOPID" />
<input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.SOPName" name="WipSops[@i].SOPName" /> <input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.SOPName" name="WipSops[@i].SOPName" />
</td> </td>
@*<td> @*<td>
<input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.SOPPath" name="WipSops[@i].SOPPath" /> <input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.SOPPath" name="WipSops[@i].SOPPath" />
</td>*@ </td>*@
<td> <td>
<select asp-for="@index.SOPType" name="WipSops[@i].SOPType" asp-items="@ViewBag.GetSOPTypeSelect" class=""></select> <select asp-for="@index.SOPType" name="WipSops[@i].SOPType" asp-items="@ViewBag.GetSOPTypeSelect" class=""></select>
</td> </td>
<td> <td>
<select asp-for="@index.UnitNo" name="WipSops[@i].UnitNo" asp-items="@ViewBag.FactoryUnitByWipNo" class=""></select> <select asp-for="@index.UnitNo" name="WipSops[@i].UnitNo" asp-items="@ViewBag.FactoryUnitByWipNo" class=""></select>
</td> </td>
<td> <td>
<input onfocus="this.blur()" class="layui-input" asp-for="@index.SOPVer" name="WipSops[@i].SOPVer" /> <input onfocus="this.blur()" class="layui-input" asp-for="@index.SOPVer" name="WipSops[@i].SOPVer" />
</td> </td>
<td> <td>
<a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" onclick="Remove(this);">刪除</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" onclick="Remove(this);">刪除</a>
</td> </td>
</tr> </tr>
i++; i++;
} }
</tbody> </tbody>
@ -1105,23 +1105,23 @@
<tbody> <tbody>
@foreach (var index in Model.wipInfoBlobs) @foreach (var index in Model.wipInfoBlobs)
{ {
<tr> <tr>
<td> <td>
<span id="FileName">@index.ImageName</span> <span id="FileName">@index.ImageName</span>
</td> </td>
<td> <td>
<span id="Filepath">@index.Filepath</span> <span id="Filepath">@index.Filepath</span>
</td> </td>
<td> <td>
<span id="Remark">@index.Remark</span> <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 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> <a class="layui-btn layui-btn-normal layui-btn-xs layui-btn-danger" onclick="deleteFile(this)">刪除</a>
</td> </td>
</tr> </tr>
} }
</tbody> </tbody>
</table> </table>
@ -1340,11 +1340,11 @@
}); });
// 產生MAC // 產生MAC
$("#GetMAC").click(function (event) { $("#GetMAC").click(function (event) {
var wipNO = $('#wipAtt_ItemNO').val(); var wipNO = $('#wipAtt_ItemNO').val();
var planQTY = $('#wipInfo_PlanQTY').val(); var planQTY = $('#wipInfo_PlanQTY').val();
if (wipNO == '' || !wipNO) { if (wipNO == '' || !wipNO) {
parent.hg.msg("請輸入號"); parent.hg.msg("請輸入工程編號");
return; return;
} }
if (planQTY == '' || !planQTY || planQTY == 0) { if (planQTY == '' || !planQTY || planQTY == 0) {
@ -1357,15 +1357,16 @@
data: { "itemno": $("#wipAtt_ItemNO").val(), "wipNo": $('#wipInfo_WipNO').val(), "planQTY": $('#wipInfo_PlanQTY').val() }, data: { "itemno": $("#wipAtt_ItemNO").val(), "wipNo": $('#wipInfo_WipNO').val(), "planQTY": $('#wipInfo_PlanQTY').val() },
cache: false, cache: false,
type: "POST", type: "POST",
success: function (data, textStatus, jqXHR) { success: function (result, textStatus, jqXHR) {
if (data._msg != undefined) { if (result.success) {
parent.hg.msg(data._msg); var contactdiv = `<tr><td>${result.data.mix}</td><td>${result.data.max}</td></tr>`;
$('#MACTable').append(contactdiv);
if (result.msg.length != 0) {
parent.hg.msg(result.msg);
}
} }
else { else {
var contactdiv = '<tr>' + parent.hg.msg(result.msg);
`<td>${data.mix}</td>
<td>${data.max}</td></tr>`;
$('#MACTable').append(contactdiv);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
@ -1965,6 +1966,10 @@
data: { "wipNo": '@Model.wipInfo.WipNO' }, data: { "wipNo": '@Model.wipInfo.WipNO' },
success: function (result) { success: function (result) {
if (result.success) { if (result.success) {
if (result.data.eaN_NO == null) {
hg.msghide("查無資料,不需要更新!");
}
else {
var result_data = result.data.eaN_NO; var result_data = result.data.eaN_NO;
console.log(result_data.eaN_NO); console.log(result_data.eaN_NO);
if (result_data.length == 0) { if (result_data.length == 0) {
@ -1977,6 +1982,7 @@
layer.closeAll('dialog'); layer.closeAll('dialog');
$("#wipAtt_ECN").val(result_data); $("#wipAtt_ECN").val(result_data);
}) })
}
} }
} }
}, },

46
AMESCoreStudio.Web/Views/PCS/PCS034.cshtml

@ -1241,11 +1241,11 @@
}); });
// 產生MAC // 產生MAC
$("#GetMAC").click(function (event) { $("#GetMAC").click(function (event) {
var wipNO = $('#wipAtt_ItemNO').val(); var wipNO = $('#wipAtt_ItemNO').val();
var planQTY = $('#wipInfo_PlanQTY').val(); var planQTY = $('#wipInfo_PlanQTY').val();
if (wipNO == '' || !wipNO) { if (wipNO == '' || !wipNO) {
parent.hg.msg("請輸入號"); parent.hg.msg("請輸入工程編號");
return; return;
} }
if (planQTY == '' || !planQTY || planQTY == 0) { if (planQTY == '' || !planQTY || planQTY == 0) {
@ -1258,15 +1258,16 @@
data: { "itemno": $("#wipAtt_ItemNO").val(), "wipNo": $('#wipInfo_WipNO').val(), "planQTY": $('#wipInfo_PlanQTY').val() }, data: { "itemno": $("#wipAtt_ItemNO").val(), "wipNo": $('#wipInfo_WipNO').val(), "planQTY": $('#wipInfo_PlanQTY').val() },
cache: false, cache: false,
type: "POST", type: "POST",
success: function (data, textStatus, jqXHR) { success: function (result, textStatus, jqXHR) {
if (data._msg != undefined) { if (result.success) {
parent.hg.msg(data._msg); var contactdiv = `<tr><td>${result.data.mix}</td><td>${result.data.max}</td></tr>`;
$('#MACTable').append(contactdiv);
if (result.msg.length != 0) {
parent.hg.msg(result.msg);
}
} }
else { else {
var contactdiv = '<tr>' + parent.hg.msg(result.msg);
`<td>${data.mix}</td>
<td>${data.max}</td></tr>`;
$('#MACTable').append(contactdiv);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
@ -1767,27 +1768,32 @@
return b; return b;
} }
// 更新ECN or ECR // 更新ECN or ECR
function GetPLM_ECN() { function GetPLM_ECN() {
$.ajax({ $.ajax({
url: "@Url.Action("FQC007GetPLMECN", "FQC")", url: "@Url.Action("GetItApiEcnByWipNo", "PCS")",
type: "Post", type: "Post",
data: { "ItemNo": '@Model.wipAtt.ItemNO' }, async: true,
data: { "wipNo": '@Model.wipInfo.WipNO' },
success: function (result) { success: function (result) {
if (result.success) { if (result.success) {
var result_msg = result.msg; if (result.data.eaN_NO == null) {
console.log(result_msg); hg.msghide("查無資料,不需要更新!");
console.log('@Model.wipAtt.ECN'); }
if ('@Model.wipAtt.ECN' != result_msg) { else {
var result_data = result.data.eaN_NO;
console.log(result_data.eaN_NO);
if (result_data.length == 0) {
hg.msghide("不需要更新!");
}
else if ('@Model.wipAtt.ECN' != result_data) {
layer.confirm('比對與PLM ECN/ECR不一樣,確定更新ECN/ECR嗎?', { layer.confirm('比對與PLM ECN/ECR不一樣,確定更新ECN/ECR嗎?', {
btn: ['確定', '取消'] btn: ['確定', '取消']
}, function () { }, function () {
layer.closeAll('dialog'); layer.closeAll('dialog');
$("#wipAtt_ECN").val(result_msg); $("#wipAtt_ECN").val(result_data);
}) })
} }
else {
parent.hg.msg(result.msg);
} }
} }
}, },

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

@ -1994,8 +1994,8 @@ FROM [SFIS].[dbo].[ZPDKeyPart] B WHERE B.[IsActive] = 1 AND B.[ProductSN] = (S
// 塞檢驗完成日期 // 塞檢驗完成日期
foreach (var item in qq) foreach (var item in qq)
{ {
var fqcDate = _context.FqcResultMasters.Where(w => w.WipNo == item.wipNo) var fqcDate = _context.FqcResultMasters.Where(w => w.WipNo == item.wipNo && w.QaResult != "A")
.OrderBy(s => s.EndTime) .OrderBy(s => s.EndTime)
.FirstOrDefault(); .FirstOrDefault();
item.fqcDate = fqcDate == null ? "" : fqcDate.EndTime.ToString("yyyy/MM/dd"); item.fqcDate = fqcDate == null ? "" : fqcDate.EndTime.ToString("yyyy/MM/dd");
} }

9
AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs

@ -1920,7 +1920,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
wipKpsItem = wipKps.Where(w => w.KpNo.ToUpper() == barcodeKPDtoItem.inputType.ToUpper()).FirstOrDefault(); wipKpsItem = wipKps.Where(w => w.KpNo.ToUpper() == barcodeKPDtoItem.inputType.ToUpper()).FirstOrDefault();
if (wipKpsItem != null) if (wipKpsItem == null)
{ {
wipKpsItem = wipKps[x + i]; wipKpsItem = wipKps[x + i];
} }
@ -2210,9 +2210,14 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
// 有過站紀錄 // 有過站紀錄
if (barcodeInfo != null) if (barcodeInfo != null)
{ {
// 如果BarCodeInfo 結案就除外 // 如果BarCodeInfo 結案,判斷當下作業站是否第一站
if (barcodeInfo.StatusID == -1) if (barcodeInfo.StatusID == -1)
{ {
if (!rules.Value.Where(w => w.StationID == stationID && w.RuleSeq == 1 && w.RuleStatus == "P").Any())
{
resultModel.Msg = "目前作業站不是第一站,請確認";
return resultModel;
}
resultModel.Success = true; resultModel.Success = true;
return resultModel; return resultModel;
} }

Loading…
Cancel
Save