using DapperORMCore.Context.DataContext;
using DapperORMCore.Context.Extend;
using DapperORMCore.Model.BaseModel;
using DapperORMCore.Model.CoreModel;
using DapperORMCore.Repository.IRepositorys;
using DapperORMCore.String.Consts;
using DapperORMCore.String.Enums;
using Microsoft.Extensions.Configuration;
using NXWMS.Code;
using NXWMS.DataAccess.Entity;
using NXWMS.IService.NXWMS;
using NXWMS.Model.AppModels.Condition;
using NXWMS.Model.AppModels.Result;
using NXWMS.Model.AppModels.Result.SysSettings;
using NXWMS.Model.Common;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WestDistance.DapperORM.Repository.Repositorys;
namespace NXWMS.Service.NXWMS
{
///
/// 主键接口
///
[AutoInject(typeof(ISequenceService), InjectType.Scope)]
public class SequenceService : ServiceBase, ISequenceService
{
///
/// 系统操作仓储中转
///
private IDataRepositoryContext _dataContext;
///
/// 配置
///
private IConfiguration _configuration;
///
/// SQL节点仓储
///
private ISQLNodeRepository _iSQLNodeRepository;
public SequenceService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository)
{
this._dataContext = dataRepositoryContext;
this._configuration = configuration;
this._iSQLNodeRepository = iSQLNodeRepository;
}
///
/// 获取单一主键当前配置
///
///
///
public OperateResultInfo Get(SequenceCondition info)
{
var whereList = GetFieldKeyList(info);
var result = new DataRepository(_dataContext).Query("SYS_SEQUENCE", whereList).FirstOrDefault();
if (result != null)
{
return SuccessStatus(result);
}
return FailStatus();
}
///
///
///
///
///
public OperateResultInfo GetNext(SequenceCondition info)
{
return null;
}
///
/// 获取主键配置列表
///
///
///
public OperateResultInfo> GetList(SequenceSearchCondition info)
{
var sqlAndBuilder = new StringBuilder();
var sqlOrBuilder = new StringBuilder();
var 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),
* FROM SYS_SEQUENCE WHERE 1=1 AND DEL_FLAG = 0 ";
if (info.IsUsed != null)
{
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("USED_FLAG", info.IsUsed, DBOperationString._Equal));
}
if (info.SQId != null)
{
if (info.SQId > 0)
{
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("SQ_ID", info.SQId, DBOperationString._Equal));
}
}
if (!string.IsNullOrWhiteSpace(info.SQCode))
{
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("SQ_CODE", info.SQCode, DBOperationString._ContainIn));
}
if (info.SQType != null)
{
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("SQ_TYPE", info.SQType, DBOperationString._Equal));
}
if (!string.IsNullOrWhiteSpace(info.SQIds))
{
sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("SQ_ID", info.SQIds, DBOperationString._In));
}
var result = new DataRepository(_dataContext).Query(sql);
return SuccessStatus(result.ToList());
}
#region Private
///
/// 条件统一下,用统一筛选
///
///
///
private List GetFieldKeyList(SequenceCondition info)
{
var whereList = new List();
whereList = info.NewId != null ? whereList.AddFieldKeyInfo(nameof(SYS_SEQUENCE.NEWID), info.NewId, EnumCSharpPropertyType.STRING, DBOperationString._Equal) : whereList;
whereList = !string.IsNullOrWhiteSpace(info.SQCode) ? whereList.AddFieldKeyInfo(nameof(SYS_SEQUENCE.SQ_CODE), info.SQCode, EnumCSharpPropertyType.STRING, DBOperationString._In) : whereList;
whereList = info.SQId != null ? whereList.AddFieldKeyInfo(nameof(SYS_SEQUENCE.SQ_ID), info.SQId, EnumCSharpPropertyType.STRING, DBOperationString._Equal) : whereList;
return whereList;
}
#endregion
}
}