Commit e27e00c9 authored by 耿迪迪's avatar 耿迪迪

居民村庄安检量统计

parent 9d8d940c
...@@ -281,6 +281,30 @@ public class TTaskInspectController extends BaseController ...@@ -281,6 +281,30 @@ public class TTaskInspectController extends BaseController
} }
/**
* 根据村庄统计安检量
* @param param 参数
* @return
*/
@PostMapping("/inspectNumStatisticByVillage")
public AjaxResult inspectNumStatisticByVillage(@RequestBody Map<String,String> param){
return AjaxResult.success(tTaskInspectService.inspectNumStatisticByVillage(param));
}
/**
* 根据村庄统计安检量导出
* @param param
* @return
*/
@PostMapping("/inspectNumStatisticByVillageExport")
public AjaxResult inspectNumStatisticByVillageExport(@RequestBody Map<String,String> param){
List<InspectNumStatisticByVillageVo> list = tTaskInspectService.inspectNumStatisticByVillage(param);
ExcelUtil<InspectNumStatisticByVillageVo> util = new ExcelUtil<>(InspectNumStatisticByVillageVo.class);
return util.exportExcel(list, "居民村庄安检量统计数据");
}
/** /**
* 微信安检量统计 * 微信安检量统计
* @param param 入参 * @param param 入参
......
package com.zehong.system.domain.vo;
import com.zehong.common.annotation.Excel;
/**
* 安检量统计导出
*/
public class InspectNumStatisticByVillageVo {
/** 姓名 */
@Excel(name="村庄")
private String name;
/** 待安检单数 */
//@Excel(name="待安检单数")
private String noInspectNum;
/** 正常安检 */
@Excel(name="正常安检")
private int normalInspectNum;
/** 拒绝安检 */
@Excel(name="拒绝安检")
private int refuseInspectNum;
/** 燃气停用 */
@Excel(name="燃气停用")
private int stopInspectNum;
/** 到访不遇 */
@Excel(name="到访不遇")
private int missInspectNum;
/** 有隐患单数 */
@Excel(name="有隐患单数")
private int dangerNum;
/** 无隐患单数 */
@Excel(name="无隐患单数")
private int noDangerNum;
/** 汇总 */
@Excel(name="汇总")
private int total;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNoInspectNum() {
return noInspectNum;
}
public void setNoInspectNum(String noInspectNum) {
this.noInspectNum = noInspectNum;
}
public int getNormalInspectNum() {
return normalInspectNum;
}
public void setNormalInspectNum(int normalInspectNum) {
this.normalInspectNum = normalInspectNum;
}
public int getRefuseInspectNum() {
return refuseInspectNum;
}
public void setRefuseInspectNum(int refuseInspectNum) {
this.refuseInspectNum = refuseInspectNum;
}
public int getStopInspectNum() {
return stopInspectNum;
}
public void setStopInspectNum(int stopInspectNum) {
this.stopInspectNum = stopInspectNum;
}
public int getMissInspectNum() {
return missInspectNum;
}
public void setMissInspectNum(int missInspectNum) {
this.missInspectNum = missInspectNum;
}
public int getDangerNum() {
return dangerNum;
}
public void setDangerNum(int dangerNum) {
this.dangerNum = dangerNum;
}
public int getNoDangerNum() {
return noDangerNum;
}
public void setNoDangerNum(int noDangerNum) {
this.noDangerNum = noDangerNum;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
}
...@@ -4,6 +4,7 @@ import java.util.List; ...@@ -4,6 +4,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import com.zehong.system.domain.TTaskInspect; import com.zehong.system.domain.TTaskInspect;
import com.zehong.system.domain.vo.InspectNumStatisticByVillageVo;
import com.zehong.system.domain.vo.UserTaskInspect; import com.zehong.system.domain.vo.UserTaskInspect;
import com.zehong.system.domain.vo.Userinstpect; import com.zehong.system.domain.vo.Userinstpect;
...@@ -137,4 +138,11 @@ public interface TTaskInspectMapper ...@@ -137,4 +138,11 @@ public interface TTaskInspectMapper
* @return * @return
*/ */
List<Map<String,Object>> inspectNumStatisticByInspectorAndType(Map<String,String> param); List<Map<String,Object>> inspectNumStatisticByInspectorAndType(Map<String,String> param);
/**
* 居民村庄安检量统计
* @param param 入参
* @return
*/
List<InspectNumStatisticByVillageVo> inspectNumStatisticByVillage(Map<String,String> param);
} }
...@@ -2,6 +2,7 @@ package com.zehong.system.service; ...@@ -2,6 +2,7 @@ package com.zehong.system.service;
import com.zehong.system.domain.TTaskInspect; import com.zehong.system.domain.TTaskInspect;
import com.zehong.system.domain.vo.InspectNumStatisticByInspectorExportVo; import com.zehong.system.domain.vo.InspectNumStatisticByInspectorExportVo;
import com.zehong.system.domain.vo.InspectNumStatisticByVillageVo;
import com.zehong.system.domain.vo.UserTaskInspect; import com.zehong.system.domain.vo.UserTaskInspect;
import com.zehong.system.domain.vo.Userinstpect; import com.zehong.system.domain.vo.Userinstpect;
...@@ -122,6 +123,14 @@ public interface ITTaskInspectService ...@@ -122,6 +123,14 @@ public interface ITTaskInspectService
*/ */
Map<String,Object> inspectNumStatisticByInspectorForWeiXin(Map<String,String> param); Map<String,Object> inspectNumStatisticByInspectorForWeiXin(Map<String,String> param);
/**
* 居民村庄安检量统计
* @param param 入参
* @return
*/
List<InspectNumStatisticByVillageVo> inspectNumStatisticByVillage(Map<String,String> param);
/** /**
* 工商业安检量统计 * 工商业安检量统计
......
...@@ -11,6 +11,7 @@ import com.zehong.common.utils.bean.BeanUtils; ...@@ -11,6 +11,7 @@ import com.zehong.common.utils.bean.BeanUtils;
import com.zehong.system.domain.TTask; import com.zehong.system.domain.TTask;
import com.zehong.system.domain.TUserInspect; import com.zehong.system.domain.TUserInspect;
import com.zehong.system.domain.vo.InspectNumStatisticByInspectorExportVo; import com.zehong.system.domain.vo.InspectNumStatisticByInspectorExportVo;
import com.zehong.system.domain.vo.InspectNumStatisticByVillageVo;
import com.zehong.system.domain.vo.UserTaskInspect; import com.zehong.system.domain.vo.UserTaskInspect;
import com.zehong.system.domain.vo.Userinstpect; import com.zehong.system.domain.vo.Userinstpect;
import com.zehong.system.mapper.TDangerMapper; import com.zehong.system.mapper.TDangerMapper;
...@@ -358,6 +359,17 @@ public class TTaskInspectServiceImpl implements ITTaskInspectService ...@@ -358,6 +359,17 @@ public class TTaskInspectServiceImpl implements ITTaskInspectService
} }
/**
* 居民村庄安检量统计
* @param param 入参
* @return
*/
@Override
public List<InspectNumStatisticByVillageVo> inspectNumStatisticByVillage(Map<String,String> param){
return tTaskInspectMapper.inspectNumStatisticByVillage(param);
}
/** /**
* 工商业安检量统计 * 工商业安检量统计
......
...@@ -502,6 +502,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -502,6 +502,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
GROUP BY inspect.member_id,inspect.task_id; GROUP BY inspect.member_id,inspect.task_id;
</select> </select>
<select id="inspectNumStatisticByVillage" parameterType="InspectNumStatisticByVillageVo" resultType="Map">
select
co.name,
COUNT(inspect.id) as total,
SUM(IF(inspect.status = 0,1,0)) AS missInspectNum,
SUM(IF(inspect.status = 1,1,0)) AS refuseInspectNum,
SUM(IF(inspect.status = 2,1,0)) AS normalInspectNum,
SUM(IF(inspect.status = 3,1,0)) AS stopInspectNum,
SUM(IF(inspect.danger = 1,1,0)) AS dangerNum,
SUM(IF(inspect.danger = 1,0,1)) AS noDangerNum
FROM (
SELECT
i.id,
i.task_id,
i.member_id,
i.status,
i.danger,
i.create_time,
i.receive_id
FROM t_task_inspect i
INNER JOIN (
SELECT receive_id, MAX(id) AS max_id
FROM t_task_inspect
WHERE `status` != -1 and `type` = '1'
GROUP BY receive_id
) latest ON i.id = latest.max_id
) inspect
INNER JOIN t_user us ON us.id = inspect.receive_id
LEFT JOIN t_community co ON co.id = us.village
<where>
<if test="beginTime != null and endTime != null"> and inspect.create_time between #{beginTime} and #{endTime}</if>
<if test="village != null"> and us.village = #{village}</if>
<if test="street != null"> and us.street = #{street}</if>
</where>
GROUP BY us.village
</select>
<select id="inspectNumStatisticByTask" parameterType="Map" resultType="Map"> <select id="inspectNumStatisticByTask" parameterType="Map" resultType="Map">
SELECT SELECT
sum(statistic.totalUserNum) AS totalUserNum, sum(statistic.totalUserNum) AS totalUserNum,
......
...@@ -169,3 +169,22 @@ export function inspectNumStatisticByInspectorAndTypeExport(data) { ...@@ -169,3 +169,22 @@ export function inspectNumStatisticByInspectorAndTypeExport(data) {
data: data data: data
}) })
} }
//居民村庄安检量统计
export function inspectNumStatisticByVillage(data) {
return request({
url: '/checktask/inspect/inspectNumStatisticByVillage',
method: 'post',
data: data
})
}
//居民村庄安检量统计导出
export function inspectNumStatisticByVillageExport(data) {
return request({
url: '/checktask/inspect/inspectNumStatisticByVillageExport',
method: 'post',
data: data
})
}
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="130px">
<el-form-item label="起止时间">
<el-date-picker
v-model="time"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
size="small"
@change="timeChange"
value-format="yyyy-MM-dd"
:clearable="false"
>
</el-date-picker>
</el-form-item>
<el-form-item label="所属区域(区县)" prop="street">
<el-select
v-model="queryParams.street"
placeholder="所属区域(区县)"
@change="changeStreet"
filterable
>
<el-option
v-for="item in streetData"
:key="item.id"
:label="item.areaName"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="所属区域(村)" prop="village">
<el-select
v-model="queryParams.village"
placeholder="所属区域(村)"
filterable
>
<el-option
v-for="item in communityData"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
:loading="exportLoading"
@click="handleExport"
>导出</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="inspectStatisticInfoList">
<el-table-column label="姓名" align="center" prop="name"/>
<!--<el-table-column label="待安检单数" align="center" prop="noInspectNum"/>-->
<el-table-column label="正常安检" align="center" prop="normalInspectNum"/>
<el-table-column label="拒绝安检" align="center" prop="refuseInspectNum"/>
<el-table-column label="燃气停用" align="center" prop="stopInspectNum"/>
<el-table-column label="到访不遇" align="center" prop="missInspectNum"/>
<el-table-column label="有隐患单数" align="center" prop="dangerNum"/>
<el-table-column label="无隐患单数" align="center" prop="noDangerNum"/>
<el-table-column label="汇总" align="center" prop="total"/>
</el-table>
</div>
</template>
<script>
import {inspectNumStatisticByVillage, inspectNumStatisticByVillageExport} from "@/api/checktask/inspect";
import { communityList } from "@/api/baseinfo/community";
import { aLLAreaListInfo } from "@/api/baseinfo/area";
import moment from 'moment';
export default {
name: "inspect-statistic-index",
data(){
return{
queryParams:{
beginTime: moment(moment().startOf('day').toDate()).format("YYYY-MM-DD HH:mm:ss"),
endTime: moment(moment().endOf('day').toDate()).format("YYYY-MM-DD HH:mm:ss"),
village: null,
street: null
},
loading: true,
inspectStatisticInfoList: [],
time: [moment(moment().startOf('day').toDate()).format("YYYY-MM-DD HH:mm:ss"),moment(moment().endOf('day').toDate()).format("YYYY-MM-DD HH:mm:ss")],
communityData: [],
streetData: [],
exportLoading: false
}
},
created(){
this.getList();
this.getCommunityInfo();
this.getStreet();
},
methods:{
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.queryParams.beginTime = moment(moment().startOf('day').toDate()).format("YYYY-MM-DD HH:mm:ss");
this.queryParams.endTime = moment(moment().endOf('day').toDate()).format("YYYY-MM-DD HH:mm:ss");
this.getCommunityInfo();
this.time = [moment(moment().startOf('day').toDate()).format("YYYY-MM-DD HH:mm:ss"),moment(moment().endOf('day').toDate()).format("YYYY-MM-DD HH:mm:ss")];
this.handleQuery();
},
getList(){
this.loading = true;
inspectNumStatisticByVillage(this.queryParams).then(res =>{
this.loading = false;
if(res.code == 200 && res.data){
this.inspectStatisticInfoList = res.data;
let statistic = {name: "汇总",noInspectNum: "-",normalInspectNum: 0,refuseInspectNum: 0,stopInspectNum: 0,
missInspectNum: 0,dangerNum: 0,noDangerNum: 0,total: 0};
this.inspectStatisticInfoList.forEach(item =>{
let total = item.normalInspectNum + item.refuseInspectNum + item.stopInspectNum + item.missInspectNum;
//statistic.noInspectNum += item.noInspectNum;
statistic.normalInspectNum += item.normalInspectNum;
statistic.refuseInspectNum += item.refuseInspectNum;
statistic.stopInspectNum += item.stopInspectNum;
statistic.missInspectNum += item.missInspectNum;
statistic.dangerNum += item.dangerNum;
statistic.noDangerNum += item.noDangerNum;
statistic.total += total;
item.total = total;
})
this.inspectStatisticInfoList.unshift(statistic);
}
})
},
timeChange(val){
this.queryParams.beginTime = val[0] + " 00:00:00";
this.queryParams.endTime = val[1] + " 23:59:59";
},
//获取小区信息
getCommunityInfo(){
communityList({street: this.queryParams.street}).then(res =>{
if(res.code == 200){
this.communityData = res.data;
}
})
},
//获取街道镇信息
getStreet(){
aLLAreaListInfo({parentId: 8}).then(res =>{
if(res.code == 200){
this.streetData = res.data;
}
})
},
changeStreet(){
this.queryParams.village = null;
this.getCommunityInfo();
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有安检量统计数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.exportLoading = true;
return inspectNumStatisticByVillageExport(queryParams);
}).then(response => {
this.download(response.msg);
this.exportLoading = false;
}).catch(() => {});
},
}
}
</script>
<style scoped>
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment