123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using ExcelDataReader;
- using GxPress.Common.Exceptions;
- using GxPress.Common.Page;
- using GxPress.Entity;
- using GxPress.Repository.Interface;
- using GxPress.Request.HumanAffairs;
- using GxPress.Request.User;
- using GxPress.Result.HumanAffairs;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.Extensions.Logging;
- namespace GxPress.Api.AdminControllers
- {
- /// <summary>
- /// 人事数据
- /// </summary>
- [Route("api/admin/human-affairs")]
- [ApiController]
- [Authorize]
- public class AdminHumanAffairsController : ControllerBase
- {
- private readonly ILogger<AdminHumanAffairsController> _logger;
- private readonly IHumanAffairsRepository _repository;
- public AdminHumanAffairsController(ILogger<AdminHumanAffairsController> logger, IHumanAffairsRepository repository)
- {
- _logger = logger;
- _repository = repository;
- }
- /// <summary>
- /// 导入人事数据Excel数据
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("upload")]
- public async Task<bool> FinanceExcelUpload([FromBody] UserExcelUploadRequest request)
- {
- var relativePath = request.ExcelUrl;
- Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
- //获取excel分析
- var stream = System.IO.File.Open("wwwroot/" + relativePath, FileMode.Open, FileAccess.Read);
- IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream);
- var result = reader.AsDataSet();
- var sheet = result.Tables["Sheet1"];
- var error = string.Empty;
- var listHumanAffairs = new List<HumanAffairs>();
- for (int i = 1; i < sheet.Rows.Count; i++) //行
- {
- var humanAffairs = new HumanAffairs();
- if (i == 1)
- continue;
- var numberPeople = sheet.Rows[i][0].ToString().Trim(); //人数
- if (string.IsNullOrEmpty(numberPeople))
- error = "入职/离职人数";
- humanAffairs.NumberPeople = int.Parse(numberPeople);
- var salary = sheet.Rows[i][1].ToString().Trim(); //工资
- if (string.IsNullOrEmpty(salary))
- error = "入职/离职工资元";
- humanAffairs.Salary = int.Parse(salary);
- var humanAffairsType = sheet.Rows[i][2].ToString().Trim(); //工资
- if (string.IsNullOrEmpty(humanAffairsType))
- error = "类型:1:入职 2:离职";
- humanAffairs.HumanAffairsType = int.Parse(humanAffairsType);
- var enteringDateTime = sheet.Rows[i][3].ToString().Trim(); //录入时间
- if (string.IsNullOrEmpty(enteringDateTime))
- error = "录入时间必填";
- humanAffairs.EnteringDateTime = DateTime.Parse(enteringDateTime);
- if (!string.IsNullOrEmpty(error))
- break;
- listHumanAffairs.Add(humanAffairs);
- }
- if (!string.IsNullOrEmpty(error)) throw new BusinessException(error);
- //计算
- var success = await _repository.InsertAsync(listHumanAffairs);
- if (success == false)
- throw new BusinessException("服务器异常");
- return true;
- }
- /// <summary>
- /// 人事数据列表
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("list")]
- public async Task<PagedList<HumanAffairs>> GetPagedList(PageParameter request)
- {
- return await _repository.GetPageListAsync(request);
- }
- /// <summary>
- /// 人事图像
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("chart")]
- public async Task<HumanAffairsResult> GetHumanAffairsChart(HumanAffairsRequest request)
- {
- return await _repository.GetHumanAffairsChartAsync(request);
- }
- }
- }
|