¶Ô±ÈÐÂÎļþ |
| | |
| | | using MES.Service.DB; |
| | | using MES.Service.Dto.service; |
| | | using MES.Service.Modes; |
| | | using MES.Service.util; |
| | | using SqlSugar; |
| | | |
| | | namespace MES.Service.service.QC; |
| | | |
| | | public class SJService |
| | | { |
| | | private readonly BaseService _baseService = new(); |
| | | |
| | | //è·åæå¤§åå· |
| | | public string getMaxBillNo() |
| | | { |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | var date = DateTime.Now.ToString("yyyy-MM-dd"); |
| | | var sql = |
| | | "select max(BILL_NO) from QS_ITEM_IPI_REQ where to_char(CREATE_TIME,'yyyy-mm-dd') = '" + |
| | | date + "'"; |
| | | |
| | | var maxBillNo = db.Ado.SqlQuerySingle<string>(sql); |
| | | |
| | | var number = "0001"; |
| | | if (maxBillNo != null) |
| | | { |
| | | maxBillNo = maxBillNo.Substring(12); |
| | | var no = Convert.ToInt32(maxBillNo); |
| | | no++; |
| | | number = no.ToString().PadLeft(4, '0'); |
| | | } |
| | | |
| | | return "SJN" + date.Replace("-", "") + number; |
| | | } |
| | | |
| | | //è·åæææ°æ®å页 |
| | | public List<SJPageResult> getPage(SJPageResult queryObj) |
| | | { |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | string[]? lineNo = null; |
| | | |
| | | if (StringUtil.IsNotNullOrEmpty(queryObj.StatusUser)) |
| | | lineNo = _baseService.getUserLineNo(queryObj.StatusUser); |
| | | |
| | | var data = db.Queryable<SJPageResult>() |
| | | .WhereIF(lineNo != null && lineNo.Length > 0, |
| | | a => lineNo.Contains(a.line)) |
| | | .WhereIF(queryObj.Id != null, a => a.Id == queryObj.Id) |
| | | .WhereIF(StringUtil.IsNotNullOrEmpty(queryObj.BillNo), |
| | | a => a.BillNo == queryObj.BillNo) |
| | | .WhereIF( |
| | | StringUtil.IsNotNullOrEmpty(queryObj.Result) && |
| | | "æªå®æ".Equals(queryObj.Result), |
| | | a => a.Result == queryObj.Result) |
| | | .WhereIF( |
| | | StringUtil.IsNotNullOrEmpty(queryObj.Result) && |
| | | !"æªå®æ".Equals(queryObj.Result), |
| | | a => a.Result != "æªå®æ") |
| | | .OrderBy(a => a.BillNo, OrderByType.Desc) |
| | | .ToPageList(queryObj.PageIndex, queryObj.Limit); |
| | | |
| | | return data; |
| | | } |
| | | |
| | | |
| | | //SetQSItem |
| | | // public List<QsItemIpiItem> SetQSItems(string itemNo) |
| | | // { |
| | | // var db = SqlSugarHelper.GetInstance(); |
| | | // return db |
| | | // .Queryable<MoidToItem, MesQualityStandard>((a, b) => |
| | | // new JoinQueryInfos(JoinType.Inner, a.MoidNum == b.MoidNum)) |
| | | // .Where((a, b) => b.QsType == "1" && a.Fsubmit == 1 && a.ItemNo == itemNo).Select( |
| | | // (a, b) => new QsItemIpiItem |
| | | // { |
| | | // ProjName = b.ProjName, |
| | | // ItemMod = b.ItemMod, |
| | | // InspectionMethod = b.InspectionMethod, |
| | | // UsingInstruments = b.UsingInstruments, |
| | | // LevelNum = SqlFunc.IsNull( |
| | | // SqlFunc.IsNull(b.LevelNum * b.InspectionLevel, 1), |
| | | // b.InspectionLevel), |
| | | // MaxValue = b.MaxValue, |
| | | // StandardValue = b.StandardValue, |
| | | // MinValue = b.MinValue, |
| | | // Notes = b.Notes, |
| | | // FcheckLevel = b.FcheckLevel, |
| | | // FacLevel = b.FacLevel, |
| | | // QsCode = b.QsCode, |
| | | // QsName = b.QsName, |
| | | // result = "æªæ£æµ" |
| | | // }).ToList(); |
| | | // } |
| | | public List<QsItemIpiItem> SetQSItems(string itemNo) |
| | | { |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | var count = db.Queryable<MesQa>().Where(s => s.QsType == "1" |
| | | && s.ItemNo == itemNo && s.Fsubmit == 1).Count(); |
| | | |
| | | if (count <= 0) return []; |
| | | |
| | | return db |
| | | .Queryable<MesQualityStandard>() |
| | | .Where(b => b.QsType == "1" && b.ItemNo == itemNo).Select( |
| | | b => new QsItemIpiItem |
| | | { |
| | | ProjName = b.ProjName, |
| | | ItemMod = b.ItemMod, |
| | | InspectionMethod = b.InspectionMethod, |
| | | UsingInstruments = b.UsingInstruments, |
| | | LevelNum = SqlFunc.IsNull( |
| | | SqlFunc.IsNull(b.LevelNum * b.InspectionLevel, 1), |
| | | b.InspectionLevel), |
| | | MaxValue = b.MaxValue, |
| | | StandardValue = b.StandardValue, |
| | | MinValue = b.MinValue, |
| | | Notes = b.Notes, |
| | | FcheckLevel = b.FcheckLevel, |
| | | FacLevel = b.FacLevel, |
| | | QsCode = b.QsCode, |
| | | QsName = b.QsName, |
| | | Picture = b.Picture, |
| | | Picturename = b.Picturename, |
| | | result = "æªæ£æµ", |
| | | isCheck = 0 |
| | | }).ToList(); |
| | | } |
| | | |
| | | public List<QsItemIpiItem> getQSItems(decimal? pid, decimal? id) |
| | | { |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | var qsItemIpiItems = db |
| | | .Queryable<QsItemIpiItem>() |
| | | .WhereIF(pid > 0, a => a.Pid == pid) |
| | | .WhereIF(id > 0, a => a.Id == id).ToList(); |
| | | |
| | | var array = qsItemIpiItems.Select(s => s.Id).ToArray(); |
| | | var qsItemIpiItemDetails = db.Queryable<QsItemIpiItemDetail>() |
| | | .Where(s => array.Contains(s.Pid)) |
| | | .GroupBy(s => s.Pid) |
| | | .Select(s => new |
| | | { |
| | | s.Pid, |
| | | count = SqlFunc.AggregateCount(s.Id) |
| | | }).ToList(); |
| | | |
| | | qsItemIpiItems.ForEach(s => |
| | | { |
| | | var find = qsItemIpiItemDetails.Find(a => s.Id == a.Pid); |
| | | if (find == null) |
| | | { |
| | | s.isCheck = 0; |
| | | s.result = "æªå®æ"; |
| | | } |
| | | else |
| | | { |
| | | s.isCheck = find.count; |
| | | if (find.count == s.LevelNum && s.IsPass == 1) |
| | | s.result = "åæ ¼"; |
| | | else if (find.count == s.LevelNum && s.IsPass == 0) |
| | | s.result = "ä¸åæ ¼"; |
| | | else |
| | | s.result = "æªå®æ"; |
| | | } |
| | | }); |
| | | |
| | | //使ç¨linq表达å¼è¿æ»¤åºå¾çidä¸ä¸ºç©ºçæ°æ® |
| | | var itemIpiItems = |
| | | qsItemIpiItems.Where(s => s.Picture is { Length: > 0 }) |
| | | .ToList(); |
| | | if (itemIpiItems.Count > 0) |
| | | itemIpiItems.ForEach(s => |
| | | { |
| | | var qsItemIpiItem = qsItemIpiItems.Find(t => t.Id == s.Id); |
| | | //å°åèæ°ç»è½¬æ¢ä¸ºBase64ç¼ç çå符串 |
| | | qsItemIpiItem.imageData = Convert.ToBase64String(s.Picture); |
| | | }); |
| | | |
| | | //æåºï¼æªå®æçæå¨åé¢ |
| | | qsItemIpiItems = qsItemIpiItems.OrderBy(s => s.isCheck).ToList(); |
| | | |
| | | return qsItemIpiItems; |
| | | } |
| | | |
| | | public QsItem Save(QsItem item) |
| | | { |
| | | var qsItemIpiReq = item.From; |
| | | var qsItemIpiItems = item.Items; |
| | | SqlSugarHelper.UseTransactionWithOracle( |
| | | db => |
| | | { |
| | | qsItemIpiReq.StatusDate = DateTime.Now; |
| | | var pid = db.Insertable(qsItemIpiReq) |
| | | .ExecuteReturnIdentity(); |
| | | qsItemIpiReq.Id = pid; |
| | | |
| | | item.gid = pid; |
| | | |
| | | qsItemIpiItems.ForEach(s => s.Pid = pid); |
| | | |
| | | return db.Insertable(qsItemIpiItems) |
| | | .ExecuteCommand(); |
| | | }); |
| | | item.Items = getQSItems(qsItemIpiReq.Id, null); |
| | | |
| | | //没æä¸ä¸éçæ£éªé¡¹ç®èªå¨çç¹ä¸ºåæ ¼ |
| | | item.Items.ForEach(s => |
| | | { |
| | | if (s.MaxValue != null || s.StandardValue != null || |
| | | s.MinValue != null) return; |
| | | var detail = new QsItemIpiItemDetail(); |
| | | detail.Pid = s.Id; |
| | | detail.Gid = item.gid; |
| | | detail.Fstand = "â"; |
| | | detail.FcheckResu = "1"; |
| | | detail.UpdateBy = item.From.StatusUser; |
| | | detail.count = (int?)s.LevelNum; |
| | | SetQSItemDetail(detail); |
| | | }); |
| | | |
| | | item.Items = getQSItems(qsItemIpiReq.Id, null); |
| | | var sjPageResult = new SJPageResult |
| | | { Id = item.From.Id, Limit = 1, PageIndex = 1 }; |
| | | item.Result = getPage(sjPageResult)[0]; |
| | | |
| | | return item; |
| | | } |
| | | |
| | | public QsItem SaveItem(QsItem item) |
| | | { |
| | | var qsItemIpiItems = item.Items; |
| | | SqlSugarHelper.UseTransactionWithOracle( |
| | | db => |
| | | { |
| | | qsItemIpiItems.ForEach(s => s.Pid = item.gid); |
| | | |
| | | return db.Insertable(qsItemIpiItems) |
| | | .ExecuteCommand(); |
| | | }); |
| | | item.Items = getQSItems(item.gid, null); |
| | | |
| | | //没æä¸ä¸éçæ£éªé¡¹ç®èªå¨çç¹ä¸ºåæ ¼ |
| | | item.Items.ForEach(s => |
| | | { |
| | | if (s.MaxValue != null || s.StandardValue != null || |
| | | s.MinValue != null) return; |
| | | var detail = new QsItemIpiItemDetail(); |
| | | detail.Pid = s.Id; |
| | | detail.Gid = item.gid; |
| | | detail.Fstand = "â"; |
| | | detail.FcheckResu = "1"; |
| | | detail.UpdateBy = item.StatusUser; |
| | | detail.count = (int?)s.LevelNum; |
| | | SetQSItemDetail(detail); |
| | | }); |
| | | |
| | | item.Items = getQSItems(item.gid, null); |
| | | |
| | | return item; |
| | | } |
| | | |
| | | public int SetQSItemDetail(QsItemIpiItemDetail detail) |
| | | { |
| | | var oracle = SqlSugarHelper.UseTransactionWithOracle(db => |
| | | { |
| | | List<QsItemIpiItemDetail> result = new(); |
| | | for (var i = 0; i < detail.count; i++) |
| | | { |
| | | var item = new QsItemIpiItemDetail(); |
| | | item.Gid = detail.Gid; |
| | | item.Pid = detail.Pid; |
| | | item.Fstand = detail.Fstand; |
| | | item.FcheckResu = detail.FcheckResu; |
| | | item.CreateBy = detail.UpdateBy; |
| | | item.CreateDate = DateTime.Now; |
| | | result.Add(item); |
| | | } |
| | | |
| | | return db.Insertable(result).ExecuteCommand(); |
| | | }); |
| | | |
| | | detail.CreateBy = detail.UpdateBy; |
| | | |
| | | autoResult(detail); |
| | | |
| | | return oracle; |
| | | } |
| | | |
| | | public List<QsItemIpiItemDetail> getQSItemDetail(decimal? pid, decimal? gid) |
| | | { |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | return db.Queryable<QsItemIpiItemDetail>() |
| | | .Where(s => s.Pid == pid) |
| | | .WhereIF(gid > 0, s => s.Gid == gid) |
| | | .ToList(); |
| | | } |
| | | |
| | | |
| | | //èªå¨å¤å®æ¯å¦åæ ¼ |
| | | private int autoResult(QsItemIpiItemDetail detail) |
| | | { |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | // Single æ²¡ææ¥è¯¢å°ç»ææ¶è¿åNullï¼å¦æç»æå¤§äº1æ¡ä¼æåºé误 |
| | | var qsItemIpiItem = db.Queryable<QsItemIpiItem>() |
| | | .Single(s => s.Id == detail.Pid); |
| | | |
| | | if (qsItemIpiItem == null) return 0; |
| | | |
| | | var count = db.Queryable<QsItemIpiItemDetail>() |
| | | .Where(s => s.Pid == detail.Pid).Count(); |
| | | |
| | | |
| | | var result = 0; |
| | | |
| | | if (qsItemIpiItem.LevelNum != count) return 0; |
| | | |
| | | var passCount = db.Queryable<QsItemIpiItemDetail>() |
| | | .Where(s => s.Pid == detail.Pid && s.Fstand == "â").Count(); |
| | | |
| | | if (count == passCount) result = 1; |
| | | |
| | | var useTransactionWithOracle = SqlSugarHelper.UseTransactionWithOracle( |
| | | db => |
| | | { |
| | | var commit = 0; |
| | | commit += db.Updateable<QsItemIpiItem>() |
| | | .SetColumns(s => s.IsPass == result) |
| | | .Where(s => s.Id == detail.Pid) |
| | | .ExecuteCommand(); |
| | | return commit; |
| | | }); |
| | | |
| | | |
| | | //èªå¨å¤å®æ¯å¦åæ ¼ |
| | | //è·åæ£éªåçæ£éªé¡¹ç®çè®ºä¸ªæ° |
| | | var sum = db.Queryable<QsItemIpiItem>() |
| | | .Where(s => s.Pid == detail.Gid).Sum(it => it.LevelNum); |
| | | if (sum == null || sum == 0) return 1; |
| | | |
| | | //è·åæ£éªåä¸çæ£éªé¡¹ç®å®é
ä¸ªæ° |
| | | var icount = db.Queryable<QsItemIpiItemDetail>() |
| | | .Where(s => s.Gid == detail.Gid).Count(); |
| | | |
| | | if (icount == 0) return 1; |
| | | |
| | | //å®é
个æ°çäºçè®ºä¸ªæ°æ¶å¯¹æ£éªåè¿è¡å¤å® |
| | | if (sum == icount) |
| | | { |
| | | result = 0; |
| | | |
| | | //è·åè¿ä¸ªæ£éªåä¸çææåæ ¼çæ£éªç»æ |
| | | passCount = db.Queryable<QsItemIpiItemDetail>() |
| | | .Where(s => s.Gid == detail.Gid && s.Fstand == "â").Count(); |
| | | |
| | | //åæ ¼çæ£éªç»æçäºæ»æ£éªæ°è§ä¸ºåæ ¼ |
| | | if (icount == passCount) result = 1; |
| | | |
| | | useTransactionWithOracle += SqlSugarHelper.UseTransactionWithOracle( |
| | | db => |
| | | { |
| | | return db.Updateable<QsItemIpiReq>() |
| | | .SetColumns(s => s.IsPass == result) |
| | | .SetColumns(s => s.StatusUser == detail.CreateBy) |
| | | .SetColumns(s => s.CompleteTime == DateTime.Now) |
| | | .Where(s => s.Id == detail.Gid) |
| | | .ExecuteCommand(); |
| | | }); |
| | | } |
| | | |
| | | return useTransactionWithOracle; |
| | | } |
| | | |
| | | public int UpdateQSItemDetail(QsItemIpiItemDetail detail) |
| | | { |
| | | var withOracle = SqlSugarHelper.UseTransactionWithOracle(db => |
| | | { |
| | | return db.Updateable<QsItemIpiItemDetail>() |
| | | .SetColumns(s => s.UpdateBy == detail.UpdateBy) |
| | | .SetColumns(s => s.UpdateDate == DateTime.Now) |
| | | .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.Fstand), |
| | | s => s.Fstand == detail.Fstand) |
| | | .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.FcheckResu), |
| | | s => s.FcheckResu == detail.FcheckResu) |
| | | .Where(s => s.Id == detail.Id) |
| | | .ExecuteCommand(); |
| | | }); |
| | | |
| | | detail.CreateBy = detail.UpdateBy; |
| | | |
| | | withOracle += autoResult(detail); |
| | | |
| | | return withOracle; |
| | | } |
| | | |
| | | |
| | | //主表修æ¹å¤æ³¨å段 |
| | | public int saveRemarksGid(QsItem dto) |
| | | { |
| | | return SqlSugarHelper.UseTransactionWithOracle(db => |
| | | { |
| | | return db.Updateable<QsItemIpiReq>() |
| | | .SetColumns(it => |
| | | it.Remarks == dto.Remarks) //SetColumnsæ¯å¯ä»¥å å ç å2个就2ä¸ªåæ®µèµå¼ |
| | | .Where(it => it.Id == dto.gid) |
| | | .ExecuteCommand(); |
| | | }); |
| | | } |
| | | |
| | | //å表修æ¹å¤æ³¨å段 |
| | | public int saveRemarksPid(QsItem dto) |
| | | { |
| | | return SqlSugarHelper.UseTransactionWithOracle(db => |
| | | { |
| | | return db.Updateable<QsItemIpiItem>() |
| | | .SetColumns(it => |
| | | it.Remarks == dto.Remarks) //SetColumnsæ¯å¯ä»¥å å ç å2个就2ä¸ªåæ®µèµå¼ |
| | | .Where(it => it.Id == dto.pid) |
| | | .ExecuteCommand(); |
| | | }); |
| | | } |
| | | |
| | | //å表修æ¹å¤æ³¨å段 |
| | | public int saveRemarksById(QsItem dto) |
| | | { |
| | | return SqlSugarHelper.UseTransactionWithOracle(db => |
| | | { |
| | | return db.Updateable<QsItemIpiItemDetail>() |
| | | .SetColumns(it => |
| | | it.Remarks == dto.Remarks) //SetColumnsæ¯å¯ä»¥å å ç å2个就2ä¸ªåæ®µèµå¼ |
| | | .Where(it => it.Id == dto.id) |
| | | .ExecuteCommand(); |
| | | }); |
| | | } |
| | | |
| | | public int removeXJ(decimal? id) |
| | | { |
| | | var withOracle = SqlSugarHelper.UseTransactionWithOracle(db => |
| | | { |
| | | var commit = 0; |
| | | //å é¤ä¸»è¡¨ |
| | | commit += db.Deleteable<QsItemIpiReq>().Where(s => s.Id == id) |
| | | .ExecuteCommand(); |
| | | //å é¤å表 |
| | | commit += db.Deleteable<QsItemIpiItem>().Where(s => s.Pid == id) |
| | | .ExecuteCommand(); |
| | | //å é¤å表 |
| | | commit += db.Deleteable<QsItemIpiItemDetail>() |
| | | .Where(s => s.Gid == id) |
| | | .ExecuteCommand(); |
| | | return commit; |
| | | }); |
| | | |
| | | return withOracle; |
| | | } |
| | | } |