Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
H
huaxin-rq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
耿迪迪
huaxin-rq
Commits
560b898a
Commit
560b898a
authored
Feb 11, 2026
by
耿迪迪
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
安检量统计
parent
07c4c10b
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
292 additions
and
3 deletions
+292
-3
TTaskInspectController.java
...hong/web/controller/checktask/TTaskInspectController.java
+10
-0
TTaskInspectMapper.java
...ain/java/com/zehong/system/mapper/TTaskInspectMapper.java
+7
-0
ITTaskInspectService.java
.../java/com/zehong/system/service/ITTaskInspectService.java
+7
-0
TTaskInspectServiceImpl.java
...m/zehong/system/service/impl/TTaskInspectServiceImpl.java
+76
-3
TTaskInspectMapper.xml
...m/src/main/resources/mapper/system/TTaskInspectMapper.xml
+55
-0
inspect.js
huaxin-web/src/api/checktask/inspect.js
+9
-0
index.vue
.../views/checktask/inspectnumstatisticbyinspector/index.vue
+128
-0
No files found.
huaxin-admin/src/main/java/com/zehong/web/controller/checktask/TTaskInspectController.java
View file @
560b898a
...
@@ -257,4 +257,14 @@ public class TTaskInspectController extends BaseController
...
@@ -257,4 +257,14 @@ public class TTaskInspectController extends BaseController
public
AjaxResult
statisticsInspectItems
(
TInspectStatisticsInfo
inspectStatisticsInfo
){
public
AjaxResult
statisticsInspectItems
(
TInspectStatisticsInfo
inspectStatisticsInfo
){
return
AjaxResult
.
success
(
itStatisticsInspectItemService
.
statisticsInspectItems
(
inspectStatisticsInfo
));
return
AjaxResult
.
success
(
itStatisticsInspectItemService
.
statisticsInspectItems
(
inspectStatisticsInfo
));
}
}
/**
* 根据安检人统计安检量
* @param param 参数
* @return
*/
@PostMapping
(
"/inspectNumStatisticByInspector"
)
public
AjaxResult
inspectNumStatisticByInspector
(
@RequestBody
Map
<
String
,
String
>
param
){
return
AjaxResult
.
success
(
tTaskInspectService
.
inspectNumStatisticByInspector
(
param
));
}
}
}
huaxin-system/src/main/java/com/zehong/system/mapper/TTaskInspectMapper.java
View file @
560b898a
...
@@ -107,4 +107,11 @@ public interface TTaskInspectMapper
...
@@ -107,4 +107,11 @@ public interface TTaskInspectMapper
* @return
* @return
*/
*/
List
<
TTaskInspect
>
selectResidentInspectItemStatistics
(
Map
<
String
,
Object
>
params
);
List
<
TTaskInspect
>
selectResidentInspectItemStatistics
(
Map
<
String
,
Object
>
params
);
/**
* 安检量统计
* @param param 入参
* @return
*/
List
<
Map
<
String
,
Object
>>
inspectNumStatisticByInspector
(
Map
<
String
,
String
>
param
);
}
}
huaxin-system/src/main/java/com/zehong/system/service/ITTaskInspectService.java
View file @
560b898a
...
@@ -98,4 +98,11 @@ public interface ITTaskInspectService
...
@@ -98,4 +98,11 @@ public interface ITTaskInspectService
* @return
* @return
*/
*/
List
<
UserTaskInspect
>
selectVisitorMissInfo
(
UserTaskInspect
userTaskInspect
);
List
<
UserTaskInspect
>
selectVisitorMissInfo
(
UserTaskInspect
userTaskInspect
);
/**
* 安检量统计
* @param param 入参
* @return
*/
List
<
Map
<
String
,
Object
>>
inspectNumStatisticByInspector
(
Map
<
String
,
String
>
param
);
}
}
huaxin-system/src/main/java/com/zehong/system/service/impl/TTaskInspectServiceImpl.java
View file @
560b898a
package
com
.
zehong
.
system
.
service
.
impl
;
package
com
.
zehong
.
system
.
service
.
impl
;
import
java.
util.Date
;
import
java.
math.BigDecimal
;
import
java.util.
List
;
import
java.util.
*
;
import
java.util.
Map
;
import
java.util.
stream.Collectors
;
import
com.zehong.common.utils.DateUtils
;
import
com.zehong.common.utils.DateUtils
;
import
com.zehong.common.utils.SecurityUtils
;
import
com.zehong.common.utils.SecurityUtils
;
...
@@ -215,4 +215,77 @@ public class TTaskInspectServiceImpl implements ITTaskInspectService
...
@@ -215,4 +215,77 @@ public class TTaskInspectServiceImpl implements ITTaskInspectService
public
List
<
UserTaskInspect
>
selectVisitorMissInfo
(
UserTaskInspect
userTaskInspect
){
public
List
<
UserTaskInspect
>
selectVisitorMissInfo
(
UserTaskInspect
userTaskInspect
){
return
tTaskInspectMapper
.
selectVisitorMissInfo
(
userTaskInspect
);
return
tTaskInspectMapper
.
selectVisitorMissInfo
(
userTaskInspect
);
}
}
/**
* 安检量统计
* @param param 入参
* @return
*/
@Override
public
List
<
Map
<
String
,
Object
>>
inspectNumStatisticByInspector
(
Map
<
String
,
String
>
param
){
//根据安检人和安检任务汇总
List
<
Map
<
String
,
Object
>>
statisticResult
=
tTaskInspectMapper
.
inspectNumStatisticByInspector
(
param
);
//根据任务汇总同一个任务下的安检数量汇总并计算未安检量
statisticNoInspectNum
(
statisticResult
);
//根据安检人汇总安检量
return
statisticInspectByInspector
(
statisticResult
);
}
/**
* 根据任务汇总未安检量
* @param statisticResult 统计结果
*/
private
void
statisticNoInspectNum
(
List
<
Map
<
String
,
Object
>>
statisticResult
){
Map
<
Object
,
List
<
Map
<
String
,
Object
>>>
groupByTask
=
statisticResult
.
stream
().
collect
(
Collectors
.
groupingBy
(
e
->
e
.
get
(
"taskId"
)));
for
(
Object
key
:
groupByTask
.
keySet
()){
List
<
Map
<
String
,
Object
>>
inspectInfoList
=
groupByTask
.
get
(
key
);
//汇总任务安检量
int
totalInspectNum
=
0
;
for
(
Map
<
String
,
Object
>
inspectInfo
:
inspectInfoList
){
if
(
null
!=
inspectInfo
.
get
(
"totalInspectNum"
)){
totalInspectNum
+=
((
Long
)
inspectInfo
.
get
(
"totalInspectNum"
)).
intValue
();
}
}
//计算任务未安检量并写入数据
for
(
Map
<
String
,
Object
>
taskInspectInfo
:
statisticResult
){
if
(
taskInspectInfo
.
get
(
"taskId"
).
equals
(
key
)
&&
null
!=
taskInspectInfo
.
get
(
"totalUserNum"
)){
taskInspectInfo
.
put
(
"noInspectNum"
,((
Long
)
taskInspectInfo
.
get
(
"totalUserNum"
)).
intValue
()
-
totalInspectNum
);
}
}
}
}
/**
* 根据安检人汇总安检量
* @param statisticResult 统计结果
* @return
*/
private
List
<
Map
<
String
,
Object
>>
statisticInspectByInspector
(
List
<
Map
<
String
,
Object
>>
statisticResult
){
List
<
Map
<
String
,
Object
>>
result
=
new
ArrayList
<>();
Map
<
Object
,
List
<
Map
<
String
,
Object
>>>
groupByInspector
=
statisticResult
.
stream
().
collect
(
Collectors
.
groupingBy
(
e
->
e
.
get
(
"memberId"
)));
for
(
Map
.
Entry
<
Object
,
List
<
Map
<
String
,
Object
>>>
entry
:
groupByInspector
.
entrySet
()){
List
<
Map
<
String
,
Object
>>
inspectInfoList
=
entry
.
getValue
();
Map
<
String
,
Object
>
statisticResultByInspector
=
new
HashMap
<>();
for
(
Map
<
String
,
Object
>
inspectInfo
:
inspectInfoList
){
for
(
String
key
:
inspectInfo
.
keySet
()){
if
(!
key
.
equals
(
"totalUserNum"
)
&&
!
key
.
equals
(
"totalInspectNum"
)
&&
!
key
.
equals
(
"memberId"
)
&&
!
key
.
equals
(
"taskId"
)
&&
!
key
.
equals
(
"inspector"
)){
Object
item
=
statisticResultByInspector
.
get
(
key
);
//结果中不存在新增
if
(
null
==
item
){
statisticResultByInspector
.
put
(
key
,
key
.
equals
(
"noInspectNum"
)
?
(
int
)
inspectInfo
.
get
(
key
)
:((
BigDecimal
)
inspectInfo
.
get
(
key
)).
intValue
());
}
else
{
Object
info
=
inspectInfo
.
get
(
key
);
if
(
null
!=
info
){
statisticResultByInspector
.
put
(
key
,(
int
)
statisticResultByInspector
.
get
(
key
)
+
(
key
.
equals
(
"noInspectNum"
)
?
(
int
)
inspectInfo
.
get
(
key
)
:((
BigDecimal
)
inspectInfo
.
get
(
key
)).
intValue
()));
}
}
}
}
}
statisticResultByInspector
.
put
(
"inspector"
,
inspectInfoList
.
get
(
0
).
get
(
"inspector"
));
result
.
add
(
statisticResultByInspector
);
}
return
result
;
}
}
}
huaxin-system/src/main/resources/mapper/system/TTaskInspectMapper.xml
View file @
560b898a
...
@@ -398,4 +398,59 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -398,4 +398,59 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if
test=
"dateBegin != null and dateEnd != ''"
>
and inspect.create_time BETWEEN #{dateBegin} AND #{dateEnd}
</if>
<if
test=
"dateBegin != null and dateEnd != ''"
>
and inspect.create_time BETWEEN #{dateBegin} AND #{dateEnd}
</if>
</where>
</where>
</select>
</select>
<select
id=
"inspectNumStatisticByInspector"
parameterType=
"Map"
resultType=
"Map"
>
SELECT
IFNULL(user_counts.totalUserNum, 0) as totalUserNum,
COUNT(inspect.id) as totalInspectNum,
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,
inspect.member_id as memberId,
inspect.task_id as taskId,
(select nick_name from sys_user where user_id = inspect.member_id)as inspector
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
GROUP BY receive_id
) latest ON i.id = latest.max_id
) inspect
LEFT JOIN (
SELECT
relation.task_id,
COUNT(DISTINCT us.id) as totalUserNum
FROM t_task_relation_info relation
LEFT JOIN t_user us ON us.village = relation.relation_id
<where>
relation.type = '1'
<if
test=
"village != null"
>
and relation.relation_id = #{village}
</if>
</where>
GROUP BY relation.task_id
) user_counts ON user_counts.task_id = inspect.task_id
LEFT JOIN t_task task ON task.id = inspect.task_id
<if
test=
"village != null"
>
LEFT JOIN t_user u ON u.id = inspect.receive_id
</if>
<where>
task.status = 0
<if
test=
"beginTime != null and endTime != null"
>
and inspect.create_time between #{beginTime} and #{endTime}
</if>
<if
test=
"village != null"
>
and u.village = #{village}
</if>
</where>
GROUP BY inspect.member_id,inspect.task_id;
</select>
</mapper>
</mapper>
\ No newline at end of file
huaxin-web/src/api/checktask/inspect.js
View file @
560b898a
...
@@ -131,3 +131,12 @@ export function statisticsInspectItems(query) {
...
@@ -131,3 +131,12 @@ export function statisticsInspectItems(query) {
params
:
query
params
:
query
})
})
}
}
//根据安检人统计安检量
export
function
inspectNumStatisticByInspector
(
data
)
{
return
request
({
url
:
'/checktask/inspect/inspectNumStatisticByInspector'
,
method
:
'post'
,
data
:
data
})
}
huaxin-web/src/views/checktask/inspectnumstatisticbyinspector/index.vue
0 → 100644
View file @
560b898a
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
:inline=
"true"
label-width=
"120px"
>
<el-form-item
label=
"起止时间"
>
<el-date-picker
v-model=
"time"
type=
"datetimerange"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
size=
"small"
@
change=
"timeChange"
value-format=
"yyyy-MM-dd HH:mm:ss"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"所属区域(村)"
prop=
"village"
>
<el-select
v-model=
"queryParams.village"
placeholder=
"所属区域(村)"
>
<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-table
v-loading=
"loading"
:data=
"inspectStatisticInfoList"
>
<el-table-column
label=
"姓名"
align=
"center"
prop=
"inspector"
/>
<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
{
inspectNumStatisticByInspector
}
from
"@/api/checktask/inspect"
;
import
{
communityList
}
from
"@/api/baseinfo/community"
;
export
default
{
name
:
"inspect-statistic-index"
,
data
(){
return
{
queryParams
:{
beginTime
:
null
,
endTime
:
null
,
village
:
null
},
loading
:
true
,
inspectStatisticInfoList
:
[],
time
:
[],
communityData
:
[]
}
},
created
(){
this
.
getList
();
this
.
getCommunityInfo
();
},
methods
:{
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNum
=
1
;
this
.
getList
();
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
resetForm
(
"queryForm"
);
this
.
queryParams
.
beginTime
=
null
;
this
.
queryParams
.
endTime
=
null
;
this
.
time
=
[];
this
.
handleQuery
();
},
getList
(){
this
.
loading
=
true
;
inspectNumStatisticByInspector
(
this
.
queryParams
).
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
code
==
200
&&
res
.
data
){
this
.
inspectStatisticInfoList
=
res
.
data
;
let
statistic
=
{
inspector
:
"汇总"
,
noInspectNum
:
0
,
normalInspectNum
:
0
,
refuseInspectNum
:
0
,
stopInspectNum
:
0
,
missInspectNum
:
0
,
dangerNum
:
0
,
noDangerNum
:
0
,
total
:
0
};
this
.
inspectStatisticInfoList
.
forEach
(
item
=>
{
let
total
=
item
.
noInspectNum
+
item
.
normalInspectNum
+
item
.
refuseInspectNum
+
item
.
stopInspectNum
+
item
.
missInspectNum
+
item
.
dangerNum
+
item
.
noDangerNum
;
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
];
this
.
queryParams
.
endTime
=
val
[
1
];
},
//获取小区信息
getCommunityInfo
(){
communityList
().
then
(
res
=>
{
if
(
res
.
code
==
200
){
this
.
communityData
=
res
.
data
;
}
})
},
}
}
</
script
>
<
style
scoped
>
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment