using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using AMESCoreStudio.CommonTools.Result; using Microsoft.AspNetCore.Hosting; using Newtonsoft.Json.Linq; using AMESCoreStudio.Web.Models; namespace AMESCoreStudio.Web.Controllers { public class QRSController : Controller { private readonly ILogger _logger; public readonly IREP _repApi; public readonly IPPS _ppsApi; public readonly IBAS _basApi; public readonly IPCS _pcsApi; private readonly IWebHostEnvironment _env; public QRSController(ILogger logger, IREP repApi, IPPS ppsApi, IBAS basApi, IPCS pcsApi, IWebHostEnvironment env) { _logger = logger; _repApi = repApi; _ppsApi = ppsApi; _basApi = basApi; _pcsApi = pcsApi; _env = env; } public async Task QRS009() { IResultModel result = await _pcsApi.GetWipInfo4QRS009(); string wipDataList = ""; if (result.DataTotal > 0) { foreach (var item in result.Data) { JObject jo = JObject.Parse(item.ToString()); int wip_id = int.Parse(jo["wipID"].ToString()); int flow_rule_id = int.Parse(jo["flowRuleID"].ToString()); int line_id = int.Parse(jo["lineID"].ToString()); string item_no = jo["itemNO"].ToString(); string unit_name = jo["unitName"].ToString(); string line_desc = jo["lineDesc"].ToString(); string wip_no = jo["wipNO"].ToString(); int plan_qty = int.Parse(jo["planQTY"].ToString()); int input_qty = int.Parse(jo["completeQTY"].ToString()); int output_qty = 0; var cycle_time = await _ppsApi.GetCycleTime(item_no + "," + line_id); string ct1 = ""; if (cycle_time.Count > 0) { ct1 = cycle_time[0].CT1.ToString()+"s"; } wipDataList = wipDataList + "" + unit_name + " - " + line_desc + "" + " - " + "" + wip_no + "" + "" + "(" + item_no + ")" + "" + " - " + "" + plan_qty + " / " + input_qty + " / " + output_qty + "" +" | "+ "" + "標準工時: " + "" + ct1 + "
"; var rule_sation = await _basApi.GetRuleStationsByFlow(flow_rule_id); wipDataList = wipDataList + ""; string stationQty = "
"; string stationRate = "
過站數量
"; string stationWip = "
良率
"; string stationList = ""; for (int j = 0; j < rule_sation.Count; j++) { if (rule_sation[j].StationID != 1000 && rule_sation[j].StationType == "M") { stationList = stationList + rule_sation[j].RuleStationID + ","; wipDataList = wipDataList + ""; var wip_station = await _pcsApi.GetWipStation4QRS009(wip_id, rule_sation[j].RuleStationID); int okQty = 0, ngQty = 0; if (wip_station.Count > 0) { for (int k = 0; k < wip_station.Count; k++) { if (wip_station[k].RuleStatus == "P") { okQty = wip_station[k].FirstCnt; } else { ngQty = wip_station[k].FirstCnt; } } } //stationQty = stationQty + ""; stationQty = stationQty + ""; double rate = ((okQty * 1.0) / (okQty + ngQty)) * 100; if (j == rule_sation.Count - 2) { if (rate <= 90) { stationRate = stationRate + ""; } else if (rate >= 95 && rate <= 97) { stationRate = stationRate + ""; } else if (rate >= 98) { stationRate = stationRate + ""; } else { stationRate = stationRate + ""; } //stationRate = stationRate + ""; } else { //stationRate = stationRate + ""; if (rate <= 90) { stationRate = stationRate + ""; } else if (rate >= 95 && rate <= 97) { stationRate = stationRate + ""; } else if (rate >= 98) { stationRate = stationRate + ""; } else { stationRate = stationRate + ""; } stationRate = stationRate + ""; } } } stationQty = stationQty + "
WIP" + rule_sation[j].StationDesc + "" + okQty + "/" + ngQty + "" + okQty + "/" + ngQty + "" + rate.ToString("0.00") + "%" + "" + rate.ToString("0.00") + "%" + "" + rate.ToString("0.00") + "%" + "" + rate.ToString("0.00") + "%" + "" + rate.ToString("0.00") + "%" + "" + rate.ToString("0.00") + "%" + "" + rate.ToString("0.00") + "%" + "" + rate.ToString("0.00") + "%" + "" + rate.ToString("0.00") + "%" + "" + rate.ToString("0.00") + "%" + "" + "" + " >> " + "" + "
"; stationRate = stationRate + ""; string[] station_list = stationList.Split(","); for (int j = 0; j < station_list.Length - 1; j++) { var wip_station1 = await _pcsApi.GetWipStation4QRS009(wip_id, int.Parse(station_list[j])); int okQty1 = 0, ngQty1 = 0; if (wip_station1.Count > 0) { for (int k = 0; k < wip_station1.Count; k++) { if (wip_station1[k].RuleStatus == "P") { okQty1 = wip_station1[k].FirstCnt; } else { ngQty1 = wip_station1[k].FirstCnt; } } } int okQty2 = 0, ngQty2 = 0; //计算WIP if (j < station_list.Length - 2) { var wip_station2 = await _pcsApi.GetWipStation4QRS009(wip_id, int.Parse(station_list[j+1])); if (wip_station2.Count > 0) { for (int k = 0; k < wip_station2.Count; k++) { if (wip_station2[k].RuleStatus == "P") { okQty2 = wip_station2[k].FirstCnt; } else { ngQty2 = wip_station2[k].FirstCnt; } } } } stationWip = stationWip + "" + (okQty1 + ngQty1 - okQty2 - ngQty2) + ""; } stationWip = stationWip + "
"; wipDataList = wipDataList + ""; wipDataList = wipDataList + stationQty; wipDataList = wipDataList + stationRate; wipDataList = wipDataList + stationWip; /* wipDataList = wipDataList + ""; for (int j = 0; j < rule_sation.Count; j++) { if (rule_sation[j].StationID != 1000 && rule_sation[j].StationType == "M") { wipDataList = wipDataList + ""; } } wipDataList = wipDataList + "
過站數量" + "0/0" + "
"; */ /* wipDataList = wipDataList + ""; for (int j = 0; j < rule_sation.Count; j++) { if (rule_sation[j].StationID != 1000 && rule_sation[j].StationType == "M") { if (j == rule_sation.Count - 2) { wipDataList = wipDataList + ""; } else { wipDataList = wipDataList + ""; wipDataList = wipDataList + ""; } } } wipDataList = wipDataList + "
良率" + "100%" + "" + "100%" + "" + "" + " >> " + "" + "
"; */ /* wipDataList = wipDataList + ""; for (int j = 0; j < rule_sation.Count; j++) { if (rule_sation[j].StationID != 1000 && rule_sation[j].StationType == "M") { wipDataList = wipDataList + ""; } } wipDataList = wipDataList + "
WIP" + "0" + "

"; */ } } else { wipDataList = wipDataList + "查无资料"; } wipDataList = wipDataList + "
"; ViewData["WipDataList"] = wipDataList; return View(); } public IActionResult QRS009P(string id) { string[] param = id.Split("_"); ViewBag.WIP_ID = param[0]; ViewBag.RULE_STATION_ID = param[1]; return View(); } public IActionResult QRS009F(string id) { string[] param = id.Split("_"); ViewBag.WIP_ID = param[0]; ViewBag.RULE_STATION_ID = param[1]; return View(); } public IActionResult QRS009W(string id) { string[] param = id.Split("_"); ViewBag.WIP_ID = param[0]; ViewBag.RULE_STATION_ID = param[1]; return View(); } [ResponseCache(Duration = 0)] [HttpGet] public async Task GetWipStationPassBarcode(string id, int page = 1, int limit = 10) { string[] param = id.Split("_"); int wip_id = int.Parse(param[0]); int rule_station_id = int.Parse(param[1]); var result = await _pcsApi.GetWipStationBarcode4QRS009(wip_id, rule_station_id, "P", page, limit); if (result.DataTotal > 0) { return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal }); } return Json(new Table() { count = 0, data = null }); } [ResponseCache(Duration = 0)] [HttpGet] public async Task GetWipStationFailBarcode(string id, int page = 1, int limit = 10) { string[] param = id.Split("_"); int wip_id = int.Parse(param[0]); int rule_station_id = int.Parse(param[1]); var result = await _pcsApi.GetWipStationBarcode4QRS009(wip_id, rule_station_id, "F", page, limit); if (result.DataTotal > 0) { return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal }); } return Json(new Table() { count = 0, data = null }); } [ResponseCache(Duration = 0)] [HttpGet] public async Task GetWipStationBarcode(string id, int page = 1, int limit = 10) { string[] param = id.Split("_"); int wip_id = int.Parse(param[0]); int rule_station_id = int.Parse(param[1]); var result = await _pcsApi.GetWipBarcode4QRS009(wip_id, rule_station_id, page, limit); if (result.DataTotal > 0) { return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal }); } return Json(new Table() { count = 0, data = null }); } } }