Commit 255d27bd authored by beilang's avatar beilang

2023-11-30

parent 13f6616c
......@@ -82,6 +82,7 @@ public class ShiroConfig {
LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
map.put("/static/**", "anon");
map.put("/login", "anon");
map.put("/upPass", "anon");
map.put("/**", "user");
shiroFilterFactory.setFilterChainDefinitionMap(map);
return shiroFilterFactory;
......
package com.ces.web.bs.controller;
import com.ces.common.constant.Constant;
import com.ces.web.bs.service.IBsDeviceService;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/bs")
@RequiresRoles({Constant.RoleCode.BS})
public class BsController {
@Autowired
private IBsDeviceService bsDeviceService;
private final String prisonName = "沪-宝";
@GetMapping
@RequiresRoles({Constant.RoleCode.BS})
public ModelAndView bsAreaPlanView () {
return new ModelAndView("bs/bsAreaPlan");
}
@GetMapping("/jqone")
public ModelAndView jqoneIndex() {
return new ModelAndView("bs/jqone");
}
/*@GetMapping
@RequiresRoles({Constant.RoleCode.BS})
public ModelAndView bsView (String buildAreaName) {
ModelAndView modelAndView = new ModelAndView("bs/bs");
modelAndView.addObject("buildAreaName", buildAreaName);
return modelAndView;
}*/
@GetMapping("/jqtwo")
public ModelAndView jqtwoIndex() {
@GetMapping("getBuildAreaAllCount")
@RequiresRoles({Constant.RoleCode.BS})
public Map<String, String> getBuildAreaAllCount () {
return bsDeviceService.getBuildAreaAllCount(prisonName);
return new ModelAndView("bs/jqtwo");
}
@GetMapping("getBuildAreaCount")
@RequiresRoles({Constant.RoleCode.BS})
public Map<String, String> getBuildAreaCount (String buildAreaName) {
return bsDeviceService.getBuildAreaCount(prisonName, buildAreaName);
@GetMapping("/jqthere")
public ModelAndView jqthereIndex() {
return new ModelAndView("bs/jqthere");
}
@GetMapping("getGbId")
@RequiresRoles({Constant.RoleCode.BS})
public List<String> getGbId (String buildAreaName, String floor) {
return bsDeviceService.getGbId(prisonName, buildAreaName, floor);
@GetMapping("/jqeight")
public ModelAndView jqeightIndex() {
return new ModelAndView("bs/jqeight");
}
@GetMapping("/ddl")
public ModelAndView ddlIndex() {
return new ModelAndView("bs/ddl");
}
@GetMapping("/xdl")
public ModelAndView xdlIndex() {
return new ModelAndView("bs/xdl");
}
@GetMapping("/zhl")
public ModelAndView zhlIndex() {
return new ModelAndView("bs/zhl");
}
@GetMapping("/wlzx")
public ModelAndView wlzxIndex() {
return new ModelAndView("bs/wlzx");
}
}
package com.ces.web.bxj.controller;
import com.ces.common.constant.Constant;
import com.ces.web.bs.service.IBsDeviceService;
import com.ces.web.bxj.service.IBxjDeviceService;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/bxj")
@RequiresRoles({Constant.RoleCode.BXJ})
public class BxjController {
@Autowired
private IBxjDeviceService bxjDeviceService;
private final String prisonName = "沪-北";
@GetMapping("areaPlanView")
@RequiresRoles({Constant.RoleCode.BXJ})
@GetMapping
public ModelAndView bxjAreaPlanView () {
return new ModelAndView("bxj/bxjAreaPlan");
}
@GetMapping
@RequiresRoles({Constant.RoleCode.BXJ})
public ModelAndView bxjView (String buildAreaName) {
ModelAndView modelAndView = new ModelAndView("bxj/bxj");
modelAndView.addObject("buildAreaName", buildAreaName);
return modelAndView;
}
@GetMapping("getBuildAreaAllCount")
@RequiresRoles({Constant.RoleCode.BXJ})
public Map<String, String> getBuildAreaAllCount () {
return bxjDeviceService.getBuildAreaAllCount(prisonName);
}
@GetMapping("getBuildAreaCount")
@RequiresRoles({Constant.RoleCode.BXJ})
public Map<String, String> getBuildAreaCount (String buildAreaName) {
return bxjDeviceService.getBuildAreaCount(prisonName, buildAreaName);
}
@GetMapping("getGbId")
@RequiresRoles({Constant.RoleCode.BXJ})
public List<String> getGbId (String buildAreaName, String floor) {
return bxjDeviceService.getGbId(prisonName, buildAreaName, floor);
@GetMapping("/jqone")
public ModelAndView jqoneIndex() {
return new ModelAndView("bxj/jqone");
}
}
......@@ -32,17 +32,6 @@ public class DeviceController {
@Autowired
private DeviceQueryService deviceQueryService;
@GetMapping("/player")
public ModelAndView playerView() {
return new ModelAndView("player");
}
@GetMapping("/demo")
public ModelAndView demoView() {
return new ModelAndView("demo");
}
/**
* 获取所有监狱信息
*/
......
package com.ces.web.index.ctrl;
import com.ces.common.core.domain.Result;
import com.ces.common.device.service.DeviceQueryService;
import com.ces.common.exception.AccountErrorException;
import com.ces.common.utils.ObjectUtils;
import com.ces.framework.authsystem.AuthSystemUtils;
import com.ces.web.device.service.IDeviceService;
import com.cesgroup.authen4.ws.entity.Account;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
......@@ -40,6 +45,41 @@ public class IndexController {
public ModelAndView demoTest() {
return new ModelAndView("demo_1");
}
@GetMapping("/upPass")
public ModelAndView upPassView() {
return new ModelAndView("upPass");
}
@PostMapping("/upPass")
public Result upPass(String loginName, String oldPass, String newPass) {
try {
// 判断旧密码是否正确
Account account = AuthSystemUtils.getCoreHttpClientWS()
.queryAccountByLoginNameAndTenantId(loginName, AuthSystemUtils.getTenantId());
if (account == null) {
return Result.error("账号或旧密码错误!");
}
boolean passCheck = AuthSystemUtils.getCoreHttpClientWS().checkPasswordByUserId(account.getId(), oldPass);
if (!passCheck) {
return Result.error("账号或旧密码错误!");
}
AuthSystemUtils.getCoreHttpClientWS().changePassword(account.getId(), newPass);
} catch (Exception e) {
e.printStackTrace();
return Result.error("账号或旧密码错误!");
}
return Result.success();
}
@GetMapping("/areaPlan")
public ModelAndView prisonBuild(String name) {
ModelAndView mv = new ModelAndView("comm/areaPlan");
......
......@@ -24,7 +24,7 @@ monitor:
api: http://172.100.100.21/cdevice-manage/device
authsystem:
host: http://127.0.0.1:9090/jcy-auth
tenantId: 7fc3fbe6e2b342ddbcb06d101717f960
tenantId: ec2a4fa4dde54c18a589a4141f912c81
mybatis-plus:
type-aliases-package: com.ces.web.**.entity
......
......@@ -28,4 +28,24 @@
<script src="${ctx}/static/js/popper.min.js"></script>
<link rel="stylesheet" type="text/css" href="${ctx}/static/css/common.css"/>
<link rel="stylesheet" type="text/css" href="${ctx}/static/css/workshop.css"/>
<link rel="stylesheet" type="text/css" href="${ctx}/static/css/commonArea.css"/>
\ No newline at end of file
<link rel="stylesheet" type="text/css" href="${ctx}/static/css/commonArea.css"/>
<div class="logout">
<a href="${ctx}/login">退出登录</a>
</div>
<style>
.logout{
position: fixed;
top: 25px;
right: 30px;
}
.logout a{
color: #fff!important;
font-size: 16px;
text-decoration: none;
}
.logout a:hover{
color: #fff!important;
}
</style>
\ No newline at end of file
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:include page="../base.jsp"/>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>上海市人民检察院</title>
</head>
<script>
// 监控点数量的数组
var floorsCameraCounts = [];
$(function () {
// 摄像头位置的数组
var upperArr = [{
top: '0.4rem',
left: '0.5rem'
}, {
top: '0.4rem',
left: '1.8rem'
}, {
top: '0.2rem',
left: '3.2rem'
}, {
top: '0.2rem',
left: '4.6rem'
}, {
top: '0.2rem',
left: '6rem'
}, {
top: '0.2rem',
left: '7.4rem'
}, {
top: '0.2rem',
left: '8.8rem'
}, {
top: '0.4rem',
left: '10.2rem'
}, {
top: '0.4rem',
left: '11.6rem'
}, {
top: '1.6rem',
left: '0.5rem'
}, {
top: '1.6rem',
left: '1.8rem'
}, {
top: '1.6rem',
left: '3.2rem'
}, {
top: '1.6rem',
left: '4.6rem'
}, {
top: '1.6rem',
left: '6rem'
}, {
top: '1.6rem',
left: '7.4rem'
}, {
top: '1.6rem',
left: '8.8rem'
}, {
top: '1.6rem',
left: '10.2rem'
}, {
top: '1.6rem',
left: '11.6rem'
}, {
top: '2.5rem',
left: '0.5rem'
}, {
top: '2.5rem',
left: '1.8rem'
}, {
top: '2.5rem',
left: '3.2rem'
}, {
top: '2.5rem',
left: '4.6rem'
}, {
top: '2.5rem',
left: '6rem'
}, {
top: '2.5rem',
left: '7.4rem'
}, {
top: '2.5rem',
left: '8.8rem'
}, {
top: '2.5rem',
left: '10.2rem'
}];
var centreArr = [
{
top: '2.5rem',
left: '10.2rem'
},
{
top: '3.2rem',
left: '0.5rem'
}, {
top: '3.2rem',
left: '1.8rem'
}, {
top: '3.2rem',
left: '3.2rem'
}, {
top: '3.2rem',
left: '4.6rem'
}, {
top: '3.2rem',
left: '6rem'
}, {
top: '3.2rem',
left: '7.4rem'
}, {
top: '3.2rem',
left: '8.8rem'
}, {
top: '3.2rem',
left: '10.2rem'
}, {
top: '3.2rem',
left: '11.3rem'
},
{
top: '4.2rem',
left: '2.5rem'
}, {
top: '4.2rem',
left: '4rem'
}, {
top: '4.2rem',
left: '7rem'
}, {
top: '3.2rem',
left: '11.3rem'
},
{
top: '4.9rem',
left: '0.5rem'
}, {
top: '4.9rem',
left: '1.8rem'
}, {
top: '4.9rem',
left: '3.2rem'
}, {
top: '4.9rem',
left: '4.6rem'
}, {
top: '4.9rem',
left: '6rem'
}, {
top: '4.9rem',
left: '7.4rem'
}, {
top: '4.9rem',
left: '8.8rem'
}, {
top: '4.9rem',
left: '10.2rem'
}, {
top: '4.9rem',
left: '11.3rem'
},
]
var belowArr = [
{
top: '6rem',
left: '0.5rem'
}, {
top: '6rem',
left: '1.8rem'
}, {
top: '6rem',
left: '6rem'
}, {
top: '6rem',
left: '4.6rem'
}, {
top: '6rem',
left: '6rem'
}, {
top: '6rem',
left: '7.4rem'
}, {
top: '6rem',
left: '8.8rem'
}, {
top: '6rem',
left: '10.2rem'
}, {
top: '6rem',
left: '11.5rem'
},
{
top: '7rem',
left: '1.8rem'
}, {
top: '7rem',
left: '3.4rem'
}, {
top: '7rem',
left: '10.2rem'
}, {
top: '7rem',
left: '11.5rem'
},
{
top: '7rem',
left: '7.4rem'
},
{
top: '7rem',
left: '1.8rem'
}, {
top: '7rem',
left: '3.4rem'
}, {
top: '7rem',
left: '10.2rem'
}, {
top: '7rem',
left: '11.5rem'
},
{
top: '7rem',
left: '7.4rem'
}
];
// 更新摄像头视图的函数
function updateCameras(index) {
// 计算要显示的摄像头数量
var camerasCount = floorsCameraCounts[index];
// 获取并更新监控点的数字
$('.monitor').eq(index).find('span').text(camerasCount);
// 生成一个随机的起始索引
// var randomStartIndex = Math.floor(Math.random() * (arr.length - camerasCount + 1));
// 从arr中获取当前楼层的摄像头位置,从随机的起始索引开始
// var selectedCameras = arr.slice(randomStartIndex, randomStartIndex + camerasCount);
var selectedCameras = [];
let number = parseInt(camerasCount /3);
upperNmuber = parseInt(number + (camerasCount % 3));
let upperList = myRandom(upperArr, upperNmuber).filter(it=>it).map(it=>it);
let centreList = myRandom(centreArr, number).filter(it => it).map(it => it);
let belowList = myRandom(belowArr, number).filter(it => it).map(it => it);
selectedCameras = [...upperList,...centreList,...belowList]
// selectedCameras = upperArr
// 创建新的HTML内容
var htmlTxt = '<img class="bg_img" src="${ctx}/static/images/commonplan.png" alt="">';
$.each(selectedCameras, function (i, camera) {
htmlTxt += '<img class="camera" src="${ctx}/static/images/camera.png" ' +
'style="top:' + camera.top + ';left:' + camera.left + '" ' +
'onclick="handleClick(' + i + ')"></img>';
});
// 更新DOM元素
$('.room_box').html(htmlTxt);
}
function myRandom(arr, length) {
var newArr = []; // 组成的新数组初始化
for (var i = 0; i < length; i++) {
var index = Math.floor(Math.random() * arr.length);
var item = arr[index];
newArr.push(item)
}
return newArr.reverse()
}
// 点击事件绑定到楼层标签
$(".tab_list").on("click", "li", function () {
var $this = $(this);
var index = $this.index();
// 更新显示的楼层数字
$this.addClass('current').siblings().removeClass('current');
// 更新监控点和摄像头
updateCameras(index);
bs.getGbId($this.find('p:first').html());
});
// 页面加载时默认选中第一个楼层
$(".tab_list li").first().click();
});
function handleClick(i) {
let gbId = gbIdList[i];
VideoPlayer.show(gbId);
}
</script>
<body>
<div class="content">
<div class="content_top"></div>
<div class="padding_box2 clearfix">
<div class="menu_box">
<div class="menu_title_box "><a class="menu_name" href="${ctx}/bs/areaPlanView"></a></div>
<div class="tab_list">
<ul></ul>
</div>
</div>
<div class="content_box">
<div class="room_box">
</div>
</div>
</div>
</div>
<script>
var buildAreaName = '${buildAreaName}';
var gbIdList = [];
var bsMapper = {
'东大楼': ['一楼', '二楼', '三楼', '四楼', '五楼', '楼顶'],
'西大楼': ['一楼', '二楼', '三楼', '四楼', '五楼', '楼顶'],
'一监区': ['东部', '西部', '劳动场所'],
'二监区': ['东部', '西部', '劳动场所'],
'三监区': ['东部', '西部', '车间', '劳动场所'],
'八监区': ['东部', '西部', '劳动场所'],
'物流中心': ['东部', '西部'],
'综合楼': ['一楼', '二楼', '三楼', '四楼', '五楼', '楼顶'],
};
var bs = {
getMonitorCount: function(){
$.ajax({
url: ctx + "/bs/getBuildAreaCount",
data: {'buildAreaName': buildAreaName},
success: function(data){
var html = '';
var floors = bsMapper[buildAreaName];
if(floors){
for(let i = 0; i < floors.length; i++){
var floor = floors[i];
var count = data[floor];
count = count ? count : 0;
floorsCameraCounts.push(count);
html += '<li><div class="flex-box">';
html += '<p>' + floor + '</p>';
html += '<p class="monitor">监控点<span>' + count + '</span></p>';
html += '</div></li>'
}
$('div.tab_list > ul').html(html);
$('.tab_list li').eq(0).click();
}
}
});
},
getGbId: function(floor){
$.ajax({
url: ctx + "/bs/getGbId",
data: {'buildAreaName': buildAreaName, 'floor': floor},
success: function(data){
gbIdList = data;
}
});
},
init: function(){
$('.menu_title_box a').html(buildAreaName);
this.getMonitorCount();
}
}
bs.init();
</script>
</body>
</html>
\ No newline at end of file
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="../base.jsp"%>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>东大楼</title>
</head>
<style type="text/css">
.content {
background: url('${ctx}/static/images/bg.jpg') center center no-repeat;
width: 100%;
height: 100%;
/* background-position-x: center; */
background-size: cover;
}
</style>
<body>
<div class="content">
<div class="content_top"></div>
<div class=" padding_box2 clearfix">
<div class="menu_box">
<div class="menu_title_box"><a class="menu_name" href="${ctx}/bs">东大楼</a></div>
<div class="tab_list">
<ul>
<li class="current">
<div class="flex-box">
<p class="tabName">一楼</p>
<p class="monitor">监控点<span>5</span></p>
</div>
</li>
<li>
<div class="flex-box">
<p class="tabName">二楼</p>
<p class="monitor">监控点<span>4</span></p>
</div>
</li>
</ul>
</div>
</div>
<div class="content_box">
<div class="room_box">
</div>
</div>
</div>
</div>
<script>
let dataList = {
'arr1': [
{
top: '4rem',
left: '2.9rem',
gbid: '31011300001320000123'
},{
top: '4.6rem',
left: '2.9rem',
gbid: '31011300001320000124'
},{
top: '4rem',
left: '8.8rem',
gbid: '31011300001320000125'
},{
top: '4.6rem',
left: '8.8rem',
gbid: '31011300001320000126'
},{
top: '5.9rem',
left: '6.3rem',
gbid: '31011300001320000127'
}],
'arr2': [
{
top: '4rem',
left: '2.9rem',
gbid: '31011300001320000119'
},{
top: '4.6rem',
left: '2.9rem',
gbid: '31011300001320000120'
},{
top: '4rem',
left: '8.8rem',
gbid: '31011300001320000121'
},{
top: '4.6rem',
left: '8.8rem',
gbid: '31011300001320000122'
}]
};
let thisIndex = 1;
$(function () {
// 1、点击上面的li,当前点击的li添加current类,其余兄弟移除类
$(".tab_list li").click(function () {
// 链式编程 当前li添加类,其余兄弟移除类
$(this).addClass('current').siblings().removeClass('current');
// 2、拿到当前点击的索引号
var index = $(this).index();
// 3、下面index对应的模块显示,其余的item隐藏
$(".tab_con .item").eq(index).show().siblings().hide();
updateData(index + 1);
})
updateData(1);
});
function updateData(index) {
thisIndex = index;
//循环数组 打摄像头位置
var divElement = document.querySelector('.room_box');
let htmlTxt = '<img class="bg_img" src="${ctx}/static/images/dongfloor_' + index + '.png" alt="">'
for (let i = 0; i < dataList[`arr${"${index}"}`].length; i++) {
htmlTxt = htmlTxt + '<img class="camera" src="${ctx}/static/images/camera.png" ' + ' style="top:' + dataList[`arr${"${index}"}`][i].top + ";left:" + dataList[`arr${"${index}"}`][i].left + '" onclick="handleClick(' + i + ')"></img>'
}
divElement.innerHTML = htmlTxt;
}
function handleClick(i) {
let gbId = dataList['arr' + thisIndex][i].gbid;
VideoPlayer.show(gbId);
}
</script>
</body>
</html>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="../base.jsp" %>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>物流中心</title>
</head>
<style type="text/css">
.content {
background: url('${ctx}/static/images/bg.jpg') center center no-repeat;
width: 100%;
height: 100%;
/* background-position-x: center; */
background-size: cover;
}
</style>
<body>
<div class="content">
<div class="content_top"></div>
<div class=" padding_box2 clearfix">
<div class="menu_box">
<div class="menu_title_box"><a class="menu_name" href="${ctx}/bs">物流中心</a></div>
<div class="tab_list">
<ul>
<li class="current">
<div class="flex-box">
<p class="tabName">物流中心</p>
<p class="monitor">监控点<span>20</span></p>
</div>
</li>
</ul>
</div>
</div>
<div class="content_box">
<div class="room_box">
</div>
</div>
</div>
</div>
<script>
let dataList = {
'arr1': [
{
top: '0.3rem',
left: '0.3rem',
gbid: '31011300001320000814'
}, {
top: '0.3rem',
left: '2.8rem',
gbid: '31011300001320000797'
}, {
top: '0.3rem',
left: '5.3rem',
gbid: '31011300001320000812'
}, {
top: '0.3rem',
left: '6.45rem',
gbid: '31011300001320000808'
}, {
top: '0.3rem',
left: '9rem',
gbid: '31011300001320000807'
}, {
top: '0.3rem',
left: '11.4rem',
gbid: '31011300001320000806'
}, {
top: '1.95rem',
left: '11.4rem',
gbid: '31011300001320000805'
}, {
top: '4rem',
left: '11.4rem',
gbid: '31011300001320000804'
}, {
top: '2.8rem',
left: '6.45rem',
gbid: '31011300001320000803'
}, {
top: '1.95rem',
left: '5.3rem',
gbid: '31011300001320000811'
}, {
top: '3.7rem',
left: '5.3rem',
gbid: '31011300001320000810'
}, {
top: '2.7rem',
left: '0.3rem',
gbid: '31011300001320000809'
}, {
top: '5.3rem',
left: '0.3rem',
gbid: '31011300001320000800'
}, {
top: '6.65rem',
left: '7.4rem',
gbid: '31011300001320000802'
}, {
top: '6.65rem',
left: '9.4rem',
gbid: '31011300001320000796'
}, {
top: '3.15rem',
left: '9.35rem',
gbid: '31011300001320000795'
}, {
top: '6.65rem',
left: '11.4rem',
gbid: '31011300001320000798'
}, {
top: '5.3rem',
left: '5.3rem',
gbid: '31011300001320000813'
}, {
top: '5.3rem',
left: '6.45rem',
gbid: '31011300001320000799'
}, {
top: '5.3rem',
left: '2.8rem',
gbid: '31011300001320000801'
}]
};
let thisIndex = 1;
$(function () {
// 1、点击上面的li,当前点击的li添加current类,其余兄弟移除类
$(".tab_list li").click(function () {
// 链式编程 当前li添加类,其余兄弟移除类
$(this).addClass('current').siblings().removeClass('current');
// 2、拿到当前点击的索引号
var index = $(this).index();
// 3、下面index对应的模块显示,其余的item隐藏
$(".tab_con .item").eq(index).show().siblings().hide();
updateData(index + 1);
})
updateData(1);
});
function updateData(index) {
thisIndex = index;
//循环数组 打摄像头位置
var divElement = document.querySelector('.room_box');
let htmlTxt = '<img class="bg_img" src="${ctx}/static/images/wuliucenter.png" alt="">'
for (let i = 0; i < dataList[`arr${"${index}"}`].length; i++) {
htmlTxt = htmlTxt + '<img class="camera" src="${ctx}/static/images/camera.png" ' + ' style="top:' + dataList[`arr${"${index}"}`][i].top + ";left:" + dataList[`arr${"${index}"}`][i].left + '" onclick="handleClick(' + i + ')"></img>'
}
divElement.innerHTML = htmlTxt;
}
function handleClick(i) {
let gbId = dataList['arr' + thisIndex][i].gbid;
VideoPlayer.show(gbId);
}
</script>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="../base.jsp"%>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>西大楼</title>
</head>
<style type="text/css">
.content {
background: url('${ctx}/static/images/bg.jpg') center center no-repeat;
width: 100%;
height: 100%;
/* background-position-x: center; */
background-size: cover;
}
</style>
<body>
<div class="content">
<div class="content_top"></div>
<div class=" padding_box2 clearfix">
<div class="menu_box">
<div class="menu_title_box"><a class="menu_name" href="${ctx}/bs">西大楼</a></div>
<div class="tab_list">
<ul>
<li class="current">
<div class="flex-box">
<p class="tabName">一楼</p>
<p class="monitor">监控点<span>4</span></p>
</div>
</li>
<li>
<div class="flex-box">
<p class="tabName">二楼</p>
<p class="monitor">监控点<span>4</span></p>
</div>
</li>
</ul>
</div>
</div>
<div class="content_box">
<div class="room_box">
</div>
</div>
</div>
</div>
<script>
let dataList = {
'arr1': [
{
top: '4rem',
left: '2.9rem',
gbid: '31011300001320000817'
},{
top: '4.6rem',
left: '2.9rem',
gbid: '31011300001320000818'
},{
top: '4rem',
left: '8.8rem',
gbid: '31011300001320000819'
},{
top: '4.6rem',
left: '8.8rem',
gbid: '31011300001320000820'
}],
'arr2': [
{
top: '4rem',
left: '2.9rem',
gbid: '31011300001320000821'
},{
top: '4.6rem',
left: '2.9rem',
gbid: '31011300001320000822'
},{
top: '4rem',
left: '8.8rem',
gbid: '31011300001320000823'
},{
top: '4.6rem',
left: '8.8rem',
gbid: '31011300001320000824'
}]
};
let thisIndex = 1;
$(function () {
// 1、点击上面的li,当前点击的li添加current类,其余兄弟移除类
$(".tab_list li").click(function () {
// 链式编程 当前li添加类,其余兄弟移除类
$(this).addClass('current').siblings().removeClass('current');
// 2、拿到当前点击的索引号
var index = $(this).index();
// 3、下面index对应的模块显示,其余的item隐藏
$(".tab_con .item").eq(index).show().siblings().hide();
updateData(index + 1);
})
updateData(1);
});
function updateData(index) {
thisIndex = index;
//循环数组 打摄像头位置
var divElement = document.querySelector('.room_box');
let htmlTxt = '<img class="bg_img" src="${ctx}/static/images/dongfloor_' + index + '.png" alt="">'
for (let i = 0; i < dataList[`arr${"${index}"}`].length; i++) {
htmlTxt = htmlTxt + '<img class="camera" src="${ctx}/static/images/camera.png" ' + ' style="top:' + dataList[`arr${"${index}"}`][i].top + ";left:" + dataList[`arr${"${index}"}`][i].left + '" onclick="handleClick(' + i + ')"></img>'
}
divElement.innerHTML = htmlTxt;
}
function handleClick(i) {
let gbId = dataList['arr' + thisIndex][i].gbid;
VideoPlayer.show(gbId);
}
</script>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="../base.jsp"%>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>综合楼</title>
</head>
<style type="text/css">
.content {
background: url('${ctx}/static/images/bg.jpg') center center no-repeat;
width: 100%;
height: 100%;
/* background-position-x: center; */
background-size: cover;
}
</style>
<body>
<div class="content">
<div class="content_top"></div>
<div class=" padding_box2 clearfix">
<div class="menu_box">
<div class="menu_title_box"><a class="menu_name" href="${ctx}/bs">综合楼</a></div>
<div class="tab_list">
<ul>
<li class="current">
<div class="flex-box">
<p class="tabName">五楼</p>
<p class="monitor">监控点<span>17</span></p>
</div>
</li>
<li>
<div class="flex-box">
<p class="tabName">六楼</p>
<p class="monitor">监控点<span>20</span></p>
</div>
</li>
</ul>
</div>
</div>
<div class="content_box">
<div class="room_box">
</div>
</div>
</div>
</div>
<script>
let dataList = {
'arr1': [
{
top: '1.1rem',
left: '0.3rem',
gbid: '31011300001320000977'
},{
top: '1.1rem',
left: '2.8rem',
gbid: '31011300001320000976'
},{
top: '1.1rem',
left: '5.5rem',
gbid: '31011300001320000975'
},{
top: '1.1rem',
left: '8.1rem',
gbid: '31011300001320000974'
},{
top: '1.2rem',
left: '11rem',
gbid: '31011300001320000932'
},{
top: '1.8rem',
left: '11rem',
gbid: '31011300001320000933'
},{
top: '1.95rem',
left: '8.1rem',
gbid: '31011300001320000973'
},{
top: '1.95rem',
left: '5.3rem',
gbid: '31011300001320000972'
},{
top: '2.3rem',
left: '5.5rem',
gbid: '31011300001320000964'
},{
top: '3rem',
left: '0.3rem',
gbid: '31011300001320000971'
},{
top: '4.8rem',
left: '0.3rem',
gbid: '31011300001320000970'
},{
top: '6.65rem',
left: '0.3rem',
gbid: '31011300001320000969'
},{
top: '6.65rem',
left: '2.8rem',
gbid: '31011300001320000968'
},{
top: '6.65rem',
left: '5rem',
gbid: '31011300001320000967'
},{
top: '6.65rem',
left: '10.6rem',
gbid: '31011300001320000963'
},{
top: '4rem',
left: '5rem',
gbid: '31011300001320000966'
},{
top: '3.6rem',
left: '2.8rem',
gbid: '31011300001320000965'
}],
'arr2': [
{
top: '0.5rem',
left: '6rem',
gbid: '31011300001320000950'
},{
top: '1.1rem',
left: '0.3rem',
gbid: '31011300001320000954'
},{
top: '1.1rem',
left: '3rem',
gbid: '31011300001320000957'
},{
top: '1.1rem',
left: '5.75rem',
gbid: '31011300001320000951'
},{
top: '3.65rem',
left: '2.57rem',
gbid: '31011300001320000946'
},{
top: '3.65rem',
left: '5.3rem',
gbid: '31011300001320000948'
},{
top: '3.65rem',
left: '8rem',
gbid: '31011300001320000944'
},{
top: '4.1rem',
left: '0.3rem',
gbid: '31011300001320000952'
},{
top: '4.1rem',
left: '3rem',
gbid: '31011300001320000945'
},{
top: '4.1rem',
left: '5.75rem',
gbid: '31011300001320000959'
},{
top: '6.65rem',
left: '2.57rem',
gbid: '31011300001320000949'
},{
top: '6.65rem',
left: '5.3rem',
gbid: '31011300001320000943'
},{
top: '6.65rem',
left: '8rem',
gbid: '31011300001320000953'
},{
top: '6.65rem',
left: '10.6rem',
gbid: '31011300001320000942'
},{
top: '7.3rem',
left: '6.3rem',
gbid: '31011300001320000947'
},{
top: '4.7rem',
left: '8.5rem',
gbid: '31011300001320000956'
},{
top: '2.4rem',
left: '8.5rem',
gbid: '31011300001320000955'
},{
top: '4.2rem',
left: '10.6rem',
gbid: '31011300001320000958'
},{
top: '3.8rem',
left: '11.2rem',
gbid: '31011300001320000931'
},{
top: '1.8rem',
left: '11rem',
gbid: '31011300001320000960'
}]
};
let thisIndex = 1;
$(function () {
// 1、点击上面的li,当前点击的li添加current类,其余兄弟移除类
$(".tab_list li").click(function () {
// 链式编程 当前li添加类,其余兄弟移除类
$(this).addClass('current').siblings().removeClass('current');
// 2、拿到当前点击的索引号
var index = $(this).index();
// 3、下面index对应的模块显示,其余的item隐藏
$(".tab_con .item").eq(index).show().siblings().hide();
updateData(index + 1);
})
updateData(1);
});
function updateData(index) {
thisIndex = index;
//循环数组 打摄像头位置
var divElement = document.querySelector('.room_box');
let htmlTxt = '<img class="bg_img" src="${ctx}/static/images/zonghe_' + index + '.png" alt="">'
for (let i = 0; i < dataList[`arr${"${index}"}`].length; i++) {
htmlTxt = htmlTxt + '<img class="camera" src="${ctx}/static/images/camera.png" ' + ' style="top:' + dataList[`arr${"${index}"}`][i].top + ";left:" + dataList[`arr${"${index}"}`][i].left + '" onclick="handleClick(' + i + ')"></img>'
}
divElement.innerHTML = htmlTxt;
}
function handleClick(i) {
let gbId = dataList['arr' + thisIndex][i].gbid;
VideoPlayer.show(gbId);
}
</script>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="../base.jsp"%>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>一监区</title>
</head>
<style type="text/css">
.content {
background: url('${ctx}/static/images/bg.jpg') center center no-repeat;
width: 100%;
height: 100%;
/* background-position-x: center; */
background-size: cover;
}
</style>
<body>
<div class="content">
<div class="content_top"></div>
<div class=" padding_box2 clearfix">
<div class="menu_box">
<div class="menu_title_box"><a class="menu_name" href="${ctx}/bxj">一监区</a></div>
<div class="tab_list">
<ul>
<li class="current">
<div class="flex-box">
<p class="tabName">一楼</p>
<p class="monitor">监控点<span>5</span></p>
</div>
</li>
<li>
<div class="flex-box">
<p class="tabName">二楼</p>
<p class="monitor">监控点<span>4</span></p>
</div>
</li>
</ul>
</div>
</div>
<div class="content_box">
<div class="room_box">
</div>
</div>
</div>
</div>
<script>
let dataList = {
'arr1': [
{
top: '4rem',
left: '2.9rem',
gbid: '31011300001320000123'
},{
top: '4.6rem',
left: '2.9rem',
gbid: '31011300001320000124'
},{
top: '4rem',
left: '8.8rem',
gbid: '31011300001320000125'
},{
top: '4.6rem',
left: '8.8rem',
gbid: '31011300001320000126'
},{
top: '5.9rem',
left: '6.3rem',
gbid: '31011300001320000127'
}],
'arr2': [
{
top: '4rem',
left: '2.9rem',
gbid: '31011300001320000119'
},{
top: '4.6rem',
left: '2.9rem',
gbid: '31011300001320000120'
},{
top: '4rem',
left: '8.8rem',
gbid: '31011300001320000121'
},{
top: '4.6rem',
left: '8.8rem',
gbid: '31011300001320000122'
}]
};
let thisIndex = 1;
$(function () {
// 1、点击上面的li,当前点击的li添加current类,其余兄弟移除类
$(".tab_list li").click(function () {
// 链式编程 当前li添加类,其余兄弟移除类
$(this).addClass('current').siblings().removeClass('current');
// 2、拿到当前点击的索引号
var index = $(this).index();
// 3、下面index对应的模块显示,其余的item隐藏
$(".tab_con .item").eq(index).show().siblings().hide();
updateData(index + 1);
})
updateData(1);
});
function updateData(index) {
thisIndex = index;
//循环数组 打摄像头位置
var divElement = document.querySelector('.room_box');
let htmlTxt = '<img class="bg_img" src="${ctx}/static/images/dongfloor_' + index + '.png" alt="">'
for (let i = 0; i < dataList[`arr${"${index}"}`].length; i++) {
htmlTxt = htmlTxt + '<img class="camera" src="${ctx}/static/images/camera.png" ' + ' style="top:' + dataList[`arr${"${index}"}`][i].top + ";left:" + dataList[`arr${"${index}"}`][i].left + '" onclick="handleClick(' + i + ')"></img>'
}
divElement.innerHTML = htmlTxt;
}
function handleClick(i) {
let gbId = dataList['arr' + thisIndex][i].gbid;
VideoPlayer.show(gbId);
}
</script>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
request.setAttribute("ctx", request.getContextPath());
%>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>测试</title>
<script src="${ctx}/static/js/kmedia-uni.js"></script>
<style>
*{
margin: 0;
padding: 0;
}
html,body{
width: 100%;
}
#app{
height: 100%;
}
#video,#video1,#video2,#video3{
margin: 15px;
width: 800px;
height: 350px;
}
.model{
margin: auto;
width: 75%;
height: 300px;
border: 1px solid lightgray;
}
</style>
</head>
<body>
<div id="app">
<div class="tools">
<input type="text" id="gbid">
<button onclick="loadVideo()">实时播放</button>
</div>
<div id="video">
</div>
<%-- <div class="tools">
<input type="text" id="gbid1">
<button onclick="loadVideo1()">实时播放</button>
</div>
<div id="video1">
</div>--%>
<%--<div class="tools">
<input type="text" id="gbid2">
<button onclick="loadVideo2()">实时播放</button>
</div>
<div id="video2">
</div>
<div class="tools">
<input type="text" id="gbid3">
<button onclick="loadVideo3()">实时播放</button>
</div>
<div id="video3">
</div>--%>
<div class="model">
</div>
</div>
<script>
let gbid = '31011800001320000625';
let wsUrl = 'ws://172.100.100.21:32101';
console.log(Object.values(KMediaUni.TOOLS));
// 初始化播放器
let player = new KMediaUni({
selector: '#video',
loading: true,
showMessage: true,
request: {
silentConnection: true,
},
control: {
hideControlsBar: false,
tools: Object.values(KMediaUni.TOOLS)
// tools: ['play']
}
});
function loadVideo() {
let gbid = document.getElementById("gbid").value;
if (!gbid) {
return;
}
player.loadVideo({
src: {
websocketUrl: wsUrl,
devId: gbid
},
transport: KMediaUni.MODE.WEBRTC,
autoplay: true
});
}
// 初始化播放器
let player1 = new KMediaUni({
selector: '#video1',
loading: true,
showMessage: true,
request: {
silentConnection: true,
},
control: {
hideControlsBar: false,
tools: Object.values(KMediaUni.TOOLS)
// tools: ['play']
}
});
function loadVideo1() {
let gbid = document.getElementById("gbid1").value;
if (!gbid) {
return;
}
player1.loadVideo({
src: {
websocketUrl: wsUrl,
devId: gbid
},
transport: KMediaUni.MODE.WEBRTC,
autoplay: true
});
}
// 初始化播放器
let player2 = new KMediaUni({
selector: '#video2',
loading: true,
showMessage: true,
request: {
silentConnection: true,
},
control: {
hideControlsBar: false,
tools: Object.values(KMediaUni.TOOLS)
// tools: ['play']
}
});
function loadVideo2() {
let gbid = document.getElementById("gbid2").value;
if (!gbid) {
return;
}
player2.loadVideo({
src: {
websocketUrl: wsUrl,
devId: gbid
},
transport: KMediaUni.MODE.WEBRTC,
autoplay: true
});
}
// 初始化播放器
let player3 = new KMediaUni({
selector: '#video3',
loading: true,
showMessage: true,
request: {
silentConnection: true,
},
control: {
hideControlsBar: false,
tools: Object.values(KMediaUni.TOOLS)
// tools: ['play']
}
});
function loadVideo3() {
let gbid = document.getElementById("gbid3").value;
if (!gbid) {
return;
}
player3.loadVideo({
src: {
websocketUrl: wsUrl,
devId: gbid
},
transport: KMediaUni.MODE.WEBRTC,
autoplay: true
});
}
</script>
</body>
</html>
......@@ -31,7 +31,6 @@
.login-container{
margin-top: 150px;
border-radius: 10px;
height: 350px;
background-color: rgba(255, 255, 255, .3);
padding: 10px;
}
......@@ -68,8 +67,9 @@
<label for="password" class="form-label">密 码</label>
<input type="password" class="form-control" id="password">
</div>
<div class="mb-3 text-center">
<a type="button" class="btn btn-primary" id="loginSubmit">登 录</a>
<div class="mb-3 text-center" style="margin-top: 35px">
<a type="button" class="btn btn-primary" id="loginSubmit">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
<a class="btn btn-primary" href="${ctx}/upPass">修改密码</a>
</div>
</form>
</div>
......
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:include page="base.jsp"/>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="${ctx}/static/js/jquery.min.js"></script>
<script src="${ctx}/static/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="${ctx}/static/css/bootstrap.min.css" />
<link rel="stylesheet" type="text/css" href="${ctx}/static/css/modal.css" />
<title>上海市人民检察院</title>
<style>
body{
background-color: transparent;
}
</style>
</head>
<body>
<div class="modal fade" id="cameraModal" tabindex="-1" role="dialog" aria-labelledby="cameraModalLabel"
aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="title">一号房间监控点情况</div>
<div class="modal-body">
<!-- 左侧文字 -->
<div style="width:15%;">
<!-- 这里放置动态加载的文本,例如摄像头信息 -->
<ul id="videos">
<li><img src="${ctx}/static/images/sp_icon.png"><span>监控1001</span></li>
<li><img src="${ctx}/static/images/sp_icon.png"><span>监控1002</span></li>
<li><img src="${ctx}/static/images/sp_icon.png"><span>监控1003</span></li>
<li><img src="${ctx}/static/images/sp_icon.png"><span>监控1004</span></li>
<li><img src="${ctx}/static/images/sp_icon.png"><span>监控1005</span></li>
</ul>
</div>
<!-- 右侧视频 -->
<div style="flex: 1;" id="cameraVideo">
<div id="new_data"></div>
<video width="100%" controls poster="${ctx}/static/images/sp_model.png">
<source src="视频文件路径/URL" type="video/mp4"> <!-- 修改为你的视频文件路径或URL -->
<!-- 加载摄像头视频流或者视频文件 -->
您的浏览器不支持 HTML5 video 标签。
</video>
</div>
</div>
</div>
</div>
</div>
<script>
$(function () {
var $modal = $('#cameraModal');
$('.modal-content .title').html('一号房间监控点情况');
// 假设每个摄像头的视频源可能不同,可以设置为动态获取
$('#cameraVideo source').attr('src', 'path_to_camera_video_source.mp4');
$('#cameraVideo video')[0].load();
// 隐藏模态框的关闭按钮和右上角的关闭按钮
$modal.find('.close').hide();
$modal.modal({
backdrop: 'static',
keyboard: false
});
// 显示模态框
$modal.modal('show');
})
</script>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
request.setAttribute("ctx", request.getContextPath());
%>
<html>
<head>
<title>监控业务平台-修改密码</title>
<link rel="stylesheet" href="${ctx}/static/css/bootstrap.min.css" />
<script src="${ctx}/static/js/jquery-1.8.1.min.js" type=text/javascript></script>
<script src="${ctx}/static/js/bootstrap.min.js" type="text/javascript"></script>
<style>
*{
font-family: 微软雅黑, serif;
}
html,body{
width: 100%;
height: 100%;
}
.app{
width: 100%;
height: 100%;
background-image: url(${ctx}/static/images/home_bj.png);
}
.header-title{
text-align: center;
color: #fff;
}
.header-title h2{
line-height: 150px;
}
.login-container{
margin-top: 150px;
border-radius: 10px;
background-color: rgba(255, 255, 255, .3);
padding: 10px;
}
.box-title{
color: #fff;
font-size: 1.5rem;
}
.loginForm{
margin-top: 25px;
padding: 10px 50px;
}
.form-label{
color: #fff;
}
</style>
</head>
<body>
<div class="app">
<div class="header-title">
<h2>监控业务平台</h2>
</div>
<div class="container">
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-6">
<div class="login-container">
<div class="box-title text-center">修改密码</div>
<form class="loginForm">
<div class="mb-3">
<label for="loginName" class="form-label">账 号</label>
<input type="text" class="form-control" id="loginName">
</div>
<div class="mb-3">
<label for="oldPass" class="form-label">旧密码</label>
<input type="password" class="form-control" id="oldPass">
</div>
<div class="mb-3">
<label for="newPass" class="form-label">新密码</label>
<input type="password" class="form-control" id="newPass">
</div>
<div class="mb-3">
<label for="newPass1" class="form-label">确认新密码</label>
<input type="password" class="form-control" id="newPass1">
</div>
<div class="mb-3 text-center" style="margin-top: 35px">
<a type="button" class="btn btn-primary" id="upPassSubmit">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
<a type="button" class="btn btn-primary" href="${ctx}/login">返回登录</a>
</div>
</form>
</div>
</div>
<div class="col-md-3"></div>
</div>
</div>
</div>
<script>
let ctx = '${ctx}';
$(function () {
// 监听登录点击
$("#upPassSubmit").click(function () {
submitHandle();
})
$(document).keydown(function(event){
if(event.keyCode === 13){
submitHandle();
}
});
function submitHandle() {
let loginName = $("#loginName").val();
let oldPass = $("#oldPass").val();
let newPass = $("#newPass").val();
let newPass1 = $("#newPass1").val();
if ((!loginName) || (!oldPass) || (!newPass) || (!newPass1)) {
alert('请确保每项值不能为空!');
return;
}
if (newPass !== newPass1) {
alert('新密码两次输入不一致!');
return;
}
$.ajax({
url: ctx + '/upPass',
type: 'post',
data: {loginName: loginName, oldPass: oldPass, newPass: newPass},
dataType: 'json',
success: function (res) {
if (res.success) {
window.location.href = ctx;
return;
}
alert(res.message);
}
})
}
})
</script>
</body>
</html>
......@@ -288,4 +288,10 @@ $(document).on('click', '#payerhf', function () {
$(document).on('click', '#ishf', function () {
//加载回放
VideoPlayer.loadVideo();
})
$(document).on('click', '#isLive', function () {
if (VideoPlayer.gbid) {
VideoPlayer.show(VideoPlayer.gbid);
}
})
\ No newline at end of file
package com.ces.test;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.ces.web.device.entity.DeviceInfo;
import com.ces.web.device.service.IDeviceService;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.StringUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
@SpringBootTest
@RunWith(SpringRunner.class)
public class ExcelImportTest {
private final String basePath = "D:\\guangdian\\jcy_monitor\\src\\main\\resources\\excel";
private Logger logger = LoggerFactory.getLogger(ExcelImportTest.class);
@Autowired
IDeviceService deviceService;
/**
* 总医院
*/
@Test
public void importZongyiyuan(){
File baseDir = new File(basePath + "\\zongyiyuan");
File[] fileList = baseDir.listFiles();
importDmdb(fileList);
}
/**
* 新收犯
*/
@Test
public void importXinshoufan(){
File baseDir = new File(basePath + "\\xinshoufan");
File[] fileList = baseDir.listFiles();
importDmdb(fileList);
}
/**
* 青浦
*/
@Test
public void importQingpu(){
File baseDir = new File(basePath+"\\qingpu");
File[] fileList = baseDir.listFiles();
importDmdb(fileList);
}
private void importDmdb(File[] fileList) {
try {
for (File file : fileList) {
InputStream in = new FileInputStream(file);
ExcelReader excelReader = ExcelUtil.getReader(in);
Sheet sheet = excelReader.getWorkbook().getSheetAt(0);
int rows = sheet.getPhysicalNumberOfRows();
for (int r = sheet.getFirstRowNum() + 1; r < rows; r++) {
Row row = sheet.getRow(r);
String col62 = row.getCell(62) == null ? "" : row.getCell(62).getStringCellValue();
String col66 = row.getCell(66) == null ? "" : row.getCell(66).getStringCellValue();
//监狱名称
String prisonName = "";
//楼名
String buildName = "";
//监区名
String areaName = "";
//楼层
String floor = "";
//地点
String place = "";
//国标id
String gbId = "";
if (!StringUtils.isEmpty(col62)) {
String[] splitArr = col62.split("-");
int splitLength = splitArr.length;
prisonName = splitArr[0] + "-" + splitArr[1];
int readIndex = 2;
for (int i = 2; i < splitLength; i++) {
if (i == 2 && splitArr[i].contains("监区")) {
areaName = splitArr[i];
readIndex = i;
} else if (i == 2 && !splitArr[i].contains("监区")) {
buildName = splitArr[i];
readIndex = i;
}
if ((splitArr[i].contains("楼") || splitArr[i].contains("F")) && splitArr[i].length() == 2) {
floor = splitArr[i];
readIndex++;
}
}
for (int j = readIndex + 1; j < splitLength; j++) {
place += splitArr[j] + "-";
}
if (!StringUtils.isEmpty(place)) {
place = place.substring(0, place.length() - 1);
}
}
if (!StringUtils.isEmpty(col66)) {
gbId = col66;
}
if (!StringUtils.isEmpty(prisonName) || !StringUtils.isEmpty(buildName) || !StringUtils.isEmpty(areaName)
|| !StringUtils.isEmpty(floor) || !StringUtils.isEmpty(place) || !StringUtils.isEmpty(gbId)) {
DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.setPrisonName(prisonName);
deviceInfo.setBuildName(buildName);
deviceInfo.setAreaName(areaName);
deviceInfo.setFloor(floor);
deviceInfo.setPlace(place);
deviceInfo.setGbId(gbId);
deviceService.save(deviceInfo);
logger.info("开始导入文件名={},查询到第{}/{}行:监狱名称={},楼名={},监区名={},楼层={},地点={},国标id={}", file.getName(), r + 1, rows, prisonName,
buildName, areaName, floor, place, gbId);
}
}
}
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
}
}
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