PlanManageController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. package com.huaxu.task.controller;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.huaxu.model.AjaxMessage;
  5. import com.huaxu.model.LoginUser;
  6. import com.huaxu.model.Pagination;
  7. import com.huaxu.model.ResultStatus;
  8. import com.huaxu.process.entity.ProcessDefinition;
  9. import com.huaxu.process.service.WorkFlowService;
  10. import com.huaxu.task.dto.PlanManageDto;
  11. import com.huaxu.task.entity.PlanManage;
  12. import com.huaxu.task.service.PlanManageService;
  13. import com.huaxu.util.DatesUtil;
  14. import com.huaxu.util.UserUtil;
  15. import io.swagger.annotations.Api;
  16. import io.swagger.annotations.ApiOperation;
  17. import io.swagger.annotations.ApiParam;
  18. import org.activiti.engine.task.Task;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.util.StringUtils;
  21. import org.springframework.web.bind.annotation.*;
  22. import java.util.*;
  23. @RestController
  24. @RequestMapping("/workflow/task/")
  25. @Api(tags = "计划管理")
  26. public class PlanManageController {
  27. @Autowired
  28. PlanManageService planManageService;
  29. @Autowired
  30. WorkFlowService workFlowService;
  31. /**
  32. * 新增巡检计划
  33. * @param planName 任务名称
  34. * @param taskType 任务类型
  35. * @param planStartDate 计划开始时间
  36. * @param planEndDate 计划结束时间
  37. * @param userId 计划巡检人ID
  38. * @param taskContent 任务内容
  39. * @param taskAreaShape 任务区域坐标
  40. * @param taskAreaName 任务区域名称
  41. * @return
  42. */
  43. @GetMapping("/plan/add")
  44. @ApiOperation(value = "新增巡检计划")
  45. public AjaxMessage addPlan(@ApiParam(value = "任务名称", required = true) @RequestParam(required = true) String planName,
  46. @ApiParam(value = "任务类型", required = true) @RequestParam(required = true) Integer taskType,
  47. @ApiParam(value = "计划开始时间", required = true) @RequestParam(required = true) String planStartDate,
  48. @ApiParam(value = "计划结束时间", required = true) @RequestParam(required = true) String planEndDate,
  49. @ApiParam(value = "计划巡检人ID", required = true) @RequestParam(required = true) String userId,
  50. @ApiParam(value = "任务内容", required = true) @RequestParam(required = true) String taskContent,
  51. @ApiParam(value = "任务区域坐标", required = true) @RequestParam(required = true) String taskAreaShape,
  52. @ApiParam(value = "任务区域名称", required = true) @RequestParam(required = true) String taskAreaName,
  53. @ApiParam(value = "任务签到点", required = false) @RequestParam(required = false) String taskChecked) {
  54. LoginUser loginUser = UserUtil.getCurrentUser();
  55. String planId=DatesUtil.formatDate(new Date(),"yyyyMMddHHmmss")+String.valueOf((int) (Math.random()*(9999-1000)+1000));
  56. PlanManage record = new PlanManage();
  57. record.setUserId(userId);
  58. record.setPlanId(planId);
  59. record.setPlanName(planName);
  60. record.setTaskType(taskType);
  61. record.setTaskChecked(taskChecked);
  62. record.setPlanDate(new Date());
  63. record.setPlanStartDate(DatesUtil.parseDate(planStartDate,"yyyy-MM-dd"));
  64. record.setPlanEndDate(DatesUtil.parseDate(planEndDate,"yyyy-MM-dd"));
  65. record.setPlanStatus(0);
  66. record.setTaskContent(taskContent);
  67. record.setTaskAreaShape(taskAreaShape);
  68. record.setTaskAreaName(taskAreaName);
  69. record.setDateCreate(new Date());
  70. if(loginUser.getId() != null) {
  71. record.setPlanUserId(String.valueOf(loginUser.getId()));
  72. record.setCreateBy(String.valueOf(loginUser.getId()));
  73. }
  74. if(loginUser.getTenantId() != null) {
  75. record.setTenantId(loginUser.getTenantId());
  76. }
  77. int rows = planManageService.insertSelective(record);
  78. if(rows > 0) {
  79. return new AjaxMessage(ResultStatus.OK);
  80. }
  81. return new AjaxMessage(ResultStatus.ERROR);
  82. }
  83. @GetMapping("/plan/select")
  84. @ApiOperation(value = "查询巡检计划")
  85. public AjaxMessage<Pagination<PlanManageDto>> selectPlan(
  86. @ApiParam(value = "页数", required = true)@RequestParam Integer pageNum,
  87. @ApiParam(value = "条数", required = true)@RequestParam Integer pageSize,
  88. @ApiParam(value = "状态", required = false) @RequestParam(required = false) Integer planStatus,
  89. @ApiParam(value = "计划单号或计划名称", required = false) @RequestParam(required = false) String key,
  90. @ApiParam(value = "计划安排起始日期", required = false) @RequestParam(required = false) String startDate,
  91. @ApiParam(value = "计划安排截至日期", required = false) @RequestParam(required = false) String endDate){
  92. PlanManageDto planManageDto = new PlanManageDto();
  93. //根据用户编号,获取用户的权限
  94. LoginUser loginUser = UserUtil.getCurrentUser();
  95. planManageDto.setKey(key);
  96. if(!StringUtils.isEmpty(startDate)&& !StringUtils.isEmpty(endDate)) {
  97. planManageDto.setStartDate(startDate);
  98. planManageDto.setEndDate(endDate);
  99. }
  100. planManageDto.setPlanStatus(planStatus);
  101. planManageDto.setTenantId(loginUser.getTenantId());
  102. planManageDto.setProgramItems(loginUser.getProgramItemList());
  103. planManageDto.setUserType(loginUser.getType());
  104. //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
  105. planManageDto.setPermissonType(loginUser.getPermissonType());
  106. IPage<PlanManageDto> iPage = new Page<>(pageNum, pageSize);
  107. iPage = planManageService.selectPage(iPage, planManageDto);
  108. Pagination<PlanManageDto> pages = new Pagination<>(iPage);
  109. for(PlanManage plan : pages.getList()){
  110. //plan.setCompanyOrgName(orgInfoUtil.getOrgName(plan.getCompanyOrgId()));
  111. //plan.setDeptOrgName(orgInfoUtil.getOrgName(plan.getDeptOrgId()));
  112. }
  113. return new AjaxMessage<>(ResultStatus.OK, pages);
  114. }
  115. /**
  116. * APP查询任务详情
  117. * @return Response对象
  118. */
  119. @RequestMapping(value = "selectPlanDetail", method = RequestMethod.GET)
  120. @ApiOperation(value = "APP查询任务详情")
  121. public AjaxMessage<PlanManageDto> selectPlanDetail(
  122. @ApiParam(value = "任务id", required = true) @RequestParam Integer flowId) {
  123. return new AjaxMessage<>(ResultStatus.OK, planManageService.selectPlanDetail(flowId));
  124. }
  125. @GetMapping("/plan/submit")
  126. @ApiOperation(value = "提交巡检计划")
  127. public AjaxMessage submitPlan(
  128. @ApiParam(value = "计划单号", required = true) @RequestParam(required = false) Integer id){
  129. LoginUser loginUser = UserUtil.getCurrentUser();
  130. PlanManage planManage = planManageService.selectByPrimaryKey(id);
  131. //测试数据 test1 1 1
  132. // ProcessDefinition processDefinition = workFlowService.findProcessDefinition(
  133. // loginUser.getTenantId(),
  134. // loginUser.getCompanyId(),
  135. // planManage.getTaskType());
  136. ProcessDefinition processDefinition = workFlowService.findProcessDefinition(
  137. "test1",
  138. 1,
  139. 1);
  140. Map<String,Object> vars = new HashMap<>();
  141. vars.put("assineeFormUserId",planManage.getUserId());
  142. //巡检发送系统消息所需参数
  143. vars.put("任务类型",planManage.getTaskType());
  144. vars.put("任务编号",planManage.getPlanId());
  145. vars.put("templateId",4);
  146. vars.put("msgType",4);
  147. String startProcess = workFlowService.startProcess(processDefinition,vars);
  148. Task task = workFlowService.getProcessRuntimeTask(startProcess).get(0);
  149. Set<String> taskParticipator = workFlowService.getTaskParticipator(task.getId(),false,null);
  150. String currentUsers = null;
  151. for (String str : taskParticipator) {
  152. if(currentUsers == null){
  153. currentUsers = str;
  154. }
  155. else {
  156. currentUsers +=String.format(",%s",str);
  157. }
  158. }
  159. //更新计划表的流程相关字段值。
  160. planManage.setPlanStatus(1);//已执行
  161. if(planManage.getId() != null) {
  162. planManage.setUpdateBy(String.valueOf(loginUser.getId()));
  163. }
  164. planManage.setDateUpdate(new Date());
  165. planManage.setProcessInstanceId(task.getProcessInstanceId());
  166. planManage.setProcessDefId(task.getProcessDefinitionId());
  167. planManage.setCurrentTaskId(task.getId());
  168. planManage.setCurrentUsers(currentUsers);
  169. planManage.setCurrentTaskName(task.getName());
  170. int rows = planManageService.updateByPrimaryKeySelective(planManage);
  171. if(rows > 0) {
  172. return new AjaxMessage<>(ResultStatus.OK);
  173. }
  174. return new AjaxMessage<>(ResultStatus.ERROR);
  175. }
  176. @PostMapping("/plan/update")
  177. @ApiOperation(value = "修改巡检计划")
  178. public AjaxMessage updatePlan(@ApiParam(value = "修改巡检计划", required = true) @RequestBody PlanManage planManage) {
  179. PlanManage record = new PlanManage();
  180. record.setId(planManage.getId());
  181. record.setUserId(planManage.getUserId());
  182. record.setPlanName(planManage.getPlanName());
  183. record.setTaskType(planManage.getTaskType());
  184. record.setTaskChecked(planManage.getTaskChecked());
  185. record.setPlanStartDate(planManage.getPlanStartDate());
  186. record.setPlanEndDate(planManage.getPlanEndDate());
  187. record.setTaskContent(planManage.getTaskContent());
  188. record.setTaskAreaShape(planManage.getTaskAreaShape());
  189. record.setTaskAreaName(planManage.getTaskAreaName());
  190. LoginUser loginUser = UserUtil.getCurrentUser();
  191. if(loginUser.getId() != null) {
  192. record.setUpdateBy(String.valueOf(loginUser.getId()));
  193. }
  194. record.setDateUpdate(new Date());
  195. int rows = planManageService.updateByPrimaryKeySelective(record);
  196. if(rows > 0) {
  197. return new AjaxMessage(ResultStatus.OK);
  198. }
  199. return new AjaxMessage(ResultStatus.ERROR);
  200. }
  201. @RequestMapping(value="batchDelete" , method = RequestMethod.DELETE)
  202. @ApiOperation(value = "批量删除")
  203. public AjaxMessage<Integer> batchDelete( @ApiParam(value = "巡检计划ids") @RequestParam List<Integer> ids){
  204. return new AjaxMessage<>(ResultStatus.OK, planManageService.batchDelete(ids));
  205. }
  206. }