using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using MadRunFabric.Common; using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Logging; using Api.SignToken; using DistributionApi.IRepositories; using System.Security.Claims; using Microsoft.Extensions.Configuration; namespace DistributionApi.Controllers.reportmanage { /// /// APP配送报表统计 /// [Authorize] [ApiVersion("6.0")] [Produces("application/json")] [Route("api/[controller]")] public class DistributionAppChartController : BaseController { private readonly ILogger _logger; private readonly IConfiguration _configuration; private readonly ISys_User_AccountRepository _sys_user_accountRepository; private readonly ISignTokenService _signTokenService; private readonly IDistributionAppChartRepository _distributionappchartRepository; public DistributionAppChartController( ILogger logger, IConfiguration configuration, ISys_User_AccountRepository sys_user_accountRepository, ISignTokenService signTokenService, IDistributionAppChartRepository distributionappchartRepository) { _logger = logger; _configuration = configuration; _sys_user_accountRepository = sys_user_accountRepository; _signTokenService = signTokenService; _distributionappchartRepository = distributionappchartRepository; } #region 配送工单统计 /// /// 统计报表 - 工单,满意度,科室 /// /// /// /// /// /// [HttpGet("getworkordercount")] public IActionResult GetWorkOrderCount(string projectid, int datetype = -1) { string nowusercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; //var userstr = _signTokenService.GetUserInfoAsync(nowusercode).Result; //var userinfo = userstr.ToJObject()["data"].ToString().ToObject(); string allprojectrole = _configuration["allprojectrole"]; var userinfos = _sys_user_accountRepository.GetUserInfo(nowusercode, allprojectrole); var userinfo = JsonHelper.JsonToEntity(userinfos.ToJson()); string stime = string.Empty, etime = string.Empty; //获取当天、本周、本月、本年、累计时间 if (datetype != -1) { GetStartEndTime(datetype, out stime, out etime); } var result = _distributionappchartRepository.GetWorkOrderCount(projectid, stime, etime, userinfo); return Success("获取成功", result); } #endregion #region 公示系统 /// /// 各科室下单数量 /// /// /// /// /// /// [HttpGet("getdepartmentwocount")] public IActionResult GetDepartmentWOCount(string projectid, int datetype = -1) { string nowusercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; //var userstr = _signTokenService.GetUserInfoAsync(nowusercode).Result; //var userinfo = userstr.ToJObject()["data"].ToString().ToObject(); string allprojectrole = _configuration["allprojectrole"]; var userinfos = _sys_user_accountRepository.GetUserInfo(nowusercode, allprojectrole); var userinfo = JsonHelper.JsonToEntity(userinfos.ToJson()); string stime = string.Empty, etime = string.Empty; //获取当天、本周、本月、本年、累计时间 if (datetype != -1) { GetStartEndTime(datetype, out stime, out etime); } var result = _distributionappchartRepository.GetDepartmentWOCount(projectid, stime, etime, userinfo); return Success("获取成功", result); } /// /// 配送物品前五 /// /// /// /// /// /// [HttpGet("getgoodswocount")] public IActionResult GetGoodsWOCount(string projectid, int datetype = -1) { string nowusercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; //var userstr = _signTokenService.GetUserInfoAsync(nowusercode).Result; //var userinfo = userstr.ToJObject()["data"].ToString().ToObject(); string allprojectrole = _configuration["allprojectrole"]; var userinfos = _sys_user_accountRepository.GetUserInfo(nowusercode, allprojectrole); var userinfo = JsonHelper.JsonToEntity(userinfos.ToJson()); string stime = string.Empty, etime = string.Empty; //获取当天、本周、本月、本年、累计时间 if (datetype != -1) { GetStartEndTime(datetype, out stime, out etime); } var result = _distributionappchartRepository.GetGoodsWOCount(projectid, stime, etime, userinfo); return Success("获取成功", result); } #endregion /// /// 获取当天、本周、本月、本年、累计时间 /// /// /// /// public void GetStartEndTime(int datetype, out string start, out string end) { start = string.Empty; end = string.Empty; var datenow = DateTime.Now; var datestart = datenow; var dateend = datenow; switch (datetype) { case 0://当天 break; case 1://本周 int n = (int)datenow.DayOfWeek == 0 ? 7 : (int)datenow.DayOfWeek; datestart = datenow.AddDays(1 - n);//本周周一 dateend = datestart.AddDays(6);//本周周日 break; case 2://本月 datestart = datenow.AddDays(1 - datenow.Day); //本月月初 dateend = datestart.AddMonths(1).AddDays(-1); //本月月末 break; case 3://本年 datestart = new DateTime(datenow.Year, 1, 1); //本年年初 dateend = new DateTime(datenow.Year, 12, 31); //本年年末 break; case 4://全部 break; default: break; } if (datetype != 4) { start = datestart.ToString("yyyy-MM-dd"); end = dateend.ToString("yyyy-MM-dd"); } } } }