using EInk.Dtos; using EInk.Models; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; using System; using System.ComponentModel; using System.Xml.Linq; using System; using System.Threading; using System.Text; using EInk.Dtos; using System.Reflection.Metadata; using Microsoft.AspNetCore.Mvc.Rendering; using EInk.Tools; using EInk.Lot2Lot3.Models; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using System.Reflection; namespace EInk.Controllers { [Route("api/[controller]")] [ApiController] public class Lot3Controller : ControllerBase { private readonly ISqlSugarClient _db; private readonly IConfiguration _configuration; private readonly AppearancePixelEquivalent _appearancepixelequivalent; private readonly List _Lot3AppearancePatternList; public Lot3Controller(ISqlSugarClient db) { _db = db; _configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json", optional: true, reloadOnChange: true).Build(); _appearancepixelequivalent = _configuration.GetSection("AppearancePixelEquivalent").Get(); _Lot3AppearancePatternList = _configuration.GetValue("Lot3AppearancePatternList").Split(",").ToList(); } [HttpPost("UploadLot3")] public IActionResult Lot3Data([FromBody] Lot3Dto lot3Data) { string jsonStr = JsonConvert.SerializeObject(lot3Data); try { LogerHelper.RecordLogTxt($"UploadLot3, Data:{jsonStr}"); try { lot3Data.Valid(); } catch (Exception ex) { LogerHelper.RecordLogTxt($"UploadLot3, Valid Fail, Data:{jsonStr}, Message:{ex.Message}"); return Ok(ResultDto.Fail(ex.Message)); } //外观检像素当量 if (_appearancepixelequivalent.enable && lot3Data.result == "NG") { foreach (var item in lot3Data.itemCheckDatas) { //像素 = 实际长度 / 像素当量 switch (item.pattern) { case "PositiveAppearance": foreach (var detail_item in item.details) { var (flag, height, width) = detail_item.Valid_HeightWidth(); if (flag) { detail_item.height = (Math.Round(height / _appearancepixelequivalent.PositiveAppearance, 2)).ToString(); detail_item.width = (Math.Round(width / _appearancepixelequivalent.PositiveAppearance, 2)).ToString(); } } break; case "BackAppearance": foreach (var detail_item in item.details) { var (flag, height, width) = detail_item.Valid_HeightWidth(); if (flag) { detail_item.height = (Math.Round(height / _appearancepixelequivalent.BackAppearance, 2)).ToString(); detail_item.width = (Math.Round(width / _appearancepixelequivalent.BackAppearance, 2)).ToString(); } } break; case "BackFPC": foreach (var detail_item in item.details) { var (flag, height, width) = detail_item.Valid_HeightWidth(); if (flag) { detail_item.height = (Math.Round(height / _appearancepixelequivalent.BackFPC, 2)).ToString(); detail_item.width = (Math.Round(width / _appearancepixelequivalent.BackFPC, 2)).ToString(); } } break; case "PositiveFPC": foreach (var detail_item in item.details) { var (flag, height, width) = detail_item.Valid_HeightWidth(); if (flag) { detail_item.height = (Math.Round(height / _appearancepixelequivalent.PositiveFPC, 2)).ToString(); detail_item.width = (Math.Round(width / _appearancepixelequivalent.PositiveFPC, 2)).ToString(); } } break; default: break; } } } Lot2Lot3Model lot3model = new() { lot_id = lot3Data.id, is_send = 0, product_no = lot3Data.slidesNumber, create_time = DateTime.Now, is_repeatupload = Convert.ToInt32(lot3Data.isrepeatupload), operation_time = Convert.ToDateTime(lot3Data.createTime), content = JsonConvert.SerializeObject(new Lot2Lot3Dto(lot3Data)) }; //根据guid查看是否为重复插入 if (_db.Ado.GetInt(string.Format("select count(*) from lot2lot3_info where lot_id='{0}'", lot3Data.id)) > 0 || lot3Data.slidesNumber == "NA") { lot3model.is_send = 3; } _db.Insertable(lot3model).ExecuteCommand(); return Ok(ResultDto.Success()); } catch (Exception ex) { LogerHelper.RecordLogTxt($"UploadLot3, Data:{jsonStr}, StackTrace:{ex.StackTrace}, Message:{ex.Message}"); return Ok(ResultDto.Fail("error:" + ex.Message)); } } [HttpPost("UploadLot3List")] public IActionResult Lot3DataList([FromBody] List lot3Datalist) { Lot3Dto Lot3tempData = new Lot3Dto(); try { foreach (var item in lot3Datalist) { Lot3tempData = item; item.Valid(); } } catch (Exception ex) { LogerHelper.RecordLogTxt($"UploadLot3, Valid Fail, Data:{JsonConvert.SerializeObject(Lot3tempData)}, Message:{ex.Message}"); //return Ok(ResultDto.Fail(ex.Message)); return Ok(ResultDto.Fail($"Valid Fail, Data:{JsonConvert.SerializeObject(Lot3tempData)}, Message:{ex.Message}")); } try { _db.Ado.BeginTran(); foreach (var Lot3item in lot3Datalist) { Lot3tempData = Lot3item; //外观检像素当量 if (_appearancepixelequivalent.enable && Lot3item.result == "NG") { foreach (var item in Lot3item.itemCheckDatas) { //像素 = 实际长度 / 像素当量 switch (item.pattern) { case "PositiveAppearance": foreach (var detail_item in item.details) { var (flag, height, width) = detail_item.Valid_HeightWidth(); if (flag) { detail_item.height = (Math.Round(height / _appearancepixelequivalent.PositiveAppearance, 2)).ToString(); detail_item.width = (Math.Round(width / _appearancepixelequivalent.PositiveAppearance, 2)).ToString(); } } break; case "BackAppearance": foreach (var detail_item in item.details) { var (flag, height, width) = detail_item.Valid_HeightWidth(); if (flag) { detail_item.height = (Math.Round(height / _appearancepixelequivalent.BackAppearance, 2)).ToString(); detail_item.width = (Math.Round(width / _appearancepixelequivalent.BackAppearance, 2)).ToString(); } } break; case "BackFPC": foreach (var detail_item in item.details) { var (flag, height, width) = detail_item.Valid_HeightWidth(); if (flag) { detail_item.height = (Math.Round(height / _appearancepixelequivalent.BackFPC, 2)).ToString(); detail_item.width = (Math.Round(width / _appearancepixelequivalent.BackFPC, 2)).ToString(); } } break; case "PositiveFPC": foreach (var detail_item in item.details) { var (flag, height, width) = detail_item.Valid_HeightWidth(); if (flag) { detail_item.height = (Math.Round(height / _appearancepixelequivalent.PositiveFPC, 2)).ToString(); detail_item.width = (Math.Round(width / _appearancepixelequivalent.PositiveFPC, 2)).ToString(); } } break; default: break; } } } Lot2Lot3Model lot3model = new() { lot_id = Lot3item.id, is_send = 0, product_no = Lot3item.slidesNumber, create_time = DateTime.Now, is_repeatupload = Convert.ToInt32(Lot3item.isrepeatupload), operation_time = Convert.ToDateTime(Lot3item.createTime), content = JsonConvert.SerializeObject(new Lot2Lot3Dto(Lot3item)) }; //根据guid查看是否为重复插入 if (_db.Ado.GetInt(string.Format("select count(*) from lot2lot3_info where lot_id='{0}'", Lot3item.id)) > 0 || Lot3item.slidesNumber == "NA") { lot3model.is_send = 3; } _db.Insertable(lot3model).ExecuteCommand(); } _db.Ado.CommitTran(); return Ok(ResultDto.Success()); } catch (Exception ex) { _db.Ado.RollbackTran(); ; LogerHelper.RecordLogTxt($"UploadLot3, Data:{JsonConvert.SerializeObject(Lot3tempData)}, StackTrace:{ex.StackTrace}, Message:{ex.Message}"); return Ok(ResultDto.Fail("error:" + ex.Message)); } } [HttpPost("UploadColourCast")] public IActionResult ColourCastData([FromBody] ColourCastDto ColourCastData) { string jsonStr = JsonConvert.SerializeObject(ColourCastData); try { try { ColourCastData.Valid(); } catch (Exception ex) { LogerHelper.RecordLogTxt($"UploadColourCast, Valid Fail, Data:{jsonStr}, Message:{ex.Message}"); return Ok(ResultDto.Fail(ex.Message)); }; ColourCastModel colourcastmodel = new() { gid = ColourCastData.id, slidesNumber = ColourCastData.slidesNumber, is_send = 0, content = jsonStr, create_time = DateTime.Now }; //根据guid查看是否为重复插入 if (_db.Ado.GetInt(string.Format("select count(*) from colourcast_info where gid='{0}'", ColourCastData.id)) > 0) { colourcastmodel.is_send = 3; } _db.Insertable(colourcastmodel).ExecuteCommand(); return Ok(ResultDto.Success()); } catch (Exception ex) { LogerHelper.RecordLogTxt($"UploadColourCast, Data:{jsonStr}, StackTrace:{ex.StackTrace}, Message:{ex.Message}"); return Ok(ResultDto.Fail("error:" + ex.Message)); } } [HttpPost("UpdateDefectInfo")] public IActionResult UpdateDefectInfo(IFormFile file) { if (file == null || file.Length == 0) { return Ok(ResultDto.Fail("No file selected")); } string line; try { _db.Ado.BeginTran(); _db.Deleteable().ExecuteCommand(); using (var reader = new StreamReader(file.OpenReadStream(), Encoding.GetEncoding("gb2312"))) { var header = reader.ReadLine(); var headers = header.Split(','); while ((line = reader.ReadLine()) != null) { string[] linelist = line.Split(","); _db.Insertable(new DefectModel { id = Convert.ToInt32(linelist[0]), defect_code = linelist[1], defect_name = linelist[2], classification = linelist[3].Replace(';', ',') }).ExecuteCommand(); } } _db.Ado.CommitTran(); } catch (Exception ex) { _db.Ado.RollbackTran(); return Ok(ResultDto.Fail(ex.Message)); } return Ok(ResultDto.Success()); } } }