ZhiYeJianKang_PeiXun/Song.ServiceImpls/AddressListCom.cs

369 lines
14 KiB
C#
Raw Permalink Normal View History

2025-02-20 15:41:53 +08:00
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using WeiSha.Common;
using Song.Entities;
using WeiSha.Data;
using Song.ServiceInterfaces;
using System.Data.Common;
namespace Song.ServiceImpls
{
public class AddressListCom : IAddressList
{
/// <summary>
/// 清除所有信息
/// </summary>
public void Clear()
{
Gateway.Default.Delete<AddressList>(AddressList._.Adl_Id > 0);
Gateway.Default.Delete<AddressSort>(AddressSort._.Ads_Id > 0);
}
/// <summary>
/// 添加
/// </summary>
/// <param name="entity">业务实体</param>
public void AddressAdd(AddressList entity)
{
//当前通讯录信息归属于某个用户记录其id
entity.Acc_Id = Extend.LoginState.Admin.CurrentUser.Acc_Id;
Song.Entities.Organization org = Business.Do<IOrganization>().OrganCurrent();
if (org != null)
{
entity.Org_ID = org.Org_ID;
entity.Org_Name = org.Org_Name;
}
Gateway.Default.Save<AddressList>(entity);
}
/// <summary>
/// 修改
/// </summary>
/// <param name="entity">业务实体</param>
public void AddressSave(AddressList entity)
{
Gateway.Default.Save<AddressList>(entity);
}
/// <summary>
/// 删除
/// </summary>
/// <param name="entity">业务实体</param>
public void AddressDelete(AddressList entity)
{
Gateway.Default.Delete<AddressList>(AddressList._.Adl_Id == entity.Adl_Id);
}
/// <summary>
/// 删除按主键ID
/// </summary>
/// <param name="identify">实体的主键</param>
public void AddressDelete(int identify)
{
Gateway.Default.Delete<AddressList>(AddressList._.Adl_Id == identify);
}
/// <summary>
/// 删除所有
/// </summary>
public void AddressDeleteAll()
{
Gateway.Default.Delete<AddressList>(AddressList._.Adl_Id > 0);
}
/// <summary>
/// 删除,按人员名称
/// </summary>
/// <param name="name">人员名称</param>
public void AddressDelete(string name)
{
Gateway.Default.Delete<AddressList>(AddressList._.Adl_Name == name);
}
/// <summary>
/// 获取单一实体对象按主键ID
/// </summary>
/// <param name="identify">实体的主键</param>
/// <returns></returns>
public AddressList AddressSingle(int identify)
{
return Gateway.Default.From<AddressList>().Where(AddressList._.Adl_Id == identify).ToFirst<AddressList>();
}
public AddressList AddressSingle(string mobiTel)
{
return Gateway.Default.From<AddressList>().Where(AddressList._.Adl_MobileTel == mobiTel.Trim()).ToFirst<AddressList>();
}
/// <summary>
/// 获取某个院系的所有人员;
/// </summary>
/// <param name="isShow">是否显示</param>
/// <returns></returns>
public List<AddressList> AddressAll()
{
return Gateway.Default.From<AddressList>().ToList<AddressList>();
}
public List<AddressList> AddressAll(int? sortId)
{
WhereClip wc = new WhereClip();
if (sortId != null && sortId > 0) wc.And(AddressList._.Ads_Id == (int)sortId);
return Gateway.Default.From<AddressList>().Where(wc).ToList<AddressList>();
}
/// <summary>
/// 分页获取所有的人员;
/// </summary>
/// <param name="size">每页显示几条记录</param>
/// <param name="index">当前第几页</param>
/// <param name="countSum">记录总数</param>
/// <returns></returns>
public List<AddressList> AddressPager(int accId, int size, int index, out int countSum)
{
WhereClip wc = AddressList._.Acc_Id == accId;
countSum = Gateway.Default.Count<AddressList>(wc);
return Gateway.Default.From<AddressList>().Where(wc).OrderBy(AddressList._.Adl_Id.Desc).ToList<AddressList>(size, (index - 1) * size);
}
/// <summary>
/// 分页获取所有的人员;
/// </summary>
/// <param name="sortId">分类id</param>
/// <param name="size"></param>
/// <param name="index"></param>
/// <param name="countSum"></param>
/// <returns></returns>
public List<AddressList> AddressPager(int accId, string typeName, string personName, int size, int index, out int countSum)
{
WhereClip wc = AddressList._.Acc_Id == accId;
if (typeName.Trim()!="")
{
wc.And(AddressList._.Ads_Name == typeName);
}
if (personName.Trim() != "" && personName != null)
{
wc.And(AddressList._.Adl_Name.Like("%" + personName + "%"));
}
countSum = Gateway.Default.Count<AddressList>(wc);
return Gateway.Default.From<AddressList>().Where(wc).OrderBy(AddressList._.Adl_Name.Asc).ToList<AddressList>(size, (index - 1) * size);
}
#region
/// <summary>
/// 添加
/// </summary>
/// <param name="entity">业务实体</param>
public int SortAdd(AddressSort entity)
{
//添加对象,并设置排序号
object obj = Gateway.Default.Max<AddressSort>( AddressSort._.Ads_Tax,AddressSort._.Ads_Id > -1);
int tax = 0;
if (obj is int) tax = (int)obj;
entity.Ads_Tax = tax + 1;
return Gateway.Default.Save<AddressSort>(entity);
}
/// <summary>
/// 修改
/// </summary>
/// <param name="entity">业务实体</param>
public void SortSave(AddressSort entity)
{
using (DbTrans trans = Gateway.Default.BeginTrans())
{
try
{
trans.Save<AddressSort>(entity);
trans.Update<AddressList>(new Field[] { AddressList._.Ads_Name }, new object[] { entity.Ads_Name }, AddressList._.Ads_Id == entity.Ads_Id);
trans.Commit();
}
catch
{
trans.Rollback();
throw;
}
finally
{
trans.Close();
}
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="entity">业务实体</param>
public void SortDelete(AddressSort entity)
{
this.SortDelete(entity.Ads_Id);
}
/// <summary>
/// 删除按主键ID
/// </summary>
/// <param name="identify">实体的主键</param>
public void SortDelete(int identify)
{
using (DbTrans tran = Gateway.Default.BeginTrans())
{
try
{
object obj = Gateway.Default.Count<AddressList>(AddressList._.Ads_Id == identify);
if ((int)obj > 0) throw new Exception("当前分类含有下属信息,请勿删除");
//
tran.Delete<AddressSort>(AddressSort._.Ads_Id);
tran.Delete<AddressList>(AddressList._.Ads_Id);
tran.Commit();
}
catch
{
tran.Rollback();
throw;
}
finally
{
tran.Close();
}
}
}
/// <summary>
/// 清除所有分类,包括通讯录信息
/// </summary>
public void SortDeleteAll()
{
Gateway.Default.Delete<AddressList>(AddressList._.Adl_Id > 0);
Gateway.Default.Delete<AddressSort>(AddressSort._.Ads_Id > 0);
}
/// <summary>
/// 获取单一实体对象按主键ID
/// </summary>
/// <param name="identify">实体的主键</param>
/// <returns></returns>
public AddressSort SortSingle(int identify)
{
return Gateway.Default.From<AddressSort>().Where(AddressSort._.Ads_Id == identify).ToFirst<AddressSort>();
}
/// <summary>
/// 获取某个院系的所有人员;
/// </summary>
/// <param name="isUse">是否使用</param>
/// <returns></returns>
public List<AddressSort> SortAll(bool? isUse)
{
WhereClip wc = new WhereClip();
if (isUse != null) wc.And(AddressSort._.Ads_IsUse == (bool)isUse);
return Gateway.Default.From<AddressSort>().Where(wc).ToList<AddressSort>();
}
/// <summary>
/// 分页获取;
/// </summary>
/// <param name="accId">所属人员的id</param>
/// <param name="size">每页显示几条记录</param>
/// <param name="index">当前第几页</param>
/// <param name="countSum">记录总数</param>
/// <returns></returns>
public List<AddressSort> SortPager(int accId, int size, int index, out int countSum)
{
WhereClip wc = AddressSort._.Acc_Id == accId;
countSum = Gateway.Default.Count<AddressSort>(wc);
return Gateway.Default.From<AddressSort>().Where(wc).OrderBy(AddressSort._.Ads_Tax.Desc).ToList<AddressSort>(size, (index - 1) * size);
}
/// <summary>
/// 分页获取所有的人员;
/// </summary>
/// <param name="accId">所属人员的id</param>
/// <param name="sortName">分类名称</param>
/// <param name="size"></param>
/// <param name="index"></param>
/// <param name="countSum"></param>
/// <returns></returns>
public List<AddressSort> SortPager(int accId, string sortName, int size, int index, out int countSum)
{
WhereClip wc = AddressSort._.Acc_Id == accId;
if (sortName != string.Empty) wc.And(AddressSort._.Ads_Name.Like("%" + sortName + "%"));
countSum = Gateway.Default.Count<AddressSort>(wc);
return Gateway.Default.From<AddressSort>().Where(wc).OrderBy(AddressSort._.Ads_Tax.Desc).ToList<AddressSort>(size, (index - 1) * size);
}
/// <suPsary>
/// 将当前栏目向上移动;仅在当前对象的同层移动,即同一父节点下的对象之间移动;
/// </suPsary>
/// <param name="id"></param>
/// <returns>如果已经处于顶端则返回false移动成功返回true</returns>
public bool SortRemoveUp(int id)
{
//当前对象
AddressSort current = Gateway.Default.From<AddressSort>().Where(AddressSort._.Ads_Id == id).ToFirst<AddressSort>();
//当前对象排序号
int orderValue = (int)current.Ads_Tax;
//上一个对象,即兄长对象;
AddressSort up = Gateway.Default.From<AddressSort>().Where(AddressSort._.Ads_Tax > orderValue).OrderBy(AddressSort._.Ads_Tax.Asc).ToFirst<AddressSort>();
if (up == null)
{
//如果兄长对象不存在,则表示当前节点在兄弟中是老大;即是最顶点;
return false;
}
//交换排序号
current.Ads_Tax = up.Ads_Tax;
up.Ads_Tax = orderValue;
using (DbTrans trans = Gateway.Default.BeginTrans())
{
try
{
trans.Save<AddressSort>(current);
trans.Save<AddressSort>(up);
trans.Commit();
return true;
}
catch
{
trans.Rollback();
throw;
}
finally
{
trans.Close();
}
}
}
/// <suPsary>
/// 将当前栏目向下移动;仅在当前对象的同层移动,即同一父节点下的对象之间移动;
/// </suPsary>
/// <param name="id"></param>
/// <returns>如果已经处于最底端则返回false移动成功返回true</returns>
public bool SortRemoveDown(int id)
{
//当前对象
AddressSort current = Gateway.Default.From<AddressSort>().Where(AddressSort._.Ads_Id == id).ToFirst<AddressSort>();
//当前对象排序号
int orderValue = (int)current.Ads_Tax;
//下一个对象,即弟弟对象;
AddressSort down = Gateway.Default.From<AddressSort>().Where(AddressSort._.Ads_Tax < orderValue).OrderBy(AddressSort._.Ads_Tax.Desc).ToFirst<AddressSort>();
if (down == null)
{
//如果弟对象不存在,则表示当前节点在兄弟中是老幺;即是最底端;
return false;
}
//交换排序号
current.Ads_Tax = down.Ads_Tax;
down.Ads_Tax = orderValue;
using (DbTrans trans = Gateway.Default.BeginTrans())
{
try
{
trans.Save<AddressSort>(current);
trans.Save<AddressSort>(down);
trans.Commit();
}
catch
{
trans.Rollback();
throw;
}
finally
{
trans.Close();
}
}
return true;
}
#endregion
}
}