| | |
| | | } |
| | | |
| | | /// <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; |
| | | |
| | | |
| | | |
| | | |
| | | await _SugarClient.Updateable(item).ExecuteCommandAsync(); |
| | | |
| | | } |
| | | await _SugarClient.AsTenant().CommitTranAsync(); |
| | | return true; |
| | | } |
| | | catch (Exception) |
| | | { |
| | | await _SugarClient.AsTenant().RollbackTranAsync(); |
| | | throw; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 判断是否具有权限 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | |
| | | 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; } |
| | | } |
| | | } |
| | | |