Commit 28bf32c3 by 钟博

划拨申请,审核

parent 986568cb
......@@ -34,6 +34,7 @@ public class AllotController : Controller
private ILogger<AllotController> _logger;
private ClaimService _claim;
private LogManageService _logManageService;
private readonly CostTransferService costTransferService;
private IBackgroundTaskQueue _backgroundTaskQueue;
private IServiceScopeFactory _serviceScopeFactory;
......@@ -45,7 +46,8 @@ public class AllotController : Controller
IBackgroundTaskQueue backgroundTaskQueue,
IServiceScopeFactory serviceScopeFactory,
ClaimService claim,
LogManageService logManageService)
LogManageService logManageService,
CostTransferService costTransferService)
{
_allotService = allotService;
_resultComputeService = resultComputeService;
......@@ -53,6 +55,7 @@ public class AllotController : Controller
_evn = evn;
_claim = claim;
_logManageService = logManageService;
this.costTransferService = costTransferService;
_configService = configService;
_backgroundTaskQueue = backgroundTaskQueue;
_serviceScopeFactory = serviceScopeFactory;
......@@ -96,6 +99,8 @@ public ApiResponse Insert([FromBody] AllotRequest request)
var userId = _claim.GetUserId();
var result = _allotService.InsertAllot(request, userId);
_configService.Copy(result);
//带出上月划拨记录
costTransferService.IntoLastTiemData(request.HospitalId.Value, request.ID);
return new ApiResponse(ResponseType.OK, result);
}
......@@ -421,6 +426,8 @@ public ApiResponse Issued([FromBody] AllotRequest request)
_allotService.UpdateAllotStates(allot.ID, (int)AllotStates.GenerateSucceed, EnumHelper.GetDescription(AllotStates.GenerateSucceed));
// 科室下发
_resultComputeService.GenerateSecondAllot(allot);
//绩效划拨,下发驳回
costTransferService.RejectedApplicat(allot.ID);
return new ApiResponse(ResponseType.OK);
}
......
using Microsoft.AspNetCore.Mvc;
using Performance.DtoModels;
using Performance.EntityModels;
using Performance.Services;
using System;
using System.Collections.Generic;
using System.Linq;
......@@ -7,11 +9,104 @@
namespace Performance.Api.Controllers
{
[Route("api/costtransfer")]
[Route("api/[controller]")]
public class CostTransferController : Controller
{
public ApiResponse SubmitApplications()
private readonly CostTransferService costTransferService;
private readonly ClaimService claim;
private readonly RoleService roleService;
private readonly UserService userService;
public CostTransferController(
CostTransferService costTransferService,
ClaimService claim,
RoleService roleService,
UserService userService)
{
this.costTransferService = costTransferService;
this.claim = claim;
this.roleService = roleService;
this.userService = userService;
}
/// <summary>
/// 申请划拨
/// </summary>
/// <returns></returns>
[Route("submit")]
[HttpPost]
public ApiResponse SubmitApplications([FromBody] CostTransferRequest request)
{
if (request.AllotId <= 0)
return new ApiResponse(ResponseType.ParameterError, "参数AllotId无效!");
var result = costTransferService.Applicat(request);
return new ApiResponse(ResponseType.OK, result);
}
/// <summary>
///
/// </summary>
/// <returns></returns>
[Route("common/{hospitalId}/allot/{allotId}")]
[HttpPost]
public ApiResponse Common(int hospitalId, int allotId)
{
if (hospitalId <= 0)
return new ApiResponse(ResponseType.ParameterError, "参数HospitalId无效!");
if (allotId <= 0)
return new ApiResponse(ResponseType.ParameterError, "参数AllotId无效!");
var userid = claim.GetUserId();
var user = userService.GetUser(userid);
var result = costTransferService.Common(allotId, hospitalId);
result.deparment = user.Department ?? "";
return new ApiResponse(ResponseType.OK, result);
}
/// <summary>
/// 审核列表
/// </summary>
/// <param name="allotId"></param>
/// <returns></returns>
[Route("auditlist/{allotId}")]
[HttpPost]
public ApiResponse AuditList(int allotId)
{
if (allotId <= 0)
return new ApiResponse(ResponseType.ParameterError, "参数AllotId无效!");
var userid = claim.GetUserId();
var user = userService.GetUser(userid);
var role = roleService.GetARole(user.UserID);
var result = costTransferService.GetAuditList(allotId, role.Type.Value, user.Department);
return new ApiResponse(ResponseType.OK, result);
}
/// <summary>
/// 划拨审核
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("costtransferaudit")]
[HttpPost]
public ApiResponse Audit([FromBody] CostTransferUpdateRequest request)
{
if (request.AllotId <= 0)
return new ApiResponse(ResponseType.ParameterError, "参数AllotId无效!");
var userid = claim.GetUserId();
var user = userService.GetUser(userid);
var role = roleService.GetARole(user.UserID);
var roleArr = new[] { 1, 2, 5 };
if (roleArr.Contains(role.Type.Value))
costTransferService.CostTransferAudit(request, true);
else
costTransferService.CostTransferAudit(request, false);
return new ApiResponse(ResponseType.OK);
}
}
......
......@@ -10,7 +10,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>bin\Release\netcoreapp2.2\publish\</PublishUrl>
<PublishUrl>D:\publish\jx.suvalue.com2</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish />
<TargetFramework>netcoreapp2.2</TargetFramework>
......
......@@ -697,6 +697,32 @@
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.CostTransferController.SubmitApplications(Performance.DtoModels.CostTransferRequest)">
<summary>
申请划拨
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.CostTransferController.Common(System.Int32,System.Int32)">
<summary>
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.CostTransferController.AuditList(System.Int32)">
<summary>
审核列表
</summary>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.CostTransferController.Audit(Performance.DtoModels.CostTransferUpdateRequest)">
<summary>
划拨审核
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.GetEmployeeList(Performance.DtoModels.EmployeeRequest)">
<summary>
获取人员列表
......
......@@ -158,11 +158,14 @@
<summary> 归档 </summary>
</member>
<member name="F:Performance.DtoModels.AllotStates.Wait">
<summary> 归档 </summary>
<summary> 等待 </summary>
</member>
<member name="F:Performance.DtoModels.AllotStates.GenerateAccomplish">
<summary> 绩效结果解析成功 </summary>
</member>
<member name="F:Performance.DtoModels.AllotStates.Issue">
<summary> 下发 </summary>
</member>
<member name="F:Performance.DtoModels.AgWorkloadType.SingleAwards">
<summary>
单项奖励
......
......@@ -1181,7 +1181,7 @@
</member>
<member name="P:Performance.EntityModels.ag_secondallot.SubmitType">
<summary>
提交类型 1 使用模板 2 其他类型数据
提交类型 1使用模板 2 其他类型数据
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.SubmitTime">
......@@ -1381,7 +1381,7 @@
</member>
<member name="P:Performance.EntityModels.ag_workload.WorkTypeId">
<summary>
1、单项奖励 2、工作量占比 ..(自定义占比)
-1、单项奖励 0、工作量占比 ..(自定义占比)
</summary>
</member>
<member name="T:Performance.EntityModels.ag_workload_source">
......@@ -1431,12 +1431,12 @@
</member>
<member name="P:Performance.EntityModels.ag_workload_source.WorkTypeId">
<summary>
1、单项奖励 2、工作量占比 ..(自定义占比)
-1、单项奖励 0、工作量占比 ..(自定义占比)
</summary>
</member>
<member name="T:Performance.EntityModels.ag_workload_type">
<summary>
二次绩效工作量绩效分类
</summary>
</member>
<member name="P:Performance.EntityModels.ag_workload_type.Id">
......@@ -1689,6 +1689,41 @@
参数值
</summary>
</member>
<member name="T:Performance.EntityModels.cof_alias">
<summary>
别名配置
</summary>
</member>
<member name="P:Performance.EntityModels.cof_alias.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_alias.Route">
<summary>
前端路由地址
</summary>
</member>
<member name="P:Performance.EntityModels.cof_alias.Name">
<summary>
描述名称
</summary>
</member>
<member name="P:Performance.EntityModels.cof_alias.OriginalName">
<summary>
原始名
</summary>
</member>
<member name="P:Performance.EntityModels.cof_alias.Alias">
<summary>
别名
</summary>
</member>
<member name="P:Performance.EntityModels.cof_alias.States">
<summary>
状态 1 可用 0 禁用
</summary>
</member>
<member name="T:Performance.EntityModels.cof_check">
<summary>
上传excel文件校验配置
......@@ -2194,6 +2229,111 @@
是否附带上次绩效 0 附带 1 不附带
</summary>
</member>
<member name="T:Performance.EntityModels.cost_transfer">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer.AllotId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer.ApplicantUnitType">
<summary>
申请者核算单元类型
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer.ApplicantDepartment">
<summary>
申请者科室
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer.AdoptedUnitType">
<summary>
审核者核算单元类型
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer.AdoptedDepartment">
<summary>
审核者科室
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer.Status">
<summary>
0 未审核 1 部分审核 2 全部审核 3 未含有划拨明细
</summary>
</member>
<member name="T:Performance.EntityModels.cost_transfer_item">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer_item.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer_item.TransferId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer_item.Source">
<summary>
来源,sheet名称
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer_item.Category">
<summary>
费用类型
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer_item.Amount">
<summary>
金额
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer_item.Ratio">
<summary>
分割比例
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer_item.CalculationAmount">
<summary>
实际金额
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer_item.IsUseRatio">
<summary>
是否使用分割比例
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer_item.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer_item.Status">
<summary>
0 默认 1 通过 2 驳回 3 下发驳回
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer_item.AdminStatus">
<summary>
0 默认 1 通过 2 驳回 3 下发驳回
</summary>
</member>
<member name="P:Performance.EntityModels.cost_transfer_item.IsWrited">
<summary>
数据是否被写入
</summary>
</member>
<member name="T:Performance.EntityModels.cust_script">
<summary>
自定义导出
......@@ -2860,19 +3000,19 @@
</summary>
</member>
<member name="T:Performance.EntityModels.his_script">
<summary>
<summary>
</summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_script.Id">
<summary>
<summary>
</summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_script.HospitalId">
<summary>
<summary>
</summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_script.SourceType">
<summary>
......@@ -4416,7 +4556,7 @@
</member>
<member name="T:Performance.EntityModels.per_apr_amount_hide">
<summary>
医院其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.per_apr_amount_hide.Id">
......@@ -4944,24 +5084,24 @@
医院Id
</summary>
</member>
<member name="P:Performance.EntityModels.per_dept_dic.CreateTime">
<member name="P:Performance.EntityModels.per_dept_dic.IsVerify">
<summary>
0 未通过验证 1 通过验证
</summary>
</member>
<member name="P:Performance.EntityModels.per_dept_dic.CreateUser">
<member name="P:Performance.EntityModels.per_dept_dic.VerifyMessage">
<summary>
验证失败描述
</summary>
</member>
<member name="P:Performance.EntityModels.per_dept_dic.IsVerify">
<member name="P:Performance.EntityModels.per_dept_dic.CreateTime">
<summary>
0 未通过验证 1 通过验证
</summary>
</member>
<member name="P:Performance.EntityModels.per_dept_dic.VerifyMessage">
<member name="P:Performance.EntityModels.per_dept_dic.CreateUser">
<summary>
验证失败描述
</summary>
</member>
<member name="T:Performance.EntityModels.per_employee">
......@@ -5026,7 +5166,7 @@
</member>
<member name="P:Performance.EntityModels.per_employee.UnitType">
<summary>
核算单元类别
人员类别
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee.Attendance">
......@@ -5079,24 +5219,24 @@
备注
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee.CreateTime">
<member name="P:Performance.EntityModels.per_employee.IsVerify">
<summary>
0 未通过验证 1 通过验证
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee.CreateUser">
<member name="P:Performance.EntityModels.per_employee.VerifyMessage">
<summary>
验证失败描述
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee.IsVerify">
<member name="P:Performance.EntityModels.per_employee.CreateTime">
<summary>
0 未通过验证 1 通过验证
</summary>
</member>
<member name="P:Performance.EntityModels.per_employee.VerifyMessage">
<member name="P:Performance.EntityModels.per_employee.CreateUser">
<summary>
验证失败描述
</summary>
</member>
<member name="T:Performance.EntityModels.per_first">
......
......@@ -74,12 +74,15 @@ public enum AllotStates
/// <summary> 归档 </summary>
[Description("归档")]
Archive = 8,
/// <summary> 归档 </summary>
/// <summary> 等待 </summary>
[Description("等待")]
Wait = 9,
/// <summary> 绩效结果解析成功 </summary>
[Description("数据验证通过")]
GenerateAccomplish = 10,
/// <summary> 下发 </summary>
[Description("下发")]
Issue = 11
}
public enum AgWorkloadType
......
......@@ -27,6 +27,10 @@ public class CostTransferUpdateRequest : CostTransferRequest
{
public int TransferId { get; set; }
public int[] TransferItemId { get; set; }
public int Status { get; set; }
public new List<cost_transfer_item> Items { get; set; }
}
}
using Performance.EntityModels;
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class CostTransferResponse
{
public int Id { get; set; }
public string AdoptedDepartment { get; set; }
public string AdoptedUnitType { get; set; }
public string ApplicantDepartment { get; set; }
public string ApplicantUnitType { get; set; }
public string Source { get; set; }
public string Category { get; set; }
public Nullable<decimal> Amount { get; set; }
public Nullable<decimal> Ratio { get; set; }
public Nullable<decimal> CalculationAmount { get; set; }
public string Remark { get; set; }
public int Status { get; set; }
public int AdminStatus { get; set; }
//public List<TransferItemResponse> costTransferItem { get; set; }
}
public class CommonResponse
{
public string deparment { get; set; }
public string unitType { get; set; }
public IEnumerable<TitleValue> drugType { get; set; }
public IEnumerable<TitleValue> sheets { get; set; }
//public List<cof_accounting> accounting { get; set; }
public IEnumerable<TitleValue> dept { get; set; }
}
}
......@@ -92,6 +92,10 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public virtual DbSet<collect_data> collect_data { get; set; }
/// <summary> </summary>
public virtual DbSet<collect_permission> collect_permission { get; set; }
public virtual DbSet<cost_transfer> cost_transfer { get; set; }
public virtual DbSet<cost_transfer_item> cost_transfer_item { get; set; }
/// <summary> 自定义导出 </summary>
public virtual DbSet<cust_script> cust_script { get; set; }
/// <summary> </summary>
......
......@@ -67,6 +67,10 @@ public class cost_transfer_item
public int Status { get; set; }
/// <summary>
/// 0 默认 1 通过 2 驳回 3 下发驳回
/// </summary>
public int AdminStatus { get; set; }
/// <summary>
/// 数据是否被写入
/// </summary>
public int IsWrited { get; set; }
......
using Microsoft.EntityFrameworkCore.Internal;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using Performance.DtoModels;
using Performance.DtoModels.AppSettings;
using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Repository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
namespace Performance.Services
{
public class CostTransferService : IAutoInjection
{
private readonly ILogger<CostTransferService> logger;
private readonly Application application;
private readonly PerforCosttransferRepository costtransferRepository;
private readonly PerforCosttransferitemRepository costtransferitemRepository;
private readonly PerforCofdrugtypeRepository cofdrugtypeRepository;
private readonly PerforPersheetRepository persheetRepository;
private readonly PerforCofaccountingRepository cofaccountingRepository;
private readonly PerforPerdeptdicRepository perdeptdicRepository;
private readonly PerforPerallotRepository perallotRepository;
public CostTransferService(
ILogger<CostTransferService> logger,
IOptions<Application> application,
PerforCosttransferRepository costtransferRepository,
PerforCosttransferitemRepository costtransferitemRepository
PerforCosttransferitemRepository costtransferitemRepository,
PerforCofdrugtypeRepository cofdrugtypeRepository,
PerforPersheetRepository persheetRepository,
PerforCofaccountingRepository cofaccountingRepository,
PerforPerdeptdicRepository perdeptdicRepository,
PerforPerallotRepository perallotRepository
)
{
this.logger = logger;
this.application = application.Value;
this.costtransferRepository = costtransferRepository;
this.costtransferitemRepository = costtransferitemRepository;
this.cofdrugtypeRepository = cofdrugtypeRepository;
this.persheetRepository = persheetRepository;
this.cofaccountingRepository = cofaccountingRepository;
this.perdeptdicRepository = perdeptdicRepository;
this.perallotRepository = perallotRepository;
}
/// <summary>
/// 审核页面
/// </summary>
/// <param name="allotId"></param>
/// <param name="Department"></param>
/// <returns></returns>
public List<CostTransferResponse> GetAuditList(int allotId, int roleType, string Department)
{
var roleTypes = new[] { 1, 2, 5 }.Contains(roleType);
Expression<Func<cof_accounting, bool>> exp = t => t.AllotId == allotId && t.AccountingUnit == Department;
if (roleType == application.DirectorRole)
exp = exp.And(t => new List<string> { UnitType.医生组.ToString(), UnitType.医技组.ToString() }.Contains(t.UnitType));
else if (roleType == application.NurseRole)
exp = exp.And(t => t.UnitType == UnitType.护理组.ToString());
else if (roleType == application.SpecialRole)
exp = exp.And(t => t.UnitType == UnitType.特殊核算组.ToString());
else if (roleType == application.OfficeRole)
exp = exp.And(t => t.UnitType == UnitType.行政后勤.ToString());
var account = cofaccountingRepository.GetEntity(exp);
Expression<Func<cost_transfer, bool>> expCost = t => t.AllotId == allotId ;
if (roleType == application.DirectorRole)
exp = exp.And(t => new List<string> { UnitType.医生组.ToString(), UnitType.医技组.ToString() }.Contains(t.UnitType));
else if (roleType == application.NurseRole)
exp = exp.And(t => t.UnitType == UnitType.护理组.ToString());
else if (roleType == application.SpecialRole)
exp = exp.And(t => t.UnitType == UnitType.特殊核算组.ToString());
else if (roleType == application.OfficeRole)
exp = exp.And(t => t.UnitType == UnitType.行政后勤.ToString());
var costTransfers = costtransferRepository.GetEntities(expCost);
if (!roleTypes)
costTransfers = costTransfers?.FindAll(t => t.AdoptedDepartment == Department);
if (costTransfers == null || !costTransfers.Any())
return new List<CostTransferResponse>();
var response = new List<CostTransferResponse>();
var costsId = costTransfers?.Select(w => w.Id);
//var transfer = costTransfers.FirstOrDefault();
var costItem = costtransferitemRepository.GetEntities(t => costsId.Contains(t.TransferId));
//如果是绩效办显示已经被科室同意的数据
if (roleTypes)
costItem = costItem?.FindAll(t => t.Status == 1);
foreach (var item in costTransfers)
{
var cost = costItem.Where(t=>t.TransferId==item.Id)?.Select(t => new CostTransferResponse
{
Id=t.Id,
AdoptedDepartment = roleTypes ? item.AdoptedDepartment : account?.AccountingUnit,
AdoptedUnitType = roleTypes ? item.AdoptedUnitType : account?.UnitType,
ApplicantDepartment = item.ApplicantDepartment,
ApplicantUnitType = item.ApplicantUnitType,
Source = t.Source,
Category = t.Category,
Amount = t.Amount,
Ratio = t.Ratio,
CalculationAmount = t.CalculationAmount,
Status = t.Status,
AdminStatus = t.AdminStatus,
Remark = t.Remark
}).ToList();
response.AddRange(cost);
}
return response;
}
/// <summary>
/// 申请页面下拉选项
/// </summary>
/// <param name="allotId"></param>
/// <param name="hospitalId"></param>
/// <returns></returns>
public CommonResponse Common(int allotId, int hospitalId)
{
var common = new CommonResponse();
var sheetList = new TitleValue[]
{
new TitleValue{ Title = "1.0.1 额外收入", Value = "1.0.1 额外收入" },
new TitleValue{ Title = "1.1.1 门诊开单收入", Value = "1.1.1 门诊开单收入" },
new TitleValue{ Title = "1.1.2 门诊执行收入", Value = "1.1.2 门诊执行收入" },
new TitleValue{ Title = "1.2.1 住院开单收入", Value = "1.2.1 住院开单收入" },
new TitleValue{ Title = "1.2.2 住院执行收入", Value = "1.2.2 住院执行收入" },
new TitleValue{ Title = "2.1 成本支出统计表", Value = "2.1 成本支出统计表" },
new TitleValue{ Title = "3.1 医生组工作量绩效测算表", Value = "3.1 医生组工作量绩效测算表" },
new TitleValue{ Title = "3.2 护理组工作量绩效测算表", Value = "3.2 护理组工作量绩效测算表" },
};
var drugType = cofdrugtypeRepository.GetEntities(t => t.HospitalId == hospitalId && t.AllotID == allotId)
?.Select(t => new TitleValue { Title = t.Charge, Value = t.Charge }).ToDistinct();
var sheet = persheetRepository.GetEntities(t => t.AllotID == allotId)
?.Select(t => new TitleValue { Title = t.SheetName, Value = t.SheetName }).ToDistinct();
//var account = cofaccountingRepository.GetEntities(t => t.AllotId == allotId);
var dept = perdeptdicRepository.GetEntities(t => t.HospitalId == hospitalId)
?.Select(t => new TitleValue { Title = t.AccountingUnit, Value = t.AccountingUnit }).ToDistinct();
common.drugType = drugType;
common.sheets = sheet ?? sheetList.ToList();
//common.accounting = account ?? new List<cof_accounting>();
common.dept = dept;
return common;
}
/// <summary>
......@@ -43,6 +177,14 @@ public bool Applicat(CostTransferRequest request)
if (string.IsNullOrEmpty(request.Adopted.UnitType) || string.IsNullOrEmpty(request.Adopted.Department))
throw new PerformanceException("参数错误,被划拨科室信息缺失");
if (request.Items == null || !request.Items.Any())
throw new PerformanceException("参数错误,申请条目为空");
if(request.Adopted.Department==request.Applicant.Department && request.Adopted.UnitType==request.Applicant.UnitType)
throw new PerformanceException("参数错误,提交科室相同");
var allot = perallotRepository.GetEntity(t => t.ID == request.AllotId);
var allotStatus = new[] { (int)AllotStates.Issue, (int)AllotStates.Archive };
var transfer = new cost_transfer
{
AllotId = request.AllotId,
......@@ -50,27 +192,26 @@ public bool Applicat(CostTransferRequest request)
ApplicantUnitType = request.Applicant.UnitType,
AdoptedDepartment = request.Adopted.Department,
AdoptedUnitType = request.Adopted.UnitType,
Status = (request.Items != null && request.Items.Any()) ? 0 : 3
Status = allotStatus.Contains(allot.States) ? 2 : 0
};
var result = costtransferRepository.Add(transfer);
if (!result)
throw new PerformanceException("提交申请失败,请重试");
if (request.Items == null || !request.Items.Any())
return result;
var items = request.Items.Select(t => new cost_transfer_item
var items = request.Items?.Select(t => new cost_transfer_item
{
TransferId = transfer.Id,
Source = t.Source,
Category = t.Source,
Category = t.Category,
Amount = t.Amount,
Ratio = t.Ratio,
CalculationAmount = t.CalculationAmount,
IsUseRatio = t.IsUseRatio,
Remark = t.Remark,
Status = 0
Status = allotStatus.Contains(allot.States) ? 3 : 0,
AdminStatus = allotStatus.Contains(allot.States) ? 3 : 0
}).ToArray();
result = costtransferitemRepository.AddRange(items);
......@@ -192,9 +333,33 @@ public void DeleteApplicat(int transferId)
/// <summary>
/// 划拨审核
/// </summary>
public void CostTransferAudit()
public bool CostTransferAudit(CostTransferUpdateRequest request, bool isAdmin)
{
var costItems = costtransferitemRepository.GetEntities(t => request.TransferItemId.Contains(t.Id));
var transferId = costItems?.Select(t => t.TransferId).Distinct();
var transfers = costtransferRepository.GetEntities(t => transferId.Contains(t.Id));
if (transfers.Any(t => t.AllotId != request.AllotId)) return false;
if (isAdmin)
{
costItems = costItems?.FindAll(t => t.AdminStatus == 0);
costItems.ForEach(t => t.AdminStatus = request.Status);
}
else
{
costItems = costItems?.FindAll(t => t.Status == 0);
costItems.ForEach(t => t.Status = request.Status);
}
//if (costItems == null || !costItems.Any()) return;
var result = costtransferitemRepository.UpdateRange(costItems.ToArray());
if (result)
foreach (var item in transferId)
{
UpdateCostTransferStatus(item);
}
return result;
}
/// <summary>
......@@ -206,15 +371,89 @@ public void CostTransferAudit()
/// <returns></returns>
public bool RejectedApplicat(int allotId, int transferId = 0, bool issue = false)
{
if (issue)
var costTransfers = costtransferRepository.GetEntities(t => t.AllotId == allotId && (t.Status == 0 || t.Status == 1));
if (costTransfers == null || !costTransfers.Any()) return true;
var costId = costTransfers?.Select(t => t.Id);
var costItems = costtransferitemRepository.GetEntities(t => costId.Contains(t.TransferId));
costItems.ForEach(t =>
{
t.Status = 3;
t.AdminStatus = 3;
});
}
costTransfers.ForEach(t =>
{
t.Status = 2;
});
costtransferitemRepository.UpdateRange(costItems.ToArray());
costtransferRepository.UpdateRange(costTransfers.ToArray());
return false;
}
/// <summary>
/// 带入下个月数据
/// </summary>
/// <param name="hospitalId"></param>
/// <param name="allotId"></param>
public void IntoLastTiemData(int hospitalId,int allotId)
{
var allotList = perallotRepository.GetEntities(w => w.HospitalId == hospitalId)?.OrderBy(s => s.Year).ThenBy(s => s.Month).ToList();
if (allotList == null || !allotList.Any()) throw new PerformanceException("未查询到符合的绩效记录");
var allot = allotList.FirstOrDefault(w => w.ID ==allotId);
if (allot == null) throw new PerformanceException("未查询到符合的绩效记录");
var index = allotList.IndexOf(allot);
if (index == 0) return ;
var prevAllot = allotList[index - 1];
var transfers = costtransferRepository.GetEntities(t => t.AllotId == prevAllot.ID);
if (transfers == null || !transfers.Any()) return;
var transferLastId = transfers.Select(t => t.Id);
var costItems = costtransferitemRepository.GetEntities(t => transferLastId.Contains(t.TransferId) && (t.Status == 3 || t.AdminStatus == 3));
if (costItems == null || !costItems.Any()) return;
var costItemLastId = costItems.Select(t => t.TransferId).Distinct();
var transferLast = transfers.Where(t => costItemLastId.Contains(t.Id));
foreach (var item in transferLast)
{
var newTransfers = new cost_transfer();
newTransfers.AllotId = allotId;
newTransfers.ApplicantDepartment = item.ApplicantDepartment;
newTransfers.ApplicantUnitType = item.ApplicantUnitType;
newTransfers.AdoptedDepartment = item.AdoptedDepartment;
newTransfers.AdoptedUnitType = item.AdoptedUnitType;
newTransfers.Status = 0;
costtransferRepository.Add(newTransfers);
var newCostItem = costItems.Where(t => t.TransferId == item.Id).Select(t => new cost_transfer_item
{
TransferId = newTransfers.Id,
Source = t.Source,
Category = t.Category,
Amount = t.Amount,
Ratio = t.Ratio,
CalculationAmount = t.CalculationAmount,
IsUseRatio = t.IsUseRatio,
Remark = t.Remark,
Status = 0,
AdminStatus = 0,
IsWrited = t.IsWrited
}).ToArray();
costtransferitemRepository.AddRange(newCostItem);
}
}
/// <summary>
/// 修改申请记录的状态
/// </summary>
/// <param name="transferId"></param>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment