zjh
2025-09-18 31c9cb02f04a654d3517237860464c75f6bfdbc4
1、实验室结果更新接口上传2、一致性选项保存接口优化
已修改1个文件
已添加3个文件
308 ■■■■■ 文件已修改
StandardPda/MES.Service/Dto/service/TestResultDto.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/service/QC/LljService.cs 103 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/service/Warehouse/WorkflowManager.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MESApplication/Controllers/Warehouse/WorkflowController.cs 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Dto/service/TestResultDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
namespace MES.Service.Dto.service
{
    /// <summary>
    /// å®žéªŒå®¤æµ‹è¯•结果DTO
    /// </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; }
    }
}
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];
StandardPda/MES.Service/service/Warehouse/WorkflowManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
using 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. ä¿å­˜æ–‡ä»¶ä¿¡æ¯ï¼ˆTEST_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;
        }
    }
}
StandardPda/MESApplication/Controllers/Warehouse/WorkflowController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
using 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);
            }
        }
    }
}