public async Task AddDeviceRepair(DeviceRepairInputDto input) { var userId = ((UserIdentity)User.Identity).UserId; var user = await db.UserDetails.Include(m => m.User).SingleOrDefaultAsync(m => m.Id == userId && !m.IsDelete); if (user == null) { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = "无权操作权限" })) }); } if (!await db.Devices.AnyAsync(m => m.Id == input.DeviceId && !m.IsDelete && !m.IsScrap && m.DepartmentId == user.User.DepartmentId)) { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = "该设备不存在或已报废、无操作权限" })) }); } if (await db.DeviceRepairs.AnyAsync(m => m.DeviceId == input.DeviceId && m.ApprovalType != EApprovalType.Completed)) { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = "该设备已在维修" })) }); } var related = await db.RelatedApprovals.SingleOrDefaultAsync(m => m.RelatedKey == "DeviceRepair"); if (related == null) { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = "设备报修申请未绑定审批流,添加失败" })) }); } var approval = await db.Approvals.Where(m => m.Key == related.ApprovalKey).ToListAsync(); if (approval == null && approval.Count <= 0) { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = related.ApprovalKey + "该审批流不存在,添加失败" })) }); } var data = new DeviceRepair() { Id = IdentityManager.NewId(), ApprovalType = EApprovalType.UnderReview, Desc = input.Desc, DeviceId = input.DeviceId, UserId = userId, IsDelete = false, ApprovalKey = related.ApprovalKey, ApprovalIndex = 0 }; db.DeviceRepairs.Add(data); var userTypeKey = await db.Approvals.SingleOrDefaultAsync(m => m.Deis == 1 && m.Key == data.ApprovalKey); if (userTypeKey != null) { db.DeviceRepairApprovals.Add(new DeviceRepairApproval { Id = IdentityManager.NewId(), DeviceRepairId = data.Id, IsApproval = false, UserTypeKey = userTypeKey.UserTypeKey, ApprovalIndex = 1 }); } else { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = data.ApprovalKey + "审批流异常" })) }); } if (await db.SaveChangesAsync() <= 0) { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = "添加失败" })) }); } }
public async Task UpdateRepairApprovalType(DeviceRepairInputDto input) { var userId = ((UserIdentity)User.Identity).UserId; var token = ((UserIdentity)User.Identity).Token; var userTypeKeys = token.UserTypeKey; //var userId = 42966847102676992; var user = await db.UserDetails.Include(m => m.User).SingleOrDefaultAsync(m => m.Id == userId && !m.IsDelete); if (user == null) { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = "无权操作权限" })) }); } var data = await db.DeviceRepairs.Include(m => m.Device).SingleOrDefaultAsync(m => m.Id == input.DeviceRepairId && !m.IsDelete && !m.Device.IsScrap); if (data == null) { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = "该设备报修信息不存在或已报废、无操作权限" })) }); } if (data.ApprovalType == EApprovalType.Rejected) { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = "该订单已被驳回" })) }); } var approval = await db.Approvals.Where(m => m.Key == data.ApprovalKey).ToListAsync(); if (approval == null && approval.Count <= 0) { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = data.ApprovalKey + "该审批流不存在,请重新提交申请" })) }); } var index = data.ApprovalIndex + 1; var maxIndex = approval.Max(m => m.Deis); var userApproval = approval.SingleOrDefault(m => m.Deis == index); if (userApproval != null && input.ApprovalType == null) { if (!userTypeKeys.Contains(userApproval.UserTypeKey)) { //} //if (userApproval.UserTypeKey != token.UserTypeKey) //{ throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = data.ApprovalKey + "无权操作" })) }); } else { data.ApprovalIndex += 1; data.ApprovalType = EApprovalType.InExecution; //var deviceRepairApproval = await db.DeviceRepairApprovals.SingleOrDefaultAsync(m => m.UserTypeKey == token.UserTypeKey && m.ApprovalIndex == index && m.DeviceRepairId == data.Id); var deviceRepairApproval = await db.DeviceRepairApprovals.SingleOrDefaultAsync(m => userTypeKeys.Contains(m.UserTypeKey) && m.ApprovalIndex == index && m.DeviceRepairId == data.Id); if (deviceRepairApproval == null) { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = data.ApprovalKey + "审批流程异常" })) }); } deviceRepairApproval.IsApproval = true; deviceRepairApproval.UserId = token.UserId; var userTypeKey = approval.SingleOrDefault(m => m.Deis == index + 1); if (userTypeKey != null) { db.DeviceRepairApprovals.Add(new DeviceRepairApproval { Id = IdentityManager.NewId(), DeviceRepairId = data.Id, IsApproval = false, UserTypeKey = userTypeKey.UserTypeKey, ApprovalIndex = index + 1 }); } if (maxIndex == data.ApprovalIndex) { data.ApprovalType = EApprovalType.Reviewed; } } } else if (maxIndex == data.ApprovalIndex && input.ApprovalType == null) { data.ApprovalType = EApprovalType.Reviewed; var device = await db.Devices.SingleOrDefaultAsync(m => m.Id == data.DeviceId && !m.IsDelete && !m.IsRepair); if (device != null) { device.IsRepair = true; } else { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = data.DeviceId + "不存在或已报废" })) }); } } else if (input.ApprovalType != null) { data.ApprovalType = (EApprovalType)input.ApprovalType; if (data.ApprovalType == EApprovalType.Reviewed) { var device = await db.Devices.SingleOrDefaultAsync(m => m.Id == data.DeviceId && !m.IsDelete && !m.IsScrap); if (device != null) { device.IsRepair = true; } else { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = data.DeviceId + "不存在或已报废" })) }); } } else if (data.ApprovalType == EApprovalType.Completed) { var device = await db.Devices.SingleOrDefaultAsync(m => m.Id == data.DeviceId && !m.IsDelete && !m.IsScrap); if (device != null) { device.IsRepair = false; } else { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = data.DeviceId + "不存在或已报废" })) }); } } else if (data.ApprovalType == EApprovalType.No) { var device = await db.Devices.SingleOrDefaultAsync(m => m.Id == data.DeviceId && !m.IsDelete && !m.IsScrap); if (device != null) { device.IsScrap = true; } else { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = data.DeviceId + "不存在或已报废" })) }); } } } if (await db.SaveChangesAsync() <= 0) { throw new HttpResponseException(new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi() { Code = EExceptionType.Implement, Message = "更新失败" })) }); } }