New file |
| | |
| | | using cylsg.Model.ECTEModel; |
| | | using cylsg.Model.utilityViewModel; |
| | | using cylsg.utility.Extend; |
| | | 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.ApprovalStatus != PlanStatusType.Uncommitted); |
| | | 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("报销单已经批复完毕"); |
| | | if (data.ApprovalStatus == PlanStatusType.Uncommitted) |
| | | { |
| | | 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(); |
| | | } |
| | | if(!(param.RewardResult?.isPureNum()==true)) |
| | | { |
| | | throw Oops.Oh("科目选择错误"); |
| | | } |
| | | //审批时可修改内容 |
| | | data.RewardResult = param.RewardResult; |
| | | data.PlanContent = param.PlanContent; |
| | | if(param.PlanMoney>0&¶m.PlanMoney<=data.PlanMoney) |
| | | data.PlanMoney = param.PlanMoney; |
| | | |
| | | |
| | | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | |