南骏 池
4 天以前 4f8d1da89bc7cf399e6d90d6230ad6c28114443a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
using 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}审批推送MES成功!";
 
                    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();
                }
            }
        }
    }
}