From 8276722de62e0be1e68adf65f150686a236268bd Mon Sep 17 00:00:00 2001 From: zjh <2207896513@qq.com> Date: 星期五, 18 七月 2025 10:08:44 +0800 Subject: [PATCH] 产测接口代码提交 --- StandardPda/MES.Service/service/QC/RKJService.cs | 852 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 852 insertions(+), 0 deletions(-) diff --git a/StandardPda/MES.Service/service/QC/RKJService.cs b/StandardPda/MES.Service/service/QC/RKJService.cs new file mode 100644 index 0000000..5cb1599 --- /dev/null +++ b/StandardPda/MES.Service/service/QC/RKJService.cs @@ -0,0 +1,852 @@ +锘縰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 RKJService +{ + private readonly BaseService _baseService = new(); + + //鎵嬪姩鎵цsql + //鐢熸垚妫�楠屽崟鍙� + public string getMaxBillNo() + { + var db = SqlSugarHelper.GetInstance(); + var date = DateTime.Now.ToString("yyyy-MM-dd"); + var sql = + "select max(RELEASE_NO) from QS_ITEM_OQC_REQ where RELEASE_NO like 'RKJN%' and to_char(CREATE_DATE,'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 "RKJN" + date.Replace("-", "") + number; + } + + //閫夋嫨浜х嚎 + public List<MesLine> getLineNo() + { + var db = SqlSugarHelper.GetInstance(); + return db.Queryable<MesLine>() + .Where(t => + t.LineStyle == "鍖呰" || + SqlFunc.ContainsArray(new[] { "V1", "V3", "V5", "V6" }, + t.LineNo)) + .OrderBy(t => t.LineNo) + .Select(t => new MesLine + { + LineNo = t.LineNo, + LineName = t.LineName + }).OrderBy("LINE_NO") + .ToList(); + } + + + //鑾峰彇宸ュ崟鍙� + public List<RkDaa002> GetDaa001s(string lineNo) + { + var db = SqlSugarHelper.GetInstance(); + return db.Queryable<RkDaa002>() + .Where(t => lineNo.Contains(t.Daa020)) + .OrderBy(t => t.BillNo, OrderByType.Desc) + .ToList(); + } + + //鏍规嵁妫�楠屾爣鍑嗘潵璁$畻妫�楠屼釜鏁� + public List<QsItemOqcItem> SetItems(string itemNo, decimal quantity) + { + var db = SqlSugarHelper.GetInstance(); + + var count = db.Queryable<MesQa>().Where(s => s.QsType == "3" + && s.ItemNo == itemNo && s.Fsubmit == 1).Count(); + + if (count <= 0) return []; + + var qsItemOqcItems = db + .Queryable<MesQualityStandard>() + .Where(b => b.QsType == "3" + && b.ItemNo == itemNo).Select(b => new QsItemOqcItem + { + 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(); + + qsItemOqcItems.ForEach(item => + { + string LEV = null; + switch (item.FcheckLevel) + { + case null: + LEV = ""; // 榛樿鍊� + break; + case { } s when s.Contains("S1"): + LEV = "B.FLEVEL_S1"; + break; + case { } s when s.Contains("S2"): + LEV = "B.FLEVEL_S2"; + break; + case { } s when s.Contains("S3"): + LEV = "B.FLEVEL_S3"; + break; + case { } s when s.Contains("S4"): + LEV = "B.FLEVEL_S4"; + break; + case { } s when s.Contains("(I)"): + LEV = "B.FLEVEL_I"; + break; + case { } s when s.Contains("(II)"): + LEV = "B.FLEVEL_II"; + break; + case { } s when s.Contains("(III)"): + LEV = "B.FLEVEL_III"; + break; + default: + LEV = ""; // 榛樿鍊� + break; + } + + if (string.IsNullOrEmpty(LEV)) + throw new Exception(item.QsCode + "涓嬬殑妫�楠屾按骞崇淮鎶ょ殑涓嶆纭�"); + + var sql = + "SELECT " + LEV + + " FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL2 B ON B.AQL1_ID=A.ID WHERE A.SAMPLE_SIZE_NO='" + + item.QsCode + "' AND B.LOT_FROM<= " + quantity + " AND " + + quantity + "<=B.LOT_TO"; + + var maxBillNo = db.Ado.SqlQuerySingle<string>(sql); + + if (string.IsNullOrEmpty(maxBillNo)) + throw new Exception( + item.QsCode + "涓嬫病鏈�" + quantity + "杩欎釜鑼冨洿鐨勬娊鏍峰熀鍑�"); + + var result = ExtractSubstring(item.FacLevel, '(', ')'); + + if (string.IsNullOrEmpty(result)) + throw new Exception(item.QsCode + + "缁存姢鐨勬帴鏀舵按骞充笉姝g‘锛屽簲璇ユ槸0.010---(AQL_0_0010)杩欐牱"); + + sql = "SELECT FSAMPLE_SIZE_WORD, " + result + + " Result FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL3 C ON C.AQL1_ID=A.ID WHERE A.SAMPLE_SIZE_NO= '" + + item.QsCode + "' AND SAMPLE_SIZE_WORD= '" + maxBillNo + "'"; + var resultClass = db.Ado.SqlQuerySingle<ResultClass>(sql); + + item.LevelNum = resultClass.FSAMPLE_SIZE_WORD; + item.FreQty = resultClass.Result; + }); + + return qsItemOqcItems; + } + + private string ExtractSubstring(string input, char startChar, char endChar) + { + var startIndex = input.IndexOf(startChar); + var endIndex = input.IndexOf(endChar, startIndex); + + if (startIndex == -1 || endIndex == -1) + // 濡傛灉鏈壘鍒拌捣濮嬪瓧绗︽垨缁撴潫瀛楃锛屽垯杩斿洖绌哄瓧绗︿覆鎴栬�呮姏鍑哄紓甯革紝鏍规嵁瀹為檯鎯呭喌閫夋嫨 + return string.Empty; + // 鎴栬�呮姏鍑哄紓甯� + // throw new ArgumentException("Start or end character not found"); + // 鎻愬彇瀛愬瓧绗︿覆 + var length = endIndex - startIndex - 1; + return input.Substring(startIndex + 1, length); + } + + public List<QsItemOqcItem> GetItems(decimal? pid, decimal? id) + { + var db = SqlSugarHelper.GetInstance(); + return db.Queryable<QsItemOqcItem, QsItemOqcItemDetail>((a, b) => + new JoinQueryInfos(JoinType.Left, a.Id == b.Pid)) + .WhereIF(pid > 0, (a, b) => a.Pid == pid) + .WhereIF(id > 0, (a, b) => a.Id == id) + .GroupBy((a, b) => new + { + a.Id, + a.ProjName, + a.ItemMod, + a.InspectionMethod, + a.UsingInstruments, + a.LevelNum, + a.MaxValue, + a.StandardValue, + a.MinValue, + a.Notes, + a.IsPass, + a.FcheckLevel, + a.FacLevel, + a.QsCode, + a.QsName + }).Select((a, b) => new QsItemOqcItem + { + ProjName = a.ProjName, + Id = a.Id, + 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, + isCheck = SqlFunc.AggregateCount(b.Id), + Result = a.IsPass == 1 && + a.LevelNum == SqlFunc.AggregateCount(b.Id) ? "鍚堟牸" + : a.IsPass == 0 && + a.LevelNum == SqlFunc.AggregateCount(b.Id) ? "涓嶅悎鏍�" + : "鏈畬鎴�" + }).OrderBy("result desc").ToList(); + } + + public dynamic save(RKJDto rkjDto) + { + var xj = rkjDto.from; + var items = rkjDto.items; + var userNo = rkjDto.userNo; + + SqlSugarHelper.UseTransactionWithOracle(db => + { + var commit = 0; + + xj.CreateBy = userNo; + xj.CreateDate = DateTime.Now; + + var pid = db.Insertable(xj).ExecuteReturnIdentity(); + + xj.Id = pid; + + rkjDto.gid = pid; + + foreach (var item in items) item.Pid = pid; + + commit += db.Insertable(items).ExecuteCommand(); + + return commit; + }); + + + // using (var connection = + // new OracleConnection(OracleSQLHelper.ConnectionString)) // connection.Open(); + // + // var transaction = connection.BeginTransaction(); + // + // try + // { + // using (var command = new OracleCommand()) + // { + // command.Connection = connection; + // command.Transaction = transaction; + // command.CommandText = "insert_and_update_picture_RKJ"; + // command.CommandType = CommandType.StoredProcedure; + // + // // Add parameters + // command.Parameters.Add("p_QS_TYPE", OracleDbType.Varchar2) + // .Value = "3"; + // command.Parameters.Add("p_MOID_NUM", OracleDbType.Varchar2) + // .Value = rkjDto.moidNum; + // command.Parameters.Add("p_pid", OracleDbType.Int32).Value = + // xj.Id; + // + // command.ExecuteNonQuery(); + // } + // + // transaction.Commit(); + // } + // catch (Exception) + // { + // transaction.Rollback(); + // throw; + // } + // } + + rkjDto.items = GetItems(xj.Id, null); + + rkjDto.items.ForEach(s => + { + if (s.MaxValue != null || s.StandardValue != null || + s.MinValue != null) return; + var detail = new QsItemOqcItemDetail(); + detail.Pid = s.Id; + detail.Gid = rkjDto.gid; + detail.Fstand = "鈭�"; + detail.FcheckResu = "1"; + detail.UpdateBy = rkjDto.userNo; + detail.count = (int?)s.LevelNum; + SetQSItemDetail(detail); + }); + + return Convert.ToInt32(xj.Id); + } + + public int SetQSItemDetail(QsItemOqcItemDetail detail) + { + var db = SqlSugarHelper.GetInstance(); + + var qsItemOqcReq = db.Queryable<QsItemOqcReq>() + .Where(o => o.Id == detail.Gid) + .First(); + + if (qsItemOqcReq == null) throw new Exception("璇ユ楠屽崟涓嶅瓨鍦紝璇峰洖鍒板叆搴撴鍒楄〃閲嶆柊鏌ョ湅"); + + if (!string.IsNullOrEmpty(qsItemOqcReq.FcheckResu)) + throw new Exception("璇ユ楠屽崟宸�" + qsItemOqcReq.FcheckResu + "锛屼笉杩愯淇敼缁撴灉"); + + var oracle = SqlSugarHelper.UseTransactionWithOracle(db => + { + List<QsItemOqcItemDetail> result = new(); + for (var i = 0; i < detail.count; i++) + { + var item = new QsItemOqcItemDetail(); + 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(QsItemOqcItemDetail detail) + { + var db = SqlSugarHelper.GetInstance(); + + // Single 娌℃湁鏌ヨ鍒扮粨鏋滄椂杩斿洖Null锛屽鏋滅粨鏋滃ぇ浜�1鏉′細鎶涘嚭閿欒 + var QsItemOqcItem = db.Queryable<QsItemOqcItem>() + .Single(s => s.Id == detail.Pid); + + if (QsItemOqcItem == null) return 0; + + //鏌ヨ杩欎釜妫�楠岄」鐩笅鐨勬楠岀粨鏋� + var count = db.Queryable<QsItemOqcItemDetail>() + .Where(s => s.Pid == detail.Pid).Count(); + + + var result = 0; + + //妫�楠屽疄闄呯粨鏋滀笉绛変簬搴旇妫�楠岀殑涓暟鏃剁洿鎺ユ帹鍑� + if (QsItemOqcItem.LevelNum != count) return 0; + + //鍚堟牸鐨勬湁澶氬皯涓� + var passCount = db.Queryable<QsItemOqcItemDetail>() + .Where(s => s.Pid == detail.Pid && s.Fstand == "鈭�").Count(); + + if (count == passCount) + result = 1; + else if (count - passCount < QsItemOqcItem.FreQty) result = 1; + + var useTransactionWithOracle = + SqlSugarHelper.UseTransactionWithOracle(db => + { + var commit = 0; + commit += db.Updateable<QsItemOqcItem>() + .SetColumns(s => s.IsPass == result) + .Where(s => s.Id == detail.Pid) + .ExecuteCommand(); + + return commit; + }); + + var isNull = db.Queryable<QsItemOqcItem>() + .Where(s => s.Pid == detail.Gid && s.IsPass == null).Count(); + + if (isNull > 0) return 1; + + + //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩殑涓暟 + var sum = db.Queryable<QsItemOqcItem>() + .Where(s => s.Pid == detail.Gid).Count(); + + if (sum == 0) return 1; + + //鑾峰彇妫�楠屽崟涓嬬殑鍚堟牸鐨勬楠岄」鐩釜鏁� + var icount = db.Queryable<QsItemOqcItem>() + .Where(s => s.Pid == detail.Gid && s.IsPass == 1).Count(); + + var FcheckResu = "涓嶅悎鏍�"; + + //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾 + if (sum == icount) + //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸 + FcheckResu = "鍚堟牸"; + + SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsItemOqcReq>() + .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(); + }); + + // if (FcheckResu.Equals("涓嶅悎鏍�")) + // //鑷姩鐢熸垚鍏ュ簱妫�寮傚父瀵圭瓥 + // saveDetect02(detail.Gid, detail.CreateBy); + + setBarCodes(FcheckResu, detail, db); + + return useTransactionWithOracle; + } + + /// <summary> + /// 褰撴楠屽崟涓嶅悎鏍兼椂锛� + /// 鍙栨秷mes_inv_item_barcodes 鐨勬姤宸ユ爣璇� WORK_FLG + /// womdaa 宸茬敓浜ч噺 DAA011鍔犲洖鏉$爜鎶ュ伐鏁伴噺 + /// MES_SCGD_GX 妫�楠屾爣璇� CHECK_FLAG锛�('鈭�','脳') + /// 閫氳繃mes_inv_item_in_c_details2鐨凪ES_SCGD_GX_ID杩炴帴 + /// </summary> + private void setBarCodes(string? FcheckResu, QsItemOqcItemDetail detail, + SqlSugarClient db) + { + var oqcReqList = db + .Queryable<QsItemOqcReq, MesInvItemIns, Womdaa>((a, b, c) => + new JoinQueryInfos( + JoinType.Left, a.BillNo == b.BillNo, + JoinType.Left, c.Daa001 == b.RbillNo + )) + .Where(a => a.Id == detail.Gid) + .Select((a, b, c) => + new + { + a.Id, + a.BillNo, + c.Daa001 + }) + .ToList(); + + if (oqcReqList.Count <= 0) return; + + var qsItemOqcReq = oqcReqList.First(); // 鑾峰彇绗竴涓厓绱� + + if (qsItemOqcReq.Id is null or 0) return; + + var mesInvItemInsList = db + .Queryable<MesInvItemIns, MesInvItemInCDetails2>((a, b) => + new JoinQueryInfos( + JoinType.Left, a.Id == b.ItemInId)) + .Where((a, b) => a.BillNo == qsItemOqcReq.BillNo) + .Select((a, b) => new + { b.ItemBarcode, b.Quantity, b.MesScgdGxId }) + .ToList(); + + var barCodes = mesInvItemInsList.Select(s => s.ItemBarcode).ToList(); + + var count = db.Queryable<MesInvItemBarcodes>() + .Where(s => barCodes.Contains(s.ItemBarcode) && s.WorkFlg == 0) + .Count(); + + var gxId = mesInvItemInsList.Select(s => s.MesScgdGxId).ToList(); + + var sumQty = mesInvItemInsList.Sum(s => s.Quantity); + + if ("鍚堟牸".Equals(FcheckResu)) + { + //鏍规嵁宸ュ簭id鏇存柊宸ュ簭琛ㄧ殑妫�楠岀粨鏋� + db.Updateable<MesScgdGx>() + .SetColumns(s => s.CheckFlag == "鈭�") + .Where(s => gxId.Contains(s.Id)) + .ExecuteCommand(); + + if (count <= 0) return; + + //鍙栨秷mes_inv_item_barcodes 鐨勬姤宸ユ爣璇� WORK_FLG 浣跨敤鏉$爜 + var executeCommand = db.Updateable<MesInvItemBarcodes>() + .SetColumns(a => a.WorkFlg == 1) + .Where(a => barCodes.Contains(a.ItemBarcode)) + .ExecuteCommand(); + + if (executeCommand > 0) + //womdaa 宸茬敓浜ч噺 DAA011鍔犲洖鏉$爜鎶ュ伐鏁伴噺 + db.Updateable<Womdaa>() + .SetColumns(b => b.Daa011 == b.Daa011 + sumQty) + .Where(b => b.Daa001 == qsItemOqcReq.Daa001) + .ExecuteCommand(); + } + else if ("涓嶅悎鏍�".Equals(FcheckResu)) + { + //鏍规嵁宸ュ簭id鏇存柊宸ュ簭琛ㄧ殑妫�楠岀粨鏋� + db.Updateable<MesScgdGx>() + .SetColumns(s => s.CheckFlag == "脳") + .Where(s => gxId.Contains(s.Id)) + .ExecuteCommand(); + + //鍙栨秷mes_inv_item_barcodes 鐨勬姤宸ユ爣璇� WORK_FLG 浣跨敤鏉$爜 + var executeCommand = db.Updateable<MesInvItemBarcodes>() + .SetColumns(a => a.WorkFlg == 0) + .Where(a => barCodes.Contains(a.ItemBarcode)) + .ExecuteCommand(); + + if (executeCommand > 0) + //womdaa 宸茬敓浜ч噺 DAA011鍔犲洖鏉$爜鎶ュ伐鏁伴噺 + db.Updateable<Womdaa>() + .SetColumns(b => b.Daa011 == b.Daa011 - sumQty) + .Where(b => b.Daa001 == qsItemOqcReq.Daa001) + .ExecuteCommand(); + } + } + + public int saveDetect02(decimal? gid, string? createBy) + { + var db = SqlSugarHelper.GetInstance(); + + var qsItemOqcReq = + db.Queryable<QsItemOqcReq>().Single(s => s.Id == gid); + + var mesInvItemIns = db.Queryable<MesInvItemIns>() + .Single(s => s.BillNo == qsItemOqcReq.BillNo); + + var mesSchemeResult = db.Queryable<Womdaa>() + .Single(s => s.Daa001 == mesInvItemIns.CbillNo); + + var entity = new MesQaItemsDetect02(); + // entity.ItemNo = mesSchemeResult.BoardItem; + // entity.BoardItem = mesSchemeResult.BoardItem; + entity.LineNo = mesSchemeResult.Daa015; + // entity.Aufnr = mesSchemeResult.TaskNo; + entity.ReleaseNo = qsItemOqcReq.ReleaseNo; + entity.LotNo = qsItemOqcReq.BillNo; + entity.FcheckDate = qsItemOqcReq.FcheckDate; + entity.FcheckMemo = qsItemOqcReq.Remarks; + entity.Gid = qsItemOqcReq.Id; + // entity.PlanQty = qsItemOqcReq.FcheckDate; + + + entity.FcheckResu = "涓嶅悎鏍�"; + entity.FcheckLevel = "涓ラ噸"; + entity.CreateDate = DateTime.Now; + entity.Factory = "10000"; + entity.Company = "1000"; + entity.Ftype = "4"; + entity.Fversion = 0; + entity.Modify1Flag = 0; + entity.IpqcStatus = 0; + entity.Fsubmit = 1; + entity.CreateBy = createBy; + entity.FcheckBy = createBy; + + return SqlSugarHelper.UseTransactionWithOracle(db => db + .Insertable(entity) + .ExecuteCommand()); + } + + + public (List<QsItemOqcReq> items, int TotalCount) getPage( + XJPageResult queryObj) + { + var db = SqlSugarHelper.GetInstance(); + + var totalCount = 0; + + string[]? lineNo = null; + + if (StringUtil.IsNotNullOrEmpty(queryObj.createUser)) + lineNo = _baseService.getUserLineNo(queryObj.createUser); + + var qsItemOqcReqs = db + .Queryable<QsItemOqcReq, MesItems, MesInvItemIns, MesInvTransaction, + RKJDaa001, Womdaa, VLineUser>((a, b, c, ca, m, da, z) => + new JoinQueryInfos( + JoinType.Left, a.ItemNo == b.ItemNo, + JoinType.Left, a.BillNo == c.BillNo, + JoinType.Left, + c.TransctionNo == ca.TransactionNo.ToString() && + c.Company == ca.Company && + c.Factory == ca.Factory, + JoinType.Left, c.Id == m.ItemInId && a.ItemNo == m.ItemNo, + JoinType.Left, da.Daa001 == c.RbillNo, + JoinType.Left, da.Daa015 == z.LineNo //, + //JoinType.Left,c.Bgr == d.UserNo + )) + // .WhereIF(lineNo != null && lineNo.Length > 0, + // (a, b, c, ca, m, da) => lineNo.Contains(da.Daa015)) + .WhereIF(!"PL017".Equals(queryObj.createUser), + (a, b, c, ca, m, da, z) => lineNo.Contains(da.Daa015)) + .WhereIF(!string.IsNullOrEmpty(queryObj.id), + (a, b, c, ca, m, da, z) => a.Id.ToString() == queryObj.id) + .WhereIF( + StringUtil.IsNotNullOrEmpty(queryObj.result) && + "鏈畬鎴�".Equals(queryObj.result), + (a, b, c, ca, m, da, z) => a.FcheckResu == null) + .WhereIF( + StringUtil.IsNotNullOrEmpty(queryObj.result) && + !"鏈畬鎴�".Equals(queryObj.result), + (a, b, c, ca, m, da, z) => a.FcheckResu != null) + //鍔犵瓫閫夋潯浠�,鏍规嵁渚涘簲鍟嗭紝鐗╂枡缂栫爜锛岀墿鏂欏悕绉版悳绱� + //.WhereIF(queryObj.SearchValue!=null && queryObj.SearchValue!="", (a) => a.SuppName == queryObj.SearchValue|| a.ItemName == queryObj.SearchValue || a.ItemNo == queryObj.SearchValue ) + .WhereIF(queryObj.SearchValue != null && queryObj.SearchValue != "", + (a, b, c, ca, m, da, z) => + b.ItemName.ToLower() + .Contains(queryObj.SearchValue.ToLower()) + || a.ItemNo.ToLower() + .Contains(queryObj.SearchValue.ToLower())) + .Select((a, b, c, ca, m, da, z) => new QsItemOqcReq + { + BillNo = a.BillNo, + Fsubmit = a.Fsubmit, + Remarks = a.Remarks, + Id = a.Id, + CreateDate = a.CreateDate, + CreateBy = a.CreateBy, + FcheckResu = a.FcheckResu, + ItemNo = a.ItemNo, + FcheckBy = a.FcheckBy, + FcheckDate = a.FcheckDate, + ReleaseNo = a.ReleaseNo, + ItemName = b.ItemName, + ItemModel = b.ItemModel, + //Dab001 = m.LotNo, + ItemInId = m.ItemInId, + Daa015 = da.Daa015, + LineNo = c.LineNo, + Quantity = m.Quantity + //Bgr = d.UserName + }) + .OrderBy(a => a.CreateDate, OrderByType.Desc) + .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount); + + return (qsItemOqcReqs, totalCount); + } + + //鍒犻櫎涓昏〃骞朵笖杩炵骇鍒犻櫎瀛愯〃鍜屽瓩琛� + public int removeXJ(decimal? id) + { + var withOracle = SqlSugarHelper.UseTransactionWithOracle(db => + { + var commit = 0; + //鍒犻櫎涓昏〃 + commit += db.Deleteable<QsItemOqcReq>().Where(s => s.Id == id) + .ExecuteCommand(); + //鍒犻櫎瀛愯〃 + commit += db.Deleteable<QsItemOqcItem>().Where(s => s.Pid == id) + .ExecuteCommand(); + //鍒犻櫎瀛欒〃 + commit += db.Deleteable<QsItemOqcItemDetail>() + .Where(s => s.Gid == id) + .ExecuteCommand(); + return commit; + }); + + return withOracle; + } + + + public RKJDto getXjDetail02ById(decimal? id) + { + var rkjDto = new RKJDto(); + + var db = SqlSugarHelper.GetInstance(); + var qsItemOqcItem = + db.Queryable<QsItemOqcItem>().Single(s => s.Id == id); + + if (qsItemOqcItem.IsPass == 0) + qsItemOqcItem.Result = "涓嶅悎鏍�"; + else if (qsItemOqcItem.IsPass == 1) + qsItemOqcItem.Result = "鍚堟牸"; + else + qsItemOqcItem.Result = "鏈畬鎴�"; + + if (qsItemOqcItem.Picture is { Length: > 0 }) + qsItemOqcItem.imageData = + Convert.ToBase64String(qsItemOqcItem.Picture); + + //鑾峰彇涓嶅悎鏍兼暟 + var count = db.Queryable<QsItemOqcItemDetail>() + .Where(s => s.Fstand == "脳" && s.Pid == id).Count(); + + qsItemOqcItem.Unqualified = count; + + rkjDto.ItemXj01 = qsItemOqcItem; + + + rkjDto.ItemXj02s = db.Queryable<QsItemOqcItemDetail>() + .Where(s => s.Pid == id) + .ToList(); + + return rkjDto; + } + + public int UpdateQSItemDetail(QsItemOqcItemDetail detail) + { + if (isRk(detail.ItemInId)) throw new Exception("宸叉湁鏉$爜鍏ュ簱锛屼笉鍏佽淇敼妫�楠岀粨鏋�"); + + var db = SqlSugarHelper.GetInstance(); + + var qsItemOqcReq = db.Queryable<QsItemOqcReq>() + .Where(o => o.Id == detail.Gid) + .First(); + + if (qsItemOqcReq == null) throw new Exception("璇ユ楠屽崟涓嶅瓨鍦紝璇峰洖鍒板叆搴撴鍒楄〃閲嶆柊鏌ョ湅"); + + if (!string.IsNullOrEmpty(qsItemOqcReq.FcheckResu)) + throw new Exception("璇ユ楠屽崟宸�" + qsItemOqcReq.FcheckResu + "锛屼笉杩愯淇敼缁撴灉"); + + var withOracle = SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsItemOqcItemDetail>() + .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; + } + + //淇敼缁撴灉鍓嶉獙璇佹槸鍚﹀叆搴� + private bool isRk(decimal? ItemInId) + { + var db = SqlSugarHelper.GetInstance(); + return db.Queryable<MesInvItemInCDetails>() + .Where(s => s.ItemInId == ItemInId).Count() > 0; + } + + + //涓昏〃淇敼澶囨敞瀛楁 + public int saveRemarksGid(RKJDto dto) + { + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsItemOqcReq>() + .SetColumns(it => + it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊� + .Where(it => it.Id == dto.gid) + .ExecuteCommand(); + }); + } + + //瀛愯〃淇敼澶囨敞瀛楁 + public int saveRemarksPid(RKJDto dto) + { + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsItemOqcItem>() + .SetColumns(it => + it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊� + .Where(it => it.Id == dto.pid) + .ExecuteCommand(); + }); + } + + //瀛欒〃淇敼澶囨敞瀛楁 + public int saveRemarksById(RKJDto dto) + { + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsItemOqcItemDetail>() + .SetColumns(it => + it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊� + .Where(it => it.Id == dto.id) + .ExecuteCommand(); + }); + } + + public int saveItem(RKJDto rkjDto) + { + var items = rkjDto.items; + var userNo = rkjDto.userNo; + + SqlSugarHelper.UseTransactionWithOracle(db => + { + foreach (var item in items) item.Pid = rkjDto.gid; + + return db.Insertable(items).ExecuteCommand(); + }); + + rkjDto.items = GetItems(rkjDto.gid, null); + + rkjDto.items.ForEach(s => + { + if (s.MaxValue != null || s.StandardValue != null || + s.MinValue != null) return; + var detail = new QsItemOqcItemDetail(); + detail.Pid = s.Id; + detail.Gid = rkjDto.gid; + detail.Fstand = "鈭�"; + detail.FcheckResu = "1"; + detail.UpdateBy = rkjDto.userNo; + detail.count = (int?)s.LevelNum; + SetQSItemDetail(detail); + }); + + return Convert.ToInt32(rkjDto.gid); + } + + public int cleanReqResult(RKJDto dto) + { + if (isRk(dto.gid)) throw new Exception("宸叉湁鏉$爜鍏ュ簱锛屼笉鍏佽娓呴櫎妫�楠岀粨鏋�"); + + + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsItemOqcReq>() + .SetColumns(s => s.FcheckResu == null) + .Where(s => s.Id == dto.gid).ExecuteCommand(); + }); + } + + private bool isRk(int? gid) + { + var db = SqlSugarHelper.GetInstance(); + return db + .Queryable<QsItemOqcReq, MesInvItemIns, MesInvItemInCDetails2, + MesInvItemStocks>((a, b, c, d) => new JoinQueryInfos( + JoinType.Inner, a.BillNo == b.BillNo, + JoinType.Inner, b.Id == c.ItemInId, + JoinType.Inner, c.ItemBarcode == d.ItemBarcode + )) + .Where((a, b, c, d) => a.Id == gid) + .Count() > 0; + } +} \ No newline at end of file -- Gitblit v1.9.3