From 3c8f3a7b74f62a9053cd9d860d8f1d37454712eb Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: Mon, 04 Sep 2023 17:53:59 +0800
Subject: [PATCH] back
---
src/main/java/com/gk/hotwork/Controller/SafetyFacilityInspectionController.java | 885 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 842 insertions(+), 43 deletions(-)
diff --git a/src/main/java/com/gk/hotwork/Controller/SafetyFacilityInspectionController.java b/src/main/java/com/gk/hotwork/Controller/SafetyFacilityInspectionController.java
index 3a8f11f..3b9ee50 100644
--- a/src/main/java/com/gk/hotwork/Controller/SafetyFacilityInspectionController.java
+++ b/src/main/java/com/gk/hotwork/Controller/SafetyFacilityInspectionController.java
@@ -1,68 +1,867 @@
package com.gk.hotwork.Controller;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Date;
-
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gk.hotwork.Config.attachment.FilePathConfig;
import com.gk.hotwork.Controller.Base.BaseController;
+import com.gk.hotwork.Domain.CompanyInfo;
import com.gk.hotwork.Domain.SafetyFacilityInspection;
-import com.gk.hotwork.Domain.SafetyInspectionItem;
+import com.gk.hotwork.Domain.SafetyFacilityProcessflow;
+import com.gk.hotwork.Domain.Enum.ResultCodes;
+import com.gk.hotwork.Domain.Exception.BusinessException;
import com.gk.hotwork.Domain.Utils.FilterObject;
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.query.CompanyQuery;
+import com.gk.hotwork.Service.CompanyService;
import com.gk.hotwork.Service.SafetyFacilityInspectionService;
-
+import com.gk.hotwork.Service.SafetyFacilityProcessflowService;
+import com.gk.hotwork.Service.UserService;
+import freemarker.template.Template;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
-
-@Api(tags = "安全设施审查流程")
+@Api(tags = "②安全设施审查流程")
@RestController
@RequestMapping("/safetyFacilityInspection")
-public class SafetyFacilityInspectionController extends BaseController{
+public class SafetyFacilityInspectionController extends BaseController {
- @Autowired
- private SafetyFacilityInspectionService safetyFacilityInspectionService;
-
-
- @ApiOperation("分页")
- @PostMapping("/page")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "pageIndex",value = "当前页码"),
- @ApiImplicitParam(name = "pageSize",value = "每页行数"),
- @ApiImplicitParam(name = "progress",value = "进度进度(0:待受理,1:已受理,10:待评审,11:评审中,12:评审否决,19:待企业反馈,20:待审查,21:审查中,29:待企业补正,22:审查否决,30:完成)"),
- @ApiImplicitParam(name = "expert",value = "审查专家"),
- @ApiImplicitParam(name = "submitDateStartTime",value = "开始时间"),
- @ApiImplicitParam(name = "submitDateEndTime",value = "结束时间")
- })
- public Msg selectPage(@RequestBody FilterObject filterObject) {
- Integer pageIndex = filterObject.getPageIndex();
- Integer pageSize = filterObject.getPageSize();
- IPage page = safetyFacilityInspectionService.selectPage(new Page<>(pageIndex, pageSize), filterObject.getFilter(), getUser());
- return success(page);
- }
-
-
- @ApiOperation("/新增")
- @PostMapping("/add")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "submitDate",value = "提交日期"),
- @ApiImplicitParam(name = "type",value = "类别(1:安全设施设计审查,2:安全条件审查)"),
- @ApiImplicitParam(name = "projectName",value = "项目名称"),
- @ApiImplicitParam(name = "progress",value = "进度(0:待受理,1:已受理,10:待评审,11:评审中,12:评审否决,19:待企业反馈,20:待审查,21:审查中,29:待企业补正,22:审查否决,30:完成)"),
- @ApiImplicitParam(name = "expert",value = "审查专家"),
- @ApiImplicitParam(name = "contact",value = "联系人"),
- @ApiImplicitParam(name = "telephone",value = "联系电话")
-})
- public Msg add(@RequestBody SafetyFacilityInspection param) {
- safetyFacilityInspectionService.addOne(param, this.getUser());
- return success();
- }
+ @Autowired
+ private SafetyFacilityInspectionService safetyFacilityInspectionService;
+
+ @Autowired
+ private SafetyFacilityProcessflowService safetyFacilityProcessflowService;
+
+ @Autowired
+ private UserService userService;
+
+ @Resource
+ private FilePathConfig filePathConfig;
+
+ @Autowired
+ private CompanyService companyService;
+
+ @Autowired
+ private FreeMarkerConfigurer freeMarkerConfigurer;
+
+ @ApiOperation("审查项目分页列表")
+ @PostMapping("/page")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex", value = "当前页码"),
+ @ApiImplicitParam(name = "pageSize", value = "每页行数"),
+ @ApiImplicitParam(name = "progress", value = "进度进度(0:待受理,1:已受理,10:待评审,11:评审中,12:评审否决,19:待企业反馈,20:待审查,21:审查中,29:待企业补正,22:审查否决,30:完成)"),
+ @ApiImplicitParam(name = "expert", value = "审查专家"),
+ @ApiImplicitParam(name = "createBy", value = "企业用户姓名"),
+ @ApiImplicitParam(name = "type", value = "类别(1:安全设施设计审查,2:安全条件审查)"),
+ @ApiImplicitParam(name = "submitDateStartTime", value = "开始时间"),
+ @ApiImplicitParam(name = "submitDateEndTime", value = "结束时间") })
+ public Msg selectPage(@RequestBody FilterObject filterObject) {
+ Integer pageIndex = filterObject.getPageIndex() == null ? 1 : filterObject.getPageIndex();
+ Integer pageSize = filterObject.getPageSize() == null ? 10 : filterObject.getPageSize();
+ Map<String, Object> map = filterObject.getFilter();
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+
+ try {
+ if (map.get("submitDateStartTime") != null && StringUtils.isNotBlank(map.get("submitDateStartTime").toString()))
+ map.put("submitDateStartTime", simpleDateFormat.format(simpleDateFormat.parse(map.get("submitDateStartTime").toString())));
+
+ if (map.get("submitDateEndTime") != null && StringUtils.isNotBlank(map.get("submitDateEndTime").toString()))
+ map.put("submitDateEndTime", simpleDateFormat.format(simpleDateFormat.parse(map.get("submitDateEndTime").toString())));
+
+ if (map.get("progress") != null && StringUtils.isNotBlank(map.get("progress").toString()))
+ map.put("progress", Integer.valueOf(map.get("progress").toString()));
+ else
+ map.put("progress", null);
+
+ IPage<SafetyFacilityInspection> page = safetyFacilityInspectionService.selectPage(new Page<>(pageIndex, pageSize), filterObject.getFilter(), getUser());
+ return success(page);
+ } catch (ParseException e) {
+ return failed(e.getMessage());
+ }
+
+ }
+
+ @ApiOperation("业务处理历史详情")
+ @PostMapping("/dealFlow")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex", value = "当前页码"),
+ @ApiImplicitParam(name = "pageSize", value = "每页行数"),
+ @ApiImplicitParam(name = "linkInspectionId", value = "安全审查项目ID", required = true) })
+ public Msg dealFlow(@RequestBody FilterObject filterObject) {
+ Integer pageIndex = filterObject.getPageIndex() == null ? 1 : filterObject.getPageIndex();
+ Integer pageSize = filterObject.getPageSize() == null ? 100 : filterObject.getPageSize();
+
+ Long inspectionId = Long.valueOf(filterObject.getFilter().get("linkInspectionId").toString());
+ SafetyFacilityInspection inspection = safetyFacilityInspectionService.selectByPrimaryKey(inspectionId,this.getUser());
+ int progress = inspection.getProgress();
+
+ IPage<SafetyFacilityProcessflow> page = safetyFacilityProcessflowService.processflowPages(new Page<>(pageIndex, pageSize), filterObject.getFilter(), getUser());
+ List<SafetyFacilityProcessflow> list = new ArrayList<SafetyFacilityProcessflow>();
+ List<SafetyFacilityProcessflow> review = new ArrayList<SafetyFacilityProcessflow>();
+ List<SafetyFacilityProcessflow> examine = new ArrayList<SafetyFacilityProcessflow>();
+
+ String reviewFinalResolution = "";
+ String examineFinalResolution = "";
+
+ for (SafetyFacilityProcessflow flow : page.getRecords()) {
+ if ("资料提交".equals(flow.getProgressName()) || "待评审".equals(flow.getProgressName()) || "已受理".equals(flow.getProgressName()) || "待受理".equals(flow.getProgressName()))
+ list.add(flow);
+ }
+
+ if (progress > 20) { // 构建审查全流程
+ SafetyFacilityProcessflow inner = new SafetyFacilityProcessflow();
+ inner.setProgressName("审查开始");
+ inner.setCheckTime(inspection.getExamineTime());
+ examine.add(inner);
+
+ for (SafetyFacilityProcessflow flow : page.getRecords()) {
+ if ("通知补正".equals(flow.getProgressName()) || "企业补正".equals(flow.getProgressName()) || "审查通过".equals(flow.getProgressName()) || "审查否决".equals(flow.getProgressName())) {
+ examine.add(flow);
+ }
+ if ("审查否决".equals(flow.getProgressName()) || "审查通过".equals(flow.getProgressName())) {
+ examineFinalResolution = flow.getResolution();
+ }
+ }
+ }
+
+ if (progress > 10) { // 构建评审全流程
+ SafetyFacilityProcessflow inner = new SafetyFacilityProcessflow();
+ inner.setProgressName("评审开始");
+ inner.setCheckTime(inspection.getReviewTime());
+ review.add(inner);
+
+ for (SafetyFacilityProcessflow flow : page.getRecords()) {
+ if ("评审反馈".equals(flow.getProgressName()) || "企业反馈".equals(flow.getProgressName()) || "评审通过".equals(flow.getProgressName()) || "评审否决".equals(flow.getProgressName())) {
+ review.add(flow);
+ }
+ if ("评审通过".equals(flow.getProgressName()) || "评审否决".equals(flow.getProgressName())) {
+ reviewFinalResolution = flow.getResolution();
+ }
+ }
+ }
+
+ if (progress == 30) {
+ if (inspection.getType() == 1) {
+ SafetyFacilityProcessflow f1 = new SafetyFacilityProcessflow();
+ f1.setProgressName("评审通过");
+ f1.setResult("评审通过");
+ f1.setResolution(reviewFinalResolution);
+ f1.setChildFlow(review);
+ f1.setLinkInspectionId(inspectionId);
+ list.add(f1);
+ }
+
+ SafetyFacilityProcessflow f = new SafetyFacilityProcessflow();
+ f.setProgressName("审查通过");
+ f.setResult("耗时:" + inspection.getExamineTaketime());
+ f.setResolution("详情查看审查意见书");
+ f.setChildFlow(examine);
+ f.setLinkInspectionId(inspectionId);
+ list.add(f);
+
+ SafetyFacilityProcessflow ff = new SafetyFacilityProcessflow();
+ ff.setProgressName("已完成");
+ ff.setLinkInspectionId(inspectionId);
+ list.add(ff);
+ }
+ if (progress >= 20 && progress < 30) {
+ if (inspection.getType() == 1) {
+ SafetyFacilityProcessflow f1 = new SafetyFacilityProcessflow();
+ f1.setProgressName("评审通过");
+ f1.setResult("评审通过");
+ f1.setLinkInspectionId(inspectionId);
+ f1.setResolution(reviewFinalResolution);
+ f1.setChildFlow(review);
+ list.add(f1);
+ }
+
+ SafetyFacilityProcessflow f = new SafetyFacilityProcessflow();
+ if (progress == 20)
+ f.setProgressName("待审查");
+ if (progress == 21)
+ f.setProgressName("审查中");
+ if (progress == 29)
+ f.setProgressName("待企业补正");
+ if (progress == 22){
+ f.setProgressName("审查否决");
+ f.setResolution(examineFinalResolution);
+ }
+ f.setChildFlow(examine);
+ list.add(f);
+ }
+
+ if (progress > 10 && progress < 20) {
+ SafetyFacilityProcessflow f = new SafetyFacilityProcessflow();
+
+ if (progress == 11)
+ f.setProgressName("评审中");
+ if (progress == 19)
+ f.setProgressName("待企业反馈");
+ if (progress == 12){
+ f.setProgressName("评审否决");
+ f.setResolution(reviewFinalResolution);
+ }
+ f.setChildFlow(review);
+ list.add(f);
+ }
+
+ page.setRecords(list);
+ return success(page);
+ }
+
+ @ApiOperation("企业新增审查")
+ @PostMapping("/add")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "submitDate", value = "提交日期(可为空默认当前时间)", required = false),
+ @ApiImplicitParam(name = "type", value = "类别(1:安全设施设计审查,2:安全条件审查)"),
+ @ApiImplicitParam(name = "projectName", value = "项目名称"),
+ @ApiImplicitParam(name = "progress", required = false, value = "进度(0:待受理,1:已受理,10:待评审,11:评审中,12:评审否决,19:待企业反馈,20:待审查,21:审查中,29:待企业补正,22:审查否决,30:完成)"),
+ @ApiImplicitParam(name = "expert", value = "审查专家", required = false),
+ @ApiImplicitParam(name = "contact", value = "联系人", required = false),
+ @ApiImplicitParam(name = "telephone", value = "联系电话", required = false),
+ @ApiImplicitParam(name = "company", value = "企业名称", required = false),
+ @ApiImplicitParam(name = "acceptpdf", value = "受理通知书PDF", required = false) })
+ public Msg add(@RequestBody SafetyFacilityInspection param) {
+ String genId = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli() + "" + (int) (Math.random() * 900 + 100);
+ param.setId(Long.valueOf(genId));
+ Date date = new Date();
+ safetyFacilityInspectionService.addOne(param, this.getUser());
+
+ SafetyFacilityProcessflow flow = new SafetyFacilityProcessflow();
+ flow.setCheckTime(date);
+ flow.setProgressName("资料提交");
+ flow.setResult("资料提交");
+ flow.setResolution(param.getAcceptpdf());
+ flow.setLinkInspectionId(Long.valueOf(genId));
+ flow.setProcessBy(this.getUser().getRealname());
+ safetyFacilityProcessflowService.addOne(flow, this.getUser());
+
+ SafetyFacilityProcessflow flowd = new SafetyFacilityProcessflow();
+ Calendar c = Calendar.getInstance();
+ c.setTime(date);
+ c.add(Calendar.SECOND, 1);
+
+ flowd.setCheckTime(c.getTime());
+ flowd.setProgressName("待受理");
+ flowd.setLinkInspectionId(Long.valueOf(genId));
+ safetyFacilityProcessflowService.addOne(flowd, this.getUser());
+
+ return success();
+ }
+
+
+ @ApiOperation("删除审查项目")
+ @PostMapping("/delete")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "linkInspectionId", value = "安全审查项目ID", required = true) })
+ public Msg delete(@RequestBody FilterObject filterObject) {
+ if (filterObject.getFilter().get("linkInspectionId") == null)
+ return failed("安全审查项目ID不能为空");
+ Long inspectionId = Long.valueOf(filterObject.getFilter().get("linkInspectionId").toString());
+ safetyFacilityInspectionService.delOne(inspectionId, this.getUser());
+ safetyFacilityProcessflowService.deleteBylinkInspectionId(inspectionId, this.getUser());
+ return success();
+ }
+
+ @ApiOperation("获取审查专家列表")
+ @PostMapping("/expert")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex", value = "当前页码"),
+ @ApiImplicitParam(name = "pageSize", value = "每页行数") })
+ public Msg getExpert(@RequestParam(defaultValue = "0") Integer pageIndex,@RequestParam(defaultValue = "10") Integer pageSize, String realname) {
+ Msg msg = new Msg();
+ msg.setCode("200");
+ msg.setMessage("success");
+ PageInfo pageInfo = new PageInfo(pageIndex, pageSize);
+ HashMap<String, Object> condition = new HashMap<String, Object>();
+ condition.put("job", "审查");
+ condition.put("company", "危化处");
+ if (StringUtils.isNotBlank(realname)) {
+ condition.put("realname", realname.trim());
+ }
+
+ pageInfo.setCondition(condition);
+ userService.selectExpertUserDataGrid(pageInfo);
+ msg.setResult(pageInfo);
+ return msg;
+ }
+
+ @ApiOperation("危化处业务处理")
+ @PostMapping("/dealCheck")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "acceptTime", value = "选择受理时间(默认当前时间)", required = false),
+ @ApiImplicitParam(name = "reviewTime", value = "自定义评审开始时间", required = false),
+ @ApiImplicitParam(name = "linkInspectionId", value = "安全审查项目ID", required = true) })
+ public Msg dealCheck(@RequestBody FilterObject filterObject) throws ParseException {
+ if (filterObject.getFilter().get("linkInspectionId") == null)
+ return failed("安全审查项目ID不能为空");
+ Long inspectionId = Long.valueOf(filterObject.getFilter().get("linkInspectionId").toString());
+ SafetyFacilityInspection inspection = safetyFacilityInspectionService.selectByPrimaryKey(inspectionId,this.getUser());
+ String acceptTimeString = null;
+ if (inspection.getProgress() == 0) {
+ if (inspection.getType() == 1) {
+ if (filterObject.getFilter().get("acceptTime") != null && StringUtils.isNotBlank(filterObject.getFilter().get("acceptTime").toString())) {
+ acceptTimeString = filterObject.getFilter().get("acceptTime").toString();
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ inspection.setAcceptTime(simpleDateFormat.parse(acceptTimeString));
+ } else
+ inspection.setAcceptTime(new Date());
+ inspection.setProgress(1);
+
+ SafetyFacilityProcessflow flow = new SafetyFacilityProcessflow();
+ flow.setCheckTime(new Date());
+ flow.setProgressName("已受理");
+ flow.setResult("选择受理时间");
+ flow.setLinkInspectionId(inspectionId);
+ flow.setProcessBy(this.getUser().getRealname());
+ safetyFacilityProcessflowService.addOne(flow, this.getUser());
+ safetyFacilityInspectionService.modOne(inspection, getUser());
+ safetyFacilityProcessflowService.modPending(inspectionId, this.getUser()); // 删除待处理流程记录
+ }
+ if (inspection.getType() == 2) {
+ Date date = new Date();
+ if (filterObject.getFilter().get("acceptTime") != null && StringUtils.isNotBlank(filterObject.getFilter().get("acceptTime").toString())) {
+ acceptTimeString = filterObject.getFilter().get("acceptTime").toString();
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ inspection.setAcceptTime(simpleDateFormat.parse(acceptTimeString));
+ } else
+ inspection.setAcceptTime(date);
+ inspection.setProgress(20);
+
+ SafetyFacilityProcessflow flow = new SafetyFacilityProcessflow();
+ flow.setCheckTime(date);
+ flow.setProgressName("已受理");
+ flow.setResult("选择受理时间");
+ flow.setLinkInspectionId(inspectionId);
+ flow.setProcessBy(this.getUser().getRealname());
+ safetyFacilityProcessflowService.addOne(flow, this.getUser());
+ safetyFacilityProcessflowService.modPending(inspectionId, this.getUser()); // 删除待处理流程记录
+
+ SafetyFacilityProcessflow flow1 = new SafetyFacilityProcessflow();
+ Calendar c = Calendar.getInstance();
+ c.setTime(date);
+ c.add(Calendar.SECOND, 1);
+ flow1.setProgressName("待审查");
+ flow1.setCheckTime(c.getTime());
+ flow1.setLinkInspectionId(inspectionId);
+ flow1.setProcessBy(this.getUser().getRealname());
+ safetyFacilityProcessflowService.addOne(flow1, this.getUser());
+ safetyFacilityInspectionService.modOne(inspection, getUser());
+ }
+ return success();
+ }
+ if (inspection.getProgress() == 1) {
+ if (filterObject.getFilter().get("reviewTime") != null && StringUtils.isNotBlank(filterObject.getFilter().get("reviewTime").toString())) {
+ acceptTimeString = filterObject.getFilter().get("reviewTime").toString();
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ inspection.setReviewTime(simpleDateFormat.parse(acceptTimeString));
+ } else
+ inspection.setReviewTime(new Date());
+ inspection.setProgress(10);
+
+ SafetyFacilityProcessflow flow = new SafetyFacilityProcessflow();
+ flow.setCheckTime(new Date());
+ flow.setProgressName("待评审");
+ flow.setResult("业务流转");
+ flow.setLinkInspectionId(inspectionId);
+ flow.setProcessBy(this.getUser().getRealname());
+ safetyFacilityProcessflowService.addOne(flow, this.getUser());
+
+ safetyFacilityInspectionService.modOne(inspection, getUser());
+
+ return success();
+
+ }
+ return failed("处理失败!");
+ }
+
+ @ApiOperation("业务处分配审查专家")
+ @PostMapping("/dealExamine")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "linkInspectionId", value = "安全审查项目ID", required = true),
+ @ApiImplicitParam(name = "expert", value = "审查专家ID(多个ID中间逗号分隔)"),
+ @ApiImplicitParam(name = "examineTime", value = "审查开始时间") })
+ public Msg dealExamine(@RequestBody FilterObject filterObject) throws ParseException {
+ if (filterObject.getFilter().get("linkInspectionId") == null)
+ return failed("安全审查项目ID不能为空");
+
+ Long inspectionId = Long.valueOf(filterObject.getFilter().get("linkInspectionId").toString());
+ SafetyFacilityInspection inspection = safetyFacilityInspectionService.selectByPrimaryKey(inspectionId,this.getUser());
+
+ int currentprocess = inspection.getProgress();
+ if (currentprocess == 20) {
+
+ inspection.setProgress(21);
+ inspection.setExpert(filterObject.getFilter().get("expert") == null ? "" : filterObject.getFilter().get("expert").toString());
+
+ if (filterObject.getFilter().get("examineTime") != null && StringUtils.isNotBlank(filterObject.getFilter().get("examineTime").toString())) {
+ String examineTimeString = filterObject.getFilter().get("examineTime").toString();
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ inspection.setExamineTime(simpleDateFormat.parse(examineTimeString));
+ } else
+ inspection.setExamineTime(new Date());
+
+ safetyFacilityInspectionService.modOne(inspection, this.getUser());
+ return success();
+ } else {
+ return failed("当前项目不在待审查状态,无法进行专家分配!");
+ }
+
+ }
+
+ @ApiOperation("专家审查")
+ @PostMapping("/expertExamine")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "linkInspectionId", value = "安全审查项目ID", required = true),
+ @ApiImplicitParam(name = "result", required = true, value = "评审反馈结果(9:否决驳回,2:需补正,1:审查通过)"),
+ @ApiImplicitParam(name = "correctNo", required = false, value = "补正告知书编号"),
+ @ApiImplicitParam(name = "correctPDFPath", required = false, value = "补正告知书路径"),
+ @ApiImplicitParam(name = "emergency", value = "应急局通知人(多个ID中间逗号分隔)"),
+ @ApiImplicitParam(name = "resolution", value = "反馈意见") })
+ public Msg expertExamine(@RequestBody FilterObject filterObject) {
+ if (filterObject.getFilter().get("linkInspectionId") == null)
+ return failed("安全审查项目ID不能为空");
+
+ Long inspectionId = Long.valueOf(filterObject.getFilter().get("linkInspectionId").toString());
+ SafetyFacilityInspection inspection = safetyFacilityInspectionService.selectByPrimaryKey(inspectionId, this.getUser());
+ int res = Integer.valueOf(filterObject.getFilter().get("result").toString());
+ int currentprocess = inspection.getProgress();
+ if (currentprocess == 20 || currentprocess == 21) {
+
+ SafetyFacilityProcessflow flow = new SafetyFacilityProcessflow();
+ flow.setCheckTime(new Date());
+ flow.setLinkInspectionId(inspectionId);
+ flow.setProcessBy(this.getUser().getRealname());
+ flow.setResolution(filterObject.getFilter().get("resolution") == null ? "" : filterObject.getFilter().get("resolution").toString());
+ if (res == 9) {
+ flow.setProgressName("审查否决");
+ flow.setResult("否决驳回");
+ inspection.setProgress(22);
+ }
+ if (res == 2) {
+ flow.setProgressName("通知补正");
+ inspection.setProgress(29);
+ String correctNo = filterObject.getFilter().get("correctNo") == null ? "" : filterObject.getFilter().get("correctNo").toString();
+ String newFilePath = filterObject.getFilter().get("correctPDFPath") == null ? "" : filterObject.getFilter().get("correctPDFPath").toString();
+ flow.setResolution(newFilePath);
+ flow.setResult(correctNo);
+ inspection.setCorrectpdf(newFilePath);
+ }
+ if (res == 1) {
+ flow.setProgressName("审查通过");
+ flow.setResult("审查通过完成");
+ inspection.setProgress(30);
+
+ Date begin = inspection.getExamineTime();
+
+ Calendar cal1 = Calendar.getInstance();
+ cal1.setTime(begin);
+ Calendar cal2 = Calendar.getInstance();
+ cal2.setTime(new Date());
+
+ Long diff = (cal2.getTimeInMillis() - cal1.getTimeInMillis()) / 60000;
+ int day = diff.intValue() / 1440;
+ int hour = (diff.intValue() % 1440) / 60;
+ int min = (diff.intValue() % 1440) % 60;
+ inspection.setExamineTaketime(day + "天" + hour + "小时" + min + "分钟");
+
+ SimpleDateFormat pageno = new SimpleDateFormat("MMdd");
+ int dateno = Integer.valueOf(pageno.format(new Date())) / 2;
+ if (dateno < 100)
+ inspection.setExaminePageno("0" + dateno);
+ else
+ inspection.setExaminePageno("" + dateno);
+ }
+
+ safetyFacilityProcessflowService.addOne(flow, this.getUser());
+ safetyFacilityInspectionService.modOne(inspection, this.getUser());
+
+ return success();
+ } else {
+ return failed("当前项目状态异常无法进行审查!");
+ }
+
+ }
+
+ @ApiOperation("企业上传受理通知书")
+ @PostMapping("/uploadAcceptpdf")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "file", value = "企业上传受理通知书(PDF/图片)") })
+ public Msg uploadAcceptpdf(HttpServletRequest request, @RequestParam("file") MultipartFile file) {
+ if (file.getSize() > 1024 * 1024 * 10) {
+ return failed("文件超过10M无法上传");
+ }
+
+ String path = filePathConfig.getModule().get("correctPDF");
+ String dcPath = filePathConfig.getDcPath();
+ String originalFilename = file.getOriginalFilename();
+ LocalDateTime now = LocalDateTime.now();
+ File newFile = null;
+
+ try {
+ String key = UUID.randomUUID().toString().replace("-", "");
+ String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();
+ path = path.replace("/", File.separator);
+ String modulePath = now.getYear() + path + now.format(DateTimeFormatter.ofPattern("MMdd"));
+ String newFilePath = modulePath + File.separator + key + suffix;
+ String localPath = dcPath + newFilePath;
+ newFile = new File(localPath);
+ if (!newFile.exists() && !newFile.mkdirs()) {
+ return failed("文件上传路径不存在!");
+ }
+ file.transferTo(newFile);
+ return success(newFilePath);
+ } catch (IOException e) {
+ if (newFile != null && newFile.exists()) {
+ newFile.delete();
+ }
+ return failed("文件上传异常!");
+ }
+ }
+
+ @ApiOperation("查看企业受理通知书")
+ @PostMapping("/downAcceptpdf")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "filename", value = "企业受理通知书文件名", required = true)})
+ public void downAcceptpdf(@RequestBody FilterObject filterObject, HttpServletResponse response) throws Exception {
+ if (filterObject.getFilter().get("filename") == null)
+ return;
+ String filepath = filterObject.getFilter().get("filename").toString();
+ String suffix = filepath.substring(filepath.lastIndexOf(".")).toLowerCase();
+ response.reset();
+ response.addHeader("Access-Control-Allow-Origin", "*");
+ response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
+ response.setContentType("application/octet-stream; charset=UTF-8");
+ response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("企业受理通知书" + suffix, StandardCharsets.UTF_8.name()));
+ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+ String dcPath = filePathConfig.getDcPath();
+ File file = new File(dcPath + filepath);
+ if (!file.exists()) {
+ throw new BusinessException(ResultCodes.FILE_NOT_EXISIST);
+ }
+ response.addHeader("Content-Length", "" + file.length());
+ FileInputStream inputStream = new FileInputStream(file);
+ byte[] b = new byte[inputStream.available()];
+ inputStream.read(b);
+ ServletOutputStream outputStream = response.getOutputStream();
+ outputStream.write(b);
+ outputStream.flush();
+ inputStream.close();
+ }
+
+
+ @ApiOperation("专家审查上传补正告知书")
+ @PostMapping("/uploadCorrectPDF")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "file", value = "上传补正告知书(PDF)文件") })
+ public Msg uploadCorrectPDF(HttpServletRequest request, @RequestParam("file") MultipartFile file) {
+ if (file.getSize() > 1024 * 1024 * 2) {
+ return failed("文件超过2M无法上传");
+ }
+
+ String path = filePathConfig.getModule().get("correctPDF");
+ String dcPath = filePathConfig.getDcPath();
+ String originalFilename = file.getOriginalFilename();
+ LocalDateTime now = LocalDateTime.now();
+ File newFile = null;
+
+ try {
+ String key = UUID.randomUUID().toString().replace("-", "");
+ String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();
+ path = path.replace("/", File.separator);
+ String modulePath = now.getYear() + path + now.format(DateTimeFormatter.ofPattern("MMdd"));
+ String newFilePath = modulePath + File.separator + key + suffix;
+ String localPath = dcPath + newFilePath;
+ newFile = new File(localPath);
+ if (!newFile.exists() && !newFile.mkdirs()) {
+ return failed("文件上传路径不存在!");
+ }
+ file.transferTo(newFile);
+ return success(newFilePath);
+ } catch (IOException e) {
+ if (newFile != null && newFile.exists()) {
+ newFile.delete();
+ }
+ return failed("文件上传异常!");
+ }
+ }
+
+ @ApiOperation("补正告知书下载")
+ @PostMapping("/downCorrectPDF")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "filename", value = "补正告知书文件名", required = true),
+ @ApiImplicitParam(name = "correctNo", value = "补正告知书编号") })
+ public void downCorrectPDF(@RequestBody FilterObject filterObject, HttpServletResponse response) throws Exception {
+ if (filterObject.getFilter().get("filename") == null)
+ return;
+ String filepath = filterObject.getFilter().get("filename").toString();
+ String correctNo = filterObject.getFilter().get("correctNo") == null ? "" : filterObject.getFilter().get("correctNo").toString();
+ response.reset();
+ response.addHeader("Access-Control-Allow-Origin", "*");
+ response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
+ response.setContentType("application/octet-stream; charset=UTF-8");
+ response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("补正告知书" + correctNo + ".pdf", StandardCharsets.UTF_8.name()));
+ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+ String dcPath = filePathConfig.getDcPath();
+ File file = new File(dcPath + filepath);
+ if (!file.exists()) {
+ throw new BusinessException(ResultCodes.FILE_NOT_EXISIST);
+ }
+ response.addHeader("Content-Length", "" + file.length());
+ FileInputStream inputStream = new FileInputStream(file);
+ byte[] b = new byte[inputStream.available()];
+ inputStream.read(b);
+ ServletOutputStream outputStream = response.getOutputStream();
+ outputStream.write(b);
+ outputStream.flush();
+ inputStream.close();
+ }
+
+ @ApiOperation("审查意见书预览")
+ @PostMapping("/viewExamineFile")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "linkInspectionId", value = "安全审查项目ID", required = true) })
+ public void viewExamineFile(@RequestBody FilterObject filterObject, HttpServletResponse response) throws Exception {
+ if (filterObject.getFilter().get("linkInspectionId") == null)
+ return;
+ Template template = freeMarkerConfigurer.getConfiguration().getTemplate("ReviewHtml.ftl", "UTF-8");
+ Long inspectionId = Long.valueOf(filterObject.getFilter().get("linkInspectionId").toString());
+ SafetyFacilityInspection inspection = safetyFacilityInspectionService.selectByPrimaryKey(inspectionId,this.getUser());
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("year", String.valueOf(LocalDate.now().getYear()));
+ map.put("pageno", "0001");
+ map.put("company", inspection.getCompany());
+ map.put("projectName", inspection.getProjectName());
+ map.put("contact", inspection.getContact());
+ map.put("telephone", inspection.getTelephone());
+
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
+ map.put("submitDate", simpleDateFormat.format(new Date()));
+
+ String duplicate = "";
+ if (inspection.getCompany() != null) {
+ duplicate = companyService.selectByName(inspection.getCompany()).getCity();
+ }
+ map.put("duplicate", duplicate + "应急管理局");
+ response.setContentType("text/html;charset=utf-8");
+ template.process(map, response.getWriter());
+ }
+
+ @ApiOperation("审查意见书下载")
+ @PostMapping("/downExamineFile")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "linkInspectionId", value = "安全审查项目ID", required = true) })
+ public void downExamineFile(@RequestBody FilterObject filterObject, HttpServletResponse response) throws Exception {
+ if (filterObject.getFilter().get("linkInspectionId") == null)
+ return;
+ Template template = freeMarkerConfigurer.getConfiguration().getTemplate("ReviewHtml.ftl", "UTF-8");
+ Long inspectionId = Long.valueOf(filterObject.getFilter().get("linkInspectionId").toString());
+ SafetyFacilityInspection inspection = safetyFacilityInspectionService.selectByPrimaryKey(inspectionId, this.getUser());
+
+ Map<String, Object> map = new HashMap<String, Object>();
+ SimpleDateFormat year = new SimpleDateFormat("yyyy");
+ map.put("year", year.format(inspection.getCreateTime()));
+ map.put("pageno", inspection.getExaminePageno());
+ map.put("company", inspection.getCompany());
+ map.put("projectName", inspection.getProjectName());
+ map.put("contact", inspection.getContact());
+ map.put("telephone", inspection.getTelephone());
+
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
+ map.put("submitDate", simpleDateFormat.format(new Date()));
+
+ String duplicate = "";
+ if (inspection.getCompany() != null) {
+ duplicate = companyService.selectByName(inspection.getCompany()).getCity();
+ }
+ map.put("duplicate", duplicate + "应急管理局");
+ response.setHeader("content-Type", "application/msword");
+ String fileName = URLEncoder.encode("审查意见书", "UTF-8");
+ response.setCharacterEncoding("UTF-8");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".doc");
+ template.process(map, response.getWriter());
+ }
+
+ @ApiOperation("安科院评审反馈")
+ @PostMapping("/reviewFeedback")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "result", required = true, value = "评审反馈结果(9:否决驳回,2:需问题反馈,1:通过并流转到业务处室)"),
+ @ApiImplicitParam(name = "resolution", value = "反馈意见"),
+ @ApiImplicitParam(name = "reviewTime", value = "评审开始时间", required = true),
+ @ApiImplicitParam(name = "linkInspectionId", value = "安全审查项目ID", required = true) })
+ public Msg reviewFeedback(@RequestBody FilterObject filterObject) throws ParseException {
+ if (filterObject.getFilter().get("linkInspectionId") == null)
+ return failed("安全审查项目ID不能为空");
+ if (filterObject.getFilter().get("result") == null)
+ return failed("评审反馈结果不能为空");
+ if (filterObject.getFilter().get("reviewTime") == null)
+ return failed("请选择评审开始时间");
+
+ Long inspectionId = Long.valueOf(filterObject.getFilter().get("linkInspectionId").toString());
+ int res = Integer.valueOf(filterObject.getFilter().get("result").toString());
+ SafetyFacilityInspection inspection = safetyFacilityInspectionService.selectByPrimaryKey(inspectionId,this.getUser());
+
+ int currentprocess = inspection.getProgress();
+ String timeString = filterObject.getFilter().get("reviewTime").toString();
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ inspection.setReviewTime(simpleDateFormat.parse(timeString));
+
+ if (currentprocess == 10 || currentprocess == 11) {
+ SafetyFacilityProcessflow flow = new SafetyFacilityProcessflow();
+ Date date = new Date();
+ flow.setCheckTime(date);
+ flow.setLinkInspectionId(inspectionId);
+ flow.setProcessBy(this.getUser().getRealname());
+ flow.setResolution(filterObject.getFilter().get("resolution") == null ? "" : filterObject.getFilter().get("resolution").toString());
+ if (res == 9) {
+ flow.setProgressName("评审否决");
+ flow.setResult("否决驳回");
+ inspection.setProgress(12);
+ }
+ if (res == 2) {
+ flow.setProgressName("评审反馈");
+ flow.setResult("需问题反馈");
+ inspection.setProgress(19);
+ }
+ if (res == 1) {
+ flow.setProgressName("评审通过");
+ flow.setResult("通过并流转到业务处室");
+ inspection.setProgress(20);
+ }
+
+ safetyFacilityProcessflowService.addOne(flow, this.getUser());
+ safetyFacilityInspectionService.modOne(inspection, this.getUser());
+ safetyFacilityProcessflowService.modPending(inspectionId, this.getUser()); // 删除待处理流程记录
+
+ if (res == 1) {
+ SafetyFacilityProcessflow flow1 = new SafetyFacilityProcessflow();
+ Calendar c = Calendar.getInstance();
+ c.setTime(date);
+ c.add(Calendar.SECOND, 1);
+ flow1.setProgressName("待审查");
+ flow1.setCheckTime(c.getTime());
+ flow1.setLinkInspectionId(inspectionId);
+ flow1.setProcessBy(this.getUser().getRealname());
+ safetyFacilityProcessflowService.addOne(flow1, this.getUser());
+ }
+
+ return success();
+ } else {
+ return failed("当前项目不在评审环节,不能进行评审!");
+ }
+
+ }
+
+ @ApiOperation("企业提交反馈")
+ @PostMapping("/companySubmission")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "linkInspectionId", value = "安全审查项目ID", required = true) })
+ public Msg companySubmission(@RequestBody FilterObject filterObject) {
+ if (filterObject.getFilter().get("linkInspectionId") == null)
+ return failed("安全审查项目ID不能为空");
+
+ Long inspectionId = Long.valueOf(filterObject.getFilter().get("linkInspectionId").toString());
+ SafetyFacilityInspection inspection = safetyFacilityInspectionService.selectByPrimaryKey(inspectionId,this.getUser());
+
+ int currentprocess = inspection.getProgress();
+ if (currentprocess == 19) {
+ SafetyFacilityProcessflow flow = new SafetyFacilityProcessflow();
+ flow.setCheckTime(new Date());
+ flow.setLinkInspectionId(inspectionId);
+ flow.setProcessBy(this.getUser().getRealname());
+ flow.setProgressName("企业反馈");
+ flow.setResult("已线下提交反馈资料");
+ safetyFacilityProcessflowService.addOne(flow, this.getUser());
+
+ inspection.setProgress(11);
+ safetyFacilityInspectionService.modOne(inspection, this.getUser());
+ return success();
+ } else {
+ return failed("当前项目不在待提交反馈状态,企业无法提交反馈!");
+ }
+ }
+
+ @ApiOperation("获取审查项目对应的当地(市、州)级应急局所有人")
+ @PostMapping("/getEmergencyInfo")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex", value = "当前页码"),
+ @ApiImplicitParam(name = "pageSize", value = "每页行数"),
+ @ApiImplicitParam(name = "linkInspectionId", value = "安全审查项目ID", required = true) })
+ public Msg getEmergencyInfo(@RequestBody FilterObject filterObject) {
+ if (filterObject.getFilter().get("linkInspectionId") == null)
+ return failed("安全审查项目ID不能为空");
+
+ Long inspectionId = Long.valueOf(filterObject.getFilter().get("linkInspectionId").toString());
+ SafetyFacilityInspection inspection = safetyFacilityInspectionService.selectByPrimaryKey(inspectionId,this.getUser());
+
+ String duplicate = null;
+ if (inspection.getCompany() != null) {
+ duplicate = companyService.selectByName(inspection.getCompany()).getCity();
+ } else {
+ return failed("当前安全审查项目没有归属地!");
+ }
+ Msg msg = new Msg();
+ msg.setCode("200");
+ msg.setMessage("success");
+
+ Integer pageIndex = filterObject.getPageIndex() == null ? 1 : filterObject.getPageIndex();
+ Integer pageSize = filterObject.getPageSize() == null ? 10 : filterObject.getPageSize();
+ PageInfo pageInfo = new PageInfo(pageIndex, pageSize);
+ HashMap<String, Object> condition = new HashMap<String, Object>();
+ condition.put("company", duplicate);
+ pageInfo.setCondition(condition);
+ userService.selectSuperviseUserDataGrid(pageInfo);
+ msg.setResult(pageInfo);
+ return msg;
+ }
+
+ @ApiOperation("企业提交补正")
+ @PostMapping("/companySubcorrect")
+ @ApiImplicitParams({ @ApiImplicitParam(name = "linkInspectionId", value = "安全审查项目ID", required = true) })
+ public Msg companySubcorrect(@RequestBody FilterObject filterObject) {
+ if (filterObject.getFilter().get("linkInspectionId") == null)
+ return failed("安全审查项目ID不能为空");
+
+ Long inspectionId = Long.valueOf(filterObject.getFilter().get("linkInspectionId").toString());
+ SafetyFacilityInspection inspection = safetyFacilityInspectionService.selectByPrimaryKey(inspectionId,this.getUser());
+
+ int currentprocess = inspection.getProgress();
+ if (currentprocess == 29) {
+ SafetyFacilityProcessflow flow = new SafetyFacilityProcessflow();
+ flow.setCheckTime(new Date());
+ flow.setLinkInspectionId(inspectionId);
+ flow.setProcessBy(this.getUser().getRealname());
+ flow.setProgressName("企业补正");
+ flow.setResult("已线下提交补正材料");
+ safetyFacilityProcessflowService.addOne(flow, this.getUser());
+
+ inspection.setProgress(21);
+ safetyFacilityInspectionService.modOne(inspection, this.getUser());
+ return success();
+ } else {
+ return failed("当前项目不在待提交补正状态,企业无法提交补正!");
+ }
+ }
+
}
--
Gitblit v1.9.2