小飞侠
2025-10-21 595df5dac0a782bfdadab766b4dd62d326b0a383
cylsg/cylsg.Application/CyOS/CyOSStaffController.cs
@@ -7,14 +7,18 @@
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.Runtime.ConstrainedExecution;
using System.Text;
using System.Threading.Tasks;
using TencentCloud.Hunyuan.V20230901.Models;
using TencentCloud.Mrs.V20200910.Models;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.ProductOfflineGetSameCityTemplateResponse.Types.Template.Types;
namespace cylsg.Application.CyOS
{
@@ -22,6 +26,7 @@
    /// 川印普通员工控制器
    /// </summary>
    [Authorize]
    [ApiDescriptionSettings("CYOA")]
    public class CyOSStaffController : IDynamicApiController
    {
        private readonly IOAServices _OAServices;
@@ -42,6 +47,7 @@
        [HttpPost]
        public async Task<WorekPlandto> getplanelist(SearchOaWorekPlan param)
        {
            if(! await CheckRols())
            {
                throw Oops.Oh("没有权限");
@@ -129,7 +135,7 @@
               
                throw Oops.Oh("科目ID RewardResult不能为空");
            }
            OaSubjectSet? kemu = null;
            OaSubjectSet kemu = null;
            try
            {
             var kemuid=     pram.RewardResult.toInt();
@@ -196,12 +202,6 @@
            pram.RewardMoney = 0;
            pram.RewardType = 1;
            pram.Keyid = null;
            await  _SugarClient.InsertNav(pram).Include(x=>x.WorkPlanAttachments).ExecuteCommandAsync();
            return true;
            
@@ -307,7 +307,7 @@
        }
        /// <summary>
        /// 获取详情
        /// 获取财务申请单详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
@@ -350,6 +350,381 @@
        /// <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 && x.ShifouDelivery != 0);//过滤有效
            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&&x.ShifouDelivery!=0).FirstAsync();
        }
        /// <summary>
        /// 获取问题反馈订单
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public async Task<DeliverOderPageRet> GetProblemPlans(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||x.DriverId==Permissions.KeyId);//只看自己 创建的或者是反馈者是自己的
            SearchList = SearchList.And(x => x.ShifouDelivery ==0);//过滤有效
            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.WanjieStatus != null)
            {
                SearchList = SearchList.And(x => x.Wanjiestatus == Param.WanjieStatus);
            }
            //强制增加员工过滤
            RefAsync<int> totle = 0;
            var data = await _SugarClient.Queryable<OA_DeliverPlanPaiche>().Includes(x=>x.ZerenrenInfo).Includes(x=>x.Driver)
                .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> GetProblemPlanInfo(Guid KeyId)
        {
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
            return await _SugarClient.Queryable<OA_DeliverPlanPaiche>().Includes(x=>x.ZerenrenInfo).Includes(x=>x.Driver)
                .Where(x => x.Keyid == KeyId &&  x.ShifouDelivery == 0).FirstAsync();
            //
        }
        /// <summary>
        /// 创建一个用户反馈详单
        /// </summary>
        /// <param name="Param"></param>
        /// <returns></returns>
        [LimitFilter(LimiType = Limttype.User, timespan = 5, ResponseMeg = "请勿在5内重复请求", InCount = 1)]
        public async Task<int> CreatProblemPlan(OA_DeliverPlanPaiche Param)
        {
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
            OA_DeliverPlanPaiche DeliverPlan = new OA_DeliverPlanPaiche()
            {
                Keyid = Guid.NewGuid(),
                FirmId = _OAServices.firmId,
                BuyerId = Param.BuyerId ?? Guid.Empty,
                DeliverTime =DateTime.Now,
                DeliveredTime=DateTime.Now,
                CarId = 0,
                Wentifankui = Param.Wentifankui,
                Xingzhengzhuize = "",
                Yichangchuli = "",
                Zhuyishixiang = "",
                Gongzuokaoping = "",
                Transferstatus = 1,
                Sort =1 ,
                Creater = Param.Creater ?? Permissions.MemberId,
                CreateTime = DateTime.Now,
                DriverId = Param.DriverId,
                SellerOrderId = "",
                Dianhua = "",
                Dizhi = "",
                Remark = Param.Remark,
                BusinessManagerId =Permissions.KeyId,
                Biddingcompany =0,
                ShifouDelivery = 0,
                Lianxiren ="",
                Deliveredstatus = (int)DeliveredType.Undeliver,
                CompanyName = Param.CompanyName,
               Wanjiestatus= WanjieStatusType.UnFinish,
            };
            return await _SugarClient.Insertable(DeliverPlan).ExecuteCommandAsync();
        }
        /// <summary>
        /// 删除 问题反馈
        /// </summary>
        /// <param name="keyid"></param>
        /// <returns></returns>
        [HttpDelete]
        public async Task<int > DeleteProblemPlan(Guid keyid)
        {
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
          var a=await   _SugarClient.Queryable<OA_DeliverPlanPaiche>().Where(x => x.Keyid == keyid && x.ShifouDelivery == 0 && x.Wanjiestatus != WanjieStatusType.Finish&&x.BusinessManagerId==Permissions.KeyId).FirstAsync();
            if(a != null)
            {
             return   await _SugarClient.Deleteable(a).ExecuteCommandAsync();
            }
            throw Oops.Oh("没有权限或者问题已经处理完结");
        }
        /// <summary>
        /// 判断是否具有权限
        /// </summary>
        /// <returns></returns>
@@ -380,7 +755,7 @@
        /// <summary>
        /// 员工姓名
        /// </summary>
        public string? StaffName { get; set; }
        public string StaffName { get; set; }
        /// <summary>
        /// 员工Id
        /// </summary>
@@ -432,4 +807,38 @@
        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; }
    }
}