From 8a20e14ad405620bbbb8e857959941692bdc17a8 Mon Sep 17 00:00:00 2001 From: 南骏 池 <chiffly@163.com> Date: 星期二, 20 五月 2025 13:27:41 +0800 Subject: [PATCH] 1.OA->MES接口开发 2.MES->OA字段优化 --- Dto/service/OaToMesQuery.cs | 48 ++++++++++++ Controllers/QC/OaToMesController.cs | 15 ++- service/QC/OaApi.cs | 2 service/Warehouse/MesOaToMesManager.cs | 150 +++++++++++++++++++++++++++++++++++++ 4 files changed, 209 insertions(+), 6 deletions(-) diff --git a/Controllers/QC/OaToMesController.cs b/Controllers/QC/OaToMesController.cs index 741152d..a0418e0 100644 --- a/Controllers/QC/OaToMesController.cs +++ b/Controllers/QC/OaToMesController.cs @@ -3,6 +3,7 @@ using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; using NewPdaSqlServer.service.QC; +using NewPdaSqlServer.service.Warehouse; using NewPdaSqlServer.util; using Newtonsoft.Json.Linq; @@ -12,18 +13,19 @@ [ApiController] public class OaToMesController : ControllerBase { - OaApiService m = new OaApiService(); + MesOaToMesManager m = new MesOaToMesManager(); [HttpPost("ApproveIqcEx")] - public ResponseResult ApproveIqc(dynamic queryObj) + public ResponseResult ApproveIqcEx(OaToMesQuery queryObj) { try { + string rtnMsg = m.ApproveIqcEx(queryObj); return new ResponseResult { status = 0, - message = "寮傚父澶勭疆鍗曞鎵规帴鍙e紑鍙戜腑", - data = "" + message = rtnMsg, + data = null }; } catch (Exception ex) @@ -34,14 +36,15 @@ [HttpPost("RetrunIqcEx")] - public ResponseResult APVMes_QC_Exceptional(dynamic queryObj) + public ResponseResult RetrunIqcEx(OaToMesRQuery queryObj) { try { + string rtnMsg = m.RetrunIqcEx(queryObj); return new ResponseResult { status = 0, - message = "寮傚父澶勭疆鍗曢��鍥炴帴鍙e紑鍙戜腑", + message = rtnMsg, data = "" }; } diff --git a/Dto/service/OaToMesQuery.cs b/Dto/service/OaToMesQuery.cs new file mode 100644 index 0000000..b64bf05 --- /dev/null +++ b/Dto/service/OaToMesQuery.cs @@ -0,0 +1,48 @@ +锘縰sing System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace NewPdaSqlServer.Dto.service +{ + public class OaToMesQuery + { + [Required(ErrorMessage = "寮傚父鍗曞彿涓嶈兘涓虹┖")] + [StringLength(100, ErrorMessage = "寮傚父鍗曞彿闀垮害涓嶈兘瓒呰繃100涓瓧绗�")] + public string iqcExNo { get; set; } + + [Required(ErrorMessage = "妫�楠屾暟鎹笉鑳戒负绌�")] + [MinLength(1, ErrorMessage = "鑷冲皯闇�瑕�1鏉℃楠屾暟鎹�")] + public List<IQCDataItem> dataJson { get; set; } + + public string requestId { get; set; } + } + + public class IQCDataItem + { + [Required(ErrorMessage = "妫�楠屽崟鍙蜂笉鑳戒负绌�")] + [StringLength(100, ErrorMessage = "妫�楠屽崟鍙烽暱搴︿笉鑳借秴杩�100涓瓧绗�")] + public string jyd { get; set; } + + [Required(ErrorMessage = "閫夊埆绫诲埆涓嶈兘涓虹┖")] + [StringLength(100, ErrorMessage = "閫夊埆绫诲埆闀垮害涓嶈兘瓒呰繃100涓瓧绗�")] + public string xblb { get; set; } + + [Required(ErrorMessage = "澶勭悊鎰忚涓嶈兘涓虹┖")] + // [RegularExpression("閫�鏂欒ˉ鏂檤鐗归噰", ErrorMessage = "澶勭悊鎰忚鍙兘鏄�'閫�鏂欒ˉ鏂�'鎴�'鐗归噰'")] + public string clyj { get; set; } + + [Required(ErrorMessage = "鎺ユ敹鏁伴噺涓嶈兘涓虹┖")] + [Range(0, int.MaxValue, ErrorMessage = "鎺ユ敹鏁伴噺蹇呴』澶т簬绛変簬0")] + public int jssl { get; set; } // 淇敼涓烘暟鍊肩被鍨� + } + + + public class OaToMesRQuery + { + [Required(ErrorMessage = "寮傚父鍗曞彿涓嶈兘涓虹┖")] + [StringLength(100, ErrorMessage = "寮傚父鍗曞彿闀垮害涓嶈兘瓒呰繃100涓瓧绗�")] + public string iqcExNo { get; set; } + + public string requestId { get; set; } + + } +} diff --git a/service/QC/OaApi.cs b/service/QC/OaApi.cs index b185592..8430e3b 100644 --- a/service/QC/OaApi.cs +++ b/service/QC/OaApi.cs @@ -187,6 +187,7 @@ // 浣跨敤鍙傛暟鍖栨煡璇㈤槻姝QL娉ㄥ叆 const string mainSql = @" SELECT TOP 1 + A.fBillNo AS ycczdh, C.item_no AS wlbm, C.item_name AS jzmcwlmc, D.supp_name AS khgys, @@ -212,6 +213,7 @@ // 瀛楁鏄犲皠閰嶇疆锛堝瓧娈靛悕 -> 鏁版嵁搴撳垪鍚嶏級 var fieldMappings = new Dictionary<string, (string Field, string Default)> { + ["ycczdh"] = ("ycczdh", "N/A"), ["wlbm"] = ("wlbm", "N/A"), ["khgys"] = ("khgys", "N/A"), ["jzmcwlmc"] = ("jzmcwlmc", "N/A"), diff --git a/service/Warehouse/MesOaToMesManager.cs b/service/Warehouse/MesOaToMesManager.cs new file mode 100644 index 0000000..a9b21c6 --- /dev/null +++ b/service/Warehouse/MesOaToMesManager.cs @@ -0,0 +1,150 @@ +锘縰sing System.Data; +using System.Data.SqlClient; +using Masuit.Tools; +using NewPdaSqlServer.DB; +using NewPdaSqlServer.Dto.service; +using NewPdaSqlServer.entity; +using NewPdaSqlServer.entity.Base; +using SqlSugar; + +namespace NewPdaSqlServer.service.Warehouse; + +public class MesOaToMesManager : Repository<OaToMesQuery> +{ + public string ApproveIqcEx(OaToMesQuery query) + { + var _strMsg = ""; + var _intSum = 0; + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + // 鍙傛暟鏍¢獙澧炲己 + if (query.iqcExNo.IsNullOrEmpty()) throw new Exception("寮傚父鍗曞彿涓嶅厑璁镐负绌�"); + if (query.dataJson == null || !query.dataJson.Any()) throw new Exception("妫�楠屾暟鎹笉鑳戒负绌�"); + + using (var cmd = new SqlCommand("[iqc_ycd_oa_mes]", conn)) + { + try + { + conn.Open(); + + //// 鏍¢獙MES妫�楠屽崟 + //var checkSql = @"SELECT B.releaseNo AS jydNo + // FROM Mes_QC_Exceptional_Detail B + // LEFT JOIN Mes_QC_Exceptional A ON A.guid = B.pGuid + // WHERE A.fBillNo = @iqcExNo"; + //using (var checkCmd = new SqlCommand(checkSql, conn)) + //{ + // checkCmd.Parameters.AddWithValue("@iqcExNo", query.iqcExNo); + // var dbJydList = new List<string>(); + // using (var reader = checkCmd.ExecuteReader()) + // { + // while (reader.Read()) + // { + // dbJydList.Add(reader["jydNo"].ToString()); + // } + // } + + // // 楠岃瘉鏁版嵁涓�鑷存�� + // var inputJydList = query.dataJson.Select(d => d.jyd).ToList(); + // var diff = inputJydList.Except(dbJydList).Union(dbJydList.Except(inputJydList)); + // if (diff.Any()) + // { + // throw new Exception($"浼犲叆寮傚父澶勭疆鍗曞搴旂殑妫�楠屽崟鍙蜂笌MES涓嶅尮閰嶏紝宸紓鍗曞彿锛歿string.Join(",", diff)}"); + // } + //} + + // 寰幆澶勭悊姣忔潯鏁版嵁 + foreach (var item in query.dataJson) + { + cmd.Parameters.Clear(); + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new SqlParameter("@outMsg", SqlDbType.NVarChar, 150) { Direction = ParameterDirection.Output }, + new SqlParameter("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }, + new SqlParameter("@ycdNo", query.iqcExNo), + new SqlParameter("@jydNo", item.jyd), + new SqlParameter("@xblb", item.xblb), + new SqlParameter("@clyj", item.clyj), + new SqlParameter("@jssl", item.jssl), + new SqlParameter("@inFieldValue", 1) + }; + cmd.Parameters.AddRange(parameters); + cmd.ExecuteNonQuery(); + + _intSum += (int)parameters[1].Value; + if ((int)parameters[1].Value <= 0) + { + throw new Exception(parameters[0].Value.ToString()); + } + } + string rtnMsg = $"{query.iqcExNo}瀹℃壒鎺ㄩ�丮ES鎴愬姛锛�"; + + return rtnMsg; + } + catch (Exception ex) + { + // 澧炲己寮傚父鏃ュ織 + _strMsg = $"寮傚父澶勭疆澶辫触锛歿ex.Message}"; + throw new Exception(_strMsg); + } + finally + { + conn.Close(); + } + } + } + } + + public string RetrunIqcEx(OaToMesRQuery query) + { + var _strMsg = ""; + var _intSum = 0; + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + // 鍙傛暟鏍¢獙澧炲己 + if (query.iqcExNo.IsNullOrEmpty()) throw new Exception("寮傚父鍗曞彿涓嶅厑璁镐负绌�"); + + using (var cmd = new SqlCommand("[iqc_ycd_oa_mes]", conn)) + { + try + { + conn.Open(); + int inFieldValue = 0; + + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new SqlParameter("@outMsg", SqlDbType.NVarChar, 150) { Direction = ParameterDirection.Output }, + new SqlParameter("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }, + new SqlParameter("@ycdNo", query.iqcExNo), + new SqlParameter("@jydNo", DBNull.Value), + new SqlParameter("@xblb", DBNull.Value), + new SqlParameter("@clyj", DBNull.Value), + new SqlParameter("@jssl", DBNull.Value), + new SqlParameter("@inFieldValue", inFieldValue) + }; + cmd.Parameters.AddRange(parameters); + cmd.ExecuteNonQuery(); + + _intSum = (int)parameters[1].Value; + if (_intSum <= 0) + { + throw new Exception(parameters[0].Value.ToString()); + } + + return $"{query.iqcExNo}閫�鍥炴搷浣滄垚鍔燂紒褰卞搷璁板綍鏁帮細{_intSum}"; + } + catch (Exception ex) + { + _strMsg = $"寮傚父鍗曢��鍥炲け璐ワ細{ex.Message}"; + throw new Exception(_strMsg); + } + finally + { + conn.Close(); + } + } + } + } +} \ No newline at end of file -- Gitblit v1.9.3