|
|
|
|
using System;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using DSWeb.Areas.SysMng.Models.DBTableConn;
|
|
|
|
|
using DSWeb.Areas.CommMng.Models;
|
|
|
|
|
using HcUtility.Comm;
|
|
|
|
|
using Microsoft.Practices.EnterpriseLibrary.Data;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
using DSWeb.Areas.CommMng.DAL;
|
|
|
|
|
using DSWeb.TruckMng.Helper;
|
|
|
|
|
using DSWeb.TruckMng.Helper.Repository;
|
|
|
|
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
|
|
|
|
namespace DSWeb.Areas.SysMng.DAL.DBTableConn
|
|
|
|
|
{
|
|
|
|
|
public partial class DBTableConnDAL
|
|
|
|
|
{
|
|
|
|
|
static public List<SYS_TABLECONNMC> GetDataList(string strCondition, string sort) //
|
|
|
|
|
{
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" where " + strCondition);
|
|
|
|
|
}
|
|
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" order by ID ");
|
|
|
|
|
}
|
|
|
|
|
return SetData(strSql);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static SYS_TABLECONNMC GetData( string condition)
|
|
|
|
|
{
|
|
|
|
|
SYS_TABLECONNMC head = new SYS_TABLECONNMC();
|
|
|
|
|
|
|
|
|
|
var _t = "";
|
|
|
|
|
var dataList = DBTableConnDAL.GetDataList(condition, _t);//, fieldlist
|
|
|
|
|
|
|
|
|
|
if (dataList.Count > 0)
|
|
|
|
|
head = dataList[0];
|
|
|
|
|
|
|
|
|
|
return head;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static List<SYS_TABLECONNMC> SetData(StringBuilder strSql)//, List<HcUtility.Core.Fieldmb> fieldlist
|
|
|
|
|
{//扩展数据list的测试
|
|
|
|
|
var headList = new List<SYS_TABLECONNMC>();
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
//Database db = DatabaseFactory.CreateDatabase("连接其他数据库使用其他数据库名字");
|
|
|
|
|
|
|
|
|
|
string sql = SYS_TABLECONNMC.getSQL() + strSql;
|
|
|
|
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, sql))
|
|
|
|
|
{
|
|
|
|
|
while (reader.Read())
|
|
|
|
|
{
|
|
|
|
|
SYS_TABLECONNMC data = new SYS_TABLECONNMC();
|
|
|
|
|
|
|
|
|
|
data.SetExtendValue(reader);
|
|
|
|
|
|
|
|
|
|
headList.Add(data);
|
|
|
|
|
}
|
|
|
|
|
reader.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return headList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static public List<SYS_TABLECONN_FIELDMC> GetBodyList(string strCondition, string sort="") //
|
|
|
|
|
{
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" where " + strCondition);
|
|
|
|
|
}
|
|
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" order by ID ");
|
|
|
|
|
}
|
|
|
|
|
return SetBodyData(strSql);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static List<SYS_TABLECONN_FIELDMC> SetBodyData(StringBuilder strSql)//, List<HcUtility.Core.Fieldmb> fieldlist
|
|
|
|
|
{//扩展数据list的测试
|
|
|
|
|
var headList = new List<SYS_TABLECONN_FIELDMC>();
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
//Database db = DatabaseFactory.CreateDatabase("连接其他数据库使用其他数据库名字");
|
|
|
|
|
|
|
|
|
|
string sql = SYS_TABLECONN_FIELDMC.getSQL() + strSql;
|
|
|
|
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, sql))
|
|
|
|
|
{
|
|
|
|
|
while (reader.Read())
|
|
|
|
|
{
|
|
|
|
|
SYS_TABLECONN_FIELDMC data = new SYS_TABLECONN_FIELDMC();
|
|
|
|
|
|
|
|
|
|
data.SetExtendValue(reader);
|
|
|
|
|
|
|
|
|
|
headList.Add(data);
|
|
|
|
|
}
|
|
|
|
|
reader.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return headList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static Database getdb(string DBNAME) {
|
|
|
|
|
if (!string.IsNullOrEmpty(DBNAME))
|
|
|
|
|
{
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase(DBNAME);
|
|
|
|
|
return db;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
return db;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static public List<BaseTableMC> BaseGetList(BaseTableMC Obj,string condition) //
|
|
|
|
|
{
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
strSql.Append(Obj.getSQL());
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(condition))
|
|
|
|
|
{
|
|
|
|
|
strSql.Append(" where " + condition);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var headList = new List<BaseTableMC>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var db = getdb(Obj.DBNAME);
|
|
|
|
|
//Database db = DatabaseFactory.CreateDatabase("连接其他数据库使用其他数据库名字");
|
|
|
|
|
|
|
|
|
|
string sql = strSql.ToString();
|
|
|
|
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, sql))
|
|
|
|
|
{
|
|
|
|
|
while (reader.Read())
|
|
|
|
|
{
|
|
|
|
|
BaseTableMC data = new BaseTableMC(Obj);
|
|
|
|
|
|
|
|
|
|
data.SetExtendValue(reader);
|
|
|
|
|
|
|
|
|
|
headList.Add(data);
|
|
|
|
|
}
|
|
|
|
|
reader.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return headList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 参数为
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="Obj">包括dbname和sql已定义的【来源数据对象】</param>
|
|
|
|
|
/// <param name="CONNNAME">连接名称</param>
|
|
|
|
|
/// <param name="condition">来源表查询条件</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static List<BaseTableMC> getToList(BaseTableMC Obj, string CONNNAME, string condition,string SQLStr="") {
|
|
|
|
|
|
|
|
|
|
var result = new List<BaseTableMC>();
|
|
|
|
|
|
|
|
|
|
var bodyList = new List<SYS_TABLECONN_FIELDMC>();
|
|
|
|
|
|
|
|
|
|
var _fromsql = getFromdbSql(CONNNAME,out bodyList);
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(SQLStr)) {
|
|
|
|
|
_fromsql = SQLStr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Obj.setSQL(_fromsql);
|
|
|
|
|
|
|
|
|
|
var fromlist = BaseGetList(Obj, condition);
|
|
|
|
|
|
|
|
|
|
if (fromlist.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
|
|
foreach (var from in fromlist) {
|
|
|
|
|
BaseTableMC todata = from.gettodata(bodyList);
|
|
|
|
|
result.Add(todata);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static public void DoSync_void(string data) {
|
|
|
|
|
var r=DoSync(data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static public bool DoSync(string data)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
|
|
|
|
var head = new SYS_TABLECONNMC();
|
|
|
|
|
|
|
|
|
|
head.SetValue(db, data);
|
|
|
|
|
|
|
|
|
|
return DoSync(head);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static public bool DoSync(SYS_TABLECONNMC head)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var modb = new ModelObjectRepository();
|
|
|
|
|
|
|
|
|
|
var savedb = new ModelObjectRepository();
|
|
|
|
|
|
|
|
|
|
Database savedbf = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
|
|
|
|
var todb = head.GetValue("TODB");
|
|
|
|
|
if (!string.IsNullOrEmpty(todb)) {
|
|
|
|
|
savedb = new ModelObjectRepository(todb);
|
|
|
|
|
savedbf = DatabaseFactory.CreateDatabase(todb);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Database db = DatabaseFactory.CreateDatabase(head.GetValue("FROMDB"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var fromdb = head.GetValue("FROMDB");
|
|
|
|
|
|
|
|
|
|
Database Portdb = DatabaseFactory.CreateDatabase();
|
|
|
|
|
if (!string.IsNullOrEmpty(fromdb))
|
|
|
|
|
Portdb = DatabaseFactory.CreateDatabase(fromdb);
|
|
|
|
|
|
|
|
|
|
BasicDataRefDAL.SaveLog("业务开始", head.GetValue("NAME"), "表同步模块", "时间记录");
|
|
|
|
|
|
|
|
|
|
var condition = "";
|
|
|
|
|
|
|
|
|
|
condition = " id=" + head.GetValue("ID") + " ";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var SYNCTYPE = head.GetValue("SYNCTYPE");
|
|
|
|
|
|
|
|
|
|
#region 主数据保存
|
|
|
|
|
//状态变为同步中 同步开始时间设为当前时间 同步完成时间设为空
|
|
|
|
|
head.SetPropertyValue("SYNCSTARTTIME", System.DateTime.Now.ToString());
|
|
|
|
|
head.SetPropertyValue("SYNCSTATES", "同步中");
|
|
|
|
|
head.SetPropertyValue("SYNCTIME", "");
|
|
|
|
|
head.DbOperationType = DbOperationType.DbotUpd;
|
|
|
|
|
head.ModelUIStatus = "E";
|
|
|
|
|
|
|
|
|
|
var _r = modb.SaveHead(head);
|
|
|
|
|
//head.TimeMarkNext();//保存后时间标签+1,用于在同一过程中二次存储
|
|
|
|
|
|
|
|
|
|
var templist = (DBTableConnDAL.GetDataList(condition, ""));
|
|
|
|
|
var _head = templist[0];
|
|
|
|
|
head.SetValue("TIMEMARK", _head.GetValue("TIMEMARK"));
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
var FieldList = DBTableConnDAL.GetBodyList("CONNID=" + head.GetValue("ID"), "");
|
|
|
|
|
|
|
|
|
|
var FieldDicList = ModelObjectConvert<SYS_TABLECONN_FIELDMC>.ToExtendList(FieldList);
|
|
|
|
|
|
|
|
|
|
var _fromsql = getFromdbSql(FieldDicList, head);
|
|
|
|
|
|
|
|
|
|
var _tosql = getTodbSql(FieldDicList, head);
|
|
|
|
|
|
|
|
|
|
BaseTableMC FromTableObj = new BaseTableMC();
|
|
|
|
|
BaseTableMC SaveObj = new BaseTableMC();
|
|
|
|
|
|
|
|
|
|
//获取来源表对象列表
|
|
|
|
|
|
|
|
|
|
var from_condition = "";
|
|
|
|
|
var to_condition = "";
|
|
|
|
|
if (SYNCTYPE == "单号")
|
|
|
|
|
{
|
|
|
|
|
from_condition = string.Format(" {0} in({1}) ", head.GetValue("FROMTIMEMARK"), head.GetValue("CONDITION"));
|
|
|
|
|
to_condition = string.Format(" {0} in({1}) ", head.GetValue("TOTIMEMARK"), head.GetValue("CONDITION"));
|
|
|
|
|
}
|
|
|
|
|
if (SYNCTYPE == "日期")
|
|
|
|
|
{
|
|
|
|
|
from_condition = string.Format(" {0}>='{1}' ", head.GetValue("FROMTIMEMARK"), head.GetValue("CONDITION"));
|
|
|
|
|
to_condition = string.Format(" {0}>='{1}' ", head.GetValue("TOTIMEMARK"), head.GetValue("CONDITION"));
|
|
|
|
|
}
|
|
|
|
|
if (SYNCTYPE == "时间标签" && head.GetValue("CONDITION") != "")
|
|
|
|
|
{
|
|
|
|
|
from_condition = string.Format(" {0}>='{1}' ", head.GetValue("FROMTIMEMARK"), head.GetValue("CONDITION"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FromTableObj = new BaseTableMC(head.GetValue("FROMTABLE"), head.GetValue("FROMPKEY"), _fromsql, head.GetValue("FROMDB"));
|
|
|
|
|
FromTableObj.GetTableField(Portdb);
|
|
|
|
|
|
|
|
|
|
var FromObjList = DBTableConnDAL.BaseGetList(FromTableObj, from_condition);//需要限制修改时间大于多少什么的where子句写在这里
|
|
|
|
|
|
|
|
|
|
//生成目标表对象列表
|
|
|
|
|
SaveObj = new BaseTableMC(head.GetValue("TOTABLE"), head.GetValue("TOPKEY"), _tosql, head.GetValue("TODB"));
|
|
|
|
|
SaveObj.GetTableField(savedbf);
|
|
|
|
|
//SaveObj.GetTableField(savedbf);
|
|
|
|
|
var HaveList = DBTableConnDAL.BaseGetList(SaveObj, to_condition);//首先取得已有数据
|
|
|
|
|
var SaveList = new List<BaseTableMC>();
|
|
|
|
|
var UPDList = new List<BaseTableMC>();
|
|
|
|
|
var havenumber = -1;
|
|
|
|
|
BasicDataRefDAL.SaveLog(string.Format("两个列表获取完成(from{0},Have{1}),开始比对。", FromObjList.Count, HaveList.Count), "", "表同步模块", "时间记录");
|
|
|
|
|
|
|
|
|
|
var TOPKEY = head.GetValue("TOPKEY");
|
|
|
|
|
var FROMPEKY = head.GetValue("FROMPKEY");
|
|
|
|
|
string[] TOPEKYArray = { };
|
|
|
|
|
string[] FROMPEKYArray = { };
|
|
|
|
|
|
|
|
|
|
if (TOPKEY.Contains(","))
|
|
|
|
|
{
|
|
|
|
|
//首先将两个关键词都拆分成数组
|
|
|
|
|
TOPEKYArray = TOPKEY.Split(',');
|
|
|
|
|
FROMPEKYArray = FROMPEKY.Split(',');
|
|
|
|
|
|
|
|
|
|
if (TOPEKYArray.Count() != FROMPEKYArray.Count())
|
|
|
|
|
{
|
|
|
|
|
var json1 = JsonConvert.Serialize(new { Success = false, Message = "主键数量不匹配" });
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach (var fromObj in FromObjList)
|
|
|
|
|
{
|
|
|
|
|
var alreadyhave = false;
|
|
|
|
|
var haveobj = new BaseTableMC(head.GetValue("TOTABLE"), TOPKEY, _tosql, head.GetValue("TODB"));
|
|
|
|
|
havenumber = -1;
|
|
|
|
|
foreach (var toObj in HaveList)
|
|
|
|
|
{
|
|
|
|
|
if (!TOPKEY.Contains(","))
|
|
|
|
|
{
|
|
|
|
|
if (toObj.GetValue(TOPKEY) == fromObj.GetValue(FROMPEKY))
|
|
|
|
|
{
|
|
|
|
|
toObj.DbOperationType = DbOperationType.DbotUpd;
|
|
|
|
|
toObj.ModelUIStatus = "E";
|
|
|
|
|
|
|
|
|
|
if (needupd(head, fromObj, toObj,FieldDicList))
|
|
|
|
|
{
|
|
|
|
|
foreach (var field in FieldDicList)
|
|
|
|
|
{
|
|
|
|
|
toObj.SetPropertyValue(field["TOFIELDNAME"], fromObj.GetValue(field["FROMFIELDNAME"]));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
toObj.Copy(haveobj);
|
|
|
|
|
UPDList.Add(haveobj);
|
|
|
|
|
}
|
|
|
|
|
alreadyhave = true;
|
|
|
|
|
havenumber = HaveList.IndexOf(toObj);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var PKOK = true;
|
|
|
|
|
for (var _i = 0; _i < TOPEKYArray.Count(); _i++)
|
|
|
|
|
{
|
|
|
|
|
if (toObj.GetValue(TOPEKYArray[_i]) != fromObj.GetValue(FROMPEKYArray[_i]))
|
|
|
|
|
{
|
|
|
|
|
PKOK = false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (PKOK)
|
|
|
|
|
{
|
|
|
|
|
toObj.DbOperationType = DbOperationType.DbotUpd;
|
|
|
|
|
toObj.ModelUIStatus = "E";
|
|
|
|
|
|
|
|
|
|
if (needupd(head, fromObj, toObj,FieldDicList))
|
|
|
|
|
{
|
|
|
|
|
foreach (var field in FieldDicList)
|
|
|
|
|
{
|
|
|
|
|
toObj.SetPropertyValue(field["TOFIELDNAME"], fromObj.GetValue(field["FROMFIELDNAME"]));
|
|
|
|
|
}
|
|
|
|
|
toObj.Copy(haveobj);
|
|
|
|
|
UPDList.Add(haveobj);
|
|
|
|
|
}
|
|
|
|
|
alreadyhave = true;
|
|
|
|
|
havenumber = HaveList.IndexOf(toObj);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!alreadyhave)
|
|
|
|
|
{
|
|
|
|
|
var saveobj = new BaseTableMC(SaveObj);
|
|
|
|
|
saveobj.DbOperationType = DbOperationType.DbotIns;
|
|
|
|
|
saveobj.ModelUIStatus = "I";
|
|
|
|
|
foreach (var field in FieldDicList)
|
|
|
|
|
{
|
|
|
|
|
saveobj.SetPropertyValue(field["TOFIELDNAME"], fromObj.GetValue(field["FROMFIELDNAME"]));
|
|
|
|
|
}
|
|
|
|
|
SaveList.Add(saveobj);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (havenumber >= 0)
|
|
|
|
|
{
|
|
|
|
|
HaveList.RemoveAt(havenumber);
|
|
|
|
|
havenumber = -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BasicDataRefDAL.SaveLog(string.Format("比对循环结束,需储存{0}条,升级{1}条", SaveList.Count(), UPDList.Count()), "", "表同步模块", "时间记录");
|
|
|
|
|
|
|
|
|
|
//保存目标表对象列表
|
|
|
|
|
DBResult result = new DBResult();
|
|
|
|
|
|
|
|
|
|
var DoSaveList = ModelHeadConvert<BaseTableMC>.ToModelObjectList(SaveList);
|
|
|
|
|
foreach (var saveobj in DoSaveList)
|
|
|
|
|
{
|
|
|
|
|
result = savedb.SaveHead(saveobj);
|
|
|
|
|
if (result.Success == false)
|
|
|
|
|
{
|
|
|
|
|
BasicDataRefDAL.SaveLog("保存错误:" + result.Message, saveobj.ToString(), "表同步模块", "时间记录");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
BasicDataRefDAL.SaveLog("储存" + result.Success.ToString() + ",储存" + DoSaveList.Count.ToString() + "条;" + result.Message, "", "表同步模块", "时间记录");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var DoUPDList = ModelHeadConvert<BaseTableMC>.ToModelObjectList(UPDList);
|
|
|
|
|
foreach (var saveobj in DoUPDList)
|
|
|
|
|
{
|
|
|
|
|
result = savedb.SaveHead(saveobj);
|
|
|
|
|
if (result.Success == false)
|
|
|
|
|
{
|
|
|
|
|
BasicDataRefDAL.SaveLog("更新错误:" + result.Message, saveobj.ToString(), "表同步模块", "时间记录");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
result = modb.SaveHeadList_new(DoUPDList);
|
|
|
|
|
BasicDataRefDAL.SaveLog("更新" + result.Success.ToString() + ",更新" + DoUPDList.Count.ToString() + "条;" + result.Message, "", "表同步模块", "时间记录");
|
|
|
|
|
|
|
|
|
|
if (result.Success)
|
|
|
|
|
{
|
|
|
|
|
//升级本条数据的同步时间至当前时间
|
|
|
|
|
head.SetPropertyValue("SYNCTIME", System.DateTime.Now.ToString());
|
|
|
|
|
head.SetPropertyValue("SYNCSTATES", "同步完成");
|
|
|
|
|
head.DbOperationType = DbOperationType.DbotUpd;
|
|
|
|
|
head.ModelUIStatus = "E";
|
|
|
|
|
result = modb.Save(head);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//var _list = ModelObjectConvert<SYS_TABLECONNMC>.ToExtendList((DBTableConnDAL.GetDataList(condition, "")));
|
|
|
|
|
|
|
|
|
|
//var json = JsonConvert.Serialize(new { Success = result.Success, Message = result.Message, Data = _list[0] });
|
|
|
|
|
return true; //new ContentResult() { Content = json };
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static bool needupd(SYS_TABLECONNMC head, BaseTableMC fromObj, BaseTableMC toObj, List<Dictionary<string, string>> FieldDicList)
|
|
|
|
|
{
|
|
|
|
|
if (head.GetValue("SYNCTYPE") == "时间标签")
|
|
|
|
|
{
|
|
|
|
|
var frommark = Convert.ToDateTime(fromObj.GetValue(head.GetValue("FROMTIMEMARK")));
|
|
|
|
|
var tomark = Convert.ToDateTime(toObj.GetValue(head.GetValue("TOTIMEMARK")));
|
|
|
|
|
|
|
|
|
|
if (frommark > tomark)
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (head.GetValue("SYNCTYPE") == "单号")
|
|
|
|
|
{
|
|
|
|
|
var frommark = Convert.ToString(fromObj.GetValue(head.GetValue("FROMTIMEMARK")));
|
|
|
|
|
var tomark = Convert.ToString(toObj.GetValue(head.GetValue("TOTIMEMARK")));
|
|
|
|
|
|
|
|
|
|
if (frommark == tomark)
|
|
|
|
|
{
|
|
|
|
|
return checkfields(FieldDicList, fromObj, toObj) == true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static bool checkfields(List<Dictionary<string, string>> FieldDicList, BaseTableMC fromObj, BaseTableMC toObj)
|
|
|
|
|
{
|
|
|
|
|
var result = false;
|
|
|
|
|
foreach (var field in FieldDicList)
|
|
|
|
|
{
|
|
|
|
|
if (toObj.GetValue(field["TOFIELDNAME"]) != fromObj.GetValue(field["FROMFIELDNAME"])) {
|
|
|
|
|
result = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string getFromdbSql(List<Dictionary<string, string>> FieldDicList, SYS_TABLECONNMC head) {
|
|
|
|
|
var _fromsql = " select ";
|
|
|
|
|
foreach (var dic in FieldDicList)
|
|
|
|
|
{
|
|
|
|
|
if (_fromsql != " select " && !string.IsNullOrEmpty(dic["FROMFIELDNAME"]))
|
|
|
|
|
{
|
|
|
|
|
_fromsql += ",";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_fromsql += dic["FROMFIELDNAME"];
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
_fromsql += " from " + head.GetValue("FROMTABLE");
|
|
|
|
|
return _fromsql;
|
|
|
|
|
}
|
|
|
|
|
public static string getTodbSql(List<Dictionary<string, string>> FieldDicList, SYS_TABLECONNMC head)
|
|
|
|
|
{
|
|
|
|
|
var _tosql = " select ";
|
|
|
|
|
foreach (var dic in FieldDicList)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (_tosql != " select " && !string.IsNullOrEmpty(dic["TOFIELDNAME"]))
|
|
|
|
|
{
|
|
|
|
|
_tosql += ",";
|
|
|
|
|
}
|
|
|
|
|
_tosql += dic["TOFIELDNAME"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_tosql += " from " + head.GetValue("TOTABLE");
|
|
|
|
|
|
|
|
|
|
return _tosql;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string getFromdbSql(string CONNNAME,out List<SYS_TABLECONN_FIELDMC> bodyList) {
|
|
|
|
|
var result = "";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var connhead = GetData("NAME='" + CONNNAME + "'");
|
|
|
|
|
bodyList = new List<SYS_TABLECONN_FIELDMC>();
|
|
|
|
|
var CONNID = connhead.GetValue("ID");
|
|
|
|
|
if (CONNID == "") { return result; }
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
bodyList = GetBodyList("CONNID=" + CONNID);
|
|
|
|
|
var FieldDicList = ModelObjectConvert<SYS_TABLECONN_FIELDMC>.ToExtendList(bodyList);
|
|
|
|
|
|
|
|
|
|
result = getFromdbSql(FieldDicList, connhead);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static List<SYS_TABLECONN_FIELDMC> getConn(string CONNNAME) {
|
|
|
|
|
var connhead = GetData("NAME='" + CONNNAME + "'");
|
|
|
|
|
var result = new List<SYS_TABLECONN_FIELDMC>();
|
|
|
|
|
var CONNID = connhead.GetValue("ID");
|
|
|
|
|
if (CONNID == "") { return result; }
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result = GetBodyList("CONNID=" + CONNID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|