Browse Source

1. 修正維修過站判斷

2. 加入Demo 測試
PTD
Ray 3 years ago
parent
commit
63dcdb4b11
  1. 17
      AMESCoreStudio.Web/Controllers/FQCController.cs
  2. 42
      AMESCoreStudio.Web/Controllers/SYSController.cs
  3. 7
      AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs
  4. 5
      AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs
  5. 11
      AMESCoreStudio.Web/Views/SYS/SYS001.cshtml
  6. 2
      AMESCoreStudio.Web/Views/SYS/SYS001C.cshtml
  7. 40
      AMESCoreStudio.Web/Views/SYS/SYS001T.cshtml
  8. 2
      AMESCoreStudio.WebApi/Controllers/AMES/BarcodeItemChangesController.cs
  9. 2
      AMESCoreStudio.WebApi/Controllers/AMES/MaterialKpController.cs
  10. 12
      AMESCoreStudio.WebApi/Controllers/AMES/QcCriterionController.cs
  11. 2
      AMESCoreStudio.WebApi/Controllers/AMES/WipBarcodeOthersController.cs
  12. 2
      AMESCoreStudio.WebApi/Controllers/AMES/WipMACController.cs
  13. 329
      AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs
  14. 6
      AMESCoreStudio.WebApi/DTO/AMES/BarcodeItemKPDto.cs
  15. 33
      AMESCoreStudio.WebApi/DTO/BLL/BarCodeCheckDto.cs
  16. 2
      AMESCoreStudio.WebApi/Models/AMES/BarcodeInfo.cs

17
AMESCoreStudio.Web/Controllers/FQCController.cs

@ -420,6 +420,20 @@ namespace AMESCoreStudio.Web.Controllers
{
if (ModelState.IsValid)
{
#region 判斷設定起訖數量區間是否有重疊
var query = await _fqcApi.GetQcCriterionByQuotID(model.QuotID);
if (query.Where(w => w.QcStart <= model.QcStart && model.QcStart <= w.QcEnd).Any() ||
query.Where(w => w.QcStart <= model.QcEnd && model.QcEnd <= w.QcEnd).Any())
{
ModelState.AddModelError("error", "設定起訖數量區間有重疊,請確認");
if (model.CritID == 0)
{
return View("FQC005C", model);
}
return View("FQC005U", model);
}
#endregion
IResultModel result;
if (model.CritID == 0)
{
@ -437,7 +451,6 @@ namespace AMESCoreStudio.Web.Controllers
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
@ -576,7 +589,7 @@ namespace AMESCoreStudio.Web.Controllers
{
IResultModel<FqcInhouseMasterDto> result = await _fqcApi.GetFqcInhouseMasterQuery(barcodeNo: barcodeNo, wipNo: wipNo
, boxNo: boxNo, inhouseNo: inhouseNo, date_str: date_str, date_end: date_end
, status: status , page: page, limit: limit);
, status: status, page: page, limit: limit);
if (result.Data.Count() != 0)
{

42
AMESCoreStudio.Web/Controllers/SYSController.cs

@ -8,6 +8,7 @@ using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc.Rendering;
using AMESCoreStudio.WebApi.Models.SYS;
using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.WebApi.DTO.AMES;
namespace AMESCoreStudio.Web.Controllers
{
@ -15,10 +16,12 @@ namespace AMESCoreStudio.Web.Controllers
{
private readonly ILogger<SYSController> _logger;
public readonly ISYS _sysApi;
public SYSController(ILogger<SYSController> logger, ISYS sysApi)
public readonly IPCS _pcsApi;
public SYSController(ILogger<SYSController> logger, ISYS sysApi , IPCS pCS)
{
_logger = logger;
_sysApi = sysApi;
_pcsApi = pCS;
//if (Request.Cookies["_AMESCookie"] != null)
//{
// HttpContext.Request.Cookies.TryGetValue("UserID", out userID);
@ -217,6 +220,43 @@ namespace AMESCoreStudio.Web.Controllers
return Json(new Table() { count = 0, data = null });
}
#region Ray 維修測試
//新增頁面
public IActionResult SYS001T()
{
return View();
}
[HttpPost]
public async Task<IActionResult> SYS001TAsync(SystemInfo model)
{
var x = new BarCodeCheckDto
{
wipNo = "WO0002A1",
barcode = "WO0002A10006",
barcodeType = "S",
station = 1017,
line = 1001,
unitNo = "B",
inputItems = new List<BarCodeCheckDto.inputItem> {
new BarCodeCheckDto.inputItem
{
inputType = "KP",
inputData = "CPUSN199",
oldInputData = "CPUSN103"
},
new BarCodeCheckDto.inputItem
{
inputType = "KP",
inputData = "RAMSN293",
oldInputData = "RAMSN203"
} }
};
var aa = await _pcsApi.PassIngByCheck(JsonConvert.SerializeObject(x));
return Ok(aa);
}
#endregion
#endregion
#region SYS002模组资料维护相关

7
AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs

@ -221,6 +221,13 @@ namespace AMESCoreStudio.Web
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/QcQuot")]
ITask<List<QcQuot>> GetQcQuot();
/// <summary>
/// 查詢抽驗標準 ByQuotID
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/QcCriterion/ByQuotID/{id}")]
ITask<List<QcCriterion>> GetQcCriterionByQuotID(int id);
#endregion
#region FQC006 FQC狀態維護

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

@ -14,6 +14,11 @@ namespace AMESCoreStudio.Web
[JsonReturn]
public interface IPCS : IHttpApi
{
//////////////////////////////////////
[WebApiClient.Attributes.HttpPost("api/BarCodeCheck/PassIngByCheck")]
ITask<ResultModel<string>> PassIngByCheck([FromBody,RawJsonContent] string model);
//////////////////////////////////////
#region 下拉選單
/// <summary>
/// 產品別

11
AMESCoreStudio.Web/Views/SYS/SYS001.cshtml

@ -100,7 +100,16 @@
hg.open('新增系統', '/SYS/SYS001C', 720, 600);
}
}
},
{
text: '維修過站測試',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增系統', '/SYS/SYS001T', 720, 600);
}
}
];
//基本数据表格
var table = hg.table.datatable('test', '系統資料管理', '/SYS/GetSystemInfoes', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);

2
AMESCoreStudio.Web/Views/SYS/SYS001C.cshtml

@ -12,7 +12,7 @@
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS001Save">
<form enctype="multipart/form-data" method="post" asp-action="SYS001T">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SystemNo" class="control-label col-sm-3"></label>

40
AMESCoreStudio.Web/Views/SYS/SYS001T.cshtml

@ -0,0 +1,40 @@
@model AMESCoreStudio.WebApi.Models.SYS.SystemInfo
@{ ViewData["Title"] = "SYS001C";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS001T">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

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

@ -117,7 +117,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{
ResultModel<BarcodeItemChange> result = new ResultModel<BarcodeItemChange>();
Helper helper = new Helper(_context);
var BarcodeItemChangeID = helper.GetIDKey("B_I_CHANGE_ID").Result;
var BarcodeItemChangeID = helper.GetIDKey("BARCODE_ITEM_CHANGE").Result;
//請RITA加ID
barcodeItemChange.BarcodeItemChangeID = BarcodeItemChangeID;
_context.BarcodeItemChanges.Add(barcodeItemChange);

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

@ -12,7 +12,7 @@ using AMESCoreStudio.WebApi.DTO.AMES;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
/// 料號基本資料檔Controller
/// 料號對應組件資料檔Controller
/// </summary>
[Route("api/[controller]")]
[ApiController]

12
AMESCoreStudio.WebApi/Controllers/AMES/QcCriterionController.cs

@ -47,6 +47,18 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return qcCriterion;
}
/// <summary>
/// ByQuotID
/// </summary>
/// <param name="id">QuotID</param>
/// <returns></returns>
[HttpGet("ByQuotID/{id}")]
public async Task<ActionResult<IEnumerable<QcCriterion>>> GetQcCriterionByQuotID(int id)
{
var qcCriterion = await _context.QcCriteria.Where(w => w.QuotID == id).ToListAsync();
return qcCriterion;
}
[HttpGet("QcCriterionQuery")]
public async Task<ResultModel<QcCriterionDto>> GetQcCriterionQuery(int quotID = 0,int page = 1, int limit = 10)
{

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

@ -12,7 +12,7 @@ using AMESCoreStudio.CommonTools.Result;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
///
/// 工單條碼區間設定檔
/// </summary>
[Route("api/[controller]")]
[ApiController]

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

@ -19,7 +19,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
private readonly AMESContext _context;
/// <summary>
///
/// 工單MAC資料檔
/// </summary>
/// <param name="context"></param>
public WipMACController(AMESContext context)

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

@ -31,6 +31,307 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
_context = context;
}
#region
/// <summary>
/// 過站判斷
/// </summary>
/// <param name="barCodeCheckDto"></param>
/// <returns></returns>
[HttpPost("PassIngByCheck")]
public async Task<ActionResult<ResultModel<string>>> CheckBarCodeCheck([FromBody] BarCodeCheckDto barCodeCheckDto)
{
ResultModel<string> resultModel = new ResultModel<string> { Success = false };
//resultModel = (ResultModel<string>)await CheckWipNoSationAsync("1", "1", 1, 1);
#region 欄位資料空值判斷
if (string.IsNullOrWhiteSpace(barCodeCheckDto.wipNo))
{
resultModel.Msg = "請輸入工單號碼";
return Ok(resultModel);
}
if (string.IsNullOrWhiteSpace(barCodeCheckDto.barcode))
{
resultModel.Msg = "請輸入內部條碼";
return Ok(resultModel);
}
if (string.IsNullOrWhiteSpace(barCodeCheckDto.unitNo))
{
resultModel.Msg = "請輸入生產單位";
return Ok(resultModel);
}
if (barCodeCheckDto.station == 0)
{
resultModel.Msg = "請輸入作業站代碼";
return Ok(resultModel);
}
if (barCodeCheckDto.line == 0)
{
resultModel.Msg = "請輸入線別代碼";
return Ok(resultModel);
}
#endregion
#region 宣告各個Controller
WipInfosController wipInfosController = new WipInfosController(_context);
WipMACController wipMACController = new WipMACController(_context);
WipBarcodeOtherController wipBarcodeOtherController = new WipBarcodeOtherController(_context);
BarcodeItemsController barcodeItemsController = new BarcodeItemsController(_context);
BarcodeInfoesController barcodeInfoesController = new BarcodeInfoesController(_context);
BarcodeStationController barcodeStationController = new BarcodeStationController(_context);
BarcodeItemChangesController barcodeItemChangesController = new BarcodeItemChangesController(_context);
RuleStationsController ruleStationsController = new RuleStationsController(_context);
MaterialKpController materialKpController = new MaterialKpController(_context);
#endregion
#region 宣告參數
// 工單ID
int wipID = 0;
// 內部條碼ID
int barCodeID = 0;
// 流程ID
int flowRule = 0;
// 流程站別順序ID
int ruleStation = 0;
// 料號ID
int itemID = 0;
// 作業站順序
int stationSEQ = 0;
// 料號
string item = string.Empty;
// 站別測試類別
string stationTestType = string.Empty;
// 存放要更新BarCodeItem
var update_BarCodeItem = new List<BarcodeItem>();
var insert_BarCodeItemChange = new List<BarcodeItemChange>();
#endregion
var q_wipinfo = await wipInfosController.GetWipInfoByWipNo(barCodeCheckDto.wipNo);
if (!q_wipinfo.Value.Where(w => w.UnitNO == barCodeCheckDto.unitNo).Any())
{
resultModel.Msg = "找不到工單號碼【" + barCodeCheckDto.wipNo + "】或所對應的生產單位";
return resultModel;
}
wipID = q_wipinfo.Value.Where(w => w.UnitNO == barCodeCheckDto.unitNo).FirstOrDefault().WipID;
flowRule = q_wipinfo.Value.Where(w => w.UnitNO == barCodeCheckDto.unitNo).FirstOrDefault().FlowRuleID;
barCodeID = BarCodeToID(barCodeCheckDto.barcode).Result;
item = q_wipinfo.Value.FirstOrDefault().GetWipAtt.ItemNO;
itemID = ItemNoToItemID(item).Result;
var q_rulestation = await ruleStationsController.GetRuleStationByFlow(flowRule, 0, 0);
if (q_rulestation.Value.Count() == 0)
{
resultModel.Msg = "找不到工單號碼【" + barCodeCheckDto.wipNo + "】綁定的流程順序檔";
return resultModel;
}
else if (!q_rulestation.Value.Where(w => w.StationID == barCodeCheckDto.station).Any())
{
resultModel.Msg = "找不到工單號碼【" + barCodeCheckDto.wipNo + "】所對應的作業站別";
return resultModel;
}
// 抓作業站順序
ruleStation = q_rulestation.Value.Where(w => w.StationID == barCodeCheckDto.station).FirstOrDefault().RuleStationID;
stationSEQ = q_rulestation.Value.Where(w => w.StationID == barCodeCheckDto.station).FirstOrDefault().Sequence;
stationTestType = q_rulestation.Value.Where(w => w.StationID == barCodeCheckDto.station).FirstOrDefault().Station.TestType;
// 維修過站 組件需獨立判斷
if (barCodeCheckDto.barcodeType == "S")
{
// 確認新舊組件序號是否都有值
if (barCodeCheckDto.inputItems.Where(w => w.inputType != "NG" &&
(string.IsNullOrWhiteSpace(w.inputData) || string.IsNullOrWhiteSpace(w.oldInputData))).Any())
{
resultModel.Msg = "工單號碼【" + barCodeCheckDto.wipNo + "】維修過站資料有缺新舊組件序號,請確認";
return resultModel;
}
// 用BarCodeID And WipID 取BarCodeItem
var q_BarCodeItem = await barcodeItemsController.GetBarcodeItemByBarCodeID(barCodeID);
q_BarCodeItem = q_BarCodeItem.Value.Where(w => w.WipID == wipID).ToList();
foreach (var KPs in barCodeCheckDto.inputItems)
{
// 用舊組件序號比對
var barCodeItem = q_BarCodeItem.Value.Where(w => w.PartNo == KPs.oldInputData).FirstOrDefault();
if (barCodeItem != null)
{
var MaterialKps = (await materialKpController.GetMaterialKpByItemID(itemID)).ToList();
MaterialKps = MaterialKps.Where(w => w.StationType == barCodeCheckDto.unitNo).OrderBy(o => o.KpSeq).ToList();
if (MaterialKps.Count == 0)
{
resultModel.Msg = "工單號碼【" + barCodeCheckDto.wipNo + "】找不到相關Key Parts對應";
}
else
{
var q_Kp = MaterialKps.Where(w => w.KpNo == barCodeItem.ItemNo).FirstOrDefault();
if (q_Kp != null)
{
#region 比對序號長度是否正確
if (!string.IsNullOrWhiteSpace(q_Kp.Length.ToString()))
{
if (q_Kp.Length != KPs.inputData.Length)
resultModel.Msg += "組件序號【" + KPs.inputData + "】 與組件名稱【" + q_Kp.KpName + "】長度不符合</br>";
}
#endregion
#region 前置碼正確
if (!string.IsNullOrWhiteSpace(q_Kp.Title))
{
if (!KPs.inputData.ToUpper().StartsWith(q_Kp.Title.ToUpper()))
resultModel.Msg += "組件序號【" + KPs.inputData + "】 與組件名稱【" + q_Kp.Title + "】前置碼不符合</br>";
}
#endregion
#region 組件代碼-組件序號是否重複
var checkDataRedundancy = await barcodeItemsController.GetBarcodeItemByDataRedundancy(q_Kp.KpNo, KPs.inputData);
if (checkDataRedundancy.Value.Count() != 0)
{
resultModel.Msg += "組件名稱【" + q_Kp.KpName + "】已有相同組件序號【" + KPs.inputData + "】紀錄 </br>";
}
#endregion
#region 判斷組件序號是否在製狀態
if (q_Kp.KpName.ToUpper() == "BOARD")
{
var BarCodeInfo = await barcodeInfoesController.GetBarcodeInfoesByNo(KPs.inputData);
if (BarCodeInfo.Value.Where(w => w.StatusID != -1).Any())
{
resultModel.Msg += "組件序號【" + KPs.inputData + "】 目前是在製狀態</br>";
}
}
#endregion
#region 判斷MAC區間
if (q_Kp.KpName.ToUpper() == "MAC")
{
var wipMAC = await wipMACController.GetWipMAC(barCodeCheckDto.wipNo);
if (wipMAC.Value == null)
{
resultModel.Msg += "工單號碼【" + barCodeCheckDto.wipNo + "】 找不到綁定MAC區間</br>";
}
else
{
// 判斷MAC前置碼是否一樣
if (!KPs.inputData.StartsWith(wipMAC.Value.Title))
{
resultModel.Msg += "組件序號【" + KPs.inputData + "】 與MAC【" + wipMAC.Value.Title + "】前置碼不符合 </br>";
}
else
{
// 判斷是否符合區間
if (KPs.inputData.Length == 12)
{
if (!(Convert.ToInt32(wipMAC.Value.StartNO, 16) <= Convert.ToInt32(KPs.inputData.Substring(7, 6), 16)
&& Convert.ToInt32(KPs.inputData.Substring(7, 6), 16) <= Convert.ToInt32(wipMAC.Value.EndNO, 16)))
{
resultModel.Msg += "組件序號【" + KPs.inputData + "】 與工單設定MAC區間不符合 </br>";
}
}
}
}
}
#endregion
#region 判斷出貨序號
// 當KP_NAME是 EXT_NO 判斷組件-出貨序號 是否有在區間
if (q_Kp.KpName.ToUpper() == "EXT_NO")
{
var WipBarCodeOther = await wipBarcodeOtherController.CheckWipBarcodeOtherByNo(barCodeCheckDto.wipNo, KPs.inputData);
if (WipBarCodeOther.Value.Count() == 0)
{
resultModel.Msg += "組件序號【" + KPs.inputData + "】 與工單設定出貨序號區間不符合 </br>";
}
else
{
//resultModel.Data = new List<string> { KPs.inputData };
//resultModel.Msg = "EXT_NO";
}
}
#endregion
}
}
barCodeItem.PartNo = KPs.inputData;
barCodeItem.RuleStationID = ruleStation;
barCodeItem.UpdateDate = DateTime.Now;
update_BarCodeItem.Add(barCodeItem);
insert_BarCodeItemChange.Add(new BarcodeItemChange
{
WipID = wipID,
RuleStationID = ruleStation,
BarcodeID = barCodeID,
ItemNo = barCodeItem.ItemNo,
PartNoOld = KPs.oldInputData,
ChangeType = "RP",
KpItemNo = KPs.inputData
});
}
}
if (!string.IsNullOrWhiteSpace(resultModel.Msg))
return resultModel;
}
//var NextStopCloseStation = await CheckNextStopCloseStation(barCodeCheckDto.wipNo, barCodeCheckDto.unitNo, barCodeCheckDto.station);
#region 過站判斷正常 往下處理Table
#region 內部序號輸入後新增 or 更新
var barcodeInfo = barcodeInfoesController.GetBarcodeInfoes(barCodeID).Result.Value.FirstOrDefault();
barcodeInfo.RuleStationID = ruleStation;
barcodeInfo.RuleStatus = "P";
var resultBarCodeInfo = await barcodeInfoesController.PutBarcodeInfoes(barcodeInfo);
if (resultBarCodeInfo.Success)
{
// 新增 BarCodeStation
BarcodeStation barcodeStation = new BarcodeStation
{
BarcodeID = barCodeID,
WipID = wipID,
RuleStationID = ruleStation,
RuleStatus = "P", //F 不良
InputDate = DateTime.Now,
LineId = barCodeCheckDto.line
};
await barcodeStationController.PostBarcodeStation(barcodeStation);
// 新增 BarCodeItem
// 先查詢已綁定組件數量
//var BarCodeItems = await _pcsApi.GetBarcodeItemByBarCodeID(model.BarCodeID);
//int KpItemQty = BarCodeItems.Count();
foreach (var item_barCodeItem in update_BarCodeItem)
{
await barcodeItemsController.PutBarcodeItems(item_barCodeItem.BarcodeItemID, item_barCodeItem);
}
foreach (var item_barCodeItemChange in insert_BarCodeItemChange)
{
await barcodeItemChangesController.PostBarcodeItemChanges(item_barCodeItemChange);
}
#endregion
#endregion
}
resultModel.Msg = "內部序號【" + barCodeCheckDto.barcode + "】 過站完成!";
resultModel.Success = true;
return resultModel;
}
#endregion
/// <summary>
/// 判斷工單狀態
/// </summary>
@ -73,7 +374,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return Ok();
}
/// <summary>
/// 內部序號查詢工單號碼
/// </summary>
@ -194,7 +494,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="barcode">內部序號</param>
/// <returns>Success:true or false</returns>
[HttpGet("BarCodeLock")]
public async Task<IActionResult> CheckBarCodeLockAsync(string barcode)
public async Task<ActionResult<ResultModel<string>>> CheckBarCodeLockAsync(string barcode)
{
ResultModel<string> resultModel = new ResultModel<string> { Success = false };
if (barcode.Length <= 4)
@ -482,7 +782,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// </summary>
/// <returns></returns>
[HttpGet("BarCodeKP")]
public async Task<IResultModel> CheckBarCodeKPAsync([FromQuery]BarcodeItemKPDto barcodeItemKPDto)
public async Task<IResultModel> CheckBarCodeKPAsync([FromQuery] BarcodeItemKPDto barcodeItemKPDto)
{
ResultModel<string> resultModel = new ResultModel<string> { Success = false };
@ -550,13 +850,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
#region 比對組件資料
var CheckMsg = string.Empty;
int x= BarCodeItems.Count;
int x = BarCodeItems.Count;
#endregion
for (int i = 0; i < barcodeItemKPDto.inputKP.Count; i++)
{
#region 比對序號長度是否正確
if (!string.IsNullOrWhiteSpace(MaterialKps[x+i].Length.ToString()))
if (!string.IsNullOrWhiteSpace(MaterialKps[x + i].Length.ToString()))
{
if (MaterialKps[x + i].Length != barcodeItemKPDto.inputKP[i].Length)
CheckMsg += "組件序號【" + barcodeItemKPDto.inputKP[i] + "】 與組件名稱【" + MaterialKps[x + i].KpName + "】長度不符合</br>";
@ -575,7 +875,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
var checkDataRedundancy = await barcodeItemsController.GetBarcodeItemByDataRedundancy(MaterialKps[x + i].KpNo, barcodeItemKPDto.inputKP[i]);
if (checkDataRedundancy.Value.Count() != 0)
{
CheckMsg += "組件名稱【" + MaterialKps[x + i].KpName + "】已有相同組件序號【"+ barcodeItemKPDto.inputKP[i] + "】紀錄 </br>";
CheckMsg += "組件名稱【" + MaterialKps[x + i].KpName + "】已有相同組件序號【" + barcodeItemKPDto.inputKP[i] + "】紀錄 </br>";
}
#endregion
@ -741,7 +1041,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <summary>
/// 內部序號找BarCodeID
/// </summary>
/// <param name="BarCode"></param>
/// <param name="BarCode">內部條碼</param>
/// <returns>0:找不到</returns>
private async Task<int> BarCodeToID(string BarCode)
{
@ -754,6 +1054,21 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
/// <summary>
/// 料號找料號ID
/// </summary>
/// <param name="ItemNo">料號</param>
/// <returns>0:找不到</returns>
private async Task<int> ItemNoToItemID(string ItemNo)
{
MaterialItemController materialItemController = new MaterialItemController(_context);
var q = await materialItemController.GetMaterialItemByItemNO(ItemNo);
if (q == null)
return 0;
else
return q.ItemID;
}
/// <summary>
/// 取得上一個作業站RuleStationID

6
AMESCoreStudio.WebApi/DTO/AMES/BarcodeItemKPDto.cs

@ -12,7 +12,7 @@ namespace AMESCoreStudio.WebApi.DTO.AMES
{
/// <summary>
/// 條碼鎖定ID
/// 工單號碼
/// </summary>
public string WipNo { get; set; }
@ -22,12 +22,12 @@ namespace AMESCoreStudio.WebApi.DTO.AMES
public string barcode { get; set; }
/// <summary>
/// 工單號碼
/// 生產單位
/// </summary>
public string unitNo { get; set; }
/// <summary>
/// 鎖定狀態(0:鎖定;1:解鎖)
/// List
/// </summary>
public List<string> inputKP { get; set; }

33
AMESCoreStudio.WebApi/DTO/BLL/BarCodeCheckDto.cs

@ -2,65 +2,89 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Runtime.Serialization;
namespace AMESCoreStudio.WebApi.DTO.AMES
{
/// <summary>
/// (過站資料)BarCodeCheck Dto
/// </summary>
[DataContract]
public class BarCodeCheckDto
{
/// <summary>
/// 工單號碼
/// </summary>
public string WipNo { get; set; }
[DataMember]
public string wipNo { get; set; }
/// <summary>
/// 內部條碼
/// </summary>
[DataMember]
public string barcode { get; set; }
/// <summary>
/// 過站狀態 M:一般 S:維修
/// </summary>
[DataMember]
public string barcodeType { get; set; } = "M";
/// <summary>
/// 生產單位
/// </summary>
[DataMember]
public string unitNo { get; set; }
/// <summary>
/// 作業站
/// </summary>
[DataMember]
public int station { get; set; } = 0;
/// <summary>
/// 線別站
/// </summary>
[DataMember]
public int line { get; set; } = 0;
/// <summary>
/// 紀錄組件或不良代碼
/// </summary>
public List<InputItem> inputItems { get; set; }
[DataMember]
public List<inputItem> inputItems { get; set; }
/// <summary>
/// 治具條碼
/// </summary>
public List<Outfit> Outfits { get; set; }
[DataMember]
public List<Outfit> outfits { get; set; }
/// <summary>
/// 紀錄組件或不良代碼
/// </summary>
public class InputItem
public class inputItem
{
/// <summary>
/// 刷入類型 NG or KP(Item_No)
/// </summary>
[DataMember]
public string inputType { get; set; }
/// <summary>
/// 刷入組件資料或不良代碼
/// </summary>
[DataMember]
public string inputData { get; set; }
/// <summary>
/// 組件:舊組件序號
/// </summary>
[DataMember]
public string oldInputData { get; set; }
}
/// <summary>
@ -71,6 +95,7 @@ namespace AMESCoreStudio.WebApi.DTO.AMES
/// <summary>
/// 刷入治具條碼
/// </summary>
[DataMember]
public string inputData { get; set; }
}
}

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

@ -60,7 +60,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
public int RuleStationID { get; set; }
/// <summary>
/// 條碼過站狀態
/// 條碼過站狀態 P:PASS F:不良
/// </summary>
[Column("RULE_STATUS")]
[DataMember]

Loading…
Cancel
Save