| | |
| | | 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>() |
| | |
| | | |
| | | //æåºï¼æªå®æçæå¨åé¢ |
| | | 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; |
| | | } |
| | |
| | | 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(); |
| | |
| | | item.FcheckResu = detail.FcheckResu; |
| | | item.CreateBy = detail.UpdateBy; |
| | | item.CreateDate = DateTime.Now; |
| | | |
| | | // 妿æèµ·å§ç´¢å¼ï¼å¯ä»¥å¨è¿é设置ç¸å
³çç´¢å¼ä¿¡æ¯ |
| | | // 注æï¼è¿éåªæ¯ç¤ºä¾ï¼å®é
å¯è½éè¦æ ¹æ®ä¸å¡éæ±è°æ´ |
| | | result.Add(item); |
| | | } |
| | | |
| | |
| | | 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; |
| | | } |
| | | } |