ProjectTaskController.java 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. package com.ruoyi.web.controller.project;
  2. import com.ruoyi.common.config.RuoYiConfig;
  3. import com.ruoyi.common.core.controller.BaseController;
  4. import com.ruoyi.common.core.domain.AjaxResult;
  5. import com.ruoyi.common.core.domain.entity.SysUser;
  6. import com.ruoyi.common.core.domain.model.LoginUser;
  7. import com.ruoyi.common.core.page.TableDataInfo;
  8. import com.ruoyi.common.utils.SecurityUtils;
  9. import com.ruoyi.common.utils.file.FileUploadUtils;
  10. import com.ruoyi.common.utils.file.MimeTypeUtils;
  11. import com.ruoyi.common.utils.poi.ExcelUtil;
  12. import com.ruoyi.project.bo.ProjectListInput;
  13. import com.ruoyi.project.bo.ProjectStaffRecordInput;
  14. import com.ruoyi.project.bo.ProjectStaffRecordOut;
  15. import com.ruoyi.project.bo.ProjectTaskListOut;
  16. import com.ruoyi.project.domain.ProjectStaff;
  17. import com.ruoyi.project.domain.ProjectStaffRecord;
  18. import com.ruoyi.project.domain.ProjectTask;
  19. import com.ruoyi.project.service.ProjectStaffRecordService;
  20. import com.ruoyi.project.service.ProjectStaffService;
  21. import com.ruoyi.project.service.ProjectTaskService;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.validation.annotation.Validated;
  24. import org.springframework.web.bind.annotation.*;
  25. import org.springframework.web.multipart.MultipartFile;
  26. import javax.servlet.http.HttpServletResponse;
  27. import java.awt.print.Pageable;
  28. import java.util.List;
  29. /**
  30. * 项目管理
  31. */
  32. @RestController
  33. @RequestMapping("/api/project")
  34. public class ProjectTaskController extends BaseController {
  35. @Autowired
  36. private ProjectTaskService projectTaskService;
  37. @Autowired
  38. private ProjectStaffService projectStaffService;
  39. @Autowired
  40. private ProjectStaffRecordService projectStaffRecordService;
  41. /**
  42. * 新增项目任务
  43. * @param projectTask
  44. * @return
  45. */
  46. @PostMapping("/add")
  47. public AjaxResult add( @RequestBody ProjectTask projectTask){
  48. if (projectTask.getAid()== null){
  49. return error("负责人不能为空");
  50. }
  51. return projectTaskService.addProjectTask(projectTask);
  52. }
  53. /**
  54. * 新增项目成员
  55. * @param in
  56. * @return
  57. */
  58. @PostMapping("/addStaff")
  59. public AjaxResult addStaff( @RequestBody ProjectStaff in){
  60. if (in.getAid()== null){
  61. return error("项目成员不能为空");
  62. }
  63. return projectStaffService.addStaff(in);
  64. }
  65. /**
  66. * 新增成员打卡
  67. * @param in
  68. * @return
  69. */
  70. @PostMapping("/addRecord")
  71. public AjaxResult addRecord( @RequestBody ProjectStaffRecord in){
  72. Long userId = SecurityUtils.getUserId();
  73. in.setAid(userId);
  74. AjaxResult ajaxResult = projectStaffRecordService.addCheckMaxDuration(in);
  75. if (ajaxResult.isError()){
  76. return ajaxResult;
  77. }
  78. return projectStaffRecordService.add(in);
  79. }
  80. /**
  81. * 修改成员打卡
  82. * @param in
  83. * @return
  84. */
  85. @PostMapping("/updateRecord")
  86. public AjaxResult updateRecord( @RequestBody ProjectStaffRecord in){
  87. Long userId = SecurityUtils.getUserId();
  88. in.setAid(userId);
  89. AjaxResult ajaxResult = projectStaffRecordService.updateCheckMaxDuration(in);
  90. if (ajaxResult.isError()){
  91. return ajaxResult;
  92. }
  93. return projectStaffRecordService.update(in);
  94. }
  95. /**
  96. * 研发打卡日志详情
  97. * @param id
  98. * @return
  99. */
  100. @GetMapping("/recordDetails")
  101. public AjaxResult recordDetails( Long id){
  102. return projectStaffRecordService.recordDetails(id);
  103. }
  104. /**
  105. * 审核成员打卡
  106. * @param in
  107. * @return
  108. */
  109. @PostMapping("/examineRecord")
  110. public AjaxResult examineRecord( @RequestBody ProjectStaffRecord in){
  111. if (in.getProcessStatus()!=2 && in.getProcessStatus()!=3){
  112. return AjaxResult.error("审核状态错误");
  113. }
  114. return projectStaffRecordService.examineRecord(in);
  115. }
  116. /**
  117. * 成员打卡列表
  118. * @param in
  119. * @return
  120. */
  121. @GetMapping("/listRecord")
  122. public TableDataInfo listRecord( ProjectStaffRecordInput in){
  123. startPage();
  124. List<ProjectStaffRecordOut> list = projectStaffRecordService.listRecord(in);
  125. return getDataTable(list);
  126. }
  127. /**
  128. * 导出项目列表
  129. * @param response
  130. */
  131. @PostMapping("/listRecord/export")
  132. public void listRecordExport(HttpServletResponse response, ProjectStaffRecordInput in){
  133. List<ProjectStaffRecordOut> list=projectStaffRecordService.listRecord(in);
  134. ExcelUtil<ProjectStaffRecordOut> util = new ExcelUtil<>(ProjectStaffRecordOut.class);
  135. util.exportExcel(response, list, "项目研发日志列表");
  136. }
  137. /**
  138. * 导入数据
  139. * @param file
  140. * @param isUpdateSupport
  141. * @return
  142. * @throws Exception
  143. */
  144. @PostMapping("/listRecord/importData")
  145. public AjaxResult listRecordImportData(MultipartFile file, boolean isUpdateSupport) throws Exception
  146. {
  147. ExcelUtil<ProjectStaffRecordOut> util = new ExcelUtil<>(ProjectStaffRecordOut.class);
  148. List<ProjectStaffRecordOut> list = util.importExcel(file.getInputStream());
  149. String operName = getUsername();
  150. String message = projectStaffRecordService.importProject(list, isUpdateSupport, operName);
  151. return success(message);
  152. }
  153. /**
  154. * 删除项目成员
  155. * @param in
  156. * @return
  157. */
  158. @PostMapping("/deleteStaff")
  159. public AjaxResult deleteStaff( @RequestBody ProjectStaff in){
  160. if (in.getId()== null){
  161. return error("项目成员编号不能为空");
  162. }
  163. return projectStaffService.deleteStaff(in);
  164. }
  165. /**
  166. * 删除项目
  167. * @param in
  168. * @return
  169. */
  170. @PostMapping("/deleteProject")
  171. public AjaxResult deleteProject( @RequestBody ProjectTask in){
  172. if (in.getId()== null){
  173. return error("项目编号不能为空");
  174. }
  175. return projectTaskService.deleteProject(in);
  176. }
  177. /**
  178. * 项目详情
  179. * @param id
  180. * @return
  181. */
  182. @GetMapping ("/details")
  183. public AjaxResult details( Long id){
  184. if (id== null){
  185. return error("项目编号不能为空");
  186. }
  187. return projectTaskService.details(id);
  188. }
  189. /**
  190. * 项目列表
  191. * @param
  192. * @return
  193. */
  194. @GetMapping ("/list")
  195. public TableDataInfo list(ProjectListInput in){
  196. startPage();
  197. List<ProjectTaskListOut> list=projectTaskService.list(in);
  198. return getDataTable(list);
  199. }
  200. /**
  201. * 导出项目列表
  202. * @param response
  203. */
  204. @PostMapping("/export")
  205. public void export(HttpServletResponse response,ProjectListInput in)
  206. {
  207. List<ProjectTaskListOut> list=projectTaskService.list(in);
  208. ExcelUtil<ProjectTaskListOut> util = new ExcelUtil<>(ProjectTaskListOut.class);
  209. util.exportExcel(response, list, "项目列表");
  210. }
  211. /**
  212. * 导入数据
  213. * @param file
  214. * @param isUpdateSupport
  215. * @return
  216. * @throws Exception
  217. */
  218. @PostMapping("/importData")
  219. public AjaxResult importData(MultipartFile file, boolean isUpdateSupport) throws Exception
  220. {
  221. ExcelUtil<ProjectTaskListOut> util = new ExcelUtil<>(ProjectTaskListOut.class);
  222. List<ProjectTaskListOut> list = util.importExcel(file.getInputStream());
  223. String operName = getUsername();
  224. String message = projectTaskService.importProject(list, isUpdateSupport, operName);
  225. return success(message);
  226. }
  227. /**
  228. * 上传项目文件
  229. * @param file
  230. * @return
  231. * @throws Exception
  232. */
  233. @PostMapping("/upload")
  234. public AjaxResult upload(@RequestParam("file") MultipartFile file) throws Exception{
  235. if (!file.isEmpty()){
  236. String avatar = FileUploadUtils.upload(RuoYiConfig.getUploadPath(), file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
  237. AjaxResult ajax = AjaxResult.success();
  238. logger.debug(avatar);
  239. ajax.put("imgUrl", avatar);
  240. return ajax;
  241. }
  242. return error("上传图片异常,请联系管理员");
  243. }
  244. /**
  245. * 查询剩余时间
  246. * @param id
  247. * @return
  248. */
  249. @GetMapping("/myDuration")
  250. public AjaxResult myDuration(Long id,String recordTime){
  251. return projectStaffRecordService.myDuration(id,recordTime);
  252. }
  253. @GetMapping("/myDurationMonth")
  254. public AjaxResult myDurationMonth(Long id){
  255. return projectStaffRecordService.myDurationMonth(id);
  256. }
  257. }