Browse Source

1. 工單查詢 修改與刪除加入判斷

2. 修正過站判斷
PTD
ray 3 years ago
parent
commit
32a479f103
  1. 79
      AMESCoreStudio.Web/Controllers/PCSController.cs
  2. 27
      AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs
  3. 5
      AMESCoreStudio.Web/ViewModels/PCS/PCS021ViewModel.cs
  4. 72
      AMESCoreStudio.Web/Views/PCS/PCS005.cshtml
  5. 49
      AMESCoreStudio.Web/Views/PCS/PCS021.cshtml
  6. 15
      AMESCoreStudio.WebApi/Controllers/AMES/BarcodeStationController.cs
  7. 118
      AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs
  8. 22
      AMESCoreStudio.WebApi/Controllers/BAS/RulesController.cs
  9. 96
      AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs

79
AMESCoreStudio.Web/Controllers/PCSController.cs

@ -1092,6 +1092,34 @@ namespace AMESCoreStudio.Web.Controllers
return Json(new { data = result.MaterialFlowRemark });
}
/// <summary>
/// 目前已刷數量
/// </summary>
/// <param name="wipNo">工單號碼</param>
/// <param name="unitNo">生產單位</param>
/// <param name="ststionID">作業站</param>
/// <returns></returns>
[HttpPost]
public async Task<JsonResult> getBarcodeStationByInputQty(string wipNo, string unitNo, int ststionID)
{
var q = await _pcsApi.GetWipInfoByWipNO(wipNo);
var q1 = q.Where(w => w.UnitNO == unitNo).FirstOrDefault();
if (q1 != null)
{
// 工單流程ID 取站別
var ruleStations = await GetRuleStationByFlowRuleID(q1.FlowRuleID);
var rulestationID = ruleStations.Where(w => w.StationID == ststionID).FirstOrDefault().RuleStationID;
// 工單已刷數量
int InputQTY = await _pcsApi.GetBarcodeStationByInputQty(q1.WipID, rulestationID);
//将数据Json化并传到前台视图
return Json(new { data = InputQTY });
}
return Json(new { data = 0 });
}
#endregion
[ResponseCache(Duration = 0)]
@ -1587,11 +1615,15 @@ namespace AMESCoreStudio.Web.Controllers
var q = await _pcsApi.GetWipInfo(id);
if (q.Count != 0)
{
// 判斷工單號碼是否已經投入
if (await _pcsApi.GetWipInfoCheckStart(q.FirstOrDefault().WipNO) == "Y")
{
var _msg = "工單號碼【" + q.FirstOrDefault().WipNO + "】,工單已開始投入,不可修改!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
// 判斷工單號碼是否已經開線
var resultLineInfo = await _basApi.GetLineInfoes();
var resultWipNo = await _pcsApi.GetWipInfoByWipNO(q.FirstOrDefault().WipNO);
var WipIDs = resultWipNo.Select(s => s.WipID);
if (resultLineInfo.Where(w => WipIDs.Contains(w.WipNo)).Any())
if (await _pcsApi.GetWipInfoCheckStartLine(q.FirstOrDefault().WipNO) == "Y")
{
var _msg = "工單號碼【" + q.FirstOrDefault().WipNO + "】,工單已開線,不可修改!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
@ -2006,8 +2038,11 @@ namespace AMESCoreStudio.Web.Controllers
/// <returns></returns>
public string CheckMACData(WipDataViewModel model)
{
string StartNO = model.wipMAC.StartNO.ToString();
string EndNO = model.wipMAC.EndNO.ToString();
if (model.wipMAC == null)
return "";
string StartNO = model.wipMAC.StartNO ?? "";
string EndNO = model.wipMAC.EndNO ?? "";
// 資料為空
if (string.IsNullOrWhiteSpace(StartNO) && string.IsNullOrWhiteSpace(EndNO))
return "";
@ -2287,6 +2322,31 @@ namespace AMESCoreStudio.Web.Controllers
}
return Json(new Table() { count = 0, data = null });
}
/// <summary>
/// PCS005 刪除
/// </summary>
/// <param name="id">工單號碼</param>
/// <returns></returns>
public async Task<IActionResult> PCS005DAsync(string id)
{
// 判斷工單號碼是否已經投入
if (await _pcsApi.GetWipInfoCheckStart(id) == "Y")
{
var _msg = "工單號碼【" + id + "】,工單已開始投入,不可刪除!";
return Json(new Result() { success = false, msg = _msg });
}
// 判斷工單號碼是否已經開線
if (await _pcsApi.GetWipInfoCheckStartLine(id) == "Y")
{
var _msg = "工單號碼【" + id + "】,工單已開線,不可刪除!";
return Json(new Result() { success = false, msg = _msg });
}
var result = await _pcsApi.DeleteWipinfo(id);
return Json(new Result() { success = true, msg = "刪除成功" });
}
#endregion
#region PCS006 工單開線收線作業
@ -3193,6 +3253,7 @@ namespace AMESCoreStudio.Web.Controllers
public async Task<IActionResult> PCS021_GetWip(PCS021ViewModel model)
{
await GetFactoryUnit();
await GetItemsList();
//await GetLineInfo();
if (string.IsNullOrWhiteSpace(model.WipNO))
@ -3230,6 +3291,7 @@ namespace AMESCoreStudio.Web.Controllers
model.UnitNO = q.FirstOrDefault().UnitNO;
model.FlowRuleID = q.FirstOrDefault().FlowRuleID;
model.ItemNO = (await _pcsApi.GetWipAtt(model.WipNO)).ItemNO;
// 判斷工單狀態
var BarCodeWip = await _pcsApi.CheckBarCodeWip(model.WipNO, model.UnitNO, model.LineID, model.FlowRuleID);
if (!BarCodeWip.Success)
@ -3249,6 +3311,9 @@ namespace AMESCoreStudio.Web.Controllers
model.RuleStation = ruleStations.FirstOrDefault().RuleStationID;
}
// 工單已刷數量
model.InputQTY = await _pcsApi.GetBarcodeStationByInputQty(model.WipID, model.RuleStation);
// 工單KeyParts
model.WipKps = await _pcsApi.GetWipKpByWipNo(model.WipNO);
model.WipKps = model.WipKps.Where(w => w.UnitNo == model.UnitNO).OrderBy(o => o.KpSeq).ToList();
@ -3447,8 +3512,6 @@ namespace AMESCoreStudio.Web.Controllers
}
#region 判斷下一站為完工站
var NextStopCloseStation = await _pcsApi.CheckNextStopCloseStation(model.WipNO, model.UnitNO, model.Station);
#endregion

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

@ -114,11 +114,23 @@ namespace AMESCoreStudio.Web
/// 查詢工單基本資料-WipNO
/// </summary>
/// <returns></returns>
//[WebApiClient.Attributes.HttpGet("api/WipInfos/{id}")]
//ITask<List<WipInfo>> GetWipInfoByUnitNO(string id);
[WebApiClient.Attributes.HttpGet("api/WipInfos/WipInfoByWipNo/{wipno}")]
ITask<List<WipInfo>> GetWipInfoByWipNO(string wipno);
/// <summary>
/// 查詢工單是否已投入
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/WipInfos/CheckStart/{wipno}")]
ITask<string> GetWipInfoCheckStart(string wipno);
/// <summary>
/// 查詢工單是否已開線
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/WipInfos/CheckStartLine/{wipno}")]
ITask<string> GetWipInfoCheckStartLine(string wipno);
/// <summary>
/// 更新工單資料
/// </summary>
@ -126,6 +138,14 @@ namespace AMESCoreStudio.Web
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/WipInfos")]
ITask<ResultModel<WipInfo>> PutWipInfo([FromBody, RawJsonContent] string model);
/// <summary>
/// 刪除工單相關資料
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/WipInfos/{id}")]
ITask<ResultModel<WipInfo>> DeleteWipinfo(string id);
#endregion
#region WinAtt 工單基本資料-屬性 PCS001
@ -285,6 +305,9 @@ namespace AMESCoreStudio.Web
[WebApiClient.Attributes.HttpGet("api/BarcodeStation/GetBarcodeStationByKey")]
ITask<BarcodeStation> GetBarcodeStationByKey(string id);
[WebApiClient.Attributes.HttpGet("api/BarcodeStation/InputQty/{wipID}/{ruleStationID}")]
ITask<int> GetBarcodeStationByInputQty(int wipID, int ruleStationID);
[WebApiClient.Attributes.HttpPost("api/BarcodeStation")]
ITask<ResultModel<BarcodeStation>> PostBarcodeStation([FromBody, RawJsonContent] string model);

5
AMESCoreStudio.Web/ViewModels/PCS/PCS021ViewModel.cs

@ -30,6 +30,11 @@ namespace AMESCoreStudio.Web.ViewModels.PCS
/// </summary>
public int PlanQTY { get; set; } = 0;
/// <summary>
/// 已刷數
/// </summary>
public int InputQTY { get; set; } = 0;
/// <summary>
/// 線別
/// </summary>

72
AMESCoreStudio.Web/Views/PCS/PCS005.cshtml

@ -2,7 +2,14 @@
ViewData["Title"] = "工單資料查詢";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<style>
/* .layui-table-col-special .layui-table-cell {
height:auto;
overflow:visible;
text-overflow:inherit;
white-space: normal;
}*/
</style>
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-form">
@ -51,15 +58,28 @@
</div>
</div>
</div>
<table class="layui-hide" id="Query" lay-filter="Query"></table>
<table class="layui-hide" id="query" lay-filter="query"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
layui.use('table', function () {
var table = layui.table;
table.on('tool(query)', function (obj) {
if (obj.event == 'detail') {
if (obj.data.wipID) {
hg.open('檢視工單資料', '/PCS/PCS001R/' + obj.data.wipID, '', '', true);
}
}
});
});
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
@ -121,12 +141,13 @@
},
{
field: 'right',
width: 140,
width: 200,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a><a class="layui-btn layui-btn-warm layui-icon layui-icon-list layui-btn-xs" lay-event="detail">檢視</a>'
/* < a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay - event="edit" > 修改</a > '*/
return '<a class="layui-btn layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a>\
<a class="layui-btn layui-btn-warm layui-icon layui-icon-list layui-btn-xs" lay-event="detail">檢視</a>\
<a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
}
]
@ -147,6 +168,29 @@
}
}
function del(obj) {
hg.confirm("确定要删除工單號碼【" + obj.data.wipNO + "】嗎?", function () {
$.ajax({
url: '/PCS/PCS005D',
data: { id: obj.data.wipNO },
type: 'POST',
success: function (data) {
if (data.success) {
hg.msghide("删除成功!");
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
@ -157,6 +201,22 @@
}
];
//基本数据表格
var table = hg.table.datatable('Query', '工單資料查詢', '/PCS/PCS005Query', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
var table = hg.table.datatable('query', '工單資料查詢', '/PCS/PCS005Query', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
$(document).off('mousedown', '.layui-table-grid-down').
on('mousedown', '.layui-table-grid-down', function (event) {
table._tableTrCurrr = $(this).closest('td');
});
$(document).off('click', '.layui-table-tips-main [lay-event]').
on('click', '.layui-table-tips-main [lay-event]', function (event) {
var elem = $(this);
var tableTrCurrr = table._tableTrCurrr;
if (!tableTrCurrr) {
return;
}
var layerIndex = elem.closest('.layui-table-tips').attr('times');
layer.close(layerIndex);
table._tableTrCurrr.find('[lay-event="' + elem.attr('lay-event') + '"]').children("i").first().click();
});
</script>
}

49
AMESCoreStudio.Web/Views/PCS/PCS021.cshtml

@ -57,7 +57,7 @@
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="layui-card-body">
<div class="layui-row">
<div class="layui-col-md4 element">
<div class="layui-col-md5 element">
<div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
<ul class="layui-tab-title">
<li class="layui-this">過站資料</li>
@ -113,7 +113,7 @@
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label" style="width:100px;text-align:left; padding: 9px 10px">已刷數/工單數:</label>
<label class="layui-form-label" style="width:150px;text-align:left">1/100</label>
<label class="layui-form-label" style="width:150px;text-align:left"><span id="InputQty">@Model.InputQTY</span>/@Model.PlanQTY</label>
</div>
</div>
<fieldset class="layui-elem-field layui-field-title">
@ -123,7 +123,7 @@
<div class="layui-inline">
<label class="layui-form-label">刷讀條碼:</label>
<div class="layui-input-inline">
<input type="text" onkeydown="input(event);" id="inpputtxt" asp-for="Input" class="layui-input" autocomplete="off" />
<input type="text" onkeydown="input(event);" id="inputtxt" asp-for="Input" class="layui-input" autocomplete="off" />
</div>
</div>
@*<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>*@
@ -217,7 +217,7 @@
<input type="text" asp-for="@index.KpName" name="WipKps[@j].KpName" style="width:100px" readonly="readonly" />
</td>
<td>
<input type="text" asp-for="@index.KpNo" name="WipKps[@j].KpNo" style="width:30px" readonly="readonly" />
<select asp-for="@index.KpNo" name="WipKps[@j].KpNo" asp-items="@ViewBag.ItemsList" class=""></select>
</td>
<td>
<input type="text" asp-for="@index.KpSeq" name="WipKps[@j].KpSeq" style="width:30px" readonly="readonly" />
@ -278,7 +278,7 @@
</div>
</div>
</div>
<div class="layui-col-md8 element" style="height:100%">
<div class="layui-col-md7 element" style="height:100%">
<iframe frameborder="0" style="height:100%;width:100%" src=@(Model.SopPath)></iframe>
</div>
</div>
@ -302,7 +302,6 @@
jQuery(function ($) {
$('.element').responsiveEqualHeightGrid();
getUnitLineList($("#unit").val());
//getRuleStationList($("#unit").val());
});
function getUnitLineList(data)
@ -330,30 +329,6 @@
});
};
@*function getRuleStationList(data)
{
$.ajax(
{
url: "@Url.Action("GetRuleStationByTypeJson", "PCS")",
dataType: 'json',
data: { "unit_no": $("#unit").val()},
type: 'post',
success: function (result)
{
$("#stations").empty();//清空下拉框的值
$.each(result.data, function (index, item) {
$("#stations").append($("<option>").text(item.text).val(item.value))
});
layui.form.render("select");//重新渲染 固定写法
},
error: function (result)
{
alert(result);
}
});
};*@
function SearchNo(e) {
if (e.keyCode == 13) {
$("#GetWipData").click();
@ -372,7 +347,7 @@
type: "POST",
data: data,
success: function (result) {
$("#inpputtxt").val('');
$("#inputtxt").val('');
if (!result.success) {
parent.hg.msg(result.msg);
}
@ -383,6 +358,7 @@
}
else {
$("#tblCustomersBody").empty();
InputQty();
}
}
}
@ -407,6 +383,17 @@
});
function InputQty() {
$.ajax({
url: "@Url.Action("getBarcodeStationByInputQty", "PCS")",
type: "POST",
data: { "wipNo": $("#WipNO").val(), "unitNo": $("#unit").val(), "ststionID": $("#stations").val()},
success: function (result) {
$("#InputQty").text(result.data);
}
});
};
// 新增trRow
function TableAddRow(e) {
//var rowCount = $('.data-contact-person').length + 0;

15
AMESCoreStudio.WebApi/Controllers/AMES/BarcodeStationController.cs

@ -145,6 +145,21 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return result;
}
/// <summary>
/// 查詢 已過站數量
/// </summary>
/// <param name="wipID">工單ID</param>
/// <param name="ruleStationID">站別ID</param>
/// <returns></returns>
[HttpGet("InputQty/{wipID}/{ruleStationID}")]
public async Task<ActionResult<int>> GetBarcodeStationByInputQty(int wipID, int ruleStationID)
{
var barcodeStation = await _context.BarcodeStation
.Where(w => wipID == w.WipID && w.RuleStationID == ruleStationID && w.RuleStatus == "P").ToListAsync();
return barcodeStation.Count();
}
/// <summary>
/// 用工單ID查是否有過站紀錄
/// </summary>

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

@ -112,7 +112,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
join q2 in _context.WipAtts on q1.WipNO equals q2.WipNO
join q3 in _context.LineInfoes on q1.LineID equals q3.LineID
join q4 in _context.FactoryUnits on q1.UnitNO equals q4.UnitNo
join q5 in _context.FactoryInfos on q1.Werks equals q5.FactoryID.ToString()
join q5 in _context.FactoryInfos on q1.Werks equals q5.FactoryID.ToString()
//join q6 in _context.MaterialItems on q2.ItemNO equals q6.ItemNo
select new
{
@ -216,15 +216,58 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
public async Task<ActionResult<IEnumerable<WipInfo>>> GetWipInfoByWipNo(string wipno)
{
IQueryable<WipInfo> q = _context.WipInfos.Where(w => w.WipNO == wipno);
var WipInfo = await q.ToListAsync();
return WipInfo;
}
if (WipInfo == null)
{
return NotFound();
}
/// <summary>
/// 查詢工單是否投入
/// </summary>
/// <param name="wipno">工單號碼</param>
/// <returns>Y:投入N:未投入</returns>
[HttpGet("CheckStart/{wipno}")]
public ActionResult<string> GetWipInfoCheckStart(string wipno)
{
// 判斷是否有投產紀錄
var q = from q1 in _context.WipInfos
join q2 in _context.BarcodeInfoes on q1.WipID equals q2.WipID
where q1.WipNO == wipno
select q2;
if (q.Count() != 0)
return "Y";
else
return "N";
// 判斷是否已經開線
var r = from q1 in _context.WipInfos
join q2 in _context.LineInfoes on q1.WipID equals q2.WipNo
where q1.WipNO == wipno
select q2;
if (r.Count() != 0)
return "Y";
else
return "N";
}
return WipInfo;
/// <summary>
/// 查詢工單是否開線
/// </summary>
/// <param name="wipno">工單號碼</param>
/// <returns>Y:已開線N:未開線</returns>
[HttpGet("CheckStartLine/{wipno}")]
public ActionResult<string> GetWipInfoCheckStartLine(string wipno)
{
// 判斷是否已經開線
var q = from q1 in _context.WipInfos
join q2 in _context.LineInfoes on q1.WipID equals q2.WipNo
where q1.WipNO == wipno
select q2;
if (q.Count() != 0)
return "Y";
else
return "N";
}
/// <summary>
@ -317,5 +360,66 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
return result;
}
/// <summary>
/// 删除工單相關資料
/// </summary>
/// <param name="id">工單號碼</param>
/// <returns></returns>
[HttpDelete("{id}")]
public async Task<ResultModel<WipInfo>> DeleteWipinfo(string id)
{
ResultModel<WipInfo> result = new ResultModel<WipInfo>();
var wipinfos = await _context.WipInfos.Where(w => w.WipNO == id).ToListAsync();
_context.WipInfos.RemoveRange(wipinfos);
var wipAtt = await _context.WipAtts.Where(w => w.WipNO == id).ToListAsync();
_context.WipAtts.RemoveRange(wipAtt);
var wipKp = await _context.WipKps.Where(w => w.WipNo == id).ToListAsync();
_context.WipKps.RemoveRange(wipKp);
var wipSop = await _context.WipSops.Where(w => w.WipNo == id).ToListAsync();
_context.WipSops.RemoveRange(wipSop);
var wipOutfit = await _context.WipOutfits.Where(w => w.WipNo == id).ToListAsync();
_context.WipOutfits.RemoveRange(wipOutfit);
var wipLabel = await _context.WipLabels.Where(w => w.WipNO == id).ToListAsync();
_context.WipLabels.RemoveRange(wipLabel);
var wipBarcode = await _context.WipBarcodes.Where(w => w.WipNO == id).ToListAsync();
_context.WipBarcodes.RemoveRange(wipBarcode);
var wipBarcodeOther = await _context.WipBarcodeOthers.Where(w => w.WipNO == id).ToListAsync();
_context.WipBarcodeOthers.RemoveRange(wipBarcodeOther);
var wipBoard = await _context.WipBoards.Where(w => w.WipNo == id).ToListAsync();
_context.WipBoards.RemoveRange(wipBoard);
var wipSystem = await _context.WipSystems.Where(w => w.WipNo == id).ToListAsync();
_context.WipSystems.RemoveRange(wipSystem);
var wipChecks = await _context.WipChecks.Where(w => w.WipNo == id).ToListAsync();
_context.WipChecks.RemoveRange(wipChecks);
var wipInfoBlob = await _context.WipInfoBlobs.Where(w => w.WipNo == id).ToListAsync();
_context.WipInfoBlobs.RemoveRange(wipInfoBlob);
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
}
}

22
AMESCoreStudio.WebApi/Controllers/BAS/RulesController.cs

@ -186,25 +186,19 @@ namespace AMESCoreStudio.WebApi.Controllers.BAS
}
/// <summary>
/// 根據下一站別ID查詢
/// By流程ID 查詢
/// </summary>
/// <param name="id"></param>
/// <param name="id">流程ID</param>
/// <returns></returns>
// GET: api/Rules/5
[HttpGet("ByNextStation/{id}")]
public async Task<ActionResult<IEnumerable<Rules>>> GetRulesByNextStation(int id)
[HttpGet("ByFlowRuleID/{id}")]
public async Task<ActionResult<IEnumerable<Rules>>> GetRulesByFlowRuleID(int id)
{
IQueryable<Rules> q = _context.Ruleses;
q = q.Where(p => p.NextStationID.Equals(id));
var q = from q1 in _context.Ruleses
join q2 in _context.RuleStations on q1.RuleStationID equals q2.RuleStationID
where q2.FlowRuleID == id
select q1;
var rules = await q.ToListAsync();
if (rules == null)
{
return NotFound();
}
return rules;
}

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

@ -127,9 +127,8 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
item = q_wipinfo.Value.FirstOrDefault().GetWipAtt.ItemNO;
itemID = ItemNoToItemID(item).Result;
var q_rulestation = await ruleStationsController.GetRuleStationByFlow(barCodeCheckDto.flowRule, 0, 0);
// 抓RulseStationID
var q_rulestation = await ruleStationsController.GetRuleStationByFlow(barCodeCheckDto.flowRule, 0, 0);
barCodeCheckDto.ruleStationID = q_rulestation.Value.Where(w => w.StationID == barCodeCheckDto.station).FirstOrDefault().RuleStationID;
#region KeyParts 判斷
@ -209,7 +208,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
#endregion
#region 判斷組件序號是否在製狀態
if (q_Kp.KpName.ToUpper() == "BOARD")
if (q_Kp.KpNo.ToUpper() == "04")
{
var BarCodeInfo = await barcodeInfoesController.GetBarcodeInfoesByNo(KPs.inputData);
@ -221,7 +220,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
#endregion
#region 判斷MAC區間
if (q_Kp.KpName.ToUpper() == "MAC")
if (q_Kp.KpNo.ToUpper() == "94")
{
var wipMAC = await wipMACController.GetWipMAC(barCodeCheckDto.wipNo);
@ -254,7 +253,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
#region 判斷出貨序號
// 當KP_NAME是 EXT_NO 判斷組件-出貨序號 是否有在區間
if (q_Kp.KpName.ToUpper() == "EXT_NO")
if (q_Kp.KpNo.ToUpper() == "95")
{
var WipBarCodeOther = await wipBarcodeOtherController.CheckWipBarcodeOtherByNo(barCodeCheckDto.wipNo, KPs.inputData);
@ -367,8 +366,12 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
private void CU_Tables(BarCodeCheckDto barCodeCheckDto)
{
string Msg = string.Empty;
if (!Table_BarcodeInfo(barCodeCheckDto).Result.Success)
var result_BarcodeInfo = Table_BarcodeInfo(barCodeCheckDto).Result;
if (result_BarcodeInfo.Success)
{
// 將BarCodeID補上
if (barCodeCheckDto.barcodeID == 0)
barCodeCheckDto.barcodeID = result_BarcodeInfo.Data.FirstOrDefault().BarcodeID;
}
@ -817,7 +820,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
catch (Exception ex)
{
resultModel.Msg = ex.InnerException.Message;
resultModel.Msg = ex.Message;
}
}
@ -1071,10 +1074,21 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return resultModel;
}
// 判斷序號目前是否有重複過站
BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context);
var BarcodeInfos = await barcodeInfoesController.GetBarcodeInfoesByNo(barcode);
BarcodeInfos = BarcodeInfos.Value.ToList();
if (BarcodeInfos.Value.Where(w => w.RuleStationID == RuleStationID).Any())
{
resultModel.Msg = "該內部序號【" + barcode + "】已刷過此站";
return resultModel;
}
// 取目前工單ID
int wipID = q1.WipID;
int flowRuleID = q1.FlowRuleID;
resultModel = (ResultModel<string>)await GetBarCodeLastStopRuleStationID(wipID, BarCodeID, station);
resultModel = (ResultModel<string>)await GetBarCodeLastStopRuleStationID(wipID, BarCodeID, station, flowRuleID);
if (!resultModel.Success)
return resultModel;
@ -1295,7 +1309,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
#endregion
#region 判斷組件序號是否在製狀態
if (wipKps[x + i].KpName.ToUpper() == "BOARD")
if (wipKps[x + i].KpNo.ToUpper() == "04")
{
BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context);
var BarCodeInfo = await barcodeInfoesController.GetBarcodeInfoesByNo(barcodeItemKPDto.inputKP[i]);
@ -1307,7 +1321,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
#endregion
#region 判斷MAC區間
if (wipKps[x + i].KpName.ToUpper() == "MAC")
if (wipKps[x + i].KpNo.ToUpper() == "94")
{
WipMACController wipMACController = new WipMACController(_context);
var wipMAC = await wipMACController.GetWipMAC(barcodeItemKPDto.WipNo);
@ -1340,7 +1354,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
#region 判斷出貨序號
// 當KP_NAME是 EXT_NO 判斷組件-出貨序號 是否有在區間
if (wipKps[x + i].KpName.ToUpper() == "EXT_NO")
if (wipKps[x + i].KpNo.ToUpper() == "95")
{
WipBarcodeOtherController wipBarcodeOtherController = new WipBarcodeOtherController(_context);
var WipBarCodeOther = await wipBarcodeOtherController.CheckWipBarcodeOtherByNo(barcodeItemKPDto.WipNo, barcodeItemKPDto.inputKP[i]);
@ -1491,8 +1505,9 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="wipID">工單ID</param>
/// <param name="barCodeID">BarCodeID</param>
/// <param name="stationID">目前作業站ID</param>
/// <param name="flowRuleID">工單流程ID</param>
/// <returns>true:false</returns>
private async Task<IResultModel> GetBarCodeLastStopRuleStationID(int wipID, int barCodeID, int stationID)
private async Task<IResultModel> GetBarCodeLastStopRuleStationID(int wipID, int barCodeID, int stationID, int flowRuleID)
{
ResultModel<string> resultModel = new ResultModel<string> { Success = false };
WipInfosController wipInfosController = new WipInfosController(_context);
@ -1503,13 +1518,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
// 用作業站抓 有設定下一站為該站的資料
RulesController rulesController = new RulesController(_context);
var rules = await rulesController.GetRulesByNextStation(stationID);
var rules = await rulesController.GetRulesByFlowRuleID(flowRuleID);
rules = rules.Value.Where(w => w.NextStationID == stationID).ToList();
//排除第一站
if (rules.Value.Count() != 0)
{
// 抓有設定下一站=目前作業站的上一站
var ruleSations = rules.Value.Select(s => new { s.RuleStationID, s.RuleStatus }).ToList();
var nowruleSations = rules.Value.Select(s => new { s.RuleStationID, s.RuleStatus }).ToList();
// 取得目前BarCode 最新過站資料
BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context);
var barcodeInfo = barcodeInfoesController.GetBarcodeInfoes(barCodeID).Result.Value.FirstOrDefault();
@ -1520,7 +1535,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return resultModel;
}
if (ruleSations.Where(w => w.RuleStationID == barcodeInfo.RuleStationID
if (nowruleSations.Where(w => w.RuleStationID == barcodeInfo.RuleStationID
&& w.RuleStatus == barcodeInfo.RuleStatus).Count() == 0
)
{
@ -1552,49 +1567,28 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
var q1 = q.Result.Value.Where(w => w.UnitNO == unitNo).FirstOrDefault();
int FlowRuleID = q1.FlowRuleID;
// 將工單-生產單位 流程ID取rulestation的作業站排順序
// 取得流程
RuleStationsController ruleStationsController = new RuleStationsController(_context);
List<dynamic> dy = new List<dynamic>();
int index = 1;
var ruleStations = await ruleStationsController.GetRuleStationByFlow(q1.FlowRuleID, 0);
if (ruleStations.Value.Count() != 0)
{
// 按照順序塞入判斷資料
foreach (var item in ruleStations.Value.Where(w => w.StationType == "M").OrderBy(o => o.Sequence))
{
var x = new
{
index,
item.StationID
};
dy.Add(x);
index++;
}
}
// 在RuleStation 找不到該作業站
if (dy.Where(w => w.StationID == stationID).Select(s => s.index).FirstOrDefault() == null)
return resultModel;
// 在RuleStation 找不到該作業站
if (!ruleStations.Value.Any(a => a.StationID == stationID))
return resultModel;
// 取得目前該站順序
int NowIndex = dy.Where(w => w.StationID == stationID).Select(s => s.index).FirstOrDefault();
int rulestationID = ruleStations.Value.Where(w => w.StationID == stationID).FirstOrDefault().RuleStationID;
// 判斷下一站沒有資料Error
if (dy.Where(w => w.index == (NowIndex + 1)).Select(s => s.StationID).FirstOrDefault() == null)
return resultModel;
RulesController rulesController = new RulesController(_context);
var rules = await rulesController.GetRulesByFlowRuleID(q1.FlowRuleID);
// 當下一站SatationID= 1000 代表完工站
if (dy.Where(w => w.index == (NowIndex + 1)).Select(s => s.StationID).FirstOrDefault() == 1000)
{
resultModel.Success = true;
return resultModel;
}
else
{
return resultModel;
// 當下一站SatationID= 1000 代表完工站
if (rules.Value.Where(w => w.RuleStationID == rulestationID && w.NextStationID == 1000).Any())
{
resultModel.Success = true;
return resultModel;
}
}
return resultModel;
}
/// <summary>

Loading…
Cancel
Save