diff --git a/APT.MicroApi/APT.PP.WebApi/App_Start/DIConfig.cs b/APT.MicroApi/APT.PP.WebApi/App_Start/DIConfig.cs index 3178b5f..c43c5b0 100644 --- a/APT.MicroApi/APT.PP.WebApi/App_Start/DIConfig.cs +++ b/APT.MicroApi/APT.PP.WebApi/App_Start/DIConfig.cs @@ -3,12 +3,14 @@ using APT.BaseData.Domain.IServices.BD; using APT.BaseData.Domain.IServices.BS; using APT.BaseData.Domain.IServices.EX; using APT.BaseData.Domain.IServices.FM; +using APT.BaseData.Domain.IServices.OP; using APT.BaseData.Domain.IServices.Platform; using APT.BaseData.Services.DomainServices; using APT.BaseData.Services.Services.BD; using APT.BaseData.Services.Services.BS; using APT.BaseData.Services.Services.EX; using APT.BaseData.Services.Services.FM; +using APT.BaseData.Services.Services.OP; using APT.BaseData.Services.Services.Platform; using APT.BaseData.Services.Sys; using Autofac; @@ -59,6 +61,7 @@ namespace APT.RB.WebApi.App_Start builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); + builder.RegisterType().As().InstancePerLifetimeScope(); } } } diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SCController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SCController.cs index d93d288..9c47547 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SCController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SCController.cs @@ -4,10 +4,13 @@ using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.IServices; using APT.BaseData.Domain.IServices.FM; +using APT.BaseData.Domain.IServices.OP; using APT.Infrastructure.Core; +using APT.Migrations; using APT.MS.Domain.Entities.AE; using APT.MS.Domain.Entities.BS; using APT.MS.Domain.Entities.HM; +using APT.MS.Domain.Entities.LR; using APT.MS.Domain.Entities.PF; using APT.MS.Domain.Entities.SC; using APT.MS.Domain.Entities.TL; @@ -35,13 +38,15 @@ namespace APT.PP.WebApi.Controllers.Api.PP IPFSysLogService SysLogService { get; set; } ISCMTMeetingService SCMTMeetingService { get; set; } IFMSyncLogDetailService SyncLogDetailService { get; set; } - public SCController(IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IFMUserService userService, ISCMTMeetingService scMTMeetingService, IFMSyncLogDetailService syncLogDetailService) + IOPTenantDBConnService OPTenantDBConnService { get; set; } + public SCController(IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IFMUserService userService, ISCMTMeetingService scMTMeetingService, IFMSyncLogDetailService syncLogDetailService, IOPTenantDBConnService oPTenantDBConnService) { NotificationTaskService = notificationTaskService; UserService = userService; SysLogService = sysLogService; SCMTMeetingService = scMTMeetingService; SyncLogDetailService = syncLogDetailService; + OPTenantDBConnService = oPTenantDBConnService; } /// @@ -2215,5 +2220,275 @@ namespace APT.PP.WebApi.Controllers.Api.PP //} + #region 法律法规库 从集团同步信息 子公司配跑批 总部不能配跑批 或者总部此跑批禁用 + + + /// + /// 法律法规库 从集团同步信息 + /// + /// + /// + [HttpPost, Route("LawSyncToSub")] + public JsonActionResult LawSyncToSub([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + #region 根据跑批 获取 待同步的 法律法规信息 listSync + + Guid GuiDHead = new Guid(FilePathHead.JY.GetDescription()); + IEnumerable listSync = null; + var task = GetEntity(filter.Keyword); + DateTime dtMin = DateTime.Now; + if (!string.IsNullOrEmpty(filter.Parameter1)) + { + try + { + dtMin = Convert.ToDateTime(filter.Parameter1); + } + catch + { + dtMin = DateTime.Now; + } + } + if (task.SYNC_UNIT.HasValue)//秒 = 0, //分 = 1, //时 = 2, //天 = 3, + { + switch (task.SYNC_UNIT) + { + case 0: + dtMin = dtMin.AddSeconds(-1 * task.PERIODIC_TIME); + break; + case 1: + dtMin = dtMin.AddMinutes(-1 * task.PERIODIC_TIME); + break; + case 2: + dtMin = dtMin.AddHours(-1 * task.PERIODIC_TIME); + break; + case 3: + dtMin = dtMin.AddDays(-1 * task.PERIODIC_TIME); + break; + default: + break; + } + } + string strConn = OPTenantDBConnService.GetConnByORGID(GuiDHead); + try + { + using (var context = new MigrationContext(strConn)) + { + listSync = context.GetEntities(e => e.CREATE_TIME >= dtMin || e.CREATE_TIME >= dtMin, null, new string[] { "Nav_LawType", "Nav_LawVersion.Nav_Files.Nav_ImgFile.Nav_File" }); + } + } + catch { } + if (listSync == null || listSync.Count() < 1) + return true; + + #endregion + + + Guid AdminID = new Guid("11111111-1111-1111-1111-111111111111"); + Guid? OrgID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; + DateTime dtNow = DateTime.Now.Date; + + #region LR/LRLaw SyncToLocal + + var listLawID = listSync.Select(e => e.ID); + T_LR_LAW_VERSION modelVersion = null; + IEnumerable listLawVersionData = GetEntities(e => listLawID.Contains(e.LAW_ID), null, null).ToList(); //判断修改 主要是 状态 + + /////数据组装和查验 + List Nav_LawType = new List(); + List Nav_LawVersion = new List(); + List Nav_Files = new List(); + List Nav_ImgFile = new List(); + List Nav_File = new List(); + + #region 全部拆到组合中去再统一处理 + + foreach (var item in listSync) + { + if (!Nav_LawType.Contains(item.Nav_LawType)) + Nav_LawType.Add(item.Nav_LawType); + if (item.Nav_LawVersion != null && item.Nav_LawVersion.Count() > 0) + Nav_LawVersion.AddRange(item.Nav_LawVersion); + } + + foreach (var item in Nav_LawVersion) + { + if (item.Nav_Files != null && item.Nav_Files.Count() > 0) + Nav_Files.AddRange(item.Nav_Files); + } + foreach (var item in Nav_Files) + { + if (item.Nav_ImgFile != null) + Nav_ImgFile.Add(item.Nav_ImgFile); + } + foreach (var item in Nav_ImgFile) + { + if (item.Nav_File != null) + Nav_File.Add(item.Nav_File); + } + + #endregion + + #region 组装 现有数据 + + if (listLawVersionData != null && listLawVersionData.Count() > 0) + { + //数据库查询 没有的拉进来 + foreach (var item in listLawVersionData) + { + modelVersion = Nav_LawVersion.FirstOrDefault(e => e.ID == item.ID); + if (modelVersion != null) + continue; + Nav_LawVersion.Add(item); + } + } + + #endregion + + #region 数据统一处理 CREATE_TIME MODIFY_TIME MODIFIER_ID 等 + + if (Nav_LawVersion != null && Nav_LawVersion.Any()) + { + var listVersionOK = Nav_LawVersion.Where(e => e.VERSION_STATUS == BSLawStatusEnum.现行).OrderBy(e => e.LAW_ID).ThenByDescending(e => e.ENTER_TIME).ToList(); + if (listVersionOK != null && listVersionOK.Count > 0) + { + for (int i = 1; i < listVersionOK.Count; i++) + { + if (listVersionOK[i].LAW_ID == listVersionOK[i - 1].LAW_ID) + { + listVersionOK[i].VERSION_STATUS = BSLawStatusEnum.废止; + } + } + } + } + + if (listSync != null && listSync.Count() > 0) + { + foreach (var item in listSync) + { + item.Nav_LawType = null; + item.Nav_LawVersion = null; + item.Nav_User = null; + if (item.ORG_ID == GuiDHead) + { + item.ORG_ID = OrgID; + item.CREATER_ID = AdminID; + item.CREATE_TIME = dtNow; + item.USER_ID = AdminID; + } + item.MODIFY_TIME = dtNow; + item.MODIFIER_ID = AdminID; + } + } + + if (Nav_LawType != null && Nav_LawType.Count() > 0) + { + foreach (var item in Nav_LawType) + { + if (item.ORG_ID == GuiDHead) + { + item.ORG_ID = OrgID; + item.CREATER_ID = AdminID; + item.CREATE_TIME = dtNow; + } + item.MODIFY_TIME = dtNow; + item.MODIFIER_ID = AdminID; + } + } + + if (Nav_LawVersion != null && Nav_LawVersion.Count() > 0) + { + foreach (var item in Nav_LawVersion) + { + item.Nav_Files = null; + if (item.ORG_ID == GuiDHead) + { + item.ORG_ID = OrgID; + item.CREATER_ID = AdminID; + item.CREATE_TIME = dtNow; + } + item.MODIFY_TIME = dtNow; + item.MODIFIER_ID = AdminID; + } + } + + if (Nav_Files != null && Nav_Files.Count() > 0) + { + foreach (var item in Nav_Files) + { + item.Nav_ImgFile = null; + if (item.ORG_ID == GuiDHead) + { + item.ORG_ID = OrgID; + item.CREATER_ID = AdminID; + item.CREATE_TIME = dtNow; + } + item.MODIFY_TIME = dtNow; + item.MODIFIER_ID = AdminID; + } + } + + if (Nav_ImgFile != null && Nav_ImgFile.Count() > 0) + { + foreach (var item in Nav_ImgFile) + { + if (item.ORG_ID == GuiDHead) + { + item.ORG_ID = OrgID; + item.CREATER_ID = AdminID; + item.CREATE_TIME = dtNow; + } + item.MODIFY_TIME = dtNow; + item.MODIFIER_ID = AdminID; + } + } + + if (Nav_File != null && Nav_File.Count() > 0) + { + foreach (var item in Nav_File) + { + if (item.ORG_ID == GuiDHead) + { + item.ORG_ID = OrgID; + item.CREATER_ID = AdminID; + item.CREATE_TIME = dtNow; + } + item.MODIFY_TIME = dtNow; + item.MODIFIER_ID = AdminID; + } + } + #endregion + + + #region 数据处理 + + UnifiedCommit(() => + { + if (listSync != null && listSync.Any()) + BantchSaveEntityNoCommit(listSync); + if (Nav_LawType != null && Nav_LawType.Any()) + BantchSaveEntityNoCommit(Nav_LawType); + if (Nav_LawVersion != null && Nav_LawVersion.Any()) + BantchSaveEntityNoCommit(Nav_LawVersion); + if (Nav_Files != null && Nav_Files.Any()) + BantchSaveEntityNoCommit(Nav_Files); + if (Nav_ImgFile != null && Nav_ImgFile.Any()) + BantchSaveEntityNoCommit(Nav_ImgFile); + if (Nav_File != null && Nav_File.Any()) + BantchSaveEntityNoCommit(Nav_File); + }); + + #endregion + + #endregion + + return true; + }); + } + + + + #endregion } } diff --git a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/LRController/6LawController.cs b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/LRController/6LawController.cs index ccb53c3..fb29861 100644 --- a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/LRController/6LawController.cs +++ b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/LRController/6LawController.cs @@ -151,6 +151,8 @@ namespace APT.LR.WebApi.Controllers.Api } } + entity.MODIFY_TIME = DateTime.Now;//作为数据同步的判断标记符 + UnifiedCommit(() => { UpdateEntityNoCommit(entity); @@ -376,78 +378,82 @@ namespace APT.LR.WebApi.Controllers.Api return SafeGetPagedData(delegate (PagedActionResult result) { string strConn = OPTenantDBConnService.GetConnByORGID(new Guid(FilePathHead.JY.GetDescription())); - using (var context = new MigrationContext(strConn)) + try { - Expression> expression = e => !e.IS_DELETED; - if (pageFilter.FilterGroup != null && pageFilter.FilterGroup.Rules != null && pageFilter.FilterGroup.Rules.Count() > 0) + using (var context = new MigrationContext(strConn)) { - foreach (var item in pageFilter.FilterGroup.Rules) + Expression> expression = e => !e.IS_DELETED; + if (pageFilter.FilterGroup != null && pageFilter.FilterGroup.Rules != null && pageFilter.FilterGroup.Rules.Count() > 0) { - if (item.Field == "NAME") + foreach (var item in pageFilter.FilterGroup.Rules) { - expression = expression.And(e => e.NAME.Contains(item.Value.ToString())); - } - else if (item.Field == "LAW_STATUS" && item.Value != null) - { - try + if (item.Field == "NAME") { - BSLawStatusEnum LAW_STATUS = (BSLawStatusEnum)Convert.ToInt32(item.Value.ToString()); - expression = expression.And(e => e.LAW_STATUS == LAW_STATUS); + expression = expression.And(e => e.NAME.Contains(item.Value.ToString())); } - catch { } - } - } - } - if (pageFilter.FilterGroup != null && pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Count() > 0) - { - foreach (var item in pageFilter.FilterGroup.Groups) - { - DateTime? UPDATE_TIMES = null; - DateTime? UPDATE_TIMEE = null; - if (item.Rules != null && item.Rules.Any() && item.Rules.Count() > 0) - { - foreach (var itemR in item.Rules) + else if (item.Field == "LAW_STATUS" && item.Value != null) { - if (itemR.Field == "UPDATE_TIME" && itemR.Operate == FilterOperate.GreaterThanOrEqual) + try { - UPDATE_TIMES = Convert.ToDateTime(itemR.Value.ToString()); - } - else if (itemR.Field == "UPDATE_TIME" && itemR.Operate == FilterOperate.LessThanOrEqual) - { - UPDATE_TIMEE = Convert.ToDateTime(itemR.Value.ToString()); + BSLawStatusEnum LAW_STATUS = (BSLawStatusEnum)Convert.ToInt32(item.Value.ToString()); + expression = expression.And(e => e.LAW_STATUS == LAW_STATUS); } + catch { } } } - if (UPDATE_TIMES != null) + } + if (pageFilter.FilterGroup != null && pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Count() > 0) + { + foreach (var item in pageFilter.FilterGroup.Groups) { - expression = expression.And(e => e.UPDATE_TIME >= UPDATE_TIMES); - } - if (UPDATE_TIMEE != null) - { - expression = expression.And(e => e.UPDATE_TIME <= UPDATE_TIMEE); + DateTime? UPDATE_TIMES = null; + DateTime? UPDATE_TIMEE = null; + if (item.Rules != null && item.Rules.Any() && item.Rules.Count() > 0) + { + foreach (var itemR in item.Rules) + { + if (itemR.Field == "UPDATE_TIME" && itemR.Operate == FilterOperate.GreaterThanOrEqual) + { + UPDATE_TIMES = Convert.ToDateTime(itemR.Value.ToString()); + } + else if (itemR.Field == "UPDATE_TIME" && itemR.Operate == FilterOperate.LessThanOrEqual) + { + UPDATE_TIMEE = Convert.ToDateTime(itemR.Value.ToString()); + } + } + } + if (UPDATE_TIMES != null) + { + expression = expression.And(e => e.UPDATE_TIME >= UPDATE_TIMES); + } + if (UPDATE_TIMEE != null) + { + expression = expression.And(e => e.UPDATE_TIME <= UPDATE_TIMEE); + } } } - } - Dictionary orders = new Dictionary(); - orders.Add("CREATE_TIME", DbOrder.DESC); - PagedResultDto data = context.GetOrderPageEntities(expression, orders, null, pageFilter.Limit, pageFilter.Start, pageFilter.Include.ToArray()); - result.TotalCount = data.TotalCount; - result.Data = data.Items; - List ListLawID = null; - if (result.TotalCount > 0) - { - ListLawID = result.Data.Select(e => e.TYPE_ID).ToList(); - var listLawType = context.GetEntities(e => ListLawID.Contains(e.ID), null, null); + Dictionary orders = new Dictionary(); + orders.Add("CREATE_TIME", DbOrder.DESC); + PagedResultDto data = context.GetOrderPageEntities(expression, orders, null, pageFilter.Limit, pageFilter.Start, pageFilter.Include.ToArray()); + result.TotalCount = data.TotalCount; + result.Data = data.Items; + List ListLawID = null; + if (result.TotalCount > 0) + { + ListLawID = result.Data.Select(e => e.TYPE_ID).ToList(); + var listLawType = context.GetEntities(e => ListLawID.Contains(e.ID), null, null); - ListLawID = result.Data.Select(e => e.ID).ToList(); - var listVersion = context.GetEntities(e => ListLawID.Contains(e.LAW_ID), null, "Nav_Files.Nav_ImgFile.Nav_File"); - foreach (var item in result.Data) - { - item.Nav_LawType = listLawType.FirstOrDefault(e => e.ID == item.TYPE_ID); - item.Nav_LawVersion = listVersion.Where(e => e.LAW_ID == item.ID).ToList(); + ListLawID = result.Data.Select(e => e.ID).ToList(); + var listVersion = context.GetEntities(e => ListLawID.Contains(e.LAW_ID), null, "Nav_Files.Nav_ImgFile.Nav_File"); + foreach (var item in result.Data) + { + item.Nav_LawType = listLawType.FirstOrDefault(e => e.ID == item.TYPE_ID); + item.Nav_LawVersion = listVersion.Where(e => e.LAW_ID == item.ID).ToList(); + } } } } + catch { } }); }