294 lines
9.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Learun.Util;
using Learun.Util.SqlSugar;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using DbType = System.Data.DbType;
namespace Learun.Application.Organization
{
/// <summary>
/// 版 本 PIT-ADMS V7.0.3 敏捷开发框架
/// Copyright (c) 2013-2018 Hexagon PPM
/// 创建人:研发部
/// 日 期2017.03.04
/// 描 述:岗位管理
/// </summary>
public class PostService
{
#region
Repository<PostEntity> _postRepository => new Repository<PostEntity>();
#endregion
#region
private string fieldSql;
public PostService()
{
fieldSql = @"
t.F_PostId,
t.F_ParentId,
t.F_Name,
t.F_EnCode,
t.F_CompanyId,
t.F_DepartmentId,
t.F_DeleteMark,
t.F_Description,
t.F_CreateDate,
t.F_CreateUserId,
t.F_CreateUserName,
t.F_ModifyDate,
t.F_ModifyUserId,
t.F_ModifyUserName
";
}
#endregion
#region
/// <summary>
/// 获取岗位数据列表(根据公司列表)
/// </summary>
/// <param name="companyId">公司主键</param>
/// <returns></returns>
public List<PostEntity> GetList(string companyId)
{
try
{
return _postRepository.GetList().Where(t => t.F_DeleteMark == 0 && t.F_CompanyId == companyId).
OrderBy(t => t.F_DepartmentId).OrderBy(t => t.F_ParentId).OrderBy(t => t.F_EnCode).ToList();
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
/// <summary>
/// 获取岗位数据列表
/// </summary>
/// <param name="companyId">公司主键</param>
/// <returns></returns>
public List<PostEntity> GetPostList(Pagination paginationobj, string queryJson)
{
try
{
var queryParam = queryJson.ToJObject();
//var dp = new DynamicParameters(new { });
var list = _postRepository.GetList().Where(t => t.F_DeleteMark == 0);
var dp = new List<SugarParameter>();
if (!queryParam["keyword"].IsEmpty())
{
list = list.Where(x => x.F_Name.Contains(queryParam["keyword"].ToString()));
}
if (!queryParam["ProjectId"].IsEmpty())
{
list = list.Where(x => x.ProjectId == queryParam["ProjectId"].ToString());
}
//return this.BaseRepository().FindList<PostEntity>(strSql.ToString(), dp);
return list.OrderBy(x => x.F_EnCode).ToList();
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
} /// <summary>
/// 获取所有岗位数据
/// </summary>
/// <param name="companyId">公司主键</param>
/// <returns></returns>
public List<PostEntity> GetPostListByProjectId(string ProjectId)
{
try
{
var strSql = new StringBuilder();
strSql.Append("SELECT ");
strSql.Append("t.* , (SELECT COUNT(1) FROM LR_Base_UserRelation t1 WHERE 1=1 AND IFNULL(t1.ProjectId,'') = @ProjectId AND t1.F_ObjectId = t.F_PostId) AS UserCount");
strSql.Append(" FROM LR_Base_Post t WHERE t.F_DeleteMark = 0 AND IFNULL(t.ProjectId,'') = @ProjectId ");
//return this.BaseRepository().FindList<PostEntity>(strSql.ToString(), new { ProjectId = ProjectId });
return SqlSugarHelper.Db.SqlQueryable<PostEntity>(strSql.ToString()).AddParameters(new { ProjectId = ProjectId }).ToList();
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
/// <summary>
/// 获取岗位数据列表(根据主键串)
/// </summary>
/// <param name="postIds">根据主键串</param>
/// <returns></returns>
public IEnumerable<PostEntity> GetListByPostIds(string postIds)
{
try
{
return _postRepository.GetList(t => postIds.Contains(t.F_PostId));
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
/// <summary>
/// 获取岗位的实体数据
/// </summary>
/// <param name="keyValue">主键</param>
/// <returns></returns>
public PostEntity GetEntity(string keyValue)
{
try
{
return _postRepository.GetById(keyValue);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
//查找具体项目下公司人员对应的岗位
public DataTable GetPostByProjectId(string ProjectId)
{
string sqlstr = @"SELECT u.F_UserId,p.F_Name FROM lr_base_post p
JOIN lr_base_userrelation u
ON u.F_Category = 1 AND u.ProjectId = '" + ProjectId + "' AND u.F_ObjectId = p.F_PostId";
var data = SqlSugarHelper.Db.Ado.GetDataTable(sqlstr);
return data;
}
/// <summary>
/// 获取下级岗位id集合
/// </summary>
/// <param name="parentIds">父级Id集合</param>
/// <returns></returns>
public List<string> GetIdList(List<string> parentIds)
{
try
{
List<string> res = new List<string>();
var list = _postRepository.GetList(t => parentIds.Contains(t.F_ParentId));
foreach (var item in list)
{
res.Add(item.F_PostId);
}
return res;
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
#endregion
#region
/// <summary>
/// 虚拟删除
/// </summary>
/// <param name="keyValue">主键</param>
public void VirtualDelete(string keyValue)
{
SqlSugarHelper.Db.BeginTran();
try
{
PostEntity entity = new PostEntity()
{
F_PostId = keyValue,
F_DeleteMark = 1
};
_postRepository.Update(entity);
SqlSugarHelper.Db.Ado.ExecuteCommand(" Delete From LR_BASE_USERRELATION where F_OBJECTID = @keyValue ", new { keyValue = keyValue });
//db.Delete<UserRelationEntity>(t=>t.F_ObjectId == keyValue);
SqlSugarHelper.Db.CommitTran();
}
catch (Exception ex)
{
SqlSugarHelper.Db.RollbackTran();
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
/// <summary>
/// 保存岗位(新增、修改)
/// </summary>
/// <param name="keyValue">主键值</param>
/// <param name="postEntity">岗位实体</param>
/// <returns></returns>
public void SaveEntity(string keyValue, PostEntity postEntity)
{
try
{
if (!string.IsNullOrEmpty(keyValue))
{
postEntity.Modify(keyValue);
_postRepository.Update(postEntity);
}
else
{
postEntity.Create();
_postRepository.Insert(postEntity);
}
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
#endregion
}
}