package com.gk.firework.Service.ServiceImpl;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.gk.firework.Domain.Enterprise;
|
import com.gk.firework.Domain.Enum.HiddenDangerReportStatus;
|
import com.gk.firework.Domain.Exception.BusinessException;
|
import com.gk.firework.Domain.HiddenDangerReport;
|
import com.gk.firework.Domain.HiddenDangerReportDetail;
|
import com.gk.firework.Domain.UserInfo;
|
import com.gk.firework.Domain.Utils.FilterObject;
|
import com.gk.firework.Domain.Utils.Properties;
|
import com.gk.firework.Domain.Utils.StringUtils;
|
import com.gk.firework.Domain.Utils.UploadUtil;
|
import com.gk.firework.Domain.Vo.CheckReportVo;
|
import com.gk.firework.Domain.Vo.HiddenDangerTableRow;
|
import com.gk.firework.Mapper.HiddenDangerReportMapper;
|
import com.gk.firework.Service.EnterpriseService;
|
import com.gk.firework.Service.HiddenDangerReportDetailService;
|
import com.gk.firework.Service.HiddenDangerReportService;
|
import com.gk.firework.Service.UserService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.util.*;
|
|
@Service("hiddenDangerReportService")
|
public class HiddenDangerReportServiceImpl extends ServiceImpl<HiddenDangerReportMapper, HiddenDangerReport> implements HiddenDangerReportService {
|
|
@Autowired
|
private EnterpriseService enterpriseService;
|
@Autowired
|
private HiddenDangerReportDetailService hiddenDangerReportDetailService;
|
@Autowired
|
private HiddenDangerReportMapper hiddenDangerReportMapper;
|
@Autowired
|
private UserService userService;
|
|
|
|
/**
|
* @Description: 提交自检报告
|
* @date 2021/4/8 14:58
|
*/
|
@Override
|
@Transactional
|
public void addCheck(CheckReportVo checkReportVo, UserInfo user) {
|
|
//自检报告基本信息
|
HiddenDangerReport report = new HiddenDangerReport();
|
{
|
//自动生成code
|
report.setCode("SR"+System.currentTimeMillis());
|
report.setApplyperson(checkReportVo.getApplyperson());
|
report.setCreateby(user.getUsername());
|
report.setCreatetime(new Date());
|
report.setEnterpriseid(user.getId());
|
report.setEnterprisename(user.getUsername());
|
report.setStatus(HiddenDangerReportStatus.PENDING);
|
UserInfo userInfo = userService.getById(user.getId());
|
Enterprise enterprise = enterpriseService.getById(userInfo.getCompanyid());
|
assert enterprise != null;
|
report.setCycle(enterprise.getSelfrecordingcycle());
|
report.setEnterprisenumber(enterprise.getEnterprisenumber());
|
report.setMajornum(0);
|
report.setNormalnum(0);
|
report.setOverduenum(0);
|
report.setUndealnum(0);
|
report.setViewcount(0);
|
report.setTotalnum(0);
|
|
}
|
|
//新增自检已选选项
|
{
|
|
JSONArray jsonArray = JSONArray.parseArray(checkReportVo.getReport());
|
if (jsonArray != null) {
|
List<HiddenDangerTableRow> rows = jsonArray.toJavaList(HiddenDangerTableRow.class);
|
List<HiddenDangerReportDetail> adds;
|
if (rows != null && rows.size() > 0) {
|
adds = new ArrayList<>();
|
for (HiddenDangerTableRow row : rows) {
|
//合格
|
if (row.isQualified() && !row.isUnqualified()) {
|
HiddenDangerTableRow.Unqualified cu = row.getAnswer();
|
HiddenDangerReportDetail q = new HiddenDangerReportDetail();
|
q.setResultid(cu.getResultid());
|
q.setReportcode(report.getCode());
|
q.setValidflag(true);
|
q.setIsqualified(true);
|
q.setChecktypeid(row.getChecktypeid());
|
adds.add(q);
|
}
|
//不合格
|
if (row.isUnqualified() && !row.isQualified()) {
|
HiddenDangerTableRow.Unqualified cu = row.getAnswer();
|
//重大危险
|
if (cu.getLevel() == 2) {
|
report.setMajornum(report.getMajornum() + 1);
|
}else{
|
report.setNormalnum(report.getNormalnum() + 1);
|
}
|
//未处理完个数
|
if (cu.getRectifystatus() == 1) {
|
report.setUndealnum(report.getUndealnum() + 1);
|
}
|
|
HiddenDangerReportDetail uq = new HiddenDangerReportDetail();
|
uq.setChecktypeid(row.getChecktypeid());
|
uq.setResultid(cu.getResultid());
|
uq.setFindtime(cu.getFindtime());
|
uq.setLevel(cu.getLevel());
|
uq.setReportcode(report.getCode());
|
uq.setRectifyprincipal(cu.getRectifyprincipal());
|
uq.setMemo(cu.getMemo());
|
uq.setRectifycompletedate(cu.getRectifycompletedate());
|
uq.setRectifymeasure(cu.getRectifymeasure());
|
uq.setRectifydeadline(cu.getRectifydeadline());
|
uq.setRectifystatus(cu.getRectifystatus());
|
uq.setIsqualified(false);
|
uq.setValidflag(true);
|
uq.setUrl(cu.getUrl());
|
adds.add(uq);
|
|
}
|
}
|
|
if (adds.size() > 0) {
|
report.setTotalnum(adds.size());
|
hiddenDangerReportDetailService.saveBatch(adds);
|
}
|
|
}
|
|
}
|
|
|
|
|
}
|
//新增自检报告->执行
|
{
|
report.setValidflag(true);
|
this.save(report);
|
}
|
|
}
|
|
/**
|
* @Description: 报告统计分页
|
* @date 2021/4/8 18:31
|
*/
|
@Override
|
public IPage reportList(Page<HiddenDangerReport> page, Map filter,UserInfo user) {
|
|
UserInfo userInfo = userService.getById(user.getId());
|
|
Map<String, Object> params = new HashMap<>();
|
//监管部门(companyid = null)可视范围为已提交的,否则只能看自己提交的信息
|
params.put("enterprisenumber", userInfo.getCompanynumber());
|
params.put("committed", HiddenDangerReportStatus.COMMITTED);
|
// 过滤条件
|
params.put("province", user.getProvince());
|
params.put("city", user.getCity());
|
params.put("district", user.getArea());
|
params.put("street", user.getTown());
|
params.put("committee", user.getCommunity());
|
params.put("filterProvince", filter.get("province"));
|
params.put("filterCity", filter.get("city"));
|
params.put("filterDistrict", filter.get("district"));
|
params.put("filterStreet", filter.get("street"));
|
params.put("filterCommittee", filter.get("committee"));
|
params.put("safetysupervision", filter.get("safetysupervision"));
|
params.put("cycle", filter.get("cycle"));
|
params.put("enterprisename", filter.get("enterprisename"));
|
params.put("starttime", filter.get("starttime"));
|
params.put("endtime", filter.get("endtime"));
|
params.put("range", filter.get("range"));
|
List<HiddenDangerReport> list = hiddenDangerReportMapper.selectReportList(page, params);
|
if (list.size() > 0) {
|
for (HiddenDangerReport report : list) {
|
//过期并且未处理
|
report.setOverduenum(hiddenDangerReportDetailService.countOverdueByReportCode(report.getCode()));
|
}
|
}
|
return page.setRecords(list);
|
}
|
|
/**
|
* @Description: 根据Id获取单条自检报告
|
* @date 2021/4/8 18:38
|
*/
|
@Override
|
public List<HiddenDangerTableRow> getReport(String code) {
|
return hiddenDangerReportMapper.selectReport(code);
|
}
|
|
|
/**
|
* @Description: 修改报告
|
* @date 2021/4/9 10:09
|
*/
|
@Override
|
public void modReport(CheckReportVo checkReportVo, UserInfo user) {
|
|
HiddenDangerReport report = new HiddenDangerReport();
|
report.setId(checkReportVo.getReportid());
|
report.setApplyperson(checkReportVo.getApplyperson());
|
report.setMajornum(0);
|
report.setNormalnum(0);
|
report.setOverduenum(0);
|
report.setUndealnum(0);
|
report.setTotalnum(0);
|
|
|
JSONArray jsonArray = JSONArray.parseArray(checkReportVo.getReport());
|
if (jsonArray != null) {
|
List<HiddenDangerTableRow> rows = jsonArray.toJavaList(HiddenDangerTableRow.class);
|
List<HiddenDangerReportDetail> adds;
|
List<HiddenDangerReportDetail> upds2Unqualified;
|
List<HiddenDangerReportDetail> upds2Qualified;
|
List<HiddenDangerReportDetail> dels;
|
|
|
if (rows != null && rows.size() > 0) {
|
adds = new ArrayList<>();
|
upds2Unqualified = new ArrayList<>();
|
upds2Qualified = new ArrayList<>();
|
dels = new ArrayList<>();
|
for (HiddenDangerTableRow row : rows) {
|
//合格
|
HiddenDangerTableRow.Unqualified cu = row.getAnswer();
|
if (row.isQualified() && !row.isUnqualified()) {
|
HiddenDangerReportDetail q = new HiddenDangerReportDetail();
|
if (cu.getId() != null) {
|
q.setId(cu.getId());
|
q.setIsqualified(true);
|
q.setResultid(cu.getResultid());
|
upds2Qualified.add(q);
|
}else{
|
q.setResultid(cu.getResultid());
|
q.setReportcode(checkReportVo.getReportcode());
|
q.setValidflag(true);
|
q.setIsqualified(true);
|
q.setChecktypeid(row.getChecktypeid());
|
q.setReportcode(checkReportVo.getReportcode());
|
adds.add(q);
|
}
|
|
}
|
//不合格
|
if (row.isUnqualified() && !row.isQualified()) {
|
HiddenDangerReportDetail uq = new HiddenDangerReportDetail();
|
|
//重大危险
|
if (cu.getLevel() == 2) {
|
report.setMajornum(report.getMajornum() + 1);
|
}else{
|
report.setNormalnum(report.getNormalnum() + 1);
|
}
|
//未处理完个数
|
if (cu.getRectifystatus() == 1) {
|
report.setUndealnum(report.getUndealnum() + 1);
|
}
|
uq.setChecktypeid(row.getChecktypeid());
|
uq.setResultid(cu.getResultid());
|
uq.setFindtime(cu.getFindtime());
|
uq.setLevel(cu.getLevel());
|
uq.setReportcode(checkReportVo.getReportcode());
|
uq.setRectifyprincipal(cu.getRectifyprincipal());
|
uq.setMemo(cu.getMemo());
|
uq.setRectifystatus(cu.getRectifystatus());
|
uq.setLevel(cu.getLevel());
|
uq.setRectifycompletedate(cu.getRectifycompletedate());
|
uq.setRectifymeasure(cu.getRectifymeasure());
|
uq.setRectifydeadline(cu.getRectifydeadline());
|
uq.setUrl(cu.getUrl());
|
|
if (cu.getId() != null) {
|
uq.setId(cu.getId());
|
uq.setIsqualified(false);
|
upds2Unqualified.add(uq);
|
}else{
|
uq.setIsqualified(false);
|
uq.setValidflag(true);
|
adds.add(uq);
|
}
|
|
|
}
|
|
//删除数据
|
if (!row.isUnqualified() && !row.isQualified()) {
|
if (cu.getId() != null) {
|
HiddenDangerReportDetail deleteOne = new HiddenDangerReportDetail();
|
deleteOne.setId(cu.getId());
|
deleteOne.setValidflag(false);
|
dels.add(deleteOne);
|
}
|
}
|
}
|
|
|
|
|
if (adds.size() > 0) {
|
hiddenDangerReportDetailService.saveBatch(adds);
|
}
|
|
if (upds2Unqualified.size() > 0) {
|
hiddenDangerReportDetailService.updateBatchById(upds2Unqualified);
|
}
|
|
if (upds2Qualified.size() > 0) {
|
hiddenDangerReportDetailService.update2Qualified(upds2Qualified);
|
}
|
|
report.setTotalnum(adds.size() + upds2Unqualified.size() + upds2Qualified.size());
|
|
if (dels.size() > 0) {
|
hiddenDangerReportDetailService.updateBatchById(dels);
|
}
|
|
}
|
|
this.updateById(report);
|
|
}
|
|
|
}
|
|
/**
|
* @Description: 文件上传
|
* @date 2021/4/9 14:57
|
*/
|
@Override
|
public String upload(MultipartFile file) {
|
try {
|
String name = UploadUtil.uploadFile(file, Properties.transportCertificatePath);
|
return Properties.transportCertificate + name;
|
} catch (Exception e) {
|
e.printStackTrace();
|
throw new BusinessException("上传文件失败,请联系管理员");
|
}
|
}
|
|
/**
|
* @Description: 查看检查单子
|
* @date 2021/4/13 10:12
|
*/
|
@Override
|
public List<HiddenDangerTableRow> viewReport(String code) {
|
|
return hiddenDangerReportMapper.viewReport(code);
|
}
|
|
|
/**
|
* @Description: 提交单子,更新单子状态->已提交
|
* @date 2021/4/13 9:41
|
*/
|
@Override
|
public void commitReport(String code) {
|
hiddenDangerReportMapper.updateStatusByCode(HiddenDangerReportStatus.COMMITTED,code);
|
}
|
|
|
/**
|
* @Description: 修改检查
|
* @date 2021/4/13 10:12
|
*/
|
@Override
|
public void checkMod(CheckReportVo checkReportVo) {
|
HiddenDangerReport report = this.getById(checkReportVo.getReportid());
|
if (report.getStatus() == HiddenDangerReportStatus.COMMITTED) {
|
throw new BusinessException("已提交状态无法修改");
|
}
|
|
}
|
|
/**
|
* @Description: 重复提交判断
|
* @date 2021/4/13 10:10
|
*/
|
@Override
|
public void checkCommit(String code) {
|
HiddenDangerReport report = this.getReportByCode(code);
|
if (report.getStatus() == HiddenDangerReportStatus.COMMITTED) {
|
throw new BusinessException("不能重复提交");
|
}
|
}
|
|
/**
|
* @Description: 根据code获取单子的基本数据
|
* @date 2021/4/13 10:12
|
*/
|
@Override
|
public HiddenDangerReport getReportByCode(String code) {
|
return hiddenDangerReportMapper.getReportByCode(code);
|
}
|
|
|
|
/**
|
* @Description: 报告新增不能为空
|
* @date 2021/4/15 16:47
|
*/
|
@Override
|
public void checkAdd(CheckReportVo checkReportVo, UserInfo user) {
|
if (StringUtils.isBlank(user.getCompanynumber())) {
|
throw new BusinessException("没有权限新建");
|
}
|
|
if (StringUtils.isBlank(checkReportVo.getApplyperson())) {
|
throw new BusinessException("报告人不能为空");
|
}
|
}
|
|
/**
|
* @Description: 导出隐患自检目录
|
* @date 2021/4/19 16:39
|
*/
|
@Override
|
public List<Map> selectExportReport(Map filter, UserInfo user) {
|
|
UserInfo userInfo = userService.getById(user.getId());
|
|
Map<String, Object> params = new HashMap<>();
|
//监管部门(companyid = null)可视范围为已提交的,否则只能看自己提交的信息
|
params.put("enterprisenumber", userInfo.getCompanynumber());
|
params.put("committed", HiddenDangerReportStatus.COMMITTED);
|
// 过滤条件
|
params.put("province", user.getProvince());
|
params.put("city", user.getCity());
|
params.put("district", user.getArea());
|
params.put("street", user.getTown());
|
params.put("committee", user.getCommunity());
|
params.put("filterProvince", filter.get("province"));
|
params.put("filterCity", filter.get("city"));
|
params.put("filterDistrict", filter.get("district"));
|
params.put("filterStreet", filter.get("street"));
|
params.put("filterCommittee", filter.get("committee"));
|
params.put("safetysupervision", filter.get("safetysupervision"));
|
params.put("cycle", filter.get("cycle"));
|
params.put("enterprisename", filter.get("enterprisename"));
|
params.put("starttime", filter.get("starttime"));
|
params.put("endtime", filter.get("endtime"));
|
params.put("range", filter.get("range"));
|
|
List<Map> reports = hiddenDangerReportMapper.selectExportReport(params);
|
if (reports.size() > 0) {
|
for (Map report : reports) {
|
report.put("overduenum", hiddenDangerReportDetailService.countOverdueByReportCode((String) report.get("code")));
|
}
|
}
|
return reports;
|
}
|
}
|