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 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 OperateInTransaction = null) //{ // var oldWpfUser = Load(wpfUser.ID); // IList 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 GetNeedUpdateItems(WpfUser wpfUser, WpfUser oldWpfUser) //{ // IList updateItems = new List(); // 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>(wpfUserMethod, null,code); if (wpfUsers.Count() > 0) { return wpfUsers[0].Get("Name"); } return string.Empty; } public static void SyncWpfUser() { var method = "/MainSystem/B3_HaoYue/Rpcs/RpcFun/GetWpfUserInfoRowVersion"; var userVersion = RpcFacade.Call>(method); var oldUserVersion = WpfUserBL.GetAllLocalWpfUserRowVersion(); var needInsertUserID = new List(); var needDeleteAndInsertUserID = new List(); if (userVersion.Count > 0) { if (oldUserVersion == null || oldUserVersion.Count() <= 0) { userVersion.ForEach(x => needInsertUserID.Add(x.Get("ID"))); } else { foreach (var user in userVersion) { var user_ID = user.Get("ID"); var oldUser = oldUserVersion.Where(x => x.WpfUser_ID == user_ID); if (oldUser != null && oldUser.Count() > 0 && oldUser.FirstOrDefault().RowVersion != user.Get("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("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>(userMethod, needInsertUserID.ToArray(),null); if (users.Count() > 0) { foreach (var wpfUser in users) { var user = new WpfUser(); user.WpfUser_ID = wpfUser.Get("ID"); user.WpfUser_Name = wpfUser.Get("Name"); user.Employee_Code = wpfUser.Get("Code"); user.Department_ID = wpfUser.Get("Department_ID"); user.Employee_ID = wpfUser.Get("Employee_ID"); user.RowVersion = wpfUser.Get("RowVersion"); WpfUserBL.Save(user); } } } } } }