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