安全隐患列表

dev_xd
haha 2025-03-01 00:06:15 +08:00
parent e1a8ab5ade
commit 6491e9d05d
8 changed files with 158 additions and 241 deletions

View File

@ -1,6 +1,8 @@
package com.yanzhu.manage.mapper;
import java.util.List;
import java.util.Map;
import com.yanzhu.manage.domain.SmzSspProblemmodify;
/**
@ -59,4 +61,10 @@ public interface SmzSspProblemmodifyMapper
*/
public int deleteSmzSspProblemmodifyByIds(Long[] ids);
/**
*
* @param where
* @return
*/
List<SmzSspProblemmodify> getListCount(SmzSspProblemmodify where);
}

View File

@ -213,4 +213,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{id}
</foreach>
</delete>
<sql id="countUserWhere">
<if test="problemType != null and problemType != ''"> and problemType = #{problemType}</if>
<if test="dangerType != null and dangerType != ''"> and danger_type = #{dangerType}</if>
<if test="createTime != null "> and date(createTime) &gt;= date(#{createTime})</if>
<if test="updateTime != null "> and date(updateTime) &lt;= date(#{updateTime})</if>
<if test="createUser != null"> and createUser = #{createUser}</if>
<if test="lordSent != null and lordSent != ''"> and lordSent = #{lordSent}</if>
<if test="currentUserId != null and currentUserId!=''">
AND
(
createUser=#{currentUserId} or lordSent=#{currentUserId} or find_in_set(#{currentUserId},copySend) or recheckSend=#{currentUserId}
)
</if>
</sql>
<select id="getListCount" parameterType="SmzSspProblemmodify" resultMap="SmzSspProblemmodifyResult">
select 'a' projectName, count(1) id ,'全部' remark from smz_ssp_problemmodify where projectId=#{projectId} and comId=#{comId} and infoType=#{infoType} and isDel=0
<include refid="countUserWhere"></include>
union
select 'b' projectName, count(1) id,'待整改' remark from smz_ssp_problemmodify where projectId=#{projectId} and comId=#{comId} and infoType=#{infoType} and isDel=0 and checkState in (0,3)
<include refid="countUserWhere"></include>
union
select 'c' projectName, count(1) id,'待复检' remark from smz_ssp_problemmodify where projectId=#{projectId} and comId=#{comId} and infoType=#{infoType} and isDel=0 and checkState in (1)
<include refid="countUserWhere"></include>
union
select 'd' projectName, count(1) id,'整改完成' remark from smz_ssp_problemmodify where projectId=#{projectId} and comId=#{comId} and infoType=#{infoType} and isDel=0 and checkState in (4)
<include refid="countUserWhere"></include>
union
select 'e' projectName, count(1) id,'整改超时' remark from smz_ssp_problemmodify where projectId=#{projectId} and comId=#{comId} and infoType=#{infoType} and isDel=0 and checkState not in (4) and date(nickedTime) &lt;= curdate()
<include refid="countUserWhere"></include>
</select>
</mapper>

View File

@ -1,10 +1,13 @@
package com.yanzhu.manage.controller;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import com.yanzhu.common.security.utils.SecurityUtils;
import com.yanzhu.manage.domain.SmzSspProblemmodify;
import com.yanzhu.manage.service.ISmzSspProblemmodifyService;
import com.yanzhu.system.api.domain.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -47,6 +50,24 @@ public class SmzSspProblemmodifyController extends BaseController
return getDataTable(list);
}
/**
*
* @return
*/
@RequiresPermissions("trouble:problemmodify:list")
@GetMapping("/listCount")
public AjaxResult getListCount(SmzSspProblemmodify where){
SysUser user=SecurityUtils.getLoginUser().getSysUser();
where.setProjectId(user.getActiveProjectId());
where.setComId(user.getActiveComId());
if(SecurityUtils.isAdmin(SecurityUtils.getUserId()) || SecurityUtils.isGSAdmin()) {
where.setCurrentUserId(null);
}else{
where.setCurrentUserId(user.getUserId());
}
List<SmzSspProblemmodify> result=smzSspProblemmodifyService.getListCount(where);
return AjaxResult.success(result);
}
/**
*
*/
@ -92,6 +113,7 @@ public class SmzSspProblemmodifyController extends BaseController
return toAjax(smzSspProblemmodifyService.insertSmzSspProblemmodifies(list));
}
/**
*
*/

View File

@ -1,6 +1,8 @@
package com.yanzhu.manage.service;
import java.util.List;
import java.util.Map;
import com.yanzhu.manage.domain.SmzSspProblemmodify;
/**
@ -60,4 +62,11 @@ public interface ISmzSspProblemmodifyService
public int deleteSmzSspProblemmodifyById(Long id);
public int insertSmzSspProblemmodifies(List<SmzSspProblemmodify> list);
/**
*
* @param where
* @return
*/
List<SmzSspProblemmodify> getListCount(SmzSspProblemmodify where);
}

View File

@ -1,10 +1,12 @@
package com.yanzhu.manage.service.impl;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import com.yanzhu.common.core.context.SecurityContextHolder;
import com.yanzhu.common.core.utils.DateUtils;
import com.yanzhu.common.security.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yanzhu.manage.mapper.SmzSspProblemmodifyMapper;
@ -106,9 +108,20 @@ public class SmzSspProblemmodifyServiceImpl implements ISmzSspProblemmodifyServi
it.setCheckState(0L);
it.setIsDel(0L);
it.setCreateTime(DateUtils.getNowDate());
it.setCreateBy(SecurityContextHolder.getUserName());
it.setCreateBy(""+SecurityUtils.getLoginUser().getSysUser().getUserId());
it.setCreateUser(""+SecurityUtils.getLoginUser().getSysUser().getUserId());
count.addAndGet(smzSspProblemmodifyMapper.insertSmzSspProblemmodify(it));
});
return count.get();
}
/**
*
* @param where
* @return
*/
@Override
public List<SmzSspProblemmodify> getListCount(SmzSspProblemmodify where) {
return smzSspProblemmodifyMapper.getListCount(where);
}
}

View File

@ -50,3 +50,12 @@ export function batchAddProblemmodify(datas) {
data: datas,
});
}
// 查询安全隐患整改详细
export function getListCount(data) {
return request({
url: "/manage/problemmodify/listCount",
method: "get",
params: data,
});
}

View File

@ -1,92 +1,28 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="租户ID" prop="comId">
<el-input v-model="queryParams.comId" placeholder="请输入租户ID" clearable @keyup.enter="handleQuery" />
<div class="app-container trouble-problemodify-index">
<el-form class="header-form" :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch">
<el-form-item label="检查类型" prop="problemType">
<el-select v-model="queryParams.problemType" placeholder="请选择检查类型" clearable4 style="width: 160px;">
<el-option v-for="dict in ssp_proble_type" :key="dict.value" :label="dict.label" :value="dict.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="项目id" prop="projectId">
<el-input v-model="queryParams.projectId" placeholder="请输入项目id" clearable @keyup.enter="handleQuery" />
<el-form-item label="隐患类型" prop="dangerType">
<el-select v-model="queryParams.dangerType" placeholder="请选择隐患类型" clearable>
<el-option v-for="dict in ssp_proble_sub_type" :key="dict.value" :label="dict.label" :value="dict.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="留痕图片" prop="marksPicture">
<el-input v-model="queryParams.marksPicture" placeholder="请输入留痕图片" clearable @keyup.enter="handleQuery" />
<el-form-item label="整改人" prop="lordSent">
<el-input v-model="queryParams.lordSent" placeholder="请输入人员姓名/联系方式" clearable style="width: 180px;" />
</el-form-item>
<el-form-item label="留痕视频" prop="marksVideo">
<el-input v-model="queryParams.marksVideo" placeholder="请输入留痕视频" clearable @keyup.enter="handleQuery" />
<el-form-item label="提交人" prop="createUser">
<el-input v-model="queryParams.createUser" placeholder="请输入人员姓名/联系方式" clearable style="width: 180px;" />
</el-form-item>
<el-form-item label="整改图片" prop="correctionPicture">
<el-input v-model="queryParams.correctionPicture" placeholder="请输入整改图片" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="拍摄位置" prop="problemArea">
<el-input v-model="queryParams.problemArea" placeholder="请输入拍摄位置" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="施工部位" prop="workParts">
<el-input v-model="queryParams.workParts" placeholder="请输入施工部位" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="整改要求" prop="changeInfo">
<el-input v-model="queryParams.changeInfo" placeholder="请输入整改要求" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="主送人姓名" prop="lordSent">
<el-input v-model="queryParams.lordSent" placeholder="请输入主送人姓名" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="主送人手机号" prop="lordSentUser">
<el-input v-model="queryParams.lordSentUser" placeholder="请输入主送人手机号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="抄送人姓名" prop="copySend">
<el-input v-model="queryParams.copySend" placeholder="请输入抄送人姓名" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="抄送人手机号" prop="copySendUser">
<el-input v-model="queryParams.copySendUser" placeholder="请输入抄送人手机号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="流程状态" prop="checkState">
<el-input v-model="queryParams.checkState" placeholder="请输入流程状态" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="整改定位" prop="nickedArea">
<el-input v-model="queryParams.nickedArea" placeholder="请输入整改定位" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="整改截至时间" prop="nickedTime">
<el-date-picker clearable v-model="queryParams.nickedTime" type="date" value-format="YYYY-MM-DD"
placeholder="请选择整改截至时间">
</el-date-picker>
</el-form-item>
<el-form-item label="工序名称" prop="processName">
<el-input v-model="queryParams.processName" placeholder="请输入工序名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="工程名称" prop="projectName">
<el-input v-model="queryParams.projectName" placeholder="请输入工程名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="留痕说明" prop="nickedInfo">
<el-input v-model="queryParams.nickedInfo" placeholder="请输入留痕说明" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="审核人" prop="checkUser">
<el-input v-model="queryParams.checkUser" placeholder="请输入审核人" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="审核人手机号" prop="checkUserPhone">
<el-input v-model="queryParams.checkUserPhone" placeholder="请输入审核人手机号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="删除状态" prop="isDel">
<el-input v-model="queryParams.isDel" placeholder="请输入删除状态" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="创建人" prop="createUser">
<el-input v-model="queryParams.createUser" placeholder="请输入创建人" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker clearable v-model="queryParams.createTime" type="date" value-format="YYYY-MM-DD"
placeholder="请选择创建时间">
</el-date-picker>
</el-form-item>
<el-form-item label="修改人" prop="updateUser">
<el-input v-model="queryParams.updateUser" placeholder="请输入修改人" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="修改时间" prop="updateTime">
<el-date-picker clearable v-model="queryParams.updateTime" type="date" value-format="YYYY-MM-DD"
placeholder="请选择修改时间">
</el-date-picker>
</el-form-item>
<el-form-item label="复检人" prop="recheckSend">
<el-input v-model="queryParams.recheckSend" placeholder="请输入复检人" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="复检人手机号" prop="recheckSendUser">
<el-input v-model="queryParams.recheckSendUser" placeholder="请输入复检人手机号" clearable @keyup.enter="handleQuery" />
<el-form-item label="提交时间" prop="dateRange">
<el-date-picker v-model="queryParams.dataRange" type="daterange" style="width: 300px;" range-separator="--"
start-placeholder="开始日期" end-placeholder="结束日期" :size="size" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
@ -94,26 +30,6 @@
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd"
v-hasPermi="['trouble:problemmodify:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate"
v-hasPermi="['trouble:problemmodify:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete"
v-hasPermi="['trouble:problemmodify:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport"
v-hasPermi="['trouble:problemmodify:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="problemmodifyList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="${comment}" align="center" prop="id" />
@ -172,108 +88,17 @@
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
@pagination="getList" />
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改安全隐患整改对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="problemmodifyRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="租户ID" prop="comId">
<el-input v-model="form.comId" placeholder="请输入租户ID" />
</el-form-item>
<el-form-item label="项目id" prop="projectId">
<el-input v-model="form.projectId" placeholder="请输入项目id" />
</el-form-item>
<el-form-item label="留痕图片" prop="marksPicture">
<el-input v-model="form.marksPicture" placeholder="请输入留痕图片" />
</el-form-item>
<el-form-item label="留痕视频" prop="marksVideo">
<el-input v-model="form.marksVideo" placeholder="请输入留痕视频" />
</el-form-item>
<el-form-item label="整改图片" prop="correctionPicture">
<el-input v-model="form.correctionPicture" placeholder="请输入整改图片" />
</el-form-item>
<el-form-item label="拍摄位置" prop="problemArea">
<el-input v-model="form.problemArea" placeholder="请输入拍摄位置" />
</el-form-item>
<el-form-item label="施工部位" prop="workParts">
<el-input v-model="form.workParts" placeholder="请输入施工部位" />
</el-form-item>
<el-form-item label="整改要求" prop="changeInfo">
<el-input v-model="form.changeInfo" placeholder="请输入整改要求" />
</el-form-item>
<el-form-item label="主送人姓名" prop="lordSent">
<el-input v-model="form.lordSent" placeholder="请输入主送人姓名" />
</el-form-item>
<el-form-item label="主送人手机号" prop="lordSentUser">
<el-input v-model="form.lordSentUser" placeholder="请输入主送人手机号" />
</el-form-item>
<el-form-item label="抄送人姓名" prop="copySend">
<el-input v-model="form.copySend" placeholder="请输入抄送人姓名" />
</el-form-item>
<el-form-item label="抄送人手机号" prop="copySendUser">
<el-input v-model="form.copySendUser" placeholder="请输入抄送人手机号" />
</el-form-item>
<el-form-item label="流程状态" prop="checkState">
<el-input v-model="form.checkState" placeholder="请输入流程状态" />
</el-form-item>
<el-form-item label="整改定位" prop="nickedArea">
<el-input v-model="form.nickedArea" placeholder="请输入整改定位" />
</el-form-item>
<el-form-item label="整改截至时间" prop="nickedTime">
<el-date-picker clearable v-model="form.nickedTime" type="date" value-format="YYYY-MM-DD"
placeholder="请选择整改截至时间">
</el-date-picker>
</el-form-item>
<el-form-item label="工序名称" prop="processName">
<el-input v-model="form.processName" placeholder="请输入工序名称" />
</el-form-item>
<el-form-item label="工程名称" prop="projectName">
<el-input v-model="form.projectName" placeholder="请输入工程名称" />
</el-form-item>
<el-form-item label="留痕说明" prop="nickedInfo">
<el-input v-model="form.nickedInfo" placeholder="请输入留痕说明" />
</el-form-item>
<el-form-item label="审核人" prop="checkUser">
<el-input v-model="form.checkUser" placeholder="请输入审核人" />
</el-form-item>
<el-form-item label="审核人手机号" prop="checkUserPhone">
<el-input v-model="form.checkUserPhone" placeholder="请输入审核人手机号" />
</el-form-item>
<el-form-item label="智能公司展示的图片url" prop="smarkUrl">
<el-input v-model="form.smarkUrl" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="删除状态" prop="isDel">
<el-input v-model="form.isDel" placeholder="请输入删除状态" />
</el-form-item>
<el-form-item label="创建人" prop="createUser">
<el-input v-model="form.createUser" placeholder="请输入创建人" />
</el-form-item>
<el-form-item label="修改人" prop="updateUser">
<el-input v-model="form.updateUser" placeholder="请输入修改人" />
</el-form-item>
<el-form-item label="复检人" prop="recheckSend">
<el-input v-model="form.recheckSend" placeholder="请输入复检人" />
</el-form-item>
<el-form-item label="复检人手机号" prop="recheckSendUser">
<el-input v-model="form.recheckSendUser" placeholder="请输入复检人手机号" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="Problemmodify">
import { listProblemmodify, getProblemmodify, delProblemmodify, addProblemmodify, updateProblemmodify } from "@/api/manage/problemmodify";
import { listProblemmodify, getProblemmodify, delProblemmodify, addProblemmodify, updateProblemmodify, getListCount } from "@/api/trouble/problemmodify";
const { proxy } = getCurrentInstance();
const { ssp_proble_type, ssp_proble_sub_type } = proxy.useDict('ssp_proble_type', 'ssp_proble_sub_type');
const problemmodifyList = ref([]);
const open = ref(false);
const loading = ref(true);
@ -287,41 +112,16 @@ const title = ref("");
const data = reactive({
form: {},
queryParams: {
dateRange: [],
pageNum: 1,
pageSize: 10,
comId: null,
projectId: null,
infoType: null,
marksPicture: null,
marksVideo: null,
correctionPicture: null,
problemArea: null,
workParts: null,
changeInfo: null,
lordSent: null,
lordSentUser: null,
copySend: null,
copySendUser: null,
checkState: null,
nickedArea: null,
nickedTime: null,
projectType: null,
processName: null,
projectName: null,
nickedInfo: null,
checkUser: null,
checkUserPhone: null,
smarkUrl: null,
isDel: null,
createUser: null,
createTime: null,
updateUser: null,
updateTime: null,
problemType: null,
dangerType: null,
recheckSend: null,
recheckSendUser: null,
roleType: null,
problemType: null
lordSent: null,
createUser: null,
},
rules: {
comId: [
@ -342,11 +142,6 @@ function getList() {
});
}
//
function cancel() {
open.value = false;
reset();
}
//
function reset() {
@ -398,6 +193,7 @@ function handleQuery() {
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef");
queryParams.value.dataRange = [];
handleQuery();
}
@ -465,5 +261,13 @@ function handleExport() {
}, `problemmodify_${new Date().getTime()}.xlsx`)
}
getList();
</script>
<style lang="scss">
.trouble-problemodify-index {
.header-form {
.el-form-item {
margin-right: 10px;
}
}
}
</style>

View File

@ -301,14 +301,14 @@ function doBatchAdd(datas) {
it.comId = userStore.currentComId;
it.infoType = 0;
let users = data.users.filter(u => u.userId == it.lordSent);
it.lordSent = users.map(u => u.userName).join(",");
it.lordSentUser = users.map(u => u.userPhone).join(",");
it.lordSent = users.map(u => u.userId).join(",");
it.lordSentUser = users.map(u => u.userName).join(",");
users = data.users.filter(u => it.copySend.includes(u.userId));
it.copySend = users.map(u => u.userName).join(",");
it.copySendUser = users.map(u => u.userPhone).join(",");
it.copySend = users.map(u => u.userId).join(",");
it.copySendUser = users.map(u => u.userName).join(",");
users = data.users.filter(u => u.userId == it.recheckSend);
it.recheckSend = users.map(u => u.userName).join(",");
it.recheckSendUser = users.map(u => u.userPhone).join(",");
it.recheckSend = users.map(u => u.userId).join(",");
it.recheckSendUser = users.map(u => u.userName).join(",");
});
batchAddProblemmodify(datas).then(res => {
if (res.code == 200) {
@ -317,6 +317,27 @@ function doBatchAdd(datas) {
data.showList.splice(it, 1);
data.dataList.splice(it, 1);
});
if (data.showList.length == 0) {
let row = {
key: +new Date(),
id: null,
projectId: userStore.currentPrjId,
comId: userStore.currentComId,
problemType: null,
dangerType: null,
smarkUrl: null,
workParts: null,
changeInfo: null,
lordSent: null,
copySend: null,
recheckSend: null,
nickedTime: null,
isDel: 0,
infoType: 1
};
data.dataList.push(row);
data.showList.push(row);
}
}
});
}