1313 lines
77 KiB
C#
1313 lines
77 KiB
C#
|
|
using COMMON;
|
|||
|
|
using DB_Server;
|
|||
|
|
using Microsoft.EntityFrameworkCore;
|
|||
|
|
using Models;
|
|||
|
|
using Models.Models;
|
|||
|
|
using Models.Models.LOGDB;
|
|||
|
|
using Newtonsoft.Json;
|
|||
|
|
using SERVER.LIB;
|
|||
|
|
using SERVER.Model;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.IO;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Reflection;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
using UtilsSharp;
|
|||
|
|
using static DB_Server.DbHelperSQL;
|
|||
|
|
|
|||
|
|
namespace SERVER
|
|||
|
|
{
|
|||
|
|
public static class GlobalSyncLockTest
|
|||
|
|
{
|
|||
|
|
public static bool isInProcessing = false;
|
|||
|
|
public static object testLock = new object();
|
|||
|
|
public static string recentErrMsg = "";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static class SYNC_DATA
|
|||
|
|
{
|
|||
|
|
public static DateTime? SX = null; //上一次同步时间
|
|||
|
|
public static object locks = new object();
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 同步数据总方法
|
|||
|
|
/// </summary>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static bool SYNC_DATA_ALL(int stepid=0)
|
|||
|
|
{
|
|||
|
|
if (SYNC_DATA.SX != null && DateTime.Now - SYNC_DATA.SX <= TimeSpan.FromMinutes(0))
|
|||
|
|
{
|
|||
|
|
GlobalSyncLockTest.recentErrMsg = "同步失败,同步任务忙";
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//排队测试,并抢flag.
|
|||
|
|
//只有第一个能通过测试,并抢到。
|
|||
|
|
//后面的都不能通过测试。
|
|||
|
|
lock (GlobalSyncLockTest.testLock)
|
|||
|
|
{
|
|||
|
|
if (GlobalSyncLockTest.isInProcessing)
|
|||
|
|
{
|
|||
|
|
GlobalSyncLockTest.recentErrMsg = "同步失败,同步任务忙";
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
GlobalSyncLockTest.isInProcessing = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
DateTime startTime = DateTime.Now;
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
SYNC_DATA.SX = DateTime.Now;
|
|||
|
|
|
|||
|
|
LogHelp.Error("0/8 同步开始");
|
|||
|
|
// 一般情况下都会从控制器传入过来
|
|||
|
|
var db = XC_Data.GetMinDataBase();
|
|||
|
|
LogHelp.Error("1/8 取到mysql的dbcontext");
|
|||
|
|
|
|||
|
|
// 使用sqlserver 的话可以采用 sql脚本同步 当然也可以采用代码同步 耗时久一点 暂不考虑
|
|||
|
|
if (ConfigEntity.Instance.DBTYPE == 1 && 1 != 1)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
db.Database.ExecuteSqlRaw(File.ReadAllText(Directory.GetCurrentDirectory() + "\\App_Data\\SQL\\asycn_data.sql"));
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
LogHelp.Error("数据库同步错误" + ex.ToString());
|
|||
|
|
SYNC_DATA.SX = null;
|
|||
|
|
var optionsBuilder = new DbContextOptionsBuilder<LOG_DBContext>();
|
|||
|
|
optionsBuilder.UseSqlServer(ConfigEntity.Instance.LogDB);
|
|||
|
|
var message = String.Join("", ex.Message.Take(255));
|
|||
|
|
using (var context = new LOG_DBContext(optionsBuilder.Options))
|
|||
|
|
{
|
|||
|
|
context.TBL_SYS_ERR_REPORTS.Add(new TBL_SYS_ERR_REPORT { EVENT = "同步巫工数据库出错~", DESCRIPTION = message, LEVEL = 1, TYPE = 1, ERROR_ID = DateTime.Now.ToString("yyyyMMddHHmmssfff") });
|
|||
|
|
context.SaveChanges();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if(stepid == 0)
|
|||
|
|
{
|
|||
|
|
SyncHotelAll(db, startTime);
|
|||
|
|
LogHelp.Error("2/8 同步酒店表完成");
|
|||
|
|
|
|||
|
|
SyncHotelGroupAll(db, startTime);
|
|||
|
|
LogHelp.Error("3/8 同步酒店组表完成");
|
|||
|
|
|
|||
|
|
SyncRoomTypeAll(db, startTime);
|
|||
|
|
LogHelp.Error("4/8 同步房型表完成");
|
|||
|
|
|
|||
|
|
SyncMainDeviceAll(db, startTime);
|
|||
|
|
LogHelp.Error("5/8 同步主机表完成");
|
|||
|
|
|
|||
|
|
SyncSeasonAll(db, startTime);
|
|||
|
|
LogHelp.Error("6/8 同步季节表完成");
|
|||
|
|
|
|||
|
|
SyncHotelSeasonAll(db, startTime);
|
|||
|
|
LogHelp.Error("7/8 同步酒店季节表完成");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if(stepid == 1)
|
|||
|
|
{
|
|||
|
|
SyncHotelAll(db, startTime);
|
|||
|
|
LogHelp.Error("2/8 同步酒店表完成");
|
|||
|
|
}
|
|||
|
|
else if(stepid == 2)
|
|||
|
|
{
|
|||
|
|
SyncHotelGroupAll(db, startTime);
|
|||
|
|
LogHelp.Error("3/8 同步酒店组表完成");
|
|||
|
|
}
|
|||
|
|
else if (stepid == 3)
|
|||
|
|
{
|
|||
|
|
SyncRoomTypeAll(db, startTime);
|
|||
|
|
LogHelp.Error("4/8 同步房型表完成");
|
|||
|
|
}
|
|||
|
|
else if (stepid == 4)
|
|||
|
|
{
|
|||
|
|
SyncMainDeviceAll(db, startTime);
|
|||
|
|
LogHelp.Error("5/8 同步主机表完成");
|
|||
|
|
}
|
|||
|
|
else if (stepid == 5)
|
|||
|
|
{
|
|||
|
|
SyncSeasonAll(db, startTime);
|
|||
|
|
LogHelp.Error("6/8 同步季节表完成");
|
|||
|
|
}
|
|||
|
|
else if (stepid == 6)
|
|||
|
|
{
|
|||
|
|
SyncHotelSeasonAll(db, startTime);
|
|||
|
|
LogHelp.Error("7/8 同步酒店季节表完成");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
LogHelp.Error("8/8 同步完成");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
GlobalSyncLockTest.isInProcessing = false;
|
|||
|
|
GlobalSyncLockTest.recentErrMsg = "同步成功";
|
|||
|
|
return true;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
GlobalSyncLockTest.isInProcessing = false;
|
|||
|
|
GlobalSyncLockTest.recentErrMsg = "同步失败,触发异常:"+ex.ToString();
|
|||
|
|
LogHelp.Error(ex.ToString());
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
public static void SyncHotelAll(HotelServiceContext db, DateTime stTime) {
|
|||
|
|
string lasttime = String.Empty;
|
|||
|
|
|
|||
|
|
//取到酒店表上次更新时间
|
|||
|
|
var row = db.NEW_TABLE_UPDATE_TIME_MARKS.AsTracking() //开启跟踪查询,因为后面要更新时间
|
|||
|
|
.First(x => x.NEW_DB_TABLE_NAME == "TBL_HOTEL_BASIC_INFO");
|
|||
|
|
if (row.LAST_UPDATE_TIME == null)
|
|||
|
|
lasttime = "2022-04-01";
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
var time = Convert.ToDateTime(row.LAST_UPDATE_TIME);
|
|||
|
|
if (time.Year < 2022)
|
|||
|
|
lasttime = "2022-04-01";
|
|||
|
|
else
|
|||
|
|
lasttime = time.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//为什么不用EF取,,而是用sql取数据然后转成实体列表。
|
|||
|
|
//因为连的是巫工那边数据库,可能不支持EF。
|
|||
|
|
//因为巫工那边数据库表结构和这边表结构不一致。
|
|||
|
|
//使用巫工数据库数据,通过utilsharp来进行转换成我们这边数据实体列表
|
|||
|
|
var hoteldata = DataTableHelper.ToEntities<TBL_HOTEL_BASIC_INFO>(
|
|||
|
|
SQLSERVER_Helper.GetDatatable(ConfigEntity.Instance.OtherDB, $@"select
|
|||
|
|
IDOLD = b.id,
|
|||
|
|
LOG_IMAGE = b.LogoPath,
|
|||
|
|
HOTEL_NAME_CN = b.[name],
|
|||
|
|
SORT = b.sort,
|
|||
|
|
HOTEL_NAME_EN = b.ename,
|
|||
|
|
KEY_IN_DATETIME = b.createddate,
|
|||
|
|
[IsApprove] = b.IsApprove,
|
|||
|
|
VALID_DATETIME = b.ValidateDate,
|
|||
|
|
PROJECT_NUMBER = b.[code],
|
|||
|
|
[STATUS] = b.[STATUS],
|
|||
|
|
[KEY_nAME] = CreatedBy,
|
|||
|
|
DETAIL_ADD = b.[Address],
|
|||
|
|
HOTEL_CONTACT_PHONE = b.[Phone],
|
|||
|
|
HOTEL_OLD_GROUP = b.SysHotelGroupID,
|
|||
|
|
UPDATE_TIMEMARK = GETDATE()
|
|||
|
|
from tb_Sys_Hotels b where LAST_MODIFIED_TIME > '{lasttime}'")
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
var oldidlist = db.TBL_HOTEL_BASIC_INFOS.Select(x => x.IDOLD).ToArray();//我们这边数据库的所有IDOLD(对应那边的主键id)列表
|
|||
|
|
if (hoteldata.Count > 0)// 如果那边数据有新记录出现
|
|||
|
|
{
|
|||
|
|
string retStr = "";
|
|||
|
|
for (int i = 0; i < hoteldata.Count; i++)
|
|||
|
|
{
|
|||
|
|
retStr += "编号:" + hoteldata[i].IDOLD + "名字:" + hoteldata[i].HOTEL_NAME_CN;
|
|||
|
|
}
|
|||
|
|
LogHelp.Error("酒店表如下记录有更新:" + retStr);
|
|||
|
|
var jsdata = hoteldata.Select(x => x.IDOLD).ToArray();//那边数据库的所有新记录的主键ID
|
|||
|
|
|
|||
|
|
// 我们这边数据里面有那边新记录主键ID的,,进行更新
|
|||
|
|
List<TBL_HOTEL_BASIC_INFO> olddata = db.TBL_HOTEL_BASIC_INFOS.Where(X => jsdata.Contains(X.IDOLD)).ToList();
|
|||
|
|
for (int i = 0; i < olddata.Count; i++)
|
|||
|
|
{
|
|||
|
|
var tump = hoteldata.First(x => x.IDOLD == olddata[i].IDOLD);
|
|||
|
|
var item = olddata[i];
|
|||
|
|
GetVal(ref item, tump, "HOTEL_OLD_GROUP", "LOG_IMAGE", "HOTEL_NAME_CN", "SORT", "HOTEL_NAME_EN", "KEY_IN_DATETIME", "IsApprove", "VALID_DATETIME", "PROJECT_NUMBER", "STATUS", "KEY_nAME", "DETAIL_ADD", "HOTEL_CONTACT_PHONE", "HOTEL_GROUP", "UPDATE_TIMEMARK");
|
|||
|
|
// 标记修复
|
|||
|
|
db.Entry(item).State = EntityState.Modified;
|
|||
|
|
}
|
|||
|
|
//// 添加
|
|||
|
|
db.TBL_HOTEL_BASIC_INFOS.AddRange(
|
|||
|
|
hoteldata.Where(
|
|||
|
|
item => oldidlist.FirstOrDefault(y => y == item.IDOLD) == 0 //oldidlist.IDOLD为个数为零
|
|||
|
|
)
|
|||
|
|
);
|
|||
|
|
row.LAST_UPDATE_TIME = stTime;
|
|||
|
|
// 标记修复
|
|||
|
|
db.Entry(row).State = EntityState.Modified;
|
|||
|
|
db.SaveChanges();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
public static void SyncHotelGroupAll(HotelServiceContext db, DateTime stTime)
|
|||
|
|
{
|
|||
|
|
string lasttime = String.Empty;
|
|||
|
|
|
|||
|
|
var group_row = db.NEW_TABLE_UPDATE_TIME_MARKS.AsTracking().First(x => x.NEW_DB_TABLE_NAME == "TBL_HOTEL_GROUP_INFO");
|
|||
|
|
if (group_row.LAST_UPDATE_TIME == null)
|
|||
|
|
lasttime = "2022-04-01";
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
var time = Convert.ToDateTime(group_row.LAST_UPDATE_TIME);
|
|||
|
|
if (time.Year < 2022)
|
|||
|
|
lasttime = "2022-04-01";
|
|||
|
|
else
|
|||
|
|
lasttime = time.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
|||
|
|
}
|
|||
|
|
// 获取改动过的酒店信息
|
|||
|
|
var groupdata = DataTableHelper.ToEntities<TBL_HOTEL_GROUP_INFO>(SQLSERVER_Helper.GetDatatable(ConfigEntity.Instance.OtherDB,
|
|||
|
|
$@"select HOTEL_GROUP_OLD_ID = b.id, HOTEL_GROUP_NAME = b.[Name] ,SORT = b.SORT,PARENT_OLD_ID = b.ParentID,UPDATE_TIMEMARK = GETDATE() from tb_Sys_HotelGroups b where LAST_MODIFIED_TIME > '{lasttime}'"));
|
|||
|
|
if (groupdata.Count > 0)
|
|||
|
|
{
|
|||
|
|
string retStr = "";
|
|||
|
|
for (int i = 0; i < groupdata.Count; i++)
|
|||
|
|
{
|
|||
|
|
retStr += "编号:" + groupdata[i].HOTEL_GROUP_OLD_ID + "名字:" + groupdata[i].HOTEL_GROUP_NAME;
|
|||
|
|
}
|
|||
|
|
LogHelp.Error("酒店组表如下记录有更新:" + retStr);
|
|||
|
|
|
|||
|
|
string group_str = "'" + string.Join("','", groupdata.Select(x => x.HOTEL_GROUP_OLD_ID)) + "'";
|
|||
|
|
var group_old_data = db.TBL_HOTEL_GROUP_INFOS.FromSqlRaw($"select * from TBL_HOTEL_GROUP_INFO where HOTEL_GROUP_OLD_ID in ({group_str})").AsNoTracking().Select(X => new { X.HOTEL_GROUP_ID, X.HOTEL_GROUP_OLD_ID }).ToArray();
|
|||
|
|
foreach (var item in groupdata)
|
|||
|
|
{
|
|||
|
|
var OLD_DATA = group_old_data.FirstOrDefault(x => x.HOTEL_GROUP_OLD_ID == item.HOTEL_GROUP_OLD_ID);
|
|||
|
|
//部分更新
|
|||
|
|
if (OLD_DATA != null)
|
|||
|
|
{
|
|||
|
|
item.HOTEL_GROUP_ID = OLD_DATA.HOTEL_GROUP_ID;
|
|||
|
|
db.Attach(item);
|
|||
|
|
db.Entry(item).Property(p => p.HOTEL_GROUP_NAME).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.PARENT_OLD_ID).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.PARENT_ID).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.SORT).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.UPDATE_TIMEMARK).IsModified = true;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
db.Entry(item).State = EntityState.Added;
|
|||
|
|
}
|
|||
|
|
group_row.LAST_UPDATE_TIME = stTime;
|
|||
|
|
db.Entry(group_row).State = EntityState.Modified;
|
|||
|
|
db.SaveChanges();
|
|||
|
|
}
|
|||
|
|
db.SaveChanges();
|
|||
|
|
}
|
|||
|
|
public static void SyncRoomTypeAll(HotelServiceContext db, DateTime stTime)
|
|||
|
|
{
|
|||
|
|
string lasttime = String.Empty;
|
|||
|
|
var roomtype_row = db.NEW_TABLE_UPDATE_TIME_MARKS.AsTracking().First(x => x.NEW_DB_TABLE_NAME == "TBL_ROOM_TYPE_LIST");
|
|||
|
|
if (roomtype_row.LAST_UPDATE_TIME == null)
|
|||
|
|
lasttime = "2022-04-01";
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
var time = Convert.ToDateTime(roomtype_row.LAST_UPDATE_TIME);
|
|||
|
|
if (time.Year < 2022)
|
|||
|
|
lasttime = "2022-04-01";
|
|||
|
|
else
|
|||
|
|
lasttime = time.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
|||
|
|
}
|
|||
|
|
var roomtypedata = DataTableHelper.ToEntities<TBL_ROOM_TYPE_LIST>(
|
|||
|
|
SQLSERVER_Helper.GetDatatable(ConfigEntity.Instance.OtherDB,
|
|||
|
|
$@"select ROOM_TYPE_OLD_ID = B.ID, HOTEL_OLD_ID = b.[HOTELID] ,ROOM_TYPE_NAME = b.[NAME],UPDATE_TIMEMARK = GETDATE(),Creation_Time = GETDATE() from TB_ROOMTYPE b where LAST_MODIFIED_TIME > '{lasttime}'"));
|
|||
|
|
|
|||
|
|
if (roomtypedata.Count > 0)
|
|||
|
|
{
|
|||
|
|
string retStr = "";
|
|||
|
|
for (int i = 0; i < roomtypedata.Count; i++)
|
|||
|
|
{
|
|||
|
|
retStr += "编号:" + roomtypedata[i].ROOM_TYPE_OLD_ID + "名字:" + roomtypedata[i].ROOM_TYPE_NAME;
|
|||
|
|
}
|
|||
|
|
LogHelp.Error("房型表如下记录有更新:" + retStr);
|
|||
|
|
|
|||
|
|
string group_str = "'" + string.Join("','", roomtypedata.Select(x => x.ROOM_TYPE_OLD_ID)) + "'";
|
|||
|
|
var room_old_data = db.TBL_ROOM_TYPE_LISTS.FromSqlRaw($"select * from TBL_ROOM_TYPE_LIST where ROOM_TYPE_OLD_ID in ({group_str})").AsNoTracking().Select(X => new
|
|||
|
|
{
|
|||
|
|
X.ROOM_TYPE_ID,
|
|||
|
|
X.ROOM_TYPE_OLD_ID
|
|||
|
|
}).ToArray();
|
|||
|
|
foreach (var item in roomtypedata)
|
|||
|
|
{
|
|||
|
|
item.Creation_Time = DateTime.Now;
|
|||
|
|
var OLD_DATA = room_old_data.FirstOrDefault(X => X.ROOM_TYPE_OLD_ID == item.ROOM_TYPE_OLD_ID);
|
|||
|
|
if (OLD_DATA != null)
|
|||
|
|
{
|
|||
|
|
item.ROOM_TYPE_ID = OLD_DATA.ROOM_TYPE_ID;
|
|||
|
|
db.Attach(item);
|
|||
|
|
db.Entry(item).Property(p => p.UPDATE_TIMEMARK).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.Creation_Time).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.HOTEL_OLD_ID).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.ROOM_TYPE_NAME).IsModified = true;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
db.Entry(item).State = EntityState.Added;
|
|||
|
|
}
|
|||
|
|
roomtype_row.LAST_UPDATE_TIME = stTime;
|
|||
|
|
db.Entry(roomtype_row).State = EntityState.Modified;
|
|||
|
|
db.SaveChanges();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
public static void SyncMainDeviceAll(HotelServiceContext db, DateTime stTime)
|
|||
|
|
{
|
|||
|
|
string lasttime = String.Empty;
|
|||
|
|
var room_row = db.NEW_TABLE_UPDATE_TIME_MARKS.AsTracking().First(x => x.NEW_DB_TABLE_NAME == "TBL_ROOM_BASIC_INFO");
|
|||
|
|
if (room_row.LAST_UPDATE_TIME == null)
|
|||
|
|
lasttime = "2022-04-01";
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
var time = Convert.ToDateTime(room_row.LAST_UPDATE_TIME);
|
|||
|
|
if (time.Year < 2022)
|
|||
|
|
lasttime = "2022-04-01";
|
|||
|
|
else
|
|||
|
|
lasttime = time.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
|||
|
|
}
|
|||
|
|
var roomdata = DataTableHelper.ToEntities<Host_>(SQLSERVER_Helper.GetDatatable(ConfigEntity.Instance.OtherDB, $@"select * from tb_Hosts b where LAST_MODIFIED_TIME > '{lasttime}'"));
|
|||
|
|
if (roomdata.Count > 0)
|
|||
|
|
{
|
|||
|
|
string retStr = "";
|
|||
|
|
for (int i = 0; i < roomdata.Count; i++)
|
|||
|
|
{
|
|||
|
|
retStr += "编号:" + roomdata[i].ID + "房号:" + roomdata[i].RoomNumber;
|
|||
|
|
}
|
|||
|
|
LogHelp.Error("主机表如下记录有更新:" + retStr);
|
|||
|
|
|
|||
|
|
#region 同步房间表数据
|
|||
|
|
|
|||
|
|
string room_str = "'" + string.Join("','", roomdata.Select(x => x.ID)) + "'";
|
|||
|
|
var room_old_data = db.TBL_ROOM_BASIC_INFOS.FromSqlRaw($"select * from TBL_ROOM_BASIC_INFO where ROOM_OLD_ID in ({room_str})").AsNoTracking().ToArray();
|
|||
|
|
var ROOM_SET_CONFIG = db.TBL_ROOM_SET_CONFIGS.FromSqlRaw($"select * from TBL_ROOM_SET_CONFIG where ROOM_OLD_ID in ({room_str})").AsNoTracking().ToArray();
|
|||
|
|
foreach (var item in roomdata)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
var DATA_OLD = room_old_data.FirstOrDefault(X => X.ROOM_OLD_ID == item.ID);
|
|||
|
|
if (DATA_OLD == null)
|
|||
|
|
{
|
|||
|
|
DATA_OLD = new TBL_ROOM_BASIC_INFO();
|
|||
|
|
}
|
|||
|
|
DATA_OLD.RoomStatusID = item.RoomStatusID;
|
|||
|
|
DATA_OLD.MAC = item.MAC;
|
|||
|
|
DATA_OLD.AUTH_DATETIME = item.ExpireTime;
|
|||
|
|
DATA_OLD.UPDATE_TIMEMARK = DateTime.Now;
|
|||
|
|
DATA_OLD.REMARK = item.Remark;
|
|||
|
|
DATA_OLD.ROOM_NUMBER = item.RoomNumber;
|
|||
|
|
DATA_OLD.ROOM_TYPE_OLD_ID = item.RoomTypeID;
|
|||
|
|
DATA_OLD.HOTEL_OLD_ID = item.HOTELID;
|
|||
|
|
DATA_OLD.ROOM_OLD_ID = item.ID;
|
|||
|
|
|
|||
|
|
if (DATA_OLD.ROOM_ID > 0)
|
|||
|
|
{
|
|||
|
|
db.Attach(DATA_OLD);
|
|||
|
|
db.Entry(DATA_OLD).Property(p => p.AUTH_DATETIME).IsModified = true;
|
|||
|
|
db.Entry(DATA_OLD).Property(p => p.UPDATE_TIMEMARK).IsModified = true;
|
|||
|
|
db.Entry(DATA_OLD).Property(p => p.RoomStatusID).IsModified = true;
|
|||
|
|
db.Entry(DATA_OLD).Property(p => p.HOTEL_OLD_ID).IsModified = true;
|
|||
|
|
db.Entry(DATA_OLD).Property(p => p.ROOM_TYPE_OLD_ID).IsModified = true;
|
|||
|
|
db.Entry(DATA_OLD).Property(p => p.REMARK).IsModified = true;
|
|||
|
|
db.Entry(DATA_OLD).Property(p => p.MAC).IsModified = true;
|
|||
|
|
db.Entry(DATA_OLD).Property(p => p.ROOM_NUMBER).IsModified = true;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
db.Entry(DATA_OLD).State = EntityState.Added;
|
|||
|
|
}
|
|||
|
|
//添加房间配置信息表
|
|||
|
|
var ROOM_SET_CONFIGS = ROOM_SET_CONFIG.FirstOrDefault(X => X.ROOM_OLD_ID == item.ID);
|
|||
|
|
if (ROOM_SET_CONFIGS == null)
|
|||
|
|
{
|
|||
|
|
ROOM_SET_CONFIGS = new TBL_ROOM_SET_CONFIG();
|
|||
|
|
}
|
|||
|
|
ROOM_SET_CONFIGS.RCU_ROOM = item.RoomNumber;
|
|||
|
|
ROOM_SET_CONFIGS.PRODUCT_CODE = item.HostNumber;
|
|||
|
|
ROOM_SET_CONFIGS.FW_VER = item.Version;
|
|||
|
|
ROOM_SET_CONFIGS.CONFIG_VER = item.ConfigVersion;
|
|||
|
|
ROOM_SET_CONFIGS.RCU_SUB_MASK = item.SubnetMask;
|
|||
|
|
ROOM_SET_CONFIGS.RCU_CLOUD_SVR_IP = item.ServerIP;
|
|||
|
|
ROOM_SET_CONFIGS.RCU_CLOUD_SVR_PORT_MODE = item.ServerPort.ToString();
|
|||
|
|
ROOM_SET_CONFIGS.RCU_LOCAL_IP = item.LanIP;
|
|||
|
|
ROOM_SET_CONFIGS.RCU_LOCAL_PORT = item.LanPort.ToString();
|
|||
|
|
ROOM_SET_CONFIGS.RCU_GETWAY = item.Gateway;
|
|||
|
|
ROOM_SET_CONFIGS.RCU_DNS_SERVER = item.DNS;
|
|||
|
|
ROOM_SET_CONFIGS.REMARK = item.Remark;
|
|||
|
|
ROOM_SET_CONFIGS.ROOM_OLD_ID = item.ID;
|
|||
|
|
ROOM_SET_CONFIGS.UPDATE_TIMEMARK = DateTime.Now;
|
|||
|
|
ROOM_SET_CONFIGS.IPType = item.IPType;
|
|||
|
|
ROOM_SET_CONFIGS.RCU_CLOUD_SVR_PORT = item.ServerPort.ToString();
|
|||
|
|
if (ROOM_SET_CONFIGS.ID > 0)
|
|||
|
|
{
|
|||
|
|
db.Attach(ROOM_SET_CONFIGS);
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_ROOM).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.PRODUCT_CODE).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.FW_VER).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.CONFIG_VER).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_SUB_MASK).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_CLOUD_SVR_IP).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_CLOUD_SVR_PORT_MODE).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_LOCAL_IP).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_LOCAL_PORT).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_GETWAY).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_DNS_SERVER).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.REMARK).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.ROOM_OLD_ID).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.UPDATE_TIMEMARK).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.IPType).IsModified = true;
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_CLOUD_SVR_PORT).IsModified = true;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
db.Entry(ROOM_SET_CONFIGS).State = EntityState.Added;
|
|||
|
|
}
|
|||
|
|
room_row.LAST_UPDATE_TIME = stTime;
|
|||
|
|
db.Entry(room_row).State = EntityState.Modified;
|
|||
|
|
db.SaveChanges();
|
|||
|
|
#endregion 同步房间表数据同步完毕
|
|||
|
|
#region 同步配置表数据
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region 同步过来的 将房间表的 mac 地址插入 主机表 或者更新
|
|||
|
|
// 清除旧数据 获取库里最新的mac
|
|||
|
|
CacheData.Clear(CacheData.CacheDataEnum.TBL_RCU_BASIC_INFO);
|
|||
|
|
// 获取查询出的 mac
|
|||
|
|
var macdata = roomdata.Select(x => new { MAC = x.MAC.ToUpper(), x.RegisterDate });
|
|||
|
|
// 取出库里的mac
|
|||
|
|
var mac_data = CacheData.TBL_RCU_BASIC_INFO.Where(x => x.IsImport == 1);
|
|||
|
|
// 获取同步的数据中不存的 mac
|
|||
|
|
//macdata = macdata.Where(x => !mac_data.Contains(x.MAC));
|
|||
|
|
// 遍历添加
|
|||
|
|
foreach (var item in macdata)
|
|||
|
|
{
|
|||
|
|
if (item.MAC.Length < 0)
|
|||
|
|
continue;
|
|||
|
|
var DA = mac_data.FirstOrDefault(X => X.MAC.ToUpper() == item.MAC);
|
|||
|
|
if (DA != null)
|
|||
|
|
{
|
|||
|
|
db.Attach(DA);
|
|||
|
|
DA.REGISTER_DATE = item.RegisterDate;
|
|||
|
|
db.Entry(DA).Property(p => p.REGISTER_DATE).IsModified = true;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
db.TBL_RCU_BASIC_INFOS.Add(new TBL_RCU_BASIC_INFO { MAC = item.MAC, IsImport = 1, REGISTER_DATE = item.RegisterDate });
|
|||
|
|
}
|
|||
|
|
db.SaveChanges();
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public static void SyncSeasonAll(HotelServiceContext db, DateTime stTime)
|
|||
|
|
{
|
|||
|
|
string lasttime = String.Empty;
|
|||
|
|
var season_row = db.NEW_TABLE_UPDATE_TIME_MARKS.AsTracking().First(x => x.NEW_DB_TABLE_NAME == "TBL_SEASON");
|
|||
|
|
|
|||
|
|
|
|||
|
|
//暂时使用永远更新的方式,因为只有4条记录,并且两边记录,格式,个数完全一样。
|
|||
|
|
var season_data = DataTableHelper.ToEntities<TBL_SEASON>(SQLSERVER_Helper.GetDatatable(ConfigEntity.Instance.OtherDB, $@"select * from tb_Season b"));
|
|||
|
|
string retStr1 = "";
|
|||
|
|
for (int i = 0; i < season_data.Count; i++)
|
|||
|
|
{
|
|||
|
|
retStr1 += "编号:" + season_data[i].ID + "名字:" + season_data[i].NAME;
|
|||
|
|
}
|
|||
|
|
LogHelp.Error("季度表总是更新:" + retStr1);
|
|||
|
|
|
|||
|
|
List<TBL_SEASON> my_old_data = db.TBL_SEASONS.ToList();
|
|||
|
|
foreach (var it in my_old_data)
|
|||
|
|
{
|
|||
|
|
var srcDataIt = season_data.FirstOrDefault(x => x.ID == it.ID);
|
|||
|
|
it.NAME = srcDataIt.NAME;
|
|||
|
|
it.BeginDate = srcDataIt.BeginDate;
|
|||
|
|
it.EndDate = srcDataIt.EndDate;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
season_row.LAST_UPDATE_TIME = stTime;
|
|||
|
|
db.Entry(season_row).State = EntityState.Modified;
|
|||
|
|
db.SaveChanges();
|
|||
|
|
}
|
|||
|
|
public static void SyncHotelSeasonAll(HotelServiceContext db, DateTime stTime) {
|
|||
|
|
string lasttime = String.Empty;
|
|||
|
|
var tbl_hotel_season_row = db.NEW_TABLE_UPDATE_TIME_MARKS.AsTracking().First(x => x.NEW_DB_TABLE_NAME == "TBL_HOTEL_SEASON");
|
|||
|
|
if (tbl_hotel_season_row == null || tbl_hotel_season_row.LAST_UPDATE_TIME == null)
|
|||
|
|
lasttime = "2022-04-01";
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
var time = Convert.ToDateTime(tbl_hotel_season_row.LAST_UPDATE_TIME);
|
|||
|
|
if (time.Year < 2022)
|
|||
|
|
lasttime = "2022-04-01";
|
|||
|
|
else
|
|||
|
|
lasttime = time.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//总是全部更新过来
|
|||
|
|
//表结构
|
|||
|
|
//ID HotelID Month1-12 IsDeleted
|
|||
|
|
//对象结构
|
|||
|
|
//ID HOTELID HOTELID_OLD MONTH1-12
|
|||
|
|
var tbl_hotel_season_data = DataTableHelper.ToEntities<TBL_HOTEL_SEASON>(
|
|||
|
|
SQLSERVER_Helper.GetDatatable(
|
|||
|
|
ConfigEntity.Instance.OtherDB,
|
|||
|
|
$@"select * from tb_HotelSeason b"));
|
|||
|
|
|
|||
|
|
if (tbl_hotel_season_data.Count > 0)
|
|||
|
|
{
|
|||
|
|
string retStr = "";
|
|||
|
|
for (int i = 0; i < tbl_hotel_season_data.Count; i++)
|
|||
|
|
{
|
|||
|
|
retStr += "编号:" + tbl_hotel_season_data[i].ID + "酒店id:" + tbl_hotel_season_data[i].HOTELID;
|
|||
|
|
}
|
|||
|
|
LogHelp.Error("酒店季度表如下记录有更新:" + retStr);
|
|||
|
|
string room_str = "'" + string.Join("','", tbl_hotel_season_data.Select(x => x.ID)) + "'";
|
|||
|
|
var room_old_data = db.TBL_HOTEL_SEASONS.FromSqlRaw($"select * from TBL_HOTEL_SEASON where ID in ({room_str})").AsNoTracking().Select(X => new { X.ID }).ToArray();
|
|||
|
|
foreach (var item in tbl_hotel_season_data)
|
|||
|
|
{
|
|||
|
|
var DATA_OLD = room_old_data.FirstOrDefault(X => X.ID == item.ID);
|
|||
|
|
if (DATA_OLD != null)
|
|||
|
|
{
|
|||
|
|
item.ID = DATA_OLD.ID;
|
|||
|
|
db.Attach(item);
|
|||
|
|
db.Entry(item).Property(p => p.MONTH1).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.MONTH2).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.MONTH3).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.MONTH4).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.MONTH5).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.MONTH6).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.MONTH7).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.MONTH8).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.MONTH9).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.MONTH10).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.MONTH11).IsModified = true;
|
|||
|
|
db.Entry(item).Property(p => p.MONTH12).IsModified = true;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
db.Entry(item).State = EntityState.Added;
|
|||
|
|
}
|
|||
|
|
tbl_hotel_season_row.LAST_UPDATE_TIME = stTime;
|
|||
|
|
db.Entry(tbl_hotel_season_row).State = EntityState.Modified;
|
|||
|
|
db.SaveChanges();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
// public static ReturnResult SYNC_DATA_ALLs()
|
|||
|
|
// {
|
|||
|
|
// ReturnResult result = new ReturnResult();
|
|||
|
|
// try
|
|||
|
|
// {
|
|||
|
|
// if (SYNC_DATA.SX == null || DateTime.Now - SYNC_DATA.SX > TimeSpan.FromMinutes(0))
|
|||
|
|
// {
|
|||
|
|
// lock (SYNC_DATA.locks)
|
|||
|
|
// {
|
|||
|
|
// if (SYNC_DATA.SX == null || DateTime.Now - SYNC_DATA.SX > TimeSpan.FromMinutes(0))
|
|||
|
|
// {
|
|||
|
|
// SYNC_DATA.SX = DateTime.Now;
|
|||
|
|
// try
|
|||
|
|
// {
|
|||
|
|
// // 一般情况下都会从控制器传入过来
|
|||
|
|
// var db = XC_Data.GetMinDataBase();
|
|||
|
|
|
|||
|
|
// // 使用sqlserver 的话可以采用 sql脚本同步 当然也可以采用代码同步 耗时久一点 暂不考虑
|
|||
|
|
// if (ConfigEntity.Instance.DBTYPE == 1 && 1 != 1)
|
|||
|
|
// {
|
|||
|
|
// try
|
|||
|
|
// {
|
|||
|
|
// db.Database.ExecuteSqlRaw(File.ReadAllText(Directory.GetCurrentDirectory() + "\\App_Data\\SQL\\asycn_data.sql"));
|
|||
|
|
// }
|
|||
|
|
// catch (Exception ex)
|
|||
|
|
// {
|
|||
|
|
// LogHelp.Error("数据库同步错误" + ex.ToString());
|
|||
|
|
// SYNC_DATA.SX = null;
|
|||
|
|
// var optionsBuilder = new DbContextOptionsBuilder<LOG_DBContext>();
|
|||
|
|
// optionsBuilder.UseSqlServer(ConfigEntity.Instance.LogDB);
|
|||
|
|
// var message = String.Join("", ex.Message.Take(255));
|
|||
|
|
// using (var context = new LOG_DBContext(optionsBuilder.Options))
|
|||
|
|
// {
|
|||
|
|
// context.TBL_SYS_ERR_REPORTS.Add(new TBL_SYS_ERR_REPORT { EVENT = "同步巫工数据库出错~", DESCRIPTION = message, LEVEL = 1, TYPE = 1, ERROR_ID = DateTime.Now.ToString("yyyyMMddHHmmssfff") });
|
|||
|
|
// context.SaveChanges();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// string lasttime = String.Empty;
|
|||
|
|
// #region 酒店表同步数据
|
|||
|
|
// var row = db.NEW_TABLE_UPDATE_TIME_MARKS.AsTracking().First(x => x.NEW_DB_TABLE_NAME == "TBL_HOTEL_BASIC_INFO");
|
|||
|
|
// if (row.LAST_UPDATE_TIME == null)
|
|||
|
|
// lasttime = "2022-04-01";
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// var time = Convert.ToDateTime(row.LAST_UPDATE_TIME);
|
|||
|
|
// if (time.Year < 2022)
|
|||
|
|
// lasttime = "2022-04-01";
|
|||
|
|
// else
|
|||
|
|
// lasttime = time.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
|||
|
|
// }
|
|||
|
|
// var hoteldata = DataTableHelper.ToEntities<TBL_HOTEL_BASIC_INFO>(SQLSERVER_Helper.GetDatatable(ConfigEntity.Instance.OtherDB, $@"select
|
|||
|
|
// IDOLD = b.id,
|
|||
|
|
// LOG_IMAGE = b.LogoPath,
|
|||
|
|
// HOTEL_NAME_CN = b.[name],
|
|||
|
|
// SORT = b.sort,
|
|||
|
|
// HOTEL_NAME_EN = b.ename,
|
|||
|
|
// KEY_IN_DATETIME = b.createddate,
|
|||
|
|
// [IsApprove] = b.IsApprove,
|
|||
|
|
// VALID_DATETIME = b.ValidateDate,
|
|||
|
|
// PROJECT_NUMBER = b.[code],
|
|||
|
|
// [STATUS] = b.[STATUS],
|
|||
|
|
// [KEY_nAME] = CreatedBy,
|
|||
|
|
// DETAIL_ADD = b.[Address],
|
|||
|
|
// HOTEL_CONTACT_PHONE = b.[Phone],
|
|||
|
|
// HOTEL_OLD_GROUP = b.SysHotelGroupID,
|
|||
|
|
// UPDATE_TIMEMARK = GETDATE()
|
|||
|
|
// from tb_Sys_Hotels b where LAST_MODIFIED_TIME > '{lasttime}'"));
|
|||
|
|
// var oldidlist = db.TBL_HOTEL_BASIC_INFOS.Select(x => x.IDOLD).ToArray();
|
|||
|
|
// if (hoteldata.Count > 0)
|
|||
|
|
// {
|
|||
|
|
// var jsdata = hoteldata.Select(x => x.IDOLD).ToArray();
|
|||
|
|
// // 旧数据 更新
|
|||
|
|
// List<TBL_HOTEL_BASIC_INFO> olddata = db.TBL_HOTEL_BASIC_INFOS.Where(X => jsdata.Contains(X.IDOLD)).ToList();
|
|||
|
|
// for (int i = 0; i < olddata.Count; i++)
|
|||
|
|
// {
|
|||
|
|
// var tump = hoteldata.First(x => x.IDOLD == olddata[i].IDOLD);
|
|||
|
|
// var item = olddata[i];
|
|||
|
|
// GetVal(ref item, tump, "HOTEL_OLD_GROUP", "LOG_IMAGE", "HOTEL_NAME_CN", "SORT", "HOTEL_NAME_EN", "KEY_IN_DATETIME", "IsApprove", "VALID_DATETIME", "PROJECT_NUMBER", "STATUS", "KEY_nAME", "DETAIL_ADD", "HOTEL_CONTACT_PHONE", "HOTEL_GROUP", "UPDATE_TIMEMARK");
|
|||
|
|
// // 标记修复
|
|||
|
|
// db.Entry(item).State = EntityState.Modified;
|
|||
|
|
// }
|
|||
|
|
// //// 添加
|
|||
|
|
// db.TBL_HOTEL_BASIC_INFOS.AddRange(hoteldata.Where(item => oldidlist.FirstOrDefault(y => y == item.IDOLD) == 0));
|
|||
|
|
// row.LAST_UPDATE_TIME = DateTime.Now;
|
|||
|
|
// // 标记修复
|
|||
|
|
// db.Entry(row).State = EntityState.Modified;
|
|||
|
|
// db.SaveChanges();
|
|||
|
|
// }
|
|||
|
|
// #endregion
|
|||
|
|
|
|||
|
|
// #region 酒店组表同步数据
|
|||
|
|
// var group_row = db.NEW_TABLE_UPDATE_TIME_MARKS.AsTracking().First(x => x.NEW_DB_TABLE_NAME == "TBL_HOTEL_GROUP_INFO");
|
|||
|
|
// if (group_row.LAST_UPDATE_TIME == null)
|
|||
|
|
// lasttime = "2022-04-01";
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// var time = Convert.ToDateTime(group_row.LAST_UPDATE_TIME);
|
|||
|
|
// if (time.Year < 2022)
|
|||
|
|
// lasttime = "2022-04-01";
|
|||
|
|
// else
|
|||
|
|
// lasttime = time.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
|||
|
|
// }
|
|||
|
|
// // 获取改动过的酒店信息
|
|||
|
|
// var groupdata = DataTableHelper.ToEntities<TBL_HOTEL_GROUP_INFO>(SQLSERVER_Helper.GetDatatable(ConfigEntity.Instance.OtherDB,
|
|||
|
|
// $@"select HOTEL_GROUP_OLD_ID = b.id, HOTEL_GROUP_NAME = b.[Name] ,SORT = b.SORT,PARENT_OLD_ID = b.ParentID,UPDATE_TIMEMARK = GETDATE() from tb_Sys_HotelGroups b where LAST_MODIFIED_TIME > '{lasttime}'"));
|
|||
|
|
// if (groupdata.Count > 0)
|
|||
|
|
// {
|
|||
|
|
// string group_str = "'" + string.Join("','", groupdata.Select(x => x.HOTEL_GROUP_OLD_ID)) + "'";
|
|||
|
|
// var group_old_data = db.TBL_HOTEL_GROUP_INFOS.FromSqlRaw($"select * from TBL_HOTEL_GROUP_INFO where HOTEL_GROUP_OLD_ID in ({group_str})").AsNoTracking().Select(X => new { X.HOTEL_GROUP_ID, X.HOTEL_GROUP_OLD_ID }).ToArray();
|
|||
|
|
// foreach (var item in groupdata)
|
|||
|
|
// {
|
|||
|
|
// var OLD_DATA = group_old_data.FirstOrDefault(x => x.HOTEL_GROUP_OLD_ID == item.HOTEL_GROUP_OLD_ID);
|
|||
|
|
// //部分更新
|
|||
|
|
// if (OLD_DATA != null)
|
|||
|
|
// {
|
|||
|
|
// item.HOTEL_GROUP_ID = OLD_DATA.HOTEL_GROUP_ID;
|
|||
|
|
// db.Attach(item);
|
|||
|
|
// db.Entry(item).Property(p => p.HOTEL_GROUP_NAME).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.PARENT_OLD_ID).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.PARENT_ID).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.SORT).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.UPDATE_TIMEMARK).IsModified = true;
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// db.Entry(item).State = EntityState.Added;
|
|||
|
|
// }
|
|||
|
|
// group_row.LAST_UPDATE_TIME = DateTime.Now;
|
|||
|
|
// db.Entry(group_row).State = EntityState.Modified;
|
|||
|
|
// db.SaveChanges();
|
|||
|
|
// }
|
|||
|
|
// db.SaveChanges();
|
|||
|
|
// #endregion
|
|||
|
|
|
|||
|
|
// #region 同步房型数据
|
|||
|
|
// var roomtype_row = db.NEW_TABLE_UPDATE_TIME_MARKS.AsTracking().First(x => x.NEW_DB_TABLE_NAME == "TBL_ROOM_TYPE_LIST");
|
|||
|
|
// if (roomtype_row.LAST_UPDATE_TIME == null)
|
|||
|
|
// lasttime = "2022-04-01";
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// var time = Convert.ToDateTime(roomtype_row.LAST_UPDATE_TIME);
|
|||
|
|
// if (time.Year < 2022)
|
|||
|
|
// lasttime = "2022-04-01";
|
|||
|
|
// else
|
|||
|
|
// lasttime = time.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
|||
|
|
// }
|
|||
|
|
// var roomtypedata = DataTableHelper.ToEntities<TBL_ROOM_TYPE_LIST>(SQLSERVER_Helper.GetDatatable(ConfigEntity.Instance.OtherDB, $@"select ROOM_TYPE_OLD_ID = B.ID, HOTEL_OLD_ID = b.[HOTELID] ,ROOM_TYPE_NAME = b.[NAME],UPDATE_TIMEMARK = GETDATE(),Creation_Time = GETDATE() from TB_ROOMTYPE b where LAST_MODIFIED_TIME > '{lasttime}'"));
|
|||
|
|
|
|||
|
|
// if (roomtypedata.Count > 0)
|
|||
|
|
// {
|
|||
|
|
// string group_str = "'" + string.Join("','", roomtypedata.Select(x => x.ROOM_TYPE_OLD_ID)) + "'";
|
|||
|
|
// var room_old_data = db.TBL_ROOM_TYPE_LISTS.FromSqlRaw($"select * from TBL_ROOM_TYPE_LIST where ROOM_TYPE_OLD_ID in ({group_str})").AsNoTracking().Select(X => new
|
|||
|
|
// {
|
|||
|
|
// X.ROOM_TYPE_ID,
|
|||
|
|
// X.ROOM_TYPE_OLD_ID
|
|||
|
|
// }).ToArray();
|
|||
|
|
// foreach (var item in roomtypedata)
|
|||
|
|
// {
|
|||
|
|
// item.Creation_Time = DateTime.Now;
|
|||
|
|
// var OLD_DATA = room_old_data.FirstOrDefault(X => X.ROOM_TYPE_OLD_ID == item.ROOM_TYPE_OLD_ID);
|
|||
|
|
// if (OLD_DATA != null)
|
|||
|
|
// {
|
|||
|
|
// item.ROOM_TYPE_ID = OLD_DATA.ROOM_TYPE_ID;
|
|||
|
|
// db.Attach(item);
|
|||
|
|
// db.Entry(item).Property(p => p.UPDATE_TIMEMARK).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.Creation_Time).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.HOTEL_OLD_ID).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.ROOM_TYPE_NAME).IsModified = true;
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// db.Entry(item).State = EntityState.Added;
|
|||
|
|
// }
|
|||
|
|
// roomtype_row.LAST_UPDATE_TIME = DateTime.Now;
|
|||
|
|
// db.Entry(roomtype_row).State = EntityState.Modified;
|
|||
|
|
// db.SaveChanges();
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// #endregion
|
|||
|
|
|
|||
|
|
// #region 同步巫工 主机表数据 很多数据需要取到这个
|
|||
|
|
|
|||
|
|
// var room_row = db.NEW_TABLE_UPDATE_TIME_MARKS.AsTracking().First(x => x.NEW_DB_TABLE_NAME == "TBL_ROOM_BASIC_INFO");
|
|||
|
|
// if (room_row.LAST_UPDATE_TIME == null)
|
|||
|
|
// lasttime = "2022-04-01";
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// var time = Convert.ToDateTime(room_row.LAST_UPDATE_TIME);
|
|||
|
|
// if (time.Year < 2022)
|
|||
|
|
// lasttime = "2022-04-01";
|
|||
|
|
// else
|
|||
|
|
// lasttime = time.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
|||
|
|
// }
|
|||
|
|
// var roomdata = DataTableHelper.ToEntities<Host_>(SQLSERVER_Helper.GetDatatable(ConfigEntity.Instance.OtherDB, $@"select * from tb_Hosts b where LAST_MODIFIED_TIME > '{lasttime}'"));
|
|||
|
|
// if (roomdata.Count > 0)
|
|||
|
|
// {
|
|||
|
|
// #region 同步房间表数据
|
|||
|
|
|
|||
|
|
// string room_str = "'" + string.Join("','", roomdata.Select(x => x.ID)) + "'";
|
|||
|
|
// var room_old_data = db.TBL_ROOM_BASIC_INFOS.FromSqlRaw($"select * from TBL_ROOM_BASIC_INFO where ROOM_OLD_ID in ({room_str})").AsNoTracking().ToArray();
|
|||
|
|
// var ROOM_SET_CONFIG = db.TBL_ROOM_SET_CONFIGS.FromSqlRaw($"select * from TBL_ROOM_SET_CONFIG where ROOM_OLD_ID in ({room_str})").AsNoTracking().ToArray();
|
|||
|
|
// foreach (var item in roomdata)
|
|||
|
|
// {
|
|||
|
|
|
|||
|
|
// var DATA_OLD = room_old_data.FirstOrDefault(X => X.ROOM_OLD_ID == item.ID);
|
|||
|
|
// if (DATA_OLD == null)
|
|||
|
|
// {
|
|||
|
|
// DATA_OLD = new TBL_ROOM_BASIC_INFO();
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// DATA_OLD.RoomStatusID = item.RoomStatusID;
|
|||
|
|
// DATA_OLD.MAC = item.MAC;
|
|||
|
|
// DATA_OLD.AUTH_DATETIME = item.ExpireTime;
|
|||
|
|
// DATA_OLD.UPDATE_TIMEMARK = DateTime.Now;
|
|||
|
|
// DATA_OLD.REMARK = item.Remark;
|
|||
|
|
// DATA_OLD.ROOM_NUMBER = item.RoomNumber;
|
|||
|
|
// DATA_OLD.ROOM_TYPE_OLD_ID = item.RoomTypeID;
|
|||
|
|
// DATA_OLD.HOTEL_OLD_ID = item.HOTELID;
|
|||
|
|
// DATA_OLD.ROOM_OLD_ID = item.ID;
|
|||
|
|
|
|||
|
|
// if (DATA_OLD.ROOM_ID > 0)
|
|||
|
|
// {
|
|||
|
|
// db.Attach(DATA_OLD);
|
|||
|
|
// db.Entry(DATA_OLD).Property(p => p.AUTH_DATETIME).IsModified = true;
|
|||
|
|
// db.Entry(DATA_OLD).Property(p => p.UPDATE_TIMEMARK).IsModified = true;
|
|||
|
|
// db.Entry(DATA_OLD).Property(p => p.RoomStatusID).IsModified = true;
|
|||
|
|
// db.Entry(DATA_OLD).Property(p => p.HOTEL_OLD_ID).IsModified = true;
|
|||
|
|
// db.Entry(DATA_OLD).Property(p => p.ROOM_TYPE_OLD_ID).IsModified = true;
|
|||
|
|
// db.Entry(DATA_OLD).Property(p => p.REMARK).IsModified = true;
|
|||
|
|
// db.Entry(DATA_OLD).Property(p => p.MAC).IsModified = true;
|
|||
|
|
// db.Entry(DATA_OLD).Property(p => p.ROOM_NUMBER).IsModified = true;
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// db.Entry(DATA_OLD).State = EntityState.Added;
|
|||
|
|
// }
|
|||
|
|
// //添加房间配置信息表
|
|||
|
|
// var ROOM_SET_CONFIGS = ROOM_SET_CONFIG.FirstOrDefault(X => X.ROOM_OLD_ID == item.ID);
|
|||
|
|
// if (ROOM_SET_CONFIGS == null)
|
|||
|
|
// {
|
|||
|
|
// ROOM_SET_CONFIGS = new TBL_ROOM_SET_CONFIG();
|
|||
|
|
// }
|
|||
|
|
// ROOM_SET_CONFIGS.RCU_ROOM = item.RoomNumber;
|
|||
|
|
// ROOM_SET_CONFIGS.PRODUCT_CODE = item.HostNumber;
|
|||
|
|
// ROOM_SET_CONFIGS.FW_VER = item.Version;
|
|||
|
|
// ROOM_SET_CONFIGS.CONFIG_VER = item.ConfigVersion;
|
|||
|
|
// ROOM_SET_CONFIGS.RCU_SUB_MASK = item.SubnetMask;
|
|||
|
|
// ROOM_SET_CONFIGS.RCU_CLOUD_SVR_IP = item.ServerIP;
|
|||
|
|
// ROOM_SET_CONFIGS.RCU_CLOUD_SVR_PORT_MODE = item.ServerPort.ToString();
|
|||
|
|
// ROOM_SET_CONFIGS.RCU_LOCAL_IP = item.LanIP;
|
|||
|
|
// ROOM_SET_CONFIGS.RCU_LOCAL_PORT = item.LanPort.ToString();
|
|||
|
|
// ROOM_SET_CONFIGS.RCU_GETWAY = item.Gateway;
|
|||
|
|
// ROOM_SET_CONFIGS.RCU_DNS_SERVER = item.DNS;
|
|||
|
|
// ROOM_SET_CONFIGS.REMARK = item.Remark;
|
|||
|
|
// ROOM_SET_CONFIGS.ROOM_OLD_ID = item.ID;
|
|||
|
|
// ROOM_SET_CONFIGS.UPDATE_TIMEMARK = DateTime.Now;
|
|||
|
|
// ROOM_SET_CONFIGS.IPType = item.IPType;
|
|||
|
|
// ROOM_SET_CONFIGS.RCU_CLOUD_SVR_PORT = item.ServerPort.ToString();
|
|||
|
|
// if (ROOM_SET_CONFIGS.ID > 0)
|
|||
|
|
// {
|
|||
|
|
// db.Attach(ROOM_SET_CONFIGS);
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_ROOM).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.PRODUCT_CODE).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.FW_VER).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.CONFIG_VER).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_SUB_MASK).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_CLOUD_SVR_IP).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_CLOUD_SVR_PORT_MODE).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_LOCAL_IP).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_LOCAL_PORT).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_GETWAY).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_DNS_SERVER).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.REMARK).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.ROOM_OLD_ID).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.UPDATE_TIMEMARK).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.IPType).IsModified = true;
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).Property(p => p.RCU_CLOUD_SVR_PORT).IsModified = true;
|
|||
|
|
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// db.Entry(ROOM_SET_CONFIGS).State = EntityState.Added;
|
|||
|
|
|
|||
|
|
|
|||
|
|
// }
|
|||
|
|
// room_row.LAST_UPDATE_TIME = DateTime.Now;
|
|||
|
|
// db.Entry(room_row).State = EntityState.Modified;
|
|||
|
|
// db.SaveChanges();
|
|||
|
|
// #endregion 同步房间表数据同步完毕
|
|||
|
|
// #region 同步配置表数据
|
|||
|
|
|
|||
|
|
// #endregion
|
|||
|
|
|
|||
|
|
// #region 同步过来的 将房间表的 mac 地址插入 主机表 或者更新
|
|||
|
|
// // 清除旧数据 获取库里最新的mac
|
|||
|
|
// CacheData.Clear(CacheData.CacheDataEnum.TBL_RCU_BASIC_INFO);
|
|||
|
|
// // 获取查询出的 mac
|
|||
|
|
// var macdata = roomdata.Select(x => new { MAC = x.MAC.ToUpper(), x.RegisterDate });
|
|||
|
|
// // 取出库里的mac
|
|||
|
|
// var mac_data = CacheData.TBL_RCU_BASIC_INFO.Where(x => x.IsImport == 1);
|
|||
|
|
// // 获取同步的数据中不存的 mac
|
|||
|
|
// //macdata = macdata.Where(x => !mac_data.Contains(x.MAC));
|
|||
|
|
// // 遍历添加
|
|||
|
|
// foreach (var item in macdata)
|
|||
|
|
// {
|
|||
|
|
// if (item.MAC.Length < 0)
|
|||
|
|
// continue;
|
|||
|
|
// var DA = mac_data.FirstOrDefault(X => X.MAC.ToUpper() == item.MAC);
|
|||
|
|
// if (DA != null)
|
|||
|
|
// {
|
|||
|
|
// db.Attach(DA);
|
|||
|
|
// DA.REGISTER_DATE = item.RegisterDate;
|
|||
|
|
// db.Entry(DA).Property(p => p.REGISTER_DATE).IsModified = true;
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// db.TBL_RCU_BASIC_INFOS.Add(new TBL_RCU_BASIC_INFO { MAC = item.MAC, IsImport = 1, REGISTER_DATE = item.RegisterDate });
|
|||
|
|
// }
|
|||
|
|
// db.SaveChanges();
|
|||
|
|
// #endregion
|
|||
|
|
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// #endregion
|
|||
|
|
|
|||
|
|
// #region 同步季节表 这个表目前可能未曾使用
|
|||
|
|
// var season_row = db.NEW_TABLE_UPDATE_TIME_MARKS.AsTracking().First(x => x.NEW_DB_TABLE_NAME == "TBL_SEASON");
|
|||
|
|
// if (room_row.LAST_UPDATE_TIME == null)
|
|||
|
|
// lasttime = "2022-04-01";
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// var time = Convert.ToDateTime(room_row.LAST_UPDATE_TIME);
|
|||
|
|
// if (time.Year < 2022)
|
|||
|
|
// lasttime = "2022-04-01";
|
|||
|
|
// else
|
|||
|
|
// lasttime = time.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
|||
|
|
// }
|
|||
|
|
// // 这里待巫工完善
|
|||
|
|
// var season_data = DataTableHelper.ToEntities<TBL_SEASON>(SQLSERVER_Helper.GetDatatable(ConfigEntity.Instance.OtherDB, $@"select * from tb_Season b where (1=1 or 'LAST_MODIFIED_TIME' > '{lasttime}')"));
|
|||
|
|
|
|||
|
|
// if (season_data.Count > 0)
|
|||
|
|
// {
|
|||
|
|
// string room_str = "'" + string.Join("','", season_data.Select(x => x.ID)) + "'";
|
|||
|
|
// var room_old_data = db.TBL_SEASONS.FromSqlRaw($"select * from TBL_SEASON where ID in ({room_str})").AsNoTracking().Select(X => new { X.ID }).ToArray();
|
|||
|
|
// foreach (var item in season_data)
|
|||
|
|
// {
|
|||
|
|
// var DATA_OLD = room_old_data.FirstOrDefault(X => X.ID == item.ID);
|
|||
|
|
// if (DATA_OLD != null)
|
|||
|
|
// {
|
|||
|
|
// item.ID = DATA_OLD.ID;
|
|||
|
|
// db.Attach(item);
|
|||
|
|
// db.Entry(item).Property(p => p.NAME).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.BeginDate).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.EndDate).IsModified = true;
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// db.Entry(item).State = EntityState.Added;
|
|||
|
|
// }
|
|||
|
|
// season_row.LAST_UPDATE_TIME = DateTime.Now;
|
|||
|
|
// db.Entry(season_row).State = EntityState.Modified;
|
|||
|
|
// db.SaveChanges();
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// #endregion
|
|||
|
|
|
|||
|
|
// #region 同步酒店季节表 TBL_HOTEL_SEASON 这个才是季节表
|
|||
|
|
// var tbl_hotel_season_row = db.NEW_TABLE_UPDATE_TIME_MARKS.AsTracking().First(x => x.NEW_DB_TABLE_NAME == "TBL_HOTEL_SEASON");
|
|||
|
|
// if (room_row == null || room_row.LAST_UPDATE_TIME == null)
|
|||
|
|
// lasttime = "2022-04-01";
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// var time = Convert.ToDateTime(room_row.LAST_UPDATE_TIME);
|
|||
|
|
// if (time.Year < 2022)
|
|||
|
|
// lasttime = "2022-04-01";
|
|||
|
|
// else
|
|||
|
|
// lasttime = time.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
|||
|
|
// }
|
|||
|
|
// // 这里待巫工完善 时间信息
|
|||
|
|
// var tbl_hotel_season_data = DataTableHelper.ToEntities<TBL_HOTEL_SEASON>(SQLSERVER_Helper.GetDatatable(ConfigEntity.Instance.OtherDB, $@"select * from tb_HotelSeason b where (1=1 or 'LAST_MODIFIED_TIME' > '{lasttime}')"));
|
|||
|
|
|
|||
|
|
// if (season_data.Count > 0)
|
|||
|
|
// {
|
|||
|
|
// string room_str = "'" + string.Join("','", tbl_hotel_season_data.Select(x => x.ID)) + "'";
|
|||
|
|
// var room_old_data = db.TBL_HOTEL_SEASONS.FromSqlRaw($"select * from TBL_HOTEL_SEASON where ID in ({room_str})").AsNoTracking().Select(X => new { X.ID }).ToArray();
|
|||
|
|
// foreach (var item in tbl_hotel_season_data)
|
|||
|
|
// {
|
|||
|
|
// var DATA_OLD = room_old_data.FirstOrDefault(X => X.ID == item.ID);
|
|||
|
|
// if (DATA_OLD != null)
|
|||
|
|
// {
|
|||
|
|
// item.ID = DATA_OLD.ID;
|
|||
|
|
// db.Attach(item);
|
|||
|
|
// db.Entry(item).Property(p => p.MONTH1).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.MONTH2).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.MONTH3).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.MONTH4).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.MONTH5).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.MONTH6).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.MONTH7).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.MONTH8).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.MONTH9).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.MONTH10).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.MONTH11).IsModified = true;
|
|||
|
|
// db.Entry(item).Property(p => p.MONTH12).IsModified = true;
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// db.Entry(item).State = EntityState.Added;
|
|||
|
|
// }
|
|||
|
|
// tbl_hotel_season_row.LAST_UPDATE_TIME = DateTime.Now;
|
|||
|
|
// db.Entry(tbl_hotel_season_row).State = EntityState.Modified;
|
|||
|
|
// db.SaveChanges();
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// #endregion
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// catch (Exception ex)
|
|||
|
|
// {
|
|||
|
|
// LogHelp.Error(ex.ToString());
|
|||
|
|
// //throw;
|
|||
|
|
// }
|
|||
|
|
// result.Status = true;
|
|||
|
|
// result.messages = "同步成功";
|
|||
|
|
// return result
|
|||
|
|
//;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// result.Status = false;
|
|||
|
|
// result.messages = "不能频繁刷新";
|
|||
|
|
// return result;
|
|||
|
|
// }
|
|||
|
|
// catch (Exception ex)
|
|||
|
|
// {
|
|||
|
|
// result.Status = false;
|
|||
|
|
// result.messages = ex.Message;
|
|||
|
|
// return result;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// }
|
|||
|
|
public static List<HotelGroups> Get_HotelGroups()
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var res = new Dictionary<string, Object>();
|
|||
|
|
res.Add("jsonData", JsonConvert.SerializeObject(new { key = ConfigEntity.Instance.url_key }));
|
|||
|
|
WEBHELP s = new WEBHELP();
|
|||
|
|
var resdata = s.Post<ReturnData<List<HotelGroups>>>(ConfigEntity.Instance.url_api + "GetHotelGroupList", res).Result;
|
|||
|
|
return resdata;
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
throw ex;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// api同步酒店组 暂未使用
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="context"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static bool SYNC_HotelGroups(HotelServiceContext context)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var data = Get_HotelGroups();
|
|||
|
|
List<TBL_HOTEL_GROUP_INFO> res = new List<TBL_HOTEL_GROUP_INFO>();
|
|||
|
|
var old_DATA = CacheData.TBL_HOTEL_GROUP_INFO;
|
|||
|
|
|
|||
|
|
foreach (var item in data)
|
|||
|
|
{
|
|||
|
|
var old = old_DATA.FirstOrDefault(x => x.HOTEL_GROUP_ID == item.Id);
|
|||
|
|
if (old != null)
|
|||
|
|
{
|
|||
|
|
old.PARENT_ID = item.ParentId;
|
|||
|
|
old.REMARK = item.Desc;
|
|||
|
|
old.HOTEL_GROUP_NAME = item.Name;
|
|||
|
|
context.Entry<TBL_HOTEL_GROUP_INFO>(old).State = EntityState.Unchanged;
|
|||
|
|
//res.Add(old);
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
res.Add(new TBL_HOTEL_GROUP_INFO
|
|||
|
|
{
|
|||
|
|
PARENT_ID = item.ParentId,
|
|||
|
|
REMARK = item.Desc,
|
|||
|
|
HOTEL_GROUP_ID = item.Id,
|
|||
|
|
HOTEL_GROUP_NAME = item.Name,
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
DbHelperSQL db = new DbHelperSQL(DBSel.BLV_RCU_DB);
|
|||
|
|
context.Database.OpenConnection();
|
|||
|
|
var com = context.TBL_HOTEL_GROUP_INFOS.CreateDbCommand();
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
com.CommandText = "SET IDENTITY_INSERT dbo.TBL_HOTEL_GROUP_INFO ON";
|
|||
|
|
com.ExecuteNonQuery();
|
|||
|
|
context.TBL_HOTEL_GROUP_INFOS.AddRange(res);
|
|||
|
|
context.SaveChanges();
|
|||
|
|
com.CommandText = ("SET IDENTITY_INSERT dbo.TBL_HOTEL_GROUP_INFO OFF");
|
|||
|
|
com.ExecuteNonQuery();
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception("保存酒店组信息出错~" + ex.InnerException.Message + ex.Message + JsonConvert.SerializeObject(res));
|
|||
|
|
}
|
|||
|
|
finally
|
|||
|
|
{
|
|||
|
|
context.Database.CloseConnection();
|
|||
|
|
com.Dispose();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
throw ex;
|
|||
|
|
}
|
|||
|
|
finally
|
|||
|
|
{
|
|||
|
|
CacheData.Clear(CacheData.CacheDataEnum.TBL_HOTEL_GROUP_INFO);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// api 接口获取同步酒店组
|
|||
|
|
/// </summary>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static List<HotelsAsync> GetHotelList()
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var res = new Dictionary<string, Object>();
|
|||
|
|
res.Add("jsonData", JsonConvert.SerializeObject(new { key = ConfigEntity.Instance.url_key }));
|
|||
|
|
WEBHELP s = new WEBHELP();
|
|||
|
|
var resdata = s.Post<ReturnData<List<HotelsAsync>>>(ConfigEntity.Instance.url_api + "GetHotelList", res).Result;
|
|||
|
|
return resdata;
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
throw ex;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 同步酒店 暂未使用
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="context"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static bool SYNC_Hotels(HotelServiceContext context)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var data = GetHotelList();
|
|||
|
|
List<TBL_HOTEL_BASIC_INFO> res = new List<TBL_HOTEL_BASIC_INFO>();
|
|||
|
|
var OLD_DATA = CacheData.TBL_HOTEL_BASIC_INFO;
|
|||
|
|
foreach (HotelsAsync item in data)
|
|||
|
|
{
|
|||
|
|
string str = item.ValidateDate.Replace("Date(", "").Replace(")", "").Replace("/", "");
|
|||
|
|
var S = new DateTime(1970, 1, 1, 8, 0, 0).AddMilliseconds(double.Parse(str));
|
|||
|
|
var OLDATA = OLD_DATA.FirstOrDefault(x => x.IDOLD == item.ID);
|
|||
|
|
if (OLDATA != null)
|
|||
|
|
{
|
|||
|
|
OLDATA.KEY_IN_DATETIME = item.CreatDate;
|
|||
|
|
OLDATA.HOTEL_NAME_CN = item.Name;
|
|||
|
|
OLDATA.HOTEL_NAME_EN = item.EName;
|
|||
|
|
OLDATA.HOTEL_NAME_TW = item.EName;
|
|||
|
|
OLDATA.HOTEL_GROUP = item.SysHotelGroupID;
|
|||
|
|
OLDATA.PROJECT_NUMBER = item.Code;
|
|||
|
|
OLDATA.HOTEL_CONTACT_PHONE = item.Phone;
|
|||
|
|
OLDATA.DETAIL_ADD = item.Address;
|
|||
|
|
OLDATA.VALID_DATETIME = S;
|
|||
|
|
OLDATA.STATUS = item.Status;
|
|||
|
|
OLDATA.IsApprove = item.IsApprove;
|
|||
|
|
res.Add(OLDATA);
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
res.Add(new TBL_HOTEL_BASIC_INFO
|
|||
|
|
{
|
|||
|
|
KEY_IN_DATETIME = item.CreatDate,
|
|||
|
|
HOTEL_NAME_CN = item.Name,
|
|||
|
|
HOTEL_NAME_EN = item.EName,
|
|||
|
|
HOTEL_NAME_TW = item.EName,
|
|||
|
|
HOTEL_GROUP = item.SysHotelGroupID,
|
|||
|
|
IDOLD = item.ID,
|
|||
|
|
PROJECT_NUMBER = item.Code,
|
|||
|
|
HOTEL_CONTACT_PHONE = item.Phone,
|
|||
|
|
DETAIL_ADD = item.Address,
|
|||
|
|
VALID_DATETIME = S,
|
|||
|
|
STATUS = item.Status,
|
|||
|
|
IsApprove = item.IsApprove,
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
context.TBL_HOTEL_BASIC_INFOS.UpdateRange(res);
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
context.SaveChanges();
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception("保存酒店信息出错~" + ex.Message + JsonConvert.SerializeObject(res));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
throw ex;
|
|||
|
|
}
|
|||
|
|
finally
|
|||
|
|
{
|
|||
|
|
CacheData.Clear(CacheData.CacheDataEnum.TBL_HOTEL_BASIC_INFO);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 用户登录
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="ipaddress"></param>
|
|||
|
|
/// <param name="UserAgent"></param>
|
|||
|
|
/// <param name="userName"></param>
|
|||
|
|
/// <param name="pwd"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
/// <exception cref="Exception"></exception>
|
|||
|
|
public static Root<Datainfo> SYNC_GetUserinfo(string ipaddress, string UserAgent, string userName, string pwd)
|
|||
|
|
{
|
|||
|
|
WEBHELP s = new WEBHELP();
|
|||
|
|
var res = s.Post<Root<Datainfo>>(ConfigEntity.Instance.Url + "/OTApi/Login", new Dictionary<string, dynamic>() { { "Ip", ipaddress }, { "Uid", userName }, { "Pwd", pwd }, { "appid", ConfigEntity.Instance.Appid }, { "UserAgent", UserAgent }, { "moreLogin", true } });
|
|||
|
|
return res;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// api同步房型表 api暂未使用
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="context"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static bool SYNC_RoomTypeAndModalsList(HotelServiceContext context)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var hostedata = CacheData.TBL_HOTEL_BASIC_INFO;
|
|||
|
|
var old_data = CacheData.TBL_ROOM_TYPE_LIST;
|
|||
|
|
var RoomTypedata = new List<TBL_ROOM_TYPE_LIST>();
|
|||
|
|
foreach (var item in hostedata)
|
|||
|
|
{
|
|||
|
|
var data = GetRoomType(item.PROJECT_NUMBER, item.KEY_IN_DATETIME.ToString("yyyy-MM-dd"));
|
|||
|
|
if (data == null) { continue; }
|
|||
|
|
foreach (var RoomType in data)
|
|||
|
|
{
|
|||
|
|
var olddata = old_data.FirstOrDefault(x => x.ROOM_TYPE_OLD_ID == RoomType.Code);
|
|||
|
|
if (olddata != null)
|
|||
|
|
{
|
|||
|
|
olddata.HOTEL_ID = item.HOTEL_ID;
|
|||
|
|
olddata.ROOM_TYPE_OLD_ID = RoomType.Code;
|
|||
|
|
olddata.ROOM_TYPE_NAME = RoomType.Name;
|
|||
|
|
RoomTypedata.Add(olddata);
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
RoomTypedata.Add(new TBL_ROOM_TYPE_LIST
|
|||
|
|
{
|
|||
|
|
ROOM_TYPE_OLD_ID = RoomType.Code,
|
|||
|
|
ROOM_TYPE_NAME = RoomType.Name,
|
|||
|
|
HOTEL_ID = item.HOTEL_ID
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
context.TBL_ROOM_TYPE_LISTS.UpdateRange(RoomTypedata);
|
|||
|
|
context.SaveChanges();
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
throw new Exception("添加保存房型出错:" + ex.Message + JsonConvert.SerializeObject(RoomTypedata));
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
throw ex;
|
|||
|
|
}
|
|||
|
|
finally
|
|||
|
|
{
|
|||
|
|
CacheData.Clear(CacheData.CacheDataEnum.TBL_ROOM_TYPE_LIST);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// api同步房型
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="code"></param>
|
|||
|
|
/// <param name="creatDate"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static List<asyncroomtype> GetRoomType(string code, string creatDate)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var res = new Dictionary<string, Object>();
|
|||
|
|
res.Add("jsonData", JsonConvert.SerializeObject(new { code = code, creatDate = creatDate }));
|
|||
|
|
WEBHELP s = new WEBHELP();
|
|||
|
|
var resdata = s.Post<ReturnData<List<asyncroomtype>>>(ConfigEntity.Instance.url_api + "GetRoomTypeAndModalsList", res).Result;
|
|||
|
|
return resdata;
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
LogHelp.Error(ex.Message);
|
|||
|
|
return null;
|
|||
|
|
throw ex;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static void GetVal<T>(ref T data, T model, params string[] property)
|
|||
|
|
{
|
|||
|
|
Type t = model.GetType();
|
|||
|
|
PropertyInfo[] PropertyList = t.GetProperties();
|
|||
|
|
foreach (PropertyInfo item in PropertyList)
|
|||
|
|
{
|
|||
|
|
string name = item.Name;
|
|||
|
|
if (property.Contains(name))
|
|||
|
|
item.SetValue(data, item.GetValue(model));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|