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 成员方法 } }