| | |
| | | cylsg/cylsg.Application/cylsg.Application.xml |
| | | cylsg/cylsg.Web.Entry/application.log |
| | | cylsg/cylsg.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml.user |
| | | cylsg/ECTESTOA/obj/ |
| | | cylsg/ECTESTOA/bin/ |
New file |
| | |
| | | <Project Sdk="Microsoft.NET.Sdk"> |
| | | |
| | | <PropertyGroup> |
| | | <TargetFramework>net8.0</TargetFramework> |
| | | <ImplicitUsings>enable</ImplicitUsings> |
| | | <Nullable>enable</Nullable> |
| | | </PropertyGroup> |
| | | |
| | | <ItemGroup> |
| | | <ProjectReference Include="..\cylsg.Core\cylsg.Core.csproj" /> |
| | | <ProjectReference Include="..\Cylsg.Filter\Cylsg.Filter.csproj" /> |
| | | <ProjectReference Include="..\cylsg.Model\cylsg.Model.csproj" /> |
| | | <ProjectReference Include="..\cylsg.redis\cylsg.redis.csproj" /> |
| | | <ProjectReference Include="..\cylsg.services\cylsg.services.csproj" /> |
| | | <ProjectReference Include="..\cylsg.utility\cylsg.utility.csproj" /> |
| | | </ItemGroup> |
| | | |
| | | <ItemGroup> |
| | | <None Update="ECTestOAconfig.json"> |
| | | <CopyToOutputDirectory>Always</CopyToOutputDirectory> |
| | | </None> |
| | | </ItemGroup> |
| | | |
| | | </Project> |
New file |
| | |
| | | { |
| | | "EcTestOAMenuName": { |
| | | "CaiWu": "报销付款" |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | using cylsg.Model.ECTEModel; |
| | | using cylsg.Model.utilityViewModel; |
| | | using Furion.DependencyInjection; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace ECTESTOA |
| | | { |
| | | /// <summary> |
| | | /// 川印OA数据库服务 |
| | | /// </summary> |
| | | public interface IOAServices |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 获OA取权限配置 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | Task<ECTESTOAPermissions> GetOAPermissions(); |
| | | /// <summary> |
| | | /// 四川印刷集团 租户ID 固定 |
| | | /// </summary> |
| | | Guid firmId { get; } |
| | | |
| | | Task<OaWorkPlan> GetWorkPlans(); |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | using cylsg.Model.ECTEModel; |
| | | using cylsg.Model.UserModel; |
| | | using cylsg.Model.utilityViewModel; |
| | | using cylsg.utility.Extend; |
| | | using EzCoreNet.Redis; |
| | | using Furion; |
| | | using Furion.DependencyInjection; |
| | | using Furion.FriendlyException; |
| | | using Models; |
| | | using SqlSugar; |
| | | using System.Security.Claims; |
| | | |
| | | namespace ECTESTOA |
| | | { |
| | | /// <summary> |
| | | /// 川印相关的OA 服务 |
| | | /// </summary> |
| | | public class OAServices : IOAServices, IScoped |
| | | { |
| | | private static string ECTESTOAPermissionsKey= "ECTESTOAPermissionsKey:"; |
| | | |
| | | |
| | | /// <summary> |
| | | /// redis服务 |
| | | /// </summary> |
| | | private readonly IEzCoreNetRedisService _redisService; |
| | | private ISqlSugarClient _OAsqlSugarClient; |
| | | private ISqlSugarClient _sqlSugarClient; |
| | | |
| | | public Guid firmId => new Guid( "88B49967-D590-452C-93C6-0049A75FA5FF"); |
| | | |
| | | |
| | | public OAServices ( IEzCoreNetRedisService ezCoreNetRedisService,ISqlSugarClient sqlSugarClient) |
| | | { |
| | | _redisService = ezCoreNetRedisService; |
| | | _sqlSugarClient = sqlSugarClient; |
| | | _OAsqlSugarClient = sqlSugarClient .AsTenant().GetConnection("ECTESTOADB"); |
| | | |
| | | } |
| | | |
| | | public async Task< ECTESTOAPermissions> GetOAPermissions() |
| | | { |
| | | |
| | | |
| | | var UserID = App.User?.FindFirstValue("UserID"); |
| | | if(string.IsNullOrEmpty(UserID)) |
| | | { |
| | | throw Oops.Oh("没有登录信息,不可使用"); |
| | | } |
| | | var ret= _redisService.Get<ECTESTOAPermissions>(ECTESTOAPermissionsKey + UserID); |
| | | if(ret != null) |
| | | { |
| | | return ret; |
| | | } |
| | | |
| | | else |
| | | { |
| | | string CaiwuKey = App.Configuration["EcTestOAMenuName:CaiWu"] ?? "没有"; |
| | | |
| | | |
| | | var CaiWUMenuiId= await _OAsqlSugarClient.Queryable<Sys_Permissions_Menu>().Where(x => x.IsUsed == true && x.MenuName == CaiwuKey).Select(x=>x.Keyid).WithCache(600).FirstAsync(); |
| | | int id = UserID?.toInt() ?? 0; |
| | | if (id == 0) |
| | | throw Oops.Oh("登录信息错误"); |
| | | var user = await _sqlSugarClient.Queryable<User>().Where(x => x.Id == id && x.IsEn == true && x.IsDeleted == false).WithCache(180).FirstAsync(); |
| | | if (user==null) |
| | | { |
| | | throw Oops.Oh("登录信息错误,不是有效用户"); |
| | | } |
| | | //重新获取权限 |
| | | ret = await _OAsqlSugarClient.Queryable<OaStaff>().Includes(x => x.Department).Where(x => x.MobieNum == user.ItCode && x.FirmId == firmId).Select(x => new ECTESTOAPermissions |
| | | { |
| | | DepartmentName = x.Department.Name, |
| | | DepartId=x.DepartmentId, |
| | | |
| | | },true |
| | | ).FirstAsync(); |
| | | if (ret == null) |
| | | { |
| | | //不是用户,3分钟后重新查询 |
| | | ret = new ECTESTOAPermissions(); |
| | | |
| | | } |
| | | else |
| | | { |
| | | if (CaiWUMenuiId > 0&&ret.KeyId>0) |
| | | { |
| | | var Caiwu= await _OAsqlSugarClient.Queryable<OA_StaffRoleRel, OA_FirmRole, OA_FirmRolePermissionsRel>((sr,fr,spr)=>new JoinQueryInfos( |
| | | JoinType.Left,sr.RoleId==fr.Keyid&&fr.FirmId== firmId&& sr.FirmId==firmId&&fr.IsUsed==true, |
| | | JoinType.Left,fr.Keyid==spr.RoleId |
| | | |
| | | ) ).Where((sr, fr, spr)=>spr.MenuIdThree== CaiWUMenuiId&&sr.StaffId==ret.KeyId).Select((sr, fr, spr) => spr.MenuIdThree).FirstAsync(); |
| | | if(Caiwu>0) |
| | | { |
| | | ret.BF_IsCaiWu = true; |
| | | } |
| | | } |
| | | } |
| | | |
| | | _redisService.Add(ECTESTOAPermissionsKey + UserID, ret, 180); |
| | | |
| | | |
| | | } |
| | | return ret; |
| | | |
| | | } |
| | | |
| | | public Task<OaWorkPlan> GetWorkPlans() |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | } |
| | | } |
| | |
| | | catch (Exception e) |
| | | { |
| | | |
| | | throw Oops.Oh(e.Message); |
| | | throw Oops.Oh(e.Message+"腾讯云,或者阿里云操作错误"); |
| | | } |
| | | } |
| | | catch (Exception e) |
| | |
| | | |
| | | if (FileData.Length > maxSize) |
| | | { |
| | | throw Oops.Oh(" 上传文件不可超出500K"); |
| | | throw Oops.Oh(" 上传文件不可超出5M"); |
| | | } |
| | | |
| | | |
New file |
| | |
| | | using cylsg.Model.ECTEModel; |
| | | using cylsg.Model.utilityViewModel; |
| | | using ECTESTOA; |
| | | using Furion.LinqBuilder; |
| | | using Models; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using static SKIT.FlurlHttpClient.Wechat.Api.Models.UnionShopTargetAddPlanRequest.Types; |
| | | |
| | | namespace cylsg.Application.CyOS |
| | | { |
| | | /// <summary> |
| | | /// 财务报销控制器 |
| | | /// </summary> |
| | | [Authorize] |
| | | public class CyOSBaoXiaoCaiWuController: IDynamicApiController |
| | | { |
| | | private static readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1); |
| | | private readonly IOAServices _OAServices; |
| | | private readonly ISqlSugarClient _SugarClient; |
| | | private ECTESTOAPermissions Permissions; |
| | | public CyOSBaoXiaoCaiWuController(IOAServices oaservices, ISqlSugarClient sugarClient) |
| | | { |
| | | _OAServices = oaservices; |
| | | _SugarClient = sugarClient.AsTenant().GetConnection("ECTESTOADB"); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 查询 |
| | | /// </summary> |
| | | [HttpPost] |
| | | public async Task<WorekPlandto> getplanelist(SearchOaWorekPlan param) |
| | | { |
| | | if (!await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | |
| | | Expression<Func<OaWorkPlan, bool>> SearchList = (x) => true; |
| | | |
| | | //川印工作单 |
| | | SearchList = SearchList.And(x => x.MemberId == _OAServices.firmId); |
| | | SearchList = SearchList.And(x => x.PlanType == 3); |
| | | SearchList = SearchList.And(x => x.PlanDataType == 17); |
| | | //必须是审批完成后的单 |
| | | SearchList = SearchList.And(x=>x.ApprovalStatus== PlanStatusType.Yes); |
| | | if (!string.IsNullOrEmpty(param.StaffName)) |
| | | { |
| | | SearchList = SearchList.And(x => x.SentStaff.Name.Contains(param.StaffName)); |
| | | } |
| | | if (param.StaffMemberIdId != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.SentStaffId == param.StaffMemberIdId); |
| | | } |
| | | if (param.PlanDataType > 0) |
| | | { |
| | | SearchList = SearchList.And(x => x.PlanDataType == param.PlanDataType); |
| | | } |
| | | if (param.PlanStartTimeStart != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.PlanStartTime > param.PlanStartTimeStart); |
| | | } |
| | | if (param.PlanStartTimeEnd != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.PlanStartTime <= param.PlanStartTimeEnd.Value.AddDays(1)); |
| | | } |
| | | ////审批状态 |
| | | //if (param.ApprovalStatus != null) |
| | | //{ |
| | | |
| | | // SearchList = SearchList.And(x => x.ApprovalStatus == param.ApprovalStatus); |
| | | |
| | | |
| | | //} |
| | | |
| | | //报销状态 |
| | | if (param.EvaluationStatus != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.EvaluationStatus == param.EvaluationStatus); |
| | | } |
| | | //强制增加员工过滤 |
| | | RefAsync<int> totle = 0; |
| | | var data = await _SugarClient.Queryable<OaWorkPlan>().Includes(x => x.OaWorkPlanShenpis).Includes(x=>x.SentStaff) |
| | | .Where(SearchList).OrderByDescending(x => x.MemberId).ToPageListAsync(param.page.PageIndex, param.page.PageSize, totle); |
| | | |
| | | param.page.TotalCount = totle; |
| | | var sum = await _SugarClient.Queryable<OaWorkPlan>() |
| | | .Where(SearchList).SumAsync(x => x.PlanMoney); |
| | | return new WorekPlandto |
| | | |
| | | { |
| | | list = data, |
| | | page = param.page, |
| | | TotalMoney = sum ?? 0 |
| | | }; |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取报销单详情 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public async Task<OaWorkPlan> GetPlanInfo(int id) |
| | | { |
| | | if (!await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | return await _SugarClient.Queryable<OaWorkPlan>().Includes(x => x.OaWorkPlanShenpis,y=>y.ApprovalStaff).Includes(x => x.SentStaff).Includes(x => x.Depart).Includes(x=>x.WorkPlanAttachments).Where(x => x.Keyid == id).FirstAsync(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 报销 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | public async Task<bool> ApprovalPlan(OaWorkPlan plan) |
| | | { |
| | | |
| | | |
| | | // 等待信号量 |
| | | await _semaphore.WaitAsync(); |
| | | try |
| | | { |
| | | if (plan.Keyid == 0) |
| | | throw Oops.Oh("ID错误"); |
| | | if (plan.FirmAccountId == null) |
| | | throw Oops.Oh("必须选择银行账号"); |
| | | |
| | | if (!await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | var FirmAccount = await _SugarClient.Queryable<OA_FirmAccount>().Where(x => x.FirmId == _OAServices.firmId && x.Keyid == plan.FirmAccountId && x.Status == true).FirstAsync(); |
| | | if (FirmAccount == null) |
| | | throw Oops.Oh("账号错误"); |
| | | var data = await _SugarClient.Queryable<OaWorkPlan>().Includes(x => x.SentStaff).Where(x => x.Keyid == plan.Keyid).FirstAsync(); |
| | | if (data == null) |
| | | throw Oops.Oh("没有找到报销单"); |
| | | |
| | | if (data.ApprovalStatus != PlanStatusType.Yes) |
| | | throw Oops.Oh("未审批完成,不可报销"); |
| | | |
| | | |
| | | |
| | | |
| | | if (data.EvaluationStatus != BaoxiaoStausType.Reimbursed) |
| | | { |
| | | await _SugarClient.AsTenant().BeginTranAsync(); |
| | | try |
| | | { |
| | | data.EvaluationStatus = BaoxiaoStausType.Reimbursed; |
| | | data.PlanContent = plan.PlanContent; |
| | | data.LastUpdateTime = DateTime.Now; |
| | | await _SugarClient.Updateable(data).ExecuteCommandAsync(); |
| | | |
| | | FirmAccount.LastUpdateTime = DateTime.Now; |
| | | FirmAccount.Balance -= (Math.Round(data.PlanMoney ?? 0, 2)); |
| | | FirmAccount.AllExpenses += (Math.Round(data.PlanMoney ?? 0, 2)); |
| | | |
| | | await _SugarClient.Updateable(FirmAccount).ExecuteCommandAsync(); |
| | | OA_FirmAccountRecord rec = new OA_FirmAccountRecord |
| | | { |
| | | AccountId = FirmAccount.Keyid, |
| | | Money = data.PlanMoney ?? 0, |
| | | LastUpdateTime = DateTime.Now, |
| | | Department = data.PlanContent, |
| | | RecordTypeId = 2, |
| | | SubjectId = 3,//报销必须为3 |
| | | Operator = Permissions.Name, |
| | | PaymentUnit = data.SentStaff.Name, |
| | | ResidualAmount = FirmAccount.Balance, |
| | | OperationalMatters = data.PlanContent, |
| | | |
| | | |
| | | }; |
| | | await _SugarClient.Insertable(rec).ExecuteCommandAsync(); |
| | | await _SugarClient.Updateable(data).ExecuteCommandAsync(); |
| | | await _SugarClient.AsTenant().CommitTranAsync(); |
| | | return true; |
| | | } |
| | | catch (Exception) |
| | | { |
| | | await _SugarClient.AsTenant().RollbackTranAsync(); |
| | | throw; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | return true; |
| | | } |
| | | catch(Exception e) |
| | | { |
| | | throw; |
| | | } |
| | | finally |
| | | { |
| | | // 释放信号量 |
| | | _semaphore.Release(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 获取账户列表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public async Task<List<OA_FirmAccount>> GetFirmAccountList() |
| | | { |
| | | return await _SugarClient.Queryable<OA_FirmAccount>().Where(x => x.Status == true && x.FirmId == _OAServices.firmId).Select(x => new OA_FirmAccount |
| | | { |
| | | AccountName = x.AccountName, |
| | | AccountType = x.AccountType, |
| | | UserName = x.UserName, |
| | | Keyid=x.Keyid, |
| | | |
| | | |
| | | }).WithCache(3600).ToListAsync(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 判断是否具有权限 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private async Task<bool> CheckRols() |
| | | { |
| | | var pr = await _OAServices.GetOAPermissions(); |
| | | Permissions = pr; |
| | | if (pr != null && pr.MemberId != null) |
| | | { |
| | | |
| | | if (pr.BF_IsCaiWu) |
| | | return true; |
| | | else return false; |
| | | |
| | | } |
| | | else |
| | | return false; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | using cylsg.Model.ECTEModel; |
| | | using cylsg.Model.utilityViewModel; |
| | | using ECTESTOA; |
| | | using Furion.LinqBuilder; |
| | | using Models; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Application.CyOS |
| | | { |
| | | /// <summary> |
| | | /// 川印报销经理API |
| | | /// </summary> |
| | | [Authorize] |
| | | public class CyOSBaoXiaoJingLiController: IDynamicApiController |
| | | { |
| | | private readonly IOAServices _OAServices; |
| | | private readonly ISqlSugarClient _SugarClient; |
| | | private ECTESTOAPermissions Permissions; |
| | | public CyOSBaoXiaoJingLiController(IOAServices oaservices, ISqlSugarClient sugarClient) |
| | | { |
| | | _OAServices = oaservices; |
| | | _SugarClient = sugarClient.AsTenant().GetConnection("ECTESTOADB"); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 查询 |
| | | /// </summary> |
| | | [HttpPost] |
| | | public async Task<WorekPlandto> getplanelist(SearchOaWorekPlan param) |
| | | { |
| | | if (!await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | |
| | | Expression<Func<OaWorkPlan, bool>> SearchList = (x) => true; |
| | | |
| | | //川印工作单 |
| | | SearchList = SearchList.And(x => x.MemberId == _OAServices.firmId); |
| | | SearchList = SearchList.And(x => x.PlanType == 3); |
| | | SearchList = SearchList.And(x => x.PlanDataType == 17); |
| | | //必须有两个人审批过了 |
| | | SearchList = SearchList.And(x => x.OaWorkPlanShenpis.Count(y=>y.Buzhou==1)>1||(x.ApprovalStatus!= PlanStatusType.unApproval)); |
| | | if (!string.IsNullOrEmpty(param.StaffName)) |
| | | { |
| | | SearchList = SearchList.And(x => x.SentStaff.Name.Contains(param.StaffName)); |
| | | } |
| | | if (param.StaffMemberIdId != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.MemberId == param.StaffMemberIdId); |
| | | } |
| | | if (param.PlanDataType > 0) |
| | | { |
| | | SearchList = SearchList.And(x => x.PlanDataType == param.PlanDataType); |
| | | } |
| | | if (param.PlanStartTimeStart != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.PlanStartTime >param.PlanStartTimeStart); |
| | | } |
| | | if (param.PlanStartTimeEnd != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.PlanStartTime <= param.PlanStartTimeEnd.Value.AddDays(1)); |
| | | } |
| | | //审批状态 |
| | | if (param.ApprovalStatus != null) |
| | | { |
| | | |
| | | SearchList = SearchList.And(x => x.ApprovalStatus == param.ApprovalStatus); |
| | | |
| | | |
| | | } |
| | | |
| | | //报销状态 |
| | | if (param.EvaluationStatus != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.EvaluationStatus == param.EvaluationStatus); |
| | | } |
| | | //强制增加员工过滤 |
| | | RefAsync<int> totle = 0; |
| | | var data = await _SugarClient.Queryable<OaWorkPlan>().Includes(x => x.OaWorkPlanShenpis.Where(y=>y.Buzhou==1).ToList()).Includes(x => x.Depart) |
| | | .Where(SearchList).OrderByDescending(x => x.PlanStartTime).ToPageListAsync(param.page.PageIndex, param.page.PageSize, totle); |
| | | |
| | | |
| | | var sum = await _SugarClient.Queryable<OaWorkPlan>() |
| | | .Where(SearchList).SumAsync(x=>x.PlanMoney); |
| | | param.page.TotalCount = totle; |
| | | return new WorekPlandto |
| | | |
| | | { |
| | | list = data, |
| | | page = param.page, |
| | | TotalMoney = sum ?? 0 |
| | | }; |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取报销单详情 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public async Task<OaWorkPlan> GetPlanInfo(int id) |
| | | { |
| | | if (!await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | return await _SugarClient.Queryable<OaWorkPlan>().Includes(x=>x.OaWorkPlanShenpis,y=>y.ApprovalStaff).Includes(x=>x.SentStaff).Includes(x=>x.Depart).Includes(x=>x.WorkPlanAttachments).Where(x => x.Keyid == id).FirstAsync(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 审批权限 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | public async Task<bool> BaoxiaoPlan(OaWorkPlanShenpi param) |
| | | { |
| | | if (param.ApprovalStatus == PlanStatusType.unApproval) |
| | | throw Oops.Oh("不可设置为未审批状态"); |
| | | |
| | | if (!await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | var data = await _SugarClient.Queryable<OaWorkPlan>().Includes(x => x.OaWorkPlanShenpis).Where(x => x.Keyid == param.OA_WorkPlanId).FirstAsync(); |
| | | if (data == null) |
| | | throw Oops.Oh("没有找到报销单"); |
| | | if ( data.ApprovalStatus != PlanStatusType.unApproval) |
| | | throw Oops.Oh("报销单已经批复完毕"); |
| | | OaWorkPlanShenpi shenpi = data.OaWorkPlanShenpis.Where(x => x.ApprovalStaffId == Permissions.MemberId&&x.Buzhou==2).FirstOrDefault(); |
| | | await _SugarClient.AsTenant().BeginTranAsync(); |
| | | try |
| | | { |
| | | if (shenpi != null) |
| | | { |
| | | //已经批复 |
| | | throw Oops.Oh("报销单已经批复完毕 不可更改"); |
| | | //shenpi.ApprovalStatus = param.ApprovalStatus; |
| | | //shenpi.Buzhou = 2; |
| | | //shenpi.ApprovalTime = DateTime.Now; |
| | | //shenpi.ApprovalContent = param.ApprovalContent; |
| | | |
| | | //await _SugarClient.Updateable(shenpi).ExecuteCommandAsync(); |
| | | |
| | | } |
| | | else |
| | | { |
| | | shenpi = new OaWorkPlanShenpi() |
| | | { |
| | | ApprovalStaffId = Permissions.MemberId, |
| | | ApprovalContent = param.ApprovalContent, |
| | | ApprovalStatus = param.ApprovalStatus, |
| | | ApprovalTime = DateTime.Now, |
| | | ///总经理审批为2 |
| | | Buzhou = 2, |
| | | CreateTime = DateTime.Now, |
| | | Operator = Permissions.Name, |
| | | OA_WorkPlanId = param.OA_WorkPlanId, |
| | | |
| | | }; |
| | | await _SugarClient.Insertable(shenpi).ExecuteCommandAsync(); |
| | | } |
| | | |
| | | data.ApprovalTime = DateTime.Now; |
| | | data.ApprovalStatus = param.ApprovalStatus; |
| | | data.ApprovalContent = param.ApprovalContent; |
| | | data.LastUpdateTime = DateTime.Now; |
| | | |
| | | |
| | | |
| | | |
| | | await _SugarClient.Updateable(data).ExecuteCommandAsync(); |
| | | await _SugarClient.AsTenant().CommitTranAsync(); |
| | | return true; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | |
| | | await _SugarClient.AsTenant().RollbackTranAsync(); |
| | | throw; |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 判断是否具有权限 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private async Task<bool> CheckRols() |
| | | { |
| | | var pr = await _OAServices.GetOAPermissions(); |
| | | Permissions = pr; |
| | | if (pr != null && pr.MemberId != null) |
| | | { |
| | | |
| | | if (pr.BF_Isbaoxiaojingli) |
| | | return true; |
| | | else return false; |
| | | |
| | | } |
| | | else |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | |
New file |
| | |
| | | using cylsg.Model.ECTEModel; |
| | | using cylsg.Model.utilityViewModel; |
| | | using ECTESTOA; |
| | | using Furion.LinqBuilder; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Application.CyOS |
| | | { |
| | | /// <summary> |
| | | /// 报销主管相关控制器 |
| | | /// </summary> |
| | | [Authorize] |
| | | public class CyOSBaoXiaoZHuGuanController: IDynamicApiController |
| | | { |
| | | private readonly IOAServices _OAServices; |
| | | private readonly ISqlSugarClient _SugarClient; |
| | | private ECTESTOAPermissions Permissions; |
| | | public CyOSBaoXiaoZHuGuanController(IOAServices oaservices, ISqlSugarClient sugarClient) |
| | | { |
| | | _OAServices = oaservices; |
| | | _SugarClient = sugarClient.AsTenant().GetConnection("ECTESTOADB"); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 查询 |
| | | /// </summary> |
| | | [HttpPost] |
| | | public async Task<WorekPlandto> getplanelist(SearchOaWorekPlan param) |
| | | { |
| | | if (!await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | |
| | | Expression<Func<OaWorkPlan, bool>> SearchList = (x) => true; |
| | | |
| | | //川印工作单 |
| | | SearchList = SearchList.And(x => x.MemberId == _OAServices.firmId); |
| | | SearchList = SearchList.And(x => x.PlanType == 3); |
| | | SearchList = SearchList.And(x => x.PlanDataType == 17); |
| | | //SearchList = SearchList.And(x => x.ApprovalStatus == PlanStatusType.unApproval); |
| | | //SearchList = SearchList.And(x => x.OaWorkPlanShenpis.Where(y => y.Buzhou == 1 && y.ApprovalStaffId == Permissions.MemberId).Count()<=0); |
| | | SearchList = SearchList.And(x => x.DepartId == Permissions.DepartId); |
| | | if (!string.IsNullOrEmpty(param.StaffName)) |
| | | { |
| | | SearchList = SearchList.And(x => x.SentStaff.Name.Contains(param.StaffName)); |
| | | } |
| | | if (param.StaffMemberIdId != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.MemberId == param.StaffMemberIdId); |
| | | } |
| | | if (param.PlanDataType > 0) |
| | | { |
| | | SearchList = SearchList.And(x => x.PlanDataType == param.PlanDataType); |
| | | } |
| | | if (param.PlanStartTimeStart != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.PlanStartTime > param.PlanStartTimeStart); |
| | | } |
| | | if (param.PlanStartTimeEnd != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.PlanStartTime <= param.PlanStartTimeEnd.Value.AddDays(1)); |
| | | } |
| | | //审批状态 |
| | | if (param.ApprovalStatus != null) |
| | | { |
| | | if (param.ApprovalStatus == PlanStatusType.Yes) |
| | | SearchList = SearchList.And(x => x.ApprovalStatus == param.ApprovalStatus || ((x.OaWorkPlanShenpis.Count(y => y.ApprovalStatus == PlanStatusType.Yes&&y.ApprovalStaffId==Permissions.MemberId && y.Buzhou == 1) >0))); |
| | | else if(param.ApprovalStatus == PlanStatusType.No) |
| | | { |
| | | SearchList = SearchList.And(x => x.ApprovalStatus == param.ApprovalStatus ); |
| | | } |
| | | else |
| | | { |
| | | SearchList= SearchList.And(x=>x.ApprovalStatus== PlanStatusType.unApproval&&(x.OaWorkPlanShenpis.Count(y => y.Buzhou == 1&& y.ApprovalStaffId == Permissions.MemberId) <=0)); |
| | | } |
| | | |
| | | } |
| | | //报销状态 |
| | | if (param.EvaluationStatus != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.EvaluationStatus == param.EvaluationStatus); |
| | | } |
| | | RefAsync<int> totle = 0; |
| | | |
| | | //强制增加员工过滤 |
| | | |
| | | var data = await _SugarClient.Queryable<OaWorkPlan>().Includes(x=>x.Depart) |
| | | .Includes(x=>x.OaWorkPlanShenpis.Where(y=>y.ApprovalStaffId==Permissions.MemberId&&y.Buzhou==1).ToList()) |
| | | .Where(SearchList).OrderByDescending(x => x.PlanStartTime).Mapper( |
| | | x => |
| | | { |
| | | if (x.ApprovalStatus == PlanStatusType.unApproval) |
| | | { |
| | | var oashenpi = x.OaWorkPlanShenpis?.FirstOrDefault(); |
| | | if (oashenpi != null) |
| | | x.ApprovalStatus = oashenpi.ApprovalStatus; |
| | | |
| | | |
| | | } |
| | | ; |
| | | } |
| | | ).ToPageListAsync(param.page.PageIndex, param.page.PageSize, totle); |
| | | |
| | | |
| | | param.page.TotalCount = totle; |
| | | var sum = await _SugarClient.Queryable<OaWorkPlan>() |
| | | .Where(SearchList).SumAsync(x => x.PlanMoney); |
| | | return new WorekPlandto |
| | | |
| | | { |
| | | list = data, |
| | | page = param.page, |
| | | TotalMoney = sum ?? 0 |
| | | }; |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取报销单详情 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public async Task<OaWorkPlan> GetPlanInfo(int id) |
| | | { |
| | | if (!await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | return await _SugarClient.Queryable<OaWorkPlan>().Includes(x => x.OaWorkPlanShenpis.Where(y => y.Buzhou == 1).ToList(), y => y.ApprovalStaff).Includes(x => x.SentStaff).Includes(x => x.Depart).Includes(x => x.WorkPlanAttachments).Where(x=>x.Keyid==id).FirstAsync(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 审批权限 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | public async Task<bool> ApprovalPlan(OaWorkPlanShenpi param) |
| | | { |
| | | if (param.ApprovalStatus == PlanStatusType.unApproval) |
| | | throw Oops.Oh("不可设置为未审批状态"); |
| | | |
| | | if (!await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | var data = await _SugarClient.Queryable<OaWorkPlan>().Includes(x=>x.OaWorkPlanShenpis).Where(x => x.Keyid == param.OA_WorkPlanId).FirstAsync(); |
| | | if (data == null) |
| | | throw Oops.Oh("没有找到报销单"); |
| | | if (data.ApprovalStatus != null && data.ApprovalStatus != PlanStatusType.unApproval) |
| | | throw Oops.Oh("报销单已经批复完毕"); |
| | | OaWorkPlanShenpi shenpi = data.OaWorkPlanShenpis.Where(x => x.ApprovalStaffId == Permissions.MemberId&&x.Buzhou==1).FirstOrDefault(); |
| | | if (shenpi!=null) |
| | | { |
| | | //自己已经批复,不可更改 |
| | | throw Oops.Oh("报销单已经批复"); |
| | | //shenpi.ApprovalStatus = PlanStatusType.Yes; |
| | | //await _SugarClient.Updateable(shenpi).ExecuteCommandAsync(); |
| | | } |
| | | else |
| | | { |
| | | await _SugarClient.AsTenant().BeginTranAsync(); |
| | | try |
| | | { |
| | | if (param.ApprovalStatus == PlanStatusType.No) |
| | | { |
| | | //当有人审批拒绝后直接将申请单设置为拒绝,不在进行其他审核 |
| | | data.ApprovalStatus = PlanStatusType.No; |
| | | data.ApprovalTime = DateTime.Now; |
| | | data.LastUpdateTime = DateTime.Now; |
| | | data.Operator = Permissions.Name; |
| | | await _SugarClient.Updateable(data).ExecuteCommandAsync(); |
| | | |
| | | } |
| | | |
| | | shenpi = new OaWorkPlanShenpi() |
| | | { |
| | | ApprovalStaffId = Permissions.MemberId, |
| | | ApprovalContent = param.ApprovalContent, |
| | | ApprovalStatus = param.ApprovalStatus, |
| | | ApprovalTime = DateTime.Now, |
| | | Buzhou = 1, |
| | | CreateTime = DateTime.Now, |
| | | Operator = Permissions.Name, |
| | | OA_WorkPlanId = param.OA_WorkPlanId, |
| | | |
| | | }; |
| | | await _SugarClient.Insertable(shenpi).ExecuteCommandAsync(); |
| | | |
| | | await _SugarClient.AsTenant().CommitTranAsync(); |
| | | } |
| | | catch (Exception) |
| | | { |
| | | await _SugarClient.AsTenant().RollbackTranAsync(); |
| | | throw; |
| | | } |
| | | |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 判断是否具有权限 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private async Task<bool> CheckRols() |
| | | { |
| | | var pr = await _OAServices.GetOAPermissions(); |
| | | Permissions = pr; |
| | | if (pr != null && pr.MemberId != null) |
| | | { |
| | | |
| | | if ( pr.BF_IsBaoxiaozhuguan) |
| | | return true; |
| | | else return false; |
| | | |
| | | } |
| | | else |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | using cylsg.Model.ECTEModel; |
| | | using ECTESTOA; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Application.CyOS |
| | | { |
| | | /// <summary> |
| | | /// 川印通用信息获取 |
| | | /// </summary> |
| | | public class CYOSSettingController: IDynamicApiController |
| | | { |
| | | |
| | | private readonly ISqlSugarClient _client; |
| | | private readonly IOAServices _oAServices; |
| | | public CYOSSettingController( ISqlSugarClient client,IOAServices oAServices ) |
| | | { |
| | | _client = client.AsTenant().GetConnection("ECTESTOADB"); |
| | | _oAServices = oAServices; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取部门列表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public async Task< List<OaDepartment>> GetDepartLstt() |
| | | { |
| | | return await _client.Queryable<OaDepartment>().Where(x=>x.Status== "启用"&&x.FirmId== _oAServices.firmId).Select(x=>new OaDepartment |
| | | { |
| | | Name=x.Name, |
| | | Keyid=x.Keyid, |
| | | Remark=x.Remark, |
| | | }).WithCache(3600).ToListAsync(); |
| | | } |
| | | /// <summary> |
| | | /// 获取科目列表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public async Task<List<OaSubjectSet>> getKeMuList() |
| | | { |
| | | return await _client.Queryable<OaSubjectSet>().Where(x => x.Status == true && x.FirmId == _oAServices.firmId&& x.SubjectType=="贷").Select(x => new OaSubjectSet |
| | | { |
| | | SubjectName = x.SubjectName, |
| | | Keyid = x.Keyid, |
| | | Remark = x.Remark, |
| | | }).WithCache(3600).ToListAsync(); |
| | | } |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | using cylsg.Core; |
| | | using cylsg.Model.ECTEModel; |
| | | using cylsg.Model.TransferOrder; |
| | | using cylsg.Model.utilityViewModel; |
| | | using cylsg.utility.Extend; |
| | | using Cylsg.Filter; |
| | | using ECTESTOA; |
| | | using Furion.LinqBuilder; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using TencentCloud.Hunyuan.V20230901.Models; |
| | | using TencentCloud.Mrs.V20200910.Models; |
| | | |
| | | namespace cylsg.Application.CyOS |
| | | { |
| | | /// <summary> |
| | | /// 川印普通员工控制器 |
| | | /// </summary> |
| | | [Authorize] |
| | | public class CyOSStaffController : IDynamicApiController |
| | | { |
| | | private readonly IOAServices _OAServices; |
| | | private readonly ISqlSugarClient _SugarClient; |
| | | |
| | | private ECTESTOAPermissions Permissions; |
| | | public CyOSStaffController(IOAServices oaServices, ISqlSugarClient sugarClient) |
| | | { |
| | | _OAServices = oaServices; |
| | | _SugarClient = sugarClient.AsTenant().GetConnection("ECTESTOADB"); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查询 |
| | | /// </summary> |
| | | [HttpPost] |
| | | public async Task<WorekPlandto> getplanelist(SearchOaWorekPlan param) |
| | | { |
| | | if(! await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | Expression<Func<OaWorkPlan, bool>> SearchList = (x) => true; |
| | | |
| | | SearchList = SearchList.And(x => x.MemberId == _OAServices.firmId); |
| | | SearchList = SearchList.And(x => x.PlanType == 3); |
| | | SearchList = SearchList.And(x => x.PlanDataType == 17); |
| | | if (!string.IsNullOrEmpty(param.StaffName)) |
| | | { |
| | | SearchList = SearchList.And(x => x.SentStaff.Name.Contains(param.StaffName)); |
| | | } |
| | | if ( param.StaffMemberIdId !=null) |
| | | { |
| | | SearchList = SearchList.And(x => x.SentStaffId==param.StaffMemberIdId); |
| | | } |
| | | if(param.PlanDataType >0) |
| | | { |
| | | SearchList = SearchList.And(x => x.PlanDataType==param.PlanDataType); |
| | | } |
| | | if (param.PlanStartTimeStart !=null) |
| | | { |
| | | SearchList = SearchList.And(x => x.PlanStartTime> param.PlanStartTimeStart); |
| | | } |
| | | if (param.PlanStartTimeEnd != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.PlanStartTime <= param.PlanStartTimeEnd.Value.AddDays(1)); |
| | | } |
| | | //审批状态 |
| | | if (param.ApprovalStatus != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.ApprovalStatus == param.ApprovalStatus); |
| | | } |
| | | //报销状态 |
| | | if (param.EvaluationStatus != null) |
| | | { |
| | | SearchList = SearchList.And(x => x.EvaluationStatus == param.EvaluationStatus); |
| | | } |
| | | //强制增加员工过滤 |
| | | SearchList = SearchList.And(x => x.SentStaffId == Permissions.MemberId); |
| | | RefAsync<int> totle=0; |
| | | |
| | | var data= await _SugarClient.Queryable< OaWorkPlan >().Includes(x=>x.SentStaff).Includes(x=>x.OaWorkPlanShenpis).Where(SearchList).OrderByDescending(x => x.PlanStartTime).ToPageListAsync(param.page.PageIndex,param.page.PageSize, totle); |
| | | param.page.TotalCount = totle; |
| | | var sum = await _SugarClient.Queryable<OaWorkPlan>().Includes(x => x.SentStaff).Where(SearchList).SumAsync(x => x.PlanMoney); |
| | | return new WorekPlandto |
| | | |
| | | { |
| | | list = data, |
| | | page = param.page, |
| | | TotalMoney=sum??0 |
| | | }; |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 创建报销单 |
| | | /// </summary> |
| | | /// <param name="pram"></param> |
| | | /// <returns></returns> |
| | | [LimitFilter(LimiType = Limttype.User, timespan = 10, ResponseMeg = "请勿在10秒内重复申请该接口")] |
| | | public async Task<bool> CreatOderAsync(OaWorkPlan pram) |
| | | { |
| | | if (!await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | if(pram.PlanMoney<=0) |
| | | { |
| | | throw Oops.Oh("报销金额不可小于等于0"); |
| | | } |
| | | if(string.IsNullOrEmpty(pram.PlanContent)) |
| | | { |
| | | throw Oops.Oh("报销摘要不可为空"); |
| | | } |
| | | |
| | | if(pram.HoubufapiaoStatus==null) |
| | | { |
| | | throw Oops.Oh("发票状态不可为空"); |
| | | } |
| | | if(string.IsNullOrEmpty(pram.RewardResult)) |
| | | { |
| | | |
| | | throw Oops.Oh("科目ID RewardResult不能为空"); |
| | | } |
| | | OaSubjectSet? kemu = null; |
| | | try |
| | | { |
| | | var kemuid= pram.RewardResult.toInt(); |
| | | kemu= _SugarClient.Queryable<OaSubjectSet>().Where(x => x.Keyid == kemuid && x.FirmId == _OAServices.firmId && x.SubjectType == "贷" && x.Status == true).First(); |
| | | if(kemu==null) |
| | | throw Oops.Oh("科目选择错误,或者失效"); |
| | | |
| | | } |
| | | catch (Exception) |
| | | { |
| | | throw Oops.Oh("科目 RewardResult 选择错误,或者失效"); |
| | | |
| | | } |
| | | if(pram.HoubufapiaoStatus== HoubufapiaoStatusType.You) |
| | | { |
| | | if( pram.WorkPlanAttachments.Where(x=>x.AttachmentType==1).Count()<=0) |
| | | throw Oops.Oh("有发票时,必须上传发票"); |
| | | } |
| | | if (pram.WorkPlanAttachments?.Count > 0) |
| | | { |
| | | foreach (var item in pram.WorkPlanAttachments) |
| | | { |
| | | if( item.AttachmentType<=0||item.AttachmentType>3) |
| | | throw Oops.Oh("附件类型AttachmentType错误"); |
| | | if(string.IsNullOrEmpty(item.PlanAttachment)) |
| | | { |
| | | throw Oops.Oh("附件地址不能为空"); |
| | | } |
| | | item.CreateTime = DateTime.Now; |
| | | item.Operator = Permissions.Name; |
| | | |
| | | } |
| | | } |
| | | pram.PlanType = 3;//固定为3 |
| | | pram.MemberId = _OAServices.firmId; |
| | | pram.SentStaffId = Permissions.MemberId; |
| | | pram.ReciveStaffId = Permissions.MemberId; |
| | | pram.PlanDataType = 17; |
| | | pram.DepartId = Permissions.DepartId; |
| | | pram.PlanStartTime = DateTime.Now; |
| | | pram.RewardContent = kemu.SubjectName; |
| | | pram.LastUpdateTime = DateTime.Now; |
| | | pram.Operator = Permissions.Name; |
| | | pram.PlanTitle = ""; |
| | | pram.PlanRunTime = DateTime.Now; |
| | | pram.PlanRemark = ""; |
| | | pram.PlanPeople = Permissions.Name; |
| | | pram.PlanComplany = ""; |
| | | pram.PlanStatus = PlanStatusType.unApproval; |
| | | pram.ApprovalStaffId = Guid.Empty; |
| | | pram.ApprovalTime=DateTime.Now; |
| | | pram.ApprovalContent = ""; |
| | | pram.EvaluationContent = ""; |
| | | pram.EvaluationStaffId = Guid.Empty; |
| | | pram.EvaluationTime = DateTime.Now; |
| | | pram.RewardMoney = 0; |
| | | pram.RewardType = 1; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | await _SugarClient.InsertNav(pram).Include(x=>x.WorkPlanAttachments).ExecuteCommandAsync(); |
| | | return true; |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 创建报销单 |
| | | /// </summary> |
| | | /// <param name="pram"></param> |
| | | /// <returns></returns> |
| | | [LimitFilter(LimiType = Limttype.User, timespan = 10, ResponseMeg = "请勿在10秒内重复申请该接口")] |
| | | public async Task<bool> EditOderAsync(OaWorkPlan pram) |
| | | { |
| | | if (!await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | |
| | | if (pram.WorkPlanAttachments?.Count > 0) |
| | | { |
| | | foreach (var item in pram.WorkPlanAttachments) |
| | | { |
| | | if (item.AttachmentType <= 0 || item.AttachmentType > 3) |
| | | throw Oops.Oh("附件类型AttachmentType错误"); |
| | | if (string.IsNullOrEmpty(item.PlanAttachment)) |
| | | { |
| | | throw Oops.Oh("附件地址不能为空"); |
| | | } |
| | | if(item.CreateTime==null) |
| | | item.CreateTime = DateTime.Now; |
| | | if (item.Operator == null) |
| | | item.Operator = Permissions.Name; |
| | | |
| | | } |
| | | } |
| | | //获取原始数据 |
| | | var data= await _SugarClient.Queryable<OaWorkPlan>().Includes(x=>x.WorkPlanAttachments).Includes(x=>x.OaWorkPlanShenpis).Where(x=>x.Keyid==pram.Keyid&&x.SentStaffId==Permissions.MemberId).FirstAsync(); |
| | | if(data==null) |
| | | throw Oops.Oh("没有权限"); |
| | | if(data.ApprovalStatus!= PlanStatusType.unApproval||data.OaWorkPlanShenpis.Count>0) |
| | | { |
| | | if(data.HoubufapiaoStatus == HoubufapiaoStatusType.HouBuFaPiao&&data.HoubufapiaoStatus== HoubufapiaoStatusType.HouBuFaPiao) |
| | | { |
| | | //后补发票,只能修改发票和附件 |
| | | await _SugarClient.UpdateNav(data).Include(x => x.WorkPlanAttachments).ExecuteCommandAsync(); |
| | | return true; |
| | | } |
| | | else |
| | | |
| | | throw Oops.Oh("已经进入审批流程不可修改"); |
| | | |
| | | } |
| | | |
| | | if (data.RewardResult != pram.RewardResult) |
| | | { |
| | | |
| | | try |
| | | { |
| | | OaSubjectSet kemu = null; |
| | | var kemuid = pram.RewardResult.toInt(); |
| | | kemu = _SugarClient.Queryable<OaSubjectSet>().Where(x => x.Keyid == kemuid && x.FirmId == _OAServices.firmId && x.SubjectType == "贷" && x.Status == true).First(); |
| | | if (kemu == null) |
| | | throw Oops.Oh("科目选择错误,或者失效"); |
| | | data.RewardResult = pram.RewardResult; |
| | | data.RewardContent = kemu.SubjectName; |
| | | |
| | | } |
| | | catch (Exception) |
| | | { |
| | | throw Oops.Oh("科目 RewardResult 选择错误,或者失效"); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | data.PlanMoney=pram.PlanMoney; |
| | | //摘要 |
| | | data.PlanContent =pram.PlanContent; |
| | | //发票状态 |
| | | data.HoubufapiaoStatus = pram.HoubufapiaoStatus; |
| | | |
| | | //附件 |
| | | data.WorkPlanAttachments = pram.WorkPlanAttachments; |
| | | |
| | | data.LastUpdateTime = DateTime.Now; |
| | | //data .PlanType 不可更改 =3 |
| | | |
| | | await _SugarClient.UpdateNav(data).Include(x => x.WorkPlanAttachments).ExecuteCommandAsync(); |
| | | return true; |
| | | |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 获取详情 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public async Task<OaWorkPlan> GetPlanInfo(int id) |
| | | { |
| | | if (!await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | return await _SugarClient.Queryable<OaWorkPlan>().Includes(x=>x.SentStaff).Includes(x=>x.Depart).Includes(x=>x.WorkPlanAttachments).Where(x => x.Keyid == id).FirstAsync(); |
| | | } |
| | | /// <summary> |
| | | /// 删除 |
| | | /// </summary> |
| | | /// <param name="pram"></param> |
| | | /// <returns></returns> |
| | | [HttpDelete] |
| | | public async Task<bool> DelOderAsync(int id ) |
| | | { |
| | | if(id==0) |
| | | { |
| | | throw Oops.Oh("编号错误"); |
| | | } |
| | | if (!await CheckRols()) |
| | | { |
| | | throw Oops.Oh("没有权限"); |
| | | } |
| | | //获取原始数据 |
| | | var data = await _SugarClient.Queryable<OaWorkPlan>().Includes(x => x.WorkPlanAttachments).Includes(x => x.OaWorkPlanShenpis).Where(x => x.Keyid == id && x.MemberId == Permissions.MemberId).FirstAsync(); |
| | | if (data == null) |
| | | throw Oops.Oh("没找到申请"); |
| | | if (data.ApprovalStatus == PlanStatusType.Yes || data.OaWorkPlanShenpis.Count > 0) |
| | | { |
| | | throw Oops.Oh("已经进入审批流程不可修改"); |
| | | } |
| | | |
| | | await _SugarClient.DeleteNav(data).Include(x => x.WorkPlanAttachments).ExecuteCommandAsync(); |
| | | return true; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 判断是否具有权限 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private async Task< bool> CheckRols() |
| | | { |
| | | var pr= await _OAServices.GetOAPermissions(); |
| | | Permissions = pr ; |
| | | if (pr != null &&pr.MemberId!=null) |
| | | { |
| | | |
| | | return true; |
| | | |
| | | } |
| | | else |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// //搜索参数 |
| | | /// </summary> |
| | | public class SearchOaWorekPlan |
| | | { |
| | | /// <summary> |
| | | /// 页面参数 |
| | | /// </summary> |
| | | public PageModel page { get; set; } |
| | | /// <summary> |
| | | /// 员工姓名 |
| | | /// </summary> |
| | | public string? StaffName { get; set; } |
| | | /// <summary> |
| | | /// 员工Id |
| | | /// </summary> |
| | | public Guid? StaffMemberIdId { get; set; } |
| | | /// <summary> |
| | | /// 状态 是否审批 |
| | | /// </summary> |
| | | public PlanStatusType? ApprovalStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 更正为报销状态 |
| | | /// </summary> |
| | | public BaoxiaoStausType? EvaluationStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 起始时间 |
| | | /// </summary> |
| | | public DateTime? PlanStartTimeStart { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 结束时间 |
| | | /// </summary> |
| | | public DateTime? PlanStartTimeEnd { get; set; } |
| | | /// <summary> |
| | | /// 类别,默认为17 只能为17 |
| | | /// </summary> |
| | | public int? PlanDataType { get; set; } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | public class WorekPlandto |
| | | { |
| | | /// <summary> |
| | | /// 数据 |
| | | /// </summary> |
| | | public List< OaWorkPlan> list { get; set; } |
| | | /// <summary> |
| | | /// 页面统计 |
| | | /// </summary> |
| | | public PageModel page { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 统计 |
| | | /// </summary> |
| | | public decimal TotalMoney { get; set; } = 0; |
| | | |
| | | } |
| | | } |
| | |
| | | using System; |
| | | using cylsg.Model.utilityViewModel; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | |
| | | /// </summary> |
| | | public UserCompanyDto userCompany { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 川印员工权限 |
| | | /// </summary> |
| | | public ECTESTOAPermissions OAPermissions { get; set; } |
| | | } |
| | | |
| | | public class UserWorkerDto |
| | |
| | | using System.Security.Claims; |
| | | using System.Runtime.Intrinsics.Arm; |
| | | using MapsterMapper; |
| | | using ECTESTOA; |
| | | |
| | | |
| | | namespace cylsg.Application.Users |
| | | { |
| | |
| | | private readonly ISystemService _systemService; |
| | | private ISqlSugarClient _sqlSugarClient; |
| | | private IMapper _mapper; |
| | | public UserAppService(ISystemService systemService, ISqlSugarClient sqlSugarClient, IMapper mapper) |
| | | private readonly IOAServices _OAServices; |
| | | public UserAppService(ISystemService systemService, ISqlSugarClient sqlSugarClient, IMapper mapper |
| | | ,IOAServices oAServices |
| | | ) |
| | | { |
| | | _systemService = systemService; |
| | | _sqlSugarClient = sqlSugarClient; |
| | | _mapper = mapper; |
| | | _OAServices = oAServices; |
| | | } |
| | | |
| | | |
| | |
| | | { |
| | | userDto.userCompany = _mapper.Map<UserCompanyDto>(userCompany); |
| | | } |
| | | |
| | | |
| | | //增加川印权限获取 |
| | | userDto.OAPermissions= await _OAServices.GetOAPermissions(); |
| | | |
| | | |
| | | return userDto; |
| | |
| | | <ProjectReference Include="..\cylsg.Model\cylsg.Model.csproj" /> |
| | | <ProjectReference Include="..\cylsg.redis\cylsg.redis.csproj" /> |
| | | <ProjectReference Include="..\cylsg.utility\cylsg.utility.csproj" /> |
| | | <ProjectReference Include="..\ECTESTOA\ECTESTOA.csproj" /> |
| | | <ProjectReference Include="..\EzInitqMessageDef\EzInitqMessageDef.csproj" /> |
| | | <ProjectReference Include="..\EzTencentCloud\EzTencentCloud.csproj" /> |
| | | <ProjectReference Include="..\EzUpFile\EzUpFile.csproj" /> |
| | |
| | | /// </summary> |
| | | public static class DbContext |
| | | { |
| | | public static List<ConnectionConfig> connectionConfigs |
| | | { |
| | | get |
| | | { |
| | | var list = App.GetConfig<List<ConnectionConfig>>("ConnectionConfigs"); |
| | | foreach (var config in list) |
| | | { |
| | | config.ConfigureExternalServices = new ConfigureExternalServices() |
| | | { |
| | | DataInfoCacheService = new SqlSugarRedisCache() |
| | | }; |
| | | } |
| | | return list; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// SqlSugar 数据库实例 |
| | | /// </summary> |
| | | public static readonly SqlSugarScope Instance = new( |
| | | // 读取 appsettings.json 中的 ConnectionConfigs 配置节点 |
| | | App.GetConfig<List<ConnectionConfig>>("ConnectionConfigs") |
| | | //App.GetConfig<List<ConnectionConfig>>("ConnectionConfigs") |
| | | connectionConfigs |
| | | , db => |
| | | { |
| | | // 这里配置全局事件,比如拦截执行 SQL |
New file |
| | |
| | | using Furion; |
| | | using SqlSugar; |
| | | using SugarRedis; |
| | | |
| | | //using SugarRedis; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Core |
| | | { |
| | | public class SqlSugarRedisCache : ICacheService |
| | | { |
| | | |
| | | //NUGET安装 SugarRedis (也可以自个实现) |
| | | //注意:SugarRedis 不要扔到构造函数里面, 一定要单例模式 |
| | | public static SugarRedisClient _service = new SugarRedisClient(App.Configuration["RedisConfig:ConnectionString"] ?? "127.0.0.1:6379,password=,connectTimeout=3000,connectRetry=1,syncTimeout=10000,DefaultDatabase=0"); |
| | | |
| | | |
| | | //+1重载 new SugarRedisClient(字符串) |
| | | //默认:127.0.0.1:6379,password=,connectTimeout=3000,connectRetry=1,syncTimeout=10000,DefaultDatabase=0 |
| | | |
| | | public void Add<V>(string key, V value) |
| | | { |
| | | _service.Set(key, value); |
| | | } |
| | | |
| | | public void Add<V>(string key, V value, int cacheDurationInSeconds) |
| | | { |
| | | _service.SetBySeconds(key, value, cacheDurationInSeconds); |
| | | } |
| | | |
| | | public bool ContainsKey<V>(string key) |
| | | { |
| | | return _service.Exists(key); |
| | | } |
| | | |
| | | public V Get<V>(string key) |
| | | { |
| | | return _service.Get<V>(key); |
| | | } |
| | | |
| | | public IEnumerable<string> GetAllKey<V>() |
| | | { |
| | | //性能注意: 只查sqlsugar用到的key |
| | | return _service.SearchCacheRegex("SqlSugarDataCache.*"); |
| | | } |
| | | |
| | | public V GetOrCreate<V>(string cacheKey, Func<V> create, int cacheDurationInSeconds = int.MaxValue) |
| | | { |
| | | |
| | | if (this.ContainsKey<V>(cacheKey)) |
| | | { |
| | | var result = this.Get<V>(cacheKey); |
| | | if (result == null) |
| | | { |
| | | return create(); |
| | | } |
| | | else |
| | | { |
| | | return result; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var result = create(); |
| | | this.Add(cacheKey, result, cacheDurationInSeconds); |
| | | return result; |
| | | } |
| | | } |
| | | |
| | | public void Remove<V>(string key) |
| | | { |
| | | _service.Remove(key); |
| | | } |
| | | } |
| | | } |
| | |
| | | <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.5.3" /> |
| | | <PackageReference Include="Furion.Pure" Version="4.9.5.3" /> |
| | | <PackageReference Include="SqlSugarCore" Version="5.1.4.166" /> |
| | | <PackageReference Include="SugarRedis" Version="1.5.0" /> |
| | | </ItemGroup> |
| | | |
| | | <ItemGroup> |
New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using SqlSugar; |
| | | namespace Models |
| | | { |
| | | /// <summary> |
| | | /// 办公系统厂商账户表 |
| | | ///</summary> |
| | | [SugarTable("OA_FirmAccount")] |
| | | [Tenant("ECTESTOADB")] |
| | | public class OA_FirmAccount |
| | | { |
| | | |
| | | |
| | | /// <summary> |
| | | /// 备 注:账户编号 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="Keyid" ,IsPrimaryKey = true,IsIdentity = true) ] |
| | | public int Keyid { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:厂商编号 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="FirmId" ) ] |
| | | public Guid FirmId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:账名 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="AccountName" ) ] |
| | | public string AccountName { get; set; } = null!; |
| | | |
| | | /// <summary> |
| | | /// 备 注:账户类型 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="AccountType" ) ] |
| | | public string AccountType { get; set; } = null!; |
| | | |
| | | /// <summary> |
| | | /// 备 注:户名 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="UserName" ) ] |
| | | public string UserName { get; set; } = null!; |
| | | |
| | | /// <summary> |
| | | /// 备 注:责任人 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="ResponsiblePerson" ) ] |
| | | public string? ResponsiblePerson { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:状态 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="Status" ) ] |
| | | public bool Status { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:余额 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="Balance" ) ] |
| | | public decimal Balance { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:总收入 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="AllIncome" ) ] |
| | | public decimal AllIncome { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:总支出 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="AllExpenses" ) ] |
| | | public decimal AllExpenses { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:创建时间 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="CreateTime" ) ] |
| | | public DateTime CreateTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:最后修改时间 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="LastUpdateTime" ) ] |
| | | public DateTime LastUpdateTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:操作人 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="Operator" ) ] |
| | | public string Operator { get; set; } = null!; |
| | | |
| | | /// <summary> |
| | | /// 备 注:备注 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="Remark" ) ] |
| | | public string? Remark { get; set; } |
| | | |
| | | |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using SqlSugar; |
| | | namespace Models |
| | | { |
| | | /// <summary> |
| | | /// 办公系统厂商账户收支记录 |
| | | ///</summary> |
| | | [SugarTable("OA_FirmAccountRecord")] |
| | | [Tenant("ECTESTOADB")] |
| | | public class OA_FirmAccountRecord |
| | | { |
| | | |
| | | |
| | | /// <summary> |
| | | /// 备 注:记录编号 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="Keyid" ,IsPrimaryKey = true,IsIdentity = true) ] |
| | | public int Keyid { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:科目编号 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="SubjectId" ) ] |
| | | public int SubjectId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:账户编号 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="AccountId" ) ] |
| | | public int AccountId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:收、支 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="RecordTypeId" ) ] |
| | | public int RecordTypeId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:操作金额 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="Money" ) ] |
| | | public decimal Money { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:名称 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="PaymentUnit" ) ] |
| | | public string PaymentUnit { get; set; } = null!; |
| | | |
| | | /// <summary> |
| | | /// 备 注:记录来源信息 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="OperationalMatters" ) ] |
| | | public string OperationalMatters { get; set; } = null!; |
| | | |
| | | /// <summary> |
| | | /// 备 注:最后修改时间 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="LastUpdateTime" ) ] |
| | | public DateTime LastUpdateTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:操作人 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="Operator" ) ] |
| | | public string Operator { get; set; } = null!; |
| | | |
| | | /// <summary> |
| | | /// 备 注:备注 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="Remark" ) ] |
| | | public string? Remark { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注: |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="ResidualAmount" ) ] |
| | | public decimal? ResidualAmount { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注: |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="Department" ) ] |
| | | public string? Department { get; set; } |
| | | |
| | | |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Model.ECTEModel |
| | | { |
| | | /// <summary> |
| | | /// 办公系统厂商员工角色表 |
| | | /// </summary> |
| | | [SugarTable("OA_FirmRole")] |
| | | [Tenant("ECTESTOADB")] |
| | | public class OA_FirmRole |
| | | { |
| | | /// <summary> |
| | | /// 信息编号 |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] |
| | | public int Keyid { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 所属厂商编号 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false)] |
| | | public Guid FirmId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 角色名称 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDataType = "varchar(20)")] |
| | | public string RoleName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否有效 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false)] |
| | | public bool IsUsed { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 最后修改时间 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false)] |
| | | public DateTime LastUpdateTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 操作人 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDataType = "varchar(20)")] |
| | | public string Operator { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备注 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")] |
| | | public string Remark { get; set; } |
| | | } |
| | | } |
New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using SqlSugar; |
| | | namespace Models |
| | | { |
| | | /// <summary> |
| | | /// 办公系统厂商角色权限关联表 |
| | | ///</summary> |
| | | [SugarTable("OA_FirmRolePermissionsRel")] |
| | | public class OA_FirmRolePermissionsRel |
| | | { |
| | | |
| | | |
| | | /// <summary> |
| | | /// 备 注:所属厂商编号 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="FirmId" ) ] |
| | | public Guid? FirmId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:角色编号 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="RoleId" ) ] |
| | | public int RoleId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:功能编号组 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="FuncGroup" ) ] |
| | | public string? FuncGroup { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:一级菜单编号 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="MenuIdOne" ) ] |
| | | public int? MenuIdOne { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:二级菜单编号 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="MenuIdTwo" ) ] |
| | | public int? MenuIdTwo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备 注:三级菜单编号 |
| | | /// 默认值: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName="MenuIdThree" ) ] |
| | | public int? MenuIdThree { get; set; } |
| | | |
| | | |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Model.ECTEModel |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 厂商部门表 |
| | | /// </summary> |
| | | [Tenant("ECTESTOADB")] |
| | | [SugarTable("Oa_Department")] |
| | | public class OaDepartment |
| | | { |
| | | /// <summary> |
| | | /// 部门编号 |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] |
| | | public int Keyid { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 所属厂商编号 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "FirmId")] |
| | | public Guid? FirmId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 部门名称 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Name", Length = 50)] |
| | | public string Name { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 状态 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Status", Length = 50)] |
| | | public string Status { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 最后修改时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "LastUpdateTime")] |
| | | public DateTime? LastUpdateTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 操作人 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Operator", Length = 50)] |
| | | public string Operator { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备注 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Remark", Length = 200)] |
| | | public string Remark { get; set; } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Model.ECTEModel |
| | | { |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 办公系统员工表 |
| | | /// </summary> |
| | | [Tenant( "ECTESTOADB")] |
| | | [SugarTable("Oa_Staff")] |
| | | public class OaStaff |
| | | { |
| | | /// <summary> |
| | | /// 主键ID |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] |
| | | public int Keyid { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 所属厂商编号 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "FirmId")] |
| | | public Guid FirmId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 姓名 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Name", Length = 20)] |
| | | public string Name { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 性别 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Sex", Length = 4)] |
| | | public string Sex { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 登录账号 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "StaffUserName", Length = 20)] |
| | | public string StaffUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 密码 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "StaffUserPwd", Length = 20)] |
| | | public string StaffUserPwd { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 手机 ==对应用户ITCode |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "MobieNum", Length = 20)] |
| | | public string MobieNum { get; set; } |
| | | |
| | | /// <summary> |
| | | /// QQ |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "QQ", Length = 20)] |
| | | public string QQ { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 联系电话 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "PhoneNum", Length = 20)] |
| | | public string PhoneNum { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Email |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Email", Length = 50)] |
| | | public string Email { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 状态 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Status", Length = 10)] |
| | | public string Status { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 最后修改时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "LastUpdateTime")] |
| | | public DateTime LastUpdateTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 操作人 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Operator", Length = 20)] |
| | | public string Operator { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备注 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Remark", Length = 200)] |
| | | public string Remark { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 关联会员 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "MemberId")] |
| | | public Guid? MemberId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否为业务经理 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "IsBusinessManager")] |
| | | public bool? IsBusinessManager { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否为账户经理 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "IsAccountManager")] |
| | | public bool? IsAccountManager { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 部门ID |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "DepartmentId")] |
| | | public int? DepartmentId { get; set; } |
| | | /// <summary> |
| | | /// 部门 |
| | | /// </summary> |
| | | [Navigate(NavigateType.OneToOne,nameof( DepartmentId),nameof(OaDepartment.Keyid))] |
| | | public OaDepartment Department { get; set; } |
| | | /// <summary> |
| | | /// 个人档案唯一编码 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_Number", Length = 50)] |
| | | public string SM_Number { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 爱人姓名 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_SpouseName", Length = 50)] |
| | | public string SM_SpouseName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 爱人电话 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_SpousePhone", Length = 50)] |
| | | public string SM_SpousePhone { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 其他记录 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_OtherLog")] |
| | | public string SM_OtherLog { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 职务 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_Post", Length = 50)] |
| | | public string SM_Post { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 学历 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_Degree", Length = 50)] |
| | | public string SM_Degree { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 入职时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_StartWorkTime")] |
| | | public DateTime? SM_StartWorkTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 薪资待遇 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_Money", Length = 100)] |
| | | public string SM_Money { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否购买社保 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_IsSocialSecurity")] |
| | | public int? SM_IsSocialSecurity { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 社保类型 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_SocialSecurityType", Length = 50)] |
| | | public string SM_SocialSecurityType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 社保卡号 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_SocialSecurityNumber", Length = 50)] |
| | | public string SM_SocialSecurityNumber { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否签订合同 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_IsContract")] |
| | | public int? SM_IsContract { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 合同签订时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_ContractStartTime")] |
| | | public DateTime? SM_ContractStartTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 合同到期时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_ContractEndTime")] |
| | | public DateTime? SM_ContractEndTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 离职审批 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_EndWorkStatus")] |
| | | public int? SM_EndWorkStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 离职申请时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_EndWorkStartTime")] |
| | | public DateTime? SM_EndWorkStartTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 离职时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_EndWorkTime")] |
| | | public DateTime? SM_EndWorkTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 离职原因 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_EndWorkContent", Length = 200)] |
| | | public string SM_EndWorkContent { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 部门主管签字 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_DepartmentHeads", Length = 50)] |
| | | public string SM_DepartmentHeads { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 行政部签字 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_AdministrationDepartment", Length = 50)] |
| | | public string SM_AdministrationDepartment { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 财务部签字 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_MinistryFinance", Length = 50)] |
| | | public string SM_MinistryFinance { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 总经理签字 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_GeneralManager", Length = 50)] |
| | | public string SM_GeneralManager { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否导入 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_IsImporting")] |
| | | public int? SM_IsImporting { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否删除 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_IsDelete")] |
| | | public int? SM_IsDelete { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 出生日期 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_Birthday")] |
| | | public DateTime? SM_Birthday { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 身份证号码 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_IDCardNum", Length = 50)] |
| | | public string SM_IDCardNum { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 身份证图片 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_IDCardPic", Length = 200)] |
| | | public string SM_IDCardPic { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 证书类型 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_CertificateType")] |
| | | public string SM_CertificateType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 证书图片 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_CertificatePic")] |
| | | public string SM_CertificatePic { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 现居省 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_NowProvince", Length = 50)] |
| | | public string SM_NowProvince { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 现居市 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_NowCity", Length = 50)] |
| | | public string SM_NowCity { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 现居区 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_NowArea", Length = 50)] |
| | | public string SM_NowArea { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 现居地址 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_NowAddress", Length = 50)] |
| | | public string SM_NowAddress { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 籍贯省 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_OldProvence", Length = 50)] |
| | | public string SM_OldProvence { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 籍贯市 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_OldCity", Length = 50)] |
| | | public string SM_OldCity { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 籍贯区 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_OldArea", Length = 50)] |
| | | public string SM_OldArea { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 籍贯地址 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SM_OldAdress", Length = 50)] |
| | | public string SM_OldAdress { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否是司机 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "BF_IsDriver")] |
| | | public bool BF_IsDriver { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否是配送管理员 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "BF_IsDeliverManage")] |
| | | public bool BF_IsDeliverManage { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否为报销主管 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "BF_IsBaoxiaozhuguan")] |
| | | public bool BF_IsBaoxiaozhuguan { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否为报销经理 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "BF_Isbaoxiaojingli")] |
| | | public bool BF_Isbaoxiaojingli { get; set; } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel.DataAnnotations.Schema; |
| | | using System.ComponentModel.DataAnnotations; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using SqlSugar; |
| | | |
| | | namespace cylsg.Model.ECTEModel |
| | | { |
| | | /// <summary> |
| | | /// 员工角色表 |
| | | /// </summary> |
| | | [Tenant("ECTESTOADB")] |
| | | public class OA_StaffRoleRel |
| | | { |
| | | |
| | | public Guid FirmId { get; set; } |
| | | |
| | | public int StaffId { get; set; } |
| | | |
| | | public int RoleId { get; set; } |
| | | } |
| | | } |
New file |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Model.ECTEModel |
| | | { |
| | | |
| | | |
| | | /// <summary> |
| | | /// 办公系统科目设置 |
| | | /// </summary> |
| | | [Tenant("ECTESTOADB")] |
| | | [SugarTable("Oa_SubjectSet")] |
| | | public class OaSubjectSet |
| | | { |
| | | /// <summary> |
| | | /// 科目编号 |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] |
| | | public int Keyid { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 所属厂商 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "FirmId")] |
| | | public Guid? FirmId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 科目类别 过滤为 贷是支出 的类别 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SubjectType", Length = 10)] |
| | | public string? SubjectType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 科目名称 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SubjectName", Length = 50)] |
| | | public string SubjectName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 最后修改时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "LastUpdateTime")] |
| | | public DateTime? LastUpdateTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 操作人 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Operator", Length = 20)] |
| | | public string? Operator { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备注 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Remark", Length = 200)] |
| | | public string? Remark { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 状态 1为有效 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Status")] |
| | | public bool? Status { get; set; } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Model.ECTEModel |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 工作流程 |
| | | /// </summary> |
| | | [Tenant("ECTESTOADB")] |
| | | [SugarTable("OA_WorkPlan")] |
| | | public class OaWorkPlan |
| | | { |
| | | /// <summary> |
| | | /// 编号 |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] |
| | | public int? Keyid { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 会员编号 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "MemberId")] |
| | | public Guid? MemberId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 发起人编号 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "SentStaffId")] |
| | | public Guid? SentStaffId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 员工 |
| | | /// </summary> |
| | | [Navigate(NavigateType.OneToOne, nameof(SentStaffId), nameof(OaStaff.MemberId))] |
| | | public OaStaff? SentStaff { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 部门编号 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "DepartId")] |
| | | public int? DepartId { get; set; } |
| | | /// <summary> |
| | | /// 部门 |
| | | /// </summary> |
| | | [Navigate(NavigateType.OneToOne, nameof(DepartId), nameof(OaDepartment.Keyid))] |
| | | public OaDepartment? Depart { get; set; } |
| | | /// <summary> |
| | | /// 接收人编号 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "ReciveStaffId")] |
| | | public Guid? ReciveStaffId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 计划类型 报销类为3 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "PlanType")] |
| | | public int? PlanType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 计划性质 报销类为17 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "PlanDataType")] |
| | | public int? PlanDataType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 主题 和内容一致 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "PlanTitle", Length = 200)] |
| | | public string? PlanTitle { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 内容 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "PlanContent", Length = 500)] |
| | | public string? PlanContent { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 执行时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "PlanRunTime")] |
| | | public DateTime? PlanRunTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 申请费用 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "PlanMoney")] |
| | | public decimal? PlanMoney { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备注 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "PlanRemark", Length = 200)] |
| | | public string? PlanRemark { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 计划添加时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "PlanStartTime")] |
| | | public DateTime? PlanStartTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 计划人 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "PlanPeople", Length = 50)] |
| | | public string? PlanPeople { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 对口单位 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "PlanComplany", Length = 50)] |
| | | public string? PlanComplany { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 计划状态 未用 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "PlanStatus")] |
| | | public PlanStatusType? PlanStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 审核人编号 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "ApprovalStaffId")] |
| | | public Guid? ApprovalStaffId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 审批状态 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "ApprovalStatus")] |
| | | public PlanStatusType? ApprovalStatus { get; set; } = PlanStatusType.unApproval; |
| | | |
| | | /// <summary> |
| | | /// 审批人员 |
| | | /// </summary> |
| | | [Navigate(NavigateType.OneToMany, nameof(OaWorkPlanShenpi.OA_WorkPlanId), nameof(Keyid))] |
| | | public List<OaWorkPlanShenpi>? OaWorkPlanShenpis { get; set; } |
| | | /// <summary> |
| | | /// 审核时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "ApprovalTime")] |
| | | public DateTime? ApprovalTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 审核批复 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "ApprovalContent", Length = 100)] |
| | | public string? ApprovalContent { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 最后修改时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "LastUpdateTime")] |
| | | public DateTime? LastUpdateTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 操作人 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Operator", Length = 20)] |
| | | public string? Operator { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 考评结果/ 更改为报销状态 默认为未报销状态 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "EvaluationStatus")] |
| | | public BaoxiaoStausType? EvaluationStatus { get; set; } = BaoxiaoStausType.NotReimbursed; |
| | | |
| | | /// <summary> |
| | | /// 考评内容 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "EvaluationContent", Length = 200)] |
| | | public string? EvaluationContent { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 考评人 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "EvaluationStaffId")] |
| | | public Guid? EvaluationStaffId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 考评时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "EvaluationTime")] |
| | | public DateTime? EvaluationTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 奖励类型/当前步骤 ,1或者2 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "RewardType")] |
| | | public int? RewardType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 奖励原因 /为更正科目名称 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "RewardContent", Length = 200)] |
| | | public string? RewardContent { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 奖励结果 /更正为科目ID |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "RewardResult", Length = 200)] |
| | | public string? RewardResult { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 奖励金额 弃用 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "RewardMoney")] |
| | | public decimal? RewardMoney { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 是否后补发票 默认为有发票 |
| | | /// </summary> |
| | | public HoubufapiaoStatusType? HoubufapiaoStatus { get; set; } = HoubufapiaoStatusType.You; |
| | | |
| | | /// <summary> |
| | | /// 附件,包括发票和附件,需要分类 |
| | | /// </summary> |
| | | [Navigate(NavigateType.OneToMany, nameof(OaWorkPlanAttachment.OA_WorkPlanId),nameof(Keyid))] |
| | | public List< OaWorkPlanAttachment>? WorkPlanAttachments { get; set; } |
| | | |
| | | ///// <summary> |
| | | ///// 单纯的附件 |
| | | ///// </summary> |
| | | //[SugarColumn( IsIgnore =true)] |
| | | //public List<OaWorkPlanAttachment>? Attachments { get; set; } |
| | | ///// <summary> |
| | | ///// 发票附件 |
| | | ///// </summary> |
| | | //[SugarColumn(IsIgnore = true)] |
| | | //public List<OaWorkPlanAttachment>? Receipts { get; set; } |
| | | /// <summary> |
| | | /// 报销账号 |
| | | /// </summary> |
| | | [SugarColumn(IsIgnore =true)] |
| | | public int? FirmAccountId { get; set; } |
| | | } |
| | | |
| | | public enum PlanStatusType |
| | | { |
| | | /// <summary> |
| | | /// 申请 |
| | | /// </summary> |
| | | [Description("未审批")] |
| | | unApproval, |
| | | /// <summary> |
| | | /// 通过 |
| | | /// </summary> |
| | | [Description("通过")] |
| | | Yes , |
| | | /// <summary> |
| | | /// 否定 |
| | | /// </summary> |
| | | [Description("否定")] |
| | | No |
| | | } |
| | | /// <summary> |
| | | /// 后补发票状态 |
| | | /// </summary> |
| | | public enum HoubufapiaoStatusType |
| | | { |
| | | /// <summary> |
| | | /// 未知 |
| | | /// </summary> |
| | | [Description("未知")] |
| | | Unknown, |
| | | /// <summary> |
| | | /// 是 |
| | | /// </summary> |
| | | [Description("是")] |
| | | You = 1, |
| | | /// <summary> |
| | | ///后补发票 |
| | | /// </summary> |
| | | [Description("后补发票")] |
| | | HouBuFaPiao =2, |
| | | /// <summary> |
| | | /// 无发票 |
| | | /// </summary> |
| | | [Description("无发票")] |
| | | Wu = 3 |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | public enum BaoxiaoStausType |
| | | { |
| | | /// <summary> |
| | | /// 未知 |
| | | /// </summary> |
| | | [Description("未知")] |
| | | Unknown, |
| | | /// <summary> |
| | | /// 已报销 |
| | | /// </summary> |
| | | [Description("已报销")] |
| | | Reimbursed, |
| | | /// <summary> |
| | | /// 未报销 |
| | | /// </summary> |
| | | [Description("未报销")] |
| | | NotReimbursed |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Model.ECTEModel |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 工作计划附件表 |
| | | /// </summary> |
| | | [Tenant("ECTESTOADB")] |
| | | [SugarTable("Oa_WorkPlan_Attachment")] |
| | | public class OaWorkPlanAttachment |
| | | { |
| | | /// <summary> |
| | | /// 主键ID |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] |
| | | public int? Keyid { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 工作计划ID |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "OA_WorkPlanId")] |
| | | public int? OA_WorkPlanId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 附件 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "PlanAttachment", Length = 500)] |
| | | public string? PlanAttachment { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 附件类型 1是发票 2 是附件 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "AttachmentType")] |
| | | public int? AttachmentType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 创建时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "CreateTime")] |
| | | public DateTime? CreateTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 操作员 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Operator", Length = 20)] |
| | | public string? Operator { get; set; } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | using Mapster; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel.DataAnnotations; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Model.ECTEModel |
| | | { |
| | | |
| | | |
| | | /// <summary> |
| | | /// 工作计划审批表 |
| | | /// </summary> |
| | | [Tenant("ECTESTOADB")] |
| | | [SugarTable("Oa_WorkPlan_shenpi")] |
| | | public class OaWorkPlanShenpi |
| | | { |
| | | /// <summary> |
| | | /// 主键ID |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] |
| | | public int? Keyid { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 工作计划ID 报销单ID |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "OA_WorkPlanId")] |
| | | |
| | | public int? OA_WorkPlanId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 审批人编号 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "ApprovalStaffId")] |
| | | public Guid? ApprovalStaffId { get; set; } |
| | | /// <summary> |
| | | /// 审批人 |
| | | /// </summary> |
| | | [Navigate(NavigateType.OneToOne, nameof(ApprovalStaffId), nameof(OaStaff.MemberId))] |
| | | public OaStaff? ApprovalStaff { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 审批状态 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "ApprovalStatus")] |
| | | [Required] |
| | | public PlanStatusType? ApprovalStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 审批时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "ApprovalTime")] |
| | | public DateTime? ApprovalTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 审批内容 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "ApprovalContent", Length = 100)] |
| | | public string ApprovalContent { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 创建时间 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "CreateTime")] |
| | | public DateTime CreateTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 操作员 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Operator", Length = 20)] |
| | | public string Operator { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 审批步骤 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Buzhou")] |
| | | public int? Buzhou { get; set; } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Model.ECTEModel |
| | | { |
| | | /// <summary> |
| | | /// 系统权限菜单表 |
| | | /// </summary> |
| | | |
| | | [TenantAttribute("ECTESTOADB")] |
| | | public class Sys_Permissions_Menu |
| | | { |
| | | /// <summary> |
| | | /// 信息编号 |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] |
| | | public int Keyid { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 菜单名称 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDataType = "nvarchar(50)")] |
| | | public string MenuName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 父菜单ID |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true)] |
| | | public int? ParentId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 菜单路径 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")] |
| | | public string MenuPath { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 菜单图标 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")] |
| | | public string MenuIcon { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否有效 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false)] |
| | | public bool IsUsed { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 排序码 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDataType = "varchar(5)")] |
| | | public string OrderCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 最后修改时间 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false)] |
| | | public DateTime LastUpdateTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 操作人 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDataType = "varchar(20)")] |
| | | public string Operator { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 备注 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")] |
| | | public string Remark { get; set; } |
| | | } |
| | | } |
New file |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Model.ECTEModel |
| | | { |
| | | /// <summary> |
| | | /// 系统权限角色菜单关系表 |
| | | /// </summary> |
| | | [SugarTable("Sys_Permissions_RoleMenuRelation")] |
| | | [Tenant("ECTESTOADB")] |
| | | public class Sys_Permissions_RoleMenuRelation |
| | | { |
| | | /// <summary> |
| | | /// 角色ID |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true)] |
| | | public int? RoleId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 功能ID |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")] |
| | | public string FuncId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 一级菜单ID |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true)] |
| | | public int? MenuIdOne { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 二级菜单ID |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true)] |
| | | public int? MenuIdTwo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 三级菜单ID |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true)] |
| | | public int? MenuIdThree { get; set; } |
| | | } |
| | | } |
New file |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace cylsg.Model.utilityViewModel |
| | | { |
| | | /// <summary> |
| | | /// 川印权限模型 |
| | | /// </summary> |
| | | public class ECTESTOAPermissions |
| | | { |
| | | /// <summary> |
| | | /// 是否是司机 |
| | | /// </summary> |
| | | |
| | | public bool BF_IsDriver { get; set; }=false; |
| | | |
| | | /// <summary> |
| | | /// 是否是配送管理员 |
| | | /// </summary> |
| | | |
| | | public bool BF_IsDeliverManage { get; set; } = false; |
| | | |
| | | /// <summary> |
| | | /// 是否为报销主管 |
| | | /// </summary> |
| | | |
| | | public bool BF_IsBaoxiaozhuguan { get; set; } =false; |
| | | |
| | | /// <summary> |
| | | /// 是否为报销经理 |
| | | /// </summary> |
| | | public bool BF_Isbaoxiaojingli { get; set; } = false; |
| | | /// <summary> |
| | | /// 财务 |
| | | /// </summary> |
| | | public bool BF_IsCaiWu{ get; set; } = false; |
| | | /// <summary> |
| | | /// 员工ID |
| | | /// </summary> |
| | | public Guid? MemberId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 员工KeyID |
| | | /// </summary> |
| | | public int KeyId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 员工姓名 |
| | | /// </summary> |
| | | public string? Name { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 员工电话 |
| | | /// </summary> |
| | | public string? MobieNum { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 职务名称 |
| | | /// </summary> |
| | | public string? SM_Post { get; set; } |
| | | /// <summary> |
| | | /// 部门名称 |
| | | /// </summary> |
| | | public string? DepartmentName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 部门名称 |
| | | /// </summary> |
| | | public int ? DepartId { get; set; } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | <ItemGroup> |
| | | <ProjectReference Include="..\cylsg.Application\cylsg.Application.csproj" /> |
| | | <ProjectReference Include="..\cylsg.Authorization\cylsg.Authorization.csproj" /> |
| | | <ProjectReference Include="..\ECTESTOA\ECTESTOA.csproj" /> |
| | | <ProjectReference Include="..\EzInitqMessageDef\EzInitqMessageDef.csproj" /> |
| | | <ProjectReference Include="..\EzInitQ\EzInitQ.csproj" /> |
| | | <ProjectReference Include="..\EzJob\EzJob.csproj" /> |
| | |
| | | "FileName": "application.log", // 日志文件完整路径或文件名,推荐 .log 作为拓展名 |
| | | "Append": true, // 追加到已存在日志文件或覆盖它们 |
| | | "MinimumLevel": "Information", // 最低日志记录级别 |
| | | "FileSizeLimitBytes": 0, // 控制每一个日志文件最大存储大小,单位是 B,也就是 1024 才等于 1KB,默认无限制,如果指定了该值,那么日志文件大小超出了该配置就会创建新的日志文件,新创建的日志文件命名规则:文件名+[递增序号].log |
| | | "MaxRollingFiles": 0 // 控制最大创建的日志文件数量,默认无限制,配合 FileSizeLimitBytes 使用,如果指定了该值,那么超出该值将从最初日志文件中从头写入覆盖 |
| | | "FileSizeLimitBytes": 1024, // 控制每一个日志文件最大存储大小,单位是 B,也就是 1024 才等于 1KB,默认无限制,如果指定了该值,那么日志文件大小超出了该配置就会创建新的日志文件,新创建的日志文件命名规则:文件名+[递增序号].log |
| | | "MaxRollingFiles": 10 // 控制最大创建的日志文件数量,默认无限制,配合 FileSizeLimitBytes 使用,如果指定了该值,那么超出该值将从最初日志文件中从头写入覆盖 |
| | | } |
| | | }, |
| | | "AllowedHosts": "*", |
| | |
| | | "DbType": "SqlServer", // "SqlServer" ,mysql, |
| | | "IsAutoCloseConnection": true |
| | | } |
| | | , |
| | | |
| | | { |
| | | //"ConnectionString": "Data Source=./Furion.db", |
| | | //"DbType": "Sqlite", |
| | | //"IsAutoCloseConnection": true |
| | | |
| | | |
| | | "ConnectionString": "Server=192.168.0.31;Database=ECTEST; MultipleActiveResultSets=true;pooling=true;min pool size=5;max pool size=32767;connect timeout=20;Encrypt=True;TrustServerCertificate=True;User Id=SA;Password=123456;", |
| | | "DbType": "SqlServer", // "SqlServer" ,mysql, |
| | | "IsAutoCloseConnection": true, |
| | | "ConfigId": "ECTESTOADB" |
| | | } |
| | | |
| | | ], |
| | | |
| | |
| | | "ValidateAudience": true, // 是否验证签收方,bool 类型,默认true |
| | | "ValidAudience": "www.51zhengcai.com", // 签收方,string 类型 |
| | | "ValidateLifetime": true, // 是否验证过期时间,bool 类型,默认true,建议true |
| | | "ExpiredTime": 1440, // 过期时间,long 类型,单位分钟,默认20分钟 |
| | | "ExpiredTime": 14400, // 过期时间,long 类型,单位分钟,默认20分钟 |
| | | "ClockSkew": 5, // 过期时间容错值,long 类型,单位秒,默认 5秒 |
| | | "Algorithm": "HS256", // 加密算法,string 类型,默认 HS256 |
| | | "RefreshTokenExpires": 1440 //分钟 1天 1440分钟 |
| | | "RefreshTokenExpires": 14400 //分钟 1天 1440分钟 |
| | | } |
| | | } |
| | |
| | | |
| | | <ItemGroup> |
| | | <ProjectReference Include="..\cylsg.Web.Core\cylsg.Web.Core.csproj" /> |
| | | <ProjectReference Include="..\ECTESTOA\ECTESTOA.csproj" /> |
| | | <ProjectReference Include="..\EzWechat\EzWechat.csproj" /> |
| | | </ItemGroup> |
| | | |
| | |
| | | EndProject |
| | | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cylsg.Filter", "Cylsg.Filter\Cylsg.Filter.csproj", "{2A3AF5AA-E3BE-4C98-A3A7-185ED6F938FE}" |
| | | EndProject |
| | | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EzJob", "EzJob\EzJob.csproj", "{EB4CED81-7245-4477-9541-8167BD522CC6}" |
| | | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EzJob", "EzJob\EzJob.csproj", "{EB4CED81-7245-4477-9541-8167BD522CC6}" |
| | | EndProject |
| | | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ECTESTOA", "ECTESTOA\ECTESTOA.csproj", "{86D67CBF-50F3-470E-A11F-CAA3DF491995}" |
| | | EndProject |
| | | Global |
| | | GlobalSection(SolutionConfigurationPlatforms) = preSolution |
| | |
| | | {EB4CED81-7245-4477-9541-8167BD522CC6}.Debug|Any CPU.Build.0 = Debug|Any CPU |
| | | {EB4CED81-7245-4477-9541-8167BD522CC6}.Release|Any CPU.ActiveCfg = Release|Any CPU |
| | | {EB4CED81-7245-4477-9541-8167BD522CC6}.Release|Any CPU.Build.0 = Release|Any CPU |
| | | {86D67CBF-50F3-470E-A11F-CAA3DF491995}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
| | | {86D67CBF-50F3-470E-A11F-CAA3DF491995}.Debug|Any CPU.Build.0 = Debug|Any CPU |
| | | {86D67CBF-50F3-470E-A11F-CAA3DF491995}.Release|Any CPU.ActiveCfg = Release|Any CPU |
| | | {86D67CBF-50F3-470E-A11F-CAA3DF491995}.Release|Any CPU.Build.0 = Release|Any CPU |
| | | EndGlobalSection |
| | | GlobalSection(SolutionProperties) = preSolution |
| | | HideSolutionNode = FALSE |