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.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 = "②安全设施审查流程")
|
@RestController
|
@RequestMapping("/safetyFacilityInspection")
|
public class SafetyFacilityInspectionController extends BaseController {
|
|
@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) })
|
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("开始");
|
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("/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("当前项目不在待提交补正状态,企业无法提交补正!");
|
}
|
}
|
|
}
|