package com.huaxu.task.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.huaxu.model.AjaxMessage; import com.huaxu.model.LoginUser; import com.huaxu.model.Pagination; import com.huaxu.model.ResultStatus; import com.huaxu.process.entity.ProcessDefinition; import com.huaxu.process.service.WorkFlowService; import com.huaxu.task.dto.PlanManageDto; import com.huaxu.task.entity.PlanManage; import com.huaxu.task.service.PlanManageService; import com.huaxu.util.DatesUtil; import com.huaxu.util.UserUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.activiti.engine.task.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Set; @RestController @RequestMapping("/workflow/task/") @Api(tags = "计划管理") public class PlanManageController { @Autowired PlanManageService planManageService; @Autowired WorkFlowService workFlowService; /** * 新增巡检计划 * @param planName 任务名称 * @param taskType 任务类型 * @param planStartDate 计划开始时间 * @param planEndDate 计划结束时间 * @param userId 计划巡检人ID * @param taskContent 任务内容 * @param taskAreaShape 任务区域坐标 * @param taskAreaName 任务区域名称 * @return */ @PostMapping("/plan/add") @ApiOperation(value = "新增巡检计划") public AjaxMessage addPlan(@ApiParam(value = "任务名称", required = true) @RequestParam(required = true) String planName, @ApiParam(value = "任务类型", required = true) @RequestParam(required = true) Integer taskType, @ApiParam(value = "计划开始时间", required = true) @RequestParam(required = true) String planStartDate, @ApiParam(value = "计划结束时间", required = true) @RequestParam(required = true) String planEndDate, @ApiParam(value = "计划巡检人ID", required = true) @RequestParam(required = true) String userId, @ApiParam(value = "任务内容", required = true) @RequestParam(required = true) String taskContent, @ApiParam(value = "任务区域坐标", required = true) @RequestParam(required = true) String taskAreaShape, @ApiParam(value = "任务区域名称", required = true) @RequestParam(required = true) String taskAreaName) { LoginUser loginUser = UserUtil.getCurrentUser(); String planId=DatesUtil.formatDate(new Date(),"yyyyMMddHHmmss")+String.valueOf((int) (Math.random()*(9999-1000)+1000)); PlanManage record = new PlanManage(); record.setUserId(userId); record.setPlanId(planId); record.setPlanName(planName); record.setTaskType(taskType); record.setPlanStartDate(DatesUtil.parseDate(planStartDate,"yyyy-MM-dd HH:mm:ss")); record.setPlanEndDate(DatesUtil.parseDate(planEndDate,"yyyy-MM-dd HH:mm:ss")); record.setUserId(userId); record.setTaskContent(taskContent); record.setTaskAreaShape(taskAreaShape); record.setTaskAreaName(taskAreaName); record.setDateCreate(DatesUtil.parseDate(DatesUtil.formatNow(),"yyyy-MM-dd HH:mm:ss")); if(loginUser.getId() != null) { record.setPlanUserId(loginUser.getId().toString()); record.setCreateBy(loginUser.getId().toString()); } if(loginUser.getTenantId() != null) { record.setTenantId(loginUser.getTenantId()); } int rows = planManageService.insertSelective(record); if(rows > 0) { return new AjaxMessage(ResultStatus.OK); } return new AjaxMessage(ResultStatus.ERROR); } @GetMapping("/plan/select") @ApiOperation(value = "查询巡检计划") public AjaxMessage> selectPlan( @ApiParam(value = "页数", required = true)@RequestParam Integer pageNum, @ApiParam(value = "条数", required = true)@RequestParam Integer pageSize, @ApiParam(value = "计划单号或计划名称", required = true) @RequestParam(required = false) String key, @ApiParam(value = "计划安排起始日期", required = true) @RequestParam(required = false) String startDate, @ApiParam(value = "计划安排截至日期", required = true) @RequestParam(required = false) String endDate){ PlanManageDto planManageDto = new PlanManageDto(); //根据用户编号,获取用户的权限 LoginUser loginUser = UserUtil.getCurrentUser(); planManageDto.setKey(key); if(!StringUtils.isEmpty(startDate)&& !StringUtils.isEmpty(endDate)) { planManageDto.setStartDate(startDate); planManageDto.setEndDate(endDate); } planManageDto.setTenantId(loginUser.getTenantId()); planManageDto.setProgramItems(loginUser.getProgramItemList()); planManageDto.setUserType(loginUser.getType()); //1是公司,2是公司及以下,3部门,4部门及以下,5自定义 planManageDto.setPermissonType(loginUser.getPermissonType()); IPage iPage = new Page<>(pageNum, pageSize); iPage = planManageService.selectPage(iPage, planManageDto); Pagination pages = new Pagination<>(iPage); for(PlanManage plan : pages.getList()){ //plan.setCompanyOrgName(orgInfoUtil.getOrgName(plan.getCompanyOrgId())); //plan.setDeptOrgName(orgInfoUtil.getOrgName(plan.getDeptOrgId())); } return new AjaxMessage<>(ResultStatus.OK, pages); } @PostMapping("/plan/submit") @ApiOperation(value = "提交巡检计划") public AjaxMessage submitPlan( @ApiParam(value = "计划单号", required = true) @RequestParam(required = false) Integer id){ LoginUser loginUser = UserUtil.getCurrentUser(); PlanManage planManage = planManageService.selectByPrimaryKey(id); //测试数据 test1 1 1 // ProcessDefinition processDefinition = workFlowService.findProcessDefinition( // loginUser.getTenantId(), // loginUser.getCompanyId(), // planManage.getTaskType()); ProcessDefinition processDefinition = workFlowService.findProcessDefinition( "test1", 1, 1); Map vars = new HashMap<>(); vars.put("assineeFormUserId",planManage.getUserId()); //巡检发送系统消息所需参数 vars.put("任务类型",planManage.getTaskType()); vars.put("任务编号",planManage.getPlanId()); vars.put("templateId",4); vars.put("msgType",4); String startProcess = workFlowService.startProcess(processDefinition,vars); Task task = workFlowService.getProcessRuntimeTask(startProcess).get(0); Set taskParticipator = workFlowService.getTaskParticipator(task.getId(),false,null); //更新计划表的流程相关字段值。 planManage.setPlanStatus(1);//已执行 planManage.setUpdateBy(loginUser.getId().toString()); planManage.setDateUpdate(new Date()); planManage.setProcessInstanceId(""); planManage.setProcessDefId(""); planManage.setCurrentTaskId(""); planManage.setCurrentUsers(""); planManage.setCurrentTaskName(""); int rows = planManageService.updateByPrimaryKeySelective(planManage); if(rows > 0) { return new AjaxMessage<>(ResultStatus.OK); } return new AjaxMessage<>(ResultStatus.ERROR); } }