package com.gk.hotwork.Controller; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.gk.hotwork.Controller.Base.BaseController; import com.gk.hotwork.Domain.*; import com.gk.hotwork.Domain.Enum.ErrorCode; import com.gk.hotwork.Domain.Enum.Etype; import com.gk.hotwork.Domain.Exception.BusinessException; import com.gk.hotwork.Domain.Utils.BeanUtils; import com.gk.hotwork.Domain.Utils.Msg; import com.gk.hotwork.Domain.Utils.PageInfo; import com.gk.hotwork.Domain.Utils.StringUtils; import com.gk.hotwork.Domain.Utils.UploadUtil; import com.gk.hotwork.Domain.Vo.TaskCheck; import com.gk.hotwork.Domain.Vo.TaskEnclosureVo; import com.gk.hotwork.Domain.Vo.TaskVo; import com.gk.hotwork.Domain.Vo.TaskWorkerVo; import com.gk.hotwork.Scheduls.warning.Warning; import com.gk.hotwork.Service.*; import com.spire.doc.interfaces.IField; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.*; import java.util.stream.Collectors; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; import sun.security.krb5.internal.crypto.EType; /** * @author : jingjy * @date : 2021/8/19 16:50 */ @Api(tags = "任务流程数据接口") @RestController @RequestMapping("/task") public class TaskController extends BaseController { @Autowired private TaskService taskService; @Autowired private TaskAnalysisService taskAnalysisService; @Autowired private TaskSecurityService taskSecurityService; @Autowired private TaskWorkerService taskWorkerService; @Autowired private TaskLogService taskLogService; @Autowired private UserService userService; @Autowired private DepartmentService departmentService; @Autowired private InvolveDepService involveDepService; @Autowired private TaskInvolveDepService taskInvolveDepService; @Autowired private TaskEquipmentService taskEquipmentService; @Autowired private TaskEnclosureService taskEnclosureService; @Autowired private TaskRiskService taskRiskService; @Autowired private EquipmentService equipmentService; @Autowired private TaskEquipmentBindService taskEquipmentBindService; @Autowired private SubTaskService subTaskService; @Autowired CompanyService companyService; @Autowired private TaskReviewService taskReviewService; @Autowired private WarningService warningService; @Value("${workCode}") private String workCode; @Value("${taskPath}") private String taskPath; @Value("${taskUrl}") private String taskUrl; @Value("${task}") private String task; @ApiOperation(value = "获取任务信息",notes = "获取任务信息") @GetMapping("/info") @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex",value = "当前分页"), @ApiImplicitParam(name = "pageSize",value = "分页每页数量"), @ApiImplicitParam(name = "sort",value = "排序列名"), @ApiImplicitParam(name = "order",value = "排序方式(正序反序)"), @ApiImplicitParam(name = "starttime",value = "开始时间"), @ApiImplicitParam(name = "endtime",value = "结束时间"), @ApiImplicitParam(name = "company",value = "单位"), }) public Msg getTaskInfos(@RequestParam(value = "code", required = false) String code, @RequestParam(value = "level", required = false) String level, @RequestParam(value = "status", required = false) Byte status, String company, String starttime,String endtime, Byte flag, String type, @RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order){ PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); Map condition = new HashMap<>(4); if (StringUtils.isNotBlank(code)) { condition.put("code", code); } if (StringUtils.isNotBlank(level)) { condition.put("level", level); } if (null != status){ condition.put("status", status); } if (null != flag){ condition.put("flag", flag); } if (StringUtils.isNotBlank(company)) { condition.put("company", company); } if (StringUtils.isNotBlank(type)) { condition.put("type", type); } if (StringUtils.isNotBlank(starttime)) { condition.put("starttime", starttime); } if (StringUtils.isNotBlank(endtime)) { condition.put("endtime", endtime); } pageInfo.setCondition(condition); taskService.selectDataGrid(pageInfo); return success(pageInfo); } @ApiOperation(value = "根据任务编号获取任务信息",notes = "根据任务编号获取任务信息") @GetMapping("/get") @ApiImplicitParam(name = "code",value = "任务编号") public Msg getTaskVoByCode(@RequestParam String code){ if (StringUtils.isBlank(code)){ return new Msg(ErrorCode.ERROR_10001); } TaskVo taskVo; TaskInfo taskInfo = taskService.getTaskByCode(code); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } taskVo = taskService.getTaskVoByCode(code); return success(taskVo); } @ApiOperation(value = "创建任务信息",notes = "创建任务信息") @ApiImplicitParams({ @ApiImplicitParam(paramType="TaskVo",name = "taskVo",value = "任务类"), }) @PostMapping("/create") public Msg createTask(@Validated @RequestBody TaskVo taskVo){ UserInfo userInfo = userService.getById(getUser().getId()); if (taskVo.getIsanalysis() == 1){ if (StringUtils.isBlank(taskVo.getAnalysisarea()) || StringUtils.isBlank(taskVo.getAnalysismedium())){ throw new BusinessException("需要气体检测分析时必须填写分析点名称和分析介质"); } taskService.saveTaskForAnalysis(taskVo,userInfo); }else { Byte level = taskVo.getLevel(); if (taskVo.getIsholiday().equals((byte)1)){ level++; } if (userInfo.getDepartment() == null){ return new Msg(ErrorCode.ERROR_50001,"用户部门信息不能为空"); } DepartmentInfo dep = departmentService.getById(userInfo.getDepartment()); if (dep == null){ return new Msg(ErrorCode.ERROR_50001,"用户部门信息不存在"); } taskVo.setDepartment(dep.getDepartment()); DepartmentInfo departmentInfo = departmentService.selectSafetyDepartment(); if (departmentInfo == null && !level.equals(TaskInfo.LEVEL_SECOND)){ return new Msg(ErrorCode.ERROR_50001,"安全部门信息不能为空"); } List depInfos = involveDepService.list(); if (depInfos.size() == 0 && !level.equals(TaskInfo.LEVEL_SECOND)){ return new Msg(ErrorCode.ERROR_50001,"相关部门信息不能为空"); } //判断吨位是否传 try { Etype.parse(taskVo.getEtype()); } catch (BusinessException e) { return new Msg(ErrorCode.ERROR_50001,e.getMessage()); } String taskCode = taskService.generateCode(userInfo,workCode); //任务为一级特级时,要添加相关部门审核流程 Listdepartments = new ArrayList<>(); if (!level.equals(TaskInfo.LEVEL_SECOND)){ for (InvolveDepInfo depInfo : depInfos){ TaskInvolveDepartment department = new TaskInvolveDepartment(); department.setDepartment(depInfo.getDepartment()); department.setTaskcode(taskCode); department.setCreatedat(new Date()); department.setCreatedby(userInfo.getRealname()); departments.add(department); } taskInvolveDepService.saveBatch(departments); } TaskInfo taskInfo = BeanUtils.copy(taskVo,TaskInfo.class); if (departmentInfo != null && !level.equals(TaskInfo.LEVEL_SECOND)){ taskInfo.setSecuritydep(departmentInfo.getDepartment()); } taskInfo.setStatus(TaskInfo.UNCOMMITTED); taskInfo.setCode(taskCode); taskInfo.setCreatedat(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); taskVo.setCode(taskCode); List taskSecurities = taskVo.getTaskSecurities(); //subTask存储 String option = "CREATE"; subTaskService.saveSubTasks(taskVo.getSubTaskInfos(),taskCode,userInfo,option); taskService.save(taskInfo); taskSecurityService.saveBatch(taskSecurities); String content = "创建任务信息"; TaskLog taskLog = new TaskLog(taskCode,content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); } return success(taskVo); } @ApiOperation(value = "修改任务信息",notes = "修改任务信息") @PostMapping("/update") public Msg updateTask(@Validated @RequestBody TaskVo taskVo, BindingResult bindingResult){ if (bindingResult.hasErrors()) { StringBuilder stringBuilder = new StringBuilder(); for (String s : bindingResult.getFieldErrors().stream() .map(FieldError::getDefaultMessage).collect(Collectors.toList())) { stringBuilder.append(s).append(","); } return new Msg(ErrorCode.ERROR_10002,stringBuilder.toString()); } if (taskVo.getId() == null){ return new Msg(ErrorCode.ERROR_10004); } UserInfo userInfo = userService.getById(getUser().getId()); TaskInfo taskInfoExist = taskService.getById(taskVo.getId()); if (taskInfoExist == null){ return new Msg(ErrorCode.ERROR_50001); } TaskInfo taskInfo = BeanUtils.copy(taskVo,TaskInfo.class); taskInfo.setModifiedat(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); String taskCode = taskVo.getCode(); String option = "UPDATE"; subTaskService.saveSubTasks(taskVo.getSubTaskInfos(),taskCode,userInfo, option); //吨位不可以改 taskInfo.setEtype(null); taskService.updateById(taskInfo); return success(); } @ApiOperation(value = "第二步创建信息",notes = "第二步创建信息") @PostMapping("/create/second") public Msg updateTask(@RequestBody TaskVo taskVo){ if (taskVo.getCode() == null){ return new Msg(ErrorCode.ERROR_10004); } TaskInfo taskInfoExist = taskService.getTaskByCode(taskVo.getCode()); if (taskInfoExist == null){ return new Msg(ErrorCode.ERROR_50001); } Date now = new Date(); UserInfo userInfo = userService.getById(getUser().getId()); Listsecurities = taskVo.getTaskSecurities(); if (securities == null || securities.size() == 0){ return new Msg(ErrorCode.ERROR_10002,"安全措施为空"); } securities.forEach(item->{ item.setTaskcode(taskVo.getCode()); item.setCreatedat(now); item.setCreatedby(userInfo.getRealname()); item.setConfirmedby(userInfo.getRealname()); }); TaskRisk risk = taskVo.getTaskRisk(); if (risk == null) { return new Msg(ErrorCode.ERROR_10002,"请填写安全风险"); } risk.setCreatedat(now); risk.setCreatedby(userInfo.getRealname()); Listequipments = taskVo.getTaskEquipments(); if (equipments == null || equipments.size() == 0){ return new Msg(ErrorCode.ERROR_10002,"请选择安全设备"); } equipments.forEach(item->{ item.setTaskcode(taskVo.getCode()); item.setCreatedat(now); item.setCreatedby(userInfo.getRealname()); }); taskSecurityService.saveBatch(securities); taskRiskService.save(risk); taskEquipmentService.saveBatch(equipments); return success(); } @ApiOperation(value = "第二步更新信息",notes = "第二步更新信息") @PostMapping("/update/second") public Msg updateTaskSecond(@RequestBody TaskVo taskVo){ if (taskVo.getCode() == null){ return new Msg(ErrorCode.ERROR_10004); } TaskInfo taskInfoExist = taskService.getTaskByCode(taskVo.getCode()); if (taskInfoExist == null){ return new Msg(ErrorCode.ERROR_50001); } UserInfo userInfo = userService.getById(getUser().getId()); taskSecurityService.removeByTaskCode(taskVo.getCode()); taskEquipmentService.removeByTaskCode(taskVo.getCode()); taskRiskService.removeByCode(taskVo.getCode()); //更新删除原先的,重新插入 Date now = new Date(); List taskSecurities = taskVo.getTaskSecurities(); if (taskSecurities == null || taskSecurities.size() == 0){ return new Msg(ErrorCode.ERROR_10002,"安全措施为空"); } taskSecurities.forEach(item->{ item.setTaskcode(taskVo.getCode()); item.setCreatedat(now); item.setCreatedby(userInfo.getRealname()); item.setConfirmedby(userInfo.getRealname()); }); taskSecurityService.saveBatch(taskSecurities); List taskEquipments = taskVo.getTaskEquipments(); if (taskEquipments == null || taskEquipments.size() == 0){ return new Msg(ErrorCode.ERROR_10002,"请选择安全设备"); } taskEquipments.forEach(item->{ item.setTaskcode(taskVo.getCode()); item.setCreatedat(now); item.setCreatedby(userInfo.getRealname()); }); taskEquipmentService.saveBatch(taskEquipments); TaskRisk risk = taskVo.getTaskRisk(); if (risk == null) { return new Msg(ErrorCode.ERROR_10002,"请填写安全风险"); } risk.setTaskcode(taskVo.getCode()); risk.setCreatedat(now); risk.setCreatedby(userInfo.getRealname()); taskRiskService.save(risk); return success(); } @ApiOperation(value = "创建任务信息", notes = "安卓端") @ApiImplicitParams({ @ApiImplicitParam(paramType = "TaskVo", name = "task", value = "任务类"), }) @PostMapping("/app/create") public synchronized Msg appCreateTask(@RequestBody TaskVo taskVo) { if (taskVo == null){ return new Msg(ErrorCode.ERROR_10001); } try { UserInfo userInfo = userService.getById(getUser().getId()); if (taskVo.getIsanalysis() == 1){ taskService.saveTaskForAnalysis(taskVo,userInfo); }else { taskService.saveTaskByApp(taskVo, getUser()); } return success(); } catch (BusinessException e) { e.printStackTrace(); return new Msg(ErrorCode.ERROR_10002, e.getMessage()); } catch (Exception e) { e.printStackTrace(); return new Msg(ErrorCode.ERROR_40001, "系统内部错误"); } } @ApiOperation(value = "删除任务信息",notes = "删除任务信息") @ApiImplicitParams({ @ApiImplicitParam(name = "id",value = "任务id"), }) @PostMapping("/delete") public Msg deleteTask(Long id){ TaskInfo taskInfo = taskService.getById(id); if (id == null || taskInfo == null){ return new Msg(ErrorCode.ERROR_10001); } if (!taskInfo.getFlag().equals(TaskInfo.WAIT_REVIEW)){ return new Msg(ErrorCode.ERROR_50005,"当前状态无法作废"); } Byte isDeleted = 1; UserInfo userInfo = userService.getById(getUser().getId()); taskInfo.setIsdel(isDeleted); taskService.updateById(taskInfo); String taskCode = taskInfo.getCode(); taskSecurityService.deleteByTaskCode(taskCode); taskWorkerService.deleteByTaskCode(taskCode); taskEnclosureService.removeByTaskCode(taskCode); taskRiskService.deleteByTaskCode(taskCode); taskAnalysisService.deleteByTaskCode(taskCode); taskReviewService.deleteByTaskCode(taskCode); String content = "删除任务"; TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); return success(); } @ApiOperation(value = "web端上传图片",notes = "web端上传图片") @ApiImplicitParams({ @ApiImplicitParam(paramType="query",name = "files",value = "文件"), }) @PostMapping("/web/upload") @ResponseBody public Msg upload(StandardMultipartHttpServletRequest req){ MultiValueMap multipartFiles = req.getMultiFileMap(); MultipartFile picFile = null; if (multipartFiles.get("files") == null){ if(multipartFiles.get("file") != null){ picFile = multipartFiles.get("file").get(0); } }else { picFile = multipartFiles.get("files").get(0); } if (null == picFile){ return new Msg(ErrorCode.ERROR_10001); }else { try { String picName = UploadUtil.uploadFile(picFile,taskPath); HashMap map = new HashMap<>(4); map.put("name",picFile.getOriginalFilename()); map.put("path",task+picName); return success(map); }catch (Exception e){ e.printStackTrace(); return new Msg(ErrorCode.ERROR_40001); } } } @ApiOperation(value = "上传图片",notes = "上传图片") @ApiImplicitParams({ @ApiImplicitParam(paramType="query",name = "files",value = "文件"), }) @PostMapping("/uploadPic") @ResponseBody public Msg uploadPic(StandardMultipartHttpServletRequest req){ Msg msg = new Msg(); msg.setCode("200"); msg.setMessage("success"); MultiValueMap multipartFiles = req.getMultiFileMap(); MultipartFile picFile = multipartFiles.get("files").get(0); if (null == picFile){ msg.setCode("404"); msg.setMessage("上传文件为空"); }else { try { String picmame = UploadUtil.uploadFile(picFile,taskPath); msg.setResult(task+picmame); }catch (Exception e){ e.printStackTrace(); msg.setCode("500"); msg.setMessage("上传失败"); } } return msg; } @PostMapping("/upload") public Msg uploadFiles(TaskEnclosureVo taskEnclosureVo) throws Exception { MultipartFile[]files = taskEnclosureVo.getFile(); Listenclosures = new ArrayList<>(); UserInfo userInfo = userService.getById(getUser().getId()); if (files != null && files.length > 0) { for (MultipartFile file : files) { String name = UploadUtil.uploadFile(file, taskPath); TaskEnclosure enclosure = new TaskEnclosure(); String fileType = file.getContentType(); if (fileType != null && fileType.contains("image")){ enclosure.setFiletype((byte)1); }else if (fileType != null && fileType.contains("pdf")){ enclosure.setFiletype((byte)2); } enclosure.setTaskcode(taskEnclosureVo.getTaskcode()); enclosure.setFilename(name); enclosure.setType(taskEnclosureVo.getType()); enclosure.setFileurl(task + name); enclosure.setCreatedat(new Date()); enclosure.setCreatedby(userInfo.getRealname()); enclosure.setOriginalname(file.getOriginalFilename()); enclosures.add(enclosure); } } taskEnclosureService.saveBatch(enclosures); return success(); } @PostMapping("/getFiles") public Msg getFiles(String taskCode){ return success(taskEnclosureService.getListByTaskCode(taskCode)); } @PostMapping("/deleteFile") public Msg deleteFile(String id){ TaskEnclosure taskEnclosure = taskEnclosureService.getById(id); if (taskEnclosure == null){ return new Msg(ErrorCode.ERROR_50001); } taskEnclosureService.removeById(id); return success(); } @PostMapping("/analysis/add") public Msg addAnalysis(@RequestBody TaskAnalysis analysis, BindingResult bindingResult){ if (bindingResult.hasErrors()) { StringBuilder stringBuilder = new StringBuilder(); for (String s : bindingResult.getFieldErrors().stream() .map(FieldError::getDefaultMessage).collect(Collectors.toList())) { stringBuilder.append(s).append(","); } return new Msg(ErrorCode.ERROR_10002,stringBuilder.toString()); } UserInfo userInfo = userService.getById(getUser().getId()); analysis.setAnalysisat(new Date()); analysis.setCreatedat(new Date()); analysis.setCreatedby(userInfo.getRealname()); taskAnalysisService.save(analysis); return success(); } @ApiOperation(value = "获取部门任务信息",notes = "获取部门任务信息") @GetMapping("/info/dep") @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex",value = "当前分页"), @ApiImplicitParam(name = "pageSize",value = "分页每页数量"), @ApiImplicitParam(name = "sort",value = "排序列名"), @ApiImplicitParam(name = "order",value = "排序方式(正序反序)") }) public Msg getTaskInfosByDep(@RequestParam(value = "code", required = false) String code, @RequestParam(value = "level", required = false) String level, @RequestParam(value = "status", required = false) String status, @RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order){ PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); UserInfo userInfo = userService.getById(getUser().getId()); Map condition = new HashMap<>(4); if (StringUtils.isNotBlank(code)) { condition.put("code", code); } if (StringUtils.isNotBlank(level)) { condition.put("level", level); } if (StringUtils.isNotBlank(status)) { condition.put("status", status); } condition.put("unit",userInfo.getCompany()); condition.put("department",userInfo.getDepartment()); pageInfo.setCondition(condition); taskService.selectDataGridByDep(pageInfo); return success(pageInfo); } @ApiOperation(value = "获取可查看任务信息",notes = "获取可查看任务信息") @GetMapping("/info/viewable") @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex",value = "当前分页"), @ApiImplicitParam(name = "pageSize",value = "分页每页数量"), @ApiImplicitParam(name = "sort",value = "排序列名"), @ApiImplicitParam(name = "order",value = "排序方式(正序反序)"), @ApiImplicitParam(name = "code",value = "作业编号"), @ApiImplicitParam(name = "level",value = "作业级别"), @ApiImplicitParam(name = "status",value = "审批状态"), @ApiImplicitParam(name = "flag",value = "作业状态"), @ApiImplicitParam(name = "starttime",value = "开始时间"), @ApiImplicitParam(name = "endtime",value = "结束时间"), @ApiImplicitParam(name = "time",value = "查询时间"), @ApiImplicitParam(name = "applicant",value = "申请人"), @ApiImplicitParam(name = "tasktype",value = "作业类型"), @ApiImplicitParam(name = "department",value = "部门"), @ApiImplicitParam(name = "constructionunit",value = "施工单位"), }) public Msg getTaskInfosViewable(@RequestParam(value = "code", required = false) String code, @RequestParam(value = "level", required = false) String level, @RequestParam(value = "status", required = false) String status, @RequestParam(value = "flag", required = false) String flag, @RequestParam(value = "applicant", required = false) String applicant, @RequestParam(value = "starttime", required = false) String starttime, @RequestParam(value = "endtime", required = false) String endtime, @RequestParam(value = "tasktype", required = false) String tasktype, @RequestParam(value = "department", required = false) String department, @RequestParam(value = "time", required = false) String time, @RequestParam(value = "constructionunit", required = false) String constructionunit, @RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order){ PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); UserInfo userInfo = userService.getById(getUser().getId()); Map condition = new HashMap<>(4); if (StringUtils.isNotBlank(code)) { condition.put("code", code); } if (StringUtils.isNotBlank(level)) { condition.put("level", level); } if (StringUtils.isNotBlank(status)) { condition.put("status", status); } if (StringUtils.isNotBlank(starttime)) { condition.put("starttime", starttime); } if (StringUtils.isNotBlank(endtime)) { condition.put("endtime", endtime); } if (StringUtils.isNotBlank(tasktype)) { condition.put("tasktype", tasktype); } if (StringUtils.isNotBlank(department)) { condition.put("department", department); } if(time != null && time.length()>0){ condition.put("time", time); } if (StringUtils.isNotBlank(constructionunit)) { condition.put("constructionunit", constructionunit); } Listlist = new ArrayList<>(); if (StringUtils.isNotBlank(flag)) { list = StringUtils.toList(flag); for (String s : list){ for (int i = 0; i < s.length(); i++) { System.out.println(s.charAt(i)); if (!Character.isDigit(s.charAt(i))) { return new Msg(ErrorCode.ERROR_10003,"flag参数错误"); } } } } condition.put("list", list); if (StringUtils.isNotBlank(applicant)) { condition.put("applicant", applicant); } condition.put("unit",userInfo.getCompany()); condition.put("department",userInfo.getDepartment()); condition.put("userType",userInfo.getType()); pageInfo.setCondition(condition); taskService.selectDataGridViewable(pageInfo); return success(pageInfo); } @ApiOperation(value = "获取进行中的任务") @ApiImplicitParams({ @ApiImplicitParam(name = "time",value = "查询时间,不传则用当前时间",example = "2022-05-12 14:00:00"), @ApiImplicitParam(name = "type",value = "项目标识 1 - 60万吨 ,2 - 130万吨 ,不传则查全部") }) @RequestMapping(value = "/get/active",method = RequestMethod.GET) public Msg getInProgressTask(@RequestParam(required = false) String time,@RequestParam(required = false) Byte type){ Msg msg = new Msg(); Date queryTime = null; if(time != null && !time.isEmpty()){ try { queryTime = DateUtil.parseDateTime(time); } catch (Exception e) { e.printStackTrace(); } } msg.setResult(taskService.selectActiveTaskLocation(queryTime,type)); if(msg.getResult() != null){ msg.setCode("200"); }else { msg.setCode("300"); msg.setMessage("无作业数据"); } return msg; } @ApiOperation(value = "气体检测中心可操作任务信息",notes = "气体检测中心可操作任务信息") @GetMapping("/info/testing") @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex",value = "当前分页"), @ApiImplicitParam(name = "pageSize",value = "分页每页数量"), @ApiImplicitParam(name = "sort",value = "排序列名"), @ApiImplicitParam(name = "order",value = "排序方式(正序反序)") }) public Msg getTaskInfosTesting(@RequestParam(value = "code", required = false) String code, @RequestParam(value = "level", required = false) String level, @RequestParam(value = "status", required = false) String status, @RequestParam(value = "searchflag", required = false) String searchflag, @RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order){ PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); UserInfo userInfo = userService.getById(getUser().getId()); Map condition = new HashMap<>(4); if (StringUtils.isNotBlank(code)) { condition.put("code", code); } if (StringUtils.isNotBlank(level)) { condition.put("level", level); } if (StringUtils.isNotBlank(status)) { condition.put("status", status); } if (StringUtils.isBlank(searchflag)) { searchflag = "0"; } condition.put("searchflag", searchflag); // 当前用户的部门是分析部门 或者 当前用户的部门是作业的申请部门 且 当前用户是安全员 if (userInfo.getDepartment() == null) { return new Msg(ErrorCode.ERROR_50004,"用户未有部门"); } DepartmentInfo dep = departmentService.getById(userInfo.getDepartment()); if (dep == null) { return new Msg(ErrorCode.ERROR_50004,"用户部门不存在"); } if (departmentService.isAnalysis(dep.getDepartment())) { pageInfo.setCondition(condition); taskService.selectDataGridTesting(pageInfo); }else if(userInfo.getIssecurityofficer().equals((byte)1)){ pageInfo.setCondition(condition); condition.put("specificDepartment", userInfo.getDepartment()); taskService.selectDataGridTesting(pageInfo); } return success(pageInfo); } @ApiOperation(value = "获取待审批任务信息",notes = "获取待审批任务信息") @GetMapping("/info/review") @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex",value = "当前分页"), @ApiImplicitParam(name = "pageSize",value = "分页每页数量"), @ApiImplicitParam(name = "sort",value = "排序列名"), @ApiImplicitParam(name = "order",value = "排序方式(正序反序)"), @ApiImplicitParam(name = "code",value = "作业编号"), @ApiImplicitParam(name = "level",value = "作业级别"), @ApiImplicitParam(name = "status",value = "审批状态"), @ApiImplicitParam(name = "flag",value = "作业状态"), @ApiImplicitParam(name = "starttime",value = "开始时间"), @ApiImplicitParam(name = "endtime",value = "结束时间"), @ApiImplicitParam(name = "applicant",value = "申请人"), @ApiImplicitParam(name = "tasktype",value = "作业类型"), @ApiImplicitParam(name = "department",value = "部门"), @ApiImplicitParam(name = "constructionunit",value = "施工单位"), }) public Msg getWaitReviewTaskInfos(@RequestParam(value = "code", required = false) String code, @RequestParam(value = "level", required = false) String level, @RequestParam(value = "status", required = false) String status, @RequestParam(value = "flag", required = false) String flag, @RequestParam(value = "applicant", required = false) String applicant, @RequestParam(value = "starttime", required = false) String starttime, @RequestParam(value = "endtime", required = false) String endtime, @RequestParam(value = "tasktype", required = false) String tasktype, @RequestParam(value = "department", required = false) String department, @RequestParam(value = "constructionunit", required = false) String constructionunit, @RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order){ PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); UserInfo userInfo = userService.getById(getUser().getId()); Map condition = new HashMap<>(4); if (StringUtils.isNotBlank(code)) { condition.put("code", code); } if (StringUtils.isNotBlank(level)) { condition.put("level", level); } if (StringUtils.isNotBlank(status)) { condition.put("status", status); } if (StringUtils.isNotBlank(flag)) { condition.put("flag", flag); } if (StringUtils.isNotBlank(starttime)) { condition.put("starttime", starttime); } if (StringUtils.isNotBlank(endtime)) { condition.put("endtime", endtime); } if (StringUtils.isNotBlank(tasktype)) { condition.put("tasktype", tasktype); } if (StringUtils.isNotBlank(department)) { condition.put("department", department); } if (StringUtils.isNotBlank(constructionunit)) { condition.put("constructionunit", constructionunit); } condition.put("unit",userInfo.getCompany()); condition.put("department",userInfo.getDepartment()); condition.put("applicant",userInfo.getRealname()); condition.put("isCompany",userInfo.getIscompany()); condition.put("isDepartment",userInfo.getIsdepartment()); pageInfo.setCondition(condition); taskService.getWaitReviewDataGrid(pageInfo); return success(pageInfo); } @ApiOperation(value = "获取待处理任务信息",notes = "获取待处理任务信息") @GetMapping("/info/pending") @ApiImplicitParams({ @ApiImplicitParam(name = "type",value = "类型(1.当前用户为动火人;2.监火人;3.分析人)") }) public Msg getPendingTask(@RequestParam(value = "type", required = false) String type){ if (StringUtils.isBlank(type)){ return new Msg(ErrorCode.ERROR_10002); } UserInfo userInfo = userService.getById(getUser().getId()); ListtaskVos = taskService.getPendingTask(type,userInfo.getRealname()); return success(taskVos); } @ApiOperation(value = "获取进行中任务信息",notes = "获取进行中任务信息") @GetMapping("/info/doing") public Msg getPendingTask(){ ListtaskVos = taskService.getDoingTask(); return success(taskVos); } @ApiOperation(value = "提交任务到检测中心",notes = "提交任务到检测中心") @PostMapping("/gasCheck") public Msg gasCheck(Long id){ TaskInfo taskInfo = taskService.getById(id); UserInfo userInfo = userService.getById(getUser().getId()); if (!taskInfo.getApplicant().equals(userInfo.getRealname())){ return new Msg(ErrorCode.ERROR_50004,"只有申请人才能提交"); } if (!taskInfo.getIsanalysis() .equals((byte)1)){ return new Msg(ErrorCode.ERROR_50004,"当前任务不需要检测"); } if (!(taskInfo.getStatus().equals(TaskInfo.REJECTED) || taskInfo.getStatus().equals(TaskInfo.UNCOMMITTED))){ return new Msg(ErrorCode.ERROR_50004,"当前状态不允许提交任务到检测中心"); } //校验完成修改状态 taskInfo.setStatus(TaskInfo.TEST_COMMITTED); taskInfo.setModifiedat(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); taskService.updateById(taskInfo); String content = "提交任务到检测中心"; TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); return success(); } @PostMapping("/submit") public Msg submitTask(Long id){ TaskInfo taskInfo = taskService.getById(id); UserInfo userInfo = userService.getById(getUser().getId()); if (!taskInfo.getApplicant().equals(userInfo.getRealname())){ return new Msg(ErrorCode.ERROR_50004,"只有申请人才能提交"); } if (taskInfo.getIsanalysis() .equals((byte)1)){ if (!taskInfo.getStatus().equals(TaskInfo.TEST_CHECKED)){ return new Msg(ErrorCode.ERROR_50004,"当前任务未完成气体检测,不能提交施工部门审核"); } }else { if (!(taskInfo.getStatus().equals(TaskInfo.REJECTED) || taskInfo.getStatus().equals(TaskInfo.UNCOMMITTED))){ return new Msg(ErrorCode.ERROR_50004,"当前状态不允许提交"); } } Listsecurities = taskSecurityService.getListByTaskCode(taskInfo.getCode()); if (securities == null || securities.size() == 0){ return new Msg(ErrorCode.ERROR_50004,"安全措施不能为空"); } Listenclosures = taskEnclosureService.getListByTaskCode(taskInfo.getCode()); if (enclosures == null || enclosures.size() == 0) { return new Msg(ErrorCode.ERROR_50004,"文件不能为空"); } Listequipments = taskEquipmentService.getListByTaskCode(taskInfo.getCode()); if (equipments == null || equipments.size() == 0) { return new Msg(ErrorCode.ERROR_50004,"设备不能为空"); } TaskRisk risk = taskRiskService.getTaskRiskByCode(taskInfo.getCode()); if (risk == null){ return new Msg(ErrorCode.ERROR_50004,"安全风险不能为空"); } //校验完成修改状态 taskInfo.setStatus(TaskInfo.COMMITTED); taskInfo.setModifiedat(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); taskService.updateById(taskInfo); String content = "任务提交"; TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); return success(); } @ApiOperation(value = "app修改提交任务信息",notes = "app修改提交任务信息") @PostMapping("/app/update") public Msg appUpdateTask(@RequestBody TaskVo taskVo){ if (taskVo == null){ return new Msg(ErrorCode.ERROR_10001); } if (StringUtils.isBlank(taskVo.getCode())){ return new Msg(ErrorCode.ERROR_10004); } TaskInfo taskInfoExist = taskService.getTaskByCode(taskVo.getCode()); if (taskInfoExist == null){ return new Msg(ErrorCode.ERROR_50001); } UserInfo userInfo = userService.getById(getUser().getId()); taskVo.setId(taskInfoExist.getId()); if (taskInfoExist.getIsanalysis() == 1 && (taskInfoExist.getStatus().equals(TaskInfo.REJECTED) || taskInfoExist.getStatus().equals(TaskInfo.UNCOMMITTED))){ taskService.updateTaskByAppForAnalysis(taskVo,userInfo); }else { TaskRisk risk = taskVo.getTaskRisk(); if (risk == null) { return new Msg(ErrorCode.ERROR_10002,"请填写安全风险"); } List taskEquipments = taskVo.getTaskEquipments(); if (taskEquipments == null || taskEquipments.size() == 0){ return new Msg(ErrorCode.ERROR_10002,"请选择安全设备"); } List taskSecurities = taskVo.getTaskSecurities(); if (taskSecurities == null || taskSecurities.size() == 0){ return new Msg(ErrorCode.ERROR_10002,"安全措施为空"); } if (taskVo.getTaskReviews() == null || taskVo.getTaskReviews().size() < 1 || taskVo.getTaskReviews().get(0).getIsagree() == null){ return new Msg(ErrorCode.ERROR_10002,"审核信息不能为空"); } taskService.updateTaskByApp(taskVo,userInfo); } return success(); } @ApiOperation(value = "检测中心检测",notes = "检测中心检测") @PostMapping("/testingCenter/review") public Msg testingCenterReview(@RequestBody TaskVo taskVo){ if (StringUtils.isBlank(taskVo.getCode())){ return new Msg(ErrorCode.ERROR_10002); } TaskInfo taskInfo = taskService.getTaskByCode(taskVo.getCode()); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } if (taskVo.getTaskReviews() == null || taskVo.getTaskReviews().size() < 1 || taskVo.getTaskReviews().get(0).getIsagree() == null){ return new Msg(ErrorCode.ERROR_10002,"审核信息不能为空"); } TaskReview taskReview = taskVo.getTaskReviews().get(0); String content; UserInfo userInfo = userService.getById(getUser().getId()); if (taskInfo.getStatus().equals(TaskInfo.TEST_COMMITTED)){ if (taskReview.getIsagree() == 1){ taskInfo.setStatus(TaskInfo.TEST_CHECKED); ListtaskAnalyses = taskVo.getTaskAnalyses(); taskAnalyses.forEach(item->{ item.setTaskcode(taskVo.getCode()); item.setCreatedby(userInfo.getRealname()); item.setCreatedat(new Date()); }); taskAnalysisService.saveBatch(taskAnalyses); content = "检测中心确认"; }else { taskInfo.setStatus(TaskInfo.REJECTED); content = "检测中心驳回"; } }else if (taskInfo.getStatus().equals(TaskInfo.APPROVED) && taskInfo.getFlag().equals(TaskInfo.DOING)){ if (taskReview.getIsagree() == 1){ ListtaskAnalyses = taskVo.getTaskAnalyses(); taskAnalyses.forEach(item->{ item.setTaskcode(taskVo.getCode()); item.setCreatedby(userInfo.getRealname()); item.setCreatedat(new Date()); }); taskAnalysisService.saveBatch(taskAnalyses); content = "检测中心任务中提交数据"; }else { content = "检测中心提交检测异常"; String warnContent = "在任务 "+taskInfo.getCode()+" 中,检测中心提交检测异常"; WarningInfo warningInfo = new WarningInfo(); warningInfo.setCreatedat(new Date()); warningInfo.setTaskcode(taskInfo.getCode()); warningInfo.setContent(warnContent); warningInfo.setType(WarningInfo.WARNING); warningService.save(warningInfo); } }else { return new Msg(ErrorCode.ERROR_50004,"当前状态不允许确认"); } taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); taskReviewService.saveReview(taskReview); taskService.updateById(taskInfo); TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); return success(); } @ApiOperation(value = "施工单位确认",notes = "施工单位确认") @PostMapping("/construction/review") public Msg constructionReview(@RequestBody TaskVo taskVo){ if (StringUtils.isBlank(taskVo.getCode())){ return new Msg(ErrorCode.ERROR_10002); } TaskInfo taskInfo = taskService.getTaskByCode(taskVo.getCode()); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } if (!taskInfo.getStatus().equals(TaskInfo.COMMITTED)){ return new Msg(ErrorCode.ERROR_50004,"当前状态不允许确认"); } if (taskVo.getTaskReviews() == null || taskVo.getTaskReviews().size() < 1 || taskVo.getTaskReviews().get(0).getIsagree() == null){ return new Msg(ErrorCode.ERROR_10002,"审核信息不能为空"); } TaskReview taskReview = taskVo.getTaskReviews().get(0); String content; UserInfo userInfo = userService.getById(getUser().getId()); if (!userInfo.getCompany().equals(taskInfo.getConstructionunit()) && !userInfo.getDepartment().equals(taskInfo.getConstructionunit())){ return new Msg(ErrorCode.ERROR_70001); } if (taskReview.getIsagree() == 1){ taskInfo.setStatus(TaskInfo.CONTRACTOR_APPROVED); taskInfo.setConstructionopinion(taskVo.getConstructionopinion() == null?"同意":taskVo.getConstructionopinion()); taskInfo.setConstructionname(userInfo.getRealname()); taskInfo.setConstructiontime(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); Listworkers = taskVo.getTaskWorkers(); Listsecurities = taskVo.getTaskSecurities(); Listenclosures = taskVo.getResources(); Listequipments = taskVo.getTaskEquipments(); TaskRisk risk = taskRiskService.getTaskRiskByCode(taskVo.getCode()); risk.setConfirmat(new Date()); taskRiskService.updateById(risk); taskWorkerService.saveBatch(workers, userInfo); taskSecurityService.saveBatch(securities); taskEquipmentService.saveBatch(equipments); taskEnclosureService.saveBatch(enclosures); content = "施工单位确认"; }else { taskInfo.setStatus(TaskInfo.REJECTED); taskInfo.setConstructionopinion(taskVo.getConstructionopinion() == null?"驳回":taskVo.getConstructionopinion()); taskInfo.setConstructionname(userInfo.getRealname()); taskInfo.setConstructiontime(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); content = "施工单位驳回"; } taskService.updateById(taskInfo); taskReviewService.saveReview(taskReview); TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); return success(); } @ApiOperation(value = "动火部位审核",notes = "动火部位审核") @PostMapping("/part/review") public Msg partReview(@RequestBody TaskVo taskVo){ if (StringUtils.isBlank(taskVo.getCode())){ return new Msg(ErrorCode.ERROR_10002); } TaskInfo taskInfo = taskService.getTaskByCode(taskVo.getCode()); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } if (!taskInfo.getStatus().equals(TaskInfo.CONTRACTOR_APPROVED)){ return new Msg(ErrorCode.ERROR_50004,"当前状态不允许确认"); } if (taskVo.getTaskReviews() == null || taskVo.getTaskReviews().size() < 1 || taskVo.getTaskReviews().get(0).getIsagree() == null){ return new Msg(ErrorCode.ERROR_10002,"审核信息不能为空"); } TaskReview taskReview = taskVo.getTaskReviews().get(0); UserInfo userInfo = userService.getById(getUser().getId()); String content; Byte level = taskInfo.getLevel(); if (taskInfo.getIsholiday().equals((byte)1)){ level++; } if (taskReview.getIsagree() == 1){ if (StringUtils.isBlank(taskVo.getApproversupervisor())){ return new Msg(ErrorCode.ERROR_10002,"需要指定监火人"); } if (StringUtils.isBlank(taskVo.getAnalyst())){ return new Msg(ErrorCode.ERROR_10002,"需要指定分析人"); } if (level.equals(TaskInfo.LEVEL_SECOND)){ taskInfo.setStatus(TaskInfo.APPROVED); taskInfo.setFlag(TaskInfo.WAIT_CHECK); }else { taskInfo.setStatus(TaskInfo.PART_APPROVED); } taskInfo.setApplyunitopinion(taskVo.getApplyunitopinion() == null?"同意":taskVo.getApplyunitopinion()); taskInfo.setApplyunitname(userInfo.getRealname()); taskInfo.setApplyunittime(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); taskInfo.setAnalyst(taskVo.getAnalyst()); taskInfo.setApproversupervisor(taskVo.getApproversupervisor()); content = "动火部位审核通过"; }else { taskInfo.setStatus(TaskInfo.REJECTED); taskInfo.setApplyunitopinion(taskVo.getApplyunitopinion() == null?"驳回":taskVo.getApplyunitopinion()); taskInfo.setApplyunitname(userInfo.getRealname()); taskInfo.setApplyunittime(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); taskEquipmentService.removeByTaskCodeByConstruction(taskInfo.getCode()); content = "动火部位审核驳回"; } taskService.updateById(taskInfo); taskReviewService.saveReview(taskReview); TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); return success(); } @ApiOperation(value = "相关部门审核",notes = "相关部门审核") @PostMapping("/involve/review") public Msg involveReview(@RequestBody TaskVo taskVo){ if (StringUtils.isBlank(taskVo.getCode())){ return new Msg(ErrorCode.ERROR_10002); } TaskInfo taskInfo = taskService.getTaskByCode(taskVo.getCode()); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } if (!taskInfo.getStatus().equals(TaskInfo.PART_APPROVED)){ return new Msg(ErrorCode.ERROR_50004,"当前状态不允许确认"); } if (taskVo.getTaskReviews() == null || taskVo.getTaskReviews().size() < 1 || taskVo.getTaskReviews().get(0).getIsagree() == null){ return new Msg(ErrorCode.ERROR_10002,"审核信息不能为空"); } TaskReview taskReview = taskVo.getTaskReviews().get(0); UserInfo userInfo = userService.getById(getUser().getId()); Listdepartments = taskInvolveDepService.getListByTaskCode(taskVo.getCode()); boolean isReviewed = false; if (taskReview.getIsagree() == 1){ for (TaskInvolveDepartment department : departments){ if (department.getDepartment().equals(userInfo.getDepartment())){ department.setStatus((byte)1); department.setContent(taskVo.getRelevantopinion() == null?"同意":taskVo.getRelevantopinion()); department.setReviewedby(userInfo.getRealname()); department.setReviewedat(new Date()); taskInvolveDepService.updateById(department); String content = department.getDepartment()+"审核通过"; TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); isReviewed = true; } } }else { for (TaskInvolveDepartment department : departments){ if (department.getDepartment().equals(userInfo.getDepartment())){ department.setStatus((byte)2); department.setContent(taskVo.getRelevantopinion() == null?"驳回":taskVo.getRelevantopinion()); department.setReviewedby(userInfo.getRealname()); department.setReviewedat(new Date()); taskInvolveDepService.updateById(department); String content = department.getDepartment()+"审核驳回"; TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); isReviewed = true; } } taskInfo.setStatus(TaskInfo.REJECTED); taskInfo.setRelevantopinion(taskVo.getRelevantopinion() == null?"驳回":taskVo.getRelevantopinion()); taskInfo.setApplyunitname(userInfo.getRealname()); taskInfo.setApplyunittime(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); taskService.updateById(taskInfo); taskEquipmentService.removeByTaskCodeByConstruction(taskInfo.getCode()); if (!isReviewed){ return new Msg(ErrorCode.ERROR_70001); } return success(); } if (!isReviewed){ return new Msg(ErrorCode.ERROR_70001); } boolean isAllAgree = true; for (TaskInvolveDepartment department : departments){ if (!department.getStatus().equals((byte)1)) { isAllAgree = false; } } if (isAllAgree){ taskInfo.setStatus(TaskInfo.RELEVANT_APPROVED); taskInfo.setRelevantopinion(departments.get(0).getContent()); taskInfo.setRelevanttime(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); taskService.updateById(taskInfo); } return success(); } @ApiOperation(value = "安全部门审核",notes = "安全部门审核") @PostMapping("/security/review") public Msg securityReview(@RequestBody TaskVo taskVo){ if (StringUtils.isBlank(taskVo.getCode())){ return new Msg(ErrorCode.ERROR_10002); } TaskInfo taskInfo = taskService.getTaskByCode(taskVo.getCode()); Byte level = taskInfo.getLevel(); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } if (taskInfo.getIsholiday().equals((byte)1)){ level++; } if (!taskInfo.getStatus().equals(TaskInfo.RELEVANT_APPROVED)){ return new Msg(ErrorCode.ERROR_50004,"当前状态不允许确认"); } if (taskVo.getTaskReviews() == null || taskVo.getTaskReviews().size() < 1 || taskVo.getTaskReviews().get(0).getIsagree() == null){ return new Msg(ErrorCode.ERROR_10002,"审核信息不能为空"); } TaskReview taskReview = taskVo.getTaskReviews().get(0); String content; UserInfo userInfo = userService.getById(getUser().getId()); if (taskReview.getIsagree() == 1){ if (level.equals(TaskInfo.LEVEL_ONE)){ taskInfo.setStatus(TaskInfo.APPROVED); taskInfo.setFlag(TaskInfo.WAIT_CHECK); }else { taskInfo.setStatus(TaskInfo.SECURITY_APPROVED); } taskInfo.setSecurityopinion(taskVo.getSecurityopinion() == null?"同意":taskVo.getSecurityopinion()); taskInfo.setSecurityname(userInfo.getRealname()); taskInfo.setSecuritytime(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); content = "安全部门审核通过"; }else { taskInfo.setStatus(TaskInfo.REJECTED); taskInfo.setSecurityopinion(taskVo.getSecurityopinion() == null?"驳回":taskVo.getSecurityopinion()); taskInfo.setSecurityname(userInfo.getRealname()); taskInfo.setSecuritytime(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); content = "安全部门审核驳回"; taskEquipmentService.removeByTaskCodeByConstruction(taskInfo.getCode()); } taskService.updateById(taskInfo); taskReviewService.saveReview(taskReview); TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); return success(); } @ApiOperation(value = "单位负责人审核",notes = "单位负责人审核") @PostMapping("/leader/review") public Msg leaderReview(@RequestBody TaskVo taskVo){ if (StringUtils.isBlank(taskVo.getCode())){ return new Msg(ErrorCode.ERROR_10002); } TaskInfo taskInfo = taskService.getTaskByCode(taskVo.getCode()); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } if (!taskInfo.getStatus().equals(TaskInfo.SECURITY_APPROVED)){ return new Msg(ErrorCode.ERROR_50004,"当前状态不允许确认"); } if (taskVo.getTaskReviews() == null || taskVo.getTaskReviews().size() < 1 || taskVo.getTaskReviews().get(0).getIsagree() == null){ return new Msg(ErrorCode.ERROR_10002,"审核信息不能为空"); } TaskReview taskReview = taskVo.getTaskReviews().get(0); String content; UserInfo userInfo = userService.getById(getUser().getId()); if (taskReview.getIsagree() == 1){ taskInfo.setStatus(TaskInfo.APPROVED); taskInfo.setFlag(TaskInfo.WAIT_CHECK); taskInfo.setEnterpriseopinion(taskVo.getEnterpriseopinion() == null?"同意":taskVo.getEnterpriseopinion()); taskInfo.setEnterprisename(userInfo.getRealname()); taskInfo.setEnterprisetime(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); content = "单位负责人审核通过"; }else { taskInfo.setStatus(TaskInfo.REJECTED); taskInfo.setEnterpriseopinion(taskVo.getEnterpriseopinion() == null?"驳回":taskVo.getEnterpriseopinion()); taskInfo.setEnterprisename(userInfo.getRealname()); taskInfo.setEnterprisetime(new Date()); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); content = "单位负责人审核驳回"; taskEquipmentService.removeByTaskCodeByConstruction(taskInfo.getCode()); } taskReviewService.saveReview(taskReview); taskService.updateById(taskInfo); TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); return success(); } @ApiOperation(value = "申请人撤销",notes = "申请人撤销") @PostMapping("/revoke") public Msg revoke(@RequestBody TaskVo taskVo){ if (StringUtils.isBlank(taskVo.getCode())){ return new Msg(ErrorCode.ERROR_10002); } TaskInfo taskInfo = taskService.getTaskByCode(taskVo.getCode()); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } if (!taskInfo.getStatus().equals(TaskInfo.COMMITTED)){ return new Msg(ErrorCode.ERROR_50004,"当前状态不允许取消"); } UserInfo userInfo = userService.getById(getUser().getId()); if (!userInfo.getRealname().equals(taskInfo.getApplicant())){ return new Msg(ErrorCode.ERROR_50004,"只有申请人才能撤销"); } String content = "撤销申请"; taskInfo.setStatus(TaskInfo.UNCOMMITTED); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); taskService.updateById(taskInfo); TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); return success(); } @ApiOperation(value = "监火人检查",notes = "监火人检查") @PostMapping("/supervisor/check") public Msg supervisorCheck(@RequestBody TaskCheck taskCheck){ if (taskCheck == null || StringUtils.isBlank(taskCheck.getCode())){ return new Msg(ErrorCode.ERROR_10001); } TaskReview taskReview = taskCheck.getTaskReview(); if (taskReview == null || taskReview.getIsagree() == null){ return new Msg(ErrorCode.ERROR_10001,"审核信息不能为空"); } UserInfo userInfo = userService.getById(getUser().getId()); TaskInfo taskInfo = taskService.getTaskByCode(taskCheck.getCode()); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } Date now = new Date(); if (now.getTime() < taskInfo.getStarttime().getTime() || now.getTime() > taskInfo.getEndtime().getTime()){ return new Msg(ErrorCode.ERROR_50004,"不在预计的工作时间"); } byte isAgree = taskCheck.getTaskReview().getIsagree(); byte agree = 1; byte refuse = 0; if (isAgree == agree){ for (EquipmentInfo equipmentInfo:taskCheck.getEquipments()){ EquipmentInfo equipmentInfoExist = equipmentService.selectByNumber(equipmentInfo.getNumber()); TaskEquipmentBindInfo taskEquipmentBindInfo = new TaskEquipmentBindInfo(); if (equipmentInfoExist == null){ return new Msg(ErrorCode.ERROR_10004,"未找到该条码对应的设备"); }else { taskEquipmentBindInfo.setEquipmentname(equipmentInfoExist.getName()); } taskEquipmentBindInfo.setTaskcode(taskCheck.getCode()); taskEquipmentBindInfo.setEquipmentnumber(equipmentInfo.getNumber()); taskEquipmentBindInfo.setUpdateby(getUser().getRealname()); taskEquipmentBindInfo.setUpdatetime(new Date()); taskEquipmentBindService.save(taskEquipmentBindInfo); } taskInfo.setSupervisoropinion(taskCheck.getContent()); taskInfo.setFlag(TaskInfo.WAIT_START); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); taskService.updateById(taskInfo); String content = "监火人检查任务通过"; TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); }else if (isAgree == refuse){ taskInfo.setSupervisoropinion(taskCheck.getContent()); taskInfo.setFlag(TaskInfo.WAIT_RECTIFY); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); taskService.updateById(taskInfo); List resources = taskCheck.getResources(); if (resources == null || resources.size() == 0){ return new Msg(ErrorCode.ERROR_10002); } taskEnclosureService.removeByTaskCodeAndType(taskInfo.getCode(),"检查整改问题"); resources.forEach(item->{ item.setTaskcode(taskCheck.getCode()); item.setCreatedat(new Date()); item.setCreatedby(userInfo.getRealname()); }); taskEnclosureService.saveBatch(taskCheck.getResources()); String content = "监火人检查任务不通过"; TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); } taskReviewService.saveReview(taskReview); return success(); } @PostMapping("/addEquipments") @ApiOperation(value = "添加作业设备数据",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "taskcode",value = "作业编号"), @ApiImplicitParam(name = "equipmentnumber",value = "设备条码"), }) public Msg addTaskEquipments(@RequestBody TaskCheck taskCheck){ if (taskCheck == null || StringUtils.isBlank(taskCheck.getCode())){ return new Msg(ErrorCode.ERROR_10001); } TaskReview taskReview = taskCheck.getTaskReview(); if (taskReview == null || taskReview.getIsagree() == null){ return new Msg(ErrorCode.ERROR_10001,"审核信息不能为空"); } UserInfo userInfo = userService.getById(getUser().getId()); TaskInfo taskInfo = taskService.getTaskByCode(taskCheck.getCode()); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } if (!taskInfo.getFlag().equals(TaskInfo.WAIT_START)){ return new Msg(ErrorCode.ERROR_50004); } Date now = new Date(); if (now.getTime() < taskInfo.getStarttime().getTime() || now.getTime() > taskInfo.getEndtime().getTime()){ return new Msg(ErrorCode.ERROR_50004,"不在预计的工作时间"); } if (taskCheck.getEquipments() == null || taskCheck.getEquipments().size() == 0){ return new Msg(ErrorCode.ERROR_10002,"设备信息不能为空"); } ListequipmentBindInfos = new ArrayList<>(); ListequipmentInfos = new ArrayList<>(); for (EquipmentInfo equipmentInfo:taskCheck.getEquipments()){ EquipmentInfo equipmentInfoExist = equipmentService.selectByNumber(equipmentInfo.getNumber()); taskEquipmentBindService.removeByTaskCode(taskCheck.getCode(),userInfo.getRealname()); TaskEquipmentBindInfo taskEquipmentBindInfo = new TaskEquipmentBindInfo(); if (equipmentInfoExist == null){ return new Msg(ErrorCode.ERROR_10004,equipmentInfo.getNumber()+" 未找到该条码对应的设备"); }else if (equipmentInfoExist.getStatus() == (byte)1){ return new Msg(ErrorCode.ERROR_10004,equipmentInfo.getNumber()+" 该设备正在使用中"); }else { taskEquipmentBindInfo.setEquipmentname(equipmentInfoExist.getName()); } taskEquipmentBindInfo.setTaskcode(taskCheck.getCode()); taskEquipmentBindInfo.setEquipmentnumber(equipmentInfo.getNumber()); taskEquipmentBindInfo.setUpdateby(userInfo.getRealname()); taskEquipmentBindInfo.setUpdatetime(new Date()); equipmentBindInfos.add(taskEquipmentBindInfo); byte using = 1; equipmentInfoExist.setStatus(using); equipmentInfos.add(equipmentInfoExist); } taskEquipmentBindService.saveBatch(equipmentBindInfos); equipmentService.updateBatchById(equipmentInfos); taskInfo.setSupervisoropinion(taskCheck.getContent()); taskInfo.setFlag(TaskInfo.DOING); taskInfo.setModifiedby(userInfo.getRealname()); taskInfo.setModifiedat(new Date()); taskService.updateById(taskInfo); taskReviewService.saveReview(taskReview); String content = "绑定设备,准备开始工作"; TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),getUser().getCompany()); taskLogService.save(taskLog); return success(); } @PostMapping("/flag/check") @ApiOperation(value = "将异常任务修改成待检查",response = Msg.class) public Msg changeStatus(@RequestBody TaskCheck taskCheck){ if (StringUtils.isBlank(taskCheck.getCode())){ return new Msg(ErrorCode.ERROR_10001); } TaskInfo taskInfo = taskService.getTaskByCode(taskCheck.getCode()); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } if (!(taskInfo.getFlag().equals(TaskInfo.WAIT_RECTIFY) || taskInfo.getFlag().equals(TaskInfo.ABORT) )){ return new Msg(ErrorCode.ERROR_50004); } taskInfo.setFlag(TaskInfo.WAIT_CHECK); taskInfo.setModifiedat(new Date()); taskInfo.setModifiedby(getUser().getRealname()); taskService.updateById(taskInfo); return success(); } @PostMapping("/flag/abort") @ApiOperation(value = "将进行中的任务改为中止",response = Msg.class) public Msg changeStatusAbort(@RequestBody TaskCheck taskCheck){ if (StringUtils.isBlank(taskCheck.getCode())){ return new Msg(ErrorCode.ERROR_10001); } TaskInfo taskInfo = taskService.getTaskByCode(taskCheck.getCode()); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } if (!(taskInfo.getFlag().equals(TaskInfo.DOING))){ return new Msg(ErrorCode.ERROR_50004); } UserInfo userInfo = userService.getById(getUser().getId()); taskInfo.setFlag(TaskInfo.ABORT); taskInfo.setModifiedat(new Date()); taskInfo.setModifiedby(getUser().getRealname()); taskInfo.setContent(taskCheck.getContent()); taskEnclosureService.removeAndSave(taskCheck,userInfo); ListequipmentInfos = equipmentService.selectUsingByTask(taskCheck.getCode()); equipmentInfos.forEach(item->{ byte free = 0; item.setStatus(free); item.setUpdatetime(new Date()); item.setUpdateby(getUser().getRealname()); }); equipmentService.updateBatchById(equipmentInfos); taskService.updateById(taskInfo); return success(); } @PostMapping("/flag/complete") @ApiOperation(value = "将进行中的任务改为已完成",response = Msg.class) public Msg changeStatusComplete(@RequestBody TaskCheck taskCheck){ if (StringUtils.isBlank(taskCheck.getCode())){ return new Msg(ErrorCode.ERROR_10001); } TaskInfo taskInfo = taskService.getTaskByCode(taskCheck.getCode()); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } if (!(taskInfo.getFlag().equals(TaskInfo.DOING))){ return new Msg(ErrorCode.ERROR_50004); } taskInfo.setFlag(TaskInfo.COMPLETE); taskInfo.setModifiedat(new Date()); taskInfo.setModifiedby(getUser().getRealname()); taskInfo.setOpinion(taskCheck.getContent()); if (taskCheck.getResources() != null && taskCheck.getResources().size() != 0){ taskEnclosureService.removeByTaskCodeAndType(taskInfo.getCode(),"检查整改问题"); List resources = taskCheck.getResources(); resources.forEach(item->{ item.setTaskcode(taskCheck.getCode()); item.setCreatedat(new Date()); item.setCreatedby(getUser().getRealname()); }); taskEnclosureService.saveBatch(taskCheck.getResources()); } ListequipmentInfos = equipmentService.selectUsingByTask(taskCheck.getCode()); equipmentInfos.forEach(item->{ byte free = 0; item.setStatus(free); item.setUpdatetime(new Date()); item.setUpdateby(getUser().getRealname()); }); equipmentService.updateBatchById(equipmentInfos); taskService.updateById(taskInfo); return success(); } @ApiOperation(value = "变更监护人",response = Msg.class) @PostMapping("/changeSupervisor") @ApiImplicitParams({ @ApiImplicitParam(name = "taskcode",value = "任务编号"), @ApiImplicitParam(name = "approversupervisor",value = "监护人") }) public Msg changeSupervisor(@RequestBody JSONObject object){ String taskCode = object.getString("taskcode"); if (StringUtils.isBlank(taskCode)){ return new Msg(ErrorCode.ERROR_10001); } TaskInfo taskInfo = taskService.getTaskByCode(taskCode); UserInfo userInfo = userService.getById(getUser().getId()); ListstatusList = Arrays.asList(TaskInfo.REJECTED,TaskInfo.UNCOMMITTED,TaskInfo.COMMITTED,TaskInfo.CONTRACTOR_APPROVED); if(statusList.contains(taskInfo.getStatus()) || taskInfo.getFlag().equals(TaskInfo.COMPLETE)){ return new Msg(ErrorCode.ERROR_50004,"当前任务状态不允许修改监护人"); } String approversupervisor = object.getString("approversupervisor"); if (StringUtils.isBlank(approversupervisor)){ return new Msg(ErrorCode.ERROR_10001,"监护人不能为空"); } UserInfo userInfo1 = userService.selectByRealName(null,approversupervisor); if (userInfo1 == null){ return new Msg(ErrorCode.ERROR_10001,"所选监护人未录入系统"); } //修改监护人 taskInfo.setApproversupervisor(approversupervisor); String content = "变更监护人,由 "+taskInfo.getApproversupervisor()+" 变更为 "+approversupervisor; TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),userInfo.getCompany()); taskLogService.save(taskLog); taskService.updateById(taskInfo); return success(); } @ApiOperation(value = "修改作业人",response = Msg.class) @PostMapping("/changeWorker") @ApiImplicitParams({ @ApiImplicitParam(name = "code",value = "任务编号"), @ApiImplicitParam(name = "status",value = "审批状态"), @ApiImplicitParam(name = "flag",value = "任务状态"), }) public Msg changeWorker(@RequestBody List taskWorkers){ if (taskWorkers == null || taskWorkers.size() < 1 || StringUtils.isBlank(taskWorkers.get(0).getTaskcode())){ return new Msg(ErrorCode.ERROR_10001); } String taskCode = taskWorkers.get(0).getTaskcode(); TaskInfo taskInfo = taskService.getTaskByCode(taskCode); UserInfo userInfo = userService.getById(getUser().getId()); List taskWorkerList = taskWorkerService.getListByTaskCode(taskInfo.getCode()); StringBuilder s = new StringBuilder(); StringBuilder s1 = new StringBuilder(); taskWorkerList.forEach(item-> s.append(item.getWorker()).append(",")); taskWorkers.forEach(item-> s1.append(item.getWorker()).append(",")); String content = "变更作业人员,由 "+s.toString()+" 变更为 "+s1.toString(); TaskLog taskLog = new TaskLog(taskInfo.getCode(),content,userInfo.getRealname(),new Date(),userInfo.getCompany()); taskLogService.save(taskLog); taskWorkerService.deleteByTaskCode(taskInfo.getCode()); taskWorkerService.saveBatch(taskWorkers,userInfo); return success(); } @ApiOperation(value = "修改任务状态(Status/Flag)",response = Msg.class) @PostMapping("/changeStatusFlag") @ApiImplicitParams({ @ApiImplicitParam(name = "code",value = "任务编号"), @ApiImplicitParam(name = "status",value = "审批状态"), @ApiImplicitParam(name = "flag",value = "任务状态"), }) public Msg changeStatusFlag(@RequestBody JSONObject object){ if (StringUtils.isBlank(object.getString("code"))){ return new Msg(ErrorCode.ERROR_10001); } TaskInfo taskInfo = taskService.getTaskByCode(object.getString("code")); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } if (object.getString("status")!=null){ taskInfo.setStatus(object.getByte("status")); } if (object.getString("flag")!=null){ taskInfo.setFlag(object.getByte("flag")); } taskService.updateById(taskInfo); return success(); } @ApiOperation(value = "获取任务状态(Flag)",response = Msg.class) @GetMapping("/getFlag") @ApiImplicitParams({ @ApiImplicitParam(name = "code",value = "任务编号") }) public Msg getFlagByTaskCode(@RequestParam String code){ if (StringUtils.isBlank(code)){ return new Msg(ErrorCode.ERROR_10001); } TaskInfo taskInfo = taskService.getTaskByCode(code); if (taskInfo == null){ return new Msg(ErrorCode.ERROR_50001); } return success(taskInfo.getFlag()); } @GetMapping("/statistics") @ApiOperation(value = "统计隐患数据",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex",value = "当前页码"), @ApiImplicitParam(name = "pageSize",value = "每页行数"), @ApiImplicitParam(name = "sort",value = "排序规则"), @ApiImplicitParam(name = "order",value = "排序字段"), @ApiImplicitParam(name = "starttime",value = "开始时间"), @ApiImplicitParam(name = "endtime",value = "结束时间"), @ApiImplicitParam(name = "company",value = "单位"), }) public Msg getUserInfo(@RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort,String order, String company, String type, String starttime,String endtime, Byte status, Byte flag){ PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); HashMap condition = new HashMap<>(); if (StringUtils.isNotBlank(company)) { condition.put("company", company.trim()); } if (StringUtils.isNotBlank(starttime)) { condition.put("starttime", starttime.trim()); } if (StringUtils.isNotBlank(endtime)) { condition.put("endtime", endtime.trim()); } if (StringUtils.isNotBlank(type)) { condition.put("type", type.trim()); } if (null != status) { condition.put("status", status); } if (null != flag) { condition.put("flag", flag); } UserInfo userInfo = userService.selectByUser(getUser().getUsername()); if (!companyService.isMain(userInfo.getCompany())){ condition.put("company", userInfo.getCompany()); } pageInfo.setCondition(condition); taskService.selectStatisticsData(pageInfo); return success(pageInfo); } //获取在作业中的作业 包括作业类型 作业内容和作业开始事件和结束事件 @GetMapping("/workShow/taskList") public Msg workShowTaskList() { List taskList = taskService.getWorkShowTaskList(getUser()); return success(taskList); } //获取在作业中的作业的人员信息,常调用; @GetMapping("/workShow/personList") public Msg workShowPersonList(){ List taskList = taskService.getWorkShowPersonList(getUser()); return success(taskList); } @GetMapping("/workCert-regenerate") public Msg workShowPerson(@RequestParam String code){ taskService.generateAllWorkCert(code); return success(); } }