旧版报表、仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

315 lines
15 KiB

using System.Collections.Generic;
using System.Data.Entity.Validation;
using System.Linq;
using System.Web;
using Warehouse.Models.mesModel;
using Z.EntityFramework.Plus;
using System;
using System.Data;
namespace Warehouse.DAL.QC
{
public class QC
{
public List<dynamic> QueryQCInfo(dynamic para)
{
using (var context = new mesModel())
{
string strwhere = string.Empty;
string strwheres = string.Empty;
if (!string.IsNullOrEmpty(para.begintime.ToString()))
{
strwhere += "and alls.create_date >= '" + Convert.ToString(para.begintime) + "'";
strwhere += "and alls.create_date <= '" + Convert.ToString(para.endtime) + "'";
}
if (!string.IsNullOrEmpty(para.serialno.ToString()))
{
strwhere += " and alls.[serial_nbr] = '" + Convert.ToString(para.serialno) + "'";
}
if (!string.IsNullOrEmpty(para.workshop.ToString()))
{
strwhere += " and alls.[area_code] = '" + Convert.ToString(para.workshop) + "'";
}
//if (!string.IsNullOrEmpty(para.status.ToString()))
//{
// strwhere += " AND qcv.[visit_type] = '" + Convert.ToString(para.status) + "'";
//}
if (!string.IsNullOrEmpty(para.workorder.ToString()))
{
strwhere += " AND alls.schedule_nbr = '" + Convert.ToString(para.workorder) + "'";
}
if (!string.IsNullOrEmpty(para.station.ToString()))
{
strwheres += " AND e.process_code = '" + Convert.ToString(para.station) + "'";
}
string sql = @"select distinct alls.serial_nbr,alls.sale_order,alls.schedule_nbr,alls.dqstatus,alls.final_grade
,code.process_code_desc,defecttype.defect_type_name,defectposition.defect_position
,remark.remark,accord.according_std
,hold.serial_status hstatus,hold.hperson,CONVERT(varchar(100), hold.htime, 120) as htime
,qcv.serial_status rstatus,qcv.operator rperson,CONVERT(varchar(100), pend.rtime, 120) as rtime
from ( select a.serial_nbr,b.sale_order,a.schedule_nbr,c.serial_status dqstatus,c.final_grade,a.create_date,b.area_code
FROM [mes_main].[dbo].[qc_visit] a
left join mes_main.dbo.wo_mfg b
on a.schedule_nbr = b.workorder
left join mes_main.dbo.assembly_status c
on a.serial_nbr = c.serial_nbr
left join [mes_main].[dbo].[config_workstation] e
on a.wks_id = e.wks_id
where 1=1 " + strwheres+ @") alls
left join ( select aa.serial_nbr, process_code_desc = (stuff((select ',' + bb.process_code_desc from (select p.serial_nbr,p.process_code_desc from
mes_main.dbo.defects p
left join [mes_main].[dbo].[config_workstation] e
on p.wks_id = e.wks_id
where 1 = 1 "+strwheres+ @"
group by p.serial_nbr,p.process_code_desc ) bb where bb.serial_nbr =
aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.process_code_desc from
mes_main.dbo.defects p
left join [mes_main].[dbo].[config_workstation] e
on p.wks_id = e.wks_id
where 1 = 1 " + strwheres + @"
group by p.serial_nbr,p.process_code_desc ) aa
where aa.serial_nbr != ''
group by aa.serial_nbr ) code
on alls.serial_nbr = code.serial_nbr
left join ( select aa.serial_nbr, defect_type_name = (stuff((select ',' + bb.defect_type_name from (select p.serial_nbr,d.defect_type_name from
mes_main.dbo.defects p
left join mes_main.dbo.config_defect_type d
on p.defect_type_id = d.defect_type_id
left join [mes_main].[dbo].[config_workstation] e
on p.wks_id = e.wks_id
where 1 = 1 " + strwheres + @"
group by p.serial_nbr,d.defect_type_name ) bb where bb.serial_nbr =
aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,d.defect_type_name from
mes_main.dbo.defects p
left join mes_main.dbo.config_defect_type d
on p.defect_type_id = d.defect_type_id
left join [mes_main].[dbo].[config_workstation] e
on p.wks_id = e.wks_id
where 1 = 1 " + strwheres + @"
group by p.serial_nbr,d.defect_type_name ) aa
where aa.serial_nbr != ''
group by aa.serial_nbr ) defecttype
on alls.serial_nbr = defecttype.serial_nbr
left join (select aa.serial_nbr, defect_position = (stuff((select ',' + bb.defect_position from (select p.serial_nbr,p.defect_position from
mes_main.dbo.defects p
left join [mes_main].[dbo].[config_workstation] e
on p.wks_id = e.wks_id
where 1 = 1 " + strwheres + @"
group by p.serial_nbr,p.defect_position ) bb where bb.serial_nbr =
aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.defect_position from
mes_main.dbo.defects p
left join [mes_main].[dbo].[config_workstation] e
on p.wks_id = e.wks_id
where 1 = 1 " + strwheres + @"
group by p.serial_nbr,p.defect_position ) aa
where aa.serial_nbr != ''
group by aa.serial_nbr ) defectposition
on alls.serial_nbr = defectposition.serial_nbr
left join (select aa.serial_nbr, remark = (stuff((select ',' + bb.remark from (select p.serial_nbr,p.remark from
mes_main.dbo.defects p
left join [mes_main].[dbo].[config_workstation] e
on p.wks_id = e.wks_id
where 1 = 1 " + strwheres + @"
group by p.serial_nbr,p.remark ) bb where bb.serial_nbr =
aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.remark from
mes_main.dbo.defects p
left join [mes_main].[dbo].[config_workstation] e
on p.wks_id = e.wks_id
where 1 = 1 " + strwheres + @"
group by p.serial_nbr,p.remark ) aa
where aa.serial_nbr != ''
group by aa.serial_nbr ) remark
on alls.serial_nbr = remark.serial_nbr
left join ( select aa.serial_nbr, according_std = (stuff((select ',' + bb.according_std from (select p.serial_nbr,p.according_std from
mes_main.dbo.defects p
left join [mes_main].[dbo].[config_workstation] e
on p.wks_id = e.wks_id
where 1 = 1 " + strwheres + @"
group by p.serial_nbr,p.according_std ) bb where bb.serial_nbr =
aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.according_std from
mes_main.dbo.defects p
left join [mes_main].[dbo].[config_workstation] e
on p.wks_id = e.wks_id
where 1 = 1 " + strwheres + @"
group by p.serial_nbr,p.according_std ) aa
where aa.serial_nbr != ''
group by aa.serial_nbr ) accord
on alls.serial_nbr = accord.serial_nbr
left join (select a.serial_nbr,a.create_date htime,a.serial_status,a.operator hperson
FROM [mes_main].[dbo].[qc_visit] a
left join [mes_main].[dbo].[config_workstation] e
on a.wks_id = e.wks_id
where a.visit_type = 'H' " + strwheres + @" ) hold
on alls.serial_nbr = hold.serial_nbr
left join ( select a.serial_nbr,max(a.create_date) rtime
FROM [mes_main].[dbo].[qc_visit] a
where a.wks_id = 'QC' and a.visit_type in ('PENDING','RL','RW','S')
group by a.serial_nbr) pend
on alls.serial_nbr = pend.serial_nbr
left join mes_main.dbo.qc_visit qcv
on pend.serial_nbr = qcv.serial_nbr and pend.rtime = qcv.create_date
where 1 = 1 " + strwhere;
// if (!string.IsNullOrEmpty(para.begintime.ToString()))
//{
// sql += "and qcv.create_date >= '" + Convert.ToString(para.begintime) + "'";
// sql += "and qcv.create_date <= '" + Convert.ToString(para.endtime) + "'";
//}
//sql += String.IsNullOrEmpty(para.serialno.ToString()) ? "" : " and qcv.[serial_nbr] LIKE '" + Convert.ToString(para.serialno) + "%'";
//sql += String.IsNullOrEmpty(para.workshop.ToString()) ? "" : " AND wo.[area_code] = '" + Convert.ToString(para.workshop) + "' ";
//sql += String.IsNullOrEmpty(para.status.ToString()) ? "" : " AND qcv.[visit_type] = '" + Convert.ToString(para.status) + "'";
//sql += String.IsNullOrEmpty(para.workorder.ToString()) ? "" : " AND qcv.schedule_nbr = '" + Convert.ToString(para.workorder) + "'";
var res = context.DynamicListFromSql(sql, null);
return res.ToList();
}
}
public List<dynamic> QueryQCInfonew(dynamic para)
{
using (var context = new mesModel())
{
string strwhere = string.Empty;
if (!string.IsNullOrEmpty(para.TestTimeBegin.ToString()))
{
strwhere += "and alls.create_date >= '" + Convert.ToString(para.TestTimeBegin) + "'";
strwhere += "and alls.create_date <= '" + Convert.ToString(para.TestTimeEnd) + "'";
}
if (!string.IsNullOrEmpty(para.SerialNum.ToString()))
{
strwhere += " and alls.[serial_nbr] = '" + Convert.ToString(para.SerialNum) + "'";
}
if (!string.IsNullOrEmpty(para.WorkShop.ToString()))
{
strwhere += " and alls.[area_code] = '" + Convert.ToString(para.WorkShop) + "'";
}
//if (!string.IsNullOrEmpty(para.status.ToString()))
//{
// strwhere += " AND qcv.[visit_type] = '" + Convert.ToString(para.status) + "'";
//}
if (!string.IsNullOrEmpty(para.WorkOrder.ToString()))
{
strwhere += " AND alls.schedule_nbr = '" + Convert.ToString(para.WorkOrder) + "'";
}
string sql = @"select distinct alls.serial_nbr,alls.sale_order,alls.schedule_nbr,alls.dqstatus,alls.final_grade
,code.process_code_desc,defecttype.defect_type_name,defectposition.defect_position
,remark.remark,accord.according_std
,hold.serial_status hstatus,hold.hperson,hold.htime
,qcv.serial_status rstatus,qcv.operator rperson,pend.rtime
from ( select a.serial_nbr,b.sale_order,a.schedule_nbr,c.serial_status dqstatus,c.final_grade,a.create_date,b.area_code
FROM [mes_main].[dbo].[qc_visit] a
left join mes_main.dbo.wo_mfg b
on a.schedule_nbr = b.workorder
left join mes_main.dbo.assembly_status c
on a.serial_nbr = c.serial_nbr
where a.wks_id = 'QC') alls
left join ( select aa.serial_nbr, process_code_desc = (stuff((select ',' + bb.process_code_desc from (select p.serial_nbr,p.process_code_desc from
mes_main.dbo.defects p
where 1 = 1 and p.wks_id = 'QC'
group by p.serial_nbr,p.process_code_desc ) bb where bb.serial_nbr =
aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.process_code_desc from
mes_main.dbo.defects p
where 1 = 1 and p.wks_id = 'QC'
group by p.serial_nbr,p.process_code_desc ) aa
where aa.serial_nbr != ''
group by aa.serial_nbr ) code
on alls.serial_nbr = code.serial_nbr
left join ( select aa.serial_nbr, defect_type_name = (stuff((select ',' + bb.defect_type_name from (select p.serial_nbr,d.defect_type_name from
mes_main.dbo.defects p
left join mes_main.dbo.config_defect_type d
on p.defect_type_id = d.defect_type_id
where 1 = 1 and p.wks_id = 'QC'
group by p.serial_nbr,d.defect_type_name ) bb where bb.serial_nbr =
aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,d.defect_type_name from
mes_main.dbo.defects p
left join mes_main.dbo.config_defect_type d
on p.defect_type_id = d.defect_type_id
where 1 = 1 and p.wks_id = 'QC'
group by p.serial_nbr,d.defect_type_name ) aa
where aa.serial_nbr != ''
group by aa.serial_nbr ) defecttype
on alls.serial_nbr = defecttype.serial_nbr
left join (select aa.serial_nbr, defect_position = (stuff((select ',' + bb.defect_position from (select p.serial_nbr,p.defect_position from
mes_main.dbo.defects p
where 1 = 1 and p.wks_id = 'QC'
group by p.serial_nbr,p.defect_position ) bb where bb.serial_nbr =
aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.defect_position from
mes_main.dbo.defects p
where 1 = 1 and p.wks_id = 'QC'
group by p.serial_nbr,p.defect_position ) aa
where aa.serial_nbr != ''
group by aa.serial_nbr ) defectposition
on alls.serial_nbr = defectposition.serial_nbr
left join (select aa.serial_nbr, remark = (stuff((select ',' + bb.remark from (select p.serial_nbr,p.remark from
mes_main.dbo.defects p
where 1 = 1 and p.wks_id = 'QC'
group by p.serial_nbr,p.remark ) bb where bb.serial_nbr =
aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.remark from
mes_main.dbo.defects p
where 1 = 1 and p.wks_id = 'QC'
group by p.serial_nbr,p.remark ) aa
where aa.serial_nbr != ''
group by aa.serial_nbr ) remark
on alls.serial_nbr = remark.serial_nbr
left join ( select aa.serial_nbr, according_std = (stuff((select ',' + bb.according_std from (select p.serial_nbr,p.according_std from
mes_main.dbo.defects p
where 1 = 1 and p.wks_id = 'QC'
group by p.serial_nbr,p.according_std ) bb where bb.serial_nbr =
aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.according_std from
mes_main.dbo.defects p
where 1 = 1 and p.wks_id = 'QC'
group by p.serial_nbr,p.according_std ) aa
where aa.serial_nbr != ''
group by aa.serial_nbr ) accord
on alls.serial_nbr = accord.serial_nbr
left join (select a.serial_nbr,a.create_date htime,a.serial_status,a.operator hperson
FROM [mes_main].[dbo].[qc_visit] a
where a.wks_id = 'QC' and a.visit_type = 'H') hold
on alls.serial_nbr = hold.serial_nbr
left join ( select a.serial_nbr,max(a.create_date) rtime
FROM [mes_main].[dbo].[qc_visit] a
where a.wks_id = 'QC' and a.visit_type in ('PENDING','RL','RW','S')
group by a.serial_nbr) pend
on alls.serial_nbr = pend.serial_nbr
left join mes_main.dbo.qc_visit qcv
on pend.serial_nbr = qcv.serial_nbr and pend.rtime = qcv.create_date
where 1 = 1 " + strwhere;
// if (!string.IsNullOrEmpty(para.begintime.ToString()))
//{
// sql += "and qcv.create_date >= '" + Convert.ToString(para.begintime) + "'";
// sql += "and qcv.create_date <= '" + Convert.ToString(para.endtime) + "'";
//}
//sql += String.IsNullOrEmpty(para.serialno.ToString()) ? "" : " and qcv.[serial_nbr] LIKE '" + Convert.ToString(para.serialno) + "%'";
//sql += String.IsNullOrEmpty(para.workshop.ToString()) ? "" : " AND wo.[area_code] = '" + Convert.ToString(para.workshop) + "' ";
//sql += String.IsNullOrEmpty(para.status.ToString()) ? "" : " AND qcv.[visit_type] = '" + Convert.ToString(para.status) + "'";
//sql += String.IsNullOrEmpty(para.workorder.ToString()) ? "" : " AND qcv.schedule_nbr = '" + Convert.ToString(para.workorder) + "'";
var res = context.DynamicListFromSql(sql, null);
return res.ToList();
}
}
public List<dynamic> QueryStatus()
{
using (var context = new mesModel())
{
string sql = @"select * from [mes_main].[dbo].[df_wks_visit_type] vt
where vt.visit_type in ('M','H','RL','S')";
var res = context.DynamicListFromSql(sql, null);
return res.ToList();
}
}
// public DataTable ExportExcel()
// {
// using (var context = new mesModel())
// {
// string sql = @"SELECT TOP 1000 *
//FROM[mes_main].[dbo].[assembly_basis]";
// var res = context.DynamicListFromSql(sql, null);
// return res();
// }
// }
}
}