From 0cff826ea489a1faa5cbb320cad52d102530a9e0 Mon Sep 17 00:00:00 2001 From: zjh <2207896513@qq.com> Date: 星期四, 13 三月 2025 10:53:42 +0800 Subject: [PATCH] 代码提交 --- StandardPda/MES.Service/service/QC/XJService.cs | 531 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 531 insertions(+), 0 deletions(-) diff --git a/StandardPda/MES.Service/service/QC/XJService.cs b/StandardPda/MES.Service/service/QC/XJService.cs new file mode 100644 index 0000000..9ed2beb --- /dev/null +++ b/StandardPda/MES.Service/service/QC/XJService.cs @@ -0,0 +1,531 @@ +锘縰sing 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 XJService +{ + private static readonly OracleSQLHelper SQLHelper = new(); + + private readonly BaseService _baseService = new(); + + + private readonly string[] statusArray = ["寮�宸�", "寰呭紑宸�"]; + + //鐢熸垚鏈�鏂扮殑妫�楠屽崟鍙� + public string getMaxReleaseNo() + { + var sql = + string.Format( + "select max(RELEASE_NO) from QS_QA_ITEM_XJ where RELEASE_NO like 'XJN%' and to_char(CREATE_DATE,'yyyy-mm-dd') = '{0}'", + DateTime.Now.ToString("yyyy-MM-dd")); + + var executeScalar = SQLHelper.ExecuteScalar(sql); + var date = DateTime.Now.ToString("yyMMdd"); + var number = "0001"; + var olReleaseNo = executeScalar.ToString(); + //鍒ゆ柇浠婂ぉ鏄惁鐢熸垚浜嗗贰妫�鍗� + if (string.IsNullOrEmpty(olReleaseNo)) return "XJN" + date + number; + //鎴彇鍚庡洓浣嶇殑娴佹按鍙风疮鍔� + var substring = Convert.ToInt32(olReleaseNo.Substring(10)); + substring += 1; + number = substring.ToString("D4"); + + //濡傛灉涓虹┖鐩存帴杩斿洖0001 + return "XJN" + date + number; + } + + public List<Womdaa> getItem(string daa001) + { + var db = SqlSugarHelper.GetInstance(); + + //in鐨勫啓娉� https://www.donet5.com/Home/Doc?typeId=1187 + + return db.Queryable<Womdaa>() + .Where(a => + a.Daa001 == daa001 && + statusArray.Contains(a.Daa018)) + .ToList(); + } + + public List<MesLine> getLineAll() + { + var db = SqlSugarHelper.GetInstance(); + + return db.Queryable<Womdaa, MesLine>((a, b) => + new JoinQueryInfos(JoinType.Left, a.Daa015 == b.LineNo)) + .Where((a, b) => b.LineName != null && + statusArray.Contains(a.Daa018)) + .GroupBy((a, b) => new + { + b.LineNo, b.LineName + }) + .Select((a, b) => new MesLine + { + LineNo = b.LineNo, + LineName = b.LineName + }).OrderBy("b.LINE_NO").ToList(); + } + + public List<Womdaa> getDaa001(string daa020, string item) + { + var db = SqlSugarHelper.GetInstance(); + return db.Queryable<Womdaa, MesItems>((a, b) => + new JoinQueryInfos(JoinType.Inner, a.Daa002 == b.Id.ToString())) + .Where((a, b) => + a.Daa015 == daa020 && + b.ItemNo == item && + statusArray.Contains(a.Daa018)) + .Select<Womdaa>(a => new Womdaa + { + Id = a.Id, + Daa001 = a.Daa001, + Daa003 = a.Daa003, + Daa008 = a.Daa008 + }).ToList(); + } + + public List<MesItems> getBoardItem(string lineNo) + { + var db = SqlSugarHelper.GetInstance(); + return db.Queryable<Womdaa, MesItems>((a, b) => + new JoinQueryInfos(JoinType.Inner, a.Daa002 == b.Id.ToString())) + .Where((a, b) => statusArray.Contains(a.Daa018) && + a.Daa015 == lineNo) + .OrderBy((a, b) => b.ItemName) + .Select<MesItems>((a, b) => + new MesItems + { + Id = b.Id, + ItemNo = b.ItemNo, + ItemName = b.ItemName, + ItemModel = b.ItemModel + }).ToList(); + } + + public List<QsQaItemXj> getPage(XJPageResult queryObj) + { + var db = SqlSugarHelper.GetInstance(); + + var id = Convert.ToDecimal(queryObj.id); + + string[]? lineNo = null; + + if (StringUtil.IsNotNullOrEmpty(queryObj.createUser)) + lineNo = _baseService.getUserLineNo(queryObj.createUser); + + return db + .Queryable<QsQaItemXj, Womdaa, MesLine, + MesItems>((s, a, c, b) => + new JoinQueryInfos( + JoinType.Inner, s.BillNo == a.Daa001, + JoinType.Left, a.Daa015 == c.LineNo, + JoinType.Left, s.ItemId == b.Id + ) + ) + .WhereIF(lineNo != null && lineNo.Length > 0, + (s, a, c, b) => lineNo.Contains(c.LineNo)) + .WhereIF( + StringUtil.IsNotNullOrEmpty(queryObj.result) && + "鏈畬鎴�".Equals(queryObj.result), + (s, a, c, b) => s.FcheckResu == null) + .WhereIF( + StringUtil.IsNotNullOrEmpty(queryObj.result) && + !"鏈畬鎴�".Equals(queryObj.result), + (s, a, c, b) => s.FcheckResu != null) + .WhereIF(id > 0, (s, a, c, b) => s.Id == id) + .Select((s, a, c, b) => new QsQaItemXj + { + Daa020 = c.LineNo, + Id = s.Id, + PlanQty = a.Daa008, + CreateBy = s.CreateBy, + CreateDate = s.CreateDate, + ReleaseNo = s.ReleaseNo, + ItemNo = s.ItemNo, + BillNo = s.BillNo, + ItemName = b.ItemName, + ItemModel = b.ItemModel, + FcheckBy = s.FcheckBy, + FcheckResu = s.FcheckResu, + Remarks = s.Remarks + }).OrderBy(s => s.CreateDate, OrderByType.Desc) + .ToPageList(queryObj.PageIndex, queryObj.Limit); + } + + + public List<QsQaItemXj01> setJYItem(string itemNo) + { + var db = SqlSugarHelper.GetInstance(); + + var count = db.Queryable<MesQa>().Where(s => s.QsType == "2" + && s.ItemNo == itemNo && s.Fsubmit == 1).Count(); + + if (count <= 0) return new List<QsQaItemXj01>(); + + return db + .Queryable<MesQualityStandard>() + .Where(b => b.QsType == "2" + && b.ItemNo == itemNo).Select( + b => new QsQaItemXj01 + { + 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 = "鏈娴�", + isCheck = 0, + Picture = b.Picture, + Picturename = b.Picturename + }).ToList(); + } + + public List<QsQaItemXj01> getJYItem(decimal? pid, decimal? id) + { + var db = SqlSugarHelper.GetInstance(); + var qsQaItemXj01s = db.Queryable<QsQaItemXj01>() + .WhereIF(pid > 0, a => a.Pid == pid) + .WhereIF(id > 0, a => a.Id == id) + .ToList(); + + var array = qsQaItemXj01s.Select(s => s.Id).ToArray(); + var qsQaItemDetails = db.Queryable<QsQaItemXj02>() + .Where(s => array.Contains(s.Pid)) + .GroupBy(s => s.Pid) + .Select(s => new + { + s.Pid, + count = SqlFunc.AggregateCount(s.Id) + }).ToList(); + + qsQaItemXj01s.ForEach(s => + { + var find = qsQaItemDetails.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 = "鏈畬鎴�"; + } + + //杩囨护鍑哄浘鐗噄d涓嶄负绌虹殑鏁版嵁杞负base64 + if (s.Picture is { Length: > 0 }) + s.imageData = Convert.ToBase64String(s.Picture); + }); + + //鎺掑簭锛屾湭瀹屾垚鐨勬帓鍦ㄥ墠闈� + qsQaItemXj01s = qsQaItemXj01s.OrderBy(s => s.isCheck).ToList(); + + return qsQaItemXj01s; + } + + + public int save(XJDto xjDto) + { + var xj = xjDto.from; + var items = xjDto.items; + var userNo = xjDto.userNo; + + SqlSugarHelper.UseTransactionWithOracle(db => + { + var commit = 0; + + xj.CreateBy = userNo; + xj.CreateDate = DateTime.Now; + + var pid = db.Insertable(xj).ExecuteReturnIdentity(); + + xj.Id = pid; + + xjDto.gid = pid; + + foreach (var item in items) item.Pid = pid; + + commit += db.Insertable(items).ExecuteCommand(); + + return commit; + }); + + xjDto.items = getJYItem(xj.Id, null); + + xjDto.items.ForEach(s => + { + if (s.MaxValue != null || s.StandardValue != null || + s.MinValue != null) return; + var detail = new QsQaItemXj02(); + detail.Pid = s.Id; + detail.Gid = xjDto.gid; + detail.Fstand = "鈭�"; + detail.FcheckResu = "1"; + detail.UpdateBy = xjDto.userNo; + detail.count = (int?)s.LevelNum; + SetQSItemDetail(detail); + }); + + return Convert.ToInt32(xj.Id); + } + + public int saveItem(XJDto xjDto) + { + var items = xjDto.items; + var userNo = xjDto.userNo; + + SqlSugarHelper.UseTransactionWithOracle(db => + { + foreach (var item in items) item.Pid = xjDto.gid; + + return db.Insertable(items).ExecuteCommand(); + }); + + xjDto.items = getJYItem(xjDto.gid, null); + + xjDto.items.ForEach(s => + { + if (s.MaxValue != null || s.StandardValue != null || + s.MinValue != null) return; + var detail = new QsQaItemXj02(); + detail.Pid = s.Id; + detail.Gid = xjDto.gid; + detail.Fstand = "鈭�"; + detail.FcheckResu = "1"; + detail.UpdateBy = xjDto.userNo; + detail.count = (int?)s.LevelNum; + SetQSItemDetail(detail); + }); + + return Convert.ToInt32(xjDto.gid); + } + + + public XJDto getXjDetail02ById(decimal? id) + { + var xjDto = new XJDto(); + + var db = SqlSugarHelper.GetInstance(); + var qsQaItemXj01 = + db.Queryable<QsQaItemXj01>().Single(s => s.Id == id); + + if (qsQaItemXj01.IsPass == 0) + qsQaItemXj01.result = "涓嶅悎鏍�"; + else if (qsQaItemXj01.IsPass == 1) + qsQaItemXj01.result = "鍚堟牸"; + else + qsQaItemXj01.result = "鏈畬鎴�"; + + if (qsQaItemXj01.Picture is { Length: > 0 }) + qsQaItemXj01.imageData = + Convert.ToBase64String(qsQaItemXj01.Picture); + + xjDto.ItemXj01 = qsQaItemXj01; + + + xjDto.ItemXj02s = db.Queryable<QsQaItemXj02>().Where(s => s.Pid == id) + .ToList(); + + return xjDto; + } + + public int SetQSItemDetail(QsQaItemXj02 detail) + { + var oracle = SqlSugarHelper.UseTransactionWithOracle(db => + { + List<QsQaItemXj02> result = new(); + for (var i = 0; i < detail.count; i++) + { + var item = new QsQaItemXj02(); + 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; + } + + private int autoResult(QsQaItemXj02 detail) + { + var db = SqlSugarHelper.GetInstance(); + + // Single 娌℃湁鏌ヨ鍒扮粨鏋滄椂杩斿洖Null锛屽鏋滅粨鏋滃ぇ浜�1鏉′細鎶涘嚭閿欒 + var QsQaItemXj01 = db.Queryable<QsQaItemXj01>() + .Single(s => s.Id == detail.Pid); + + if (QsQaItemXj01 == null) return 0; + + var count = db.Queryable<QsQaItemXj02>() + .Where(s => s.Pid == detail.Pid).Count(); + + + var result = 0; + + if (QsQaItemXj01.LevelNum != count) return 0; + + var passCount = db.Queryable<QsQaItemXj02>() + .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<QsQaItemXj01>() + .SetColumns(s => s.IsPass == result) + .Where(s => s.Id == detail.Pid) + .ExecuteCommand(); + + return commit; + }); + + //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩悊璁轰釜鏁� + var sum = db.Queryable<QsQaItemXj01>() + .Where(s => s.Pid == detail.Gid).Sum(it => it.LevelNum); + + if (sum == null || sum == 0) return 1; + + //鑾峰彇妫�楠屽崟涓嬬殑妫�楠岄」鐩疄闄呬釜鏁� + var icount = db.Queryable<QsQaItemXj02>() + .Where(s => s.Gid == detail.Gid).Count(); + + if (icount == 0) return 1; + + //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾 + if (sum == icount) + { + var FcheckResu = "涓嶅悎鏍�"; + + //鑾峰彇杩欎釜妫�楠屽崟涓嬬殑鎵�鏈夊悎鏍肩殑妫�楠岀粨鏋� + passCount = db.Queryable<QsQaItemXj02>() + .Where(s => s.Gid == detail.Gid && s.Fstand == "鈭�").Count(); + + //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸 + if (icount == passCount) FcheckResu = "鍚堟牸"; + + SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsQaItemXj>() + .SetColumns(s => s.FcheckResu == FcheckResu) + .SetColumns(s => s.FcheckDate == DateTime.Now) + .SetColumns(s => s.FcheckBy == detail.CreateBy) + .SetColumns(s => s.LastupdateBy == detail.CreateBy) + .SetColumns(s => s.LastupdateDate == DateTime.Now) + .Where(s => s.Id == detail.Gid) + .ExecuteCommand(); + }); + } + + return useTransactionWithOracle; + } + + public int UpdateQSItemDetail(QsQaItemXj02 detail) + { + var withOracle = SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsQaItemXj02>() + .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 removeXJ(decimal? id) + { + var withOracle = SqlSugarHelper.UseTransactionWithOracle(db => + { + var commit = 0; + commit += db.Deleteable<QsQaItemXj>().Where(s => s.Id == id) + .ExecuteCommand(); + commit += db.Deleteable<QsQaItemXj01>().Where(s => s.Pid == id) + .ExecuteCommand(); + commit += db.Deleteable<QsQaItemXj02>().Where(s => s.Gid == id) + .ExecuteCommand(); + return commit; + }); + + return withOracle; + } + + //涓昏〃淇敼澶囨敞瀛楁 + public int saveRemarksGid(XJDto dto) + { + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsQaItemXj>() + .SetColumns(it => + it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊� + .Where(it => it.Id == dto.gid) + .ExecuteCommand(); + }); + } + + //瀛愯〃淇敼澶囨敞瀛楁 + public int saveRemarksPid(XJDto dto) + { + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsQaItemXj01>() + .SetColumns(it => + it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊� + .Where(it => it.Id == dto.pid) + .ExecuteCommand(); + }); + } + + //瀛欒〃淇敼澶囨敞瀛楁 + public int saveRemarksById(XJDto dto) + { + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsQaItemXj02>() + .SetColumns(it => + it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊� + .Where(it => it.Id == dto.id) + .ExecuteCommand(); + }); + } +} \ No newline at end of file -- Gitblit v1.9.3