/******************************************************************************* * Copyright © 2020 HT.Cloud.Framework 版权所有 * Author: HT.Cloud * Description: WaterCloud快速开发平台 * Website: *********************************************************************************/ using MiniExcelLibs; using SqlSugar; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using HT.Cloud.Code; using HT.Cloud.DataBase; using HT.Cloud.Domain.SystemOrganize; namespace HT.Cloud.Service.SystemOrganize { public class DutyService : BaseService, IDenpendency { public SystemSetService setApp { get; set; } public DutyService(ISqlSugarClient context) : base(context) { } public async Task> GetList(string keyword = "") { var query = repository.IQueryable(); query = query.Where(a => a.F_Category == 2 && a.F_DeleteMark == false); if (!string.IsNullOrEmpty(keyword)) { query = query.Where(a => a.F_FullName.Contains(keyword) || a.F_EnCode.Contains(keyword)); } return await query.OrderBy(a => a.F_SortCode).ToListAsync(); } public async Task> GetLookList(SoulPage pagination, string keyword = "") { //反格式化显示只能用"等于",其他不支持 Dictionary> dic = new Dictionary>(); Dictionary enabledTemp = new Dictionary(); enabledTemp.Add("1", "有效"); enabledTemp.Add("0", "无效"); dic.Add("F_EnabledMark", enabledTemp); var setList = await setApp.GetList(); Dictionary orgizeTemp = new Dictionary(); foreach (var item in setList) { orgizeTemp.Add(item.F_Id, item.F_CompanyName); } dic.Add("F_CompanyId", orgizeTemp); pagination = ChangeSoulData(dic, pagination); var query = GetQuery(); if (!string.IsNullOrEmpty(keyword)) { query = query.Where(a => a.F_FullName.Contains(keyword) || a.F_EnCode.Contains(keyword)); } query = query.Where(a => a.F_DeleteMark == false && a.F_Category == 2); query = GetDataPrivilege("a", "", query); return await query.ToPageListAsync(pagination); } public async Task GetLookForm(string keyValue) { var data = await repository.FindEntity(keyValue); return GetFieldsFilterData(data); } public async Task GetForm(string keyValue) { var data = await repository.FindEntity(keyValue); return data; } private ISugarQueryable GetQuery() { var query = repository.Db.Queryable((a, b) => new JoinQueryInfos( JoinType.Left, a.F_CompanyId == b.F_Id )).Where(a => a.F_DeleteMark == false && a.F_Category == 2) .Select((a, b) => new RoleExtend { F_Id = a.F_Id.SelectAll(), F_CompanyName = b.F_CompanyName, }).MergeTable(); return query; } public async Task DeleteForm(string keyValue) { if (await repository.Db.Queryable().Where(a => a.F_DutyId == keyValue).AnyAsync()) { throw new Exception("岗位使用中,无法删除"); } await repository.Delete(a => a.F_Id == keyValue); } public async Task SubmitForm(RoleEntity roleEntity, string keyValue) { if (!string.IsNullOrEmpty(keyValue)) { roleEntity.Modify(keyValue); await repository.Update(roleEntity); } else { roleEntity.F_DeleteMark = false; roleEntity.F_AllowEdit = false; roleEntity.F_AllowDelete = false; roleEntity.Create(); roleEntity.F_Category = 2; await repository.Insert(roleEntity); } } public async Task> CheckFile(string fileFullName) { if (!FileHelper.IsExcel(fileFullName)) { throw new Exception("文件不是有效的Excel文件!"); } //文件解析 var list = MiniExcel.Query(fileFullName).ToList(); ; //删除文件 File.Delete(fileFullName); foreach (var item in list) { item.F_Id = Utils.GuId(); item.F_EnabledMark = true; item.F_DeleteMark = false; item.F_CompanyId = currentuser.CompanyId; item.F_SortCode = 1; item.F_Category = 2; item.F_AllowEdit = false; item.F_AllowDelete = false; List str = new List(); if (string.IsNullOrEmpty(item.F_EnCode)) { item.F_EnabledMark = false; item.ErrorMsg = "编号不存在"; continue; } else if (await repository.IQueryable(a => a.F_EnCode == item.F_EnCode).AnyAsync() || list.Where(a => a.F_EnCode == item.F_EnCode).Count() > 1) { str.Add("编号重复"); item.F_EnabledMark = false; } if (string.IsNullOrEmpty(item.F_FullName)) { str.Add("名称不存在"); item.F_EnabledMark = false; } if (item.F_EnabledMark == false) { item.ErrorMsg = string.Join(',', str.ToArray()); } } return list; } public async Task ImportForm(List filterList) { foreach (var item in filterList) { item.Create(); } await repository.Db.Insertable(filterList).ExecuteCommandAsync(); } } }