vick_wang419@hotmail.com.tw 1 year ago
parent
commit
2cbc122ccc
  1. 13
      AMESCoreStudio.Web/Controllers/PCSController.cs
  2. 2
      AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs
  3. 61
      AMESCoreStudio.Web/Views/PCS/PCS003.cshtml
  4. 59
      AMESCoreStudio.Web/Views/PCS/PCS034.cshtml
  5. 77
      AMESCoreStudio.Web/Views/PCS/PCS037.cshtml
  6. 7
      AMESCoreStudio.Web/Views/PCS/PCS037L.cshtml
  7. 26
      AMESCoreStudio.WebApi/Controllers/AMES/WipClearsController.cs
  8. 17
      AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs

13
AMESCoreStudio.Web/Controllers/PCSController.cs

@ -2635,6 +2635,7 @@ namespace AMESCoreStudio.Web.Controllers
}
}
model.wipMACs = await _pcsApi.GetWipMAC(model.wipInfo.WipNO);
model.wipLabel = await _pcsApi.GetWipLabel(model.wipInfo.WipNO);
@ -8814,9 +8815,15 @@ namespace AMESCoreStudio.Web.Controllers
//维护明细页面
[HttpGet]
public ActionResult PCS037L(string wipNO, int clearID)
public ActionResult PCS037L(string wipNO, int clearID, string itemNO, int planQty, string checkFlag)
{
ViewData["Tips"] = "工單號碼 : " + wipNO + ", 工單數量 : " + planQty + ", 機種 : " + itemNO + ", ISO編號 : QO4-038";
ViewBag.ClearID = clearID;
ViewBag.wipNO = wipNO;
ViewBag.itemNO = itemNO;
ViewBag.planQty = planQty;
ViewBag.checkFlag = checkFlag;
return View();
}
@ -8914,9 +8921,9 @@ namespace AMESCoreStudio.Web.Controllers
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetWipClearsAsync(int page = 0, int limit = 10)
public async Task<IActionResult> GetWipClearsAsync(string wipNo, string itemNo, string dateStart, string dateEnd, int page = 0, int limit = 10)
{
var result = await _pcsApi.GetWipClears(page, limit);
var result = await _pcsApi.GetWipClears(wipNo, itemNo, dateStart, dateEnd, page, limit);
if (result.DataTotal > 0)
{

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

@ -1525,7 +1525,7 @@ namespace AMESCoreStudio.Web
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/WipClears")]
ITask<ResultModel<dynamic>> GetWipClears(int page, int limit);
ITask<ResultModel<dynamic>> GetWipClears(string wipNo,string itemNo,string dateStart,string dateEnd,int page, int limit);
/// <summary>
/// 新增清線資料

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

@ -519,9 +519,18 @@
<label class="layui-form-label">DIP</label>
<div class="layui-input-block">
<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.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.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.DipSolderMask == "Y" ? "checked" : "")
} type="checkbox" title="點防焊膠" name="wipBoard.DipSolderMask" />
</div>
</div>
</div>
@ -537,7 +546,10 @@
<div class="layui-inline">
<label class="layui-form-label">燒錄</label>
<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>
<label class="layui-form-label">燒機位置</label>
@ -558,7 +570,10 @@
<div class="layui-inline">
<label class="layui-form-label">零件烘烤</label>
<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>
<label class="layui-form-label">零件烘烤溫度</label>
<div class="layui-input-inline" style="width:100px">
@ -571,7 +586,10 @@
</div>
<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>
@ -587,7 +605,10 @@
<div class="layui-inline">
<label class="layui-form-label">PCB烘烤</label>
<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 class="layui-input-inline">
<select asp-items="@ViewBag.GetPCBBakeTypeSelect" asp-for="wipBoard.PcbBake" class=""></select>
@ -875,8 +896,11 @@
<div class="layui-input-inline" style="width: 300px;">
<input class="layui-input" asp-for="wipSystem.OsVer_Desc" readonly="readonly" />
</div>
<input @if (Model.wipSystem != null) { @(Model.wipSystem.Antivirus == "Y" ? "checked" : "") }
type="checkbox" title="T3是否需掃毒" name="wipSystem.Antivirus" />
<input @if (Model.wipSystem != null)
{
@(Model.wipSystem.Antivirus == "Y" ? "checked" : "")
}
type="checkbox" title="T3是否需掃毒" id="wipSystem_Antivirus" name="wipSystem.Antivirus" />
</div>
</div>
@ -897,7 +921,10 @@
<div class="layui-inline">
<label class="layui-form-label">FINE_PACKAGE</label>
<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>
@ -1416,6 +1443,18 @@
form.on('select(lind)', function (data) {
$("#lindId").val(data.value);
});
$("#wipSystem_OsVer").on("input", function () {
var value = $(this).val().trim().toUpperCase();
if (value.startsWith("E1582") || value.startsWith("E1583") || value.startsWith("E1584") ||
value.startsWith("E1585") || value.startsWith("E1586") || value.startsWith("E1587") ||
value.startsWith("E1588") || value.startsWith("E1589") || value.startsWith("E158C")) {
$("#wipSystem_Antivirus").prop("checked", true);
} else {
$("#wipSystem_Antivirus").prop("checked", false);
}
form.render();
});
});
//通过行tool编辑,lay-event="show"
@ -2049,5 +2088,7 @@
}
});
}
</script>
}

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

@ -501,9 +501,18 @@
<label class="layui-form-label">DIP</label>
<div class="layui-input-block">
<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.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.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.DipSolderMask == "Y" ? "checked" : "")
} type="checkbox" title="點防焊膠" name="wipBoard.DipSolderMask" />
</div>
</div>
</div>
@ -519,7 +528,10 @@
<div class="layui-inline">
<label class="layui-form-label">燒錄</label>
<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>
<label class="layui-form-label">燒機位置</label>
@ -540,7 +552,10 @@
<div class="layui-inline">
<label class="layui-form-label">零件烘烤</label>
<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>
<label class="layui-form-label">零件烘烤溫度</label>
<div class="layui-input-inline" style="width:100px">
@ -553,7 +568,10 @@
</div>
<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>
@ -569,7 +587,10 @@
<div class="layui-inline">
<label class="layui-form-label">PCB烘烤</label>
<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 class="layui-input-inline">
<select asp-items="@ViewBag.GetPCBBakeTypeSelect" asp-for="wipBoard.PcbBake" class=""></select>
@ -857,8 +878,11 @@
<div class="layui-input-inline" style="width: 300px;">
<input class="layui-input" asp-for="wipSystem.OsVer_Desc" readonly="readonly" />
</div>
<input @if (Model.wipSystem != null) { @(Model.wipSystem.Antivirus == "Y" ? "checked" : "") }
type="checkbox" title="T3是否需掃毒" name="wipSystem.Antivirus" />
<input @if (Model.wipSystem != null)
{
@(Model.wipSystem.Antivirus == "Y" ? "checked" : "")
}
id="wipSystem_Antivirus" type="checkbox" title="T3是否需掃毒" name="wipSystem.Antivirus" />
</div>
</div>
@ -879,7 +903,10 @@
<div class="layui-inline">
<label class="layui-form-label">FINE_PACKAGE</label>
<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>
@ -1373,7 +1400,17 @@
RuleStation(data.value);
});
$("#wipSystem_OsVer").on("input", function () {
var value = $(this).val().trim().toUpperCase();
if (value.startsWith("E1582") || value.startsWith("E1583") || value.startsWith("E1584") ||
value.startsWith("E1585") || value.startsWith("E1586") || value.startsWith("E1587") ||
value.startsWith("E1588") || value.startsWith("E1589") || value.startsWith("E158C")) {
$("#wipSystem_Antivirus").prop("checked", true);
} else {
$("#wipSystem_Antivirus").prop("checked", false);
}
form.render();
});
});
//通过行tool编辑,lay-event="show"

77
AMESCoreStudio.Web/Views/PCS/PCS037.cshtml

@ -21,12 +21,68 @@
</div>
</div>
<div class="layui-card-body">
<div class="layui-form">
<div class="layui-row">
<div class="layui-form-item">
<div class="layui-col-sm3">
<div class="layui-inline">
<label class="layui-form-label">工單:</label>
<div class="layui-input-inline" style="width:150px">
<input id="wipNo" name="wipNo" autocomplete="off" class="layui-input" placeholder="請輸入工單號碼">
</div>
</div>
</div>
<div class="layui-col-sm3">
<div class="layui-inline">
<label class="layui-form-label">機種:</label>
<div class="layui-input-inline" style="width:150px">
<input id="itemNo" name="itemNo" autocomplete="off" class="layui-input" placeholder="請輸入料號">
</div>
</div>
</div>
<div class="layui-col-sm4">
<div class="layui-inline">
<label class="layui-form-label">建立日期:</label>
<div class="layui-input-inline" style="width:150px">
<input id="dateStart" name="dateStart" autocomplete="off" class="layui-input" readonly="">
</div>
<div class="layui-form-mid">~</div>
<div class="layui-input-inline" style="width:150px">
<input id="dateEnd" name="dateEnd" autocomplete="off" class="layui-input" readonly="">
</div>
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit lay-filter="querysubmit">
<i class="layui-icon layui-icon-sm">&#xe615;</i>
</button>
</div>
</div>
</div>
</div>
</div>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
layui.use(['form', 'layer', 'laydate'], function () {
form = layui.form;
laydate = layui.laydate;
laydate.render({
elem: '#dateStart'
, trigger: 'click'
, format: 'yyyy/MM/dd'
, theme: 'grid'
});
laydate.render({
elem: '#dateEnd'
, trigger: 'click'
, format: 'yyyy/MM/dd'
, theme: 'grid'
});
});
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
@ -49,7 +105,7 @@
title: '工單號碼'
},
{
field: 'modelNO',
field: 'itemNO',
title: '機種'
},
{
@ -88,7 +144,19 @@
width: 240,
title: '操作',
templet: function (d) {
//return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="check">確認</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
if (d.headmanCheckFlag == 'Y' && d.directorCheckFlag != 'Y') {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="check">確認</a> '
}
else if (d.headmanCheckFlag == 'Y'&& d.directorCheckFlag == 'Y')
{
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> '
}
else
{
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="check">確認</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
//return "";
}
}
}]
];
@ -96,7 +164,12 @@
function detail(obj) {
var clearID = obj.data.clearID;
var wipNO = obj.data.wipNO;
var param = "?wipNO=" + wipNO + "&clearID=" + clearID;
var itemNO = obj.data.itemNO;
var planQty = obj.data.planQTY;
var checkFlag = obj.data.headmanCheckFlag;
var param = "?wipNO=" + wipNO + "&clearID=" + clearID+ "&itemNO=" + itemNO+ "&planQty=" + planQty+ "&checkFlag=" + checkFlag;
if (obj.data.clearID) {
hg.open('維護清線明細', '/PCS/PCS037L' + param, 1280, 640);

7
AMESCoreStudio.Web/Views/PCS/PCS037L.cshtml

@ -9,10 +9,12 @@
<div class="layui-form-item ">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
<input id="clearID" name="clearID" value="@ViewBag.ClearID" type="hidden" />
<input id="checkFlag" name="checkFlag" value="@ViewBag.checkFlag" type="hidden" />
</div>
</div>
</div>
<div class="layui-card-body">
@ViewData["Tips"]
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
@ -65,8 +67,13 @@
width: 150,
title: '操作',
templet: function (d) {
if (checkFlag.value == 'Y') {
return ''
}
else {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
}
}]
];

26
AMESCoreStudio.WebApi/Controllers/AMES/WipClearsController.cs

@ -32,12 +32,16 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <summary>
/// 獲取全部清線資料
/// </summary>
/// <param name="wipNo"></param>
/// <param name="itemNo"></param>
/// <param name="dateStart"></param>
/// <param name="dateEnd"></param>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <returns></returns>
// GET: api/WipClears
[HttpGet]
public async Task<ResultModel<dynamic>> GetWipClear(int page = 0, int limit = 10)
public async Task<ResultModel<dynamic>> GetWipClear(string wipNo,string itemNo,string dateStart,string dateEnd,int page = 0, int limit = 10)
{
ResultModel<dynamic> result = new ResultModel<dynamic>();
@ -52,16 +56,32 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
b.WipNO,
b.WerksNO,
b.PlanQTY,
c.ModelNO,
c.ItemNO,
a.DetailQty,
a.HeadmanCheckFlag,
a.DirectorCheckFlag,
a.DirectorCheckDate,
a.ClearDesc
a.ClearDesc,
a.CreateDate
};
result.DataTotal = q.ToList().Count;
if (wipNo != null)
{
q = q.Where(w => w.WipNO.Equals(wipNo));
}
if (itemNo != null)
{
q = q.Where(w => w.ItemNO.Equals(itemNo));
}
if (dateStart != null&& dateEnd != null)
{
q = q.Where(w => w.CreateDate >= DateTime.Parse(dateStart) && w.CreateDate <= DateTime.Parse(dateEnd).AddDays(1));
}
if (page > 0)
{
q = q.OrderBy(p => p.ClearNo).Skip((page - 1) * limit).Take(limit);

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

@ -2522,13 +2522,22 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (wipInfo != null)
{
int wipID = wipInfo.WipID;
BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context);
var barcodeInfos = await barcodeInfoesController.GetBarcodeInfoesByWipID(wipID);
// 取Rules 最後一站為完工站的Station及狀態
var rules = await _context.Ruleses.Where(w => w.FlowRuleID == wipInfo.FlowRuleID).ToListAsync();
var lastStation = rules.Where(w => w.NextStationID == 1000).Select(s => new { s.StationID, s.RuleStatus }).ToList();
var barcodeStations = await _context.BarcodeStation.Where(w => w.WipID == wipID).ToListAsync();
// ByLastStation Count = 工單數 (完工)
var closeWipQty = 0;
// 比對過站Station完工跟工單數一樣 = 完工
foreach (var item in lastStation)
{
closeWipQty += barcodeStations.Where(w => item.StationID == w.StationID && item.RuleStatus == w.RuleStatus)
.Select(s => s.BarcodeID).Distinct().Count();
}
if (wipInfo.PlanQTY ==
barcodeInfos.Value.Where(w => w.RuleStatus == "P" && w.StationID == stationID).Count())
if (wipInfo.PlanQTY == closeWipQty)
{
var result = await wipInfosController.PutWipinfoToStatusNO(wipID, "E");
if (!result.Success)

Loading…
Cancel
Save