using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ApServerProvider;
using System.Data;
using System.Collections;
using DbCommon;
using Com.Estsh.MES.App;
using Estsh.Web.Util;
namespace Estsh.Core.Repositories
{
public class ProductionOrderPdlineEmergencyReleaseDal : BaseApp
{
public ProductionOrderPdlineEmergencyReleaseDal(RemotingProxy remotingProxy)
: base(remotingProxy)
{
}
///
/// 获取客户产线列表
///
///
public DataTable GetCustPDLine()
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT cust_pdline_name as [value], ");
SqlStringBuilder.Append("cust_pdline_name + ' : ' + cust_pdline_desc as [key] ");
SqlStringBuilder.Append("FROM dbo.sys_cust_pdline ");
SqlStringBuilder.Append("WHERE enabled = 'Y' ");
SqlStringBuilder.Append("ORDER BY cust_pdline_name ");
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString());
}
}
///
/// 根据客户产线查询车型
///
///
public DataTable GetMode_type(string CustPDLine)
{
lock (_remotingProxy)
{
string sql = "select type_id as [value], type_name as [key] from dbo.sys_model_type WHERE enabled='Y' and cust_pdline_id= (select cust_pdline_id from sys_cust_pdline where cust_pdline_name='" + CustPDLine + "')";
return _remotingProxy.GetDataTable(sql);
}
}
///
/// 产线
///
///
public DataTable GetPdline(string CustPDLine)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT a.pdline_id AS [value] , ");
SqlStringBuilder.Append(" a.pdline_name AS [key] ");
SqlStringBuilder.Append("FROM dbo.sys_pdline AS a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_pdline_relation AS b ON a.pdline_id = b.pdline_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_cust_pdline AS c ON b.cust_pdline_id = c.cust_pdline_id ");
SqlStringBuilder.Append("WHERE c.cust_pdline_name = @CustPDLine ");
Hashtable Params = new Hashtable(1);
Params.Add("@CustPDLine", CustPDLine);
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString(), Params);
}
}
///
/// 获取产线列表
///
///
public DataTable GetPdline()
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" SELECT pdline_id AS [value],pdline_name AS [key] FROM dbo.sys_pdline WHERE enabled='Y' ORDER BY pdline_id ");
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString());
}
}
///
/// 区段
///
///
public DataTable GetStage(string pdlineId)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT stage_id AS [value] , ");
SqlStringBuilder.Append(" stage_name AS [key] ");
SqlStringBuilder.Append("FROM dbo.sys_stage ");
SqlStringBuilder.Append("WHERE pdline_id = @pdlineId ");
Hashtable Params = new Hashtable(1);
Params.Add("@pdlineId", pdlineId);
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString(), Params);
}
}
///
/// 根据车型编号查询座椅配置
///
/// 车型编号
/// 配置
public DataTable GetModelList(int ModelType)
{
lock (_remotingProxy)
{
string SqlString = "SELECT model_id as [value],model_name as [key] FROM dbo.sys_model WHERE enabled='Y' and model_type_id=@type_id ORDER BY model_name";
Hashtable Params = new Hashtable(1);
Params.Add("@type_id", ModelType);
return _remotingProxy.GetDataTable(SqlString, Params);
}
}
///
/// 获取班次
///
///
public DataTable Getshift()
{
lock (_remotingProxy)
{
string SqlString = "SELECT shift_id as [value] ,shift_code as [key] from sys_shift ";
return _remotingProxy.GetDataTable(SqlString);
}
}
///
/// 获取生产类型
///
///
public DataTable GetProdType()
{
lock (_remotingProxy)
{
string SqlString = "select enum_value as [value] ,enum_desc as [key] from sys_enum where enum_type='sys_prod_type' AND enum_value in ('E','Z','Q') ORDER BY enum_id ";
return _remotingProxy.GetDataTable(SqlString);
}
}
///
/// 根据配置编号获取总成清单
///
/// 配置编号
/// 总成清单
public DataTable GetBomDetail(int modelID, string stageId)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" SELECT b.item_part_id , ");
SqlStringBuilder.Append(" c.part_no AS modelNo , ");
SqlStringBuilder.Append(" d.part_no , ");
SqlStringBuilder.Append(" d.part_spec, ");
SqlStringBuilder.Append(" e.enum_desc ");
SqlStringBuilder.Append(" FROM dbo.sys_bom a , ");
SqlStringBuilder.Append(" dbo.sys_bom_detail b , ");
SqlStringBuilder.Append(" dbo.sys_part c , ");
SqlStringBuilder.Append(" dbo.sys_part d, ");
SqlStringBuilder.Append(" dbo.sys_enum e, ");
SqlStringBuilder.Append(" dbo.g_stage_location f ");
SqlStringBuilder.Append(" WHERE a.bom_id = b.bom_id ");
SqlStringBuilder.Append(" AND a.bom_type = '物料' ");
SqlStringBuilder.Append(" AND a.part_id = c.part_id ");
SqlStringBuilder.Append(" AND b.item_part_id = d.part_id ");
SqlStringBuilder.Append(" AND c.model_id = @model_id ");
SqlStringBuilder.Append(" AND e.enum_value = d.part_location AND e.enum_type='sys_part_location' AND e.enabled='Y' ");
SqlStringBuilder.Append(" AND f.enum_id=e.enum_id AND f.stage_id=@stageId ");
SqlStringBuilder.Append(" ORDER BY c.part_no , ");
SqlStringBuilder.Append(" d.part_location ");
Hashtable Params = new Hashtable(2);
Params.Add("@model_id", modelID);
Params.Add("@stageId", stageId);
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString(), Params);
}
}
///
/// 根据配置编号获取总成清单
///
/// 配置编号
/// 总成清单
public DataTable GetBomDetailTable(int modelID)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT b.item_part_id,c.part_no AS modelNo, d.part_no , ");
SqlStringBuilder.Append(" d.part_spec ");
SqlStringBuilder.Append("FROM dbo.sys_bom a , ");
SqlStringBuilder.Append(" dbo.sys_bom_detail b , ");
SqlStringBuilder.Append(" dbo.sys_part c , ");
SqlStringBuilder.Append(" dbo.sys_part d ");
SqlStringBuilder.Append("WHERE a.bom_id = b.bom_id AND a.bom_type='物料'");
SqlStringBuilder.Append(" AND a.part_id = c.part_id ");
SqlStringBuilder.Append(" AND b.item_part_id = d.part_id ");
SqlStringBuilder.Append(" AND c.model_id = @model_id ORDER BY c.part_no, d.part_location");
Hashtable Params = new Hashtable(1);
Params.Add("@model_id", modelID);
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString(), Params);
}
}
///
/// 查询单据是否生成
///
///
///
public bool isExist(string order_no)
{
lock (_remotingProxy)
{
string strSql = "select top 1 1 from dbo.g_stock_order where order_no='" + order_no + "'";
DataTable dt = _remotingProxy.GetDataTable(strSql);
if (dt.Rows.Count == 0)
{
return false;
}
else
{
return true;
}
}
}
//加载单据编号
public string GetOrderNo(string stockOrder, string p)
{
lock (_remotingProxy)
{
Com.Estsh.MES.App.CommonListData comm = new Com.Estsh.MES.App.CommonListData(this._remotingProxy);
return comm.GetOrderNo(stockOrder, p);
}
}
//插入数据 g_stock_order
//int _orderStatus = 0;
public bool Insert_g_stock_order(int model_type_id, int model_id, string order_no, string cust_pdline, int shift_id, int qty, string type, string document_data, int stageId, int PdlineId)
{
lock (_remotingProxy)
{
Hashtable OrderValues = new Hashtable();
//if (orderPlanType == EOrderPlanType.ByModel)
//{
OrderValues.Add("model_type_id", model_type_id);
OrderValues.Add("model_id", model_id);
//}
//else
//{
//OrderValues.Add("model_type_id", 0);
//OrderValues.Add("model_id", 0);
//}
OrderValues.Add("order_no", order_no);
//OrderValues.Add("factory_id", _remotingProxy.OrgID);
OrderValues.Add("factory_id", 1001);
OrderValues.Add("cust_pdline", cust_pdline);
OrderValues.Add("shift_id", shift_id);
OrderValues.Add("qty", qty);
//生产类型
OrderValues.Add("type", type);
OrderValues.Add("document_data", document_data);
if (PdlineId == 100001)
{
if (stageId == 1001 || stageId == 1002)
{
OrderValues.Add("stage_id", 1002);
}
else if (stageId == 1008)
{
OrderValues.Add("stage_id", 1004);
}
else if (stageId == 1007)
{
OrderValues.Add("stage_id", 1003);
}
else
{
OrderValues.Add("stage_id", stageId);
}
}
if (PdlineId == 100002)
{
if (stageId == 1001 || stageId == 1002)
{
OrderValues.Add("stage_id", 1001);
}
else if (stageId == 1008)
{
OrderValues.Add("stage_id", 1004);
}
else if (stageId == 1007)
{
OrderValues.Add("stage_id", 1003);
}
else
{
OrderValues.Add("stage_id", stageId);
}
}
OrderValues.Add("appoint_pdline", PdlineId);
return _remotingProxy.Insert("dbo.g_stock_order", OrderValues);
}
}
//插入数据 g_stock_order_detail
public bool Insert_g_stock_order_detail(string order_no, string part_id)
{
lock (_remotingProxy)
{
Hashtable DetailValues = new Hashtable();
DetailValues.Clear();
DetailValues.Add("order_no", order_no);
DetailValues.Add("part_id", part_id);
return _remotingProxy.Insert("dbo.g_stock_order_detail", DetailValues);
}
}
///
/// 调用存储过程 dbo.sys_release_stock_order 释放生产指令
///
///
public string ReleaseStockOrder(string orderNo, int ruid, string stageId)
{
lock (_remotingProxy)
{
List Parameters = new List();
Parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@ruid", ruid));
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@order_no", orderNo));
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@stageId", stageId));
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@tres", 500));
Hashtable ht = _remotingProxy.ExecuteSotreProcedure("dbo.sys_release_Emergency_stock_order", Parameters);
if (!ht.ContainsKey("@tres"))
return string.Empty;
return ht["@tres"].ToString();
}
}
///
/// 导入生产指令
///
///
public string ReleaseStockOrderImport(string orderNo, string partNo, int shiftId, string documentData, int qty, string ProdType, string batchNumber, int userId)
{
lock (_remotingProxy)
{
List Parameters = new List();
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@order_no", orderNo));
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@partNo", partNo));
Parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@shiftId", shiftId));
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@documentData", documentData));
Parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@qty", qty));
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@woType", ProdType));
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@batchNumber", batchNumber));
Parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@userId", userId));
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@tres", 500));
Hashtable ht = _remotingProxy.ExecuteSotreProcedure("dbo.sys_release_stock_order_import", Parameters);
if (!ht.ContainsKey("@tres"))
return string.Empty;
return ht["@tres"].ToString();
}
}
///
/// 调用存储过程 dbo.sys_assign_stock_order 分配虚拟料架
///
///
public string AssignStockOrder(string custPDLine)
{
lock (_remotingProxy)
{
List Parameters = new List();
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@cust_pdline", custPDLine));
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@tres", 500));
Hashtable ht = _remotingProxy.ExecuteSotreProcedure("dbo.sys_assign_stock_order", Parameters);
if (!ht.ContainsKey("@tres"))
return string.Empty;
return ht["@tres"].ToString();
}
}
///
/// 获取要打印的条码数据(前排)
///
///
public DataTable GetSN(string orderNo)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT ");
SqlStringBuilder.Append(" a.serial_number , ");
SqlStringBuilder.Append(" a.create_ymd + ' ' + a.create_hms AS create_time , ");
SqlStringBuilder.Append(" RIGHT(b.order_no, 3) + '-' + RIGHT('00' + CONVERT(VARCHAR, b.slot_no), ");
SqlStringBuilder.Append(" 2) AS order_seq , ");
SqlStringBuilder.Append(" b.slot_no , ");
SqlStringBuilder.Append(" b.car_no , ");
SqlStringBuilder.Append(" c.part_no , ");
SqlStringBuilder.Append(" c.part_spec , ");
SqlStringBuilder.Append(" c.part_spec2 , ");
SqlStringBuilder.Append(" c.part_location , ");
SqlStringBuilder.Append(" c.cust_part_no , ");
SqlStringBuilder.Append(" e.model_code , ");
SqlStringBuilder.Append(" e.model_desc , ");
SqlStringBuilder.Append(" e.model_alias , ");
SqlStringBuilder.Append(" f.enum_desc , ");
SqlStringBuilder.Append(" g.csn , ");
SqlStringBuilder.Append(" g.prod_type ");
SqlStringBuilder.Append("FROM dbo.g_workorder_sn a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_workorder b ON a.workorder = b.ruid ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part c ON a.part_id = c.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part d ON b.part_id = d.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model e ON d.model_id = e.model_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_enum f ON c.part_location = f.enum_value ");
SqlStringBuilder.Append(" AND f.enum_type = 'sys_part_location' ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_sn_status g ON a.serial_number = g.serial_number ");
SqlStringBuilder.Append("WHERE a.printed = 0 ");
SqlStringBuilder.Append(" AND g.workorder='" + orderNo + "' and c.part_location in ('01','02') ");
SqlStringBuilder.Append("ORDER BY a.ruid ");
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString());
}
}
///
/// 更新条码的打印状态
///
/// 条码
/// 是否成功
//public bool UpdateSNPrintStatus(string serialNumber)
//{
// string SqlString = "update dbo.g_workorder_sn set printed=1,update_userid=@user_id,update_ymd=dbo.get_ymd(),update_hms=dbo.get_hms() where serial_number=@sn";
// Hashtable Params = new Hashtable(2);
// Params.Add("@user_id", _remotingProxy.UserID);
// Params.Add("@sn", serialNumber);
// return _remotingProxy.ExecuteNonQuery(SqlString, Params) == 1;
//}
///
/// 获取要打印的条码数据(后排)
///
///
public DataTable GetBackSN(string orderNo)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT a.serial_number , ");
SqlStringBuilder.Append(" a.create_ymd + ' ' + a.create_hms AS create_time , ");
SqlStringBuilder.Append(" RIGHT(b.order_no, 3) + '-' + RIGHT('00' + CONVERT(VARCHAR, b.slot_no), ");
SqlStringBuilder.Append(" 2) AS order_seq , ");
SqlStringBuilder.Append(" b.slot_no , ");
SqlStringBuilder.Append(" b.car_no , ");
SqlStringBuilder.Append(" c.part_no , ");
SqlStringBuilder.Append(" c.part_spec , ");
SqlStringBuilder.Append(" c.part_spec2 , ");
SqlStringBuilder.Append(" c.part_location , ");
SqlStringBuilder.Append(" c.cust_part_no , ");
SqlStringBuilder.Append(" e.model_code , ");
SqlStringBuilder.Append(" e.model_desc , ");
SqlStringBuilder.Append(" e.model_alias , ");
SqlStringBuilder.Append(" f.enum_desc , ");
SqlStringBuilder.Append(" g.csn , ");
SqlStringBuilder.Append(" g.prod_type , ");
SqlStringBuilder.Append(" h.qa_label_count, h.barcode_count ");
SqlStringBuilder.Append("FROM dbo.g_workorder_sn a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_workorder b ON a.workorder = b.ruid ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part c ON a.part_id = c.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part d ON b.part_id = d.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model e ON d.model_id = e.model_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_enum f ON c.part_location = f.enum_value ");
SqlStringBuilder.Append(" AND f.enum_type = 'sys_part_location' ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_sn_status g ON a.serial_number = g.serial_number ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model_prodinfo h ON e.model_id = h.model_id ");
SqlStringBuilder.Append("WHERE a.printed = 0 ");
SqlStringBuilder.Append(" AND g.workorder = @order_no ");
SqlStringBuilder.Append(" AND c.part_location NOT IN ( '01', '02' ) ");
SqlStringBuilder.Append("ORDER BY c.part_location, a.ruid ");
Hashtable Params = new Hashtable(1);
Params.Add("@order_no", orderNo);
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString(), Params);
}
}
///
/// 初始化全局的静态变量
///
///
public string TrayPagePrintCount(string param)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT param_value FROM sys_base WHERE param_name='" + param + "' ");
DataTable dt = _remotingProxy.GetDataTable(SqlStringBuilder.ToString());
if (dt.Rows.Count == 0)
{
return "系统参数表(SYS_BASE)中未定义 参数" + param;
}
else
{
return dt.Rows[0]["param_value"].ToString();
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//条码补打
///
/// 获取补打信息
///
/// 过程条码 OR 合格证条码
///
public DataTable GetReprintDataBySN(string type, string serialNumber, int count, bool isOrderByInLineTime)
{
lock (_remotingProxy)
{
if (type == "1")
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT f.car_no , ");
SqlStringBuilder.Append(" a.serial_number , ");
SqlStringBuilder.Append(" a.create_ymd , ");
SqlStringBuilder.Append(" a.create_hms , ");
SqlStringBuilder.Append(" c.type , ");
SqlStringBuilder.Append(" d.part_no , ");
SqlStringBuilder.Append(" d.part_spec , ");
SqlStringBuilder.Append(" d.part_location , ");
SqlStringBuilder.Append(" e.model_code , ");
SqlStringBuilder.Append(" e.model_type , ");
SqlStringBuilder.Append(" a.printed , ");
SqlStringBuilder.Append(" a.reprint_count ");
SqlStringBuilder.Append("FROM g_workorder_sn a , ");
SqlStringBuilder.Append(" g_workorder_detail b , ");
SqlStringBuilder.Append(" g_workorder c , ");
SqlStringBuilder.Append(" sys_part d , ");
SqlStringBuilder.Append(" sys_model e , ");
SqlStringBuilder.Append(" g_sn_status f ");
SqlStringBuilder.Append("WHERE a.wo_detail_id = b.ruid ");
SqlStringBuilder.Append(" AND b.workorder_id = c.ruid ");
SqlStringBuilder.Append(" AND a.part_id = d.part_id ");
SqlStringBuilder.Append(" AND d.model_id = e.model_id ");
SqlStringBuilder.Append(" AND a.serial_number = f.serial_number AND d.part_location in ('01','02') AND f.current_status=0 ");
SqlStringBuilder.Append(" AND ( a.serial_number = '" + serialNumber + "' ");
SqlStringBuilder.Append(" OR f.csn = '" + serialNumber + "' ");
SqlStringBuilder.Append(" ) ");
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString());
}
else
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP ");
SqlStringBuilder.Append(count);
SqlStringBuilder.Append(" f.car_no, ");
SqlStringBuilder.Append(" a.serial_number , ");
SqlStringBuilder.Append(" a.create_ymd , ");
SqlStringBuilder.Append(" a.create_hms , ");
SqlStringBuilder.Append(" c.type , ");
SqlStringBuilder.Append(" d.part_no , ");
SqlStringBuilder.Append(" d.part_spec , ");
SqlStringBuilder.Append(" d.part_location , ");
SqlStringBuilder.Append(" e.model_code , ");
SqlStringBuilder.Append(" e.model_type , ");
SqlStringBuilder.Append(" a.printed , ");
SqlStringBuilder.Append(" a.reprint_count ");
SqlStringBuilder.Append("FROM g_workorder_sn a , ");
SqlStringBuilder.Append(" g_workorder_detail b , ");
SqlStringBuilder.Append(" g_workorder c , ");
SqlStringBuilder.Append(" sys_part d , ");
SqlStringBuilder.Append(" sys_model e , ");
SqlStringBuilder.Append(" g_sn_status f ");
SqlStringBuilder.Append("WHERE a.wo_detail_id = b.ruid ");
SqlStringBuilder.Append(" AND b.workorder_id = c.ruid ");
SqlStringBuilder.Append(" AND a.part_id = d.part_id ");
SqlStringBuilder.Append(" AND d.model_id = e.model_id ");
SqlStringBuilder.Append(" AND a.printed = 1 AND a.serial_number=f.serial_number AND f.current_status=0 ");
SqlStringBuilder.Append(" AND d.part_location IN ('01','02') ");
// 补打过程条码、后排合格证按照上线时间降序
if (isOrderByInLineTime)
{
SqlStringBuilder.Append("ORDER BY f.in_pdline_time DESC ");
}
else // 补打前排合格证按照下线时间降序
{
SqlStringBuilder.Append("ORDER BY f.out_pdline_time DESC ");
}
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString());
}
}
}
///
/// 更新条码的补打状态
///
/// 条码
/// 是否更新成功
public bool UpdateSNReprintStatus(string serialNumber)
{
lock (_remotingProxy)
{
string SqlString = "update g_workorder_sn set reprint_count=reprint_count+1 where serial_number=@sn";
Hashtable Params = new Hashtable(1);
Params.Add("@sn", serialNumber);
return _remotingProxy.ExecuteNonQuery(SqlString, Params) == 1;
}
}
//打印过程条码
///
/// 获取要 打印过程条码 信息
///
///
//public void PrintSerialNumber(string serialNumber)
public DataTable PrintSerialNumber(string serialNumber)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 1 ");
SqlStringBuilder.Append(" a.serial_number , ");
SqlStringBuilder.Append(" a.create_ymd + ' ' + a.create_hms AS create_time , ");
SqlStringBuilder.Append(" RIGHT(b.order_no, 3) + '-' + RIGHT('00' + CONVERT(VARCHAR, b.slot_no), ");
SqlStringBuilder.Append(" 2) AS order_seq , ");
SqlStringBuilder.Append(" b.slot_no , ");
SqlStringBuilder.Append(" b.car_no , ");
SqlStringBuilder.Append(" c.part_no , ");
SqlStringBuilder.Append(" c.part_spec , ");
SqlStringBuilder.Append(" c.part_spec2 , ");
SqlStringBuilder.Append(" c.part_location , ");
SqlStringBuilder.Append(" c.cust_part_no , ");
SqlStringBuilder.Append(" e.model_code , ");
SqlStringBuilder.Append(" e.model_desc , ");
SqlStringBuilder.Append(" e.model_alias , ");
SqlStringBuilder.Append(" f.enum_desc , ");
SqlStringBuilder.Append(" g.csn , ");
SqlStringBuilder.Append(" g.prod_type ");
SqlStringBuilder.Append("FROM dbo.g_workorder_sn a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_workorder b ON a.workorder = b.ruid ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part c ON a.part_id = c.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part d ON b.part_id = d.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model e ON d.model_id = e.model_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_enum f ON c.part_location = f.enum_value ");
SqlStringBuilder.Append(" AND f.enum_type = 'sys_part_location' ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_sn_status g ON a.serial_number = g.serial_number ");
SqlStringBuilder.Append("WHERE a.serial_number = @sn ");
Hashtable Params = new Hashtable(1);
Params.Add("@sn", serialNumber);
DataTable dt = _remotingProxy.GetDataTable(SqlStringBuilder.ToString(), Params);
return dt;
}
}
///
/// 根据配置编号获取过程条码打印的张数
///
public int GetModelBarcodeCount(string serialNumber)
{
lock (_remotingProxy)
{
string SqlString = "SELECT barcode_count FROM dbo.sys_model_prodinfo WHERE model_id=(select model_id from dbo.g_sn_status where serial_number=@serial_number)";
Hashtable Params = new Hashtable(1);
Params.Add("@serial_number", serialNumber);
object obj = _remotingProxy.GetScalar(SqlString, Params);
return obj == null ? 1 : Convert.ToInt32(obj);
}
}
///
/// 更新条码的打印状态
///
/// 条码
/// 是否成功
public bool UpdateSNPrintStatus(string serialNumber)
{
lock (_remotingProxy)
{
string SqlString = "update dbo.g_workorder_sn set printed=1,update_userid=@user_id,update_ymd=dbo.get_ymd(),update_hms=dbo.get_hms() where serial_number=@sn";
Hashtable Params = new Hashtable(2);
Params.Add("@user_id", _remotingProxy.UserID);
Params.Add("@sn", serialNumber);
return _remotingProxy.ExecuteNonQuery(SqlString, Params) == 1;
}
}
//打印合格证
///
/// 根据配置编号获取合格证条码打印的张数
///
public int GetModelQACount(string serialNumber)
{
lock (_remotingProxy)
{
string SqlString = "SELECT qa_label_count FROM dbo.sys_model_prodinfo WHERE model_id=(select model_id from dbo.g_sn_status where serial_number=@serial_number)";
Hashtable Params = new Hashtable(1);
Params.Add("@serial_number", serialNumber);
object obj = _remotingProxy.GetScalar(SqlString, Params);
return obj == null ? 1 : Convert.ToInt32(obj);
}
}
///
/// 根据配置编号获取合格证条码打印的张数
///
public int getPartId(string partNo)
{
lock (_remotingProxy)
{
string SqlString = " SELECT * FROM dbo.sys_part WHERE part_no=@partNo ";
Hashtable Params = new Hashtable(1);
Params.Add("@partNo", partNo);
object obj = _remotingProxy.GetScalar(SqlString, Params);
return obj == null ? 0 : Convert.ToInt32(obj);
}
}
//打印后排的的合格证条码
///
/// 根据条码获取对应后排条码的打印信息
///
/// 条码
/// 后排条码的打印信息
public DataTable GetBackSNs(string serialNumber)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT top 1 a.serial_number , ");
SqlStringBuilder.Append(" a.create_ymd + ' ' + a.create_hms AS create_time , ");
SqlStringBuilder.Append(" RIGHT(b.order_no, 3) + '-' + RIGHT('00' + CONVERT(VARCHAR, b.slot_no), ");
SqlStringBuilder.Append(" 2) AS order_seq , ");
SqlStringBuilder.Append(" b.slot_no , ");
SqlStringBuilder.Append(" b.car_no , ");
SqlStringBuilder.Append(" c.part_no , ");
SqlStringBuilder.Append(" c.part_spec , ");
SqlStringBuilder.Append(" c.part_spec2 , ");
SqlStringBuilder.Append(" c.part_location , ");
SqlStringBuilder.Append(" c.cust_part_no , ");
SqlStringBuilder.Append(" e.model_code , ");
SqlStringBuilder.Append(" e.model_desc , ");
SqlStringBuilder.Append(" e.model_alias , ");
SqlStringBuilder.Append(" f.enum_desc , ");
SqlStringBuilder.Append(" g.csn , ");
SqlStringBuilder.Append(" g.prod_type ");
SqlStringBuilder.Append("FROM dbo.g_workorder_sn a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_workorder b ON a.workorder = b.ruid ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part c ON a.part_id = c.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part d ON b.part_id = d.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model e ON d.model_id = e.model_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_enum f ON c.part_location = f.enum_value ");
SqlStringBuilder.Append(" AND f.enum_type = 'sys_part_location' ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_sn_status g ON a.serial_number = g.serial_number ");
SqlStringBuilder.Append("WHERE a.printed = 0 ");
SqlStringBuilder.Append(" AND b.ruid = ( SELECT workorder ");
SqlStringBuilder.Append(" FROM dbo.g_workorder_sn ");
SqlStringBuilder.Append(" WHERE serial_number = @serial_number ");
SqlStringBuilder.Append(" ) ");
SqlStringBuilder.Append(" AND c.part_location NOT IN ('01','02') ");
SqlStringBuilder.Append("ORDER BY a.ruid ");
Hashtable Params = new Hashtable(1);
Params.Add("@serial_number", serialNumber);
DataTable dt = _remotingProxy.GetDataTable(SqlStringBuilder.ToString(), Params);
return dt;
}
}
///
/// 根据零件号
///
/// 零件号 或 客户零件号
/// 零件编号
public int GetPartID(string partNO)
{
lock (_remotingProxy)
{
string SqlString =
"SELECT model_id FROM dbo.sys_part WHERE part_no=@part_no AND enabled='Y' AND part_type=2";
Hashtable Params = new Hashtable(1);
Params.Add("@part_no", partNO);
object obj = _remotingProxy.GetScalar(SqlString, Params);
return obj == null ? 0 : Convert.ToInt32(obj);
}
}
/////
///// 查询配置名称
/////
/////
/////
//public int GetModelName(string model_name)
//{
// lock (_remotingProxy)
// {
// string SqlString =
// "SELECT TOP 1 model_id FROM dbo.sys_model WHERE model_name=@model_name AND enabled='Y'";
// Hashtable Params = new Hashtable(1);
// Params.Add("@model_name", model_name);
// object obj = _remotingProxy.GetScalar(SqlString, Params);
// return obj == null ? 0 : Convert.ToInt32(obj);
// }
//}
///
///查询客户产线
///
/// 零件号 或 客户零件号
/// 零件编号
public string GetCustPdline(string custPdline)
{
lock (_remotingProxy)
{
string SqlString =
"SELECT TOP 1 cust_pdline_name FROM dbo.sys_cust_pdline WHERE cust_pdline_id=@custPdline AND enabled='Y'";
Hashtable Params = new Hashtable(1);
Params.Add("@custPdline", custPdline);
object obj = _remotingProxy.GetScalar(SqlString, Params);
return obj == null ? "" : obj.ToString();
}
}
///
///查询班次
///
/// 零件号 或 客户零件号
/// 零件编号
public int GetShiftId(string shiftName)
{
lock (_remotingProxy)
{
string SqlString =
"SELECT TOP 1 shift_id FROM dbo.sys_shift WHERE shift_code=@shiftName AND enabled='Y'";
Hashtable Params = new Hashtable(1);
Params.Add("@shiftName", shiftName);
object obj = _remotingProxy.GetScalar(SqlString, Params);
return obj == null ? 0 : Convert.ToInt32(obj);
}
}
///
///生产类型查询
///
///
///
public int GetProdTypeId(string ProdTypeName)
{
lock (_remotingProxy)
{
string SqlString =
"SELECT TOP 1 enum_id FROM dbo.sys_enum WHERE enum_type='sys_prod_type' AND enum_value=@ProdTypeName";
Hashtable Params = new Hashtable(1);
Params.Add("@ProdTypeName", ProdTypeName);
object obj = _remotingProxy.GetScalar(SqlString, Params);
return obj == null ? 0 : Convert.ToInt32(obj);
}
}
///
///生产类型查询
///
///
///
public int GetCustPdlinePart(string partNo, string cust_pdline)
{
lock (_remotingProxy)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("SELECT TOP 1 1 FROM dbo.sys_part AS a ");
querySen.AppendLine("LEFT JOIN dbo.sys_model AS b ON a.model_id=b.model_id ");
querySen.AppendLine("LEFT JOIN dbo.sys_model_type AS c ON b.model_type_id=c.type_id ");
querySen.AppendLine("LEFT JOIN dbo.sys_cust_pdline AS d ON c.cust_pdline_id=d.cust_pdline_id ");
querySen.AppendLine(" WHERE part_no=@partNo AND c.cust_pdline_id=@cust_pdline ");
Hashtable Params = new Hashtable(2);
Params.Add("@partNo", partNo);
Params.Add("@cust_pdline", cust_pdline);
object obj = _remotingProxy.GetScalar(querySen.ToString(), Params);
return obj == null ? 0 : Convert.ToInt32(obj);
}
}
///
///查询数据是否已经导入
///
///
///
public int GetOrderNo(string partNo, string cust_pdline, string orderData, string batchNumber, string shiftName, string ProdType)
{
lock (_remotingProxy)
{
string SqlString =
"SELECT TOP 1 1 FROM dbo.g_stock_order WHERE shift_id=@shiftName AND model_id=@partNo AND type=@ProdType AND batch_number=@batchNumber AND cust_pdline=@cust_pdline AND document_data=@orderData";
Hashtable Params = new Hashtable(1);
Params.Add("@partNo", partNo);
Params.Add("@cust_pdline", cust_pdline);
Params.Add("@orderData", orderData);
Params.Add("@batchNumber", batchNumber);
Params.Add("@shiftName", shiftName);
Params.Add("@ProdType", ProdType);
object obj = _remotingProxy.GetScalar(SqlString, Params);
return obj == null ? 0 : Convert.ToInt32(obj);
}
}
///
/// 根据分页条件获取分页数据列表
///
public Hashtable getProductionOrderListByPage(int PageSize, int PageIndex, string stageId, string cbZDPdline)
{
lock (_remotingProxy)
{
Hashtable result = new Hashtable();
List parameters = new List();
if (stageId == "1007")
{
stageId = "1003";
}
if (stageId == "1008")
{
stageId = "1004";
}
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalCount", 100));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalPage", 100));
StringBuilder sb = new StringBuilder();
sb.Append(" dbo.g_workorder_detail(NOLOCK) AS a");
sb.Append(" LEFT JOIN dbo.g_workorder(NOLOCK) AS d ON a.workorder_id=d.ruid LEFT JOIN dbo.sys_part(NOLOCK) AS e ON d.part_id=e.part_id");
sb.Append(" LEFT JOIN dbo.g_workorder_sn(NOLOCK) AS f ON a.ruid=f.wo_detail_id");
sb.Append(" LEFT JOIN dbo.g_sn_status(NOLOCK) AS g ON f.serial_number=g.serial_number");
sb.Append(" LEFT JOIN dbo.g_workorder(NOLOCK) AS w ON w.ruid = a.workorder_id");
sb.Append(" LEFT JOIN dbo.g_pdline_relation(NOLOCK) AS r ON r.pdline_id = w.pdline_id");
sb.Append(" LEFT JOIN dbo.sys_cust_pdline(NOLOCK) AS p ON p.cust_pdline_id = r.cust_pdline_id");
sb.Append(" LEFT JOIN dbo.sys_part(NOLOCK) AS b ON a.part_id = b.part_id ");
sb.Append(" LEFT JOIN dbo.g_workorder_seq(NOLOCK) AS c ON a.ruid = c.workorder_id ");
sb.Append(" LEFT JOIN dbo.sys_enum(NOLOCK) AS i ON i.enum_value = b.part_location ");
sb.Append(" AND i.enum_type = 'sys_part_location' ");
sb.Append(" AND i.enabled = 'Y' ");
sb.Append(" LEFT JOIN dbo.g_stage_location(NOLOCK) AS h ON h.enum_id = i.enum_id ");
sb.Append(" LEFT JOIN dbo.g_stock_order(NOLOCK) AS gso ON g.workorder=gso.order_no ");
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Table", sb.ToString()));
StringBuilder sbColumn = new StringBuilder();
sbColumn.Append(" ROW_NUMBER() OVER ( ORDER BY c.seq ) AS a ,");
sbColumn.Append(" a.ruid ,");
sbColumn.Append(" c.seq ,");
sbColumn.Append(" a.workorder_id ,");
sbColumn.Append(" e.part_no AS modelNo,");
sbColumn.Append(" b.part_no ,");
sbColumn.Append(" b.part_spec ,");
sbColumn.Append(" p.cust_pdline_desc ,");
sbColumn.Append(" a.type ,");
sbColumn.Append(" a.create_ymd ,");
sbColumn.Append(" a.create_hms ,");
sbColumn.Append(" g.serial_number ,");
sbColumn.Append(" w.car_no,");
sbColumn.Append(" gso.edi_id,");
sbColumn.Append(" g.work_flag");
String strWhere = " a.create_ymd>(SELECT CONVERT(VARCHAR(10), GETDATE()- 15, 120))";
strWhere += " AND a.enabled='Y'";
//strWhere += " AND c.seq > ( SELECT MAX(wo_detail_seq)";
//strWhere += " FROM dbo.sys_terminal(NOLOCK) AS a";
//strWhere += " LEFT JOIN dbo.sys_terminal_point(NOLOCK) AS b ON a.terminal_id = b.terminal_id";
//strWhere += " WHERE stage_id = " + stageId + ")";
//lvf 20210910 加入AND a.terminal_id NOT IN (100071,100072) 排除新增的预装工位
if (stageId.ToString() == "1002")
{
if (cbZDPdline.ToString() == "100001")
{
strWhere += " and gso.appoint_pdline=100001 and c.stage_id =1002 AND h.stage_id =1002 ";
strWhere += " AND c.seq > ( SELECT MAX(wo_detail_seq)";
strWhere += " FROM dbo.sys_terminal(NOLOCK) AS a";
strWhere += " LEFT JOIN dbo.sys_terminal_point(NOLOCK) AS b ON a.terminal_id = b.terminal_id";
strWhere += " WHERE stage_id = 1002 AND a.terminal_id NOT IN (100071,100072))";
}
if (cbZDPdline.ToString() == "100002")
{
strWhere += " and gso.appoint_pdline=100002 and c.stage_id =1001 AND h.stage_id =1001 ";
strWhere += " AND c.seq > ( SELECT MAX(wo_detail_seq)";
strWhere += " FROM dbo.sys_terminal(NOLOCK) AS a";
strWhere += " LEFT JOIN dbo.sys_terminal_point(NOLOCK) AS b ON a.terminal_id = b.terminal_id";
strWhere += " WHERE stage_id = 1001 AND a.terminal_id NOT IN (100071,100072))";
}
}
else if (stageId.ToString() == "1001")
{
if (cbZDPdline.ToString() == "100001")
{
strWhere += " and gso.appoint_pdline=100001 and c.stage_id =1002 AND h.stage_id =1002 ";
strWhere += " AND c.seq > ( SELECT MAX(wo_detail_seq)";
strWhere += " FROM dbo.sys_terminal(NOLOCK) AS a";
strWhere += " LEFT JOIN dbo.sys_terminal_point(NOLOCK) AS b ON a.terminal_id = b.terminal_id";
strWhere += " WHERE stage_id = 1002 AND a.terminal_id NOT IN (100071,100072))";
}
if (cbZDPdline.ToString() == "100002")
{
strWhere += " and gso.appoint_pdline=100002 and c.stage_id =1001 AND h.stage_id =1001 ";
strWhere += " AND c.seq > ( SELECT MAX(wo_detail_seq)";
strWhere += " FROM dbo.sys_terminal(NOLOCK) AS a";
strWhere += " LEFT JOIN dbo.sys_terminal_point(NOLOCK) AS b ON a.terminal_id = b.terminal_id";
strWhere += " WHERE stage_id = 1001 AND a.terminal_id NOT IN (100071,100072))";
}
}
else if ("1003|1007".Contains(stageId.ToString()))
{
strWhere += " and gso.appoint_pdline in (100002,100001) and c.stage_id =1003 AND h.stage_id =1003 ";
strWhere += " AND c.seq > ( SELECT MAX(wo_detail_seq)";
strWhere += " FROM dbo.sys_terminal(NOLOCK) AS a";
strWhere += " LEFT JOIN dbo.sys_terminal_point(NOLOCK) AS b ON a.terminal_id = b.terminal_id";
strWhere += " WHERE stage_id = 1003 AND a.terminal_id NOT IN (100071,100072))";
}
else if ("1004|1008".Contains(stageId.ToString()))
{
strWhere += " and gso.appoint_pdline in (100002,100001) and c.stage_id =1004 AND h.stage_id =1004 ";
strWhere += " AND c.seq > ( SELECT MAX(wo_detail_seq)";
strWhere += " FROM dbo.sys_terminal(NOLOCK) AS a";
strWhere += " LEFT JOIN dbo.sys_terminal_point(NOLOCK) AS b ON a.terminal_id = b.terminal_id";
strWhere += " WHERE stage_id = 1004 AND a.terminal_id NOT IN (100071,100072))";
}
string orderby = "c.seq";
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", sbColumn.ToString()));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", orderby.ToString()));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", ""));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", PageSize));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", PageIndex));
parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", strWhere));
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());
return result;
}
}
}
}