using Dapper; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Threading.Tasks; using VueWebCoreApi.Tools; namespace VueWebCoreApi.DLL.DAL { public class ReportManagerDAL { 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 ProductionScheduleReportSearch(string status, string wocode,string wkshopcode,string wkshopname, string partcode, string partname, string partspec, string opendate, string closedate, int startNum, int endNum, string prop, string order) { var dynamicParams = new DynamicParameters(); string search = ""; try { if (status != "" && status != null) { switch (status) { case "START": search += "and AA.status='START' "; break; case "CLOSED": search += "and AA.status='CLOSED' "; break; default: search += "and AA.status<>'START' and AA.status<>'CLOSED' "; break; } } if (wocode != "" && wocode != null) { search += "and AA.wo_code like '%'+@wocode+'%' "; dynamicParams.Add("@wocode", wocode); } if (wkshopcode != "" && wkshopcode != null) { search += "and AA.wkshp_code like '%'+@wkshopcode+'%' "; dynamicParams.Add("@wkshopcode", wkshopcode); } if (wkshopname != "" && wkshopname != null) { search += "and AA.wkshp_name like '%'+@wkshopname+'%' "; dynamicParams.Add("@wkshopname", wkshopname); } if (partcode != "" && partcode != null) { search += "and AA.partcode like '%'+@partcode+'%' "; dynamicParams.Add("@partcode", partcode); } if (partcode != "" && partcode != null) { search += "and AA.partcode like '%'+@partcode+'%' "; dynamicParams.Add("@partcode", partcode); } if (partname != "" && partname != null) { search += "and AA.partname like '%'+@partname+'%' "; dynamicParams.Add("@partname", partname); } if (partspec != "" && partspec != null) { search += "and AA.partspec like '%'+@partspec+'%' "; dynamicParams.Add("@partspec", partspec); } if (opendate != "" && opendate != null) { search += "and AA.lm_date between @opendate and @closedate "; dynamicParams.Add("@opendate", opendate + " 00:00:00"); dynamicParams.Add("@closedate", closedate + " 23:59:59"); } if (search == "") { search = "and 1=1 "; } search = search.Substring(3);//截取索引2后面的字符 // --------------查询指定数据-------------- var total = 0; //总条数 var sql = @"select AA.saleOrderCode,AA.m_po,AA.wo_code,AA.wkshp_code,AA.wkshp_name, (case when AA.status='START' then '执行中' when AA.status='CLOSED' then '已完成' else '未开始' end) as status, AA.lm_date,AA.partcode,AA.partname,AA.partspec,AA.plan_qty,left(AA.concat_name,len(concat_name)-1) as concat_name from ( select E.saleOrderCode,W.m_po,m.wo_code,W.wkshp_code,F.torg_name as wkshp_name,W.status,W.lm_date,P.partcode,P.partname,P.partspec,m.plan_qty, (select s.stepname+'/'+cast(cast(n.good_qty as decimal(18,2)) AS varchar(50))+',' from TK_Wrk_Step n inner join TStep S on n.step_code=S.stepcode where n.wo_code=m.wo_code for xml path('')) as concat_name from TK_Wrk_Step m inner join TK_Wrk_Man W on m.wo_code=W.wo_code left join TKimp_Ewo E on W.m_po=E.wo inner join TMateriel_Info P on W.materiel_code=p.partcode left join TOrganization F on W.wkshp_code=F.torg_code group by E.saleOrderCode,W.m_po,m.wo_code,W.wkshp_code,F.torg_name,W.status,W.lm_date,P.partcode,P.partname,P.partspec,m.plan_qty ) AA where " + search; var data = DapperHelper.GetPageList(sql, dynamicParams, prop, order, startNum, endNum, out total); mes.code = "200"; mes.Message = "查询成功!"; mes.count = total; mes.data = data.ToList(); } catch (Exception e) { mes.code = "300"; mes.count = 0; mes.Message = e.Message; mes.data = null; } return mes; } #endregion #region[生产进度报表导出] public static ToMessage ProductionScheduleReportExcelSearch(string status, string wocode, string wkshopcode, string wkshopname, string partcode, string partname, string partspec, string opendate, string closedate) { var dynamicParams = new DynamicParameters(); string search = ""; try { if (status != "" && status != null) { switch (status) { case "START": search += "and AA.status='START' "; break; case "CLOSED": search += "and AA.status='CLOSED' "; break; default: search += "and AA.status<>'START' and AA.status<>'CLOSED' "; break; } } if (wocode != "" && wocode != null) { search += "and AA.wo_code like '%'+@wocode+'%' "; dynamicParams.Add("@wocode", wocode); } if (wkshopcode != "" && wkshopcode != null) { search += "and AA.wkshp_code like '%'+@wkshopcode+'%' "; dynamicParams.Add("@wkshopcode", wkshopcode); } if (wkshopname != "" && wkshopname != null) { search += "and AA.wkshp_name like '%'+@wkshopname+'%' "; dynamicParams.Add("@wkshopname", wkshopname); } if (partcode != "" && partcode != null) { search += "and AA.partcode like '%'+@partcode+'%' "; dynamicParams.Add("@partcode", partcode); } if (partname != "" && partname != null) { search += "and AA.partname like '%'+@partname+'%' "; dynamicParams.Add("@partname", partname); } if (partspec != "" && partspec != null) { search += "and AA.partspec like '%'+@partspec+'%' "; dynamicParams.Add("@partspec", partspec); } if (opendate != "" && opendate != null) { search += "and AA.lm_date between @opendate and @closedate "; dynamicParams.Add("@opendate", opendate + " 00:00:00"); dynamicParams.Add("@closedate", closedate + " 23:59:59"); } if (search == "") { search = "and 1=1 "; } search = search.Substring(3);//截取索引2后面的字符 // --------------查询指定数据-------------- var total = 0; //总条数 var sql = @"select AA.saleOrderCode as ERP源单号,AA.m_po as ERP生产订单,AA.wo_code as 生产工单号,AA.wkshp_code as 车间编码,AA.wkshp_name as 车间名称, (case when AA.status='START' then '执行中' when AA.status='CLOSED' then '已完成' else '未开始' end) as 工单状态, AA.lm_date as 单据日期,AA.partcode as 产品编码,AA.partname as 产品名称,AA.partspec as 产品规格,AA.plan_qty as 任务数量,left(AA.concat_name,len(concat_name)-1) as 生产进度 from ( select E.saleOrderCode,W.m_po,m.wo_code,W.status,W.lm_date,W.wkshp_code,F.torg_name as wkshp_name,P.partcode,P.partname,P.partspec,m.plan_qty, (select s.stepname+'/'+cast(cast(n.good_qty as decimal(18,2)) AS varchar(50))+',' from TK_Wrk_Step n inner join TStep S on n.step_code=S.stepcode where n.wo_code=m.wo_code for xml path('')) as concat_name from TK_Wrk_Step m inner join TK_Wrk_Man W on m.wo_code=W.wo_code left join TKimp_Ewo E on W.m_po=E.wo inner join TMateriel_Info P on W.materiel_code=p.partcode left join TOrganization F on W.wkshp_code=F.torg_code group by E.saleOrderCode,W.m_po,m.wo_code,W.wkshp_code,F.torg_name,W.status,W.lm_date,P.partcode,P.partname,P.partspec,m.plan_qty ) AA where " + search; DataTable data = DapperHelper.selectdata(sql, dynamicParams); data.TableName = "Table"; //设置DataTable的名称 string msg = DownLoad.DataTableToExcel(data, "生产进度报表"); mes.code = "200"; mes.Message = "查询成功!"; mes.count = total; mes.data = msg; } catch (Exception e) { mes.code = "300"; mes.count = 0; mes.Message = e.Message; mes.data = null; } return mes; } #endregion } }