|
|
@@ -1121,7 +1121,7 @@ namespace OASystem.API.Controllers
|
|
|
{
|
|
|
item.RowNumber = index;
|
|
|
//设置参与人
|
|
|
- var userNames = allTaskRelevanceUsers.Where(x => x.TAId == item.Id) .Select(x => x.CnName).ToList();
|
|
|
+ var userNames = allTaskRelevanceUsers.Where(x => x.TAId == item.Id).Select(x => x.CnName).ToList();
|
|
|
item.Participant = string.Join("、", userNames);
|
|
|
|
|
|
//设置任务确认权限
|
|
|
@@ -1417,6 +1417,162 @@ namespace OASystem.API.Controllers
|
|
|
|
|
|
return Ok(JsonView(false, _view.Msg));
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 任务分配 文件下载
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ public IActionResult PostTaskAllFileDownload(TaskAllocationAllFileDownloadDto dto)
|
|
|
+ {
|
|
|
+ if (!DateTime.TryParse(dto.StartTime, out DateTime startTime))
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, "开始时间格式错误!"));
|
|
|
+ }
|
|
|
+ if (!DateTime.TryParse(dto.EndTime, out DateTime endTime))
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, "结束时间格式错误!"));
|
|
|
+ }
|
|
|
+ if (startTime > endTime)
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, "开始时间不能大于结束时间!"));
|
|
|
+ }
|
|
|
+
|
|
|
+ var user_entity = _sqlSugar.Queryable<Sys_Users>()
|
|
|
+ .LeftJoin<Sys_Department>((x, y) => x.DepId == y.Id && y.IsDel == 0)
|
|
|
+ .Where((x, y) => x.IsDel == 0)
|
|
|
+ .Select((x, y) => new { x.Id, x.CnName, y.DepName })
|
|
|
+ .First(x => x.Id == dto.UserId);
|
|
|
+
|
|
|
+ if (user_entity == null)
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, "用户不存在!"));
|
|
|
+ }
|
|
|
+
|
|
|
+ var jw = JsonView(false);
|
|
|
+ jw.Data = new { };
|
|
|
+
|
|
|
+ string sql = string.Format(@"Select
|
|
|
+ *
|
|
|
+ From
|
|
|
+ (
|
|
|
+ Select
|
|
|
+ ta.Id,
|
|
|
+ ta.TaskName,
|
|
|
+ ta.TaskContent,
|
|
|
+ s.Name as 'TaskTypeName',
|
|
|
+ ta.TaskPriority,
|
|
|
+ d.DepName,
|
|
|
+ di.TeamName,
|
|
|
+ CASE [ta].[Status]
|
|
|
+ WHEN 0 THEN '未开始'
|
|
|
+ WHEN 1 THEN '进行中'
|
|
|
+ WHEN 2 THEN '待审核'
|
|
|
+ WHEN 3 THEN '未完成'
|
|
|
+ WHEN 4 THEN '已完成'
|
|
|
+ WHEN 5 THEN '任务终止'
|
|
|
+ ELSE '未知状态'
|
|
|
+ END AS [Status],
|
|
|
+ ta.PredictBeginTime,
|
|
|
+ ta.PredictEndTime,
|
|
|
+ ta.CreateUserId,
|
|
|
+ u.CnName As CreateUserName,
|
|
|
+ ta.CreateTime,
|
|
|
+ ta.Remark,
|
|
|
+ ta.OverTime,
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ STUFF(
|
|
|
+ (
|
|
|
+ Select
|
|
|
+ ',' + u.CnName
|
|
|
+ From
|
|
|
+ Pm_TaskRelevanceUser tra
|
|
|
+ Left Join Sys_Users u On tra.UserId = u.Id
|
|
|
+ Where
|
|
|
+ tra.Isdel = 0
|
|
|
+ And tra.TAId = ta.Id FOR XML PATH('')
|
|
|
+ ),
|
|
|
+ 1,
|
|
|
+ 1,
|
|
|
+ ''
|
|
|
+ )
|
|
|
+ ) As Participant
|
|
|
+ From
|
|
|
+ Pm_TaskAllocation ta
|
|
|
+ Left Join Sys_Department d On ta.DepId = d.Id
|
|
|
+ Left Join Grp_DelegationInfo di On ta.DiId = di.Id
|
|
|
+ Left Join Sys_Users u On ta.CreateUserId = u.Id
|
|
|
+ left join Sys_SetData s on ta.TaskType = s.Id
|
|
|
+ Where
|
|
|
+ ta.IsDel = 0
|
|
|
+ and ta.PredictEndTime >= '{2}'
|
|
|
+ and ta.PredictEndTime < '{3}'
|
|
|
+ ) As temp
|
|
|
+ WHERE
|
|
|
+ [CreateUserName] like '%{0}%'
|
|
|
+ OR [Participant] like '%{1}%'", user_entity.CnName, user_entity.CnName, startTime.ToString("yyyy-MM-dd HH:mm:ss"), endTime.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
+
|
|
|
+ var _view = _sqlSugar
|
|
|
+ .SqlQueryable<TaskFileDown>(sql)
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ if (_view == null || _view.Count == 0)
|
|
|
+ {
|
|
|
+ jw.Msg = "暂无任务数据不存在!";
|
|
|
+ return Ok(jw);
|
|
|
+ }
|
|
|
+
|
|
|
+ var TaskTypeGroup = _view.GroupBy(x => x.TaskTypeName).ToList();
|
|
|
+ var filePath = AppSettingsHelper.Get("ExcelBasePath") + "Template/部门任务模版.xlsx";
|
|
|
+ var title = $"{(startTime.Year == endTime.Year ? $"{startTime.ToString("yyyy")}年" : string.Empty)}{user_entity.DepName}工作记录汇总({startTime.ToString("yyyy年MM月dd日")} - {endTime.ToString("yyyy年MM月dd日")})";
|
|
|
+ WorkbookDesigner designer = new()
|
|
|
+ {
|
|
|
+ Workbook = new Workbook(filePath)
|
|
|
+ };
|
|
|
+
|
|
|
+ foreach (var item in TaskTypeGroup)
|
|
|
+ {
|
|
|
+ var list = item
|
|
|
+ .OrderBy(x => x.NameCount)
|
|
|
+ .ThenBy(x => x.Participant)
|
|
|
+ .ThenBy(x => x.PredictBeginTime)
|
|
|
+ .ToList();
|
|
|
+ list.ForEach(x => x.RowNumber = list.IndexOf(x) + 1);
|
|
|
+
|
|
|
+ if (item.Key == "本职工作")
|
|
|
+ {
|
|
|
+ designer.SetDataSource("bzgz", list);
|
|
|
+ }
|
|
|
+ else if (item.Key == "协助其他部门事项")
|
|
|
+ {
|
|
|
+ designer.SetDataSource("xzqtr", list);
|
|
|
+ }
|
|
|
+ else if (item.Key == "其他")
|
|
|
+ {
|
|
|
+ designer.SetDataSource("qt", list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ designer.SetDataSource("title", title);
|
|
|
+ designer.Process();
|
|
|
+
|
|
|
+ string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + user_entity.DepName + "_工作记录汇总.xlsx";
|
|
|
+ string path = AppSettingsHelper.Get("ExcelBasePath") + "DepTaskFileDown/";
|
|
|
+
|
|
|
+ if (!Directory.Exists(path))
|
|
|
+ {
|
|
|
+ Directory.CreateDirectory(path);
|
|
|
+ }
|
|
|
+
|
|
|
+ designer.Workbook.Save(path + fileName);
|
|
|
+ string excelPath = AppSettingsHelper.Get("ExcelFtpPath") + "DepTaskFileDown/" + fileName;
|
|
|
+ string url = AppSettingsHelper.Get("ExcelBaseUrl");
|
|
|
+ string fileUrl = url + excelPath;
|
|
|
+ return Ok(JsonView(true, "操作成功!", new { fileUrl }));
|
|
|
+ }
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
#region 团组状态通知
|