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 listStr = new List(); //定义全局参数集合 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 json) { string sql = ""; string search = ""; var dynamicParams = new DynamicParameters(); try { if (json == null || json.Count <= 0) //产线编码不为空 { List list = new List(); //获取产线信息 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(); //查询产线下工单信息 sql = @"select distinct E.saleOrderCode,P.wo_code,P.plan_qty,M.partcode,M.partname,M.partspec,T.name as uomname from TFlw_Rteqp A inner join TFlw_Rtdt B on A.step_code=B.step_code inner join TK_Wrk_Man P on B.rout_code=P.route_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 P.is_delete<>'1' and A.eqp_code=@linecode"; 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(); //查新工单下工序信息 sql = @"select A.seq,T.stepcode,T.stepname,A.plan_qty,A.good_qty,A.ng_qty from TK_Wrk_Step A left join TStep T on A.step_code=T.stepcode where A.wo_code=@wo_code"; dynamicParams.Add("@linecode", 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();//不良数量 TreeTwo linetwo = new TreeTwo(); linetwo.stepseq = stepseq; linetwo.stepcode = stepcode; linetwo.stepname = stepname; linetwo.planqty = planqty; linetwo.goodqty = good_qty; linetwo.ngqty = ng_qty; lineone.children.Add(linetwo); } } list.Add(line); } else { mes.code = "300"; mes.Message = "当前产线下无在生产任务!"; mes.data = null; return mes; } } else { mes.code = "300"; mes.Message = "当前产线下无在生产任务!"; mes.data = null; return mes; } } } 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; } 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' 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' ) 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 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 } }