报表功能完成

detached
王宇航 2024-01-09 16:36:52 +08:00
parent 1ff58c939e
commit 27065756e4
12 changed files with 604 additions and 234 deletions

View File

@ -4,7 +4,12 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.PrimaryRadarData;
import com.ruoyi.common.core.domain.entity.RadarTableVO;
import com.ruoyi.common.core.domain.entity.TagRadarData;
import com.ruoyi.common.core.page.PageDomain;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.page.TableSupport;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.job.TaskException;
import com.ruoyi.common.utils.StringUtils;
@ -13,8 +18,10 @@ import com.ruoyi.quartz.domain.SysJob;
import com.ruoyi.quartz.service.ISysJobService;
import com.ruoyi.quartz.util.CronUtils;
import com.ruoyi.quartz.util.ScheduleUtils;
import com.ruoyi.system.service.PrimaryRadarDataService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.quartz.SchedulerException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
@ -22,63 +29,85 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
/**
*
*
*
* @author ruoyi
*/
@Controller
@RequestMapping("/monitor/discern")
public class SysDiscernController extends BaseController
{
public class SysDiscernController extends BaseController {
private String prefix = "monitor/discern";
@Autowired
private ISysJobService jobService;
// @RequiresPermissions("monitor:job:view")
@Autowired
private PrimaryRadarDataService primaryRadarDataService;
// @RequiresPermissions("monitor:job:view")
@GetMapping()
public String job()
{
public String job() {
return prefix + "/discern";
}
// @RequiresPermissions("monitor:job:list")
// @RequiresPermissions("monitor:job:list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(SysJob job)
{
public TableDataInfo list(PrimaryRadarData primaryRadarData) {
startPage();
List<SysJob> list = jobService.selectJobList(job);
List<PrimaryRadarData> list = primaryRadarDataService.selectRadarTable(primaryRadarData);
list.stream().forEach(primaryRadarData1 -> {
if (StringUtils.isNotEmpty(primaryRadarData1.getLadleNumber())){
if (primaryRadarData1.getLadleNumber().contains("车")){
primaryRadarData1.setType("车架");
} else if (primaryRadarData1.getLadleNumber().contains("铁")) {
primaryRadarData1.setType("铁包");
}
}
});
return getDataTable(list);
}
// @Log(title = "定时任务", businessType = BusinessType.EXPORT)
// @RequiresPermissions("monitor:job:export")
@PostMapping("/export")
@ResponseBody
public AjaxResult export(SysJob job)
{
List<SysJob> list = jobService.selectJobList(job);
ExcelUtil<SysJob> util = new ExcelUtil<SysJob>(SysJob.class);
return util.exportExcel(list, "定时任务");
public AjaxResult export(PrimaryRadarData primaryRadarData) {
List<PrimaryRadarData> list = primaryRadarDataService.selectRadarTable(primaryRadarData);;
List<RadarTableVO> collect = list.stream().map(primaryRadar -> {
if (StringUtils.isNotEmpty(primaryRadar.getLadleNumber())){
if (primaryRadar.getLadleNumber().contains("车")){
primaryRadar.setType("车架");
} else if (primaryRadar.getLadleNumber().contains("铁")) {
primaryRadar.setType("铁包");
}
}
RadarTableVO radarTableVO = new RadarTableVO();
BeanUtils.copyProperties(primaryRadar, radarTableVO);
return radarTableVO;
}
).collect(Collectors.toList());
ExcelUtil<RadarTableVO> util = new ExcelUtil<RadarTableVO>(RadarTableVO.class);
return util.exportExcel(collect, "标识器数据");
}
@Log(title = "定时任务", businessType = BusinessType.DELETE)
@RequiresPermissions("monitor:job:remove")
@PostMapping("/remove")
@ResponseBody
public AjaxResult remove(String ids) throws SchedulerException
{
public AjaxResult remove(String ids) throws SchedulerException {
jobService.deleteJobByIds(ids);
return success();
}
@RequiresPermissions("monitor:job:detail")
@GetMapping("/detail/{jobId}")
public String detail(@PathVariable("jobId") Long jobId, ModelMap mmap)
{
public String detail(@PathVariable("jobId") Long jobId, ModelMap mmap) {
mmap.put("name", "job");
mmap.put("job", jobService.selectJobById(jobId));
return prefix + "/detail";
@ -91,8 +120,7 @@ public class SysDiscernController extends BaseController
@RequiresPermissions("monitor:job:changeStatus")
@PostMapping("/changeStatus")
@ResponseBody
public AjaxResult changeStatus(SysJob job) throws SchedulerException
{
public AjaxResult changeStatus(SysJob job) throws SchedulerException {
SysJob newJob = jobService.selectJobById(job.getJobId());
newJob.setStatus(job.getStatus());
return toAjax(jobService.changeStatus(newJob));
@ -105,8 +133,7 @@ public class SysDiscernController extends BaseController
@RequiresPermissions("monitor:job:changeStatus")
@PostMapping("/run")
@ResponseBody
public AjaxResult run(SysJob job) throws SchedulerException
{
public AjaxResult run(SysJob job) throws SchedulerException {
boolean result = jobService.run(job);
return result ? success() : error("任务不存在或已过期!");
}
@ -115,8 +142,7 @@ public class SysDiscernController extends BaseController
*
*/
@GetMapping("/add")
public String add()
{
public String add() {
return prefix + "/add";
}
@ -127,30 +153,18 @@ public class SysDiscernController extends BaseController
@RequiresPermissions("monitor:job:add")
@PostMapping("/add")
@ResponseBody
public AjaxResult addSave(@Validated SysJob job) throws SchedulerException, TaskException
{
if (!CronUtils.isValid(job.getCronExpression()))
{
public AjaxResult addSave(@Validated SysJob job) throws SchedulerException, TaskException {
if (!CronUtils.isValid(job.getCronExpression())) {
return error("新增任务'" + job.getJobName() + "'失败Cron表达式不正确");
}
else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
{
} else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI)) {
return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'rmi'调用");
}
else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS }))
{
} else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[]{Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS})) {
return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'ldap(s)'调用");
}
else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS }))
{
} else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[]{Constants.HTTP, Constants.HTTPS})) {
return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'http(s)'调用");
}
else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR))
{
} else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR)) {
return error("新增任务'" + job.getJobName() + "'失败,目标字符串存在违规");
}
else if (!ScheduleUtils.whiteList(job.getInvokeTarget()))
{
} else if (!ScheduleUtils.whiteList(job.getInvokeTarget())) {
return error("新增任务'" + job.getJobName() + "'失败,目标字符串不在白名单内");
}
job.setCreateBy(getLoginName());
@ -162,8 +176,7 @@ public class SysDiscernController extends BaseController
*/
@RequiresPermissions("monitor:job:edit")
@GetMapping("/edit/{jobId}")
public String edit(@PathVariable("jobId") Long jobId, ModelMap mmap)
{
public String edit(@PathVariable("jobId") Long jobId, ModelMap mmap) {
mmap.put("job", jobService.selectJobById(jobId));
return prefix + "/edit";
}
@ -175,30 +188,18 @@ public class SysDiscernController extends BaseController
@RequiresPermissions("monitor:job:edit")
@PostMapping("/edit")
@ResponseBody
public AjaxResult editSave(@Validated SysJob job) throws SchedulerException, TaskException
{
if (!CronUtils.isValid(job.getCronExpression()))
{
public AjaxResult editSave(@Validated SysJob job) throws SchedulerException, TaskException {
if (!CronUtils.isValid(job.getCronExpression())) {
return error("修改任务'" + job.getJobName() + "'失败Cron表达式不正确");
}
else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
{
} else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI)) {
return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'rmi'调用");
}
else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS }))
{
} else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[]{Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS})) {
return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'ldap'调用");
}
else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS }))
{
} else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[]{Constants.HTTP, Constants.HTTPS})) {
return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'http(s)'调用");
}
else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR))
{
} else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR)) {
return error("修改任务'" + job.getJobName() + "'失败,目标字符串存在违规");
}
else if (!ScheduleUtils.whiteList(job.getInvokeTarget()))
{
} else if (!ScheduleUtils.whiteList(job.getInvokeTarget())) {
return error("修改任务'" + job.getJobName() + "'失败,目标字符串不在白名单内");
}
return toAjax(jobService.updateJob(job));
@ -209,8 +210,7 @@ public class SysDiscernController extends BaseController
*/
@PostMapping("/checkCronExpressionIsValid")
@ResponseBody
public boolean checkCronExpressionIsValid(SysJob job)
{
public boolean checkCronExpressionIsValid(SysJob job) {
return jobService.checkCronExpressionIsValid(job.getCronExpression());
}
@ -218,8 +218,7 @@ public class SysDiscernController extends BaseController
* Cron线
*/
@GetMapping("/cron")
public String cron()
{
public String cron() {
return prefix + "/cron";
}
@ -228,15 +227,11 @@ public class SysDiscernController extends BaseController
*/
@GetMapping("/queryCronExpression")
@ResponseBody
public AjaxResult queryCronExpression(@RequestParam(value = "cronExpression", required = false) String cronExpression)
{
if (jobService.checkCronExpressionIsValid(cronExpression))
{
public AjaxResult queryCronExpression(@RequestParam(value = "cronExpression", required = false) String cronExpression) {
if (jobService.checkCronExpressionIsValid(cronExpression)) {
List<String> dateList = CronUtils.getRecentTriggerTime(cronExpression);
return success(dateList);
}
else
{
} else {
return error("表达式无效");
}
}

View File

@ -5,6 +5,8 @@ import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.PrimaryRadarData;
import com.ruoyi.common.core.domain.entity.TagRadarData;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.job.TaskException;
@ -14,8 +16,10 @@ import com.ruoyi.quartz.domain.SysJob;
import com.ruoyi.quartz.service.ISysJobService;
import com.ruoyi.quartz.util.CronUtils;
import com.ruoyi.quartz.util.ScheduleUtils;
import com.ruoyi.system.service.PrimaryRadarDataService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.quartz.SchedulerException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
@ -23,6 +27,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
/**
*
@ -38,6 +43,9 @@ public class SysLifeController extends BaseController
@Autowired
private ISysJobService jobService;
@Autowired
private PrimaryRadarDataService primaryRadarDataService;
@GetMapping()
public String job()
{
@ -46,22 +54,26 @@ public class SysLifeController extends BaseController
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(SysJob job)
public TableDataInfo list(PrimaryRadarData primaryRadarData)
{
startPage();
List<SysJob> list = jobService.selectJobList(job);
List<PrimaryRadarData> list = primaryRadarDataService.selectPrimaryRadarDataList(primaryRadarData);
return getDataTable(list);
}
@Log(title = "定时任务", businessType = BusinessType.EXPORT)
@RequiresPermissions("monitor:job:export")
@PostMapping("/export")
@ResponseBody
public AjaxResult export(SysJob job)
public AjaxResult export(PrimaryRadarData primaryRadarData)
{
List<SysJob> list = jobService.selectJobList(job);
ExcelUtil<SysJob> util = new ExcelUtil<SysJob>(SysJob.class);
return util.exportExcel(list, "定时任务");
List<PrimaryRadarData> list = primaryRadarDataService.selectPrimaryRadarDataList(primaryRadarData);;
List<TagRadarData> collect = list.stream().map(primaryRadar -> {
TagRadarData tagRadarData1 = new TagRadarData();
BeanUtils.copyProperties(primaryRadar, tagRadarData1);
return tagRadarData1;
}
).collect(Collectors.toList());
ExcelUtil<TagRadarData> util = new ExcelUtil<TagRadarData>(TagRadarData.class);
return util.exportExcel(collect, "标识器数据");
}
@Log(title = "定时任务", businessType = BusinessType.DELETE)

View File

@ -6,9 +6,9 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://192.168.120.21:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:mysql://39.104.15.118:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 12345678
password: Orderfood@2022
# 从库数据源
slave:
# 从数据源开关/默认关闭

View File

@ -11,46 +11,49 @@
<div class="select-list">
<ul>
<li>
雷达位置:<input type="text" name="jobName" placeholder="雷达位置"/>
雷达位置:<input type="text" name="radarLocation" placeholder="雷达位置"/>
</li>
<li>
识别类型:<select name="status" th:with="type=${@dict.getType('sys_job_status')}">
<option value="">识别类型</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
<option value="">车架</option>
<option value="">铁架</option>
</select>
</li>
<li>
标签号:<input type="text" name="jobName" placeholder="标签号"/>
标签号:<input type="text" name="tagId" placeholder="标签号"/>
</li>
<li class="select-time">
<label>创建时间: </label>
<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginTime]"/>
<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createTime"/>
<span>-</span>
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/>
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="updateTime"/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()">
<i class="fa fa-download"></i> 导出
</a>
</li>
</ul>
</div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="monitor:job:add">
<i class="fa fa-plus"></i> 新增
</a>
<a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="monitor:job:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="monitor:job:remove">
<i class="fa fa-remove"></i> 删除
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export">
<i class="fa fa-download"></i> 导出
</a>
</div>
<!-- <div class="btn-group-sm" id="toolbar" role="group">-->
<!-- <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="monitor:job:add">-->
<!-- <i class="fa fa-plus"></i> 新增-->
<!-- </a>-->
<!-- <a class="btn btn-primary single disabled" onclick="$.operate.edit()" >-->
<!-- <i class="fa fa-edit"></i> 修改-->
<!-- </a>-->
<!-- <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()">-->
<!-- <i class="fa fa-remove"></i> 删除-->
<!-- </a>-->
<!-- <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export">-->
<!-- <i class="fa fa-download"></i> 导出-->
<!-- </a>-->
<!-- </div>-->
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
@ -76,65 +79,89 @@
exportUrl: prefix + "/export",
sortName: "createTime",
sortOrder: "desc",
modalName: "任务",
modalName: "雷达数据",
columns: [{
checkbox: true
},
// {
// field: 'id',
// title: '序号'
// },
{
field: 'jobId',
title: '任务编号'
},
{
field: 'jobName',
field: 'radarLocation',
title: '雷达位置',
},
{
field: 'jobGroup',
field: 'type',
title: '识别类型',
formatter: function(value, row, index) {
return $.table.selectDictLabel(datas, value);
}
},
{
field: 'cronExpression',
field: 'number',
title: '天线'
},
{
field: '1',
field: 'ladleNumber',
title: '铁包号/车架号'
},
{
field: '2',
field: 'tagId',
title: '标签号'
},
{
field: '3',
field: 'value4',
title: '信号值'
},
{
field: '4',
field: 'totalCount',
title: '读取次数'
},
{
field: 'createTime',
title: '记录时间',
sortable: true
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:;" onclick="$.operate.edit(\'' + row.jobId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:;" onclick="$.operate.remove(\'' + row.jobId + '\')"><i class="fa fa-remove"></i>删除</a> ');
var more = [];
more.push("<a class='btn btn-default btn-xs " + statusFlag + "' href='javascript:void(0)' onclick='run(" + row.jobId + ")'><i class='fa fa-play-circle-o'></i> 执行一次</a> ");
more.push("<a class='btn btn-default btn-xs " + detailFlag + "' href='javascript:void(0)' onclick='$.operate.detail(" + row.jobId + ")'><i class='fa fa-search'></i>任务详细</a> ");
more.push("<a class='btn btn-default btn-xs " + detailFlag + "' href='javascript:void(0)' onclick='jobLog(" + row.jobId + ")'><i class='fa fa-list'></i>调度日志</a>");
actions.push('<a class="btn btn-info btn-xs" role="button" data-container="body" data-placement="left" data-toggle="popover" data-html="true" data-trigger="hover" data-content="' + more.join('') + '"><i class="fa fa-chevron-circle-right"></i>更多操作</a>');
return actions.join('');
}
}]
sortable: true,
// formatter: function(value, row, index) {
// // Assuming value is a timestamp in milliseconds
// var startTime = row.updateTime;
//
// // Get the value of the end time field
// var endTime = row.updateTime;
// var endTimeString = '';
//
// // Check if the endTime field exists and is not null
// if (endTime !== undefined && endTime !== null) {
// // Assuming endTime is also a timestamp in milliseconds
// endTime = '';
//
// // Format the end time as desired
// endTimeString = endTime.toLocaleTimeString();
// }
//
// // Format the start time as desired
// var startTimeString = startTime.toLocaleTimeString();
//
// // Return the formatted time range
// return startTimeString + ' - ' + endTimeString;
// }
}
// {
// title: '操作',
// align: 'center',
// formatter: function(value, row, index) {
// var actions = [];
// actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:;" onclick="$.operate.edit(\'' + row.jobId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
// actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:;" onclick="$.operate.remove(\'' + row.jobId + '\')"><i class="fa fa-remove"></i>删除</a> ');
// var more = [];
// more.push("<a class='btn btn-default btn-xs " + statusFlag + "' href='javascript:void(0)' onclick='run(" + row.jobId + ")'><i class='fa fa-play-circle-o'></i> 执行一次</a> ");
// more.push("<a class='btn btn-default btn-xs " + detailFlag + "' href='javascript:void(0)' onclick='$.operate.detail(" + row.jobId + ")'><i class='fa fa-search'></i>任务详细</a> ");
// more.push("<a class='btn btn-default btn-xs " + detailFlag + "' href='javascript:void(0)' onclick='jobLog(" + row.jobId + ")'><i class='fa fa-list'></i>调度日志</a>");
// actions.push('<a class="btn btn-info btn-xs" role="button" data-container="body" data-placement="left" data-toggle="popover" data-html="true" data-trigger="hover" data-content="' + more.join('') + '"><i class="fa fa-chevron-circle-right"></i>更多操作</a>');
// return actions.join('');
// }
// }
]
};
$.table.init(options);
});

View File

@ -11,49 +11,52 @@
<div class="select-list">
<ul>
<li>
雷达位置:<input type="text" name="jobName" placeholder="雷达位置"/>
雷达位置:<input type="text" name="radarLocation" placeholder="雷达位置"/>
</li>
<!-- <li>-->
<!-- 识别类型:<select name="status" th:with="type=${@dict.getType('sys_job_status')}">-->
<!-- <option value="">识别类型</option>-->
<!-- <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>-->
<!-- </select>-->
<!-- </li>-->
<li>
铁包号/车架号:<input type="text" name="ladleNumber" placeholder="铁包号/车架号"/>
</li>
<li>
识别类型:<select name="status" th:with="type=${@dict.getType('sys_job_status')}">
<option value="">识别类型</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
铁包号/车架号:<input type="text" name="jobName" placeholder="铁包号/车架号"/>
</li>
<li>
标识器:<input type="text" name="jobName" placeholder="标识器"/>
标识器:<input type="text" name="tagId" placeholder="标识器"/>
</li>
<li class="select-time">
<label>创建时间: </label>
<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginTime]"/>
<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createTime"/>
<span>-</span>
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/>
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="updateTime"/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()">
<i class="fa fa-download"></i> 导出
</a>
</li>
</ul>
</div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="monitor:job:add">
<i class="fa fa-plus"></i> 新增
</a>
<a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="monitor:job:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="monitor:job:remove">
<i class="fa fa-remove"></i> 删除
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export">
<i class="fa fa-download"></i> 导出
</a>
</div>
<!-- <div class="btn-group-sm" id="toolbar" role="group">-->
<!--&lt;!&ndash; <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="monitor:job:add">&ndash;&gt;-->
<!--&lt;!&ndash; <i class="fa fa-plus"></i> 新增&ndash;&gt;-->
<!--&lt;!&ndash; </a>&ndash;&gt;-->
<!--&lt;!&ndash; <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="monitor:job:edit">&ndash;&gt;-->
<!--&lt;!&ndash; <i class="fa fa-edit"></i> 修改&ndash;&gt;-->
<!--&lt;!&ndash; </a>&ndash;&gt;-->
<!--&lt;!&ndash; <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="monitor:job:remove">&ndash;&gt;-->
<!--&lt;!&ndash; <i class="fa fa-remove"></i> 删除&ndash;&gt;-->
<!--&lt;!&ndash; </a>&ndash;&gt;-->
<!-- <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export">-->
<!-- <i class="fa fa-download"></i> 导出-->
<!-- </a>-->
<!-- </div>-->
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
@ -79,94 +82,44 @@
exportUrl: prefix + "/export",
sortName: "createTime",
sortOrder: "desc",
modalName: "任务",
modalName: "标识器数据",
columns: [{
checkbox: true
},
{
field: 'jobId',
field: 'id',
title: '序号'
},
{
field: 'createTime',
field: 'updateTime',
title: '时间',
sortable: true
},
{
field: 'jobName',
field: 'value4',
title: '信号值',
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:;" onclick="$.operate.edit(\'' + row.jobId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:;" onclick="$.operate.remove(\'' + row.jobId + '\')"><i class="fa fa-remove"></i>删除</a> ');
var more = [];
more.push("<a class='btn btn-default btn-xs " + statusFlag + "' href='javascript:void(0)' onclick='run(" + row.jobId + ")'><i class='fa fa-play-circle-o'></i> 执行一次</a> ");
more.push("<a class='btn btn-default btn-xs " + detailFlag + "' href='javascript:void(0)' onclick='$.operate.detail(" + row.jobId + ")'><i class='fa fa-search'></i>任务详细</a> ");
more.push("<a class='btn btn-default btn-xs " + detailFlag + "' href='javascript:void(0)' onclick='jobLog(" + row.jobId + ")'><i class='fa fa-list'></i>调度日志</a>");
actions.push('<a class="btn btn-info btn-xs" role="button" data-container="body" data-placement="left" data-toggle="popover" data-html="true" data-trigger="hover" data-content="' + more.join('') + '"><i class="fa fa-chevron-circle-right"></i>更多操作</a>');
return actions.join('');
}
}]
// {
// title: '操作',
// align: 'center',
// formatter: function(value, row, index) {
// var actions = [];
// actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:;" onclick="$.operate.edit(\'' + row.jobId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
// actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:;" onclick="$.operate.remove(\'' + row.jobId + '\')"><i class="fa fa-remove"></i>删除</a> ');
// var more = [];
// more.push("<a class='btn btn-default btn-xs " + statusFlag + "' href='javascript:void(0)' onclick='run(" + row.jobId + ")'><i class='fa fa-play-circle-o'></i> 执行一次</a> ");
// more.push("<a class='btn btn-default btn-xs " + detailFlag + "' href='javascript:void(0)' onclick='$.operate.detail(" + row.jobId + ")'><i class='fa fa-search'></i>任务详细</a> ");
// more.push("<a class='btn btn-default btn-xs " + detailFlag + "' href='javascript:void(0)' onclick='jobLog(" + row.jobId + ")'><i class='fa fa-list'></i>调度日志</a>");
// actions.push('<a class="btn btn-info btn-xs" role="button" data-container="body" data-placement="left" data-toggle="popover" data-html="true" data-trigger="hover" data-content="' + more.join('') + '"><i class="fa fa-chevron-circle-right"></i>更多操作</a>');
// return actions.join('');
// }
// }
]
};
$.table.init(options);
});
/* 调度任务状态显示 */
function statusTools(row) {
if (row.status == 1) {
return '<i class=\"fa fa-toggle-off text-info fa-2x\" onclick="start(\'' + row.jobId + '\', \'' + row.jobGroup + '\')"></i> ';
} else {
return '<i class=\"fa fa-toggle-on text-info fa-2x\" onclick="stop(\'' + row.jobId + '\', \'' + row.jobGroup + '\')"></i> ';
}
}
/* 立即执行一次 */
function run(jobId) {
$.modal.confirm("确认要立即执行一次任务吗?", function() {
$.operate.post(prefix + "/run", { "jobId": jobId});
})
}
/* 调度任务-停用 */
function stop(jobId, jobGroup) {
$.modal.confirm("确认要停用任务吗?", function() {
$.operate.post(prefix + "/changeStatus", { "jobId": jobId, "jobGroup": jobGroup, "status": 1 });
})
}
/* 调度任务-启用 */
function start(jobId, jobGroup) {
$.modal.confirm("确认要启用任务吗?", function() {
$.operate.post(prefix + "/changeStatus", { "jobId": jobId, "jobGroup": jobGroup, "status": 0 });
})
}
/* 调度日志查询 */
function jobLog(jobId) {
var url = ctx + 'monitor/jobLog';
if ($.common.isNotEmpty(jobId)) {
url += '?jobId=' + jobId;
}
$.modal.openTab("调度日志", url);
}
/* cron表达式生成 */
function cron() {
var url = prefix + '/cron';
var height = $(window).height() - 50;
top.layer.open({
maxmin: true,
title: "Cron表达式生成器",
type: 2,
area: ['800px', height + "px" ], //宽高
shadeClose: true,
content: url
});
}
</script>
</body>
</html>

View File

@ -73,6 +73,8 @@ public class PrimaryRadarData extends BaseEntity
*/
@Excel(name = "车架号")
private String ladleNumber;
private String totalCount;
/**
* ip
*/
@ -81,6 +83,16 @@ public class PrimaryRadarData extends BaseEntity
/** 删除标志0代表存在 2代表删除 */
private String delFlag;
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public PrimaryRadarData() {
}
@ -188,6 +200,14 @@ public class PrimaryRadarData extends BaseEntity
this.radarIp = radarIp;
}
public String getTotalCount() {
return totalCount;
}
public void setTotalCount(String totalCount) {
this.totalCount = totalCount;
}
public String getDelFlag() {
return delFlag;
}
@ -209,6 +229,8 @@ public class PrimaryRadarData extends BaseEntity
.append("baseLine",getBaseLine())
.append("queryFre",getQueryFre())
.append("number",getNumber())
.append("type",getType())
.append("totalCount",getTotalCount())
.append("radarLocation",getRadarLocation())
.append("ladleNumber",getLadleNumber())
.append("radarIp",getRadarIp())

View File

@ -0,0 +1,178 @@
package com.ruoyi.common.core.domain.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/**
* sys_primary_radar_data
*
* @author ruoyi
*/
public class RadarTableVO extends BaseEntity
{
private static final long serialVersionUID = 1L;
/**
*
*/
@Excel(name = "雷达位置")
private String radarLocation;
/**
*
*/
@Excel(name = "识别类型")
private String type;
/**
* 线
*/
@Excel(name = "天线号")
private Integer number;
/**
* id
*/
@Excel(name = "标签id号")
private String tagId;
/**
*
*/
@Excel(name = "车架号")
private String ladleNumber;
/**
* 4·
*/
@Excel(name = "信号值")
private Integer value4;
@Excel(name = "读取次数")
private String totalCount;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/** 删除标志0代表存在 2代表删除 */
private String delFlag;
public RadarTableVO() {
}
public String getTagId() {
return tagId;
}
public void setTagId(String tagId) {
this.tagId = tagId;
}
public Integer getValue4() {
return value4;
}
public void setValue4(Integer value4) {
this.value4 = value4;
}
public String getRadarLocation() {
return radarLocation;
}
public void setRadarLocation(String radarLocation) {
this.radarLocation = radarLocation;
}
public String getLadleNumber() {
return ladleNumber;
}
public void setLadleNumber(String ladleNumber) {
this.ladleNumber = ladleNumber;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
@Override
public Date getUpdateTime() {
return updateTime;
}
@Override
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
public String getTotalCount() {
return totalCount;
}
public void setTotalCount(String totalCount) {
this.totalCount = totalCount;
}
@Override
public Date getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("tagId",getTagId())
.append("value4",getValue4())
.append("ladleNumber",getLadleNumber())
.append("type",getType())
.append("number",getNumber())
.append("radarLocation",getRadarLocation())
.append("totalCount",getTotalCount())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -0,0 +1,146 @@
package com.ruoyi.common.core.domain.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/**
* sys_primary_radar_data
*
* @author ruoyi
*/
public class TagRadarData extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户ID */
@Excel(name = "序号", cellType = ColumnType.NUMERIC)
private Long id;
/**
* id
*/
@Excel(name = "标签id号")
private String tagId;
/**
* 4·
*/
@Excel(name = "信号值")
private Integer value4;
/**
*
*/
@Excel(name = "雷达位置")
private String radarLocation;
/**
*
*/
@Excel(name = "车架号")
private String ladleNumber;
@Excel(name = "时间" , dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**
* ip
*/
@Excel(name = "雷达ip")
private String radarIp;
/** 删除标志0代表存在 2代表删除 */
private String delFlag;
public TagRadarData() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTagId() {
return tagId;
}
public void setTagId(String tagId) {
this.tagId = tagId;
}
public Integer getValue4() {
return value4;
}
public void setValue4(Integer value4) {
this.value4 = value4;
}
public String getRadarLocation() {
return radarLocation;
}
public void setRadarLocation(String radarLocation) {
this.radarLocation = radarLocation;
}
public String getLadleNumber() {
return ladleNumber;
}
public void setLadleNumber(String ladleNumber) {
this.ladleNumber = ladleNumber;
}
public String getRadarIp() {
return radarIp;
}
public void setRadarIp(String radarIp) {
this.radarIp = radarIp;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
@Override
public Date getUpdateTime() {
return updateTime;
}
@Override
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("tagId",getTagId())
.append("value4",getValue4())
.append("ladleNumber",getLadleNumber())
.append("radarIp",getRadarIp())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -2,6 +2,7 @@ package com.ruoyi.system.mapper;
import com.ruoyi.common.core.domain.entity.NormalIdentifier;
import com.ruoyi.common.core.domain.entity.PrimaryRadarData;
import com.ruoyi.common.core.domain.entity.RadarTableVO;
import java.util.List;
@ -20,4 +21,6 @@ public interface PrimaryRadarDataMapper
int updatePrimaryRadarData(PrimaryRadarData primaryRadarData);
List<PrimaryRadarData> selectPrimaryRadarDataList(PrimaryRadarData primaryRadarData);
List<PrimaryRadarData> selectRadarTable(PrimaryRadarData primaryRadarData);
}

View File

@ -2,6 +2,7 @@ package com.ruoyi.system.service;
import com.ruoyi.common.core.domain.entity.NormalIdentifier;
import com.ruoyi.common.core.domain.entity.PrimaryRadarData;
import com.ruoyi.common.core.domain.entity.RadarTableVO;
import java.util.List;
@ -19,4 +20,7 @@ public interface PrimaryRadarDataService
PrimaryRadarData selectPrimaryRadarDataById(Long id);
int updateUser(PrimaryRadarData primaryRadarData);
List<PrimaryRadarData> selectRadarTable(PrimaryRadarData primaryRadarData);
}

View File

@ -2,7 +2,10 @@ package com.ruoyi.system.service.impl;
import com.ruoyi.common.core.domain.entity.NormalIdentifier;
import com.ruoyi.common.core.domain.entity.PrimaryRadarData;
import com.ruoyi.common.core.domain.entity.RadarTableVO;
import com.ruoyi.common.core.domain.entity.SysRadar;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.system.mapper.NormalIdentifierMapper;
import com.ruoyi.system.mapper.PrimaryRadarDataMapper;
import com.ruoyi.system.mapper.SysRadarMapper;
@ -15,6 +18,7 @@ import org.springframework.stereotype.Service;
import javax.validation.Validator;
import java.util.List;
import java.util.stream.Collectors;
/**
*
@ -54,9 +58,20 @@ public class PrimaryRadarDataServiceImpl implements PrimaryRadarDataService
return primaryRadarDataMapper.updatePrimaryRadarData(primaryRadarData);
}
@Override
public List<PrimaryRadarData> selectRadarTable(PrimaryRadarData primaryRadarData) {
List<PrimaryRadarData> radarTableVOS = primaryRadarDataMapper.selectRadarTable(primaryRadarData);
return radarTableVOS;
}
@Override
public PrimaryRadarData selectPrimaryRadarDataById(Long id) {
return primaryRadarDataMapper.selectPrimaryRadarDataById(id);
}
}

View File

@ -18,6 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="radarLocation" column="radar_location" />
<result property="ladleNumber" column="ladle_number" />
<result property="radarIp" column="radar_ip" />
<result property="totalCount" column="total_count" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
@ -83,6 +84,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)
</insert>
<select id="selectRadarTable" resultMap="PrimaryRadarDataResult">
SELECT radar_location, ladle_number, number, value4, radar_ip, tag_id, create_time, update_time, total_count
FROM (
SELECT radar_location, ladle_number, number, value4, radar_ip, tag_id, create_time, update_time,
COUNT(*) OVER (PARTITION BY radar_location, ladle_number, number, value4, radar_ip, tag_id) AS total_count,
ROW_NUMBER() OVER (PARTITION BY radar_location, ladle_number, number, value4, radar_ip, tag_id
ORDER BY create_time, update_time) AS row_num
FROM sys_primary_radar_data
) subquery
WHERE row_num = 1
</select>
<!-- <insert id="insertPrimaryRadarData">-->
<!-- insert into sys_normalIdentifier(-->