From 31c9cb02f04a654d3517237860464c75f6bfdbc4 Mon Sep 17 00:00:00 2001
From: zjh <2207896513@qq.com>
Date: 星期四, 18 九月 2025 15:30:21 +0800
Subject: [PATCH] 1、实验室结果更新接口上传2、一致性选项保存接口优化
---
StandardPda/MES.Service/service/QC/LljService.cs | 103 ++++++++++++++--
StandardPda/MESApplication/Controllers/Warehouse/WorkflowController.cs | 86 ++++++++++++++
StandardPda/MES.Service/Dto/service/TestResultDto.cs | 30 +++++
StandardPda/MES.Service/service/Warehouse/WorkflowManager.cs | 89 ++++++++++++++
4 files changed, 291 insertions(+), 17 deletions(-)
diff --git a/StandardPda/MES.Service/Dto/service/TestResultDto.cs b/StandardPda/MES.Service/Dto/service/TestResultDto.cs
new file mode 100644
index 0000000..9650e21
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/service/TestResultDto.cs
@@ -0,0 +1,30 @@
+锘縩amespace MES.Service.Dto.service
+{
+ /// <summary>
+ /// 瀹為獙瀹ゆ祴璇曠粨鏋淒TO
+ /// </summary>
+ public class TestResultDto
+ {
+ /// <summary>
+ /// MES ID
+ /// </summary>
+ public string MesId { get; set; }
+
+ /// <summary>
+ /// 鐘舵��0锛氬凡鍙栨秷 1:寰呮彁浜� 2:寰呭鏍� 3:寰呮帴鏀� 4:寰呮帓鏈� 5:娴嬭瘯涓� 6:寰呭鏍告姤鍛� 7:宸插畬鎴�
+ /// </summary>
+ public string Status { get; set; }
+
+ /// <summary>
+ /// 娴嬭瘯缁撴灉1锛氬悎鏍� 2锛氫笉鍚堟牸
+ /// </summary>
+ public string TestResults { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢鍒楄〃
+ /// </summary>
+ public List<string> FileList { get; set; }
+ }
+
+
+}
diff --git a/StandardPda/MES.Service/service/QC/LljService.cs b/StandardPda/MES.Service/service/QC/LljService.cs
index 9ec05f4..f4f6268 100644
--- a/StandardPda/MES.Service/service/QC/LljService.cs
+++ b/StandardPda/MES.Service/service/QC/LljService.cs
@@ -6,6 +6,7 @@
using MES.Service.util;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
+using Oracle.ManagedDataAccess.Client;
using SqlSugar;
using System.Data;
using System.Security.Cryptography;
@@ -1502,29 +1503,97 @@
return SQLHelper.ExecuteQuery(sql1);
}
+ //public void saveYzxBDlist(string id, DataTable DB)
+ //{
+ // OracleSQLHelper SQLHelper = new();
+ // //鍏堟妸缁撴灉娓呯┖
+ // var sql1 =
+ // string.Format(
+ // @"update MES_IQC_CONSISTENCY_ck set ISCHACK=0 where PID='" +
+ // id + "' ");
+ // SQLHelper.ExecuteQuery(sql1);
+ // var rowId = "";
+ // for (var i = 0; i < DB.Rows.Count; i++)
+ // rowId += "'" + DB.Rows[i]["id"] + "',";
+ // rowId = rowId.Substring(0, rowId.Length - 1);
+
+
+ // //淇敼缁撴灉
+ // var sql2 =
+ // string.Format(
+ // @"update MES_IQC_CONSISTENCY_ck set ISCHACK=1 where PID='" +
+ // id + "'and id in(" + rowId + ") ");
+ // SQLHelper.ExecuteQuery(sql2);
+ //}
+
public void saveYzxBDlist(string id, DataTable DB)
{
- OracleSQLHelper SQLHelper = new();
- //鍏堟妸缁撴灉娓呯┖
- var sql1 =
- string.Format(
- @"update MES_IQC_CONSISTENCY_ck set ISCHACK=0 where PID='" +
- id + "' ");
- SQLHelper.ExecuteQuery(sql1);
- var rowId = "";
- for (var i = 0; i < DB.Rows.Count; i++)
- rowId += "'" + DB.Rows[i]["id"] + "',";
- rowId = rowId.Substring(0, rowId.Length - 1);
+ var sqlHelper = new OracleSQLHelper();
+ using (var connection = new OracleConnection(AppsettingsUtility.Settings.DataBaseConn))
+ {
+ connection.Open();
+ using (var transaction = connection.BeginTransaction())
+ {
+ try
+ {
+ // 1. 娓呯┖ ISCHACK
+ var sql1 = @"UPDATE MES_IQC_CONSISTENCY_ck
+ SET ISCHACK = 0
+ WHERE PID = :pid";
- //淇敼缁撴灉
- var sql2 =
- string.Format(
- @"update MES_IQC_CONSISTENCY_ck set ISCHACK=1 where PID='" +
- id + "'and id in(" + rowId + ") ");
- SQLHelper.ExecuteQuery(sql2);
+ using (var cmd1 = new OracleCommand(sql1, connection))
+ {
+ cmd1.Transaction = transaction;
+ cmd1.Parameters.Add(new OracleParameter(":pid", id));
+ cmd1.ExecuteNonQuery();
+ }
+
+ // 2. 濡傛灉 DataTable 閲屾湁瑕佹洿鏂扮殑 id
+ if (DB != null && DB.Rows.Count > 0)
+ {
+ // 鎷兼帴 in 鏉′欢锛堝弬鏁板寲锛�
+ var inParams = new List<string>();
+ var parameters = new List<OracleParameter>
+ {
+ new OracleParameter(":pid", id)
+ };
+
+ for (int i = 0; i < DB.Rows.Count; i++)
+ {
+ string paramName = ":id" + i;
+ inParams.Add(paramName);
+ parameters.Add(new OracleParameter(paramName, DB.Rows[i]["id"]));
+ }
+
+ var sql2 = $@"
+ UPDATE MES_IQC_CONSISTENCY_ck
+ SET ISCHACK = 1
+ WHERE PID = :pid
+ AND id IN ({string.Join(",", inParams)})";
+
+ using (var cmd2 = new OracleCommand(sql2, connection))
+ {
+ cmd2.Transaction = transaction;
+ cmd2.Parameters.AddRange(parameters.ToArray());
+ cmd2.ExecuteNonQuery();
+ }
+ }
+
+ // 鍏ㄩ儴鎴愬姛锛屾彁浜�
+ transaction.Commit();
+ }
+ catch (Exception ex)
+ {
+ // 鍑洪敊鍥炴粴
+ transaction.Rollback();
+ throw new Exception("鎵ц saveYzxBDlist 鍑洪敊: " + ex.Message, ex);
+ }
+ }
+ }
}
+
public string[] YzxImgVerify(string id)
{
var msgStr = new string[2];
diff --git a/StandardPda/MES.Service/service/Warehouse/WorkflowManager.cs b/StandardPda/MES.Service/service/Warehouse/WorkflowManager.cs
new file mode 100644
index 0000000..b7dac3b
--- /dev/null
+++ b/StandardPda/MES.Service/service/Warehouse/WorkflowManager.cs
@@ -0,0 +1,89 @@
+锘縰sing Masuit.Tools;
+using MES.Service.DB;
+using MES.Service.Dto.service;
+using MES.Service.Modes;
+using MES.Service.service.BasicData;
+using Oracle.ManagedDataAccess.Client;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MES.Service.service.Warehouse
+{
+ public class WorkflowManager
+ {
+ /// <summary>
+ /// 鏇存柊瀹為獙瀹ゆ祴璇曞鎵樼姸鎬侊紝骞朵繚瀛樻枃浠朵俊鎭�
+ /// </summary>
+ public string[] SetTestResultDto(TestResultDto testResultDto)
+ {
+ var sqlHelper = new OracleSQLHelper();
+ string[] msg = new string[2];
+ msg[0] = "true";
+
+ var (connection, transaction) = sqlHelper.BeginTransaction();
+
+ try
+ {
+ // 1. 鏇存柊 MES_QA_ITEMS_DETECT_01 鐘舵�佷笌缁撴灉
+ var sqlUpdate = @"
+ UPDATE MES_QA_ITEMS_DETECT_01
+ SET SYS_STATES = :status,
+ SYS_TEST_RESULTS = :testResults
+ WHERE ID = :mesid";
+
+ var updateParams = new[]
+ {
+ new OracleParameter(":status", testResultDto.Status),
+ new OracleParameter(":testResults", testResultDto.TestResults),
+ new OracleParameter(":mesid", testResultDto.MesId)
+ };
+
+ sqlHelper.ExecuteNonQueryWithTransaction(sqlUpdate, updateParams, connection, transaction);
+
+ // 2. 淇濆瓨鏂囦欢淇℃伅锛圱EST_RESULT_FILE锛�
+ if (testResultDto.FileList != null && testResultDto.FileList.Count > 0)
+ {
+ foreach (var fileUrl in testResultDto.FileList)
+ {
+ var sqlInsertFile = @"
+ INSERT INTO TEST_RESULT_FILE (
+ ID, TESTRESULTID, FILE_URL
+ ) VALUES (
+ SEQ_TEST_RESULT_FILE.NEXTVAL, :testResultId, :fileUrl
+ )";
+
+ var insertParams = new[]
+ {
+ new OracleParameter(":testResultId", testResultDto.MesId),
+ new OracleParameter(":fileUrl", fileUrl)
+ };
+
+ sqlHelper.ExecuteNonQueryWithTransaction(sqlInsertFile, insertParams, connection, transaction);
+ }
+ }
+
+ transaction.Commit();
+ }
+ catch (Exception ex)
+ {
+ transaction.Rollback();
+ msg[0] = "false";
+ msg[1] = ex.Message;
+ throw;
+ }
+ finally
+ {
+ sqlHelper.CloseConnection(connection);
+ }
+
+ return msg;
+ }
+
+
+
+ }
+}
diff --git a/StandardPda/MESApplication/Controllers/Warehouse/WorkflowController.cs b/StandardPda/MESApplication/Controllers/Warehouse/WorkflowController.cs
new file mode 100644
index 0000000..cb636f9
--- /dev/null
+++ b/StandardPda/MESApplication/Controllers/Warehouse/WorkflowController.cs
@@ -0,0 +1,86 @@
+锘縰sing AngleSharp.Text;
+using MES.Service.Dto.service;
+using MES.Service.Modes;
+using MES.Service.service;
+using MES.Service.service.Warehouse;
+using MES.Service.util;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using System.Dynamic;
+
+namespace MESApplication.Controllers.Warehouse
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class WorkflowController : ControllerBase
+ {
+
+ private readonly WorkflowManager m = new();
+
+ private readonly MessageCenterManager _manager = new();
+
+ private readonly string METHOD = "POST";
+
+ private readonly string TableName = "Workflow";
+
+ private readonly string URL = "http://localhost:10054/api/Workflow/";
+
+
+ /// <summary>
+ ///鏇存柊瀹為獙瀹ゆ祴璇曞鎵樼姸鎬�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("TestResult")]
+ public ResponseResult TestResult(TestResultDto testResultDto)
+ {
+ var entity = new MessageCenter();
+ entity.TableName = TableName;
+ entity.Url = URL + "TestResult";
+ entity.Method = METHOD;
+ entity.Data = Newtonsoft.Json.JsonConvert.SerializeObject(testResultDto);
+ entity.Status = 1;
+ entity.CreateBy = "PL017";
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ var result = m.SetTestResultDto(testResultDto);
+ resultInfos.tbBillList = result;
+
+ entity.Result = 0;
+ if (result[0].ToBoolean()) entity.Result = 1;
+ entity.DealWith = 1;
+ _manager.save(entity);
+
+ if (result[0].ToBoolean())
+ {
+ return new ResponseResult
+ {
+ status = 0,
+ message = "OK",
+ data = resultInfos
+ };
+ }
+ else {
+ return new ResponseResult
+ {
+ status = 1,
+ message = result[1],
+ data = resultInfos
+ };
+ }
+
+ }
+ catch (Exception ex)
+ {
+ entity.Result = 0;
+ entity.DealWith = 0;
+ entity.ResultData = ex.Message;
+ _manager.save(entity);
+
+ return ResponseResult.ResponseError(ex);
+ }
+ }
+
+ }
+}
--
Gitblit v1.9.3