StandardInterface/MES.Service/Modes/HoleNumberInfo.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
StandardInterface/MES.Service/Modes/QsItemIpiItem.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
StandardInterface/MES.Service/Modes/QsItemIpiItemDetail.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
StandardInterface/MES.Service/Modes/QsItemIpiReq.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
StandardInterface/MES.Service/service/QC/SJService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
StandardInterface/MESApplication/appsettings.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
StandardInterface/MES.Service/Modes/HoleNumberInfo.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ namespace MES.Service.Modes; /// <summary> /// ç©´å·ä¿¡æ¯ /// </summary> public class HoleNumberInfo { /// <summary> /// ç¼å·ï¼1,2,3...ï¼ /// </summary> public int Index { get; set; } /// <summary> /// ç©´å·ï¼1-8循ç¯ï¼ /// </summary> public int HoleNumber { get; set; } /// <summary> /// æ¯å¦è¢«å µä½ /// </summary> public bool IsBlocked { get; set; } /// <summary> /// è®°å½å¼ /// </summary> public string? RecordValue { get; set; } /// <summary> /// æ£éªç»æ /// </summary> public string? CheckResult { get; set; } } StandardInterface/MES.Service/Modes/QsItemIpiItem.cs
@@ -118,6 +118,18 @@ [Column("ITEM_ID")] [SugarColumn(ColumnName = "ITEM_ID")] public decimal? ItemId { get; set; } /// <summary> /// ç©´æ° /// </summary> [Column("MNUM")] [SugarColumn(ColumnName = "MNUM")] public decimal? Mnum { get; set; } /// <summary> /// å µç©´å· /// </summary> [Column("DNUM")] [SugarColumn(ColumnName = "DNUM")] public string? Dnum { get; set; } /// <summary> /// æ åå¼ @@ -168,6 +180,19 @@ [StringLength(200, ErrorMessage = "夿³¨ä¸è½è¶ åº200")] public string? Remarks { get; set; } /// <summary> /// éæ£æ¹æ° /// </summary> [Column("SNUM")] [SugarColumn(ColumnName = "SNUM")] public decimal? Snum { get; set; } /// <summary> /// ç©´å·ä¿¡æ¯ï¼ç¨äºå端æ¾ç¤ºï¼ /// </summary> [SugarColumn(IsIgnore = true)] public List<HoleNumberInfo>? HoleNumbers { get; set; } [SugarColumn(IsIgnore = true)] public string? result { get; set; } [SugarColumn(IsIgnore = true)] public string? imageData { get; set; } } StandardInterface/MES.Service/Modes/QsItemIpiItemDetail.cs
@@ -88,4 +88,6 @@ [SugarColumn(IsIgnore = true)] public decimal? IsPass { get; set; } [SugarColumn(IsIgnore = true)] public int? count { get; set; } [SugarColumn(IsIgnore = true)] public int? startIndex { get; set; } } StandardInterface/MES.Service/Modes/QsItemIpiReq.cs
@@ -155,4 +155,19 @@ [SugarColumn(ColumnName = "SJ_MJ")] [StringLength(10, ErrorMessage = "æ£éªç±»åé¿åº¦ä¸è½è¶ åº10")] public string? SJ_MJ { get; set; } /// <summary> /// ç©´æ° /// </summary> [Column("MNUM")] [SugarColumn(ColumnName = "MNUM")] public decimal? Mnum { get; set; } /// <summary> /// å µç©´å· /// </summary> [Column("DNUM")] [SugarColumn(ColumnName = "DNUM")] [StringLength(100, ErrorMessage = "å µç©´å·é¿åº¦ä¸è½è¶ åº100")] public string? Dnum { get; set; } } StandardInterface/MES.Service/service/QC/SJService.cs
@@ -178,10 +178,38 @@ public List<QsItemIpiItem> getQSItems(decimal? pid, decimal? id) { var db = SqlSugarHelper.GetInstance(); // 使ç¨JOINæ¥è¯¢è·ååè¡¨æ°æ®å主表çMNUMãDNUMåæ®µ var qsItemIpiItems = db .Queryable<QsItemIpiItem>() .WhereIF(pid > 0, a => a.Pid == pid) .WhereIF(id > 0, a => a.Id == id).ToList(); .Queryable<QsItemIpiItem, QsItemIpiReq>((a, b) => new JoinQueryInfos(JoinType.Left, a.Pid == b.Id)) .WhereIF(pid > 0, (a, b) => a.Pid == pid) .WhereIF(id > 0, (a, b) => a.Id == id) .Select((a, b) => new QsItemIpiItem { Id = a.Id, Pid = a.Pid, ProjName = a.ProjName, ItemMod = a.ItemMod, InspectionMethod = a.InspectionMethod, UsingInstruments = a.UsingInstruments, LevelNum = a.LevelNum, MaxValue = a.MaxValue, StandardValue = a.StandardValue, MinValue = a.MinValue, Notes = a.Notes, FcheckLevel = a.FcheckLevel, FacLevel = a.FacLevel, QsCode = a.QsCode, QsName = a.QsName, Picture = a.Picture, Picturename = a.Picturename, IsPass = a.IsPass, ItemId = a.ItemId, Mnum = b.Mnum, // ä»ä¸»è¡¨è·åMNUM Dnum = b.Dnum, // ä»ä¸»è¡¨è·åDNUM Snum = a.Snum, // éæ£æ¹æ° Remarks = a.Remarks }).ToList(); var array = qsItemIpiItems.Select(s => s.Id).ToArray(); var qsItemIpiItemDetails = db.Queryable<QsItemIpiItemDetail>() @@ -227,6 +255,16 @@ //æåºï¼æªå®æçæå¨åé¢ qsItemIpiItems = qsItemIpiItems.OrderBy(s => s.isCheck).ToList(); // 为æ¯ä¸ªæ£éªé¡¹ç®çæç©´å·ä¿¡æ¯ qsItemIpiItems.ForEach(item => { if (item.Mnum > 0 && item.Snum > 0) { // 使ç¨SNUMä½ä¸ºéæ£æ¹æ°æ¥è®¡ç®æ»ç¼å·æ°é item.HoleNumbers = GenerateHoleNumbers(item.Mnum, item.Dnum, item.Snum); } }); return qsItemIpiItems; } @@ -313,6 +351,10 @@ var oracle = SqlSugarHelper.UseTransactionWithOracle(db => { List<QsItemIpiItemDetail> result = new(); // è·åèµ·å§ç´¢å¼ï¼å¦ææ²¡ææå®åä»0å¼å§ int startIndex = detail.startIndex ?? 0; for (var i = 0; i < detail.count; i++) { var item = new QsItemIpiItemDetail(); @@ -322,6 +364,9 @@ item.FcheckResu = detail.FcheckResu; item.CreateBy = detail.UpdateBy; item.CreateDate = DateTime.Now; // 妿æèµ·å§ç´¢å¼ï¼å¯ä»¥å¨è¿é设置ç¸å ³çç´¢å¼ä¿¡æ¯ // 注æï¼è¿éåªæ¯ç¤ºä¾ï¼å®é å¯è½éè¦æ ¹æ®ä¸å¡éæ±è°æ´ result.Add(item); } @@ -571,4 +616,68 @@ throw new Exception(ex.Message); } } /// <summary> /// çæç©´å·ä¿¡æ¯ /// </summary> /// <param name="mnum">å¼ç©´æ»æ°</param> /// <param name="dnum">å µç©´å·ï¼éå·åéï¼</param> /// <param name="snum">éæ£æ¹æ°</param> /// <returns>ç©´å·ä¿¡æ¯å表</returns> private List<HoleNumberInfo> GenerateHoleNumbers(decimal? mnum, string? dnum, decimal? snum) { var result = new List<HoleNumberInfo>(); if (mnum == null || mnum <= 0 || snum == null || snum <= 0) return result; // è§£æå µç©´å· var blockedHoles = new HashSet<int>(); if (!string.IsNullOrEmpty(dnum)) { var holeNumbers = dnum.Split(',', StringSplitOptions.RemoveEmptyEntries); foreach (var holeStr in holeNumbers) { if (int.TryParse(holeStr.Trim(), out int holeNum)) { blockedHoles.Add(holeNum); } } } int totalHoles = (int)mnum.Value; int batchCount = (int)snum.Value; // éæ£æ¹æ° // è®¡ç®æ»ç¼å·æ°éï¼å¼ç©´æ»æ° Ã éæ£æ¹æ° int totalIndexes = totalHoles * batchCount; for (int i = 1; i <= totalIndexes; i++) { // ç©´å·å¾ªç¯ï¼1-8, 1-8... int holeNumber = ((i - 1) % totalHoles) + 1; bool isBlocked = blockedHoles.Contains(holeNumber); result.Add(new HoleNumberInfo { Index = i, HoleNumber = holeNumber, IsBlocked = isBlocked, RecordValue = isBlocked ? "/" : null, CheckResult = isBlocked ? "/" : null }); } // æåºï¼å µç©´ææåä¼å 级第ä¸ï¼ç¶åç©´å·ä»å°å°å¤§æï¼ç©´å·ç¸åçæä¸èµ· result = result.OrderBy(x => x.IsBlocked) // å µç©´ææåï¼falseå¨åï¼trueå¨åï¼ .ThenBy(x => x.HoleNumber) // ç©´å·ä»å°å°å¤§ .ToList(); // éæ°è®¾ç½®Indexï¼ä¿æè¿ç»ç¼å· for (int i = 0; i < result.Count; i++) { result[i].Index = i + 1; } return result; } } StandardInterface/MESApplication/appsettings.json
@@ -10,6 +10,6 @@ "AppSettings": { "TestErpUrl": "http://192.168.11.120:8098/WebService1.asmx/mesToErpinfo", "ProductionErpUrl": "http://192.168.11.120:8098/WebService1.asmx/mesToErpinfoFormal", "DataBaseConn": "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL))); Persist Security Info=True;User ID = hm_prd; Password=hmprd" "DataBaseConn": "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL))); Persist Security Info=True;User ID = test_dev; Password=hmprd" } }