You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

252 lines
15 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Estsh.Web.Util;
using ApServerProvider;
using System.Collections;
using System.Data;
using DbCommon;
namespace Estsh.Core.Repositories
{
/***************************************************************************************************
*
* 作者:任华松
* 创建时间2013.07.08
* 描述产品下线未发运查询DAL层
* 修改日志:
*
*
* *************************************************************************************************/
public class YYReWorkQueryDal : BaseApp
{
public YYReWorkQueryDal(RemotingProxy remotingProxy)
: base(remotingProxy)
{
this.TABLE_NAME = "";
this.PK_NAME = "";
}
/// <summary>
/// 一次通过率
/// </summary>
/// <param name="aWhere"></param>
/// <returns></returns>
public DataTable YYReWorkData(string aWhere, Pager pager, ref int totalCount)
{
lock (_remotingProxy)
{
string where="";
where = aWhere.Replace("a.create_ymd+' '+a.create_hms", "a.out_process_time");
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("(SELECT bbb.type_name,bbb.model_name,bbb.stage_name,qty,cqty, SUBSTRING(CONVERT(VARCHAR(20), ROUND(qty/cast(cqty as decimal(10,2))*100,2)),0,6)+'%' AS per ");
SqlStringBuilder.Append(" FROM ");
SqlStringBuilder.Append("(SELECT type_name,model_name,stage_name,qty FROM ");
SqlStringBuilder.Append("(SELECT c.type_name,b.model_name,e.stage_name,COUNT(DISTINCT a.serial_number) qty ");
SqlStringBuilder.Append("FROM dbo.g_sn_travel(NOLOCK) a ");
SqlStringBuilder.Append("LEFT JOIN dbo.sys_model(NOLOCK) b ON a.model_id=b.model_id ");
SqlStringBuilder.Append("LEFT JOIN dbo.sys_model_type(NOLOCK) c ON c.type_id=b.model_type_id ");
SqlStringBuilder.Append("LEFT JOIN dbo.sys_terminal d ON a.terminal_id=d.terminal_id ");
SqlStringBuilder.Append("LEFT JOIN dbo.sys_stage(NOLOCK) e ON d.stage_id=e.stage_id ");
SqlStringBuilder.Append("WHERE a.work_flag=1 AND a.current_status=0 AND a.prod_type IN ('S','E','C') and a.terminal_id IN (100061,100065,100066) " + aWhere + " ");
SqlStringBuilder.Append("GROUP BY c.type_name,b.model_name,e.stage_name) aa)aaa ");
SqlStringBuilder.Append("LEFT JOIN ");
SqlStringBuilder.Append("(SELECT c.type_name,b.model_name,e.stage_name,COUNT(DISTINCT a.serial_number) cqty ");
SqlStringBuilder.Append("FROM dbo.g_sn_travel(NOLOCK) a ");
SqlStringBuilder.Append("LEFT JOIN dbo.sys_model(NOLOCK) b ON a.model_id=b.model_id ");
SqlStringBuilder.Append("LEFT JOIN dbo.sys_model_type(NOLOCK) c ON c.type_id=b.model_type_id ");
SqlStringBuilder.Append("LEFT JOIN dbo.sys_terminal d ON a.terminal_id=d.terminal_id ");
SqlStringBuilder.Append("LEFT JOIN dbo.sys_stage(NOLOCK) e ON d.stage_id=e.stage_id ");
SqlStringBuilder.Append("WHERE a.prod_type IN ('S','E','C') AND a.work_flag IN (0,1) AND c.type_name<>'' and a.terminal_id IN (100061,100065,100066) " + aWhere + " ");
SqlStringBuilder.Append("GROUP BY c.type_name,b.model_name,e.stage_name) bbb ");
SqlStringBuilder.Append("ON aaa.type_name=bbb.type_name AND bbb.model_name = aaa.model_name AND bbb.stage_name = aaa.stage_name) aaaa ");
Hashtable result = new Hashtable();
List<StoreProcedureParameter> parameters = new List<StoreProcedureParameter>();
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalCount", 100));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalPage", 100));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Table", SqlStringBuilder.ToString()));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", " * "));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", " type_name,model_name,stage_name "));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", " "));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", pager.pageSize));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", pager.pageNo));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", " 1=1 "));
Hashtable values = new Hashtable(2);
DataTable dt = new DataTable();
dt = _remotingProxy.ExecuteSotreProcedure("Com_Pagination", parameters, ref values);
ArrayList dataList = DataTypeConvert.NewObject.DataTableToArrayList(dt);
result.Add("dataList", dataList);
result.Add("totalCount", values["@TotalCount"].ToString());
totalCount = Convert.ToInt32(values["@TotalCount"]);
return dt;
}
}
/// <summary>
/// 不良率
/// </summary>
/// <param name="aWhere"></param>
/// <returns></returns>
public DataTable YYReWorkDataDeatil(string aWhere, Pager pager, ref int totalCount)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder();
SqlStringBuilder.Append("select * from (SELECT aa.type_name , aa.model_name ,aa.stage_name ,aa.defect_desc ,aa.item_defect_desc ,aa.ncqty ,aa.qty ,SUBSTRING(CONVERT(VARCHAR(20), ROUND(aa.ncqty / CAST(aa.qty AS DECIMAL(10, 2)) * 100, 2)),0, 6) + '%' AS per FROM (SELECT c.type_name , ");
SqlStringBuilder.Append(" b.model_name , ");
SqlStringBuilder.Append(" e.stage_name , ");
SqlStringBuilder.Append(" f.defect_desc , ");
SqlStringBuilder.Append(" g.item_defect_desc , ");
SqlStringBuilder.Append(" COUNT(a.serial_number) AS ncqty , ");
SqlStringBuilder.Append(" ( SELECT COUNT(a.serial_number) AS ncqty ");
SqlStringBuilder.Append(" FROM dbo.g_sn_defect (NOLOCK) a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_defect f ON a.defect_id = f.defect_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_defect_detail g ON a.item_defect_id = g.ruid ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_sn_status (NOLOCK) i ON a.serial_number = i.serial_number ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model (NOLOCK) b ON i.model_id = b.model_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model_type (NOLOCK) c ON c.type_id = b.model_type_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_terminal d ON a.terminal_id = d.terminal_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_stage (NOLOCK) e ON d.stage_id = e.stage_id ");
SqlStringBuilder.Append(" WHERE 1 = 1 ");
SqlStringBuilder.Append(" AND a.terminal_id NOT IN ( 100044, 100055, 100069 ) ");
SqlStringBuilder.Append(" " + aWhere + " ");
SqlStringBuilder.Append(" ) AS qty ");
SqlStringBuilder.Append(" FROM dbo.g_sn_defect (NOLOCK) a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_defect f ON a.defect_id = f.defect_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_defect_detail g ON a.item_defect_id = g.ruid ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_sn_status (NOLOCK) i ON a.serial_number = i.serial_number ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model (NOLOCK) b ON i.model_id = b.model_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model_type (NOLOCK) c ON c.type_id = b.model_type_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_terminal d ON a.terminal_id = d.terminal_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_stage (NOLOCK) e ON d.stage_id = e.stage_id ");
SqlStringBuilder.Append(" WHERE 1 = 1 ");
SqlStringBuilder.Append(" AND a.terminal_id NOT IN ( 100044, 100055, 100069 ) ");
SqlStringBuilder.Append(" "+aWhere+" ");
SqlStringBuilder.Append(" GROUP BY c.type_name , ");
SqlStringBuilder.Append(" b.model_name , ");
SqlStringBuilder.Append(" e.stage_name , ");
SqlStringBuilder.Append(" f.defect_desc , ");
SqlStringBuilder.Append(" g.item_defect_desc ) aa ) bb ");
Hashtable ht = new Hashtable();
DataTable dt = _remotingProxy.GetDataTable(SqlStringBuilder.ToString());
return dt;
//Hashtable result = new Hashtable();
//List<StoreProcedureParameter> parameters = new List<StoreProcedureParameter>();
//parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalCount", 100));
//parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalPage", 100));
//parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Table", SqlStringBuilder.ToString()));
//parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", " bb.* "));
//parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", " "));
//parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", ""));
//parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", pager.pageSize));
//parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", pager.pageNo));
//parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0));
//parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", ""));
//Hashtable values = new Hashtable(2);
//DataTable dt = new DataTable();
//dt = _remotingProxy.ExecuteSotreProcedure("Com_Pagination", parameters, ref values);
//ArrayList dataList = DataTypeConvert.NewObject.DataTableToArrayList(dt);
//result.Add("dataList", dataList);
//result.Add("totalCount", values["@TotalCount"].ToString());
//totalCount = Convert.ToInt32(values["@TotalCount"]);
//return dt;
}
}
/// <summary>
/// 区段集合
/// </summary>
/// <returns>数据集</returns>
public ArrayList GetStageName()
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("select stage_name as [value],stage_name as [key] from sys_stage where enabled='Y' ");
DataTable dt = _remotingProxy.GetDataTable(SqlStringBuilder.ToString());
return DataTypeConvert.NewObject.DataTableToArrayList(dt);
}
}
/// <summary>
/// 不良类型集合
/// </summary>
/// <returns>数据集</returns>
public ArrayList GetDefectName(string stageName)
{
lock (_remotingProxy)
{
string quernSen = "";
if (string.IsNullOrEmpty(stageName))
{
quernSen = @" SELECT defect_desc as [value],defect_desc as [key] FROM dbo.sys_defect WHERE enabled = 'Y' ";
}
else
{
quernSen = @" SELECT defect_desc as [value],defect_desc as [key] FROM dbo.sys_defect WHERE stage_id IN (SELECT stage_id FROM dbo.sys_stage WHERE stage_name='" + stageName + "' AND enabled='Y') AND enabled = 'Y' ";
}
DataTable dt = _remotingProxy.GetDataTable(quernSen);
return DataTypeConvert.NewObject.DataTableToArrayList(dt);
}
}
/// <summary>
///车型集合
/// </summary>
/// <returns>数据集</returns>
public ArrayList GetTypeName()
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("select type_name as [value],type_name as [key] from sys_model_type where enabled='Y' ");
DataTable dt = _remotingProxy.GetDataTable(SqlStringBuilder.ToString());
return DataTypeConvert.NewObject.DataTableToArrayList(dt);
}
}
/// <summary>
/// 配置集合
/// </summary>
/// <returns>数据集</returns>
public ArrayList GetModelList(string typeName)
{
lock (_remotingProxy)
{
string quernSen = "";
if (string.IsNullOrEmpty(typeName))
{
quernSen = @" SELECT model_name as [value],model_name as [key] FROM dbo.sys_model WHERE enabled = 'Y' ";
}
else
{
quernSen = @" SELECT model_name as [value],model_name as [key] FROM dbo.sys_model a JOIN dbo.sys_model_type b ON a.model_type_id = b.type_id WHERE a.enabled = 'Y' AND b.type_name = '" + typeName + "' ";
}
DataTable dt = _remotingProxy.GetDataTable(quernSen);
return DataTypeConvert.NewObject.DataTableToArrayList(dt);
}
}
}
}