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 EzCoreNet.Redis;
|
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 readonly IEzCoreNetRedisService _ezCoreNetRedisService;
|
|
private ECTESTOAPermissions Permissions;
|
public CyOSStaffController(IOAServices oaServices, ISqlSugarClient sugarClient,IEzCoreNetRedisService netRedisService)
|
{
|
_OAServices = oaServices;
|
_SugarClient = sugarClient.AsTenant().GetConnection("ECTESTOADB");
|
_ezCoreNetRedisService = netRedisService;
|
}
|
|
/// <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;
|
|
}
|
}
|
if (pram.ApprovalStatus != PlanStatusType.Uncommitted)
|
pram.EvaluationContent = _ezCoreNetRedisService.GetYYYMMddAnd4sn();
|
else
|
pram.EvaluationContent = "";
|
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 = "";
|
if(pram.PlanStatus!= PlanStatusType.Uncommitted)
|
{
|
pram.PlanStatus = PlanStatusType.unApproval;
|
}
|
|
|
pram.ApprovalStaffId = Guid.Empty;
|
pram.ApprovalTime=DateTime.Now;
|
pram.ApprovalContent = "";
|
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.Uncommitted)
|
{
|
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 选择错误,或者失效");
|
|
}
|
|
}
|
|
if(data.ApprovalStatus== PlanStatusType.Uncommitted&&pram.ApprovalStatus== PlanStatusType.unApproval)
|
{
|
//重新提交必须修改新的单号
|
data.EvaluationContent = _ezCoreNetRedisService.GetYYYMMddAnd4sn();
|
data.ApprovalStatus = pram.ApprovalStatus;
|
}
|
|
|
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;
|
|
}
|
}
|