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

189 lines
7.6 KiB

using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Security.AccessControl;
using System.Text;
using System.Threading.Tasks;
using MESClassLibrary.DAL;
namespace MESClassLibrary.BLL.Stock
{
public class StockInBLL
{
BBMPTEntities dbe = new BBMPTEntities();
BasicBLL<tb_StockIn> db = new BasicBLL<tb_StockIn>();
BasicBLL<tb_InspectResult> Resultdb = new BasicBLL<tb_InspectResult>();
/// <summary>
/// 查询信息
/// </summary>
/// <returns></returns>
public string SearchInfo(string page, string pagesize, string StartTime, string EndTime, string workClass, string color, string productInfo)
{
try
{
string jsonStr = "[]";
int total = 0;//总行数
//List<tb_StockIn> list = db.SearchAllInfo();
DateTime start = Convert.ToDateTime(StartTime);
DateTime end = Convert.ToDateTime(EndTime);
List<StockInModel> list = new List<StockInModel>();
string sql = @"IF object_id(N'tempdb..#c',N'U') is not null
BEGIN
DROP Table #c
END
CREATE TABLE #c (barcode NVARCHAR(50),workClass NVARCHAR(100),productInfo NVARCHAR(200))
INSERT INTO #c
( barcode,workClass, productInfo )
SELECT d.barcode,d.workClass, d.productInfo FROM (
SELECT *,cre_date_idx = ROW_NUMBER() OVER (PARTITION BY barcode ORDER BY createTime DESC)
FROM dbo.tb_InspectResult
WHERE barcode IN (SELECT barcode FROM dbo.tb_StockIn WHERE createTime >='"+ start+ @"' AND createTime <='"+ end+ @"')
) d
WHERE d.cre_date_idx =1
CREATE INDEX IX_TempTable ON #c(workClass,productInfo)
SELECT a.ID,a.barcode,a.pass,a.createTime,#c.productInfo,#c.workClass FROM dbo.tb_StockIn a
LEFT OUTER JOIN
#c ON a.barcode=#c.barcode
WHERE createTime >='" + start+ @"' AND createTime <='"+ end+ @"'";
if (!string.IsNullOrEmpty(workClass))
{
sql += " and #c.workClass like '%" + workClass + @"%' ";
}
if (!string.IsNullOrEmpty(color))
{
sql += " and #c.productInfo like '%" + color + @"%' ";
}
if (!string.IsNullOrEmpty(productInfo))
{
sql += " and #c.productInfo like '%" + productInfo + @"%' ";
}
sql += " order by a.createTime";
DataTable dt = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
list = Tool.ConvertTo<StockInModel>(dt).ToList();
}
//List<tb_StockIn> list = dbe.tb_StockIn.Where(p => p.createTime >= start && p.createTime <= end && "1".Equals(p.pass)).ToList();
////list = list.Where(p => p.createTime >= start && p.createTime <= end && "1".Equals(p.pass)).ToList();
//List<string> barcodeList = list.Select(m => m.barcode).ToList();
//var resultList = dbe.tb_InspectResult.Where(p => barcodeList.Contains(p.barcode) && p.inspectResult.Contains("合格")).ToList();
//if (!String.IsNullOrEmpty(workClass))
//{
// resultList = resultList.Where(p => p.workClass.Contains(workClass)).ToList();
//}
//if (!String.IsNullOrEmpty(color))
//{
// resultList = resultList.Where(p => p.productInfo.Contains(color)).ToList();
//}
//if (!String.IsNullOrEmpty(productInfo))
//{
// resultList = resultList.Where(p => p.productInfo.Contains(productInfo)).ToList();
//}
//list = list.Where(p => resultList.Select(m => m.barcode).ToList().Contains(p.barcode)).ToList();
if (list.Count > 0)
{
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();;
JsonDataModel<StockInModel> md = new JsonDataModel<StockInModel>();
md.total = total.ToString();
md.rows = list;
jsonStr = JSONTools.ScriptSerialize<JsonDataModel<StockInModel>>(md);
}
return jsonStr;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return "";
}
}
/// <summary>
/// 查询信息
/// </summary>
/// <returns></returns>
public List<StockInModel> SearchInfoAll(string StartTime, string EndTime, string workClass, string color, string productInfo)
{
try
{
List<tb_StockIn> list = db.SearchAllInfo();
DateTime start = Convert.ToDateTime(StartTime);
DateTime end = Convert.ToDateTime(EndTime);
list = list.Where(p => p.createTime >= start && p.createTime <= end && "1".Equals(p.pass)).ToList();
List<string> barcodeList = list.Select(m => m.barcode).ToList();
var resultList = dbe.tb_InspectResult.Where(p => barcodeList.Contains(p.barcode) && p.inspectResult.Contains("合格")).ToList();
if (!String.IsNullOrEmpty(workClass))
{
resultList = resultList.Where(p => p.workClass.Contains(workClass)).ToList();
}
if (!String.IsNullOrEmpty(color))
{
resultList = resultList.Where(p => p.productInfo.Contains(color)).ToList();
}
if (!String.IsNullOrEmpty(productInfo))
{
resultList = resultList.Where(p => p.productInfo.Contains(productInfo)).ToList();
}
list = list.Where(p => resultList.Select(m => m.barcode).ToList().Contains(p.barcode)).ToList();
List<StockInModel> StockInList = new List<StockInModel>();
if (list.Count > 0)
{
foreach (var item in list)
{
StockInModel dm = Tool.Mapper<StockInModel, tb_StockIn>(item);
var info = resultList.FirstOrDefault(p => p.barcode == item.barcode);
if (info != null)
{
dm.workClass = info.workClass;
dm.productInfo = info.productInfo;
}
StockInList.Add(dm);
}
}
return StockInList;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
}
}