From 82dac540156cb29e58c86f7d7d840e3c7e548c15 Mon Sep 17 00:00:00 2001 From: xwt <2740516069@qq.com> Date: 星期四, 14 八月 2025 19:55:41 +0800 Subject: [PATCH] 来料检,入库检,首检巡检。 --- StandardInterface/MES.Service/service/QC/RKJService.cs | 341 +++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 274 insertions(+), 67 deletions(-) diff --git a/StandardInterface/MES.Service/service/QC/RKJService.cs b/StandardInterface/MES.Service/service/QC/RKJService.cs index d7a9df3..06e7a22 100644 --- a/StandardInterface/MES.Service/service/QC/RKJService.cs +++ b/StandardInterface/MES.Service/service/QC/RKJService.cs @@ -3,6 +3,8 @@ using MES.Service.Modes; using MES.Service.util; using SqlSugar; +using System.Linq; +using System.Data; namespace MES.Service.service.QC; @@ -16,22 +18,49 @@ { 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) + + try { - maxBillNo = maxBillNo.Substring(12); - var no = Convert.ToInt32(maxBillNo); - no++; - number = no.ToString().PadLeft(4, '0'); - } + // 鏌ヨ褰撳ぉ鎵�鏈変互RKJY寮�澶寸殑妫�楠屽崟鍙� + var sql = @" + SELECT RELEASE_NO + FROM QS_ITEM_OQC_REQ + WHERE RELEASE_NO LIKE 'RKJY%' + AND TO_CHAR(CREATE_DATE,'yyyy-mm-dd') = @date + ORDER BY RELEASE_NO DESC"; - return "RKJN" + date.Replace("-", "") + number; + var existingNumbers = db.Ado.SqlQuery<string>(sql, new { date }); + + var number = "0001"; + if (existingNumbers != null && existingNumbers.Count > 0) + { + // 鎵惧埌鏈�澶х殑缂栧彿 + var maxNumber = existingNumbers + .Where(x => x != null && x.Length >= 16) // 纭繚闀垮害瓒冲 + .Select(x => x.Substring(12, 4)) + .Where(x => int.TryParse(x, out _)) + .Select(x => int.Parse(x)) + .DefaultIfEmpty(0) + .Max(); + + number = (maxNumber + 1).ToString().PadLeft(4, '0'); + } + + var result = "RKJY" + date.Replace("-", "") + number; + + // 娣诲姞鏃ュ織璁板綍锛堝彲閫夛級 + Console.WriteLine($"Generated RKJ number: {result}, Date: {date}, Existing count: {existingNumbers?.Count ?? 0}"); + + return result; + } + catch (Exception ex) + { + // 濡傛灉鍑虹幇寮傚父锛屼娇鐢ㄦ椂闂存埑浣滀负澶囬�夋柟妗� + var timestamp = DateTime.Now.ToString("yyyyMMddHHmmss"); + var fallbackNumber = "RKJY" + date.Replace("-", "") + timestamp.Substring(8, 4); + Console.WriteLine($"Error generating RKJ number, using fallback: {fallbackNumber}, Error: {ex.Message}"); + return fallbackNumber; + } } //閫夋嫨浜х嚎 @@ -48,16 +77,84 @@ .ToList(); } - - //鑾峰彇宸ュ崟鍙� - public List<RKJDaa001> GetDaa001s(string lineNo) + /// <summary> + /// 鑾峰彇鏈夌嚎浣撶殑閮ㄩ棬鍒楄〃锛堢敓浜ц溅闂达級 + /// </summary> + /// <returns>閮ㄩ棬鍒楄〃</returns> + public List<dynamic> GetDepartmentsWithLines() { var db = SqlSugarHelper.GetInstance(); - return db.Queryable<RKJDaa001>() - .Where(t => t.Daa020 == lineNo) - .OrderBy(t => t.ItemInId, OrderByType.Desc) + var sql = @" + SELECT DISTINCT + d.DEPARTMENTID as departmentid, + d.DEPARTMENTNAME as departmentname + FROM SYS_DEPARTMENT d + INNER JOIN MES_LINE l ON d.DEPARTMENTID = l.DEPOT_ID + WHERE L.LINE_NO IS NOT NULL + ORDER BY d.DEPARTMENTNAME"; + + return db.Ado.SqlQuery<dynamic>(sql); + } + + /// <summary> + /// 鏍规嵁閮ㄩ棬ID鑾峰彇璇ラ儴闂ㄤ笅鐨勭嚎浣撳垪琛� + /// </summary> + /// <param name="departmentId">閮ㄩ棬ID</param> + /// <returns>绾夸綋鍒楄〃</returns> + public List<dynamic> GetLinesByDepartment(string departmentId) + { + var db = SqlSugarHelper.GetInstance(); + var sql = @" + SELECT + l.LINE_NO as lineNo, + l.LINE_NAME as lineName + FROM MES_LINE l + WHERE l.DEPOT_ID = @departmentId + ORDER BY l.LINE_NAME"; + + return db.Ado.SqlQuery<dynamic>(sql, new { departmentId }); + } + + /// <summary> + /// 淇濆瓨閮ㄩ棬閫夋嫨 + /// </summary> + /// <param name="id">妫�楠屽崟ID</param> + /// <param name="departmentId">閮ㄩ棬ID</param> + /// <param name="departmentName">閮ㄩ棬鍚嶇О</param> + /// <returns>鎿嶄綔缁撴灉</returns> + public bool SaveDepartmentSelection(decimal id, string departmentId, string departmentName) + { + var db = SqlSugarHelper.GetInstance(); + var sql = @" + UPDATE QS_ITEM_OQC_REQ + SET WORK_SHOP = @departmentName, DEPARTMENT_ID = @departmentId + WHERE ID = @id"; + + return db.Ado.ExecuteCommand(sql, new { id, departmentId, departmentName }) > 0; + } + + + //鑾峰彇宸ュ崟鍙� + public List<Womdaa> GetDaa001s(string lineNo) + { + var db = SqlSugarHelper.GetInstance(); + return db.Queryable<Womdaa, MesItems>((w, m) => new JoinQueryInfos( + JoinType.Left, w.Daa002 == m.Id.ToString())) + .Where((w, m) => w.Daa015 == lineNo) + .OrderBy((w, m) => w.Daa001, OrderByType.Desc) + .Select((w, m) => new Womdaa + { + Id = w.Id, + Daa001 = w.Daa001, // 宸ュ崟鍙� + Daa002 = m.ItemNo, // 浜у搧缂栫爜锛堜粠MesItems琛ㄨ幏鍙栵級 + Daa003 = w.Daa003, // 浜у搧鍚嶇О + Daa004 = w.Daa004, // 浜у搧瑙勬牸 + Daa008 = w.Daa008, // 宸ュ崟鏁伴噺 + Daa015 = w.Daa015, // 鐢熶骇绾垮埆 + // 娣诲姞鐗╂枡ID瀛楁 + ItemId = m.Id // 鐗╂枡ID + }) .ToList(); - //return null; } //鏍规嵁妫�楠屾爣鍑嗘潵璁$畻妫�楠屼釜鏁� @@ -228,6 +325,55 @@ xj.CreateBy = userNo; xj.CreateDate = DateTime.Now; + + // 纭繚妫�楠屽崟鍙疯姝g‘璁剧疆 + if (string.IsNullOrEmpty(xj.ReleaseNo)) + { + xj.ReleaseNo = getMaxBillNo(); + } + + // 纭繚鐢熶骇绾跨紪鍙疯姝g‘璁剧疆 + if (string.IsNullOrEmpty(xj.LineNo) && !string.IsNullOrEmpty(xj.Daa015)) + { + xj.LineNo = xj.Daa015; + } + + // 纭繚宸ュ崟鍙疯姝g‘璁剧疆 + if (string.IsNullOrEmpty(xj.BillNo) && !string.IsNullOrEmpty(xj.RbillNo)) + { + xj.BillNo = xj.RbillNo; + } + + // 纭繚鐗╂枡ID琚纭缃紙濡傛灉涓虹┖锛屽皾璇曚粠鐗╂枡缂栫爜鑾峰彇锛� + if (xj.ItemId == null && !string.IsNullOrEmpty(xj.ItemNo)) + { + // 浠庣墿鏂欑紪鐮佽幏鍙栫墿鏂橧D + var itemId = db.Queryable<MesItems>() + .Where(m => m.ItemNo == xj.ItemNo) + .Select(m => m.Id) + .First(); + + if (itemId > 0) + { + xj.ItemId = itemId; + } + } + + // 鏂板锛氫繚瀛橀�佹鎵规 + if (!string.IsNullOrEmpty(rkjDto.RbillNo)) + xj.RbillNo = rkjDto.RbillNo; + + // 纭繚Quantity瀛楁琚纭缃� + if (xj.Quantity == null && rkjDto.quantity != null) + { + xj.Quantity = rkjDto.quantity; + } + + // 纭繚鎻愪氦鐘舵�佽姝g‘璁剧疆锛堥粯璁や负鏈彁浜わ級 + if (xj.Fsubmit == null) + { + xj.Fsubmit = 0; + } var pid = db.Insertable(xj).ExecuteReturnIdentity(); @@ -249,32 +395,32 @@ // 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; + // 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; + // // 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(); + // command.ExecuteNonQuery(); + // } + // + // transaction.Commit(); // } - // - // transaction.Commit(); - // } - // catch (Exception) - // { - // transaction.Rollback(); - // throw; - // } + // catch (Exception) + // { + // transaction.Rollback(); + // throw; + // } // } rkjDto.items = GetItems(xj.Id, null); @@ -454,42 +600,52 @@ { 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<QsItemOqcReq, Womdaa, MesItems, MesInvItemIns, Womdab, - MesInvTransaction, RKJDaa001>( - (a, da, b, c, d, ca, m) => new JoinQueryInfos( + .Queryable<QsItemOqcReq, Womdaa, MesItems>((a, da, b) => + new JoinQueryInfos( JoinType.Left, da.Daa001 == a.BillNo, - JoinType.Left, a.ItemId == b.Id, - JoinType.Left, a.BillNo == c.BillNo, - JoinType.Left, c.CbillNo == d.Dab001, - 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, a.ItemId == b.Id )) - .Select((a, da, b, c, d, ca, m) => new QsItemOqcReq + .WhereIF(lineNo != null && lineNo.Length > 0, + (a, da, b) => lineNo.Contains(da.Daa015)) + .WhereIF( + StringUtil.IsNotNullOrEmpty(queryObj.result) && + "鏈畬鎴�".Equals(queryObj.result), + (a, da, b) => a.FcheckResu == null || a.FcheckResu == "") + .WhereIF( + StringUtil.IsNotNullOrEmpty(queryObj.result) && + !"鏈畬鎴�".Equals(queryObj.result), + (a, da, b) => a.FcheckResu != null && a.FcheckResu != "") + .WhereIF(id > 0, (a, da, b) => a.Id == id) + .Select((a, da, b) => new QsItemOqcReq { - BillNo = a.BillNo, - Remarks = a.Remarks, Id = a.Id, - CreateDate = a.CreateDate, + ReleaseNo = a.ReleaseNo, CreateBy = a.CreateBy, - FcheckResu = a.FcheckResu, + CreateDate = a.CreateDate, + BillNo = a.BillNo, + RbillNo = a.RbillNo, ItemNo = a.ItemNo, + ItemId = a.ItemId, + LineNo = a.LineNo, + FcheckResu = a.FcheckResu, FcheckBy = a.FcheckBy, FcheckDate = a.FcheckDate, - ReleaseNo = a.ReleaseNo, - // 娣诲姞鍏朵粬瀛楁 - // 濡傛灉鍦� QsItemOqcReq 涓畾涔変簡棰濆瀛楁锛屽垯闇�瑕佸皢瀹冧滑璧嬪�� - // 渚嬪: + Remarks = a.Remarks, + WorkShop = a.WorkShop, + DepartmentId = a.DepartmentId, + // 浠庡叧鑱旇〃鑾峰彇鐨勫瓧娈� ItemName = b.ItemName, ItemModel = b.ItemModel, - TaskNo = c.TaskNo, - CbillNo = c.CbillNo, - Dab001 = d.Dab001, Daa015 = da.Daa015, - LineNo = c.LineNo, - Quantity = m.Quantity + Quantity = a.Quantity }).OrderBy(a => a.CreateDate, OrderByType.Desc) .ToPageList(queryObj.PageIndex, queryObj.Limit); } @@ -644,4 +800,55 @@ return Convert.ToInt32(rkjDto.gid); } + + /// <summary> + /// 鎻愪氦妫�楠屽崟 + /// </summary> + /// <param name="id">妫�楠屽崟ID</param> + /// <param name="userNo">鎻愪氦鐢ㄦ埛</param> + /// <returns>鏇存柊缁撴灉</returns> + public int SubmitInspection(decimal id, string userNo) + { + return SqlSugarHelper.UseTransactionWithOracle(db => + { + return db.Updateable<QsItemOqcReq>() + .SetColumns(it => it.Fsubmit == 1) // 璁剧疆鎻愪氦鐘舵�佷负1锛堝凡鎻愪氦锛� + .SetColumns(it => it.FcheckBy == userNo) // 璁剧疆妫�楠屼汉 + .SetColumns(it => it.FcheckDate == DateTime.Now) // 璁剧疆妫�楠屾椂闂� + .Where(it => it.Id == id) + .ExecuteCommand(); + }); + } + + /// <summary> + /// 鍒锋柊妫�楠岄」鐩� - 璋冪敤瀛樺偍杩囩▼ + /// </summary> + /// <param name="id">妫�楠屽崟ID</param> + /// <param name="no">妫�楠屽崟鍙�</param> + /// <param name="user">鐢ㄦ埛</param> + /// <returns>鍒锋柊缁撴灉</returns> + public (int result, string message) GenUpdate(decimal? id, string? no, string? user) + { + var outputResult = new SugarParameter("PO_RESULT", null, System.Data.DbType.Int32, ParameterDirection.Output, 4000); + var outputMessage = new SugarParameter("PO_TEXT", null, System.Data.DbType.String, ParameterDirection.Output, 4000); + + var parameters = new List<SugarParameter> + { + new("P_ID", id, System.Data.DbType.Decimal, ParameterDirection.Input), + new("P_NO", no, System.Data.DbType.String, ParameterDirection.Input), + new("P_USER", user, System.Data.DbType.String, ParameterDirection.Input), + outputResult, + outputMessage + }; + + var db = SqlSugarHelper.GetInstance(); + db.Ado.ExecuteCommand( + "BEGIN PRC_GEN_UPDATE3(:P_ID, :P_NO, :P_USER, :PO_RESULT, :PO_TEXT); END;", + parameters.ToArray()); + + int result = outputResult.Value == null ? -1 : Convert.ToInt32(outputResult.Value); + string message = outputMessage.Value?.ToString() ?? ""; + + return (result, message); + } } \ No newline at end of file -- Gitblit v1.9.3