using Epost.Common; using Epost.Model; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Epost.DAL { public class AddressstorageDAL { //DB db = new DB(); DataBaseOpration.OprationSqlDAL db = DB_DLL.GetInstance(); #region 查询设备所在区 public DataTable getBlock(string address,string type,string controlip) { string sql = ""; if (string.IsNullOrEmpty(type)) { sql = string.Format("select * from V_Address where address = '{0}' and ControlIP='{1}'", address, controlip); } else { sql = string.Format("select * from V_Address where type='{1}' and address = '{0}' and ControlIP='{2}'", address, type, controlip); } LogHelper.WriteLogInfo("查询设备所在区" + sql); return db.GetsqlForDT(sql); } #endregion #region 根据地址查询货位信息 public DataTable getLocationList(string address,string controlIP) { string sql = string.Format(" select * from addressstorage as addr left join controller as con on con.ID=addr.controlid where type=4 and address = '{0}' and ControlIP='{1}'", address, controlIP ); // LogHelper.WriteLogInfo("根据地址查询货位信息" + sql); return db.GetsqlForDT(sql); } #endregion #region 查询设备所在区 public DataTable getArea(string address, string ip) { string sql = string.Format("select * from v_address where address='{0}' and ControlIP='{1}'", address, ip); LogHelper.WriteLogInfo("查询扫描枪所在区:" + sql); DataTable dt = db.GetsqlForDT(sql); return dt; } #endregion #region 根据货位号查询标签地址 public DataTable getAddressList(string location) { string sql = string.Format(" select * from v_address where location = '{0}'", location ); // LogHelper.WriteLogInfo("根据货位号查询标签地址" + sql); return db.GetsqlForDT(sql); } #endregion #region 根据货位号查询标签地址 public DataTable getOrderAddress(string location) { string sql = string.Format(" select top 1 shopid, address, ControlIP,block,area from v_orders where tolocation = '{0}' ", location ); // LogHelper.WriteLogInfo("根据货位号查询标签地址" + sql); return db.GetsqlForDT(sql); } #endregion #region 根据地址、通道查询信息 public DataTable getAddressListByway(string location, string block, string area,string way) { string sql = string.Format(" select * from addressstorage where location = '{0}' and block='{1}' and area='{2}' and way='{3}'", location, block, area,way ); // LogHelper.WriteLogInfo("根据地址、通道查询信息:" + sql); return db.GetsqlForDT(sql); } #endregion #region 获取控制器列表 public DataTable getControlList() { string sql = string.Format("select * from Controller"); // LogHelper.WriteLogInfo("获取控制器列表" + sql); return db.GetsqlForDT(sql); } #endregion #region 获取所有地址列表 public DataTable getAddressList() { string sql = string.Format("select address,ControlIP,block,area,way,type,bkaddress,addresstype from V_address group by address,ControlIP,block,area,way,type,bkaddress,addresstype ORDER BY TYPE DESC"); // LogHelper.WriteLogInfo("获取控制器列表" + sql); return db.GetsqlForDT(sql); } #endregion #region 查询控制器下所有标签地址 public DataTable getLabelList(string controlid) { string sql = string.Format(" select distinct address, state, type, ControlID,addresstype from Addressstorage where type in (1, 2, 8) and Controlid = '{0}' ", controlid); DataTable dt = db.GetsqlForDT(sql); return dt; } #endregion #region 根据区域 查询显示箱号地址 public DataTable getAddressByBlock(string block) { string sql = string.Format("select * from V_Address where type = 2 and block = '{0}'", block); // LogHelper.WriteLogInfo("根据区域 查询显示箱号地址" + sql); return db.GetsqlForDT(sql); } #endregion #region 根据区域 查询显示箱号地址 public DataTable getAddressByBlock(string block, string area) { string sql = string.Format("select addr.*,con.ControlIP from addressstorage as addr left join controller as con on addr.controlid = con.id where block='{0}' and area='{1}' and type=2", block, area); // LogHelper.WriteLogInfo("根据区域 查询显示箱号地址" + sql); return db.GetsqlForDT(sql); } #endregion #region 根据区域 查询显示箱号地址 public DataTable GetBoxAddress(string block,string area,int type) { string strwhere = string.Empty; if (!string.IsNullOrEmpty(area)) { strwhere = " and area='"+area+"'"; } string sql = string.Format("select address,bkaddress,state,type,area,way,shelfid,ControlID,location,layer,slist,block,addresstype,ControlIP,ControlType,info from V_address where type='{1}' and block='{0}' " + strwhere, block, type); LogHelper.WriteLogInfo("根据区域 查询显示地址"+sql); return db.GetsqlForDT(sql); } #endregion #region 根据区域 查询显示箱号地址 public DataTable getAddresslist(string block, string area,string type) { string sql = string.Format(" select * from V_Address where location in (select min(location) from V_Address group by address) and block = '{0}' and area = '{1}' and type ='{2}'", block, area,type); // LogHelper.WriteLogInfo("根据区域 查询显示箱号地址" + sql); return db.GetsqlForDT(sql); } #endregion #region 根据区域 查询设备地址 public DataTable getAddresslistByBlock(string block, string area) { string sql = string.Format("select * from V_Address where block='{0}' and area='{1}' and type in(2,4)", block, area); // LogHelper.WriteLogInfo("根据区域 查询显示箱号地址" + sql); return db.GetsqlForDT(sql); } #endregion #region 获取扫描枪地址 public DataTable GetScanList() { string sql = string.Format("select * from V_Address where type =6"); return db.GetsqlForDT(sql); } #endregion #region 获取通道灯地址 public DataTable GetLightList() { string sql = string.Format("select * from V_Address where type =1"); return db.GetsqlForDT(sql); } #endregion #region 根据区域获取扫描枪地址 public DataTable GetScanListByArea(string block,string area) { string sql = string.Format("select * from V_Address where type =6 and block='"+block+"' and area = '"+area+"'"); return db.GetsqlForDT(sql); } #endregion #region 根据区域获取通道灯地址 public DataTable GetlightListByArea(string block, string area) { string sql = string.Format("select * from V_Address where type =1 and block='" + block + "' and area = '" + area + "'"); return db.GetsqlForDT(sql); } #endregion #region 获取所有大区 public DataTable GetBlockList() { string sql = string.Format("select block from Addressstorage group by block"); return db.GetsqlForDT(sql); } #endregion #region 获取所有小区 public DataTable GetAreaList() { string sql = string.Format("select area,block from Addressstorage where type=1 group by area,block"); return db.GetsqlForDT(sql); } #endregion #region 获取所有小区 public List GetAreaList(string block = "") { string strwhere = string.Empty; if (!string.IsNullOrEmpty(block)) { strwhere = "and block ='" + block + "'"; } string sql = string.Format("select area,block from Addressstorage where type=1 " + strwhere + " group by area,block"); DataTable dt = db.GetsqlForDT(sql); return ModelConvertHelper.ConvertToList(dt); } #endregion #region 获取所有通道 public DataTable GetWayList() { string sql = string.Format("select way from Addressstorage group by way"); return db.GetsqlForDT(sql); } #endregion #region 分页获取数据列表 public List GetCityListByPage(string strWhere, string orderby, int startIndex, int endIndex, out int recordCount) { try { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT * FROM ( "); strSql.Append(" SELECT ROW_NUMBER() OVER ("); if (!string.IsNullOrEmpty(orderby.Trim())) { strSql.Append("order by T." + orderby); } else { strSql.Append("order by T.address desc"); } strSql.Append(")AS Row, T.* from Addressstorage T WITH(NOLOCK) "); if (!string.IsNullOrEmpty(strWhere.Trim())) { strSql.Append(" WHERE 1=1 " + strWhere); } strSql.Append(" ) TT"); strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex); List list = ModelConvertHelper.ConvertToList(db.GetsqlForDT(strSql.ToString())); strSql.Remove(0, strSql.Length); strSql.Append("SELECT COUNT(*) FROM Addressstorage AS T "); if (!string.IsNullOrEmpty(strWhere.Trim())) { strSql.AppendFormat(" WHERE 1=1 {0}", strWhere); } object obj = db.GetsqlForDT(strSql.ToString()); if (obj != null) recordCount = Convert.ToInt32(obj); else recordCount = 0; return list; } catch (Exception ex) { LogHelper.WriteLog(GetType(), ex.Message); recordCount = 0; return new List(); } } #endregion //--- #region 获取每个小区对应的每个大区(根据小区从小到大排序对应的大区) public List GetBlockByAreaList() { //string sql = string.Format("select cast(area as Int) as 'Area_area',block from Addressstorage group by block,area order by 'Area_area',block"); string sql = string.Format("select cast(way as Int) as 'Area_area',area from Addressstorage where type in(1,2) group by way,area order by Area_area,area"); List list = ModelConvertHelper.ConvertToList(db.GetsqlForDT(sql)); return list; } #endregion #region 分页获取数据列表 public List GetLocationListByPage(string strWhere, string orderby, int startIndex, int endIndex, out int recordCount) { try { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT * FROM ( "); strSql.Append(" SELECT ROW_NUMBER() OVER ("); if (!string.IsNullOrEmpty(orderby.Trim())) { strSql.Append("order by T." + orderby); } else { strSql.Append("order by cast(address as int) asc"); } strSql.Append(")AS Row, T.* from epost T WITH(NOLOCK) "); if (!string.IsNullOrEmpty(strWhere.Trim())) { strSql.Append(" WHERE 1=1 " + strWhere); } strSql.Append(" ) TT"); strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex); List list = ModelConvertHelper.ConvertToList(db.GetsqlForDT(strSql.ToString())); strSql.Remove(0, strSql.Length); strSql.Append("SELECT COUNT(*) FROM epost AS T "); if (!string.IsNullOrEmpty(strWhere.Trim())) { strSql.AppendFormat(" WHERE 1=1 {0}", strWhere); } object obj = db.GetsqlForDT(strSql.ToString()).Rows[0][0]; if (obj != null) recordCount = Convert.ToInt32(obj); else recordCount = 0; return list; } catch (Exception ex) { LogHelper.WriteLog(GetType(), ex.Message); recordCount = 0; return new List(); } } #endregion #region 根据条件删除货位 public bool DeleteLocation(string strwhere) { string sql = "delete from Addressstorage where address is not null "; try { if (strwhere != string.Empty && strwhere != null) { sql += " " + strwhere; } } catch (Exception) { throw; } long dt = db.UpdateSql(sql); if (dt > 0) { return true; } else { return false; } } #endregion #region 根据条件删除货位 public bool Locational_Binding_Save(string one, string two, string three, string four, string five, string six) { #region one string sql1 = "update Addressstorage "; try { if (one != string.Empty && one != null) { sql1 += "set area='" + one + "' where way='01' and type in(2,1)"; } } catch (Exception) { throw; } long dt = db.UpdateSql(sql1); #endregion #region two string sql2 = "update Addressstorage "; try { if (two != string.Empty && two != null) { sql2 += "set area='" + two + "' where way='02' and type in(2,1)"; } } catch (Exception) { throw; } dt = db.UpdateSql(sql2); #endregion #region three string sql3 = "update Addressstorage "; try { if (three != string.Empty && three != null) { sql3 += "set area='" + three + "' where way='03' and type in(2,1)"; } } catch (Exception) { throw; } dt = db.UpdateSql(sql3); #endregion #region four string sql4 = "update Addressstorage "; try { if (four != string.Empty && four != null) { sql4 += "set area='" + four + "' where way='04' and type in (2,1)"; } } catch (Exception) { throw; } dt = db.UpdateSql(sql4); #endregion #region five string sql5 = "update Addressstorage "; try { if (five != string.Empty && five != null) { sql5 += "set area='" + five + "' where way='05' and type in(2,1)"; } } catch (Exception) { throw; } dt = db.UpdateSql(sql5); #endregion #region six string sql6 = "update Addressstorage "; try { if (six != string.Empty && six != null) { sql6 += "set area='" + six + "' where way='06' and type in(2,1)"; } } catch (Exception) { throw; } dt = db.UpdateSql(sql6); #endregion if (dt > 0) { return true; } else { return false; } } #endregion #region 分页货位次数数据列表 public List GetLocationQuantityListByPage(string strWhere, string orderby, int startIndex, int endIndex, out int recordCount) { try { String STR = "(SELECT dbo.Addressstorage.location, COUNT(dbo.Ordershis.quantity) AS Count, SUM(dbo.Ordershis.quantity) AS Number " + "FROM dbo.Addressstorage LEFT OUTER JOIN " + " dbo.Ordershis ON dbo.Addressstorage.location = dbo.Ordershis.tolocation " + " WHERE 1=1 " + strWhere + "GROUP BY dbo.Addressstorage.location) "; StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT * FROM ( "); strSql.Append(" SELECT ROW_NUMBER() OVER ("); if (!string.IsNullOrEmpty(orderby.Trim())) { strSql.Append("order by T." + orderby); } else { strSql.Append("order by location asc"); } strSql.Append(")AS Row, T.* from " + STR + " T "); //if (!string.IsNullOrEmpty(strWhere.Trim())) //{ // strSql.Append(" WHERE 1=1 " + STR); //} strSql.Append(" ) TT"); string sq = strSql.Append(" WHERE TT.Row between {0} and {1}").ToString(); string sq1= string.Format(sq, startIndex, endIndex); string sq3 = string.Format(sq, 0, 100000); List list = ModelConvertHelper.ConvertToList(db.GetsqlForDT(sq1.ToString())); strSql.Remove(0, strSql.Length); strSql.Append("SELECT COUNT(*) FROM (" + sq3 + ") AS T "); if (!string.IsNullOrEmpty(STR.Trim())) { strSql.AppendFormat(" WHERE 1=1 {0}", STR); } object obj = db.GetsqlForDT(strSql.ToString()).Rows[0][0]; if (obj != null) recordCount = Convert.ToInt32(obj); else recordCount = 0; return list; } catch (Exception ex) { LogHelper.WriteLog(GetType(), ex.Message); recordCount = 0; return new List(); } } #endregion #region 更新货位 public bool Locational_Save(string address, string type, string state, string location, string controlIP, string shelfid, string block, string area, string username, string address_pre, string location_pre, string block_pre, string area_pre ) { string sql = "update Addressstorage set address='{0}',type='{1}',location='{2}',shelfid='{3}',block='{4}',area='{5}',state='{6}' where" + " address='{7}' and location='{8}' and block='{9}' and area='{10}'"; sql = string.Format(sql, address, type, location, shelfid, block, area, state, address_pre, location_pre, block_pre, area_pre); long dt = db.UpdateSql(sql); if (dt > 0) { return true; } else { return false; } } #endregion #region 查找报错设备的state public DataTable getErrorState(string address, string controlIP) { string sql = string.Format(" select distinct address,bkaddress,state,type,con.ControlIP,ID from addressstorage as addr left join controller as con on con.ID=addr.controlid where address = '{0}' and ControlIP='{1}'", address, controlIP ); // LogHelper.WriteLogInfo("根据地址查询货位信息" + sql); return db.GetsqlForDT(sql); } #endregion #region 设置报错的state=3 public bool UpdateErrorState(string address, string controlIP) { string sql = "select ID from Controller where controlIP='" + controlIP + "'"; string controlId = db.GetsqlForDT(sql).Rows[0][0].ToString(); string sql2 = string.Format(" update addressstorage set state='3' where address = '{0}' and controlid='{1}'", address, controlId ); // LogHelper.WriteLogInfo("根据地址查询货位信息" + sql); long dt = db.UpdateSql(sql2); if (dt > 0) { return true; } else { return false; } } #endregion #region 设置所有的设备都为1 public bool UpdateState() { string sql = "update Addressstorage SET state = '1'"; long dt = db.UpdateSql(sql); if (dt > 0) { return true; } else { return false; } } #endregion #region 根据货位号查询标签地址 public DataTable getIP(string carid) { string sql = string.Format(" select distinct controlip from v_address order by ControlIP"); // LogHelper.WriteLogInfo("根据货位号查询标签地址" + sql); return db.GetsqlForDT(sql); } #endregion #region 获取所有地址列表 public DataTable GetALLList(string strwhere) { string sql = string.Format("select * from v_address where 1=1 " + strwhere + " "); DataTable dt = db.GetsqlForDT(sql); return dt; } #endregion #region 分页获取用户表列表 public List GetAddressListByPageByMySql(string strWhere, string orderby, int startIndex, int endIndex, out int recordCount) { try { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT addr.* from v_address as addr WHERE 1 = 1 "); if (!string.IsNullOrEmpty(strWhere.Trim())) { strSql.Append(strWhere); } if (!string.IsNullOrEmpty(orderby.Trim())) { strSql.Append(" order by " + orderby); } else { strSql.Append(" order by block asc"); } strSql.AppendFormat(" limit {0},{1}", startIndex, endIndex); DataTable dt = db.GetsqlForDT(strSql.ToString()); List list = ModelConvertHelper.ConvertToList(dt); strSql.Remove(0, strSql.Length); strSql.Append("SELECT COUNT(*) FROM v_address AS T "); if (!string.IsNullOrEmpty(strWhere.Trim())) { strSql.AppendFormat(" WHERE 1=1 {0}", strWhere); } object obj = db.GetsqlForDT(strSql.ToString()).Rows[0][0]; if (obj != null) recordCount = Convert.ToInt32(obj); else recordCount = 0; return list; } catch (Exception ex) { LogHelper.WriteLog(GetType(), ex.Message); recordCount = 0; return new List(); } } public List GetAddressListByByPage(string strWhere, string orderby, int startIndex, int endIndex, out int recordCount) { try { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT * FROM ( "); strSql.Append(" SELECT ROW_NUMBER() OVER ("); if (!string.IsNullOrEmpty(orderby.Trim())) { strSql.Append("order by T." + orderby); } else { strSql.Append("order by address asc"); } strSql.Append(")AS Row, T.* from v_address T WITH(NOLOCK) "); if (!string.IsNullOrEmpty(strWhere.Trim())) { strSql.Append(" WHERE 1=1 " + strWhere); } strSql.Append(" ) TT"); strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex); List list = ModelConvertHelper.ConvertToList(db.GetsqlForDT(strSql.ToString())); strSql.Remove(0, strSql.Length); strSql.Append("SELECT COUNT(*) FROM v_address AS T "); if (!string.IsNullOrEmpty(strWhere.Trim())) { strSql.AppendFormat(" WHERE 1=1 {0}", strWhere); } object obj = db.GetsqlForDT(strSql.ToString()).Rows[0][0]; if (obj != null) recordCount = Convert.ToInt32(obj); else recordCount = 0; return list; } catch (Exception ex) { LogHelper.WriteLog(GetType(), ex.Message); recordCount = 0; return new List(); } } #endregion #region 根据订单获取要熄灭的标签 public DataTable GetForcedendAddress(string orderid) { string sql = string.Format("select * from v_orders where orderid='20416' and oprationstate!=3"); DataTable dt = db.GetsqlForDT(sql); return dt; } #endregion } }