yl
2022-08-02 fce9a89fb5ad93277b95c699e892af1bb28aba88
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using VueWebApi.DDKanBanModel;
using VueWebApi.Models;
using VueWebApi.Tools;
 
namespace VueWebApi.DLL.DAL
{
    public class KanBanManagerentDAL
    {
        public static DataTable dt;    //定义全局变量dt
        public static bool res;       //定义全局变量dt
        public static ToMessage mes = new ToMessage(); //定义全局返回信息对象
        public static string strProcName = ""; //定义全局sql变量
        public static List<SqlParameter> listStr = new List<SqlParameter>(); //定义全局参数集合
        public static SqlParameter[] parameters; //定义全局SqlParameter参数数组
 
 
        #region[大岛车间综合看板,生产车间查找产线接口]
        public static ToMessage ShopSearchLine(string shopcode)
        {
            string sql = "";
            string search = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                if (shopcode != "" && shopcode != null) //车间编码不为空
                {
                    search += "where wksp_code=@shopcode ";
                    dynamicParams.Add("@shopcode", shopcode);
                }
                //车间编码获取产线信息
                sql = @"select code ,name from TEqpInfo " + search;
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
 
        #region[大岛车间综合看板,左上产线加工任务接口]
        public static ToMessage LineSearchTopLeftData(List<ObjectData> json)
        {
            string sql = "";
            string search = "";
            List<ShopTopLeft> list = new List<ShopTopLeft>();
            var dynamicParams = new DynamicParameters();
            try
            {
                if (json == null || json.Count>0) //产线编码不为空
                {
                    //获取产线信息
                    for (int i = 0; i < json.Count; i++)
                    {
                        ShopTopLeft line = new ShopTopLeft();
                        line.linecode = json[i].code;
                        line.linename = json[i].name;
                        //获取产线下开工总单量
                        sql = @"select COUNT(*) cont  from(
                                select distinct B.rout_code,M.wo_code  from TFlw_Rteqp  A
                                inner join TFlw_Rtdt B on A.step_code=B.step_code
                                inner join TK_Wrk_Man M on B.rout_code=M.route_code
                                where M.status<>'CLOSED'  and M.is_delete<>'1' and A.eqp_code=@linecode) as A";
                        dynamicParams.Add("@linecode", json[i].code);
                        var data = DapperHelper.selectdata(sql, dynamicParams);
                        if (data.Rows.Count > 0 && decimal.Parse(data.Rows[0]["CONT"].ToString())>0)
                        {
                            line.lineworkcont=data.Rows[0]["CONT"].ToString(); //产线总单量
                            line.children = new List<TreeOne>();
                            //查询产线下已开工的加工单信息
                            sql = @"select distinct E.saleOrderCode,A.wo_code,P.plan_qty,M.partcode,M.partname,M.partspec,T.name as uomname   from TK_Wrk_Record A
                                    inner join TK_Wrk_Man P on A.wo_code=P.wo_code
                                    left join TMateriel_Info M on P.materiel_code=M.partcode
                                    left join TUom T on M.uom_code=T.code 
                                    left join TKimp_Ewo E on P.m_po=E.wo
                                    where P.status<>'CLOSED' and P.status<>'NEW' and A.eqp_code=@linecode and A.style='S' and A.step_seq='1'";
                            dynamicParams.Add("@linecode", json[i].code);
                            var data0 = DapperHelper.selectdata(sql, dynamicParams);
                            if (data0.Rows.Count > 0)
                            {
                                for (int j = 0; j < data0.Rows.Count; j++)
                                {
                                    string saleOrderCode = data0.Rows[j]["SALEORDERCODE"].ToString();//销售订单号
                                    string wo_code = data0.Rows[j]["WO_CODE"].ToString();//工单号
                                    string plan_qty = data0.Rows[j]["PLAN_QTY"].ToString();//任务数量
                                    string partcode = data0.Rows[j]["PARTCODE"].ToString();//产品编码
                                    string partname = data0.Rows[j]["PARTNAME"].ToString();//产品名称
                                    string partspec = data0.Rows[j]["PARTSPEC"].ToString();//产品规格
                                    string uomname = data0.Rows[j]["UOMNAME"].ToString();//单位名称
                                    TreeOne lineone = new TreeOne();
                                    lineone.saleordercode = saleOrderCode;
                                    lineone.workcode = wo_code;
                                    lineone.qty = plan_qty;
                                    lineone.partnumber = partcode;
                                    lineone.partname = partname;
                                    lineone.partspec = partspec;
                                    lineone.uom = uomname;
                                    line.children.Add(lineone);
                                    lineone.children = new List<TreeTwo>();
 
                                    //查新工单下工序信息
                                    sql = @"select A.seq,T.stepcode,T.stepname,A.plan_qty,A.good_qty,A.ng_qty,A.status  
                                            from TK_Wrk_Step A
                                            left join TStep T on A.step_code=T.stepcode
                                            where A.wo_code=@wo_code";
                                    dynamicParams.Add("@wo_code", wo_code);
                                    var data1 = DapperHelper.selectdata(sql, dynamicParams);
                                    for (int k = 0; k < data1.Rows.Count; k++)
                                    {
                                        string stepseq= data1.Rows[k]["SEQ"].ToString();//工序序号
                                        string stepcode = data1.Rows[k]["STEPCODE"].ToString();//工序编码
                                        string stepname = data1.Rows[k]["STEPNAME"].ToString();//工序名称
                                        string planqty = data1.Rows[k]["PLAN_QTY"].ToString();//任务数量
                                        string good_qty = data1.Rows[k]["GOOD_QTY"].ToString();//报工数量
                                        string ng_qty = data1.Rows[k]["NG_QTY"].ToString();//不良数量
                                        string status = data1.Rows[k]["STATUS"].ToString();//状态
                                        TreeTwo linetwo = new TreeTwo();
                                        linetwo.stepseq = stepseq;
                                        linetwo.stepcode = stepcode;
                                        linetwo.stepname = stepname;
                                        linetwo.planqty = planqty;
                                        linetwo.goodqty = good_qty;
                                        linetwo.ngqty = ng_qty;
                                        linetwo.status = status;
                                        lineone.children.Add(linetwo);
                                    }
                                }
                                list.Add(line);
                            }
                            else 
                            {
                                mes.code = "300";
                                mes.Message = "当前产线下无在生产任务!";
                                mes.data = null;
                                list.Add(line);
                                continue;
                            }
                        }
                        else 
                        {
                            mes.code = "300";
                            mes.Message = "当前产线下无在生产任务!";
                            mes.data = null;
                            list.Add(line);
                            continue;
                          
                        }
                    }
                }
                else 
                {
                    mes.code = "300";
                    mes.Message = "产线参数不能为空!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            mes.code = "200";
            mes.Message = "查询成功!";
            mes.data = list;
            return mes;
        }
        #endregion\
 
        #region[大岛车间综合看板,左下列表接口]
        public static ToMessage LineSearchBottomLeftData()
        {
            string sql = "";
            try
            {
                //获取任务列表信息
                sql = @"select A.*,ROW_NUMBER() OVER(ORDER BY (case when A.warning<=2 then A.planenddate end) asc ,A.planstartdate asc) AS RowNum from(
                         select  A.status,A.lm_date,E.saleOrderCode,A.wo_code,M.partcode,M.partname,M.partspec,U.name,
                         A.plan_qty,B.good_qty,B.ng_qty,E.planstartdate,E.planenddate, datediff(day,getdate(),E.planenddate) warning
                         from TK_Wrk_Man A 
                         inner join TK_Wrk_Step B on A.wo_code=B.wo_code
                         inner join TKimp_Ewo E on A.m_po=E.wo
                         left  join TMateriel_Info M on A.materiel_code=M.partcode
                         left  join TUom U on M.uom_code=U.code
                         where A.status<>'CLOSED' and A.is_delete<>'1' and B.isend='Y'
                         )as A ";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
 
        #region[大岛车间综合看板,右上top排行接口,当日]
        public static ToMessage LineSearchTopRightData()
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //获取产品报工top5信息
                sql = @"select top 5 A.partname,isnull(sum(A.good_qty),0) as good_qty from(
                           select M.partname,A.good_qty  from TK_Wrk_Record A
                           inner join TK_Wrk_Step S on A.wo_code=S.wo_code and A.step_code=S.step_code
                           inner join TMateriel_Info M on A.materiel_code=M.partcode
                           where A.style='B' and S.isend='Y' and datediff(day,GETDATE(),A.lm_date)=0
                           union all
                           select M.partname,A.sqty as good_qty  from TK_Wrk_OutRecord A
                           inner join TK_Wrk_Step S on A.wo_code=S.wo_code and A.step_code=S.step_code
                           inner join TMateriel_Info M on A.materiel_code=M.partcode
                           where A.style='S' and S.isend='Y' and datediff(day,GETDATE(),A.lm_date)=0
                           ) as A group by A.partname order by good_qty desc";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
 
        #region[大岛车间综合看板,右下top排行接口,当前时间往前一周]
        public static ToMessage LineSearchBottomRightData()
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //获取报工不良top5信息
                sql = @"select isnull(COUNT(checkitem_name),0) cont,checkitem_name  from TStepCheckRecordSub where DateDiff(dd,lm_date,getdate())<=7
                        group by checkitem_name order by cont desc";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
    }
}