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;
|
}
|
}
|
}
|