using DapperORMCore.Context.DataContext;
using DapperORMCore.Model.CoreModel;
using DapperORMCore.Repository.IRepositorys;
using DapperORMCore.String.Consts;
using Microsoft.Extensions.Configuration;
using NXWMS.Code.Extends;
using NXWMS.IService.NXWMS.Balance;
using NXWMS.IService.NXWMS.Report;
using NXWMS.Model.AppModels.Condition.Balance;
using NXWMS.Model.AppModels.Condition.Report;
using NXWMS.Model.AppModels.Result.Balance;
using NXWMS.Model.AppModels.Result.Report;
using NXWMS.Model.Common;
using NXWMS.String.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WestDistance.DapperORM.Repository.Repositorys;
using TaskStatus = NXWMS.String.Enums.TaskStatus;
namespace NXWMS.Service.NXWMS.Report
{
///
/// 报告查询
///
[AutoInject(typeof(IReportSearchService), InjectType.Scope)]
public class ReportSearchService : ServiceBase, IReportSearchService
{
///
/// 系统操作仓储中转
///
private IDataRepositoryContext _dataContext;
///
/// SQL节点仓储
///
private ISQLNodeRepository _iSQLNodeRepository;
///
/// 配置
///
private IConfiguration _configuration;
public ReportSearchService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository)
{
this._dataContext = dataRepositoryContext;
this._configuration = configuration;
this._iSQLNodeRepository = iSQLNodeRepository;
}
///
/// 入库日统计报表
///
///
///
public OperateResultInfo> GetInstockDayStatisticsList(InstockDayStatisticsCondition info)
{
var sql = string.Empty;
var sqlAndBuilder = new StringBuilder();
sqlAndBuilder = string.IsNullOrWhiteSpace(info.InstockNo) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("RECEIPT_NO", info.InstockNo, DBOperationString._ContainIn));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.MaterielCode) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("MATERIEL_CODE", info.MaterielCode, DBOperationString._ContainIn));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.MaterielTypeCode) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("MATERIEL_TYPE_CODE", info.MaterielTypeCode, DBOperationString._Equal));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.BillType) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("RECEIPT_TYPE", info.BillType, DBOperationString._Equal));
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("CreateDate", info.BeginTime, DBOperationString._LargeEqual));
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("CreateDate", info.EndTime, DBOperationString._SmallEqual));
//BillTypeName =
// { _iSQLNodeRepository.GetEnumIntCaseString("BALANCE_STATUS", "WMS_STK_BALANCE")},
sql = $@"
SELECT QTY=SUM(ISNULL(QTY,0)),InstockNo,BillType,
LineNumber,InstockTime,InstockBillCreateTime,
MaterielCode,MaterielName,
MaterielTypeCode,MaterielTypeName,
PackageCode,PackageName,UnitCode,UnitName,
Volume,Weight,
SupplierContract,SupplierCode,SupplierName,
ProductDate,ExpDate,BalanceStatus FROM (
SELECT InstockNo=WMS_IN_RECEIPT.RECEIPT_NO,BillType=RECEIPT_TYPE,LineNumber=WMS_IN_RECEIPT_DTL.RECEIPT_DTL_ID,InstockTime=WMS_IN_RECEIPT.RECEIPT_TIME,InstockBillCreateTime=WMS_IN_RECEIPT.CREATE_TIME,
MaterielCode=WMS_IN_RECEIPT_DTL.MATERIEL_CODE,MaterielName=WMS_IN_RECEIPT_DTL.MATERIEL_NAME,
MaterielTypeCode=BAS_MATERIEL_TYPE.MATERIEL_TYPE_CODE,MaterielTypeName=BAS_MATERIEL_TYPE.MATERIEL_TYPE_NAME,
PackageCode=BAS_PACKAGE.PACKAGE_CODE,PackageName=BAS_PACKAGE.PACKAGE_NAME,UnitCode=BAS_UNIT.UNIT_CODE,UnitName=BAS_UNIT.UNIT_NAME,
QTY=WMS_IN_RECEIPT_DTL.PUTAWAY_QTY,
Volume=BAS_MATERIEL.VOLUME,Weight=BAS_MATERIEL.WEIGHT,
SupplierContract=BAS_SUPPLIER.CONTRACT,SupplierCode=BAS_SUPPLIER.SUPPLIER_CODE,SupplierName=WMS_IN_RECEIPT_DTL.SUPPLIER_NAME,
ProductDate=WMS_IN_RECEIPT_DTL.PRODUCT_DATE,ExpDate=WMS_IN_RECEIPT_DTL.EXP_DATE,BalanceStatus = WMS_STK_BALANCE.BALANCE_STATUS,
CreateDate=Convert(varchar(100),WMS_IN_RECEIPT.CREATE_TIME,23)
FROM WMS_IN_RECEIPT
JOIN WMS_IN_RECEIPT_DTL ON WMS_IN_RECEIPT.RECEIPT_ID=WMS_IN_RECEIPT_DTL.RECEIPT_ID
JOIN WMS_IN_RECEIPT_RECORD ON WMS_IN_RECEIPT_RECORD.RECEIPT_ID=WMS_IN_RECEIPT.RECEIPT_ID AND
WMS_IN_RECEIPT_RECORD.RECEIPT_DTL_ID=WMS_IN_RECEIPT_DTL.RECEIPT_DTL_ID
JOIN BAS_MATERIEL ON BAS_MATERIEL.MATERIEL_CODE=WMS_IN_RECEIPT_DTL.MATERIEL_CODE
JOIN BAS_MATERIEL_TYPE ON BAS_MATERIEL.MATERIEL_TYPE=BAS_MATERIEL_TYPE.MATERIEL_TYPE_CODE
JOIN BAS_PACKAGE ON WMS_IN_RECEIPT_DTL.PACKAGE_CODE=BAS_PACKAGE.PACKAGE_CODE
JOIN BAS_UNIT ON WMS_IN_RECEIPT_DTL.UNIT_CODE=BAS_UNIT.UNIT_CODE
JOIN BAS_SUPPLIER ON WMS_IN_RECEIPT_DTL.SUPPLIER_CODE=BAS_SUPPLIER.SUPPLIER_CODE
JOIN WMS_STK_BALANCE ON WMS_IN_RECEIPT_RECORD.TRAY_CODE=WMS_STK_BALANCE.TRAY_CODE
AND WMS_IN_RECEIPT_RECORD.PALLET_CODE=WMS_STK_BALANCE.PALLET_CODE
) TEMP
WHERE 1=1
GROUP BY
InstockNo,BillType,LineNumber,InstockTime,InstockBillCreateTime,
MaterielCode,MaterielName,
MaterielTypeCode,MaterielTypeName,
PackageCode,PackageName,UnitCode,UnitName,
Volume,Weight,
SupplierContract,SupplierCode,SupplierName,
ProductDate,ExpDate,BalanceStatus,CreateDate
";
IEnumerable result;
IEnumerable totalResult;
totalResult = new DataRepository(_dataContext).Query(sql);
if (info.PageIndex == 0 || info.PageSize == 0)
{
result = totalResult.ToList();
}
else
{
result = new DataRepository(_dataContext).QueryPage(sql,
"InstockTime", info.PageSize, info.PageIndex, true);
}
return SuccessStatus(new PageQueryResultInfo
{
RowData = result,
PageConditionInfo = info,
TotalCount = totalResult.Count(),
TotalPageCount = (int)Math.Ceiling((double)totalResult.Count() / info.PageSize)
});
}
///
/// 出库日统计报表
///
///
///
public OperateResultInfo> GetOutStockDayStatisticsList(OutStockDayStatisticsCondition info)
{
var sql = string.Empty;
var sqlAndBuilder = new StringBuilder();
sqlAndBuilder = string.IsNullOrWhiteSpace(info.OutStockNo) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("INVOICE_NO", info.OutStockNo, DBOperationString._ContainIn));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.MaterielCode) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("MATERIEL_CODE", info.MaterielCode, DBOperationString._ContainIn));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.MaterielTypeCode) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("MATERIEL_TYPE_CODE", info.MaterielTypeCode, DBOperationString._Equal));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.BillType) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("INVOICE_TYPE", info.BillType, DBOperationString._Equal));
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("CreateDate", info.BeginTime, DBOperationString._LargeEqual));
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("CreateDate", info.EndTime, DBOperationString._SmallEqual));
sql = $@"
SELECT QTY=SUM(ISNULL(QTY,0)),OutstockNo,BillType,LineNumber,OutstockTime,OutstockBillCreateTime,
MaterielCode,MaterielName,
MaterielTypeCode,MaterielTypeName,
PackageCode,PackageName,UnitCode,UnitName,
Volume,Weight,
SupplierContract,SupplierCode,SupplierName,
ProductDate,ExpDate,BalanceStatus FROM (
SELECT OutstockNo=WMS_OUT_INVOICE.INVOICE_NO,BillType=WMS_OUT_INVOICE.INVOICE_TYPE,LineNumber=WMS_OUT_INVOICE_DTL.INVOICE_DTL_ID,
OutstockTime=WMS_OUT_INVOICE.INVOICE_END_TIME,OutstockBillCreateTime=WMS_OUT_INVOICE.CREATE_TIME,
MaterielCode=WMS_OUT_INVOICE_DTL.MATERIEL_CODE,MaterielName=WMS_OUT_INVOICE_DTL.MATERIEL_NAME,
MaterielTypeCode=BAS_MATERIEL_TYPE.MATERIEL_TYPE_CODE,MaterielTypeName=BAS_MATERIEL_TYPE.MATERIEL_TYPE_NAME,
PackageCode=BAS_PACKAGE.PACKAGE_CODE,PackageName=BAS_PACKAGE.PACKAGE_NAME,UnitCode=BAS_UNIT.UNIT_CODE,UnitName=BAS_UNIT.UNIT_NAME,
QTY=WMS_OUT_INVOICE_DTL.PUTDOWN_QTY,
Volume=BAS_MATERIEL.VOLUME,Weight=BAS_MATERIEL.WEIGHT,
SupplierContract=BAS_SUPPLIER.CONTRACT,SupplierCode=BAS_SUPPLIER.SUPPLIER_CODE,SupplierName=WMS_OUT_INVOICE_DTL.SUPPLIER_NAME,
ProductDate=WMS_OUT_INVOICE_DTL.PRODUCT_DATE,ExpDate=WMS_OUT_INVOICE_DTL.EXP_DATE,BalanceStatus = WMS_STK_BALANCE.BALANCE_STATUS,
CreateDate=Convert(varchar(100),WMS_OUT_INVOICE.CREATE_TIME,23)
FROM WMS_OUT_INVOICE
JOIN WMS_OUT_INVOICE_DTL ON WMS_OUT_INVOICE.INVOICE_ID=WMS_OUT_INVOICE_DTL.INVOICE_ID
JOIN WMS_OUT_INVOICE_RECORD ON WMS_OUT_INVOICE_RECORD.INVOICE_ID=WMS_OUT_INVOICE.INVOICE_ID AND
WMS_OUT_INVOICE_RECORD.INVOICE_DTL_ID=WMS_OUT_INVOICE_DTL.INVOICE_DTL_ID
JOIN BAS_MATERIEL ON BAS_MATERIEL.MATERIEL_CODE=WMS_OUT_INVOICE_DTL.MATERIEL_CODE
JOIN BAS_MATERIEL_TYPE ON BAS_MATERIEL.MATERIEL_TYPE=BAS_MATERIEL_TYPE.MATERIEL_TYPE_CODE
JOIN BAS_PACKAGE ON WMS_OUT_INVOICE_DTL.PACKAGE_CODE=BAS_PACKAGE.PACKAGE_CODE
JOIN BAS_UNIT ON WMS_OUT_INVOICE_DTL.UNIT_CODE=BAS_UNIT.UNIT_CODE
JOIN BAS_SUPPLIER ON WMS_OUT_INVOICE_DTL.SUPPLIER_CODE=BAS_SUPPLIER.SUPPLIER_CODE
JOIN WMS_STK_BALANCE ON WMS_OUT_INVOICE_RECORD.TRAY_CODE=WMS_STK_BALANCE.TRAY_CODE
AND WMS_OUT_INVOICE_RECORD.PALLET_CODE=WMS_STK_BALANCE.PALLET_CODE
) TEMP
WHERE 1=1
GROUP BY
OutstockNo,BillType,LineNumber,OutstockTime,OutstockBillCreateTime,
MaterielCode,MaterielName,
MaterielTypeCode,MaterielTypeName,
PackageCode,PackageName,UnitCode,UnitName,
Volume,Weight,
SupplierContract,SupplierCode,SupplierName,
ProductDate,ExpDate,BalanceStatus,CreateDate
";
IEnumerable result;
IEnumerable totalResult;
totalResult = new DataRepository(_dataContext).Query(sql);
if (info.PageIndex == 0 || info.PageSize == 0)
{
result = totalResult.ToList();
}
else
{
result = new DataRepository(_dataContext).QueryPage(sql,
"OutstockTime", info.PageSize, info.PageIndex, true);
}
return SuccessStatus(new PageQueryResultInfo
{
RowData = result,
PageConditionInfo = info,
TotalCount = totalResult.Count(),
TotalPageCount = (int)Math.Ceiling((double)totalResult.Count() / info.PageSize)
});
}
///
/// 获取仓库进销存报表
///
///
///
public OperateResultInfo> GetWarehouseInventoryList(WarehouseInventoryCondition info)
{
var sql = string.Empty;
var sqlTemp = string.Empty;
var sqlAndBuilder = new StringBuilder();
var sqlOrBuilder = new StringBuilder();
sqlAndBuilder = string.IsNullOrWhiteSpace(info.BatchNo) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("BATCH_NO", info.BatchNo, DBOperationString._ContainIn,
"VM_WMS_WAREHOUSE_INVENTORY"
));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.UnitCode) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("UNIT_CODE", info.UnitCode, DBOperationString._ContainIn,
"VM_WMS_WAREHOUSE_INVENTORY"
));
sql = sql + (sqlAndBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlAndBuilder, false) : "");
//物料
sqlOrBuilder = string.IsNullOrWhiteSpace(info.MaterielInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("MATERIEL_CODE", info.MaterielInfo, DBOperationString._ContainIn,
"VM_WMS_WAREHOUSE_INVENTORY"));
sqlOrBuilder = string.IsNullOrWhiteSpace(info.MaterielInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("MATERIEL_NAME", info.MaterielInfo, DBOperationString._ContainIn,
"VM_WMS_WAREHOUSE_INVENTORY"));
sql = sql + (sqlOrBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlOrBuilder, false) : "");
//物料类型
sqlOrBuilder = string.IsNullOrWhiteSpace(info.MaterielTypeInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("MATERIEL_TYPE_CODE", info.MaterielTypeInfo, DBOperationString._ContainIn,
"VM_WMS_WAREHOUSE_INVENTORY"));
sqlOrBuilder = string.IsNullOrWhiteSpace(info.MaterielTypeInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("MATERIEL_TYPE_NAME", info.MaterielTypeInfo, DBOperationString._ContainIn,
"VM_WMS_WAREHOUSE_INVENTORY"));
sql = sql + (sqlOrBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlOrBuilder, false) : "");
sql = $@"
SELECT * FROM (
SELECT TEMP.WAREHOUSE_CODE,TEMP.WAREHOUSE_NAME,
TEMP.MATERIEL_TYPE_NAME,TEMP.MATERIEL_NAME,TEMP.UNIT_NAME,TEMP.BATCH_NO,
InStockQTY = SUM(CASE WHEN TEMP.TYPE='IN' THEN TEMP.QTY ELSE 0 END),
OutStockQTY = SUM(CASE WHEN TEMP.TYPE='OUT' THEN TEMP.QTY ELSE 0 END),
OpeningInventoryQTY=WMS_STK_TRAY_DTL.QTY+(
SELECT
QTY = (CASE WHEN TYPE='OUT' THEN 0-QTY ELSE QTY END)
FROM VM_WMS_WAREHOUSE_INVENTORY TEMP1
WHERE TEMP1.TO_DATE>GETDATE() AND
TEMP1.TRAY_CODE=WMS_STK_BALANCE.TRAY_CODE
AND TEMP1.MATERIEL_CODE=WMS_STK_TRAY_DTL.MATERIEL_CODE),
FinalInventoryQTY=WMS_STK_TRAY_DTL.QTY+(
SELECT
QTY = (CASE WHEN TYPE='OUT' THEN 0-QTY ELSE QTY END) FROM
VM_WMS_WAREHOUSE_INVENTORY TEMP1
WHERE
TEMP1.TO_DATE>GETDATE() AND
TEMP1.TRAY_CODE=WMS_STK_BALANCE.TRAY_CODE
AND TEMP1.MATERIEL_CODE=WMS_STK_TRAY_DTL.MATERIEL_CODE)
FROM WMS_STK_BALANCE
JOIN WMS_STK_TRAY ON WMS_STK_TRAY.TRAY_CODE=WMS_STK_BALANCE.TRAY_CODE
JOIN WMS_STK_TRAY_DTL ON WMS_STK_TRAY.TRAY_ID=WMS_STK_TRAY_DTL.TRAY_ID
JOIN VM_WMS_WAREHOUSE_INVENTORY TEMP ON WMS_STK_TRAY.TRAY_CODE=TEMP.TRAY_CODE AND
WMS_STK_TRAY_DTL.MATERIEL_CODE=TEMP.MATERIEL_CODE
WHERE 1=1 {sql}
GROUP BY TEMP.WAREHOUSE_CODE,TEMP.WAREHOUSE_NAME,
TEMP.MATERIEL_TYPE_NAME,TEMP.MATERIEL_NAME,TEMP.UNIT_NAME,TEMP.BATCH_NO,
WMS_STK_BALANCE.TRAY_CODE,WMS_STK_TRAY_DTL.MATERIEL_CODE,WMS_STK_TRAY_DTL.QTY
) INTEMP
WHERE 1=1
";
sqlAndBuilder = new StringBuilder();
sqlAndBuilder = string.IsNullOrWhiteSpace(info.UnitCode) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("FinalInventoryQTY", info.FinalInventoryQTY, DBOperationString._ContainIn,
"INTEMP"
));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.UnitCode) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("InStockQTY", info.InStockQTY, DBOperationString._ContainIn,
"INTEMP"
));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.UnitCode) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("OutStockQTY", info.OutStockQTY, DBOperationString._ContainIn,
"INTEMP"
));
sql = sql + (sqlAndBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlAndBuilder, false) : "");
IEnumerable result;
IEnumerable totalResult;
totalResult = new DataRepository(_dataContext).Query(sql);
if (info.PageIndex == 0 || info.PageSize == 0)
{
result = totalResult.ToList();
}
else
{
result = new DataRepository(_dataContext).QueryPage(sql,
"WAREHOUSE_CODE", info.PageSize, info.PageIndex, true);
}
return SuccessStatus(new PageQueryResultInfo
{
RowData = result,
PageConditionInfo = info,
TotalCount = totalResult.Count(),
TotalPageCount = (int)Math.Ceiling((double)totalResult.Count() / info.PageSize)
});
}
///
/// 获取库位使用情况列表
///
///
///
public OperateResultInfo> GetBinUseSituationList(BinUseSituationCondition info)
{
var sql = string.Empty;
var sqlTemp = string.Empty;
var sqlTemp1 = string.Empty;
var sqlAndBuilder = new StringBuilder();
var sqlOrBuilder = new StringBuilder();
//仓库
sqlOrBuilder = string.IsNullOrWhiteSpace(info.WarehouseInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("WAREHOUSE_CODE", info.WarehouseInfo, DBOperationString._ContainIn));
sqlOrBuilder = string.IsNullOrWhiteSpace(info.WarehouseInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("MATERIEL_NAME", info.WarehouseInfo, DBOperationString._ContainIn));
sqlTemp1 = sqlTemp1 + (sqlOrBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlOrBuilder, false) : "");
//库区
sqlOrBuilder = string.IsNullOrWhiteSpace(info.RegionInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("REGION_CODE", info.RegionInfo, DBOperationString._ContainIn));
sqlOrBuilder = string.IsNullOrWhiteSpace(info.RegionInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("REGION_NAME", info.RegionInfo, DBOperationString._ContainIn));
sqlTemp1 = sqlTemp1 + (sqlOrBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlOrBuilder, false) : "");
sqlAndBuilder = new StringBuilder();
sqlAndBuilder = info.BinQTY > 0 ? sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("BinQTY", info.BinQTY, DBOperationString._ContainIn, "TEMP"
));
sqlAndBuilder = info.IdleBinQTY > 0 ? sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("IdleBinQTY", info.IdleBinQTY, DBOperationString._ContainIn, "TEMP"
));
sqlAndBuilder = info.InstockOccupyQTY > 0 ? sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("InstockOccupyQTY", info.InstockOccupyQTY, DBOperationString._ContainIn, "TEMP"
));
sqlAndBuilder = info.DisableOccupyQTY > 0 ? sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("InstockOccupyQTY", info.DisableOccupyQTY, DBOperationString._ContainIn, "TEMP"
));
sqlAndBuilder = info.OutstockOccupyQTY > 0 ? sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("OutstockOccupyQTY", info.OutstockOccupyQTY, DBOperationString._ContainIn, "TEMP"
));
sqlAndBuilder = info.EmplyBinQTY > 0 ? sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("EmplyBinQTY", info.EmplyBinQTY, DBOperationString._ContainIn, "TEMP"
));
sqlAndBuilder = info.FullBinQTY > 0 ? sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("FullBinQTY", info.FullBinQTY, DBOperationString._ContainIn, "TEMP"
));
sqlAndBuilder = info.IdleBinQTY > 0 ? sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("IdleBinQTY", info.IdleBinQTY, DBOperationString._ContainIn, "TEMP"
));
sqlTemp = (sqlAndBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlAndBuilder, false) : "");
sql = $@"
SELECT * FROM (SELECT BAS_BIN.AREA_CODE,BAS_BIN.AREA_NAME,REGION_CODE,REGION_NAME,
BAS_BIN.WAREHOUSE_CODE,BAS_BIN.WAREHOUSE_NAME,
BinQTY=(SELECT COUNT(1) FROM BAS_BIN WHERE USED_FLAG=1),
IdleBinQTY=(SELECT COUNT(DISTINCT BAS_BIN.BIN_CODE)
FROM BAS_BIN JOIN WMS_STK_BALANCE B1 ON BAS_BIN.BIN_CODE=BAS_BIN.BIN_CODE
WHERE B1.BALANCE_STATUS IN(0,100,111)
AND USED_FLAG=1),
EmplyBinQTY=(SELECT COUNT(DISTINCT B1.BIN_CODE) FROM WMS_STK_BALANCE B1
JOIN WMS_STK_TRAY T1 ON T1.TRAY_CODE=B1.TRAY_CODE
JOIN WMS_STK_TRAY_DTL T2 ON T1.TRAY_ID=T2.TRAY_ID
WHERE B1.BALANCE_STATUS NOT IN(0,100) AND BAS_BIN.USED_FLAG=1
AND T1.TRAY_LOADED_TYPE=3
AND B1.BALANCE_STATUS IN(99)
),
FullBinQTY=(SELECT COUNT(DISTINCT B1.BIN_CODE) FROM WMS_STK_BALANCE B1
JOIN WMS_STK_TRAY T1 ON T1.TRAY_CODE=B1.TRAY_CODE
JOIN WMS_STK_TRAY_DTL T2 ON T1.TRAY_ID=T2.TRAY_ID
WHERE B1.BALANCE_STATUS NOT IN(0,100) AND BAS_BIN.USED_FLAG=1
AND T1.TRAY_LOADED_TYPE=1
AND B1.BALANCE_STATUS IN(99)),
InstockOccupyQTY=
(SELECT COUNT(DISTINCT B1.BIN_CODE) FROM WMS_STK_BALANCE B1
JOIN WMS_STK_TRAY T1 ON T1.TRAY_CODE=B1.TRAY_CODE
JOIN WMS_STK_TRAY_DTL T2 ON T1.TRAY_ID=T2.TRAY_ID
WHERE B1.BALANCE_STATUS NOT IN(0,100) AND BAS_BIN.USED_FLAG=1
AND B1.BALANCE_STATUS IN(11,22,33)
AND T2.TRAY_DTL_STATUS IN(11,22,33)),
OutstockOccupyQTY=
(SELECT COUNT(DISTINCT B1.BIN_CODE) FROM WMS_STK_BALANCE B1
JOIN WMS_STK_TRAY T1 ON T1.TRAY_CODE=B1.TRAY_CODE
JOIN WMS_STK_TRAY_DTL T2 ON T1.TRAY_ID=T2.TRAY_ID
WHERE B1.BALANCE_STATUS NOT IN(0,100)
AND BAS_BIN.BIN_CODE=B1.BIN_CODE and BAS_BIN.USED_FLAG=1
AND B1.BALANCE_STATUS IN(66,77,88)
AND T2.TRAY_DTL_STATUS IN(66,77,88)),
DisableOccupyQTY=
(SELECT COUNT(DISTINCT B1.BIN_CODE) FROM BAS_BIN
JOIN WMS_STK_BALANCE B1 ON BAS_BIN.BIN_CODE=B1.BIN_CODE
JOIN WMS_STK_TRAY T1 ON T1.TRAY_CODE=B1.TRAY_CODE
JOIN WMS_STK_TRAY_DTL T2 ON T1.TRAY_ID=T2.TRAY_ID
WHERE B1.BALANCE_STATUS NOT IN(0,100) AND BAS_BIN.USED_FLAG=1
AND B1.BALANCE_STATUS IN(111)
AND T2.TRAY_DTL_STATUS IN(111))
FROM BAS_BIN WHERE USED_FLAG=1 {sqlTemp1}
GROUP BY
BAS_BIN.AREA_CODE,BAS_BIN.AREA_NAME,
BAS_BIN.WAREHOUSE_CODE,BAS_BIN.WAREHOUSE_NAME,
BAS_BIN.USED_FLAG,BAS_BIN.BIN_CODE,REGION_CODE,REGION_NAME
) TEMP
WHERE 1=1 {sqlTemp}
";
IEnumerable result;
IEnumerable totalResult;
totalResult = new DataRepository(_dataContext).Query(sql);
if (info.PageIndex == 0 || info.PageSize == 0)
{
result = totalResult.ToList();
}
else
{
result = new DataRepository(_dataContext).QueryPage(sql,
"WAREHOUSE_CODE", info.PageSize, info.PageIndex, true);
}
return SuccessStatus(new PageQueryResultInfo
{
RowData = result,
PageConditionInfo = info,
TotalCount = totalResult.Count(),
TotalPageCount = (int)Math.Ceiling((double)totalResult.Count() / info.PageSize)
});
}
///
/// 获取任务报表列表
///
///
///
public OperateResultInfo> GetWMSTaskReportList(WMSTaskReportCondition info)
{
var sql = string.Empty;
var sqlOrBuilder = new StringBuilder();
var sqlAndBuilder = new StringBuilder();
sql = $@"SELECT WMS_TSK_TASK.WAREHOUSE_CODE,WMS_TSK_TASK.WAREHOUSE_NAME,
WMS_TSK_TASK.TASK_NO,WMS_TSK_TASK.TRAY_CODE,WMS_TSK_TASK.PALLET_CODE,
WMS_TSK_TASK.TRAY_LOADED_TYPE,WMS_TSK_TASK.SLOC_CODE,WMS_TSK_TASK.ELOC_CODE,WMS_TSK_TASK.CLOC_CODE,
WMS_TSK_TASK.TASK_TYPE,WMS_TSK_TASK.TASK_STATUS,WMS_TSK_TASK.SBIN_CODE,WMS_TSK_TASK.EBIN_CODE,
TASK_DETAIL.CMD_NO,WMS_TSK_TASK.TASK_PRIORITY,WMS_TSK_TASK.TASK_MSG,
TrayLoadedTypeName=
{_iSQLNodeRepository.GetEnumIntCaseString("TRAY_LOADED_TYPE", "WMS_TSK_TASK")},
TaskTypeName=
{_iSQLNodeRepository.GetEnumIntCaseString("TASK_TYPE", "WMS_TSK_TASK")},
TaskStatusName=
{_iSQLNodeRepository.GetEnumIntCaseString("TASK_STATUS", "WMS_TSK_TASK")},
WMS_TSK_TASK.CREATE_TIME
FROM WMS_TSK_TASK
JOIN (
SELECT TYPE = 'CRN', TASK_NO, CMD_NO, TRAY_STATUS, DEV_NO = CRN_DEV_NO, CMD_TYPE, ACTIVE_TYPE, CMD_STATUS, CMD_LOG, ERR_FLAG ,PALLET_CODE
FROM WCS_CRN_CMD
WHERE EXISTS(
SELECT * FROM(
SELECT TASK_NO, CMD_NO, ID = MAX(CRN_CMD_ID) FROM WCS_CRN_CMD
WHERE FINISH_TIME IS NULL GROUP BY TASK_NO, CMD_NO) TEMP WHERE TEMP.ID = WCS_CRN_CMD.CRN_CMD_ID)
UNION
SELECT TYPE = 'TRAN', TASK_NO, CMD_NO, TRAY_STATUS, DEV_NO = TRAN_DEV_NO, CMD_TYPE, ACTIVE_TYPE, CMD_STATUS, CMD_LOG, ERR_FLAG ,PALLET_CODE
FROM WCS_TRAN_CMD
WHERE EXISTS(
SELECT * FROM(
SELECT TASK_NO, CMD_NO, ID = MAX(TRAN_CMD_ID) FROM WCS_TRAN_CMD
WHERE FINISH_TIME IS NULL GROUP BY TASK_NO, CMD_NO) TEMP WHERE TEMP.ID = WCS_TRAN_CMD.TRAN_CMD_ID)
UNION
SELECT TYPE = 'AGV', TASK_NO, CMD_NO, TRAY_STATUS, DEV_NO = AGV_CMD_ID, CMD_TYPE, ACTIVE_TYPE, CMD_STATUS, CMD_LOG, ERR_FLAG ,PALLET_CODE
FROM WCS_AGV_CMD
WHERE EXISTS(
SELECT * FROM(
SELECT TASK_NO, CMD_NO, ID = MAX(AGV_CMD_ID) FROM WCS_AGV_CMD
WHERE FINISH_TIME IS NULL GROUP BY TASK_NO, CMD_NO) TEMP WHERE TEMP.ID = WCS_AGV_CMD.AGV_CMD_ID)
) TASK_DETAIL
ON TASK_DETAIL.TASK_NO = WMS_TSK_TASK.TASK_NO
LEFT JOIN BAS_PALLET ON BAS_PALLET.PALLET_CODE=TASK_DETAIL.PALLET_CODE
LEFT JOIN BAS_BIN EBAS_BIN ON WMS_TSK_TASK.EBIN_CODE = EBAS_BIN.BIN_CODE
LEFT JOIN BAS_BIN SBAS_BIN ON WMS_TSK_TASK.SBIN_CODE = SBAS_BIN.BIN_CODE
WHERE 1=1
";
sqlAndBuilder = string.IsNullOrWhiteSpace(info.ElocBinCode) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("EBIN_CODE", info.ElocBinCode, DBOperationString._Equal, "WMS_TSK_TASK"));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.SlocBinCode) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("SBIN_CODE", info.SlocBinCode, DBOperationString._Equal, "WMS_TSK_TASK"));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.ElocCode) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("ELOC_CODE", info.ElocCode, DBOperationString._Equal, "WMS_TSK_TASK"));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.SlocCode) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("SLOC_CODE", info.SlocCode, DBOperationString._Equal, "WMS_TSK_TASK"));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.TaskNo) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("TASK_NO", info.TaskNo, DBOperationString._ContainIn, "WMS_TSK_TASK"));
sqlAndBuilder = info.TaskStatus == null ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("TASK_STATUS", info.TaskStatus, DBOperationString._Equal, "WMS_TSK_TASK"));
sqlAndBuilder = info.TaskType == null ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("TASK_TYPE", info.TaskType, DBOperationString._Equal, "WMS_TSK_TASK"));
sqlAndBuilder = info.LoadedStatus == null ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("TRAY_LOADED_TYP", info.LoadedStatus, DBOperationString._Equal, "WMS_TSK_TASK"));
sql = sql + (sqlAndBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlAndBuilder, false) : "");
//托盘号
sqlOrBuilder = string.IsNullOrWhiteSpace(info.PalletInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("PALLET_CODE", info.PalletInfo, DBOperationString._ContainIn, "BAS_PALLET"));
sqlOrBuilder = string.IsNullOrWhiteSpace(info.PalletInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("PALLET_NAME", info.PalletInfo, DBOperationString._ContainIn, "BAS_PALLET"));
sql = sql + (sqlOrBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlOrBuilder, false) : "");
IEnumerable result;
IEnumerable totalResult;
totalResult = new DataRepository(_dataContext).Query(sql);
if (info.PageIndex == 0 || info.PageSize == 0)
{
result = totalResult.ToList();
}
else
{
result = new DataRepository(_dataContext).QueryPage(sql,
"CREATE_TIME", info.PageSize, info.PageIndex, true);
}
return SuccessStatus(new PageQueryResultInfo
{
RowData = result,
PageConditionInfo = info,
TotalCount = totalResult.Count(),
TotalPageCount = (int)Math.Ceiling((double)totalResult.Count() / info.PageSize)
});
}
///
/// 报警情况统计报表
///
///
///
public OperateResultInfo> GetFaultStatisticsReportList(FaultStatisticsReportCondition info)
{
var sql = string.Empty;
var sqlOrBuilder = new StringBuilder();
var sqlAndBuilder = new StringBuilder();
sql = $@"SELECT
DevTypeCode = WCS_BAS_DEV_TYPE.DEV_TYPE_CODE,DevTypeName = WCS_BAS_DEV_TYPE.DEV_TYPE_NAME,
DevCode = WCS_BAS_DEV.DEV_CODE,DevName = WCS_BAS_DEV.DEV_NAME,
FaultLevelName='',
WMS_LOG_FAULT_MSG.* FROM WMS_LOG_FAULT_MSG
JOIN WCS_BAS_DEV ON WMS_LOG_FAULT_MSG.FAULT_DEV_CODE=WCS_BAS_DEV.DEV_CODE
JOIN WCS_BAS_DEV_TYPE ON WCS_BAS_DEV.DEV_TYPE_CODE=WCS_BAS_DEV_TYPE.DEV_TYPE_CODE
WHERE 1=1
";
//{ _iSQLNodeRepository.GetEnumIntCaseString("FAULT_LEVEL", "WMS_LOG_FAULT_MSG")},
//库位
sqlOrBuilder = string.IsNullOrWhiteSpace(info.DevInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("DEV_CODE", info.DevInfo, DBOperationString._ContainIn, "WCS_BAS_DEV"));
sqlOrBuilder = string.IsNullOrWhiteSpace(info.DevInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("DEV_NAME", info.DevInfo, DBOperationString._ContainIn, "WCS_BAS_DEV"));
//库位类型
sqlOrBuilder = string.IsNullOrWhiteSpace(info.DevTypeInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("DEV_TYPE_CODE", info.DevTypeInfo, DBOperationString._ContainIn, "WCS_BAS_DEV_TYPE"));
sqlOrBuilder = string.IsNullOrWhiteSpace(info.DevTypeInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("DEV_TYPE_NAME", info.DevTypeInfo, DBOperationString._ContainIn, "WCS_BAS_DEV_TYPE"));
//报警信息
sqlOrBuilder = string.IsNullOrWhiteSpace(info.FaultInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("FAULT_NO", info.FaultInfo, DBOperationString._ContainIn, "WMS_LOG_FAULT_MSG"));
sqlOrBuilder = string.IsNullOrWhiteSpace(info.FaultInfo) ?
sqlOrBuilder :
sqlOrBuilder.Append(_iSQLNodeRepository.GetOrCondition("FAULT_DESC", info.FaultInfo, DBOperationString._ContainIn, "WMS_LOG_FAULT_MSG"));
sql = sql + (sqlOrBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlOrBuilder, false) : "");
sqlAndBuilder = info.FaultBeginTimeLen > 0 ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("FAULT_TIME_LEN", info.FaultBeginTimeLen, DBOperationString._LargeEqual, "WMS_LOG_FAULT_MSG"));
sqlAndBuilder = info.FaultEndTimeLen > 0 ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("FAULT_TIME_LEN", info.FaultEndTimeLen, DBOperationString._SmallEqual, "WMS_LOG_FAULT_MSG"));
sql = sql + (sqlAndBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlAndBuilder, false) : "");
IEnumerable result;
IEnumerable totalResult;
totalResult = new DataRepository(_dataContext).Query(sql);
if (info.PageIndex == 0 || info.PageSize == 0)
{
result = totalResult.ToList();
}
else
{
result = new DataRepository(_dataContext).QueryPage(sql,
"CREATE_TIME", info.PageSize, info.PageIndex, true);
}
return SuccessStatus(new PageQueryResultInfo
{
RowData = result,
PageConditionInfo = info,
TotalCount = totalResult.Count(),
TotalPageCount = (int)Math.Ceiling((double)totalResult.Count() / info.PageSize)
});
}
///
/// 获取班次作业情况统计
///
///
///
public OperateResultInfo> GetFrequencyStatisticsReportList(FrequencyStatisticsCondition info)
{
var scheduleConfigList = new List()
.AddGet(new ScheduleConfig
{
ScheduleCode = "Day",
ScheduleName = "白班",
DetailList = new List()
.AddGet(new ScheduleDetailConfig
{
BeginTime = "8:00",
EndTime = "10:00",
})
.AddGet(new ScheduleDetailConfig
{
BeginTime = "10:00",
EndTime = "12:00",
})
.AddGet(new ScheduleDetailConfig
{
BeginTime = "12:00",
EndTime = "14:00",
})
.AddGet(new ScheduleDetailConfig
{
BeginTime = "14:00",
EndTime = "16:00",
})
.AddGet(new ScheduleDetailConfig
{
BeginTime = "16:00",
EndTime = "18:00",
})
.AddGet(new ScheduleDetailConfig
{
BeginTime = "18:00",
EndTime = "20:00",
})
});
var sql = string.Empty;
var sqlOrBuilder = new StringBuilder();
var sqlAndBuilder = new StringBuilder();
var sqlTempList = new List();
sqlAndBuilder = string.IsNullOrWhiteSpace(info.ScheduleCode) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("schedule_code", info.ScheduleCode, DBOperationString._LargeEqual, "WMS_LOG_FAULT_MSG"));
var scheduleInfo = scheduleConfigList.Where(s => s.ScheduleCode == info.ScheduleCode).FirstOrDefault();
if (scheduleInfo == null)
{
return FailMessageStatus("排单编码错误!", new PageQueryResultInfo());
}
if (!string.IsNullOrWhiteSpace(info.SectionStr))
{
scheduleInfo.DetailList = scheduleInfo.DetailList.Where(s => s.BeginTime + "-" + s.EndTime == info.SectionStr).ToList();
}
//排班
for (int i = 0; i < scheduleInfo.DetailList.Count; i++)
{
sqlTempList.Add(string.Format(@"SELECT Date = '{0}',Schedule = '{1}',
ScheduleTimeSection = '{2}-{3}',
ReceiptOrderQTY=
(SELECT COUNT(*) FROM WMS_IN_RECEIPT
WHERE RECEIPT_STATUS!=111 AND CONVERT(VARCHAR(100),UPDATE_TIME,23) = '{0}'
AND CONVERT(VARCHAR(100),UPDATE_TIME,8) BETWEEN
'{2}' AND '{3}'),
ReceiptTrayQTY=
(SELECT COUNT(DISTINCT WMS_STK_TRAY.NEWID) FROM WMS_IN_RECEIPT
JOIN WMS_IN_RECEIPT_DTL ON WMS_IN_RECEIPT.RECEIPT_ID=WMS_IN_RECEIPT_DTL.RECEIPT_ID
JOIN WMS_IN_RECEIPT_RECORD ON WMS_IN_RECEIPT_RECORD.RECEIPT_DTL_ID=WMS_IN_RECEIPT_DTL.RECEIPT_DTL_ID
JOIN WMS_STK_TRAY ON WMS_IN_RECEIPT_RECORD.TRAY_CODE=WMS_STK_TRAY.TRAY_CODE
WHERE RECEIPT_STATUS!=111 AND WMS_IN_RECEIPT_DTL.RECEIPT_DTL_STATUS!=111
AND WMS_IN_RECEIPT_RECORD.RECEIPT_RECORD_STATUS!=2
AND CONVERT(VARCHAR(100),WMS_IN_RECEIPT.UPDATE_TIME,23) = '{0}'
AND CONVERT(VARCHAR(100),WMS_IN_RECEIPT.UPDATE_TIME,8) BETWEEN
'{2}' AND '{3}'),
InvoiceQTY=
(SELECT COUNT(*) FROM WMS_OUT_INVOICE
WHERE INVOICE_STATUS!=111
AND CONVERT(VARCHAR(100),WMS_OUT_INVOICE.UPDATE_TIME,23) = '{0}'
AND CONVERT(VARCHAR(100),WMS_OUT_INVOICE.UPDATE_TIME,8) BETWEEN
'{2}' AND '{3}'),
InvoiceExamineQTY=
(SELECT COUNT(*) FROM WMS_OUT_INVOICE
WHERE INVOICE_STATUS=11
AND CONVERT(VARCHAR(100),WMS_OUT_INVOICE.UPDATE_TIME,23) = '{0}'
AND CONVERT(VARCHAR(100),WMS_OUT_INVOICE.UPDATE_TIME,8) BETWEEN
'{2}' AND '{3}'),
PutAwayQTY=
(SELECT COUNT(*) FROM WMS_IN_PUTAWAY
WHERE PUTAWAY_STATUS!='111'
AND CONVERT(VARCHAR(100),WMS_IN_PUTAWAY.UPDATE_TIME,23) = '{0}'
AND CONVERT(VARCHAR(100),WMS_IN_PUTAWAY.UPDATE_TIME,8) BETWEEN
'{2}' AND '{3}'),
PutDownQTY=
(SELECT COUNT(*) FROM WMS_OUT_PUTDOWN
WHERE PUTDOWN_STATUS!='111'
AND CONVERT(VARCHAR(100),WMS_OUT_PUTDOWN.UPDATE_TIME,23) = '{0}'
AND CONVERT(VARCHAR(100),WMS_OUT_PUTDOWN.UPDATE_TIME,8) BETWEEN
'{2}' AND '{3}')", info.Date.ToShortDateString(), scheduleInfo.ScheduleName,
scheduleInfo.DetailList[i].BeginTime, scheduleInfo.DetailList[i].EndTime
));
}
sql = string.Join("\r\n UNION ", sqlTempList);
IEnumerable result;
IEnumerable totalResult;
totalResult = new DataRepository(_dataContext).Query(sql);
if (info.PageIndex == 0 || info.PageSize == 0)
{
result = totalResult.ToList();
}
else
{
result = new DataRepository(_dataContext).QueryPage(sql, "ScheduleTimeSection", info.PageSize, info.PageIndex, true);
}
return SuccessStatus(new PageQueryResultInfo
{
RowData = result,
PageConditionInfo = info,
TotalCount = totalResult.Count(),
TotalPageCount = (int)Math.Ceiling((double)totalResult.Count() / info.PageSize)
});
}
///
/// 获取预警报告列表
///
///
///
public OperateResultInfo> GetEarlyWarningReportList(EarlyWarningReportCondition info)
{
var sql = string.Empty;
var sqlOrBuilder = new StringBuilder();
var sqlAndBuilder = new StringBuilder();
sql = $@"SELECT
CreateName = (SELECT USER_NAME FROM SYS_USER A WHERE A.USER_ID=CREATE_BY),
UpdateName = (SELECT USER_NAME FROM SYS_USER B WHERE B.USER_ID=UPDATE_BY),
SendFlagName = '未发送',
{info.ItemSQL} FROM WMS_LOG_EARLY_WARNING WHERE 1=1 ";
sqlAndBuilder = info.WarningBeginTime != null ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetOrCondition("WARNING_TIME", info.WarningBeginTime, DBOperationString._LargeEqual));
sqlAndBuilder = info.WarningEndTime != null ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetOrCondition("WARNING_TIME", info.WarningEndTime, DBOperationString._SmallEqual));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.WarningParam) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetOrCondition("WARNING_PARAM", info.WarningParam, DBOperationString._ContainIn));
sqlAndBuilder = string.IsNullOrWhiteSpace(info.WarningDescribe) ?
sqlAndBuilder :
sqlAndBuilder.Append(_iSQLNodeRepository.GetOrCondition("WARNING_DESCRIBE", info.WarningDescribe, DBOperationString._ContainIn));
sql = sql + (sqlAndBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlAndBuilder, false) : "");
IEnumerable result;
IEnumerable totalResult;
totalResult = new DataRepository(_dataContext).Query(sql);
if (info.PageIndex == 0 || info.PageSize == 0)
{
result = totalResult.ToList();
}
else
{
result = new DataRepository(_dataContext).QueryPage(sql, "WARNING_TIME", info.PageSize, info.PageIndex, true);
}
return SuccessStatus(new PageQueryResultInfo
{
RowData = result,
PageConditionInfo = info,
TotalCount = totalResult.Count(),
TotalPageCount = (int)Math.Ceiling((double)totalResult.Count() / info.PageSize)
});
}
}
}