using System;
using System.Data;
using System.Text;
using System.Collections.Generic;
using System.Data.SqlClient;
using ApServerProvider;
using DbCommon;
using System.Collections;
using Estsh.Web.Util;
/***************************************************************************************************
*
* 作者:黄飞
*
* *************************************************************************************************/
namespace Estsh.Core.Repositories
{
///
/// 处理菜单模块的业务数据
///
public class SupplierProductionPlanPrintDal : BaseApp
{
public SupplierProductionPlanPrintDal(RemotingProxy remotingProxy)
: base(remotingProxy)
{
}
#region 成员方法
///
/// 根据传入条件获得菜单列表数据
///
public DataTable getList(string strWhere, string filedOrder)
{
lock (_remotingProxy)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" select * from dbo.sys_part_cust_order ");
if (strWhere != null && !strWhere.Trim().Equals(""))
{
strSql.Append(" where " + strWhere);
}
if (filedOrder != null && !filedOrder.Trim().Equals(""))
{
strSql.Append(" order by " + filedOrder);
}
return this._remotingProxy.GetDataTable(strSql.ToString());
}
}
///
/// 根据分页条件获取分页数据列表
///
public Hashtable getListByPage(RemotingProxy.RecordStatus status, int PageSize, int PageIndex, string strWhere, string OrderBy)
{
lock (_remotingProxy)
{
Hashtable result = new Hashtable();
List parameters = new List();
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(" ( SELECT DISTINCT ");
sb.Append(" ruid , ");
sb.Append(" modelNo , ");
sb.Append(" value = ( STUFF(( SELECT ',' + part_no + '-' ");
sb.Append(" + enum_desc ");
sb.Append(" FROM ( SELECT a.ruid , ");
sb.Append(" d.part_no AS modelNo , ");
sb.Append(" c.part_no , ");
sb.Append(" e.document_data , ");
sb.Append(" f.enum_desc , ");
sb.Append(" g.shift_name , ");
sb.Append(" a.create_ymd + ' ' ");
sb.Append(" + a.create_hms AS dateTime ");
sb.Append(" FROM dbo.g_workorder AS a ");
sb.Append(" LEFT JOIN dbo.g_workorder_detail ");
sb.Append(" AS b ON a.ruid = b.workorder_id ");
sb.Append(" LEFT JOIN dbo.sys_part ");
sb.Append(" AS c ON b.part_id = c.part_id ");
sb.Append(" LEFT JOIN sys_part ");
sb.Append(" AS d ON d.part_id = a.part_id ");
sb.Append(" LEFT JOIN dbo.g_stock_order ");
sb.Append(" AS e ON a.order_no = e.order_no ");
sb.Append(" LEFT JOIN dbo.sys_enum ");
sb.Append(" AS f ON c.part_location = f.enum_value ");
sb.Append(" AND f.enum_type = 'sys_part_location' ");
sb.Append(" LEFT JOIN dbo.sys_shift ");
sb.Append(" AS g ON g.shift_id = e.shift_id ");
sb.Append(" WHERE b.enabled = 'Y' ");
sb.Append(" AND a.ruid > 954 ");
sb.Append(" ) AS a1 ");
sb.Append(" WHERE a1.ruid = a2.ruid ");
sb.Append(" FOR ");
sb.Append(" XML PATH('') ");
sb.Append(" ), 1, 1, '') ) , ");
sb.Append(" document_data , ");
sb.Append(" shift_name , ");
sb.Append(" dateTime ");
sb.Append(" FROM ( SELECT a.ruid , ");
sb.Append(" d.part_no AS modelNo , ");
sb.Append(" c.part_no , ");
sb.Append(" e.document_data , ");
sb.Append(" f.enum_desc , ");
sb.Append(" g.shift_name , ");
sb.Append(" a.create_ymd + ' ' + a.create_hms AS dateTime ");
sb.Append(" FROM dbo.g_workorder AS a ");
sb.Append(" LEFT JOIN dbo.g_workorder_detail AS b ON a.ruid = b.workorder_id ");
sb.Append(" LEFT JOIN dbo.sys_part AS c ON b.part_id = c.part_id ");
sb.Append(" LEFT JOIN sys_part AS d ON d.part_id = a.part_id ");
sb.Append(" LEFT JOIN dbo.g_stock_order AS e ON a.order_no = e.order_no ");
sb.Append(" LEFT JOIN dbo.sys_enum AS f ON c.part_location = f.enum_value ");
sb.Append(" AND f.enum_type = 'sys_part_location' ");
sb.Append(" LEFT JOIN dbo.sys_shift AS g ON g.shift_id = e.shift_id ");
sb.Append(" WHERE b.enabled = 'Y' ");
sb.Append(" AND a.ruid > 954 ");
sb.Append(" ) AS a2 ");
sb.Append(" ) AS A3 ");
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Table", sb.ToString()));
StringBuilder sbColumn = new StringBuilder(1024);
sbColumn.Append(" * ");
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", " * "));
parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", " ruid "));
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", " 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());
return result;
}
}
///
/// 获取客户产线列表
///
///
public DataTable GetCustPDLine()
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT cust_pdline_name as [value], ");
SqlStringBuilder.Append("cust_pdline_name 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 GetPrint(string strWhere, string cbCustPDLine, string pdLine, string txtCreateDate)
{
lock (_remotingProxy)
{
string sql = @" SELECT j.serial_number ,
SUBSTRING(j.serial_number, 3, 3) AS gc ,
SUBSTRING(j.serial_number, 19, 4) AS nob ,
j.create_ymd ,
h.type_name ,
g.model_name ,
d.part_class ,
d.part_no_3c ,
d.part_no ,
d.part_spec,k.document_data,m.shift_name
FROM dbo.g_workorder_detail a
LEFT JOIN dbo.g_workorder b ON a.workorder_id = b.ruid
LEFT JOIN dbo.g_workorder_sn c ON a.ruid = c.wo_detail_id
LEFT JOIN dbo.sys_part d ON a.part_id = d.part_id
LEFT JOIN dbo.sys_part f ON b.part_id = f.part_id
LEFT JOIN dbo.sys_model g ON f.model_id = g.model_id
LEFT JOIN dbo.sys_model_type h ON g.model_type_id = h.type_id
LEFT JOIN dbo.g_sn_status j ON j.serial_number = c.serial_number
LEFT JOIN dbo.g_stock_order k ON j.workorder=k.order_no
LEFT JOIN dbo.sys_shift m ON k.shift_id=m.shift_id" + strWhere;
return _remotingProxy.GetDataTable(sql);
}
}
public DataTable GetSummary(string txtCreateDate)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT SUBSTRING(j.serial_number, 19, 4) AS no , ");
SqlStringBuilder.Append(" h.type_name , ");
SqlStringBuilder.Append(" d.part_spec , ");
SqlStringBuilder.Append(" g.model_name , ");
SqlStringBuilder.Append(" d.part_no , ");
SqlStringBuilder.Append(" 1 AS qty , ");
SqlStringBuilder.Append(" SUBSTRING(j.serial_number, 3, 3) AS shiftCode , ");
SqlStringBuilder.Append(" j.create_ymd , k.document_data ");
SqlStringBuilder.Append("FROM dbo.g_workorder_detail a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_workorder b ON a.workorder_id = b.ruid ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_workorder_sn c ON a.ruid = c.wo_detail_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part d ON a.part_id = d.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part f ON b.part_id = f.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model g ON f.model_id = g.model_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model_type h ON g.model_type_id = h.type_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_sn_status j ON j.serial_number = c.serial_number ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_stock_order k ON j.workorder=k.order_no ");
SqlStringBuilder.Append("WHERE a.enabled = 'Y' ");
SqlStringBuilder.Append(" AND j.work_flag = -1 AND k.document_data ='" + txtCreateDate + "' ");
SqlStringBuilder.Append("ORDER BY shiftCode,a.ruid,a.create_ymd ");
return _remotingProxy.GetDataTable(SqlStringBuilder.ToString());
}
}
///
/// 插入菜单数据
///
///
///
public int saveAdjustOrder(Hashtable htParams)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO sys_part_cust_order (part_id ");
SqlStringBuilder.Append(" , cust_order ");
SqlStringBuilder.Append(" ,ship_unit) ");
SqlStringBuilder.Append(" VALUES(@part_id ");
SqlStringBuilder.Append(" , @cust_order ");
SqlStringBuilder.Append(" ,@ship_unit)");
return _remotingProxy.ExecuteNonQuery(SqlStringBuilder.ToString(), htParams);
}
}
///
/// 更新菜单数据
///
///
///
public int updateAdjustOrder(Hashtable htParams)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("update sys_part_cust_order ");
SqlStringBuilder.Append("SET cust_order=@cust_order ");
SqlStringBuilder.Append(" , ship_unit=@ship_unit ");
SqlStringBuilder.Append("WHERE part_id=@part_id ");
return _remotingProxy.ExecuteNonQuery(SqlStringBuilder.ToString(), htParams);
}
}
///
/// 删除菜单数据
///
///
///
public int deleteAdjustOrder(String part_id)
{
lock (_remotingProxy)
{
Hashtable htparams = new Hashtable();
htparams.Add("@part_id", part_id);
String delStr = "delete from sys_part_cust_order where part_id = @part_id";
return _remotingProxy.ExecuteNonQuery(delStr, htparams);
}
}
///
/// 上移
///
public bool upRow(int seq, int ruid, int up_ruid, int up_seq)
{
lock (_remotingProxy)
{
List SqlStrings = new List(3);
List Parameters = new List(3);
Hashtable Params = new Hashtable(4);
Params.Add("@seq", seq);
Params.Add("@ruid", ruid);
Params.Add("@up_ruid", up_ruid);
Params.Add("@up_seq", up_seq);
SqlStrings.Add("UPDATE dbo.g_workorder_detail SET seq=@up_seq WHERE ruid=@ruid");
Parameters.Add(Params);
SqlStrings.Add("UPDATE dbo.g_workorder_detail SET seq=@seq WHERE ruid=@up_ruid");
Parameters.Add(Params);
return _remotingProxy.ExecuteSqlTransaction(SqlStrings, Parameters);
}
}
///
/// 上移
///
public bool upAll(int ruid, int seq, int up_ruid, int up_seq)
{
lock (_remotingProxy)
{
List SqlStrings = new List(3);
List Parameters = new List(3);
Hashtable Params = new Hashtable(4);
Params.Add("@ruid", ruid);
Params.Add("@seq", seq);
Params.Add("@up_ruid", up_ruid);
Params.Add("@up_seq", up_seq);
SqlStrings.Add("UPDATE dbo.g_workorder_detail SET seq=@up_seq WHERE ruid=@ruid");
Parameters.Add(Params);
SqlStrings.Add("UPDATE dbo.g_workorder_detail SET seq=@seq WHERE ruid=@up_ruid");
Parameters.Add(Params);
return _remotingProxy.ExecuteSqlTransaction(SqlStrings, Parameters);
}
}
///
/// 向前调整
///
///
///
///
///
public bool adjustSeq(int addSeqNo, int SequenceNumber, string ruidList, string prodType)
{
lock (_remotingProxy)
{
// string sql = @"UPDATE dbo.g_workorder_detail
// SET seq = seq + " + addSeqNo + @"
// WHERE seq >= " + SequenceNumber + @"
// AND ruid NOT IN ( " + ruidList + " )";
string sql = @"UPDATE dbo.g_workorder_detail
SET seq = seq + " + addSeqNo + @"
WHERE type ='" + prodType + @"' AND ruid IN (
SELECT a.ruid
FROM dbo.g_workorder_detail a
LEFT JOIN dbo.g_workorder_sn b ON a.ruid = b.wo_detail_id
LEFT JOIN dbo.g_sn_status c ON b.serial_number = c.serial_number
WHERE c.work_flag < 0
AND a.seq >= " + SequenceNumber + @"
AND a.ruid NOT IN ( " + ruidList + " ) )";
return _remotingProxy.ExecuteNonQuery(sql) > 0;
}
}
public int maxSeq()
{
lock (_remotingProxy)
{
string sql = "SELECT MAX(seq) FROM dbo.g_workorder_detail";
object obj = _remotingProxy.GetScalar(sql);
return obj != null && obj != DBNull.Value ? Convert.ToInt32(obj) : 0;
}
}
///
/// 向后调整
///
///
///
///
///
public bool adjustSeq2(int addSeqNo, int SequenceNumber, string ruidList, string prodType)
{
lock (_remotingProxy)
{
// string sql = @"UPDATE dbo.g_workorder_detail
// SET seq = seq + " + addSeqNo + @"
// WHERE seq >= " + SequenceNumber + @"
// OR ruid IN ( " + ruidList + " )";
string sql = @"UPDATE dbo.g_workorder_detail
SET seq = seq + " + addSeqNo + @"
WHERE type ='" + prodType + @"' AND ruid IN (
SELECT a.ruid
FROM dbo.g_workorder_detail a
LEFT JOIN dbo.g_workorder_sn b ON a.ruid = b.wo_detail_id
LEFT JOIN dbo.g_sn_status c ON b.serial_number = c.serial_number
WHERE c.work_flag < 0
AND a.seq > " + SequenceNumber + @"
OR a.ruid IN ( " + ruidList + " ) )";
return _remotingProxy.ExecuteNonQuery(sql) > 0;
}
}
///
/// 获取上一条数据
///
///
///
public DataTable selectAll(string CustPDLine)
{
lock (_remotingProxy)
{
Hashtable htparams = new Hashtable();
StringBuilder sb = new StringBuilder();
sb.Append(" SELECT ROW_NUMBER() OVER ( ORDER BY a.seq ) AS a ,");
sb.Append(" a.ruid ,");
sb.Append(" a.seq ,");
sb.Append(" a.workorder_id ,");
sb.Append(" e.part_no AS modelNo ,");
sb.Append(" b.part_no ,");
sb.Append(" b.part_spec ,");
sb.Append(" p.cust_pdline_desc ,");
sb.Append(" a.type ,");
sb.Append(" a.create_ymd ,");
sb.Append(" a.create_hms ,");
sb.Append(" g.serial_number ,");
sb.Append(" w.car_no ,");
sb.Append(" g.work_flag");
sb.Append(" FROM dbo.g_workorder_detail AS a");
sb.Append(" LEFT JOIN dbo.g_workorder AS d ON a.workorder_id = d.ruid");
sb.Append(" LEFT JOIN dbo.sys_part AS e ON d.part_id = e.part_id");
sb.Append(" LEFT JOIN dbo.g_workorder_sn AS f ON a.ruid = f.wo_detail_id");
sb.Append(" LEFT JOIN dbo.g_sn_status AS g ON f.serial_number = g.serial_number");
sb.Append(" LEFT JOIN dbo.g_workorder AS w ON w.ruid = a.workorder_id");
sb.Append(" LEFT JOIN dbo.g_pdline_relation AS r ON r.pdline_id = w.pdline_id");
sb.Append(" LEFT JOIN dbo.sys_cust_pdline AS p ON p.cust_pdline_id = r.cust_pdline_id");
sb.Append(" LEFT JOIN dbo.sys_part AS b ON a.part_id = b.part_id ");
sb.Append(" WHERE p.cust_pdline_name='" + CustPDLine + "' and g.work_flag <0 and a.create_ymd>(SELECT CONVERT(VARCHAR(10), GETDATE()- 15, 120)) AND a.enabled='Y' ORDER BY a.seq ");
DataTable dt = _remotingProxy.GetDataTable(sb.ToString(), htparams);
return dt;
}
}
///
/// 获取下拉框菜单数据
///
///
public DataTable getSelectAdjustOrder()
{
lock (_remotingProxy)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select part_id as [value] ,part_no as [key] from sys_part where part_type = '1' ");
return _remotingProxy.GetDataTable(strSql.ToString());
}
}
public int deleteOrder(String guid, string prodType)
{
lock (_remotingProxy)
{
if (guid == null)
return 0;
//05,06座椅不打印条码,不显示生产队列,防止在统计产量时影响实际数据
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("UPDATE g_workorder_detail ");
SqlStringBuilder.Append("SET enabled = 'N' ");
SqlStringBuilder.Append("FROM g_workorder_detail a , ");
SqlStringBuilder.Append(" sys_part b ");
SqlStringBuilder.Append("WHERE a.part_id = b.part_id ");
SqlStringBuilder.Append(" AND b.part_location IN ( '04','07', '08' ) ");
SqlStringBuilder.Append(" AND a.enabled = 'Y' ");
SqlStringBuilder.Append("UPDATE dbo.g_workorder_detail SET enabled='N' WHERE type='" + prodType + "' AND ruid IN (" + guid + ") ");
return _remotingProxy.ExecuteNonQuery(SqlStringBuilder.ToString());
}
}
public string getPartLocation(string ruid)
{
lock (_remotingProxy)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT part_location ");
SqlStringBuilder.Append("FROM dbo.g_workorder_detail a ");
SqlStringBuilder.Append(" LEFT JOIN sys_part b ON a.part_id = b.part_id ");
SqlStringBuilder.Append("WHERE a.seq = " + ruid + " ");
return _remotingProxy.GetScalar(SqlStringBuilder.ToString()).ToString();
}
}
public int deleteOrderInfo(String seq, string custPdlineDesc, string partLocation, string prodType, string pdLine)
{
lock (_remotingProxy)
{
if (seq == null)
return 0;
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("UPDATE dbo.g_workorder_detail ");
SqlStringBuilder.Append("SET enabled = 'N' ");
SqlStringBuilder.Append("WHERE ruid IN ( ");
SqlStringBuilder.Append(" SELECT a.ruid ");
SqlStringBuilder.Append(" FROM dbo.g_workorder_detail a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_workorder b ON a.workorder_id = b.ruid ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_workorder_sn c ON a.ruid = c.wo_detail_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_pdline d ON b.pdline_id = d.pdline_id ");
SqlStringBuilder.Append(" LEFT JOIN sys_part e ON c.part_id = e.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_pdline_relation f ON d.pdline_id = f.pdline_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_cust_pdline g ON f.cust_pdline_id = g.cust_pdline_id ");
SqlStringBuilder.Append(" WHERE a.enabled = 'Y' ");
SqlStringBuilder.Append(" AND g.cust_pdline_name = @custPdlineDesc AND f.pdline_id=@pdLine ");
SqlStringBuilder.Append(" AND a.seq >= @seq AND a.type=@type ");
if (partLocation != "01" && partLocation != "02")
{
SqlStringBuilder.Append(" AND e.part_location NOT IN ( '01', '02' ) ");
}
else
{
SqlStringBuilder.Append(" AND e.part_location IN ( '01', '02' ) ");
}
SqlStringBuilder.Append(" ) ");
Hashtable ht = new Hashtable(2);
ht.Add("@seq", seq);
ht.Add("@custPdlineDesc", custPdlineDesc);
ht.Add("@type", prodType);
ht.Add("@pdLine", pdLine);
return _remotingProxy.ExecuteNonQuery(SqlStringBuilder.ToString(), ht);
}
}
#endregion 成员方法
}
}