You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

213 lines
6.5 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FireBirdUtil.SqlUtils;
using Forks.JsonRpc.Client;
using Forks.JsonRpc.Client.Data;
using Utils.Datas;
using WeighBusiness.BO;
using WeighBusiness.Utils;
using WeighBusiness.Utils.SqlUtils;
namespace WeighBusiness.BL
{
public static class WpfUserBL
{
public static List<WpfUser> GetAllLocalWpfUserRowVersion()
{
return LocalQueryUtil.GetAllLocalWpfUserRowVersion();
}
public static bool Save(WpfUser wpfUser)
{
return Insert(wpfUser);
}
private static bool Insert(WpfUser wpfUser)
{
string insertSql = InsertUtil.GetInsertSql(TableNames.ERP员工,
new string[] { "WpfUser_Name", "WpfUser_ID", "Employee_Code", "Department_ID", "Employee_ID", "RowVersion" },
new string[] { wpfUser.WpfUser_Name, wpfUser.WpfUser_ID.ToString(), wpfUser.Employee_Code, DataTypeUtil.ToStringNullIfNull(wpfUser.Department_ID), DataTypeUtil.ToStringNullIfNull(wpfUser.Employee_ID),wpfUser.RowVersion });
bool success;
using (var she = new SqlHelperEx()) {
she.CreateTransaction();
she.ExecuteNonQuery(insertSql, out success);
if (!success)
she.Rollback();
else
she.Commit();
}
return success;
}
//public static bool Update(WpfUser wpfUser, Func<SqlHelperEx, WpfUser, bool> OperateInTransaction = null)
//{
// var oldWpfUser = Load(wpfUser.ID);
// IList<string> needUpdateItems = GetNeedUpdateItems(wpfUser, oldWpfUser);
// if (needUpdateItems.Count == 0)
// return true;
// string updateSql = UpdateUtil.GetUpdateString(TableNames.ERP员工, "ID", wpfUser.ID.ToString(), needUpdateItems.ToArray());
// bool success = true;
// using (var she = new SqlHelperEx()) {
// she.CreateTransaction();
// she.ExecuteNonQuery(updateSql, out success);
// if (!success) {
// she.Rollback();
// return false;
// }
// if (OperateInTransaction != null) {
// success = OperateInTransaction(she, wpfUser);
// }
// if (success)
// she.Commit();
// else
// she.Rollback();
// }
// return success;
//}
public static WpfUser Load(long wpfUserID)
{
return LocalQueryUtil.GetLocalWpfUser(wpfUserID);
}
//private static IList<string> GetNeedUpdateItems(WpfUser wpfUser, WpfUser oldWpfUser)
//{
// IList<string> updateItems = new List<string>();
// if (wpfUser.WpfUser_Name != oldWpfUser.WpfUser_Name) {
// updateItems.Add("WpfUser_Name");
// updateItems.Add(wpfUser.WpfUser_Name);
// }
// if (wpfUser.Employee_Code != oldWpfUser.RowVersion) {
// updateItems.Add("RowVersion");
// updateItems.Add(DataTypeUtil.ToStringEmptyIfNull(employee.RowVersion));
// }
// return updateItems;
//}
public static void Delete(long ID)
{
var sql = SqlUtil.GetDeleteSql(TableNames.ERP员工, "where WpfUser_Id=" + ID.ToString());
using (var she = new SqlHelperEx()) {
bool success;
she.CreateTransaction();
she.ExecuteNonQuery(sql, out success);
if (!success)
she.Rollback();
else
she.Commit();
}
}
public static void Delete()
{
var sql = SqlUtil.GetDeleteSql(TableNames.ERP员工);
using (var she = new SqlHelperEx())
{
bool success;
she.CreateTransaction();
she.ExecuteNonQuery(sql, out success);
if (!success)
she.Rollback();
else
she.Commit();
}
}
public static WpfUser LoadByCode(string code){
return LocalQueryUtil.GetLocalEmployeeByCode(code);
}
public static string OnLineLoadNameByCode(string code)
{
string wpfUserMethod = "/MainSystem/B3_HaoYue/Rpcs/RpcFun/GetWpfUserInfoByIds";
var wpfUsers = RpcFacade.Call<IList<RpcObject>>(wpfUserMethod, null,code);
if (wpfUsers.Count() > 0) {
return wpfUsers[0].Get<string>("Name");
}
return string.Empty;
}
public static void SyncWpfUser()
{
var method = "/MainSystem/B3_HaoYue/Rpcs/RpcFun/GetWpfUserInfoRowVersion";
var userVersion = RpcFacade.Call<List<RpcObject>>(method);
var oldUserVersion = WpfUserBL.GetAllLocalWpfUserRowVersion();
var needInsertUserID = new List<long?>();
var needDeleteAndInsertUserID = new List<long?>();
if (userVersion.Count > 0)
{
if (oldUserVersion == null || oldUserVersion.Count() <= 0)
{
userVersion.ForEach(x => needInsertUserID.Add(x.Get<long>("ID")));
}
else
{
foreach (var user in userVersion)
{
var user_ID = user.Get<long>("ID");
var oldUser = oldUserVersion.Where(x => x.WpfUser_ID == user_ID);
if (oldUser != null && oldUser.Count() > 0 && oldUser.FirstOrDefault().RowVersion != user.Get<string>("RowVersion"))
{
needDeleteAndInsertUserID.Add(user_ID);
}
else if (oldUser == null || oldUser.Count() <= 0)
{
needInsertUserID.Add(user_ID);
}
}
foreach (var oldVersion in oldUserVersion)
{
if (!userVersion.Any(x => x.Get<long>("ID") == oldVersion.WpfUser_ID))
{
WpfUserBL.Delete(oldVersion.WpfUser_ID);
}
}
}
}
else
{
WpfUserBL.Delete();
}
if (needDeleteAndInsertUserID.Count() > 0)
{
foreach (var userID in needDeleteAndInsertUserID)
{
WpfUserBL.Delete(userID.Value);
needInsertUserID.Add(userID);
}
}
if (needInsertUserID.Count > 0)
{
string userMethod = "/MainSystem/B3_HaoYue/Rpcs/RpcFun/GetWpfUserInfoByIds";
var users = RpcFacade.Call<IList<RpcObject>>(userMethod, needInsertUserID.ToArray(),null);
if (users.Count() > 0)
{
foreach (var wpfUser in users)
{
var user = new WpfUser();
user.WpfUser_ID = wpfUser.Get<long>("ID");
user.WpfUser_Name = wpfUser.Get<string>("Name");
user.Employee_Code = wpfUser.Get<string>("Code");
user.Department_ID = wpfUser.Get<long?>("Department_ID");
user.Employee_ID = wpfUser.Get<long?>("Employee_ID");
user.RowVersion = wpfUser.Get<string>("RowVersion");
WpfUserBL.Save(user);
}
}
}
}
}
}