mh_jy_safe/APT.MicroApi/APT.FM.WebApi/Controllers/FMUserController.cs

1640 lines
77 KiB
C#
Raw Normal View History

using APT.BaseData.Domain.ApiModel;
using APT.BaseData.Domain.ApiModel.PF;
2025-08-25 09:56:57 +08:00
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Entities.OP;
2025-08-25 09:56:57 +08:00
using APT.BaseData.Domain.Enums;
using APT.BaseData.Domain.Enums.OP;
2025-08-25 09:56:57 +08:00
using APT.BaseData.Domain.IServices;
using APT.BaseData.Domain.IServices.FM;
using APT.Infrastructure.Api;
2025-08-25 09:56:57 +08:00
using APT.Infrastructure.Core;
using APT.Migrations;
2025-08-25 09:56:57 +08:00
using APT.MS.Domain.Entities.BS;
using APT.MS.Domain.Entities.HM;
using APT.MS.Domain.Entities.PF;
2025-08-25 09:56:57 +08:00
using APT.MS.Domain.Enums;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
2025-08-25 09:56:57 +08:00
using System.Linq;
using System.Linq.Expressions;
using System.Security.Cryptography;
2025-08-25 09:56:57 +08:00
namespace APT.BS.WebApi.Controllers.Api
{
/// <summary>
///
/// </summary>
[Route("api/FM/FMUser")]
public partial class FMUserController : AuthorizeApiController<T_FM_USER>
{
IFMUserService UserService { get; set; }
public FMUserController(IFMUserService userService)
{
UserService = userService;
}
/// <summary>
/// 正常使用的用户
/// 重写 api/FM/User/OrderPaged
/// 目前最多只支持4个生产单元有重叠的
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("OrderPagedUseful")]
public PagedActionResult<T_FM_USER> OrderPagedUseful([FromBody] KeywordPageFilter pageFilter)
{
if (string.IsNullOrEmpty(pageFilter.Parameter1))
{
List<int> listMineType = new List<int>();
Guid DEPARTMENT_ID_WORKSHOP = Guid.Empty;
Guid DEPARTMENT_ID = Guid.Empty;
bool isMintype = false;//是否 区分生产单元
string MineType = string.Empty;
if (pageFilter.FilterGroup.Rules.Count == 2)
{
foreach (var item in pageFilter.FilterGroup.Rules)
{
if (item.Field == "DEPARTMENT_ID_WORKSHOP")
{
DEPARTMENT_ID_WORKSHOP = new Guid(item.Value.ToString());
}
else if (item.Field == "DEPARTMENT_ID")
{
DEPARTMENT_ID = new Guid(item.Value.ToString());
}
}
}
else if (pageFilter.FilterGroup.Rules.Count == 1)
{
foreach (var item in pageFilter.FilterGroup.Rules)
{
if (item.Field == "MineType")
{
isMintype = true;
MineType = item.Value.ToString();
pageFilter.FilterGroup.Rules.Clear();
break;
}
}
if (!string.IsNullOrEmpty(MineType))
{
listMineType = UserService.GetMineType(MineType);
}
}
if (pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Any())
{
var groups = pageFilter.FilterGroup.Groups.ToList();
if (groups[0].Rules != null && groups[0].Rules.Any())
{
FilterRule ruleType = null;
foreach (var rule in groups[0].Rules)
{
if (rule.Field == "MineType")
{
ruleType = rule;
MineType = rule.Value.ToString();
isMintype = true;
break;
}
}
if (!string.IsNullOrEmpty(MineType))
{
listMineType = UserService.GetMineType(MineType);
if (ruleType != null)
{
groups[0].Rules.Remove(ruleType);
pageFilter.FilterGroup.Groups = groups;
}
}
}
}
var LoginDepID = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID;
T_FM_DEPARTMENT dep = null;
if (LoginDepID.HasValue)
{
dep = GetEntity<T_FM_DEPARTMENT>(LoginDepID.Value);
}
if (DataHelper.GetRequestType(HttpContext.Request.Headers) == 2 && LoginDepID.HasValue && dep != null && (dep.DEPARTMENT_TYPE == 1 || dep.DEPARTMENT_TYPE == 2))
{
//班组或者车间 向下取值 否则取全部
//FMDepartmentType 部门=0, 车间=1, 班组=2, 公司=3
if (dep.DEPARTMENT_TYPE == 2)
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == LoginDepID.Value && e.CODE != "admin", pageFilter);
}
else
{
var listDepID = GetEntities<T_FM_DEPARTMENT>(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == LoginDepID.Value, null).Select(e => e.ID);
if (listDepID != null && listDepID.Any())
{
var ListDepID = listDepID.ToList();
ListDepID.Add(LoginDepID.Value);
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && e.DEPARTMENT_ID.HasValue && ListDepID.Contains(e.DEPARTMENT_ID.Value) && e.CODE != "admin", pageFilter);
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == LoginDepID.Value && e.CODE != "admin", pageFilter);
}
}
}
else if (isMintype)
{
return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
{
Expression<Func<T_FM_USER, bool>> expression = e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && !e.CODE.StartsWith("admin");// && e.CODE != "admin";
//linq 运行不通过 修改为查找后内存中过滤
//expression = expression.And(e => e.Nav_ProdutionUnit == null || (e.Nav_ProdutionUnit.Any() && e.Nav_ProdutionUnit.Where(x => listMineType.Contains(x.Nav_Enums.VALUE)) != null));
//PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(expression, pageFilter, "Nav_ProdutionUnit.Nav_Enums");
//result.Data = orderPageEntities.Data;
//result.TotalCount = orderPageEntities.TotalCount;
//var resultListUser = GetEntities<T_FM_USER>(expression, pageFilter, "Nav_ProdutionUnit.Nav_Enums");//这样不行
pageFilter.SelectField.Add("Nav_ProdutionUnit.Nav_Enums");
if (pageFilter.SelectField.Count() == 1)
{
pageFilter.SelectField.Add("ID");
pageFilter.SelectField.Add("NAME");
pageFilter.SelectField.Add("CODE");
}
var resultListUser = GetEntities<T_FM_USER>(expression, pageFilter);
if (resultListUser != null && resultListUser.Any())
{
IEnumerable<T_FM_USER> resultListUserFilter = null;
if (listMineType.Count > 0)
{
//if (listMineType.Count == 1)
//{
// resultListUserFilter = resultListUser.Where(e => e.Nav_ProdutionUnit == null || (e.Nav_ProdutionUnit.Any() && e.Nav_ProdutionUnit.Where(x => x.Nav_Enums != null && listMineType[0] == x.Nav_Enums.VALUE).Any()));// != null
//}
//else
//{
resultListUserFilter = resultListUser.Where(e => e.Nav_ProdutionUnit == null || (e.Nav_ProdutionUnit.Any() && e.Nav_ProdutionUnit.Where(x => x.Nav_Enums != null && listMineType.Contains(x.Nav_Enums.VALUE)) != null));
//}
}
if (resultListUserFilter != null && resultListUserFilter.Any())
{
result.Data = resultListUserFilter.Skip((pageFilter.PageIndex - 1) * pageFilter.Limit).Take(pageFilter.Limit);
result.TotalCount = resultListUserFilter.Count();
}
}
if (result.Data == null || !result.Data.Any())
{
result.Data = new List<T_FM_USER>();
result.TotalCount = 0;
}
});
}
else if (DEPARTMENT_ID_WORKSHOP != Guid.Empty && DEPARTMENT_ID != Guid.Empty)
{
pageFilter.FilterGroup.Rules.Clear();
return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
{
PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && e.CODE != "admin" && e.DEPARTMENT_ID == DEPARTMENT_ID_WORKSHOP || (e.Nav_Department.PARENT_ID.HasValue && e.Nav_Department.PARENT_ID == DEPARTMENT_ID_WORKSHOP), pageFilter, new string[] { "Nav_Department" });
result.Data = orderPageEntities.Data;
result.TotalCount = orderPageEntities.TotalCount;
});
}
else
{
if (DataHelper.GetRequestType(HttpContext.Request.Headers) == 2 && LoginDepID.HasValue)
{
//班组或者车间 向下取值 否则取全部
dep = GetEntity<T_FM_DEPARTMENT>(LoginDepID.Value);
if (dep != null && (dep.DEPARTMENT_TYPE == 1 || dep.DEPARTMENT_TYPE == 2))
{
//FMDepartmentType 部门=0, 车间=1, 班组=2, 公司=3
if (dep.DEPARTMENT_TYPE == 2)
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == LoginDepID.Value && e.CODE != "admin", pageFilter);
}
else
{
var listDepID = GetEntities<T_FM_DEPARTMENT>(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == LoginDepID.Value, null).Select(e => e.ID);
if (listDepID != null && listDepID.Any())
{
var ListDepID = listDepID.ToList();
ListDepID.Add(LoginDepID.Value);
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && e.DEPARTMENT_ID.HasValue && ListDepID.Contains(e.DEPARTMENT_ID.Value) && e.CODE != "admin", pageFilter);
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == LoginDepID.Value && e.CODE != "admin", pageFilter);
}
}
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && e.CODE != "admin", pageFilter);
}
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && e.CODE != "admin", pageFilter);
}
}
#region
//List<string> listMineType = new List<string>();
//List<string> listMineTypeTemp = new List<string>();
//Guid DEPARTMENT_ID_WORKSHOP = Guid.Empty;
//Guid DEPARTMENT_ID = Guid.Empty;
//if (pageFilter.FilterGroup.Rules.Count == 2)
//{
// foreach (var item in pageFilter.FilterGroup.Rules)
// {
// if (item.Field == "DEPARTMENT_ID_WORKSHOP")
// {
// DEPARTMENT_ID_WORKSHOP = new Guid(item.Value.ToString());
// }
// else if (item.Field == "DEPARTMENT_ID")
// {
// DEPARTMENT_ID = new Guid(item.Value.ToString());
// }
// }
//}
//if (pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Any())
//{
// var groups = pageFilter.FilterGroup.Groups.ToList();
// string MineType = string.Empty;
// if (groups[0].Rules != null && groups[0].Rules.Any())
// {
// FilterRule ruleType = null;
// foreach (var rule in groups[0].Rules)
// {
// if (rule.Field == "MineType")
// {
// ruleType = rule;
// MineType = rule.Value.ToString();
// break;
// }
// }
// if (!string.IsNullOrEmpty(MineType))
// {
// if (ruleType != null)
// {
// groups[0].Rules.Remove(ruleType);
// pageFilter.FilterGroup.Groups = groups;
// }
// if (MineType.IndexOf(",") > -1)
// {
// listMineTypeTemp = MineType.Split(',', StringSplitOptions.RemoveEmptyEntries).Distinct().ToList();
// listMineType.AddRange(listMineTypeTemp);
// }
// string strTemp = string.Empty;
// if (!listMineType.Contains(MineType))
// {
// listMineType.Add(MineType);
// if (listMineTypeTemp.Count > 2)//多个生产单元
// {
// for (int i = 0; i < listMineTypeTemp.Count; i++)
// {
// for (int j = 0; j < listMineTypeTemp.Count; j++)
// {
// strTemp = listMineTypeTemp[i] + "," + listMineTypeTemp[j];
// if (!listMineType.Contains(strTemp))
// {
// listMineType.Add(strTemp);
// }
// }
// }
// }
// if (listMineTypeTemp.Count > 3)
// {
// for (int i = 0; i < listMineTypeTemp.Count; i++)
// {
// for (int j = 0; j < listMineTypeTemp.Count; j++)
// {
// for (int k = 0; k < listMineTypeTemp.Count; k++)
// {
// strTemp = listMineTypeTemp[i] + "," + listMineTypeTemp[j] + "," + listMineTypeTemp[k];
// if (!listMineType.Contains(strTemp))
// {
// listMineType.Add(strTemp);
// }
// }
// }
// }
// }
// }
// }
// }
//}
//if (listMineType.Count > 0)
//{
// return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
// {
// Expression<Func<T_FM_USER, bool>> expression = e => e.ENABLE_STATUS == 0 && e.CODE != "admin";
// if (listMineType.Count == 1)
// {
// if (!string.IsNullOrEmpty(listMineType[0]))
// {
// expression = expression.And(e => e.MineType != null && e.MineType.Contains(listMineType[0]));
// }
// }
// else
// {
// expression = expression.And(e => e.MineType != null && listMineType.Contains(e.MineType));
// }
// PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(expression, pageFilter, null);
// result.Data = orderPageEntities.Data;
// result.TotalCount = orderPageEntities.TotalCount;
// });
//}
//else if (DEPARTMENT_ID_WORKSHOP != Guid.Empty && DEPARTMENT_ID != Guid.Empty)
//{
// pageFilter.FilterGroup.Rules.Clear();
// return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
// {
// PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(e => e.ENABLE_STATUS == 0 && e.CODE != "admin" && e.DEPARTMENT_ID == DEPARTMENT_ID_WORKSHOP || (e.Nav_Department.PARENT_ID.HasValue && e.Nav_Department.PARENT_ID == DEPARTMENT_ID_WORKSHOP), pageFilter, new string[] { "Nav_Department" });
// result.Data = orderPageEntities.Data;
// result.TotalCount = orderPageEntities.TotalCount;
// });
//}
//else
//{
// return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.CODE != "admin", pageFilter);
//}
#endregion
}
else
{
return WitOrderPaged(t => !t.PROJECT_ID.HasValue && t.Nav_BelongRoles.Any(i => i.Nav_BelongRole.NAME.Contains(pageFilter.Parameter1)), pageFilter);
}
}
/// <summary>
/// 正常使用的用户 包含外包
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("OrderPagedUsefulAll")]
public PagedActionResult<T_FM_USER> OrderPagedUsefulAll([FromBody] KeywordPageFilter pageFilter)
{
if (string.IsNullOrEmpty(pageFilter.Parameter1))
{
List<int> listMineType = new List<int>();
Guid DEPARTMENT_ID_WORKSHOP = Guid.Empty;
Guid DEPARTMENT_ID = Guid.Empty;
bool isMintype = false;//是否 区分生产单元
string MineType = string.Empty;
if (pageFilter.FilterGroup.Rules.Count == 2)
{
foreach (var item in pageFilter.FilterGroup.Rules)
{
if (item.Field == "DEPARTMENT_ID_WORKSHOP")
{
DEPARTMENT_ID_WORKSHOP = new Guid(item.Value.ToString());
}
else if (item.Field == "DEPARTMENT_ID")
{
DEPARTMENT_ID = new Guid(item.Value.ToString());
}
}
}
else if (pageFilter.FilterGroup.Rules.Count == 1)
{
foreach (var item in pageFilter.FilterGroup.Rules)
{
if (item.Field == "MineType")
{
isMintype = true;
MineType = item.Value.ToString();
pageFilter.FilterGroup.Rules.Clear();
break;
}
}
if (!string.IsNullOrEmpty(MineType))
{
listMineType = UserService.GetMineType(MineType);
}
}
if (pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Any())
{
var groups = pageFilter.FilterGroup.Groups.ToList();
if (groups[0].Rules != null && groups[0].Rules.Any())
{
FilterRule ruleType = null;
foreach (var rule in groups[0].Rules)
{
if (rule.Field == "MineType")
{
ruleType = rule;
MineType = rule.Value.ToString();
isMintype = true;
break;
}
}
if (!string.IsNullOrEmpty(MineType))
{
listMineType = UserService.GetMineType(MineType);
if (ruleType != null)
{
groups[0].Rules.Remove(ruleType);
pageFilter.FilterGroup.Groups = groups;
}
}
}
}
var LoginDepID = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID;
T_FM_DEPARTMENT dep = null;
if (LoginDepID.HasValue)
{
dep = GetEntity<T_FM_DEPARTMENT>(LoginDepID.Value);
}
if (DataHelper.GetRequestType(HttpContext.Request.Headers) == 2 && LoginDepID.HasValue && dep != null && (dep.DEPARTMENT_TYPE == 1 || dep.DEPARTMENT_TYPE == 2))
{
//班组或者车间 向下取值 否则取全部
//FMDepartmentType 部门=0, 车间=1, 班组=2, 公司=3
if (dep.DEPARTMENT_TYPE == 2)
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == LoginDepID.Value && e.CODE != "admin", pageFilter);
}
else
{
var listDepID = GetEntities<T_FM_DEPARTMENT>(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == LoginDepID.Value, null).Select(e => e.ID);
if (listDepID != null && listDepID.Any())
{
var ListDepID = listDepID.ToList();
ListDepID.Add(LoginDepID.Value);
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && ListDepID.Contains(e.DEPARTMENT_ID.Value) && e.CODE != "admin", pageFilter);
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == LoginDepID.Value && e.CODE != "admin", pageFilter);
}
}
}
else if (isMintype)
{
return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
{
Expression<Func<T_FM_USER, bool>> expression = e => e.ENABLE_STATUS == 0 && !e.CODE.StartsWith("admin");// && e.CODE != "admin";
//linq 运行不通过 修改为查找后内存中过滤
//expression = expression.And(e => e.Nav_ProdutionUnit == null || (e.Nav_ProdutionUnit.Any() && e.Nav_ProdutionUnit.Where(x => listMineType.Contains(x.Nav_Enums.VALUE)) != null));
//PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(expression, pageFilter, "Nav_ProdutionUnit.Nav_Enums");
//result.Data = orderPageEntities.Data;
//result.TotalCount = orderPageEntities.TotalCount;
//var resultListUser = GetEntities<T_FM_USER>(expression, pageFilter, "Nav_ProdutionUnit.Nav_Enums");//这样不行
pageFilter.SelectField.Add("Nav_ProdutionUnit.Nav_Enums");
if (pageFilter.SelectField.Count() == 1)
{
pageFilter.SelectField.Add("ID");
pageFilter.SelectField.Add("NAME");
pageFilter.SelectField.Add("CODE");
}
var resultListUser = GetEntities<T_FM_USER>(expression, pageFilter);
if (resultListUser != null && resultListUser.Any())
{
IEnumerable<T_FM_USER> resultListUserFilter = null;
if (listMineType.Count > 0)
{
//if (listMineType.Count == 1)
//{
// resultListUserFilter = resultListUser.Where(e => e.Nav_ProdutionUnit == null || (e.Nav_ProdutionUnit.Any() && e.Nav_ProdutionUnit.Where(x => x.Nav_Enums != null && listMineType[0] == x.Nav_Enums.VALUE).Any()));// != null
//}
//else
//{
resultListUserFilter = resultListUser.Where(e => e.Nav_ProdutionUnit == null || (e.Nav_ProdutionUnit.Any() && e.Nav_ProdutionUnit.Where(x => x.Nav_Enums != null && listMineType.Contains(x.Nav_Enums.VALUE)) != null));
//}
}
if (resultListUserFilter != null && resultListUserFilter.Any())
{
result.Data = resultListUserFilter.Skip((pageFilter.PageIndex - 1) * pageFilter.Limit).Take(pageFilter.Limit);
result.TotalCount = resultListUserFilter.Count();
}
}
if (result.Data == null || !result.Data.Any())
{
result.Data = new List<T_FM_USER>();
result.TotalCount = 0;
}
});
}
else if (DEPARTMENT_ID_WORKSHOP != Guid.Empty && DEPARTMENT_ID != Guid.Empty)
{
pageFilter.FilterGroup.Rules.Clear();
return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
{
PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(e => e.ENABLE_STATUS == 0 && e.CODE != "admin" && e.DEPARTMENT_ID == DEPARTMENT_ID_WORKSHOP || (e.Nav_Department.PARENT_ID.HasValue && e.Nav_Department.PARENT_ID == DEPARTMENT_ID_WORKSHOP), pageFilter, new string[] { "Nav_Department" });
result.Data = orderPageEntities.Data;
result.TotalCount = orderPageEntities.TotalCount;
});
}
else
{
if (DataHelper.GetRequestType(HttpContext.Request.Headers) == 2 && LoginDepID.HasValue)
{
//班组或者车间 向下取值 否则取全部
dep = GetEntity<T_FM_DEPARTMENT>(LoginDepID.Value);
if (dep != null && (dep.DEPARTMENT_TYPE == 1 || dep.DEPARTMENT_TYPE == 2))
{
//FMDepartmentType 部门=0, 车间=1, 班组=2, 公司=3
if (dep.DEPARTMENT_TYPE == 2)
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == LoginDepID.Value && e.CODE != "admin", pageFilter);
}
else
{
var listDepID = GetEntities<T_FM_DEPARTMENT>(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == LoginDepID.Value, null).Select(e => e.ID);
if (listDepID != null && listDepID.Any())
{
var ListDepID = listDepID.ToList();
ListDepID.Add(LoginDepID.Value);
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && ListDepID.Contains(e.DEPARTMENT_ID.Value) && e.CODE != "admin", pageFilter);
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == LoginDepID.Value && e.CODE != "admin", pageFilter);
}
}
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.CODE != "admin", pageFilter);
}
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.CODE != "admin", pageFilter);
}
}
}
else
{
return WitOrderPaged(t => t.Nav_BelongRoles.Any(i => i.Nav_BelongRole.NAME.Contains(pageFilter.Parameter1)), pageFilter);
}
}
/// <summary>
/// 正常使用的用户
/// 重写 api/FM/User/OrderPaged
/// 目前最多只支持4个生产单元有重叠的
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("OrderPagedUsefulWB")]
public PagedActionResult<T_FM_USER> OrderPagedUsefulWB([FromBody] KeywordPageFilter pageFilter)
{
return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
{
Expression<Func<T_FM_USER, bool>> expression = e => e.ENABLE_STATUS == 0;
if (pageFilter.Parameter1 == "1")
{
expression = expression.And(e => e.PROJECT_ID.HasValue);
}
else if (pageFilter.Parameter1 == "2")
{
if (APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue)
{
var login = GetEntity<T_FM_USER>(APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value);
if (login.PRINTER_ID.HasValue)
{
expression = expression.And(e => e.PROJECT_ID.HasValue && e.PROJECT_ID.Value == login.PROJECT_ID);
}
}
}
PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(expression, pageFilter, null);
result.Data = orderPageEntities.Data;
result.TotalCount = orderPageEntities.TotalCount;
});
}
/// <summary>
/// 人员选择 外包人员 选择只有本外包单位人员信息 否则可以选到所有人信息
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("OrderPagedUsefulProject")]
public PagedActionResult<T_FM_USER> OrderPagedUsefulProject([FromBody] KeywordPageFilter pageFilter)
{
return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
{
Expression<Func<T_FM_USER, bool>> expression = e => e.ENABLE_STATUS == 0;
var login = GetEntity<T_FM_USER>(APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value);
if (login.PROJECT_ID.HasValue)
{
expression = expression.And(e => e.PROJECT_ID.HasValue && e.PROJECT_ID.Value == login.PROJECT_ID);
}
PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(expression, pageFilter, null);
result.Data = orderPageEntities.Data;
result.TotalCount = orderPageEntities.TotalCount;
});
}
/// <summary>
/// 递归获取部门以及子部门的所有用户
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost, Route("GetDepUsersRecursion")]
public JsonActionResult<IEnumerable<T_FM_USER>> GetDepUsersRecursion([FromBody] KeywordFilter filter)
{
return SafeExecute<IEnumerable<T_FM_USER>>(() =>
{
var baseFilter = new BaseFilter(filter.GetOrgId());
baseFilter.SelectField = new string[] { "ID", "PARENT_ID" };
var departments = this.GetEntities<T_FM_DEPARTMENT>(i => i.ENABLE_STATUS == (int)FMEnableStatusEnum., baseFilter);
var selectDepatmentIds = new List<Guid>();
if (!string.IsNullOrEmpty(filter.Keyword))
{
var parentid = Guid.Parse(filter.Keyword);
GetRecursionDepIds(departments, selectDepatmentIds, parentid);
return this.GetEntities<T_FM_USER>(i => selectDepatmentIds.Contains(i.DEPARTMENT_ID.Value), filter);
}
else
{
return this.GetEntities<T_FM_USER>(null, filter);
}
});
}
private static void GetRecursionDepIds(IEnumerable<T_FM_DEPARTMENT> departments, List<Guid> selectDepatmentIds, Guid parentid)
{
selectDepatmentIds.Add(parentid);
if (departments.Any(i => i.PARENT_ID == parentid))
{
var childIds = departments.Where(i => i.PARENT_ID == parentid).Select(i => i.ID);
foreach (var childId in childIds)
{
GetRecursionDepIds(departments, selectDepatmentIds, childId);
}
}
}
#region
/// <summary>
/// 获取导入数据
/// 参考 [Route("api/PF/Import")]
/// </summary>
/// <returns></returns>
[HttpPost, Route("DataImport")]
public JsonActionResult<ImportDataModel> DataImport()
{
return SafeExecute<ImportDataModel>(() =>
{
string telnetCode = Request.Headers["Tenant"];
var httpRequest = this.HttpContext.Request;
string orgIdStr = httpRequest.Form["OrgId"];// 获取 组织
Guid? orgId = null;
if (!string.IsNullOrEmpty(orgIdStr))
orgId = new Guid(orgIdStr);
else
return null;
ImportDataModel result = new ImportDataModel();
var dic = Path.Combine(System.AppContext.BaseDirectory, "tempImportFiles");
if (!Directory.Exists(dic))
Directory.CreateDirectory(dic);
foreach (var key in httpRequest.Form.Files) // 文件键
{
var postedFile = key; // 获取文件键对应的文件对象
string filePath = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName);
Byte[] fileData = new Byte[postedFile.Length];
Stream sr = postedFile.OpenReadStream();//创建数据流对象
sr.Read(fileData, 0, (int)postedFile.Length);
using (FileStream fs = new FileStream(filePath, FileMode.CreateNew))
{
fs.Write(fileData, 0, fileData.Length);
fs.Flush();
fs.Close();
}
//获取数据
Dictionary<int, int> startRowIndexs = new Dictionary<int, int>();
startRowIndexs.Add(0, 0);//根据Excel格式数据赋值
DataSet dataTables = FileUtils.ReadExcelByOledb(filePath, startRowIndexs);
string Msg = string.Empty;
bool isOK = InsertModel(dataTables.Tables[0], orgId.Value, telnetCode, ref Msg);
try
{
System.IO.File.Delete(filePath);
}
catch { }
result.Data = Msg;
result.MessageList = new List<string> { Msg };
}
return result;
});
}
/// <summary>
/// 数据插入
/// </summary>
/// <param name="dtSource"></param>
/// <param name="OrgID"></param>
/// <param name="telnetCode"></param>
/// <param name="Msg"></param>
/// <param name="rowIndex"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public bool InsertModel(DataTable dtSource, Guid OrgID, string telnetCode, ref string Msg, int rowIndex = 3)
{
//0:公司名称* 1:部门名称 2:部门编号 3:车间名称 4:车间编号 5:班组名称 6:班组编号
//7:姓名* 8:工号 * 9:手机号码 * 10:身份证号 11:岗位 12:性别* 13:入职日期 14:工龄 15:审批角色 16:操作角色 *
//注意事项:
//1、公司名称必填每次导入有且仅有一个公司名称
//2、人员所在组织公司、部门、车间、班组必须确切例如公司领导只填【公司名称】班组员工必须填完整【公司名称、部门名称、车间名称、班组名称】
//3、姓名、工号、手机号码、岗位、性别、操作角色必填
//4、字段说明各组织名称不能重复【组织编号】如果为空系统会自动生成【工号】系统登录唯一标识符不能重复初始密码规则姓名首字母大写 + 工号数字例句的初始密码为Wjl00088【手机号码】11位数字【身份证号码】18位数字【性别】男 / 女;【入职日期】必须是yyyy - MM - dd格式(例如2025 - 01 - 01);【工龄】为正数;【操作角色】必须是系统已配置信息,如有多个用英文分号【;】分割
//5、此表单导入会自动添加组织、人员、岗位、审批角色信息
//6、如果是总部人员需要自动添加到各子公司公司名称以{【总部】}结尾,人员只能添加到子公司的公司级,并且组织、角色、岗位等不自动处理
//7、首行为例句不能删除直接从序号【5】开始填写
if (dtSource == null || dtSource.Rows.Count < 0 || dtSource.Rows.Count < rowIndex)
{
Msg = "未获取到导入数据";
throw new Exception(Msg);
}
List<int> listNotEmpty = new List<int>() { 0, 7, 8, 9, 12, 16 };
//使用组织 T_FM_DEPARTMENT
//物料类型 T_TI_SAFE_PDT_COST_RECORD_TYPE T_TI_COST_TYPE
//记录人 T_FM_USER
#region
bool isHead = false;//是否总部 新增 是 得全子公司添加登录信息
bool isAddUser = false;//是否新增人员 是角色信息得新增 否 查询后处理
bool isAdddep5 = false;//是否新增 公司
DateTime dtNow = DateTime.Now;
Dictionary<int, List<int>> dicIndexEmpty = new Dictionary<int, List<int>>();
List<T_FM_DEPARTMENT> listDepAll = GetEntities<T_FM_DEPARTMENT>(e => e.ENABLE_STATUS == 0, null).ToList();
List<T_FM_USER> listUSER = GetEntities<T_FM_USER>(e => e.ENABLE_STATUS == 0, null).ToList();
List<T_FM_PERSON> listPerson = GetEntities<T_FM_PERSON>(null, null).ToList();
List<T_FM_USER_POST> listUserPost = GetEntities<T_FM_USER_POST>(e => e.STATUS == ((int)FMPostStatusType.), null).ToList();
List<T_PF_APPROVAL_ROLE> listApproveRole = GetEntities<T_PF_APPROVAL_ROLE>(null, null).ToList();//导入自动添加
List<T_FM_USER_BELONG_ROLE> listUserRole = GetEntities<T_FM_USER_BELONG_ROLE>(null, null).ToList();
List<T_FM_ROLE> listRole = GetEntities<T_FM_ROLE>(null, null).ToList();//不做添加 平台类型前端不好改
List<T_FM_DEPARTMENT> listDepAdd = new List<T_FM_DEPARTMENT>();//需要新增的组织
List<T_FM_USER> listUserAdd = new List<T_FM_USER>();//新增用户
List<T_FM_PERSON> listPersonAdd = new List<T_FM_PERSON>();//新增人员
List<T_FM_USER_POST> listUserPostAdd = new List<T_FM_USER_POST>();//新增岗位
List<T_PF_APPROVAL_ROLE> listApproveRoleAdd = new List<T_PF_APPROVAL_ROLE>();//新增审批角色
List<T_FM_USER_BELONG_ROLE> listUserRoleAdd = new List<T_FM_USER_BELONG_ROLE>();//添加人员角色绑定
//公司名称 0
T_FM_DEPARTMENT dep5 = null;
string strDep5 = string.Empty;
//List<string> listStrDepartmentName5 = new List<string>();
//T_FM_DEPARTMENT modelDep5 = new T_FM_DEPARTMENT();
//List<string> listDepName5 = new List<string>();
//List<int> listDepartment5Index = new List<int>();
//部门名称 1
List<T_FM_DEPARTMENT> listDep10 = listDepAll.FindAll(e => e.DEPARTMENT_TYPE == 10).ToList();
string strDep10 = string.Empty;
List<string> listStrDepartmentName10 = new List<string>();
T_FM_DEPARTMENT modelDep10 = new T_FM_DEPARTMENT();
List<string> listDepName10 = new List<string>();
List<int> listDepartment10Index = new List<int>();
//车间名称 3
List<T_FM_DEPARTMENT> listDep15 = listDepAll.FindAll(e => e.DEPARTMENT_TYPE == 15).ToList();
string strDep15 = string.Empty;
List<string> listStrDepartmentName15 = new List<string>();
T_FM_DEPARTMENT modelDep15 = new T_FM_DEPARTMENT();
List<string> listDepName15 = new List<string>();
List<int> listDepartment15Index = new List<int>();
//班组名称 5
List<T_FM_DEPARTMENT> listDep20 = listDepAll.FindAll(e => e.DEPARTMENT_TYPE == 10).ToList();
string strDep20 = string.Empty;
List<string> listStrDepartmentName20 = new List<string>();
T_FM_DEPARTMENT modelDep20 = new T_FM_DEPARTMENT();
List<string> listDepName20 = new List<string>();
List<int> listDepartment20Index = new List<int>();
//姓名 7
List<int> listNAMEIndex = new List<int>();
List<string> listStrNAME = new List<string>();
string strNAME = string.Empty;
T_FM_USER modelUser = new T_FM_USER();
T_FM_PERSON modelPerson = new T_FM_PERSON();
//工号 8
List<int> listCODEIndex = new List<int>();
List<string> listStrCODE = new List<string>();
string strCODE = string.Empty;
//手机号码 9
List<int> listPHONEIndex = new List<int>();
List<string> listStrPHONE = new List<string>();
string strPHONE = string.Empty;
//身份证号 10
string strID_CARD = string.Empty;
List<int> listID_CARDIndex = new List<int>();
List<string> listStrID_CARD = new List<string>();
//岗位 11
List<int> listPostIndex = new List<int>();
List<string> listStrPost = new List<string>();
string strPost = string.Empty;
List<string> listPostName = new List<string>();
T_FM_USER_POST modelPost = null;
//性别 12
string strSEX = string.Empty;
List<int> listSEXIndex = new List<int>();
List<string> listStrSEX = new List<string>();
//入职日期 13
string strENTRYTIME = string.Empty;
DateTime? dtENTRYTIME = null;
List<int> listENTRYTIMEIndex = new List<int>();
List<string> listStrENTRYTIME = new List<string>();
//工龄 14
string strWORKINGYEAR = string.Empty;
int? WORKINGYEAR = null;
List<int> listWORKINGYEARIndex = new List<int>();
List<string> listStrWORKINGYEAR = new List<string>();
//审批角色 15
string strApproveRole = string.Empty;
List<string> listStrApproveRole = new List<string>();
T_PF_APPROVAL_ROLE modelApproveRole = new T_PF_APPROVAL_ROLE();
List<string> listApproveRoleName = new List<string>();
List<int> listApproveRoleIndex = new List<int>();
//操作角色 16
string strRole = string.Empty;
char[] charSplit = new char[] { ';', '' };
List<string> listStrRole = new List<string>();
List<T_FM_ROLE> listRoleItem = new List<T_FM_ROLE>();
List<string> listRoleName = new List<string>();
List<int> listRoleIndex = new List<int>();
T_FM_USER_BELONG_ROLE modelUserRole = null;
//0:公司名称* 1:部门名称 2:部门编号 3:车间名称 4:车间编号 5:班组名称 6:班组编号
//7:姓名* 8:工号 * 9:手机号码 * 10:身份证号 11:岗位 12:性别* 13:入职日期 14:工龄 15:审批角色 16:操作角色 *
List<int> listDepartment13Index = new List<int>();//部门为空 车间不为空
List<int> listDepartment35Index = new List<int>();//车间为空 班组不为空
#endregion
#region
//第一行是标题 跳过
int rowAll = dtSource.Rows.Count;
strDep5 = dtSource.Rows[rowIndex][0].ToString().Trim();
if (!string.IsNullOrEmpty(strDep5))
{
#region dep5
if (strDep5.EndsWith("【总部】"))
{
isHead = true;
strDep5 = strDep5.Replace("【总部】", "");
}
dep5 = listDepAll.FirstOrDefault(e => e.NAME == strDep5 && e.DEPARTMENT_TYPE == 5);
if (dep5 == null)
{
isAdddep5 = true;
//没有找到初始化信息
dep5 = new T_FM_DEPARTMENT();
try
{
string strOrgID = OrgID.ToString();
var listIDs = strOrgID.Split('-');
string strID = string.Empty;
for (int i = 0; i < listIDs.Length; i++)
{
if (i == 1)
{
listIDs[i] = "4" + listIDs[i].Substring(1, listIDs[i].Length - 1);
}
strID += listIDs[i];
}
dep5.ID = new Guid(strID);
dep5.CREATE_TIME = dtNow;
}
catch
{
dep5.ID = Guid.NewGuid();
dep5.CREATE_TIME = dtNow;
}
dep5.ORG_ID = OrgID;
dep5.NAME = strDep5;
dep5.DEPARTMENT_TYPE = 5;
dep5.CODE = DataHelper.MkPinyinString(dep5.NAME) + "00";
listDepAdd.Add(dep5);
listDepAll.Add(dep5);
}
#endregion
}
MD5 md5 = MD5.Create();
string nameHead = string.Empty;
string code = string.Empty;
string NewPwd = string.Empty;
for (int i = rowIndex; i < rowAll; i++)
{
#region
List<int> listi = null;
for (int j = 0; j < 17; j++)
{
if (!listNotEmpty.Contains(j))
continue;
if (string.IsNullOrEmpty(dtSource.Rows[i][j].ToString().Trim()))
{
if (listi == null)
{
listi = new List<int>();
}
listi.Add(j);
}
}
if (listi != null)
dicIndexEmpty.Add(i + rowIndex, listi);//有空的 直接添加
#endregion
#region 1 2
strDep10 = dtSource.Rows[i][1].ToString().Trim();
if (!string.IsNullOrEmpty(strDep10))
{
modelDep10 = listDepAll.FirstOrDefault(e => e.NAME == strDep10);
if (modelDep10 != null && modelDep10.DEPARTMENT_TYPE != 10)
{
if (!listDepName10.Contains(strDep10))
{
listDepName10.Add(strDep10);
}
listDepartment10Index.Add(i + rowIndex);
}
if ((modelDep10 == null || modelDep10.ID == Guid.Empty) && !listDepartment10Index.Contains(i + rowIndex))
{
modelDep10 = new T_FM_DEPARTMENT();
modelDep10.ID = Guid.NewGuid();
modelDep10.NAME = strDep10;
modelDep10.ORG_ID = OrgID;
modelDep10.CODE = dtSource.Rows[i][2].ToString().Trim();
modelDep10.PARENT_ID = dep5.ID;
modelDep10.DEPARTMENT_TYPE = 10;
modelDep10.ENABLE_STATUS = 0;
modelDep10.CREATE_TIME = dtNow;
if (string.IsNullOrEmpty(modelDep10.CODE))
{
modelDep10.CODE = dep5.CODE + (listDepAll.FindAll(e => e.DEPARTMENT_TYPE == 10).Count() + 1).ToString().PadLeft(2, '0');
}
listDepAdd.Add(modelDep10);
listDepAll.Add(modelDep10);
}
}
else
{
modelDep10 = null; //数据为空 model 置为 null
}
#endregion
#region 3 4
strDep15 = dtSource.Rows[i][3].ToString().Trim();
if (!string.IsNullOrEmpty(strDep15))
{
if (modelDep10 == null)
{
listDepartment13Index.Add(i + rowIndex);
}
else
{
modelDep15 = listDepAll.FirstOrDefault(e => e.NAME == strDep15);
if (modelDep15 != null && modelDep15.DEPARTMENT_TYPE != 15)
{
if (!listDepName15.Contains(strDep15))
{
listDepName15.Add(strDep15);
}
listDepartment15Index.Add(i + rowIndex);
}
if ((modelDep15 == null || modelDep15.ID == Guid.Empty) && !listDepartment15Index.Contains(i + rowIndex))
{
modelDep15 = new T_FM_DEPARTMENT();
modelDep15.ID = Guid.NewGuid();
modelDep15.NAME = strDep15;
modelDep15.ORG_ID = OrgID;
modelDep15.CODE = dtSource.Rows[i][4].ToString().Trim();
modelDep15.PARENT_ID = modelDep10.ID;
modelDep15.ENABLE_STATUS = 0;
modelDep15.DEPARTMENT_TYPE = 15;
modelDep15.CREATE_TIME = dtNow;
if (string.IsNullOrEmpty(modelDep15.CODE))
{
modelDep15.CODE = modelDep10.CODE + (listDepAll.FindAll(e => e.DEPARTMENT_TYPE == 15).Count() + 1).ToString().PadLeft(2, '0');
}
listDepAdd.Add(modelDep15);
listDepAll.Add(modelDep15);
}
}
}
else
{
modelDep15 = null; //数据为空 model 置为 null
}
#endregion
#region 5 6
strDep20 = dtSource.Rows[i][5].ToString().Trim();
if (!string.IsNullOrEmpty(strDep20))
{
if (modelDep10 == null)
{
listDepartment35Index.Add(i + rowIndex);
}
else
{
modelDep20 = listDepAll.FirstOrDefault(e => e.NAME == strDep20);
if (modelDep20 != null && modelDep20.DEPARTMENT_TYPE != 20)
{
if (!listDepName20.Contains(strDep20))
{
listDepName20.Add(strDep20);
}
listDepartment20Index.Add(i + rowIndex);
}
if ((modelDep20 == null || modelDep20.ID == Guid.Empty) && !listDepartment20Index.Contains(i + rowIndex))
{
modelDep20 = new T_FM_DEPARTMENT();
modelDep20.ID = Guid.NewGuid();
modelDep20.NAME = strDep20;
modelDep20.ORG_ID = OrgID;
modelDep20.CODE = dtSource.Rows[i][6].ToString().Trim();
modelDep20.PARENT_ID = modelDep15.ID;
modelDep20.ENABLE_STATUS = 0;
modelDep20.DEPARTMENT_TYPE = 20;
modelDep20.CREATE_TIME = dtNow;
if (string.IsNullOrEmpty(modelDep20.CODE))
{
modelDep20.CODE = modelDep15.CODE + (listDepAll.FindAll(e => e.DEPARTMENT_TYPE == 20).Count() + 1).ToString().PadLeft(2, '0');
}
listDepAdd.Add(modelDep20);
listDepAll.Add(modelDep20);
}
}
}
else
{
modelDep20 = null; //数据为空 model 置为 null
}
#endregion
#region 7 8
isAddUser = false;
if (!listDepartment13Index.Contains(i + rowIndex) && !listDepartment35Index.Contains(i + rowIndex))
{
//组织信息 对 才进来判断
strNAME = dtSource.Rows[i][7].ToString().Trim();
strCODE = dtSource.Rows[i][8].ToString().Trim();
#region 9 strPHONE
strPHONE = dtSource.Rows[i][9].ToString().Trim();
if (!string.IsNullOrEmpty(strPHONE) && strPHONE.Length != 11)
{
if (!listStrPHONE.Contains(strPHONE))
{
listStrPHONE.Add(strPHONE);
}
listPHONEIndex.Add(i + rowIndex);
}
#endregion
#region strID_CARD 10
strID_CARD = dtSource.Rows[i][10].ToString().Trim();
if (!string.IsNullOrEmpty(strID_CARD) && strID_CARD.Length != 18)
{
if (listStrID_CARD.Contains(strID_CARD))
{
listStrID_CARD.Add(strID_CARD);
}
listID_CARDIndex.Add(i + rowIndex);
}
#endregion
#region 12 strSEX
strSEX = dtSource.Rows[i][12].ToString().Trim();
if (!string.IsNullOrEmpty(strSEX) && strSEX != "男" && strSEX != "女")
{
if (!listStrSEX.Contains(strSEX))
{
listStrSEX.Add(strSEX);
}
listSEXIndex.Add(i + rowIndex);
}
#endregion
#region modelPost 11
strPost = dtSource.Rows[i][11].ToString().Trim();
if (!string.IsNullOrEmpty(strPost))
{
modelPost = listUserPost.FirstOrDefault(e => e.NAME == strPost);
if (modelPost == null)
{
modelPost = new T_FM_USER_POST();
modelPost.ID = Guid.NewGuid();
modelPost.ORG_ID = OrgID;
modelPost.NAME = strPost;
modelPost.CODE = "POST" + (listUserPost.Count() + 1).ToString().PadLeft(3, '0');
modelPost.CREATE_TIME = dtNow;
modelPost.STATUS = (int)FMPostStatusType.;
listUserPostAdd.Add(modelPost);
listUserPost.Add(modelPost);
}
}
else
{
modelPost = null;
}
#endregion
#region dtENTRYTIME 13
strENTRYTIME = dtSource.Rows[i][13].ToString().Trim();
if (!string.IsNullOrEmpty(strENTRYTIME))
{
try
{
dtENTRYTIME = Convert.ToDateTime(strENTRYTIME);
}
catch
{
if (!listStrENTRYTIME.Contains(strENTRYTIME))
{
listStrENTRYTIME.Add(strENTRYTIME);
}
listENTRYTIMEIndex.Add(i + rowIndex);
}
}
else
{
dtENTRYTIME = null;
}
#endregion
#region WORKINGYEAR 14
strWORKINGYEAR = dtSource.Rows[i][14].ToString().Trim();
if (!string.IsNullOrEmpty(strWORKINGYEAR))
{
try
{
WORKINGYEAR = int.Parse(strWORKINGYEAR);
}
catch
{
if (!listStrWORKINGYEAR.Contains(strWORKINGYEAR))
{
listStrWORKINGYEAR.Add(strWORKINGYEAR);
}
listWORKINGYEARIndex.Add(i + rowIndex);
}
}
else
{
WORKINGYEAR = null;
}
#endregion
#region 15
strApproveRole = dtSource.Rows[i][15].ToString().Trim();
if (!string.IsNullOrEmpty(strApproveRole))
{
modelApproveRole = listApproveRole.FirstOrDefault(e => e.NAME == strApproveRole);
if (modelApproveRole == null)
{
modelApproveRole = new T_PF_APPROVAL_ROLE();
modelApproveRole.ID = Guid.NewGuid();
modelApproveRole.ORG_ID = OrgID;
modelApproveRole.NAME = strPost;
modelApproveRole.CODE = DataHelper.MkPinyinString(modelApproveRole.NAME) + (listApproveRoleAdd.Count() + 1).ToString().PadLeft(2, '0');
modelApproveRole.CREATE_TIME = dtNow;
listApproveRoleAdd.Add(modelApproveRole);
listApproveRole.Add(modelApproveRole);
}
}
else
{
modelApproveRole = null;
}
#endregion
#region 16
strRole = dtSource.Rows[i][16].ToString().Trim();
if (!string.IsNullOrEmpty(strRole))
{
listStrRole = strRole.Split(charSplit, StringSplitOptions.RemoveEmptyEntries).ToList();
listRoleItem = listRole.FindAll(e => listStrRole.Contains(e.NAME)).ToList();
}
else
{
listRoleItem = null;
}
#endregion
#region
if (!string.IsNullOrEmpty(strNAME) && !string.IsNullOrEmpty(strCODE) && dicIndexEmpty.Count < 1 && listDepartment10Index.Count < 1 && listDepartment15Index.Count < 1 && listDepartment13Index.Count < 1 && listDepartment35Index.Count < 1 && listPHONEIndex.Count < 1 && listID_CARDIndex.Count < 1 && listSEXIndex.Count < 1 && listENTRYTIMEIndex.Count < 1 && listWORKINGYEARIndex.Count < 1)
{
modelUser = listUSER.FirstOrDefault(e => e.NAME == strNAME && e.CODE == strCODE);
modelPerson = listPerson.FirstOrDefault(e => e.NAME == strNAME && e.CODE == strCODE);
if (modelUser == null)
{
isAddUser = true;
modelUser = new T_FM_USER();
modelUser.ID = Guid.NewGuid();
modelUser.CREATE_TIME = dtNow;
}
//if (modelUser == null)
//{
// isAddUser = true;
// modelUser = new T_FM_USER();
// modelUser.ID = Guid.NewGuid();
modelUser.ORG_ID = OrgID;
modelUser.NAME = strNAME;
modelUser.CODE = strCODE;
modelUser.PHONE = strPHONE;
modelUser.SEX = (strSEX == "男" ? FMSexEnum..GetInt() : FMSexEnum..GetInt());
nameHead = DataHelper.MkPinyinString(modelUser.NAME);
code = DataHelper.GetCodeNO(modelUser.CODE);
NewPwd = DataHelper.MD5Encrypt32(md5, nameHead + code);
modelUser.PASSWORD = NewPwd;
//班组 车间 部门 公司 顺序去找部门
modelUser.DEPARTMENT_ID = (modelDep20 != null ? modelDep20.ID : (modelDep15 != null ? modelDep15.ID : (modelDep10 != null ? modelDep10.ID : dep5.ID)));
modelUser.ID_CARD = strID_CARD;
if (dtENTRYTIME.HasValue)
{
modelUser.ENTRYTIME = dtENTRYTIME.Value;
}
modelUser.WORKINGYEAR = (WORKINGYEAR.HasValue ? WORKINGYEAR.Value : 0);
if (modelApproveRole != null)
modelUser.APPROVE_ROLE_ID = modelApproveRole.ID;
if (isAddUser == true)
{
modelUser.PERSON_ID = Guid.NewGuid();//先生成T_FM_PERSON的ID
modelPerson = new T_FM_PERSON();
modelPerson.ID = modelUser.PERSON_ID.Value;
modelPerson.CREATE_TIME = dtNow;
}
modelPerson.ORG_ID = OrgID;
modelPerson.CREATE_TIME = dtNow;
modelPerson.NAME = modelUser.NAME;
modelPerson.CODE = modelUser.CODE;
modelPerson.SEX = modelUser.SEX;
modelPerson.DEPARTMENT_ID = modelUser.DEPARTMENT_ID;
if (modelPost != null)
{
modelPerson.POST_ID = modelPost.ID;
}
listUSER.Add(modelUser);
listPerson.Add(modelPerson);
//}
if (listRoleItem != null && listRoleItem.Count > 0)
{
foreach (var item in listRoleItem)
{
if (!isAddUser)
{
modelUserRole = listUserRole.FirstOrDefault(e => e.USER_ID == modelUser.ID && e.BELONG_ROLE_ID == item.ID);
}
if (modelUserRole == null)
modelUserRole = new T_FM_USER_BELONG_ROLE();
modelUserRole.ID = Guid.NewGuid();
modelUserRole.ORG_ID = OrgID;
modelUserRole.USER_ID = modelUser.ID;
modelUserRole.BELONG_ROLE_ID = item.ID;
modelUserRole.CREATE_TIME = dtNow;
listUserRoleAdd.Add(modelUserRole);
listUserRole.Add(modelUserRole);
}
modelUserRole = null;
}
//姓名 工号不能变 都添加
listUserAdd.Add(modelUser);
listPersonAdd.Add(modelPerson);
}
#endregion
}
#endregion
}
#endregion
#region 123421
string strEmptyError = string.Empty;
if (dicIndexEmpty.Count > 0)
{
int colIndex = 0;
foreach (var item in dicIndexEmpty)
{
strEmptyError += "行:" + item.Key + ",列:";
colIndex = 0;
foreach (var itemVal in item.Value)
{
strEmptyError += (colIndex > 0 ? "、" : "") + itemVal;
colIndex++;
}
strEmptyError += "";
}
strEmptyError = strEmptyError.Substring(0, strEmptyError.Length - 1) + "不能为空!";
}
string strDepartment10Error = string.Empty;
if (listDepartment10Index != null && listDepartment10Index.Count > 0)
{
strDepartment10Error = "部门名称层级异常:" + string.Join(",", listDepName10) + ",行:" + string.Join(',', listDepartment10Index);
}
string strDepartment15Error = string.Empty;
if (listDepartment15Index != null && listDepartment15Index.Count > 0)
{
strDepartment15Error = "车间名称层级异常:" + string.Join(",", listDepName15) + ",行:" + string.Join(',', listDepartment15Index);
}
string strDepartment13Error = string.Empty;
if (listDepartment13Index != null && listDepartment13Index.Count > 0)
{
strDepartment13Error = "组织数据异常:有车间名称没有部门名称,行:" + string.Join(',', listDepartment13Index);
}
string strDepartment35Error = string.Empty;
if (listDepartment35Index != null && listDepartment35Index.Count > 0)
{
strDepartment35Error = "组织数据异常:有班组名称没有车间名称,行:" + string.Join(',', listDepartment35Index);
}
string strPHONEError = string.Empty;
if (listPHONEIndex != null && listPHONEIndex.Count > 0)
{
strPHONEError = "手机号码格式错误:" + string.Join(",", listStrPHONE) + ",行:" + string.Join(',', listPHONEIndex);
}
string strID_CARDError = string.Empty;
if (listID_CARDIndex != null && listID_CARDIndex.Count > 0)
{
strPHONEError = "身份证号格式错误:" + string.Join(",", strID_CARDError) + ",行:" + string.Join(',', listID_CARDIndex);
}
string strSEXError = string.Empty;
if (listSEXIndex != null && listSEXIndex.Count > 0)
{
strSEXError = "性别错误,只能【男/女】:" + string.Join(",", listStrSEX) + ",行:" + string.Join(',', listSEXIndex);
}
string strENTRYTIMEError = string.Empty;
if (listENTRYTIMEIndex != null && listENTRYTIMEIndex.Count > 0)
{
strENTRYTIMEError = "入职日期:" + string.Join(",", listStrENTRYTIME) + ",行:" + string.Join(',', listENTRYTIMEIndex);
}
string strWORKINGYEARError = string.Empty;
if (listWORKINGYEARIndex != null && listWORKINGYEARIndex.Count > 0)
{
strWORKINGYEARError = "工龄:" + string.Join(",", listStrENTRYTIME) + ",行:" + string.Join(',', listWORKINGYEARIndex);
}
if (!string.IsNullOrEmpty(strEmptyError))
{
Msg += strEmptyError;
}
if (!string.IsNullOrEmpty(strDepartment10Error))
{
Msg += (Msg.Length > 0 ? "\r\n" : "") + strDepartment10Error;
}
if (!string.IsNullOrEmpty(strDepartment15Error))
{
Msg += (Msg.Length > 0 ? "\r\n" : "") + strDepartment15Error;
}
if (!string.IsNullOrEmpty(strDepartment13Error))
{
Msg += (Msg.Length > 0 ? "\r\n" : "") + strDepartment13Error;
}
if (!string.IsNullOrEmpty(strDepartment35Error))
{
Msg += (Msg.Length > 0 ? "\r\n" : "") + strDepartment35Error;
}
if (!string.IsNullOrEmpty(strPHONEError))
{
Msg += (Msg.Length > 0 ? "\r\n" : "") + strPHONEError;
}
if (!string.IsNullOrEmpty(strID_CARDError))
{
Msg += (Msg.Length > 0 ? "\r\n" : "") + strID_CARDError;
}
if (!string.IsNullOrEmpty(strSEXError))
{
Msg += (Msg.Length > 0 ? "\r\n" : "") + strSEXError;
}
if (!string.IsNullOrEmpty(strENTRYTIMEError))
{
Msg += (Msg.Length > 0 ? "\r\n" : "") + strENTRYTIMEError;
}
if (!string.IsNullOrEmpty(strWORKINGYEARError))
{
Msg += (Msg.Length > 0 ? "\r\n" : "") + strWORKINGYEARError;
}
if (!string.IsNullOrEmpty(Msg))
{
throw new Exception(Msg);
}
#endregion
this.UnifiedCommit(() =>
{
if (listDepAdd != null && listDepAdd.Any())
BantchSaveEntityNoCommit(listDepAdd);
if (listPersonAdd != null && listPersonAdd.Any())
BantchSaveEntityNoCommit(listPersonAdd);
if (listUserAdd != null && listUserAdd.Any())
BantchSaveEntityNoCommit(listUserAdd);
if (listUserPostAdd != null && listUserPostAdd.Any())
BantchSaveEntityNoCommit(listUserPostAdd);
if (listApproveRoleAdd != null && listApproveRoleAdd.Any())
BantchSaveEntityNoCommit(listApproveRoleAdd);
if (listUserRoleAdd != null && listUserRoleAdd.Any())
BantchSaveEntityNoCommit(listUserRoleAdd);
});
#region
if (isHead)
{
//除了总部 每个子公司都添加 人员信息
//depID 变成公司的
//人员的岗位ID变成null
string conn = string.Empty;
List<string> listConn = new List<string>();
using (var context = new MigrationContext(ConfigurationManager.ConnectionStrings["default"]))
{
List<Guid> listConnID = context.GetEntities<T_OP_TENANT>(e => e.DB_CONN_ID.HasValue && e.CODE != telnetCode, null, null).Select(e => e.DB_CONN_ID.Value).ToList();
var listDbConn = context.GetEntities<T_OP_TENANT_DB_CONN>(e => listConnID.Contains(e.ID), null, null);
foreach (var item in listDbConn)
{
conn = item.DB_CONN;
if (ConfigurationManager.AppSettings["Env"] == ((int)EnvType.).ToString())
{
conn = item.DB_CONN_WAN;
}
if (!string.IsNullOrEmpty(conn) && !listConn.Contains(conn))
{
listConn.Add(conn);
}
}
}
foreach (var itemConn in listConn)
{
using (var context = new MigrationContext(itemConn))
{
var depCompay = context.GetEntity<T_FM_DEPARTMENT>(e => e.DEPARTMENT_TYPE == (int)FMDepartmentType.Company && e.ENABLE_STATUS == 0 && !e.IS_DELETED, new string[] { "ID", "ORG_ID", "CREATER_ID" }, null);
if (depCompay.ID != Guid.Empty)
{
foreach (var item in listPersonAdd)
{
item.POST_ID = null;
item.DEPARTMENT_ID = depCompay.ID;
item.CREATER_ID = depCompay.CREATER_ID;
item.ORG_ID = depCompay.ORG_ID;
item.POST_ID = null;
}
foreach (var item in listUserAdd)
{
item.DEPARTMENT_ID = depCompay.ID;
item.CREATER_ID = depCompay.CREATER_ID;
item.ORG_ID = depCompay.ORG_ID;
item.APPROVE_ROLE_ID = null;
}
try
{
context.AddEntities(listPersonAdd);
context.AddEntities(listUserAdd);
context.SaveChanges();
}
catch (Exception ex)
{
}
}
}
}
}
#endregion
Msg = "导入成功!\r\n用户信息" + listUserAdd.Count + "条" + (listDepAdd.Count > 0 ? ("、组织信息:" + listDepAdd.Count + "条") : "") + (listUserPostAdd.Count > 0 ? ("、岗位信息:" + listUserPostAdd.Count + "条") : "") + (listApproveRoleAdd.Count > 0 ? ("、审批角色信息:" + listApproveRoleAdd.Count + "条") : "") + "";
return true;
}
#endregion
2025-08-25 09:56:57 +08:00
}
}