TaskAllocationRepository.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706
  1. using AutoMapper;
  2. using EnumsNET;
  3. using NPOI.SS.Formula.Functions;
  4. using OASystem.Domain;
  5. using OASystem.Domain.Dtos.PersonnelModule;
  6. using OASystem.Domain.Entities.Groups;
  7. using OASystem.Domain.Entities.PersonnelModule;
  8. using OASystem.Domain.Entities.System;
  9. using OASystem.Domain.ViewModels.PersonnelModule;
  10. using Org.BouncyCastle.Ocsp;
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Linq;
  14. using System.Text;
  15. using System.Threading.Tasks;
  16. namespace OASystem.Infrastructure.Repositories.PersonnelModule
  17. {
  18. /// <summary>
  19. /// 任务分配
  20. /// 仓库
  21. /// </summary>
  22. public class TaskAllocationRepository : BaseRepository<Pm_TaskAllocation, TaskAllocationView>
  23. {
  24. private readonly IMapper _mapper;
  25. private Result _result;
  26. public TaskAllocationRepository(SqlSugarClient sqlSugar, IMapper mapper)
  27. : base(sqlSugar)
  28. {
  29. _mapper = mapper;
  30. _result = new Result() { Code = -1, Msg = "操作失败!" };
  31. }
  32. /// <summary>
  33. /// 任务操作权限(任务创建人才可以进行操作)
  34. /// </summary>
  35. /// <param name="taskAllocation"></param>
  36. /// <param name="userId"></param>
  37. /// <returns></returns>
  38. public TaskOperationAudit _TaskOperationAudit(Pm_TaskAllocation taskAllocation, int userId)
  39. {
  40. TaskOperationAudit taskOperationAudit = new TaskOperationAudit();
  41. if (taskAllocation.CreateUserId == userId)
  42. {
  43. taskOperationAudit.TaskAddAudit = 1;
  44. taskOperationAudit.TaskDelAudit = 1;
  45. taskOperationAudit.TasStopAudit = 1;
  46. taskOperationAudit.TaskComfirmAudit = 1;
  47. taskOperationAudit.TaskScoreAudit = 1;
  48. }
  49. return taskOperationAudit;
  50. }
  51. /// <summary>
  52. /// 基础数据源
  53. /// </summary>
  54. /// <returns></returns>
  55. public async Task<Result> _Init(int portType, int userId)
  56. {
  57. if (portType == 1 || portType == 2 || portType == 3)
  58. {
  59. if (userId < 1)
  60. {
  61. _result.Msg = string.Format("请传入有效的UserId参数!");
  62. return _result;
  63. }
  64. //任务名称
  65. List<string> _TaskNameInfos = new List<string>();
  66. _TaskNameInfos = _sqlSugar.Queryable<Pm_TaskAllocation, Pm_TaskRelevanceUser>((ta, tau) => new JoinQueryInfos(JoinType.Left, ta.Id == tau.TAId))
  67. .Where((ta, tau) => ta.IsDel == 0 && tau.IsDel == 0)
  68. .Where((ta, tau) => ta.CreateUserId == userId || tau.UserId == userId)
  69. .Select(ta => ta.TaskName).ToList()
  70. .Distinct().ToList();
  71. //团组名称
  72. List<ValueInfo> _GroupNameInfos = new List<ValueInfo>();
  73. _GroupNameInfos = _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0)
  74. .OrderByDescending(it => it.CreateTime)
  75. .Select(it => new ValueInfo { Id = it.Id, Name = it.TeamName })
  76. .ToList();
  77. _GroupNameInfos.Insert(0, new ValueInfo() { Id = -1, Name = "未选择" });
  78. //部门名称
  79. ValueInfo _DepartmentNameInfos = new ValueInfo();
  80. _DepartmentNameInfos = _sqlSugar.Queryable<Sys_Users, Sys_Department>((u, d) => new JoinQueryInfos(JoinType.Left, u.DepId == d.Id))
  81. .Select((u, d) => new ValueInfo() { Id = d.Id, Name = d.DepName })
  82. .First();
  83. //执行任务人员信息 1 公司总经理/副总 可分配 所有人的任务 2 公司 部门经理/主管 可分配 部门下的人员的任务
  84. List<ExecuteTaskUserInfo> _ExecuteTaskUserInfos = new List<ExecuteTaskUserInfo>();
  85. TaskOperationAudit _TaskOpertionAudit = new TaskOperationAudit();
  86. List<Pm_TaskJobRelevancy> taskAudits = new List<Pm_TaskJobRelevancy>();
  87. taskAudits = _sqlSugar.Queryable<Pm_TaskJobRelevancy>().Where(it => it.IsDel == 0 && it.PrimaryUserId == userId).ToList();
  88. if (taskAudits.Count > 0)
  89. {
  90. //任务权限
  91. _TaskOpertionAudit.TaskAddAudit = 1;
  92. _TaskOpertionAudit.TaskDelAudit = 1;
  93. _TaskOpertionAudit.TasStopAudit = 1;
  94. List<int> userIds = taskAudits.Select(it => it.SubUserId).ToList();
  95. string userSql = string.Format(@"Select u.Id,u.CnName As Name,c.CompanyName,
  96. d.DepName As DepartmentName,jp.JobName
  97. From Sys_Users u
  98. Left Join Sys_Company c On u.CompanyId = c.Id
  99. Left Join Sys_Department d On u.DepId = d.Id
  100. Left Join Sys_JobPost jp On u.JobPostId = jp.Id
  101. Where u.IsDel = 0 ");
  102. _ExecuteTaskUserInfos = _sqlSugar.SqlQueryable<ExecuteTaskUserInfo>(userSql).Where(it => userIds.Contains(it.Id)).ToList();
  103. }
  104. InitView _view = new InitView()
  105. {
  106. TaskOperationAudit = _TaskOpertionAudit,
  107. TaskNameInfos = _TaskNameInfos,
  108. ExecuteTaskUserInfos = _ExecuteTaskUserInfos,
  109. GroupNameInfos = _GroupNameInfos,
  110. DepartmentNameInfo = _DepartmentNameInfos
  111. };
  112. _result.Code = 0;
  113. _result.Data = _view;
  114. }
  115. else
  116. {
  117. _result.Msg = string.Format("请传入有效的PortType参数!");
  118. }
  119. return _result;
  120. }
  121. /// <summary>
  122. /// 任务指派
  123. /// 详情
  124. /// </summary>
  125. /// <param name="portType"></param>
  126. /// <param name="Id"></param>
  127. /// <returns></returns>
  128. public async Task<Result> _Details(int portType, int Id)
  129. {
  130. if (Id < 1)
  131. {
  132. _result.Msg = string.Format("请传入有效的Id参数!");
  133. return _result;
  134. }
  135. if (portType == 1 || portType == 2 || portType == 3)
  136. {
  137. //团组名称
  138. List<ValueInfo> _GroupNameInfos = new List<ValueInfo>();
  139. _GroupNameInfos = _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0)
  140. .OrderByDescending(it => it.CreateTime)
  141. .Select(it => new ValueInfo { Id = it.Id, Name = it.TeamName })
  142. .ToList();
  143. _GroupNameInfos.Insert(0, new ValueInfo() { Id = -1, Name = "未选择" });
  144. //部门名称
  145. List<ValueInfo> _DepartmentNameInfos = new List<ValueInfo>();
  146. _DepartmentNameInfos = _sqlSugar.Queryable<Sys_Department>()
  147. .Select(d => new ValueInfo() { Id = d.Id, Name = d.DepName })
  148. .ToList();
  149. //用户名称
  150. List<ValueInfo> _UserNameInfos = new List<ValueInfo>();
  151. _UserNameInfos = _sqlSugar.Queryable<Sys_Users>()
  152. .Select(d => new ValueInfo() { Id = d.Id, Name = d.CnName })
  153. .ToList();
  154. TaskDetailsView _view = _sqlSugar.Queryable<Pm_TaskAllocation>()
  155. .Where(it => it.IsDel == 0 && it.Id == Id)
  156. .Select(it => new TaskDetailsView
  157. {
  158. Id = it.Id,
  159. DiId = it.DiId,
  160. DepId = it.DepId,
  161. CreateUserId = it.CreateUserId,
  162. CreateTime = it.CreateTime,
  163. TaskName = it.TaskName,
  164. TaskContent = it.TaskContent,
  165. TaskPriority = it.TaskPriority,
  166. PredictBeginTime = it.PredictBeginTime,
  167. PredictEndTime = it.PredictEndTime,
  168. IsIntoPerformance = it.IsIntoPerformance,
  169. Remark = it.Remark,
  170. })
  171. .First();
  172. if (_view != null)
  173. {
  174. List<TaskUserDetailsView> taskUserDetailsViews = new List<TaskUserDetailsView>();
  175. taskUserDetailsViews = _sqlSugar.Queryable<Pm_TaskRelevanceUser>()
  176. .Where(it => it.IsDel == 0 && it.TAId == _view.Id)
  177. .Select(it => new TaskUserDetailsView
  178. {
  179. Id = it.Id,
  180. TAId = it.TAId,
  181. UserId = it.UserId,
  182. BeginTime = it.BeginTime,
  183. OverTime = it.OverTime,
  184. TaskStatus = it.TaskStatus,
  185. Cause = it.Cause,
  186. Remark = it.Remark
  187. })
  188. .ToList();
  189. _view.UserTaskInfos = taskUserDetailsViews;
  190. _result.Data = _view;
  191. _result.Code = 0;
  192. _result.Msg = "查询成功!";
  193. }
  194. }
  195. else
  196. {
  197. _result.Msg = string.Format("请传入有效的PortType参数!");
  198. }
  199. return _result;
  200. }
  201. /// <summary>
  202. /// Add Or Edit
  203. /// </summary>
  204. /// <param name="dto"></param>
  205. /// <returns></returns>
  206. public async Task<Result> _AddOrEdit(TaskAllocationAddOrEditDto dto)
  207. {
  208. if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3)
  209. {
  210. if (dto.UserIds.Count < 1)
  211. {
  212. _result.Msg = string.Format("指派人员不能为空!");
  213. return _result;
  214. }
  215. #region 参数处理
  216. Pm_TaskAllocation _TaskAllocation = new Pm_TaskAllocation();
  217. List<Pm_TaskRelevanceUser> _TaskRelevanceUsers = new List<Pm_TaskRelevanceUser>();
  218. _TaskAllocation = _mapper.Map<Pm_TaskAllocation>(dto);
  219. _TaskAllocation.CreateUserId = dto.UserId;
  220. foreach (var item in dto.UserIds)
  221. {
  222. _TaskRelevanceUsers.Add(new Pm_TaskRelevanceUser() {
  223. TAId = dto.Id,
  224. UserId = item,
  225. CreateUserId = dto.UserId,
  226. });
  227. }
  228. #endregion
  229. if (dto.Id == 0) //添加
  230. {
  231. // 1 按 任务名称 查询重
  232. Pm_TaskAllocation taskAllocation1 = await _sqlSugar.Queryable<Pm_TaskAllocation>().Where(it => it.IsDel == 0 && it.TaskName.Equals(_TaskAllocation.TaskName)).FirstAsync();
  233. if (taskAllocation1 != null)
  234. {
  235. _result.Msg = string.Format("任务名称重复,请重命名!");
  236. return _result;
  237. }
  238. _sqlSugar.BeginTran();
  239. int addId = await _sqlSugar.Insertable<Pm_TaskAllocation>(_TaskAllocation).ExecuteReturnIdentityAsync();
  240. if (addId < 1)
  241. {
  242. _sqlSugar.RollbackTran();
  243. _result.Msg = string.Format("任务发布失败!");
  244. return _result;
  245. }
  246. foreach (var item in _TaskRelevanceUsers)
  247. {
  248. item.TAId = addId;
  249. }
  250. int addSub = await _sqlSugar.Insertable<Pm_TaskRelevanceUser>(_TaskRelevanceUsers).ExecuteCommandAsync();
  251. if (addSub < 1)
  252. {
  253. _sqlSugar.RollbackTran();
  254. _result.Msg = string.Format("任务发布失败!");
  255. return _result;
  256. }
  257. _result.Code = 0;
  258. _result.Msg = "添加成功!";
  259. _sqlSugar.CommitTran();
  260. }
  261. else if (dto.Id > 0) //修改
  262. {
  263. _sqlSugar.BeginTran();
  264. int updateStatus1 = await _sqlSugar.Updateable<Pm_TaskAllocation>(_TaskAllocation)
  265. .UpdateColumns(it => new
  266. {
  267. it.DepId,
  268. it.DiId,
  269. it.TaskPriority,
  270. it.TaskName,
  271. it.TaskContent,
  272. it.PredictBeginTime,
  273. it.PredictEndTime,
  274. it.IsIntoPerformance,
  275. })
  276. .Where(it => it.Id == _TaskAllocation.Id)
  277. .ExecuteCommandAsync();
  278. if (updateStatus1 < 1)
  279. {
  280. _sqlSugar.RollbackTran();
  281. _result.Msg = string.Format("任务编辑失败!");
  282. return _result;
  283. }
  284. List<int> selectUserId = new List<int>();
  285. selectUserId = await _sqlSugar.Queryable<Pm_TaskRelevanceUser>()
  286. .Where(it => it.IsDel == 0 && it.TAId == _TaskAllocation.Id)
  287. .Select(it => it.UserId)
  288. .ToListAsync();
  289. if (selectUserId.Count < 1)
  290. {
  291. int addSub1 = await _sqlSugar.Insertable<Pm_TaskRelevanceUser>(_TaskRelevanceUsers).ExecuteCommandAsync();
  292. if (addSub1 < 1)
  293. {
  294. _sqlSugar.RollbackTran();
  295. _result.Msg = string.Format("任务编辑失败!");
  296. return _result;
  297. }
  298. }
  299. else
  300. {
  301. List<int> SelectUserIdDiff = new List<int>(); //select 差集
  302. SelectUserIdDiff = selectUserId.Except(dto.UserIds).ToList();
  303. if (SelectUserIdDiff.Count > 0) //删除
  304. {
  305. List<Pm_TaskRelevanceUser> _TaskRelevanceUsers1 = new List<Pm_TaskRelevanceUser>();
  306. _TaskRelevanceUsers1 = await _sqlSugar.Queryable<Pm_TaskRelevanceUser>()
  307. .Where(it => it.IsDel == 0 &&
  308. it.TAId == _TaskAllocation.Id &&
  309. SelectUserIdDiff.Contains(it.UserId))
  310. .ToListAsync();
  311. if (_TaskRelevanceUsers1.Count > 0)
  312. {
  313. foreach (var item in _TaskRelevanceUsers1)
  314. {
  315. item.IsDel = 1;
  316. }
  317. var updateIsDel = await _sqlSugar.Updateable(_TaskRelevanceUsers1)
  318. .UpdateColumns(it => it.IsDel)
  319. .WhereColumns(it => new { it.Id, it.TAId })
  320. .ExecuteCommandAsync();
  321. if (updateIsDel < 1)
  322. {
  323. _sqlSugar.RollbackTran();
  324. _result.Msg = string.Format("任务编辑失败!");
  325. return _result;
  326. }
  327. }
  328. }
  329. List<int> ParaUserIdDiff = new List<int>(); //para 差集
  330. ParaUserIdDiff = dto.UserIds.Except(selectUserId).ToList();
  331. if (ParaUserIdDiff.Count > 0)
  332. {
  333. List<Pm_TaskRelevanceUser> _TaskRelevanceUsers1 = new List<Pm_TaskRelevanceUser>();
  334. _TaskRelevanceUsers1 = _TaskRelevanceUsers.Where(it => ParaUserIdDiff.Contains(it.UserId)).ToList();
  335. if (_TaskRelevanceUsers1.Count > 0)
  336. {
  337. int addSub1 = await _sqlSugar.Insertable<Pm_TaskRelevanceUser>(_TaskRelevanceUsers1).ExecuteCommandAsync();
  338. if (addSub1 < 1)
  339. {
  340. _sqlSugar.RollbackTran();
  341. _result.Msg = string.Format("任务编辑失败!");
  342. return _result;
  343. }
  344. }
  345. }
  346. }
  347. /*
  348. * 发送消息
  349. */
  350. _result.Code = 0;
  351. _result.Msg = "编辑成功!";
  352. _sqlSugar.CommitTran();
  353. }
  354. else
  355. {
  356. _result.Msg = string.Format("请传入有效的Id参数!");
  357. return _result;
  358. }
  359. }
  360. else
  361. {
  362. _result.Msg = string.Format("请传入有效的PortType参数!");
  363. }
  364. return _result;
  365. }
  366. /// <summary>
  367. /// 任务归属人状态 Items
  368. /// </summary>
  369. /// <param name="id"></param>
  370. /// <returns></returns>
  371. public async Task<Result> _TaskerDetails(int id)
  372. {
  373. if (id < 1)
  374. {
  375. _result.Msg = string.Format("请传入有效的Id参数!");
  376. return _result;
  377. }
  378. string sql = string.Format(@"Select tau.Id,u.CnName As UserName,tau.BeginTime,tau.OverTime,tau.TaskStatus,
  379. tau.Cause,tau.Score,tau.Remark As ScoreRemark,tau.CreateUserId As TaskCreateUserId
  380. From Pm_TaskRelevanceUser tau
  381. Left Join Sys_Users u On tau.UserId = u.Id
  382. Where tau.IsDel = 0 And tau.TAId = {0}", id);
  383. var data = await _sqlSugar.SqlQueryable<TaskerDetailsView>(sql).ToListAsync();
  384. _result.Data = data;
  385. _result.Msg = string.Format("操作成功!");
  386. _result.Code = 0;
  387. return _result;
  388. }
  389. /// <summary>
  390. /// 任务归属人状态
  391. /// </summary>
  392. /// <param name="id"></param>
  393. /// <returns></returns>
  394. public async Task<Result> _TaskerStatus(int id)
  395. {
  396. if (id < 1)
  397. {
  398. _result.Msg = string.Format("请传入有效的Id参数!");
  399. return _result;
  400. }
  401. var data1 = await _sqlSugar.Queryable<Pm_TaskRelevanceUser>().Where(it => it.IsDel == 0 && it.Id == id).FirstAsync();
  402. if (data1 == null)
  403. {
  404. _result.Msg = string.Format("该任务不存在!");
  405. return _result;
  406. }
  407. var data2 = await _sqlSugar.Queryable<Pm_TaskAllocation>().Where(it => it.IsDel == 0 && it.Id == data1.TAId).FirstAsync();
  408. _sqlSugar.BeginTran();
  409. var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
  410. .SetColumns(it => it.TaskStatus == TaskerEnum.HaveKnown)
  411. .ExecuteCommandAsync();
  412. if (update1 < 1)
  413. {
  414. _result.Msg = string.Format("操作失败!");
  415. return _result;
  416. }
  417. _result.Msg = string.Format("操作成功!");
  418. _result.Code = 0;
  419. _sqlSugar.CommitTran();
  420. return _result;
  421. }
  422. /// <summary>
  423. /// 任务归属人设置开始状态
  424. /// </summary>
  425. /// <param name="id"></param>
  426. /// <returns></returns>
  427. public async Task<Result> _TaskerSetStartStatus(int userId, int id)
  428. {
  429. if (id < 1)
  430. {
  431. _result.Msg = string.Format("请传入有效的Id参数!");
  432. return _result;
  433. }
  434. //时间限制
  435. //状态限制
  436. _sqlSugar.BeginTran();
  437. var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
  438. .SetColumns(it => it.TaskStatus == TaskerEnum.UnderWay)
  439. .SetColumns(it => it.BeginTime == DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
  440. .Where(it => it.TAId == id)
  441. .Where(it => it.UserId == userId )
  442. .ExecuteCommandAsync();
  443. if (update1 < 1)
  444. {
  445. _result.Msg = string.Format("操作失败!");
  446. _sqlSugar.RollbackTran();
  447. return _result;
  448. }
  449. var update2 = await _sqlSugar.Updateable<Pm_TaskAllocation>()
  450. .SetColumns(it => it.Status == TaskEnum.UnderWay)
  451. .Where(it => it.Id == id)
  452. .ExecuteCommandAsync();
  453. if (update2 < 1)
  454. {
  455. _result.Msg = string.Format("操作失败!");
  456. _sqlSugar.RollbackTran();
  457. return _result;
  458. }
  459. _sqlSugar.CommitTran();
  460. _result.Msg = string.Format("操作成功!");
  461. _result.Code = 0;
  462. return _result;
  463. }
  464. /// <summary>
  465. /// 任务归属人设置完成状态
  466. /// 1.待审核
  467. /// </summary>
  468. /// <param name="id"></param>
  469. /// <returns></returns>
  470. public async Task<Result> _TaskerSetOverStatus(int userId, int id)
  471. {
  472. if (id < 1)
  473. {
  474. _result.Msg = string.Format("请传入有效的Id参数!");
  475. return _result;
  476. }
  477. //时间限制
  478. //状态限制
  479. _sqlSugar.BeginTran();
  480. var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
  481. .SetColumns(it => it.TaskStatus == TaskerEnum.WaitConfirm)
  482. .SetColumns(it => it.OverTime == DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
  483. .Where(it => it.TAId == id)
  484. .Where(it => it.UserId == userId)
  485. .ExecuteCommandAsync();
  486. if (update1 < 1)
  487. {
  488. _result.Msg = string.Format("操作失败!");
  489. _sqlSugar.RollbackTran();
  490. return _result;
  491. }
  492. var update2 = await _sqlSugar.Updateable<Pm_TaskAllocation>()
  493. .SetColumns(it => it.Status == TaskEnum.WaitConfirm)
  494. .Where(it => it.Id == id)
  495. .ExecuteCommandAsync();
  496. if (update2 < 1)
  497. {
  498. _result.Msg = string.Format("操作失败!");
  499. _sqlSugar.RollbackTran();
  500. return _result;
  501. }
  502. _sqlSugar.CommitTran();
  503. _result.Msg = string.Format("操作成功!");
  504. _result.Code = 0;
  505. return _result;
  506. }
  507. /// <summary>
  508. /// 设置任务知晓
  509. /// </summary>
  510. /// <param name="id"></param>
  511. /// <returns></returns>
  512. public async Task<Result> _TaskSetHaveStatus(int id)
  513. {
  514. if (id < 1)
  515. {
  516. _result.Msg = string.Format("请传入有效的Id参数!");
  517. return _result;
  518. }
  519. var data1 = await _sqlSugar.Queryable<Pm_TaskRelevanceUser>().Where(it => it.IsDel == 0 && it.Id == id).FirstAsync();
  520. if (data1 == null)
  521. {
  522. _result.Msg = string.Format("该任务不存在!");
  523. return _result;
  524. }
  525. var data2 = await _sqlSugar.Queryable<Pm_TaskAllocation>().Where(it => it.IsDel == 0 && it.Id == data1.TAId).FirstAsync();
  526. _sqlSugar.BeginTran();
  527. var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
  528. .SetColumns(it => it.TaskStatus == TaskerEnum.HaveKnown)
  529. .ExecuteCommandAsync();
  530. if (update1 < 1)
  531. {
  532. _result.Msg = string.Format("操作失败!");
  533. return _result;
  534. }
  535. _result.Msg = string.Format("操作成功!");
  536. _result.Code = 0;
  537. _sqlSugar.CommitTran();
  538. return _result;
  539. }
  540. /// <summary>
  541. /// 任务确认完成
  542. /// </summary>
  543. /// <param name="dto"></param>
  544. /// <returns></returns>
  545. public async Task<Result> _TaskConfirmCompletion(int portType,int id)
  546. {
  547. if (portType == 1 || portType == 2 || portType == 3)
  548. {
  549. if (id < 1)
  550. {
  551. _result.Msg = string.Format("请传入有效的Id参数!");
  552. return _result;
  553. }
  554. var data = await _sqlSugar.Queryable<Pm_TaskRelevanceUser>()
  555. .Where(it => it.IsDel == 0 && it.Id == id && it.TaskStatus <= TaskerEnum.UnFinished)
  556. .ToListAsync();
  557. if (data.Count > 0)
  558. {
  559. _result.Msg = string.Format("本任务参与人员并未全部完成,不可确认任务完成!");
  560. return _result;
  561. }
  562. var update = await _sqlSugar.Updateable<Pm_TaskAllocation>()
  563. .SetColumns(it => it.IsComplete == 1)
  564. .SetColumns(it => it.Status == TaskEnum.Finished)
  565. .Where(it => it.Id == id)
  566. .ExecuteCommandAsync();
  567. if (update > 0)
  568. {
  569. _result.Code = 0;
  570. return _result;
  571. }
  572. else _result.Msg = "确认完成失败!";
  573. }
  574. else
  575. {
  576. _result.Msg = string.Format("请传入有效的PortType参数!");
  577. }
  578. return _result;
  579. }
  580. /// <summary>
  581. /// 任务评分
  582. /// </summary>
  583. /// <param name="dto"></param>
  584. /// <returns></returns>
  585. public async Task<Result> _TaskScore(TaskAllocationScoreDto dto)
  586. {
  587. int portType = dto.PortType;
  588. int id = dto.Id;
  589. if (portType == 1 || portType == 2 || portType == 3)
  590. {
  591. if (id < 1)
  592. {
  593. _result.Msg = string.Format("请传入有效的Id参数!");
  594. return _result;
  595. }
  596. var data = await _sqlSugar.Queryable<Pm_TaskAllocation>()
  597. .Where(it => it.IsDel == 0 && it.Id == id && it.IsComplete == 1)
  598. .FirstAsync();
  599. if (data == null)
  600. {
  601. _result.Msg = string.Format("本任务尚未由发布人确认任务完成,不可评分!");
  602. return _result;
  603. }
  604. Pm_TaskRelevanceUser _TaskRelevanceUser = new Pm_TaskRelevanceUser() {
  605. Id = dto.Id,
  606. Score = dto.Score,
  607. Remark = dto.ScoreRemark
  608. };
  609. var update = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>(_TaskRelevanceUser)
  610. .UpdateColumns(it => new { it.Score, it.Remark })
  611. .WhereColumns(it => it.Id)
  612. .ExecuteCommandAsync();
  613. if (update > 0)
  614. {
  615. _result.Code = 0;
  616. return _result;
  617. }
  618. else _result.Msg = "评分失败!";
  619. }
  620. else
  621. {
  622. _result.Msg = string.Format("请传入有效的PortType参数!");
  623. }
  624. return _result;
  625. }
  626. }
  627. }