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 Microsoft.CodeAnalysis.CSharp.Syntax;
|
using Models;
|
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]
|
[ApiDescriptionSettings("CYOA")]
|
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;
|
pram.Keyid = null;
|
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.OaWorkPlanShenpis,y=>y.ApprovalStaff).Includes(x=>x.Depart).Includes(x=>x.WorkPlanAttachments).Where(x => x.Keyid == id).FirstAsync();
|
}
|
/// <summary>
|
/// 删除
|
/// </summary>
|
/// <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>
|
/// <param name="Param"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public async Task<AppointmentDeliverRet> GetListAppointmentDeliverList(ApoointmentDeliverSearchParam Param)
|
{
|
|
if (!await CheckRols())
|
{
|
throw Oops.Oh("没有权限");
|
}
|
|
Expression<Func<OA_DeliverTixing, bool>> SearchList = (x) => true;
|
SearchList = SearchList.And(x => x.FirmId == _OAServices.firmId);
|
SearchList = SearchList.And(x => x.Creater == Permissions.MemberId);
|
if (!string.IsNullOrEmpty(Param.Content))
|
{
|
SearchList = SearchList.And(x => x.Remark.Contains(Param.Content));
|
}
|
if (Param.MemberId != null)
|
{
|
SearchList = SearchList.And(x => x.FirmId == Param.MemberId);
|
}
|
if (Param.TimeStart !=null)
|
{
|
SearchList = SearchList.And(x => x.CreateTime> Param.TimeStart);
|
}
|
if (Param.TimeEnd != null)
|
{
|
SearchList = SearchList.And(x => x.CreateTime < Param.TimeEnd.Value.AddDays(1));
|
}
|
|
|
|
if (Param.DeliverState != null)
|
{
|
SearchList = SearchList.And(x => x.Chulistatus == Param.DeliverState);
|
}
|
//强制增加员工过滤
|
RefAsync<int> totle = 0;
|
var data = await _SugarClient.Queryable<OA_DeliverTixing>()
|
.Where(SearchList).OrderByDescending(x => x.ChuliTime).ToPageListAsync(Param.page.PageIndex, Param.page.PageSize, totle);
|
|
Param.page.TotalCount = totle;
|
|
return new AppointmentDeliverRet
|
|
{
|
Data = data,
|
page= Param.page,
|
|
};
|
}
|
|
|
/// <summary>
|
/// 创建一个预约配送
|
/// </summary>
|
/// <param name="Param"></param>
|
/// <returns></returns>
|
[LimitFilter(LimiType = Limttype.User,timespan =5,ResponseMeg ="请勿在5内重复请求",InCount =1)]
|
public async Task<int> CreatAppointmentDeliver(OA_DeliverTixing Param)
|
{
|
if( string.IsNullOrEmpty(Param.Remark))
|
throw Oops.Oh("内容必填");
|
|
if (!await CheckRols())
|
{
|
throw Oops.Oh("没有权限");
|
}
|
|
Param.FirmId = _OAServices.firmId;
|
Param.CreateTime = DateTime.Now;
|
Param.Creater = Permissions.MemberId;
|
Param.Chulistatus = AppointmentDeliverState.unAccept;
|
|
return await _SugarClient.Insertable(Param).ExecuteCommandAsync();
|
}
|
|
/// <summary>
|
/// 修改预约提醒
|
/// </summary>
|
/// <param name="Param"></param>
|
/// <returns></returns>
|
public async Task<int> UpDataAppointmentDeliver(OA_DeliverTixing Param)
|
{
|
if( Param.Chulistatus== AppointmentDeliverState.Accept)
|
throw Oops.Oh("状态不可修改为受理状态");
|
if (!(Param.Keyid>0))
|
throw Oops.Oh("Keyid不能为空");
|
if (string.IsNullOrEmpty(Param.Remark))
|
throw Oops.Oh("内容必填");
|
|
if (!await CheckRols())
|
{
|
throw Oops.Oh("没有权限");
|
}
|
var data= await _SugarClient.Queryable<OA_DeliverTixing>().Where(x => x.Keyid == Param.Keyid&&x.FirmId==_OAServices.firmId&&x.Creater==Permissions.MemberId).FirstAsync();
|
if (data == null)
|
throw Oops.Oh("没找到数据");
|
if(data.Chulistatus == AppointmentDeliverState.Accept)
|
throw Oops.Oh("已受理状态不可修改");
|
if (data.Remark!=Param.Remark)
|
{
|
data.Remark = Param.Remark;
|
data.LastUpdateTime = DateTime.Now;
|
data.Updater = Permissions.MemberId;
|
return await _SugarClient.Updateable(data).ExecuteCommandAsync();
|
}
|
return 1;
|
|
|
}
|
/// <summary>
|
/// 删除预约提醒
|
/// </summary>
|
/// <param name="Param"></param>
|
/// <returns></returns>
|
public async Task<int> DelAppointmentDeliver(OA_DeliverTixing Param)
|
{
|
if (!(Param.Keyid > 0))
|
throw Oops.Oh("Keyid不能为空");
|
|
|
if (!await CheckRols())
|
{
|
throw Oops.Oh("没有权限");
|
}
|
var data = await _SugarClient.Queryable<OA_DeliverTixing>().Where(x => x.Keyid == Param.Keyid && x.Creater == Permissions.MemberId&&x.FirmId==_OAServices.firmId).FirstAsync();
|
if (data == null)
|
throw Oops.Oh("没找到数据或者没有权限");
|
if( data.Chulistatus!= AppointmentDeliverState.unAccept)
|
throw Oops.Oh("已受理状态不可删除");
|
|
return await _SugarClient.Deleteable(data).ExecuteCommandAsync();
|
|
|
}
|
|
/// <summary>
|
/// 获取送货单
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
public async Task<DeliverOderPageRet> GetDeliverPlans(DeliverPlanSearchParam Param)
|
{
|
if (!await CheckRols())
|
{
|
throw Oops.Oh("没有权限");
|
}
|
|
Expression<Func<OA_DeliverPlanPaiche, bool>> SearchList = (x) => true;
|
SearchList = SearchList.And(x => x.FirmId == _OAServices.firmId);
|
SearchList = SearchList.And(x => x.BusinessManagerId == Permissions.KeyId);//只看自己 客户经理是自己
|
SearchList = SearchList.And(x => x.ShifouDelivery !=2);//过滤有效
|
if (Param.DeliverKeyID!=null)
|
{
|
SearchList = SearchList.And(x => x.DriverId == Param.DeliverKeyID);
|
}
|
//客户名称
|
if (!string.IsNullOrEmpty(Param.CorporateClient))
|
{
|
SearchList = SearchList.And(x => x.CompanyName.Contains(Param.CorporateClient));
|
}
|
if (Param.TimeStart != null)
|
{
|
SearchList = SearchList.And(x => x.DeliverTime >= Param.TimeStart.Value.Date);
|
}
|
if (Param.TimeEnd != null)
|
{
|
SearchList = SearchList.And(x => x.DeliverTime < Param.TimeEnd.Value.Date.AddDays(1));
|
}
|
if (Param.DeliveredState != null)
|
{
|
if (Param.DeliveredState != DeliveredType.Delivered)
|
{
|
SearchList = SearchList.And(x => x.Deliveredstatus != DeliveredType.Delivered);
|
}
|
else
|
{
|
SearchList = SearchList.And(x => x.Deliveredstatus == DeliveredType.Delivered);
|
}
|
}
|
|
//强制增加员工过滤
|
RefAsync<int> totle = 0;
|
var data = await _SugarClient.Queryable<OA_DeliverPlanPaiche>().Includes(x => x.Driver).Includes(x=>x.DeliverPlans)
|
.Where(SearchList).OrderByDescending(x => x.CreateTime.Value.Date).OrderBy(x=>SqlFunc.Asc(x.Sort)).ToPageListAsync(Param.page.PageIndex, Param.page.PageSize, totle);
|
|
Param.page.TotalCount = totle;
|
|
|
return new DeliverOderPageRet
|
|
{
|
Data = data,
|
page = Param.page,
|
|
};
|
|
|
}
|
|
/// <summary>
|
/// 获取送货单详情
|
/// </summary>
|
/// <param name="KeyId"></param>
|
/// <returns></returns>
|
public async Task<OA_DeliverPlanPaiche> GetDeliverPlanInfo(Guid KeyId)
|
{
|
|
if (!await CheckRols())
|
{
|
throw Oops.Oh("没有权限");
|
}
|
return await _SugarClient.Queryable<OA_DeliverPlanPaiche>().Includes(x => x.Attachments).Includes(x=>x.Driver).Includes(x=>x.DeliverPlans)
|
.Where(x => x.BusinessManagerId == Permissions.KeyId && x.Keyid == KeyId && x.ShifouDelivery != 2).FirstAsync();
|
|
}
|
|
/// <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;
|
|
}
|
|
/// <summary>
|
/// 配送预约
|
/// </summary>
|
public class AppointmentDeliverRet
|
{
|
/// <summary>
|
/// 数据列表
|
/// </summary>
|
public List<OA_DeliverTixing> Data { get; set; }
|
|
/// <summary>
|
/// 页面参数
|
/// </summary>
|
public PageModel page { get; set; }
|
|
}
|
|
|
/// <summary>
|
/// 配送单数据返回
|
/// </summary>
|
public class DeliverOderPageRet
|
{
|
/// <summary>
|
/// 数据列表
|
/// </summary>
|
public List<OA_DeliverPlanPaiche> Data { get; set; }
|
|
/// <summary>
|
/// 页面参数
|
/// </summary>
|
public PageModel page { get; set; }
|
}
|
}
|