You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DS7/DSWeb/Areas/SysMng/Controllers/DBTableConnController.cs

458 lines
19 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using DSWeb.Areas.SysMng.Models.DBTableConn;
using DSWeb.Areas.SysMng.DAL;
using DSWeb.Areas.SysMng.DAL.DBTableConn;
using DSWeb.MvcShipping.Helper;
using DSWeb.MvcShipping.Helper.Repository;
using HcUtility.Comm;
using HcUtility.Core;
using Microsoft.Practices.EnterpriseLibrary.Data;
namespace DSWeb.Areas.SysMng.Controllers
{
[JsonRequestBehavior]
public class DBTableConnController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Edit()
{
return View();
}
public ContentResult GetDataList(int start, int limit, string sort, string condition)
{
var dataList = DBTableConnDAL.GetDataList(condition, sort);
var DicList = ModelObjectConvert<SYS_TABLECONNMC>.ToExtendList(dataList);
var list = DicList.Skip(start).Take(limit);
var json = JsonConvert.Serialize(new
{
Success = true,
Message = "查询成功",
totalCount = dataList.Count,
data = list.ToList()
//,fieldlist = fieldlist.ToList()
});
return new ContentResult() { Content = json };
}
public ContentResult GetData(string handle, string condition)
{
Dictionary<string,string> head = new Dictionary<string,string>();
//var bj = new BJmb();
//List<HcUtility.Core.Fieldmb> fieldlist = bj.GetFieldList();
if (handle == "edit"||handle =="view")
{
var _t = "";
var dataList = DBTableConnDAL.GetDataList(condition, _t);//, fieldlist
var DicList = ModelObjectConvert<SYS_TABLECONNMC>.ToExtendList(dataList);
if (DicList.Count > 0)
head = DicList[0];
}
if (head == null)
{
head = new Dictionary<string,string>();
}
var json = JsonConvert.Serialize(
new { Success = true, Message = "查询成功", data = head });
return new ContentResult() { Content = json };
}
public ContentResult Save(string opstatus, string data,string Body, string DelBody)
{
var modb = new ModelObjectRepository();
Database db = DatabaseFactory.CreateDatabase();
var head = new SYS_TABLECONNMC();
head.SetValue(db, data);
//存储时不保存两个同步时间和同步状态
head.NoSave("SYNCSTARTTIME");
head.NoSave("SYNCTIME");
head.NoSave("SYNCSTATES");
var BodyList = new List<SYS_TABLECONN_FIELDMC>();
var DelBodyList = new List<SYS_TABLECONN_FIELDMC>();
if (Body != "")
{
BodyList = JsonConvert_extend<SYS_TABLECONN_FIELDMC>.Deserialize(db,Body);
}
if (DelBody != "")
{
DelBodyList = JsonConvert_extend<SYS_TABLECONN_FIELDMC>.Deserialize(db,DelBody);
}
if (opstatus == "add")
{
head.DbOperationType = DbOperationType.DbotIns;
head.ModelUIStatus = "I";
head.SetExtendValue("ID", "1");
}
else if (opstatus == "edit")
{
head.DbOperationType = DbOperationType.DbotUpd;
head.ModelUIStatus = "E";
}
else
{
head.DbOperationType = DbOperationType.DbotDel;
}
DBResult result = modb.Save(head,
ModelObjectConvert<SYS_TABLECONN_FIELDMC>.ToModelObjectList(BodyList),
ModelObjectConvert<SYS_TABLECONN_FIELDMC>.ToModelObjectList(DelBodyList)
);
//BasicDataRefDAL.SaveLog(head, Session["USERID"].ToString(), "Demo 学生管理_班级", "保存");
//刷新父窗口上的父节点
var jsonRespose = new JsonResponse();
jsonRespose.Success = result.Success;
if (result.Success) {
var condition = "";
if (opstatus == "add") {
condition = " id=(select MAX(id) from SYS_TABLECONN) ";
}
if (opstatus == "edit")
{
condition = " id="+head.GetValue("ID")+" ";
}
var _list = ModelObjectConvert<SYS_TABLECONNMC>.ToExtendList((DBTableConnDAL.GetDataList(condition, "")));
if (_list.Count > 0)
{
jsonRespose.Message = "保存成功";
jsonRespose.Data = _list[0];
}
}
else
{
jsonRespose.Message = result.Message;
jsonRespose.Data = null;
}
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult Delete(string data, string USERID)
{
var modb = new ModelObjectDB();
Database db = DatabaseFactory.CreateDatabase();
var head = new SYS_TABLECONNMC();
head.SetValue(db, data);
DBResult result = modb.Delete(head, "delete from SYS_TABLECONN_FIELD where CONNID='" + head.GetBillNoValue() + "'"); //真删除
//DBResult result = modb.Delete(head, USERID,true, "delete from Demo_XSGL_XS where BJ_GID='"+head.GetBillNoValue()+"'" );//带userid参数的为标记删除
var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message };
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult GetBodyList(int start, int limit, string sort, string condition)
{
var dataList = DBTableConnDAL.GetBodyList(condition, sort);
var DicList = ModelObjectConvert<SYS_TABLECONN_FIELDMC>.ToExtendList(dataList);
var list = DicList.Skip(start).Take(limit);
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = list.ToList() });
return new ContentResult() { Content = json };
}
//public ContentResult DoSync_old(string data)
//{
// var modb = new ModelObjectRepository();
// Database db = DatabaseFactory.CreateDatabase();
// Database Portdb = DatabaseFactory.CreateDatabase("ERPPort");
// var head = new SYS_TABLECONNMC();
// head.SetValue(db, data);
// BasicDataRefDAL.SaveLog_str("业务开始", 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, ""));
// head = templist[0];
// #endregion
// var FieldList = DBTableConnDAL.GetBodyList("CONNID="+head.GetValue("ID"), "");
// var FieldDicList = ModelObjectConvert<SYS_TABLECONN_FIELDMC>.ToExtendList(FieldList);
// var _fromsql = "select ";
// var _tosql = "select ";
// foreach (var dic in FieldDicList) {
// if (_fromsql != "select " && !string.IsNullOrEmpty(dic["FROMFIELDNAME"]))
// {
// _fromsql += ",";
// }
// _fromsql += dic["FROMFIELDNAME"];
// if (_tosql != "select " && !string.IsNullOrEmpty(dic["TOFIELDNAME"]))
// {
// _tosql += ",";
// }
// _tosql += dic["TOFIELDNAME"];
// }
// _fromsql += " from " + head.GetValue("FROMTABLE");
// _tosql += " from " + head.GetValue("TOTABLE");
// BaseTableMC FromTableObj = new BaseTableMC();
// BaseTableMC SaveObj = new BaseTableMC();
// //获取来源表对象列表
// var from_condition = "";
// var to_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 == "日期")
// {
// 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(db);
// var HaveList = DBTableConnDAL.BaseGetList(SaveObj, to_condition);//首先取得本地已有数据
// var SaveList = new List<BaseTableMC>();
// var UPDList = new List<BaseTableMC>();
// var havenumber = -1;
// BasicDataRefDAL.SaveLog_str(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 new ContentResult() { Content = json1 };
// }
// }
// 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";
// foreach (var field in FieldDicList)
// {
// toObj.SetPropertyValue(field["TOFIELDNAME"], fromObj.GetValue(field["FROMFIELDNAME"]));
// }
// if (needupd(head, fromObj, toObj))
// {
// 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";
// foreach (var field in FieldDicList)
// {
// toObj.SetPropertyValue(field["TOFIELDNAME"], fromObj.GetValue(field["FROMFIELDNAME"]));
// }
// if (needupd(head, fromObj, toObj))
// {
// 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_str(string.Format("比对循环结束,需储存{0}条,升级{1}条", SaveList.Count(), UPDList.Count()), "", "表同步模块", "时间记录");
// //保存目标表对象列表
// DBResult result = new DBResult();
// var DoSaveList = ModelHeadConvert<BaseTableMC>.ToModelObjectList(SaveList);
// foreach (var saveobj in DoSaveList)
// {
// result = modb.SaveHead(saveobj);
// if (result.Success == false) {
// BasicDataRefDAL.SaveLog_str("保存错误:"+result.Message , saveobj.ToString(), "表同步模块", "时间记录");
// }
// }
// BasicDataRefDAL.SaveLog_str("储存"+result.Success.ToString()+",储存" + DoSaveList.Count.ToString() + "条;"+result.Message, "", "表同步模块", "时间记录");
// var DoUPDList = ModelHeadConvert<BaseTableMC>.ToModelObjectList(UPDList);
// foreach (var saveobj in DoUPDList)
// {
// result = modb.SaveHead(saveobj);
// if (result.Success == false)
// {
// BasicDataRefDAL.SaveLog_str("更新错误:" + result.Message, saveobj.ToString(), "表同步模块", "时间记录");
// }
// }
// result = modb.SaveHeadList_new(DoUPDList);
// BasicDataRefDAL.SaveLog_str("更新" + 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 new ContentResult() { Content = json };
//}
public ContentResult DoSync(string data) {
DBTableConnDAL.DoSync_void(data);
var json = JsonConvert.Serialize(new { Success = true, Message = "", Data = "" });
return new ContentResult() { Content = json };
}
private bool needupd(SYS_TABLECONNMC head, BaseTableMC fromObj, BaseTableMC toObj) {
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 true;
}
else
{
return false;
}
}
return true;
}
}
}