小飞侠
2025-10-21 595df5dac0a782bfdadab766b4dd62d326b0a383
cylsg/cylsg.Application/CyOS/CyOSBaoXiaoJingLiController.cs
@@ -17,6 +17,7 @@
    /// 川印报销经理API
    /// </summary>
    [Authorize]
    [ApiDescriptionSettings("CYOA")]
    public class CyOSBaoXiaoJingLiController: IDynamicApiController
    {
        private readonly IOAServices _OAServices;
@@ -165,7 +166,7 @@
                        ApprovalContent = param.ApprovalContent,
                        ApprovalStatus = param.ApprovalStatus,
                        ApprovalTime = DateTime.Now,
                        ///总经理审批为2
                        //总经理审批为2
                        Buzhou = 2,
                        CreateTime = DateTime.Now,
                        Operator = Permissions.Name,
@@ -195,6 +196,15 @@
                await _SugarClient.Updateable(data).ExecuteCommandAsync();
                //设置设备weixiu状态为拒绝
                var shenpis = await _SugarClient.Queryable<OA_ShebeiWeixiu>().Where(x => x.FukuanShebeiId == data.Keyid).FirstAsync();
                if (shenpis != null)
                {
                    shenpis.ApprovalStatus =(int ) data.ApprovalStatus;
                    await _SugarClient.Updateable(shenpis).ExecuteCommandAsync();
                }
                await _SugarClient.AsTenant().CommitTranAsync();
                return true;
            }
@@ -204,6 +214,108 @@
                await _SugarClient.AsTenant().RollbackTranAsync();
                throw;
            }
        }
        /// <summary>
        /// 批量审批
        /// </summary>
        [HttpPost]
        public async Task<bool> BatchShenPi(BatchShenPiIn param)
        {
            if (param.ApprovalStatus == PlanStatusType.unApproval)
                throw Oops.Oh("不可设置为未审批状态");
            if (!param.OA_WorkPlanIds.Any())
                throw Oops.Oh("未选中任何报销单");
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
            var dataList = await _SugarClient.Queryable<OaWorkPlan>().Includes(x => x.OaWorkPlanShenpis).In(param.OA_WorkPlanIds).ToListAsync();
            if (dataList == null||dataList.Count==0)
                throw Oops.Oh("没有找到报销单");
            try
            {
                await _SugarClient.AsTenant().BeginTranAsync();
                foreach (var item in dataList)
                {
                    if (item.ApprovalStatus != PlanStatusType.unApproval)
                    {
                        await _SugarClient.AsTenant().RollbackTranAsync();
                        throw Oops.Oh($"{item.SentStaff.Name} 的报销单:{item.PlanContent}---已经批复完毕,终止本次操作");
                    }
                    if (item.ApprovalStatus == PlanStatusType.Uncommitted)
                    {
                        await _SugarClient.AsTenant().RollbackTranAsync();
                        throw Oops.Oh($"{item.SentStaff.Name} 的报销单:{item.PlanContent}---已经未提交或者未完成前置审批,终止本次操作");
                    }
                   if( item.OaWorkPlanShenpis.Where(x=>x.Buzhou == 1&&x.ApprovalStatus== PlanStatusType.Yes).Count()<2)
                    {
                        await _SugarClient.AsTenant().RollbackTranAsync();
                        throw Oops.Oh($"{item.SentStaff.Name} 的报销单:{item.PlanContent}---未完成前置审批,终止本次操作");
                    }
                    OaWorkPlanShenpi shenpi = item.OaWorkPlanShenpis.Where(x => x.ApprovalStaffId == Permissions.MemberId && x.Buzhou == 2).FirstOrDefault();
                    if (shenpi != null)
                    {
                        await _SugarClient.AsTenant().RollbackTranAsync();
                        //已经批复
                        throw Oops.Oh($"{item.SentStaff.Name} 的报销单:{item.PlanContent} ----报销单已经批复完毕 不可更改,操作终止");
                    }
                    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 = item.Keyid,
                        };
                        await _SugarClient.Insertable(shenpi).ExecuteCommandAsync();
                    }
                    //审批时可修改内容
                    item.ApprovalTime = DateTime.Now;
                    item.ApprovalStatus = param.ApprovalStatus;
                    item.ApprovalContent = param.ApprovalContent;
                    item.LastUpdateTime = DateTime.Now;
                    //设置设备weixiu状态
                    var shenpis = await _SugarClient.Queryable<OA_ShebeiWeixiu>().Where(x => x.FukuanShebeiId == item.Keyid).FirstAsync();
                    if (shenpis != null)
                    {
                        shenpis.ApprovalStatus = (int)item.ApprovalStatus;
                        await _SugarClient.Updateable(shenpis).ExecuteCommandAsync();
                    }
                    await _SugarClient.Updateable(item).ExecuteCommandAsync();
                }
                await _SugarClient.AsTenant().CommitTranAsync();
                return true;
            }
            catch (Exception)
            {
                await _SugarClient.AsTenant().RollbackTranAsync();
                throw;
            }
        }
@@ -227,5 +339,27 @@
                return false;
        }
    }
    /// <summary>
    /// 批量审批参数
    /// </summary>
    public class BatchShenPiIn
    {
        /// <summary>
        /// 工作计划ID 报销单ID
        /// </summary>
        [Required]
        public int[] OA_WorkPlanIds { get; set; }
        /// <summary>
        /// 审批状态
        /// </summary>
        [Required]
        public PlanStatusType? ApprovalStatus { get; set; }
        /// <summary>
        /// 审批内容
        /// </summary>
        public string ApprovalContent { get; set; }
    }
}