Browse Source

1. 設定過站判斷

PTD
Ray 3 years ago
parent
commit
8e4c9d7ccf
  1. 13
      AMESCoreStudio.Web/Controllers/PCSController.cs
  2. 94
      AMESCoreStudio.Web/Views/PCS/PCS021.cshtml
  3. 65
      AMESCoreStudio.WebApi/Code/BarcodeContext.cs
  4. 2
      AMESCoreStudio.WebApi/Controllers/BAS/LineInfoesController.cs
  5. 205
      AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs
  6. 2
      AMESCoreStudio.WebApi/Models/AMES/WipSop.cs
  7. 6
      AMESCoreStudio.WebApi/Models/AMES/WipSopLog.cs

13
AMESCoreStudio.Web/Controllers/PCSController.cs

@ -1569,15 +1569,17 @@ namespace AMESCoreStudio.Web.Controllers
{
model.SopPath = wipsop.GetWipSop.FilePath + wipsop.GetWipSop.NewName;
}
model.Input = "1234";
}
return View("PCS021", model);
}
[HttpPost]
public async Task<IActionResult> PCS021_Input(int inputtxt)
public IActionResult PCS021_Input(PCS021ViewModel model)
{
await GetFactoryUnit();
await GetLineInfo();
//await GetFactoryUnit();
//await GetLineInfo();
//model.WipInfo.WipNO = "WO0001A1";
//var q = await _pcsApi.GetWipInfoByWipNO(model.WipInfo.WipNO);
//if (q.Count() != 0)
@ -1589,7 +1591,10 @@ namespace AMESCoreStudio.Web.Controllers
// model.materialKpDto = await _pcsApi.GetMaterialKpQuery(model.wipAtt.ItemNO, model.WipInfo.UnitNO);
//}
return View("PCS021");
//if ()
// return View("PCS021");
//else
return Json("Hello");
}
#endregion

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

@ -47,7 +47,7 @@
</div>
</div>
</div>
<form enctype="multipart/form-data" method="post" asp-action="PCS021" class="layui-form">
<form id="PCS021Form" method="post" asp-action="PCS021" class="layui-form">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="layui-card-body">
<div class="layui-row">
@ -55,7 +55,7 @@
<div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
<ul class="layui-tab-title">
<li class="layui-this">過站資料</li>
<li>具資料</li>
<li>具資料</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
@ -99,7 +99,7 @@
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">料號:</label>
<label class="layui-form-label" style="width:150px;text-align:left">WI-KN4116VA-AX-X</label>
<label class="layui-form-label" style="text-align:left;">@Model.ItemNO</label>
</div>
</div>
<div class="layui-form-item">
@ -115,23 +115,54 @@
<div class="layui-inline">
<label class="layui-form-label">刷讀條碼:</label>
<div class="layui-input-inline">
<input type="text" onkeydown="input(event);" id="inpputtxt" class="layui-input" autocomplete="off" />
<input type="submit" id="GetWipData" asp-action="PCS021_input" style="display:none;" />
<input type="text" onkeydown="input(event);" id="inpputtxt" asp-for="Input" class="layui-input" autocomplete="off" />
<span id="txtNamaPetugas"></span>
</div>
</div>
</div>
</div>
<fieldset class="layui-elem-field layui-field-title">
<legend style="color: #e18917">檢查項目</legend>
<table id="MydataTable" class="layui-table">
<thead>
<tr>
<th>
工項順序
</th>
<th>
工項名稱
</th>
<th>
工項描述
</th>
</tr>
</thead>
<tbody>
@foreach (var index in Model.MaterialStationsItems)
{
<tr>
<td>
@index.StationsItemSeq
</td>
<td>
@index.StationsItemNo
</td>
<td>
@index.StationsItemDesc
</td>
</tr>
}
</tbody>
</table>
</fieldset>
<fieldset class="layui-elem-field layui-field-title">
<legend style="color: #e18917">KeyParts</legend>
</fieldset>
<div class="layui-col-md12">
<div class="layui-form-item">
<table id="MydataTable" class="layui-table">
<thead>
<tr>
<th>
料號
</th>
<th>
KP料號名稱
</th>
@ -156,9 +187,6 @@
@foreach (var index in Model.MaterialKps)
{
<tr>
<td>
@index.ItemID
</td>
<td>
@index.KpName
</td>
@ -184,7 +212,38 @@
</div>
</div>
</div>
<div class="layui-tab-item">模具內容</div>
<div class="layui-tab-item">
<table id="MydataTable" class="layui-table">
<thead>
<tr>
<th>
治具NO
</th>
<th>
站(前段)
</th>
<th>
序號
</th>
</tr>
</thead>
<tbody>
@foreach (var index in Model.MaterialOutfits)
{
<tr>
<td>
@index.OutfitNo
</td>
<td>
@index.StationType
</td>
<td>
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
</div>
</div>
@ -264,14 +323,19 @@
function input(e) {
if (e.keyCode == 13) {
var data = $("#PCS021Form").serialize();
$.ajax({
url: "@Url.Action("PCS021_Input", "PCS")",
type:"POST",
data: { "inputtxt": $("#inpputtxt").val() },
success: function (data) {
$("#txtNamaPetugas").html(data);
//data: { "inputtxt": $("#inpputtxt").val() },
data: data,
success: function (result) {
$("#txtNamaPetugas").html(result);
}
});
event.preventDefault();
return false;
}
};

65
AMESCoreStudio.WebApi/Code/BarcodeContext.cs

@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.WebApi.Controllers.AMES;
using AMESCoreStudio.WebApi.Controllers.BAS;
namespace AMESCoreStudio.WebApi
{
/// <summary>
///
/// </summary>
public class BarcodeContext
{
private readonly AMESContext _context;
public BarcodeContext(AMESContext context)
{
_context = context;
}
/// <summary>
/// 確認工單狀態
/// </summary>
/// <param name="WipNo">工單號碼</param>
/// <param name="UnitNo">生產單位</param>
/// <param name="FlowRuleID">流程</param>
/// <param name="Station">站別</param>
/// <param name="Line">線別</param>
/// <returns></returns>
public async Task<string> CheckWipNoSationAsync(string WipNo, string UnitNo, int FlowRuleID, int Station, int Line)
{
WipInfosController wipInfosController = new WipInfosController(_context);
var q = await wipInfosController.GetWipInfoByWipNo(WipNo);
if (q.Value.Count() == 0)
return "找不到工單號碼:" + WipNo;
var WipNoItem = q.Value.Where(w => w.WipNO == WipNo && w.UnitNO == UnitNo).ToList();
if (WipNoItem.Count == 0)
return "工單號碼:" + WipNo + ",尚未設定此生產單位";
if (!WipNoItem.Where(w => w.FlowRuleID == FlowRuleID).Any())
return "工單號碼:" + WipNo + ",尚未設定此流程站";
if (WipNoItem.Where(w => w.StatusNO == "Y").Any())
return "工單號碼:" + WipNo + ",該工單已經投入完工,請切換工單";
WipLockController wipLockController = new WipLockController(_context);
var q1 = await wipLockController.GetWipLockByWipNO(WipNo);
if (q1.Data.Where(w => w.LockStatus == "0" && w.StationID == Station).Any())
return "工單號碼:" + WipNo + ",工單在當前站別被鎖定,不可過站";
int WipID = WipNoItem.FirstOrDefault().WipID;
LineInfoesController lineInfoesController = new LineInfoesController(_context);
var q2 = await lineInfoesController.GetLineInfoByWipID(WipID);
if (!q2.Value.Where(w => w.LineID == Line).Any())
return "工單號碼:" + WipNo + ",工單尚未開線,不可過站";
return "";
}
}
}

2
AMESCoreStudio.WebApi/Controllers/BAS/LineInfoesController.cs

@ -188,9 +188,11 @@ namespace AMESCoreStudio.WebApi.Controllers.BAS
LineInfo lineinfo = new LineInfo();
lineinfo.LineID = id;
lineinfo.WipNo = wipid;
lineinfo.UpdateDate = DateTime.Now;
// 指定更新欄位
_context.Entry(lineinfo).Property(p => p.WipNo).IsModified = true;
_context.Entry(lineinfo).Property(p => p.UpdateDate).IsModified = true;
try
{
await _context.SaveChangesAsync();

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

@ -0,0 +1,205 @@
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 BarCodeCheckController : ControllerBase
{
private readonly AMESContext _context;
/// <summary>
///
/// </summary>
/// <param name="context"></param>
public BarCodeCheckController(AMESContext context)
{
_context = context;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
// GET: api/NGReasons
[HttpGet]
public string GetBarCodeCheck(string wipno = null, string unitno = null, string stations = null, string inputbarcode = null)
{
IQueryable<NGReason> q = _context.NGReasons;
q = q.OrderBy(p => p.NGClassNo + p.NGReasonNo);
return "";
}
/// <summary>
/// 判斷工單狀態
/// </summary>
/// <param name="wipno">工單號碼</param>
/// <param name="unitno">生產單位</param>
/// <param name="station">站別</param>
/// <param name="line">線別</param>
/// <param name="flowrule">流程</param>
/// <returns></returns>
[HttpGet("BarCodeDataCheck")]
public string GetBarCodeDataCheck(string wipno, string unitno, int station, int line, int flowrule)
{
BarcodeContext barcodeContext = new BarcodeContext(_context);
var result = barcodeContext.CheckWipNoSationAsync(WipNo: wipno, UnitNo: unitno, FlowRuleID: flowrule, Station: station, Line: line);
return result.Result;
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
// GET: api/NGReasons/5
[HttpGet("{id}")]
public async Task<ActionResult<IEnumerable<NGReason>>> GetNGReason(string id)
{
IQueryable<NGReason> q = _context.NGReasons;
q = q.Where(p => p.NGReasonNo.Equals(id));
var ngReason = await q.ToListAsync();
if (ngReason == null)
{
return NotFound();
}
return ngReason;
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <param name="nGReason"></param>
/// <returns></returns>
// PUT: api/NGReasons/5
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
[HttpPut("{id}")]
public async Task<ResultModel<NGReason>> PutNGReason(string id, [FromBody] NGReason nGReason)
{
ResultModel<NGReason> result = new ResultModel<NGReason>();
if (id != nGReason.NGReasonNo)
{
result.Success = false;
result.Msg = "原因代碼錯誤";
return result;
}
_context.Entry(nGReason).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!NGReasonExists(id))
{
result.Success = false;
result.Msg = "原因代碼不存在";
return result;
}
else
{
throw;
}
}
result.Success = true;
result.Msg = "OK";
return result;
}
/// <summary>
///
/// </summary>
/// <param name="nGReason"></param>
/// <returns></returns>
// POST: api/NGReasons
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
[HttpPost]
public async Task<ResultModel<NGReason>> PostNGReason([FromBody] NGReason nGReason)
{
ResultModel<NGReason> result = new ResultModel<NGReason>();
_context.NGReasons.Add(nGReason);
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (NGReasonExists(nGReason.NGReasonNo))
{
result.Success = false;
result.Msg = "原因代碼重複";
return result;
}
else
{
throw;
}
}
result.Success = true;
result.Msg = "OK";
return result;
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
// DELETE: api/NGReasons/5
[HttpDelete("{id}")]
public async Task<ResultModel<NGReason>> DeleteNGReason(string id)
{
ResultModel<NGReason> result = new ResultModel<NGReason>();
var nGReason = await _context.NGReasons.FindAsync(id);
if (nGReason == null)
{
result.Success = false;
result.Msg = "原因代碼不存在";
return result;
}
_context.NGReasons.Remove(nGReason);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
return result;
}
private bool NGReasonExists(string id)
{
return _context.NGReasons.Any(e => e.NGReasonNo == id);
}
}
}

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

@ -118,6 +118,6 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[ForeignKey("UnitNo")]
public virtual AMESCoreStudio.WebApi.Models.BAS.FactoryUnit FactoryUnit { get; set; }
public virtual List<WipSopLog> WipSopLogs { get; set; }
//public virtual List<WipSopLog> WipSopLogs { get; set; }
}
}

6
AMESCoreStudio.WebApi/Models/AMES/WipSopLog.cs

@ -20,7 +20,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// WIP_ID
/// </summary>
[Key]
[Column("WIP_ID", Order = 0)]
[Column("WIP_ID")]
[DataMember]
public int WipID { get; set; }
@ -28,7 +28,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// WIP_SOP_ID
/// </summary>
[Key]
[Column("WIP_SOP_ID", Order = 1)]
[Column("WIP_SOP_ID")]
[DataMember]
public int WipSopID { get; set; }
@ -73,12 +73,14 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// 工單資料
/// </summary>
[ForeignKey("WipID")]
[DataMember]
public virtual WipInfo GetWipInfo { get; set; }
/// <summary>
/// SOP資料
/// </summary>
[ForeignKey("WipSopID")]
[DataMember]
public virtual WipSop GetWipSop { get; set; }
}
}

Loading…
Cancel
Save