using DapperORMCore.Context.DataContext;
using DapperORMCore.Model.CoreModel;
using DapperORMCore.Repository.IRepositorys;
using Microsoft.Extensions.Configuration;
using NXWMS.IService.NXWMS;
using NXWMS.IService.NXWMS.Instock;
using NXWMS.Model.AppModels.Condition.Instock;
using NXWMS.Model.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceProcess;
//using System.Runtime.InteropServices.WindowsRuntime;
using System.Text;
using System.Threading.Tasks;
using WestDistance.DapperORM.Repository.Repositorys;
namespace NXWMS.Service.NXWMS.Instock
{
///
/// 到货通知单服务
///
[AutoInject(typeof(IWmsInArrivalService), InjectType.Scope)]
public class WmsInArrivalService : ServiceBase, IWmsInArrivalService
{
#region 全局变量、构造注入
///
/// 系统操作仓储中转
///
private IDataRepositoryContext _dataContext;
///
/// SQL节点仓储
///
private ISQLNodeRepository _iSQLNodeRepository;
///
/// 配置
///
private IConfiguration _configuration;
private IErpSyncServer _syncServer;
///
/// 构造注入
///
///
///
///
public WmsInArrivalService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository, IErpSyncServer erpSyncServer)
{
this._dataContext = dataRepositoryContext;
this._configuration = configuration;
this._iSQLNodeRepository = iSQLNodeRepository;
this._syncServer = erpSyncServer;
}
#endregion
#region 到货通知单主表
///
/// 分页查询到货通知单主表数据
///
/// 到货通知单查询条件实体类对象
///
public OperateResultInfo> GetWmsInArrivalListForPage(WmsInArrivalSearchMd arrivalSearchMd)
{
try
{
#region SQL语句生成
StringBuilder sqlCondition = new StringBuilder();
if (!string.IsNullOrEmpty(arrivalSearchMd.ArrivalNoMsg))
{
sqlCondition.Append($" AND ARRIVAL_NO = '{arrivalSearchMd.ArrivalNoMsg}'");
}
if (!string.IsNullOrEmpty(arrivalSearchMd.SourceNoMsg))
{
sqlCondition.Append($" AND SOURCE_BILL_NO = '{arrivalSearchMd.SourceNoMsg}'");
}
if (!string.IsNullOrEmpty(arrivalSearchMd.WarehouseMsg))
{
sqlCondition.Append($" AND WAREHOUSE_CODE = '{arrivalSearchMd.WarehouseMsg}'");
}
if (!string.IsNullOrEmpty(arrivalSearchMd.PurchaseStaffMsg))
{
sqlCondition.Append($" AND PURCHASE_STAFF = '{arrivalSearchMd.PurchaseStaffMsg}'");
}
if (!string.IsNullOrEmpty(arrivalSearchMd.ArrivalTypeMsg))
{
sqlCondition.Append($" AND ARRIVAL_TYPE = '{arrivalSearchMd.ArrivalTypeMsg}'");
}
if (!string.IsNullOrEmpty(arrivalSearchMd.ArrivalStatus))
{
sqlCondition.Append($" AND ARRIVAL_STATUS = '{arrivalSearchMd.ArrivalStatus}'");
}
if (!string.IsNullOrEmpty(arrivalSearchMd.MaterialMsg))
{
sqlCondition.Append($" AND ARRIVAL_ID IN (SELECT ARRIVAL_ID FROM VW_WMS_IN_ARRIVAL_DTL WHERE MATERIEL_CODE LIKE '%{arrivalSearchMd.MaterialMsg}%' OR MATERIEL_NAME LIKE '%{arrivalSearchMd.MaterialMsg}%' OR MATERIEL_BARCODE LIKE '%{arrivalSearchMd.MaterialMsg}%')");
}
if (!string.IsNullOrEmpty(arrivalSearchMd.SupplierMsg))
{
sqlCondition.Append($" AND ARRIVAL_ID IN (SELECT ARRIVAL_ID FROM VW_WMS_IN_ARRIVAL_DTL WHERE SUPPLIER_CODE LIKE '%{arrivalSearchMd.SupplierMsg}%' OR SUPPLIER_NAME LIKE '%{arrivalSearchMd.SupplierMsg}%')");
}
if (!string.IsNullOrEmpty(arrivalSearchMd.StartCreateTime))
{
sqlCondition.Append($" AND CREATE_TIME >= '{arrivalSearchMd.StartCreateTime}'");
}
if (!string.IsNullOrEmpty(arrivalSearchMd.EndCreateTime))
{
sqlCondition.Append($" AND CREATE_TIME <= '{arrivalSearchMd.EndCreateTime}'");
}
//StringBuilder sqlCountArrivalData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WMS_IN_ARRIVAL WHERE 1=1");
//sqlCountArrivalData.Append(sqlCondition.ToString());
int pageStartIndex = (arrivalSearchMd.PageNum - 1) * arrivalSearchMd.EveryPageQty;
int pageEndIndex = arrivalSearchMd.PageNum * arrivalSearchMd.EveryPageQty;
//StringBuilder sqlQueryArrivalData = new StringBuilder($@"
// SELECT
// ARRIVAL_ID,
// ARRIVAL_NO,
// SOURCE_BILL_NO,
// ARRIVAL_TYPE,
// ARRIVAL_TYPE_NAME,
// PURCHASE_ORDER_NO,
// PURCHASE_STAFF,
// PURCHASE_TIME,
// WAREHOUSE_CODE,
// WAREHOUSE_NAME,
// ARRIVAL_STATUS,
// ARRIVAL_STATUS_NAME,
// EXPECT_ARRIVAL_TIME,
// ACTUAL_ARRIVAL_TIME,
// DESCRIBE,
// CREATE_BY,
// CREATE_NAME,
// CREATE_TIME,
// UPDATE_BY,
// UPDATE_NAME,
// UPDATE_TIME
// FROM
// VW_WMS_IN_ARRIVAL
// WHERE
// 1=1
// {sqlCondition}
// ORDER BY UPDATE_TIME DESC,CREATE_TIME DESC
// OFFSET {pageStartIndex} ROWS
// FETCH NEXT {arrivalSearchMd.EveryPageQty} ROWS ONLY
// ");
StringBuilder sqlQueryArrivalData = new StringBuilder($@"
SELECT
ARRIVAL_ID,
ARRIVAL_NO,
SOURCE_BILL_NO,
ARRIVAL_TYPE,
ARRIVAL_TYPE_NAME,
PURCHASE_ORDER_NO,
PURCHASE_STAFF,
PURCHASE_TIME,
WAREHOUSE_CODE,
WAREHOUSE_NAME,
ARRIVAL_STATUS,
ARRIVAL_STATUS_NAME,
EXPECT_ARRIVAL_TIME,
ACTUAL_ARRIVAL_TIME,
DESCRIBE,
CREATE_BY,
CREATE_NAME,
CREATE_TIME,
UPDATE_BY,
UPDATE_NAME,
UPDATE_TIME
FROM
VW_WMS_IN_ARRIVAL
WHERE
1=1
{sqlCondition}
");
#endregion
//int dataCount = Convert.ToInt32(new DataRepository