案件的日志无法查看问题

This commit is contained in:
TS-QD1 2023-08-29 15:52:50 +08:00
parent 4fbc8cc386
commit 610aad4f88
14 changed files with 394 additions and 42 deletions

View File

@ -2,10 +2,12 @@ package com.cm.bigdata.controller.apis.kpi;
import com.cm.bigdata.pojo.dtos.grid.GridDTO;
import com.cm.bigdata.pojo.dtos.kpi.*;
import com.cm.bigdata.pojo.dtos.kpi.ReportCaseLogDTO;
import com.cm.bigdata.pojo.vos.kpi.CaseListPage;
import com.cm.bigdata.service.kpi.*;
import com.cm.common.base.AbstractController;
import com.cm.common.constants.ISystemConstant;
import com.cm.common.exception.SearchException;
import com.cm.common.pojo.ListPage;
import com.cm.common.result.SuccessResultData;
import com.cm.common.result.SuccessResultList;
@ -239,7 +241,12 @@ public class KpiController extends AbstractController {
return reportCaseService.listPage(caseListPage);
}
@GetMapping("list-report-case-log/{reportCaseId}")
public List<ReportCaseLogDTO> listReportCaseLog(@PathVariable("reportCaseId") String reportCaseId) throws SearchException {
Map<String, Object> params = requestParams();
params.put("caseId", reportCaseId);
return reportCaseService.listReportCaseLog(params);
}
@GetMapping("list-n-person-case-day-count/user-id/{userId}")
public List<NPersonCaseDayCountDTO> listNPersonCaseDayCountByUserId(

View File

@ -1,6 +1,7 @@
package com.cm.bigdata.dao2.kpi;
import com.cm.bigdata.pojo.dtos.kpi.ReportCaseDTO;
import com.cm.bigdata.pojo.dtos.kpi.ReportCaseLogDTO;
import com.cm.bigdata.pojo.pos.kpi.*;
import org.springframework.stereotype.Repository;
@ -21,4 +22,5 @@ public interface IReportCaseDao {
List<ReportCaseDTO> list(Map<String, Object> params);
List<ReportCaseLogDTO> listReportCaseLog(Map<String, Object> params);
}

View File

@ -0,0 +1,159 @@
package com.cm.bigdata.pojo.dtos.kpi;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* When you feel like quitting. Think about why you started
* 当你想要放弃的时候想想当初你为何开始
*
* @ClassName: ReportCaseLogDTO
* @Description: 案件流程日志
* @Author: WangGeng
* @Date: 2019-08-13 15:36
* @Version: 1.0
**/
@ApiModel
public class ReportCaseLogDTO {
@ApiModelProperty(name = "caseId", value = "案件ID")
private String caseId;
@ApiModelProperty(name = "optionType", value = "操作类型")
private String optionType;
@ApiModelProperty(name = "userId", value = "用户ID")
private String userId;
@ApiModelProperty(name = "userName", value = "用户名称")
private String userName;
@ApiModelProperty(name = "userPhone", value = "用户电话")
private String userPhone;
@ApiModelProperty(name = "userOpinion", value = "用户意见")
private String userOpinion;
@ApiModelProperty(name = "userPhotos", value = "用户图片")
private String userPhotos;
@ApiModelProperty(name = "userAudio", value = "用户音频")
private String userAudio;
@ApiModelProperty(name = "handleUserId", value = "处理人ID")
private String handleUserId;
@ApiModelProperty(name = "handleUserName", value = "处理人名称")
private String handleUserName;
@ApiModelProperty(name = "handleTime", value = "处理时长")
private Double handleTime;
@ApiModelProperty(name = "handleStatus", value = "处理状态成功0失败1")
private String handleStatus;
@ApiModelProperty(name = "grade", value = "满意度评分")
private String grade;
@ApiModelProperty(name = "gmtCreate", value = "时间")
private String gmtCreate;
public String getCaseId() {
return caseId == null ? "" : caseId.trim();
}
public void setCaseId(String caseId) {
this.caseId = caseId;
}
public String getOptionType() {
return optionType == null ? "" : optionType.trim();
}
public void setOptionType(String optionType) {
this.optionType = optionType;
}
public String getUserId() {
return userId == null ? "" : userId.trim();
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName == null ? "" : userName.trim();
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPhone() {
return userPhone == null ? "" : userPhone.trim();
}
public void setUserPhone(String userPhone) {
this.userPhone = userPhone;
}
public String getUserOpinion() {
return userOpinion == null ? "" : userOpinion.trim();
}
public void setUserOpinion(String userOpinion) {
this.userOpinion = userOpinion;
}
public String getUserPhotos() {
return userPhotos == null ? "" : userPhotos.trim();
}
public void setUserPhotos(String userPhotos) {
this.userPhotos = userPhotos;
}
public String getUserAudio() {
return userAudio == null ? "" : userAudio.trim();
}
public void setUserAudio(String userAudio) {
this.userAudio = userAudio;
}
public String getHandleUserId() {
return handleUserId == null ? "" : handleUserId.trim();
}
public void setHandleUserId(String handleUserId) {
this.handleUserId = handleUserId;
}
public String getHandleUserName() {
return handleUserName == null ? "" : handleUserName.trim();
}
public void setHandleUserName(String handleUserName) {
this.handleUserName = handleUserName;
}
public Double getHandleTime() {
return handleTime;
}
public void setHandleTime(Double handleTime) {
this.handleTime = handleTime;
}
public String getHandleStatus() {
return handleStatus == null ? "" : handleStatus.trim();
}
public void setHandleStatus(String handleStatus) {
this.handleStatus = handleStatus;
}
public String getGrade() {
return grade == null ? "" : grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getGmtCreate() {
return gmtCreate == null ? "" : gmtCreate.trim();
}
public void setGmtCreate(String gmtCreate) {
this.gmtCreate = gmtCreate;
}
}

View File

@ -1,6 +1,7 @@
package com.cm.bigdata.service.kpi;
import com.cm.bigdata.pojo.dtos.kpi.ReportCaseDTO;
import com.cm.bigdata.pojo.dtos.kpi.ReportCaseLogDTO;
import com.cm.bigdata.pojo.pos.kpi.*;
import com.cm.bigdata.pojo.vos.kpi.CaseListPage;
import com.cm.common.result.SuccessResultList;
@ -20,4 +21,7 @@ public interface IReportCaseService {
List<ReportCaseInspectPO> listInspectPO(Map<String, Object> params);
SuccessResultList<List<ReportCaseDTO>> listPage(CaseListPage caseListPage);
List<ReportCaseLogDTO> listReportCaseLog(Map<String, Object> params);
}

View File

@ -2,7 +2,7 @@ package com.cm.bigdata.service.kpi.impl;
import com.cm.bigdata.dao2.kpi.IReportCaseDao;
import com.cm.bigdata.pojo.dtos.kpi.ReportCaseDTO;
import com.cm.bigdata.pojo.dtos.kpi.UserSignoutDTO;
import com.cm.bigdata.pojo.dtos.kpi.ReportCaseLogDTO;
import com.cm.bigdata.pojo.pos.kpi.*;
import com.cm.bigdata.pojo.vos.kpi.CaseListPage;
import com.cm.bigdata.service.kpi.IReportCaseService;
@ -70,4 +70,9 @@ public class ReportCaseServiceImpl implements IReportCaseService {
PageInfo<ReportCaseDTO> pageInfo = new PageInfo<>(reportCaseDTOS);
return new SuccessResultList<>(reportCaseDTOS, pageInfo.getPageNum(), pageInfo.getTotal());
}
@Override
public List<ReportCaseLogDTO> listReportCaseLog(Map<String, Object> params) {
return reportCaseDao.listReportCaseLog(params);
}
}

View File

@ -44,11 +44,18 @@ public class KpiKhxzWgyCRunnable implements Runnable {
for (CommunityBossDayCountPO communityBossDayCountPO : communityBossDayCountPOS) {
// 如果是假期不记录
int isHoliday = communityBossDayCountPO.getIsHoliday();
if (isHoliday == 1) {
double dayScore = communityBossDayCountPO.getDayScore();
// 如果是假期并且分数就算工作日
if (isHoliday == 1 && dayScore > 0D) {
totalDayScore += communityBossDayCountPO.getDayScore();
workDay++;
continue;
}
totalDayScore += communityBossDayCountPO.getDayScore();
workDay++;
// 如果不是假期则标记为工作日
if (isHoliday == 0) {
totalDayScore += communityBossDayCountPO.getDayScore();
workDay++;
}
}
double totalScore = workDay == 0 ? 0D : totalDayScore / workDay;
// 保存总分

View File

@ -41,13 +41,19 @@ public class KpiKhxzWgyCUserRunnable implements Runnable {
int workDay = 0;
double totalDayScore = 0D;
for (CommunityBossDayCountPO communityBossDayCountPO : communityBossDayCountPOS) {
// 如果是假期不记录
int isHoliday = communityBossDayCountPO.getIsHoliday();
if (isHoliday == 1) {
double dayScore = communityBossDayCountPO.getDayScore();
// 如果是假期并且分数就算工作日
if (isHoliday == 1 && dayScore > 0D) {
totalDayScore += communityBossDayCountPO.getDayScore();
workDay++;
continue;
}
totalDayScore += communityBossDayCountPO.getDayScore();
workDay++;
// 如果不是假期则标记为工作日
if (isHoliday == 0) {
totalDayScore += communityBossDayCountPO.getDayScore();
workDay++;
}
}
double totalScore = workDay == 0 ? 0D : totalDayScore / workDay;
// 保存总分

View File

@ -117,15 +117,21 @@ public class KpiKhxzWgyEGIKRTRunnable implements Runnable {
exceedCount++;
continue;
}
// 处理时间
String gmtHandle = casePO.getGmtHandle();
if (StringUtils.isBlank(gmtHandle)) {
continue;
}
// 检查过了算多报
String gmtInspect = casePO.getGmtInspect();
if (StringUtils.isBlank(gmtInspect)) {
continue;
}
// 检查时间复合规定
if (KpiUtil.isDateBetween(gmtInspect.substring(0, 10), startTime, endTime)) {
exceedCount++;
// 处理时间和检查时间超过24小时
if (!KpiUtil.isdateTimeIn24Hours(gmtHandle, gmtInspect)) {
inspectTimeoutCount++;
}
exceedCount++;
}
}
for (List<KpiUtil.DayWeek> shouldReportDayWeek : shouldReportDayWeeks) {
@ -158,12 +164,10 @@ public class KpiKhxzWgyEGIKRTRunnable implements Runnable {
continue;
}
// 处理时间和检查时间超过24小时
if (KpiUtil.isdateTimeIn24Hours(gmtHandle, gmtInspect)) {
if (!KpiUtil.isdateTimeIn24Hours(gmtHandle, gmtInspect)) {
inspectTimeoutCount++;
}
if (KpiUtil.isDateBetween(gmtInspect.substring(0, 10), startTime, endTime)) {
realityCount++;
}
realityCount++;
}
// 每周上报数量由网格数量决定
weekReportCount += Math.min(gridCount, realityCount);

View File

@ -115,15 +115,22 @@ public class KpiKhxzWgyEGIKRTUserRunnable implements Runnable {
exceedCount++;
continue;
}
// 处理时间
String gmtHandle = casePO.getGmtHandle();
if (StringUtils.isBlank(gmtHandle)) {
continue;
}
// 检查过了算多报
String gmtInspect = casePO.getGmtInspect();
if (StringUtils.isBlank(gmtInspect)) {
continue;
}
// 检查时间复合规定
if (KpiUtil.isDateBetween(gmtInspect.substring(0, 10), startTime, endTime)) {
exceedCount++;
// 处理时间和检查时间超过24小时
if (!KpiUtil.isdateTimeIn24Hours(gmtHandle, gmtInspect)) {
inspectTimeoutCount++;
}
// 检查时间复合规定
exceedCount++;
}
}
for (List<KpiUtil.DayWeek> shouldReportDayWeek : shouldReportDayWeeks) {
@ -156,12 +163,10 @@ public class KpiKhxzWgyEGIKRTUserRunnable implements Runnable {
continue;
}
// 处理时间和检查时间超过24小时
if (KpiUtil.isdateTimeIn24Hours(gmtHandle, gmtInspect)) {
if (!KpiUtil.isdateTimeIn24Hours(gmtHandle, gmtInspect)) {
inspectTimeoutCount++;
}
if (KpiUtil.isDateBetween(gmtInspect.substring(0, 10), startTime, endTime)) {
realityCount++;
}
realityCount++;
}
// 每周上报数量由网格数量决定
weekReportCount += Math.min(gridCount, realityCount);

View File

@ -13,9 +13,6 @@ public class KpiScoreUtil {
public static double getWgyDayScore(int isSignin, int isSigninLate, int isSignout, int isSignoutEarly, double workDistance, int isLeave, int isLeaveSelf, int isLeaveSelfOverLimitInQuarter, int isHoliday) {
if (isHoliday == 1) {
return 0;
}
double signinScore = 0D;
double signoutScore = 0D;
double distanceScore = 0D;
@ -47,9 +44,6 @@ public class KpiScoreUtil {
}
public static double getDdyDayScore(int isSignin, int isSigninLate, int isSignout, int isSignoutEarly, int isHoliday) {
if (isHoliday == 1) {
return 0;
}
double signinScore = 0D;
double signoutScore = 0D;
if (isSignin == 1) {
@ -62,9 +56,6 @@ public class KpiScoreUtil {
}
public static double getZgyDayScore(int isSignin, int isSigninLate, int isSignout, int isSignoutEarly, double workDistance, int isHoliday) {
if (isHoliday == 1) {
return 0;
}
double signinScore = 0D;
double signoutScore = 0D;
double distanceScore = 0D;
@ -81,5 +72,4 @@ public class KpiScoreUtil {
return signinScore + signoutScore + distanceScore;
}
}

View File

@ -85,6 +85,22 @@
<result column="modifier" property="modifier"/>
</resultMap>
<resultMap id="reportCaseLogDTO" type="com.cm.bigdata.pojo.dtos.kpi.ReportCaseLogDTO">
<result property="caseId" column="case_id"/>
<result property="optionType" column="option_type"/>
<result property="userId" column="user_id"/>
<result property="userName" column="user_name"/>
<result property="userPhone" column="user_phone"/>
<result property="userOpinion" column="user_opinion"/>
<result property="userPhotos" column="user_photos"/>
<result property="userAudio" column="user_audio"/>
<result property="handleUserId" column="handle_user_id"/>
<result property="handleUserName" column="handle_user_name"/>
<result property="handleTime" column="handle_time"/>
<result property="handleStatus" column="handle_status"/>
<result property="gmtCreate" column="gmt_create"/>
</resultMap>
<select id="listPO" parameterType="map" resultMap="reportCasePO">
SELECT
report_case_id,
@ -245,4 +261,27 @@
crc.gmt_create DESC
</select>
<select id="listReportCaseLog" parameterType="map" resultMap="reportCaseLogDTO">
SELECT
case_id,
option_type,
user_id,
user_name,
user_phone,
user_opinion,
user_photos,
user_audio,
handle_user_id,
handle_user_name,
handle_time,
handle_status,
LEFT(gmt_create, 19) gmt_create
FROM
city_report_case_log
WHERE
case_id = #{caseId}
ORDER BY
id DESC
</select>
</mapper>

View File

@ -221,7 +221,7 @@
var event = obj.event;
if(event === 'caseEvent') {
top.dialog.open({
title: `${data.userName} 案件总数`,
title: `${data.communityName} 案件总数`,
url: top.restAjax.path('route/kpi/detail/user-case.html?areaId={areaId}&communityId={communityId}&startTime={startTime}&endTime={endTime}', [data.areaId, data.communityId, $('#startTime').val(), $('#endTime').val()]),
width: '80%',
height: '80%',
@ -229,7 +229,7 @@
})
} else if(event === 'caseAcceptEvent') {
top.dialog.open({
title: `${data.userName} 案件总数`,
title: `${data.communityName} 案件总数`,
url: top.restAjax.path('route/kpi/detail/user-case.html?areaId={areaId}&communityId={communityId}&isAccept=1&startTime={startTime}&endTime={endTime}', [data.areaId, data.communityId, $('#startTime').val(), $('#endTime').val()]),
width: '80%',
height: '80%',
@ -237,7 +237,7 @@
})
} else if(event === 'caseHandleEvent') {
top.dialog.open({
title: `${data.userName} 案件总数`,
title: `${data.communityName} 案件总数`,
url: top.restAjax.path('route/kpi/detail/user-case.html?areaId={areaId}&communityId={communityId}&isHandle=1&startTime={startTime}&endTime={endTime}', [data.areaId, data.communityId, $('#startTime').val(), $('#endTime').val()]),
width: '80%',
height: '80%',
@ -245,7 +245,7 @@
})
} else if(event === 'caseInspectEvent') {
top.dialog.open({
title: `${data.userName} 案件总数`,
title: `${data.communityName} 案件总数`,
url: top.restAjax.path('route/kpi/detail/user-case.html?areaId={areaId}&communityId={communityId}&isInspect=1&startTime={startTime}&endTime={endTime}', [data.areaId, data.communityId, $('#startTime').val(), $('#endTime').val()]),
width: '80%',
height: '80%',

View File

@ -0,0 +1,119 @@
<!doctype html>
<html lang="en">
<head>
<base href="/bigdata/">
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11,chrome=1"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
<style>
html, body {background-color: #FFF;}
.edit-content {padding: 15px;}
.table-left-title {width: 20%; background-color: #e6e6e6; text-align: center;}
.layui-table td, .layui-table th {border-color: #000;}
.color-red {color: red;}
.photo-show .photo-show-wrap{margin-right:10px;}
.photo-show .photo-show-wrap .photo-wrap{display:inline-block;background-color:white;padding:5px;margin-bottom:5px;position:relative;}
.photo-show .photo-show-wrap .photo-wrap img{height:100px;}
.photo-show .photo-show-wrap .photo-wrap a{position:absolute;top:0px;right:0px;border-color:#CCC;}
[v-cloak] {display: none;}
</style>
</head>
<body>
<div id="content" class="edit-content">
<div class="tile color">
<ul class="layui-timeline" v-cloak>
<li class="layui-timeline-item" v-for="(caseLog, index) in caseLogs">
<i class="layui-icon layui-timeline-axis layui-icon-circle-dot"></i>
<div class="layui-timeline-content layui-text">
<h3 class="layui-timeline-title">{{caseLog.gmtCreate}}</h3>
<div class="table-box">
<table class="layui-table" lay-size="sm">
<tbody>
<tr>
<td class="table-left-title">操作类型</td>
<td colspan="3"><span class="color-red">{{caseLog.optionType}}</span></td>
</tr>
<tr>
<td class="table-left-title">操作人员</td>
<td>{{caseLog.userName}}</td>
<td class="table-left-title">手机号码</td>
<td>{{caseLog.userPhone}}</td>
</tr>
<tr v-if="caseLog.handleUserName != null && caseLog.handleUserName != ''">
<td class="table-left-title">处理人员</td>
<td>{{caseLog.handleUserName}}</td>
<td class="table-left-title">处理时限</td>
<td><span class="color-red">{{caseLog.handleTime}} 天</span></td>
</tr>
<tr>
<td class="table-left-title">处理状态</td>
<td colspan="3">
<span class="color-red" v-if="caseLog.handleStatus == 1">[处理成功]</span>
<span class="color-red" v-if="caseLog.handleStatus == 0">[处理失败]</span>
</td>
</tr>
<tr>
<td class="table-left-title">操作说明</td>
<td colspan="3">{{caseLog.userOpinion}} </td>
</tr>
<tr v-if="caseLog.userPhotos != null && caseLog.userPhotos != ''">
<td class="table-left-title">说明图片</td>
<td colspan="3">
<div :id="'userPhotos_'+ index" class="photo-show" v-cloak>
<span v-for="userPhoto in caseLog.userPhotos.split(',')" v-if="userPhoto != ''" class="photo-show-wrap">
<span class="photo-wrap">
<img :src="'http://219.147.99.164:8082/servicecity/route/file/downloadfile/true/'+ userPhoto"/>
</span>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</li>
</ul>
</div>
</div>
<script type="text/javascript" src="assets/js/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="assets/layuiadmin/layui/layui.js"></script>
<script type="text/javascript" src="assets/js/vendor/viewer/viewer.min.js"></script>
<script type="text/javascript" src="assets/js/vue.min.js"></script>
<script type="text/javascript" src="assets/js/common.js"></script>
<script type="text/javascript" src="assets/js/restajax.js"></script>
<script type="text/javascript">
new Vue({
el: '#content',
data: {
caseId: restAjax.params(window.location.href).reportCaseId,
caseLogs: [],
},
watch: {},
methods: {
initCaseLog: function() {
var self = this;
restAjax.get(restAjax.path('api/kpi/list-report-case-log/{caseId}', [self.caseId]), {}, null, function(code, data) {
self.caseLogs = data;
self.$nextTick(function() {
for(var i = 0; i < self.caseLogs.length; i++) {
var item = self.caseLogs[i];
if(item.userPhotos != null && item.userPhotos != '') {
new Viewer(document.getElementById('userPhotos_'+ i));
}
}
})
}, function(code, data) {
});
}
},
mounted: function() {
var self = this;
self.initCaseLog();
}
});
</script>
</body>
</html>

View File

@ -1,5 +1,3 @@
<!doctype html>
<html lang="zh-CN">
<head>
@ -139,7 +137,7 @@
'<div class="info-row"><span class="col-left">所在地区</span><span class="col-right">'+ row.areaName +'</span></div>'+
'<div class="info-row"><span class="col-left">所在社区</span><span class="col-right">'+ row.communityName +'</span></div>'+
'<div class="info-row"><span class="col-left">案件类型</span><span class="col-right">'+ row.caseTypeName +'</span></div>'+
'</div>'+
'<div class="info-row"><span class="col-left">操作</span><span class="col-right"><button class="layui-btn layui-btn-xs layui-btn-warm" lay-event="logEvent">流程</button></span></div>'+
'</div>'
return value;
}
@ -263,8 +261,15 @@
width: '800px',
height: '80%',
onClose: function() {}
})
console.log(data);
});
} else if(event === 'logEvent') {
top.dialog.open({
title: '案件日志',
url: top.restAjax.path('route/kpi/detail/user-case-log.html?reportCaseId={reportCaseId}', [data.reportCaseId]),
width: '800px',
height: '80%',
onClose: function() {}
});
}
})
})