using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using djy.Model; using System.Text.Json; using DotNetCore.CAP; using Microsoft.IdentityModel.Tokens; using System.Security.Claims; using djy.IService.Djy; using Common.DJYModel; using Common.Extensions; using Common.Entity; using Common.Tools; using Common; using djy.Service.Report; namespace djy.Service.DjyService { public class ToolsService : ServBase, IToolsService { #region 数据字典配置 public ReturnPagedResult GetDictionaryList(tb_sys_Dictionary Dto, PageEntity pageEntity) { var rs = new ReturnPagedResult(); //var sql = DbBus.Get(DbList.djypublicedb).Select().WhereIf(Dto.GroupName.IsNotNull(), w => w.GroupName == Dto.GroupName) // .WhereIf(Dto.Key.IsNotNull(), w => w.Key == Dto.Key); //var list = sql.Count(out var totalcount).Page(pageEntity.Page, pageEntity.Limit).ToList(); //rs.Pageset(pageEntity, totalcount); //rs.Data = list; //rs.OK(); var getlist = YsRedisHelp.RedisGet>("dictlist"); if (getlist == null) { var sql = DbBus.Get(DbList.djydb).Select().WhereIf(Dto.GroupName.IsNotNull(), w => w.GroupName == Dto.GroupName) .WhereIf(Dto.Key.IsNotNull(), w => w.Key == Dto.Key); rs.Data = sql.ToList(); } else { if (Dto.GroupName.IsNotNull() && Dto.Key.IsNull()) { rs.Data = getlist.Where(w => w.GroupName == Dto.GroupName).ToList(); } else if (Dto.GroupName.IsNotNull() && Dto.Key.IsNotNull()) { rs.Data = getlist.Where(w => w.GroupName == Dto.GroupName && w.Key == Dto.Key).ToList(); } else { rs.Data = getlist; } } rs.Count = rs.Data.Count(); rs.PageIndex = 1; rs.Limit = rs.Data.Count; rs.OK(); return rs; } public ReturnResult UpDictionary(tb_sys_Dictionary Dto) { var rs = new ReturnResult(); rs.Data = DbBus.Get(DbList.djydb).Update().Set(w => w.Value, Dto.Value).WhereIf(Dto.Key.IsNotNull(), w => w.Key == Dto.Key) .WhereIf(Dto.Id > 0, w => w.Id == Dto.Id).ExecuteAffrows(); rs.OK(); bindConfigDict(); return rs; } /// /// 初始化绑定数据字典到 sysOptionConfig.ConfigDcit配置 /// /// 间隔自动刷新 /// 间隔时间 分钟 默认一分钟 /// public bool bindConfigDict(bool Isjob = false, int jobtime = 1) { var GetDcitList = DbBus.Get(DbList.djydb).Select().OrderBy(w => w.GroupName).OrderBy(w => w.Indexint).ToList(); var grouplist = GetDcitList.GroupBy(w => w.GroupName).Select(g => new { GroupName = g.Key }).ToList(); YsRedisHelp.RedisSet("dictlist", GetDcitList.Where(w => w.GroupName != "sys").ToList()); //grouplist.ForEach(item => { // //写入redis缓存 // YsRedisHelp.RedisSet("dict_"+item.GroupName, GetDcitList.Where(w=>w.GroupName==item.GroupName).ToList()); //}); var dlist = GetDcitList.Where(w => w.DictType == "config").ToList(); if (dlist.Count == 0) { //没有字典数据则初始化数据库字典 sysOptionConfig.Webconfig.ConfigInitcount++; if (sysOptionConfig.Webconfig.ConfigInitStatus == false) { sysOptionConfig.Webconfig.ConfigInitStatus = true; _DictInit(); dlist = DbBus.Get(DbList.djydb).Select().Where(w => w.DictType == "config").OrderBy(w => w.GroupName).ToList(); } } var dictlist = dlist.ToDictionary(item => string.Format("{0}.{1}", item.GroupName, item.Key), item => item.Value); sysOptionConfig.Webconfig.ConfigList = dictlist; if (Isjob) { int _dict_refreshtime = jobtime; try { if (sysOptionConfig.Webconfig.ConfigList.GetValueOrDefault("sys.dict_refreshtime").IsNotNull()) { _dict_refreshtime = int.Parse(sysOptionConfig.Webconfig.ConfigList.GetValueOrDefault("sys.dict_refreshtime")); } } catch { } Hangfire.RecurringJob.AddOrUpdate(() => bindConfigDict(false, 1), Hangfire.Cron.MinuteInterval(_dict_refreshtime), TimeZoneInfo.Local); } _LogsAdd($"刷新缓存{DateTime.Now},Isjob:{Isjob}", "bindConfigDict", null); return true; } /// /// 获取数据字典分组列表 /// /// public Dictionary GetConfigList(string GroupName = null) { if (sysOptionConfig.Webconfig.ConfigList == null) { bindConfigDict(); } if (GroupName.IsNotNull()) return sysOptionConfig.Webconfig.ConfigList.Where(w => w.Key.StartsWith(GroupName + ".")).ToDictionary(x => x.Key, x => x.Value); else return sysOptionConfig.Webconfig.ConfigList; } /// /// 获取配置参数 /// /// /// 默认sys public string GetConfigKey(string key, string GroupName = "sys") { if (sysOptionConfig.Webconfig.ConfigList == null) { bindConfigDict(); } var dictkey = string.Format("{0}.{1}", GroupName, key); return sysOptionConfig.Webconfig.ConfigList.GetValueOrDefault(dictkey); } /// /// 获取配置参数转djy标准dict类型对象列表 /// /// /// /// public List GetConfigKeyToDictList(string Key, string GroupName = "sys") { var list = new List(); try { list = Json.JsonToObject>(GetConfigKey(Key)); } catch { } return list; } /// /// 初始化配置数据库字典 /// private static void _DictInit() {// sysOptionConfig.Webconfig.ConfigInitStatus = true; var dictlist = new List(); dictlist.AddRange( new List() { new tb_sys_Dictionary{Indexint=1, GroupName="sys", Key="txxp_pyhost", Value="http://47.104.90.170:9000", Title="提箱小票爬虫服务器", Memo="" }, new tb_sys_Dictionary{Indexint=3, GroupName="sys", Key="Email_SmtpHost", Value="smtpcom.263xmail.com", Title="email smtm服务器地址", Memo="" }, new tb_sys_Dictionary{Indexint=4, GroupName="sys", Key="Email_SmtpPort", Value="465", Title="email发动端口", Memo="" }, new tb_sys_Dictionary{Indexint=5, GroupName="sys", Key="Email_LoginName", Value="admin@dongshengsoft.com", Title="email发送者账户", Memo="" }, new tb_sys_Dictionary{Indexint=6, GroupName="sys", Key="Email_Password", Value="ds!@#)(*", Title="发送账户密码", Memo="" }, new tb_sys_Dictionary{Indexint=7, GroupName="sys", Key="Email_SendAccess", Value="dongshengsoft@dongshengsoft.com", Title="发送者", Memo="" }, new tb_sys_Dictionary{Indexint=12, GroupName="sys", Key="host_djypublice", Value="http://txxp.myshipping.net", Title="大简云公用应用url地址", Memo="" }, new tb_sys_Dictionary{Indexint=14, GroupName="sys", Title="船务公司数据 json格式",Key="carrierlist", Value="[{\"Code\":\"BSL\",\"Name\":\"巴拉基船务\"},{\"Code\":\"MEL\",\"Name\":\"玛利亚那\"},{\"Code\":\"JIJIANG\",\"Name\":\"锦江航运\"},{\"Code\":\"SCIL\",\"Name\":\"印度国航\"},{\"Code\":\"PCL\",\"Name\":\"泛舟海运\"},{\"Code\":\"SITC\",\"Name\":\"海丰船务\"},{\"Code\":\"SLS\",\"Name\":\"新加坡海领\"},{\"Code\":\"CCL\",\"Name\":\"中通\"},{\"Code\":\"STX\",\"Name\":\"世腾船务\"},{\"Code\":\"UASC\",\"Name\":\"阿拉伯航运\"},{\"Code\":\"NILEDUTCH\",\"Name\":\"尼罗河航运\"},{\"Code\":\"MCC\",\"Name\":\"新航\"},{\"Code\":\"SML\",\"Name\":\"森罗商船\"},{\"Code\":\"YML\",\"Name\":\"阳明\"},{\"Code\":\"OUASCA\",\"Name\":\"怡和\"},{\"Code\":\"KKC\",\"Name\":\"神原汽船\"},{\"Code\":\"CNC\",\"Name\":\"正利航运\",\"Config\":\"OrderHead=AA\"},{\"Code\":\"ANL\",\"Name\":\"澳航\",\"Config\":\"OrderHead=WD\"},{\"Code\":\"VSI\",\"Name\":\"维萨航运\"},{\"Code\":\"SMH\",\"Name\":\"上海德生达人\"},{\"Code\":\"SWIRE\",\"Name\":\"太古\"},{\"Code\":\"CMA\",\"Name\":\"法国达飞\",\"Config\":\"OrderHead=QD\"},{\"Code\":\"ZIM\",\"Name\":\"以星轮船\"},{\"Code\":\"HLC\",\"Name\":\"赫伯罗特\"},{\"Code\":\"ASL\",\"Name\":\"亚海\"},{\"Code\":\"CKL\",\"Name\":\"天敬海运\"},{\"Code\":\"MSC\",\"Name\":\"地中海航运\"},{\"Code\":\"GSL\",\"Name\":\"金星轮船\"},{\"Code\":\"CCNI\",\"Name\":\"智利航运\"},{\"Code\":\"IAL\",\"Name\":\"运达\"},{\"Code\":\"HMM\",\"Name\":\"现代\"},{\"Code\":\"OOCL\",\"Name\":\"东方海外\"},{\"Code\":\"WHL\",\"Name\":\"万海\"},{\"Code\":\"DSL\",\"Name\":\"斗宇\"},{\"Code\":\"TYS\",\"Name\":\"太荣\"},{\"Code\":\"DYL\",\"Name\":\"东映\"},{\"Code\":\"FESCO\",\"Name\":\"FESCO\"},{\"Code\":\"GFS\",\"Name\":\"格飞驰\"},{\"Code\":\"WINFAST\",\"Name\":\"永发航运\"},{\"Code\":\"ONE\",\"Name\":\"网联船务\"},{\"Code\":\"EAS\",\"Name\":\"达通\"},{\"Code\":\"ACI\",\"Name\":\"亚利安莎\"},{\"Code\":\"APL\",\"Name\":\"美国总统\"},{\"Code\":\"TSL\",\"Name\":\"德祥\"},{\"Code\":\"MARI\",\"Name\":\"玛丽亚娜\"},{\"Code\":\"ESL\",\"Name\":\"阿联酋航运\"},{\"Code\":\"KMTC\",\"Name\":\"高丽\"},{\"Code\":\"HSD\",\"Name\":\"汉堡南美\"},{\"Code\":\"AAL\",\"Name\":\"澳亚航运\"},{\"Code\":\"CUL\",\"Name\":\"中联航运\"},{\"Code\":\"SINOLINE\",\"Name\":\"中外运集装箱\"},{\"Code\":\"MSK\",\"Name\":\"马士基\"},{\"Code\":\"PHL\",\"Name\":\"浦海\"},{\"Code\":\"SAF\",\"Name\":\"南非航运\"},{\"Code\":\"EMC\",\"Name\":\"长荣\"},{\"Code\":\"SNKO\",\"Name\":\"长锦\"},{\"Code\":\"COHE\",\"Name\":\"京汉\"},{\"Code\":\"NAM\",\"Name\":\"南星\"},{\"Code\":\"SOF\",\"Name\":\"顺发\"},{\"Code\":\"PIL\",\"Name\":\"太平\"},{\"Code\":\"IRL\",\"Name\":\"伊朗航运\"},{\"Code\":\"POS\",\"Name\":\"泛奥升\"},{\"Code\":\"GQF\",\"Name\":\"安通\"},{\"Code\":\"HAT\",\"Name\":\"兴亚船务\"},{\"Code\":\"RCL\",\"Name\":\"宏海\"},{\"Code\":\"COSCO\",\"Name\":\"中远海运\"}]", Memo="" }, new tb_sys_Dictionary{Indexint=15, GroupName="sys", Key="boxstationlist", Title="场站 json列表数据",Value="[{\"Code\":\"JIEFENG\",\"Name\":\"捷丰国际\",\"Config\":\"\"},{\"Code\":\"STXKEYUN\",\"Name\":\"世腾客运\",\"Config\":\"\"},{\"Code\":\"ZHONGCHUANG\",\"Name\":\"中创物流\",\"Config\":\"\"},{\"Code\":\"GangLianXin\",\"Name\":\"港联欣物流\",\"Config\":\"\"},{\"Code\":\"GLCZ\",\"Name\":\"青岛港路\",\"Config\":\"\"},{\"Code\":\"SSCZ\",\"Name\":\"胜狮物流\",\"Config\":\"\"},{\"Code\":\"SZX\",\"Name\":\"青岛神州行\",\"Config\":\"\"},{\"Code\":\"GANGWAN\",\"Name\":\"青岛港联海物流\",\"Config\":\"\"},{\"Code\":\"ZHENGHUA\",\"Name\":\"青岛振华\",\"Config\":\"\"},{\"Code\":\"WYCZ\",\"Name\":\"中国外运\",\"Config\":\"\"},{\"Code\":\"LUHAI\",\"Name\":\"青岛陆海国际\",\"Config\":\"\"},{\"Code\":\"JINHENG\",\"Name\":\"青岛锦恒\",\"Config\":\"\"},{\"Code\":\"GLJ\",\"Name\":\"港联捷,怡航\",\"Config\":\"\"},{\"Code\":\"DAYA\",\"Name\":\"大亚场站\",\"Config\":\"\"},{\"Code\":\"WLXX\",\"Name\":\"物流信息\",\"Config\":\"\"},{\"Code\":\"FLCZ\",\"Name\":\"泛联场站\",\"Config\":\"\"},{\"Code\":\"QDKY\",\"Name\":\"青岛客运\",\"Config\":\"\"},{\"Code\":\"SDITDS\",\"Name\":\"通关与物流状态\",\"Config\":\"\"},{\"Code\":\"MJCZ\",\"Name\":\"青岛珉钧\",\"Config\":\"\"},{\"Code\":\"MGDG\",\"Name\":\"青岛东港,明港东港\",\"Config\":\"\"},{\"Code\":\"QDGLH\",\"Name\":\"青岛港联华\",\"Config\":\"\"},{\"Code\":\"CHANGRONG\",\"Name\":\"长荣\",\"Config\":\"vgmislogin=1\"},{\"Code\":\"GLR\",\"Name\":\"港联荣\",\"Config\":\"vgmislogin=1\"},{\"Code\":\"YGT\",\"Name\":\"云港通\",\"Config\":\"\"},{\"Code\":\"XINBADA\",\"Name\":\"新霸达场站\",\"Config\":\"vgmislogin=1\"}]", Memo="" }, new tb_sys_Dictionary{Indexint=16, GroupName="sys", Key="boxweigthbetween", Title="箱子重量区间",Value="2600,36000", Memo="" } // new tb_tb_sys_Dictionary{Indexint=9, GroupName="sys", Key="", Title="",Value="", Memo="" } } ); dictlist.ForEach(x => { x.Init(); }); DbBus.Get(DbList.djydb).Insert(dictlist).ExecuteAffrows(); } #endregion #region 统一任务调用 /// /// 统一任务调用 /// public void AutoJob() { if (!sysOptionConfig.Webconfig.IsDev) { Hangfire.RecurringJob.AddOrUpdate(() => _LogsClear(), "0 0 0 * * ? ", TimeZoneInfo.Local); } if (sysOptionConfig.Webconfig.IsReport) { Hangfire.RecurringJob.AddOrUpdate(() => new ReportService().TemplateTask(), "0 0 0 * * ? ", TimeZoneInfo.Local); } } #endregion public void LogsAdd(string Message, string GroupName = null, object DataJson = null, string ObjGid = null, object ResultJson = null) { _LogsAdd(Message, GroupName, DataJson, ObjGid, ResultJson); } /// /// 日志数据库定期清理 /// public void _LogsClear() { //删除10天前的并收缩logs日志数据库文件 //var delcount = DbBus.Get(DbList.Logsdb).Delete().Where(w => w.AddTime < DateTime.Now.AddDays(-7).ToTimeStamp()).ExecuteAffrows(); //var dbcc = DbBus.Get(DbList.Logsdb).Ado.ExecuteNonQuery("DBCC SHRINKFILE (N'djy_logs_log' , 1, TRUNCATEONLY)"); //_LogsAdd("del Logs :" + delcount + "行", "logs", new { delcount, dbcc }, null); } } }