导入导出

detached
王宇航 2024-01-17 12:56:46 +08:00
parent 78870baf7d
commit 363f046374
47 changed files with 1583 additions and 444 deletions

View File

@ -66,6 +66,8 @@ public class SysDiscernController extends BaseController {
primaryRadarData1.setType("车架");
} else if (primaryRadarData1.getLadleNumber().contains("铁")) {
primaryRadarData1.setType("铁包");
}else {
primaryRadarData1.setType(null);
}
}

View File

@ -16,6 +16,7 @@ import com.ruoyi.framework.shiro.util.AuthorizationUtils;
import com.ruoyi.system.service.*;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
@ -100,4 +101,47 @@ public class NormalIdentifierController extends BaseController
identifier.setUpdateBy(getLoginName());
return toAjax(identifierService.updateNormalIdentifier(identifier));
}
@PostMapping("/remove")
@ResponseBody
public AjaxResult remove(String ids)
{
return toAjax(identifierService.deleteRadarByIds(ids));
}
@PostMapping("/export")
@ResponseBody
public AjaxResult export(SysIdentifier sysIdentifier)
{
List<SysIdentifier> list = identifierService.selectNormalIdentifierList(sysIdentifier);;
List<NormalExcel> collect = list.stream().map(identifier -> {
NormalExcel normalExcel = new NormalExcel();
BeanUtils.copyProperties(identifier, normalExcel);
return normalExcel;
}
).collect(Collectors.toList());
ExcelUtil<NormalExcel> util = new ExcelUtil<NormalExcel>(NormalExcel.class);
return util.exportExcel(collect, "常温标识器配置");
}
@GetMapping("/importTemplate")
@ResponseBody
public AjaxResult importTemplate()
{
ExcelUtil<NormalExcel> util = new ExcelUtil<NormalExcel>(NormalExcel.class);
return util.importTemplateExcel("常温标识器配置");
}
@PostMapping("/importData")
@ResponseBody
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
{
ExcelUtil<NormalExcel> util = new ExcelUtil<NormalExcel>(NormalExcel.class);
List<NormalExcel> normalList = util.importExcel(file.getInputStream());
String message = identifierService.importNormalData(normalList, updateSupport);
return AjaxResult.success(message);
}
}

View File

@ -28,6 +28,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.net.Inet4Address;
import java.util.*;
import java.util.concurrent.CompletableFuture;
@ -80,6 +81,7 @@ public class RadarStatusController
public void run() {
try {
for (SysRadar radar : radarList) {
// ModbusResponse modbusResponse = new ModbusResponse();
ModbusMaster master = ModbusUtils.getSlave(radar.getRadarIp(), 23);
System.out.println(radar.getRadarIp());
ModbusResponse modbusResponse = ModbusUtils.holdingRegister();
@ -87,14 +89,19 @@ public class RadarStatusController
System.out.println(modbusResponse);
String tag = modbusResponse.getTagId();
PrimaryRadarData primaryRadarData = new PrimaryRadarData();
if (!"0".equals(modbusResponse.getTagId())) {
SysIdentifier sysIdentifier = identifierService.selectIdentifierByTag(tag);
primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber());
}
SysIdentifier sysIdentifier = new SysIdentifier();
BeanUtils.copyProperties(modbusResponse,primaryRadarData);
primaryRadarData.setRadarLocation(radar.getRadarLocation());
primaryRadarData.setRadarIp(radar.getRadarIp());
if (!"0".equals(modbusResponse.getTagId())) {
sysIdentifier = identifierService.selectIdentifierByTag(tag);
primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber());
primaryRadarData.setRadarLocation(radar.getRadarLocation());
primaryRadarData.setRadarIp(radar.getRadarIp());
}else {
primaryRadarData.setLadleNumber(null);
primaryRadarData.setRadarLocation(null);
primaryRadarData.setRadarIp(radar.getRadarIp());
}
String ip = Inet4Address.getLocalHost().getHostAddress();
if (modbusResponse.getValue4()!=null && !"0".equals(modbusResponse.getValue4())) {
primaryRadarDataService.insertPrimaryRadarData(primaryRadarData);
}
@ -105,11 +112,10 @@ public class RadarStatusController
System.err.println("从串口读取失败:" + "连接超时");
}
e.printStackTrace();
connectionStatus.connected= false;
}
}
};
timer.scheduleAtFixedRate(task, 1, 100);
timer.scheduleAtFixedRate(task, 1, 1000);
return responses;
});
@ -128,6 +134,8 @@ public class RadarStatusController
}
rspData.setRows(radarList.subList(pageNum, pageSize));
rspData.setTotal(radarList.size());
// RadarStatusWebSocket.sendToAll(rspData);
return rspData;
}

View File

@ -16,6 +16,7 @@ import com.ruoyi.framework.shiro.util.AuthorizationUtils;
import com.ruoyi.system.service.*;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
@ -100,4 +101,46 @@ public class SysIdentifierController extends BaseController
identifier.setUpdateBy(getLoginName());
return toAjax(iSysIdentifierService.updateUser(identifier));
}
@PostMapping("/remove")
@ResponseBody
public AjaxResult remove(String ids)
{
return toAjax(iSysIdentifierService.deleteRadarByIds(ids));
}
@PostMapping("/export")
@ResponseBody
public AjaxResult export(SysIdentifier sysIdentifier)
{
List<SysIdentifier> list = iSysIdentifierService.selectIdentifierList(sysIdentifier);;
List<IdentifierExcel> collect = list.stream().map(identifier -> {
IdentifierExcel normalExcel = new IdentifierExcel();
BeanUtils.copyProperties(identifier, normalExcel);
return normalExcel;
}
).collect(Collectors.toList());
ExcelUtil<IdentifierExcel> util = new ExcelUtil<IdentifierExcel>(IdentifierExcel.class);
return util.exportExcel(collect, "高温标识器配置");
}
@GetMapping("/importTemplate")
@ResponseBody
public AjaxResult importTemplate()
{
ExcelUtil<IdentifierExcel> util = new ExcelUtil<IdentifierExcel>(IdentifierExcel.class);
return util.importTemplateExcel("常温标识器配置");
}
@PostMapping("/importData")
@ResponseBody
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
{
ExcelUtil<IdentifierExcel> util = new ExcelUtil<IdentifierExcel>(IdentifierExcel.class);
List<IdentifierExcel> identifierList = util.importExcel(file.getInputStream());
String message = iSysIdentifierService.importData(identifierList, updateSupport);
return AjaxResult.success(message);
}
}

View File

@ -0,0 +1,49 @@
package com.ruoyi.web.controller.system;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysRadar;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.service.ISysRadarService;
import com.ruoyi.system.service.ISysUserService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*
* @author ruoyi
*/
@Controller
@RequestMapping("/system/logo")
public class SysLogoController extends BaseController
{
private String prefix = "system/logo";
@Autowired
private ISysUserService userService;
@GetMapping()
public String user()
{
return prefix + "/logo";
}
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(SysUser user)
{
startPage();
List<SysUser> list = userService.selectUserList(user);
return getDataTable(list);
}
}

View File

@ -73,10 +73,10 @@ public class SysPoliceController extends BaseController
*/
@PostMapping("/add")
@ResponseBody
public AjaxResult addSave(@Validated SysPolice sysPolice)
public AjaxResult addSave(@Validated SysRadar sysPolice)
{
sysPolice.setCreateBy(getLoginName());
return toAjax(sysPoliceService.insertSysPolice(sysPolice));
return toAjax(radarService.insertRadar(sysPolice));
}
/**

View File

@ -130,17 +130,10 @@ public class SysProfileController extends BaseController
{
SysUser currentUser = getSysUser();
currentUser.setUserName(user.getUserName());
currentUser.setLoginName(user.getLoginName());
currentUser.setEmail(user.getEmail());
currentUser.setPhonenumber(user.getPhonenumber());
currentUser.setSex(user.getSex());
if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser))
{
return error("修改用户'" + currentUser.getLoginName() + "'失败,手机号码已存在");
}
else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser))
{
return error("修改用户'" + currentUser.getLoginName() + "'失败,邮箱账号已存在");
}
if (userService.updateUserInfo(currentUser) > 0)
{
setSysUser(userService.selectUserById(currentUser.getUserId()));

View File

@ -0,0 +1,177 @@
package com.ruoyi.web.controller.system;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.MimeTypeUtils;
import com.ruoyi.framework.shiro.service.SysPasswordService;
import com.ruoyi.system.service.ISysUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
*
*
* @author ruoyi
*/
@Controller
@RequestMapping("/system/user/profileEdit")
public class SysProfileEditController extends BaseController
{
private static final Logger log = LoggerFactory.getLogger(SysProfileEditController.class);
private String prefix = "system/user/profileEdit";
@Autowired
private ISysUserService userService;
@Autowired
private SysPasswordService passwordService;
/**
*
*/
@GetMapping()
public String profile(ModelMap mmap)
{
SysUser user = getSysUser();
mmap.put("user", user);
mmap.put("roleGroup", userService.selectUserRoleGroup(user.getUserId()));
mmap.put("postGroup", userService.selectUserPostGroup(user.getUserId()));
return prefix + "/profileEdit";
}
@GetMapping("/checkPassword")
@ResponseBody
public boolean checkPassword(String password)
{
SysUser user = getSysUser();
return passwordService.matches(user, password);
}
@GetMapping("/resetPwd")
public String resetPwd(ModelMap mmap)
{
SysUser user = getSysUser();
mmap.put("user", userService.selectUserById(user.getUserId()));
return prefix + "/resetPwd";
}
@Log(title = "重置密码", businessType = BusinessType.UPDATE)
@PostMapping("/resetPwd")
@ResponseBody
public AjaxResult resetPwd(String oldPassword, String newPassword)
{
SysUser user = getSysUser();
if (!passwordService.matches(user, oldPassword))
{
return error("修改密码失败,旧密码错误");
}
if (passwordService.matches(user, newPassword))
{
return error("新密码不能与旧密码相同");
}
user.setSalt(ShiroUtils.randomSalt());
user.setPassword(passwordService.encryptPassword(user.getLoginName(), newPassword, user.getSalt()));
user.setPwdUpdateDate(DateUtils.getNowDate());
if (userService.resetUserPwd(user) > 0)
{
setSysUser(userService.selectUserById(user.getUserId()));
return success();
}
return error("修改密码异常,请联系管理员");
}
/**
*
*/
@GetMapping("/edit")
public String edit(ModelMap mmap)
{
SysUser user = getSysUser();
mmap.put("user", userService.selectUserById(user.getUserId()));
return prefix + "/edit";
}
/**
*
*/
@GetMapping("/avatar")
public String avatar(ModelMap mmap)
{
SysUser user = getSysUser();
mmap.put("user", userService.selectUserById(user.getUserId()));
return prefix + "/avatar";
}
/**
*
*/
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ResponseBody
public AjaxResult update(SysUser user)
{
SysUser currentUser = getSysUser();
currentUser.setUserName(user.getUserName());
currentUser.setEmail(user.getEmail());
currentUser.setPhonenumber(user.getPhonenumber());
currentUser.setSex(user.getSex());
if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser))
{
return error("修改用户'" + currentUser.getLoginName() + "'失败,手机号码已存在");
}
else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser))
{
return error("修改用户'" + currentUser.getLoginName() + "'失败,邮箱账号已存在");
}
if (userService.updateUserInfo(currentUser) > 0)
{
setSysUser(userService.selectUserById(currentUser.getUserId()));
return success();
}
return error();
}
/**
*
*/
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
@PostMapping("/updateAvatar")
@ResponseBody
public AjaxResult updateAvatar(@RequestParam("avatarfile") MultipartFile file)
{
SysUser currentUser = getSysUser();
try
{
if (!file.isEmpty())
{
String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION);
currentUser.setAvatar(avatar);
if (userService.updateUserInfo(currentUser) > 0)
{
setSysUser(userService.selectUserById(currentUser.getUserId()));
return success();
}
}
return error();
}
catch (Exception e)
{
log.error("修改头像失败!", e);
return error(e.getMessage());
}
}
}

View File

@ -4,10 +4,7 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.Ztree;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysRadar;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.*;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.BusinessType;
@ -19,6 +16,7 @@ import com.ruoyi.framework.shiro.util.AuthorizationUtils;
import com.ruoyi.system.service.*;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
@ -105,4 +103,46 @@ public class SysRadarController extends BaseController
return toAjax(radarService.updateUser(radar));
}
@PostMapping("/remove")
@ResponseBody
public AjaxResult remove(String ids)
{
return toAjax(radarService.deleteRadarByIds(ids));
}
@PostMapping("/export")
@ResponseBody
public AjaxResult export(SysRadar sysRadar)
{
List<SysRadar> list = radarService.selectRadarList(sysRadar);;
List<RadarExcel> collect = list.stream().map(identifier -> {
RadarExcel normalExcel = new RadarExcel();
BeanUtils.copyProperties(identifier, normalExcel);
return normalExcel;
}
).collect(Collectors.toList());
ExcelUtil<RadarExcel> util = new ExcelUtil<RadarExcel>(RadarExcel.class);
return util.exportExcel(collect, "雷达配置");
}
@GetMapping("/importTemplate")
@ResponseBody
public AjaxResult importTemplate()
{
ExcelUtil<RadarExcel> util = new ExcelUtil<RadarExcel>(RadarExcel.class);
return util.importTemplateExcel("雷达配置");
}
@PostMapping("/importData")
@ResponseBody
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
{
ExcelUtil<RadarExcel> util = new ExcelUtil<RadarExcel>(RadarExcel.class);
List<RadarExcel> radarList = util.importExcel(file.getInputStream());
String message = radarService.importData(radarList, updateSupport);
return AjaxResult.success(message);
}
}

View File

@ -1,12 +1,15 @@
package com.ruoyi.web.core.config;
import com.ruoyi.common.core.domain.entity.DataResponse;
import com.ruoyi.common.core.domain.entity.PrimaryRadarData;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@ServerEndpoint(value="/websocket",configurator = WebSocketConfig.class)
@ -35,10 +38,10 @@ public class RadarStatusWebSocket {
}
}
public static void sendToAll(PrimaryRadarData primaryRadarData) {
public static void sendToAll(TableDataInfo dataResponse) {
for (Session session : sessions) {
try {
session.getBasicRemote().sendObject(primaryRadarData);
session.getBasicRemote().sendObject(dataResponse);
} catch (IOException | EncodeException e) {
e.printStackTrace();
}

View File

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

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志存放路径 -->
<property name="log.path" value="/Users/wyh/Documents/code/RuoYi-master/logs" />
<property name="log.path" value="D:/project/logs" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -28,8 +28,10 @@
</div>
<a th:href="@{/index}">
<li class="logo hidden-xs">
<img th:src="@{/img/favicon.ico}" class="logo-img">
<span class="logo-lg">第一钢铁厂</span>
<a class="menuItem noactive" title="个人中心" th:href="@{/system/user/profile}">
<img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/favicon.ico} : @{${user.avatar}}" class="logo-img">
</a>
<span class="logo-lg">[[${user.userName}]]</span>
</li>
</a>
<div class="sidebar-collapse">
@ -74,113 +76,6 @@
</li>
</ul>
</li>
<!-- <li th:if="${demoEnabled}">-->
<!-- <a href="javascript:;"><i class="fa fa-desktop"></i><span class="nav-label">实例演示</span><span class="fa arrow"></span></a>-->
<!-- <ul class="nav nav-second-level collapse">-->
<!-- <li> <a>表单<span class="fa arrow"></span></a>-->
<!-- <ul class="nav nav-third-level">-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/button}">按钮</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/grid}">栅格</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/select}">下拉框</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/timeline}">时间轴</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/progress_bars}">进度条</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/basic}">基本表单</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/cards}">卡片列表</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/jasny}">功能扩展</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/sortable}">拖动排序</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/invoice}">单据打印</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/labels_tips}">标签 & 提示</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/tabs_panels}">选项卡 & 面板</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/validate}">表单校验</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/wizard}">表单向导</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/upload}">文件上传</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/datetime}">日期和时间</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/summernote}">富文本编辑器</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/duallistbox}">左右互选组件</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/autocomplete}">搜索自动补全</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/cxselect}">多级联动下拉</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/form/localrefresh}">Ajax局部刷新</a></li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- <li> <a>表格<span class="fa arrow"></span></a>-->
<!-- <ul class="nav nav-third-level">-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/search}">查询条件</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/footer}">数据汇总</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/groupHeader}">组合表头</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/export}">表格导出</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/exportSelected}">导出选择列</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/remember}">翻页记住选择</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/pageGo}">跳转至指定页</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/params}">自定义查询参数</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/multi}">初始多表格</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/button}">点击按钮加载表格</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/data}">直接加载表格数据</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/fixedColumns}">表格冻结列</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/event}">自定义触发事件</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/headerStyle}">表格标题格式化</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/detail}">表格细节视图</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/child}">表格父子视图</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/image}">表格图片预览</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/curd}">动态增删改查</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/reorderRows}">表格行拖拽操作</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/reorderColumns}">表格列拖拽操作</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/resizable}">表格列宽拖动</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/editable}">表格行内编辑</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/subdata}">主子表提交</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/refresh}">表格自动刷新</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/print}">表格打印配置</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/dynamicColumns}">表格动态列</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/customView}">自定义视图分页</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/asynTree}">异步加载表格树</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- <li> <a>弹框<span class="fa arrow"></span></a>-->
<!-- <ul class="nav nav-third-level">-->
<!-- <li><a class="menuItem" th:href="@{/demo/modal/dialog}">模态窗口</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/modal/layer}">弹层组件</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/modal/table}">弹层表格</a></li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- <li> <a>操作<span class="fa arrow"></span></a>-->
<!-- <ul class="nav nav-third-level">-->
<!-- <li><a class="menuItem" th:href="@{/demo/operate/table}">表格</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/operate/other}">其他</a></li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- <li> <a>报表<span class="fa arrow"></span></a>-->
<!-- <ul class="nav nav-third-level">-->
<!-- <li><a class="menuItem" th:href="@{/demo/report/echarts}">百度ECharts</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/report/peity}">peity</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/report/sparkline}">sparkline</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/report/metrics}">图表组合</a></li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- <li> <a>图标<span class="fa arrow"></span></a>-->
<!-- <ul class="nav nav-third-level">-->
<!-- <li><a class="menuItem" th:href="@{/demo/icon/fontawesome}">Font Awesome</a></li>-->
<!-- <li><a class="menuItem" th:href="@{/demo/icon/glyphicons}">Glyphicons</a></li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- <li>-->
<!-- <a href="javascript:;"><i class="fa fa-sitemap"></i>四层菜单<span class="fa arrow"></span></a>-->
<!-- <ul class="nav nav-third-level collapse">-->
<!-- <li>-->
<!-- <a href="javascript:;" id="damian">三级菜单1<span class="fa arrow"></span></a>-->
<!-- <ul class="nav nav-third-level">-->
<!-- <li>-->
<!-- <a href="javascript:;">四级菜单1</a>-->
<!-- </li>-->
<!-- <li>-->
<!-- <a href="javascript:;">四级菜单2</a>-->
<!-- </li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- <li><a href="javascript:;">三级菜单2</a></li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- </ul>-->
<!-- </li>-->
</ul>
</div>
</nav>
@ -196,38 +91,6 @@
</a>
</div>
<ul class="nav navbar-top-links navbar-right welcome-message">
<!-- <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="开发文档" href="http://doc.ruoyi.vip/ruoyi" target="_blank"><i class="fa fa-question-circle"></i></a></li>-->
<!-- <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="锁定屏幕" href="javascript:;" id="lockScreen"><i class="fa fa-lock"></i></a></li>-->
<!-- <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="全屏显示" href="javascript:;" id="fullScreen"><i class="fa fa-arrows-alt"></i></a></li>-->
<!-- <li class="dropdown user-menu">-->
<!-- <a href="javascript:void(0)" class="dropdown-toggle" data-hover="dropdown">-->
<!-- <img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="this.src='img/profile.jpg'" class="user-image">-->
<!-- <span class="hidden-xs">[[${#strings.defaultString(user.userName, '-')}]]</span>-->
<!-- </a>-->
<!-- <ul class="dropdown-menu">-->
<!-- <li class="mt5">-->
<!-- <a th:href="@{/system/user/profile}" class="menuItem noactive">-->
<!-- <i class="fa fa-user"></i> 个人中心</a>-->
<!-- </li>-->
<!-- <li>-->
<!-- <a onclick="resetPwd()">-->
<!-- <i class="fa fa-key"></i> 修改密码</a>-->
<!-- </li>-->
<!-- <li>-->
<!-- <a onclick="switchSkin()">-->
<!-- <i class="fa fa-dashboard"></i> 切换主题</a>-->
<!-- </li>-->
<!-- <li>-->
<!-- <a onclick="toggleMenu()">-->
<!-- <i class="fa fa-toggle-off"></i> 横向菜单</a>-->
<!-- </li>-->
<!-- <li class="divider"></li>-->
<!-- <li>-->
<!-- <a th:href="@{logout}">-->
<!-- <i class="fa fa-sign-out"></i> 退出登录</a>-->
<!-- </li>-->
<!-- </ul>-->
<!-- </li>-->
</ul>
</nav>
</div>

View File

@ -42,22 +42,6 @@
</div>
</form>
</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>
</div>
@ -91,10 +75,14 @@
title: '序号'
},
{
field: 'updateTime',
field: 'createTime',
title: '时间',
sortable: true
},
{
field: 'tagId',
title: '标识器ID',
},
{
field: 'value4',
title: '信号值',

View File

@ -12,7 +12,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">标识器ID1</label>
<div class="col-sm-8">
<input name="identifierId" placeholder="请输入高温标识器ID1" class="form-control" type="text" maxlength="30" required>
<input name="identifierId" placeholder="请输入高温标识器ID1" class="form-control" type="text" maxlength="30">
</div>
</div>
</div>
@ -22,7 +22,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">标识器ID2</label>
<div class="col-sm-8">
<input name="identifierTwo" placeholder="请输入高温标识器ID2" class="form-control" type="text" maxlength="30" required>
<input name="identifierTwo" placeholder="请输入高温标识器ID2" class="form-control" type="text" maxlength="30">
</div>
</div>
</div>
@ -68,7 +68,7 @@
$.operate.saveTab(prefix + "/add", data);
}
//关闭弹窗
closeItem();
// closeItem();
//刷新父页面
parent.location.reload();
}

View File

@ -13,7 +13,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">标识器ID1</label>
<div class="col-sm-8">
<input name="identifierId" placeholder="请输入标识器ID1" class="form-control" type="text" maxlength="30" th:field="*{identifierId}" required>
<input name="identifierId" placeholder="请输入标识器ID1" class="form-control" type="text" maxlength="30" th:field="*{identifierId}">
</div>
</div>
</div>
@ -23,7 +23,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">标识器ID2</label>
<div class="col-sm-8">
<input name="identifierTwo" placeholder="请输入标识器ID2" class="form-control" type="text" maxlength="30" th:field="*{identifierTwo}"required>
<input name="identifierTwo" placeholder="请输入标识器ID2" class="form-control" type="text" maxlength="30" th:field="*{identifierTwo}">
</div>
</div>
</div>
@ -33,7 +33,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">铁包号:</label>
<div class="col-sm-8">
<input name="ladleNumber" placeholder="请输入铁包号" class="form-control" type="text" maxlength="30" th:field="*{ladleNumber}" required>
<input name="ladleNumber" placeholder="请输入铁包号" class="form-control" type="text" maxlength="30" th:field="*{ladleNumber}">
</div>
</div>
</div>
@ -61,7 +61,7 @@
var data = $("#form-user-edit").serializeArray();
$.operate.saveTab(prefix + "/edit", data);
}
closeItem();
// closeItem();
//刷新父页面
parent.location.reload();
}

View File

@ -53,6 +53,12 @@
<a class="btn btn-success" onclick="$.operate.add()" >
<i class="fa fa-plus"></i> 新增
</a>
<a class="btn btn-info" onclick="$.table.importExcel()" >
<i class="fa fa-upload"></i> 导入
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()">
<i class="fa fa-download"></i> 导出
</a>
</div>
<div class="col-sm-12 select-table table-striped">
@ -101,7 +107,7 @@
importTemplateUrl: prefix + "/importTemplate",
sortName: "createTime",
sortOrder: "desc",
modalName: "雷达",
modalName: "高温标识器配置",
columns: [{
checkbox: true
},
@ -129,7 +135,7 @@
if (row.userId != 1) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
// actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>删除</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a> ');
// var more = [];
// more.push("<a class='btn btn-default btn-xs " + resetPwdFlag + "' href='javascript:void(0)' onclick='resetPwd(" + row.userId + ")'><i class='fa fa-key'></i>重置密码</a> ");
// more.push("<a class='btn btn-default btn-xs " + editFlag + "' href='javascript:void(0)' onclick='authRole(" + row.userId + ")'><i class='fa fa-check-square-o'></i>分配角色</a>");
@ -235,7 +241,7 @@
<div class="col-xs-offset-1">
<input type="file" id="file" name="file"/>
<div class="mt10 pt5">
<input type="checkbox" id="updateSupport" name="updateSupport" title="如果登录账户已经存在,更新这条数据。"> 是否更新已经存在的用户数据
<input type="checkbox" id="updateSupport" name="updateSupport" title="如果数据已经存在,更新这条数据。"> 是否更新已经存在的数据
&nbsp; <a onclick="$.table.importTemplate()" class="btn btn-default btn-xs"><i class="fa fa-file-excel-o"></i> 下载模板</a>
</div>
<font color="red" class="pull-left mt10">

View File

@ -0,0 +1,35 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('用户个人信息')" />
<style type="text/css">.user-info-head{position:relative;display:inline-block;}.user-info-head:hover:after{content:'\f030';position:absolute;left:0;right:0;top:0;bottom:0;color:#eee;background:rgba(0,0,0,0.5);font-family:FontAwesome;font-size:24px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;cursor:pointer;line-height:110px;border-radius:50%;}</style>
</head>
<body class="fixed-sidebar full-height-layout gray-bg" th:classappend="${isMobile} ? 'canvas-menu'" style="overflow: hidden">
<div id="wrapper">
<nav class="navbar-default navbar-static-side" role="navigation">
<div class="sidebar-collapse">
<li>-->
<div class="user-panel">
<a class="menuItem noactive" title="个人中心" th:href="@{/system/user/profile}">
<div class="hide" th:text="个人中心"></div>
<div class="pull-left image">
<img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="this.src='img/profile.jpg'" class="img-circle" alt="User Image">
</div>
</a>
<div class="pull-left info">
<p>[[${user.loginName}]]</p>
<a href="javascript:;"><i class="fa fa-circle text-success"></i> 在线</a>
<a th:href="@{logout}" style="padding-left:5px;"><i class="fa fa-sign-out text-danger"></i> 注销</a>
</div>
</div>
</li>
<li>
<a class="menuItem" th:href="@{/system/main}"><i class="fa fa-home"></i> <span class="nav-label">状态</span> </a>
</li>
</div>
</nav>
</div>
<th:block th:include="include :: footer" />
</body>
</html>

View File

@ -12,7 +12,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">标识器ID1</label>
<div class="col-sm-8">
<input name="identifierId" placeholder="请输入常温标识器ID1" class="form-control" type="text" maxlength="30" required>
<input name="identifierId" placeholder="请输入常温标识器ID1" class="form-control" type="text" maxlength="30">
</div>
</div>
</div>
@ -22,7 +22,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">标识器ID2</label>
<div class="col-sm-8">
<input name="identifierTwo" placeholder="请输入常温标识器ID2" class="form-control" type="text" maxlength="30" required>
<input name="identifierTwo" placeholder="请输入常温标识器ID2" class="form-control" type="text" maxlength="30">
</div>
</div>
</div>
@ -32,7 +32,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">标识器ID3</label>
<div class="col-sm-8">
<input name="identifierThree" placeholder="请输入常温标识器ID3" class="form-control" type="text" maxlength="30" required>
<input name="identifierThree" placeholder="请输入常温标识器ID3" class="form-control" type="text" maxlength="30">
</div>
</div>
</div>
@ -42,7 +42,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">标识器ID4</label>
<div class="col-sm-8">
<input name="identifierFour" placeholder="请输入常温标识器ID4" class="form-control" type="text" maxlength="30" required>
<input name="identifierFour" placeholder="请输入常温标识器ID4" class="form-control" type="text" maxlength="30">
</div>
</div>
</div>
@ -52,7 +52,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">铁包号:</label>
<div class="col-sm-8">
<input name="ladleNumber" placeholder="请输入铁包号" class="form-control" type="text" maxlength="30" required>
<input name="ladleNumber" placeholder="请输入铁包号" class="form-control" type="text" maxlength="30">
</div>
</div>
</div>
@ -88,7 +88,7 @@
$.operate.saveTab(prefix + "/add", data);
}
//关闭弹窗
closeItem();
// closeItem();
//刷新父页面
parent.location.reload();
}

View File

@ -13,7 +13,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">标识器ID1</label>
<div class="col-sm-8">
<input name="identifierId" placeholder="请输入常温标识器ID1" class="form-control" type="text" maxlength="30" th:field="*{identifierId}" required>
<input name="identifierId" placeholder="请输入常温标识器ID1" class="form-control" type="text" maxlength="30" th:field="*{identifierId}">
</div>
</div>
</div>
@ -23,7 +23,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">标识器ID2</label>
<div class="col-sm-8">
<input name="identifierTwo" placeholder="请输入常温标识器ID2" class="form-control" type="text" maxlength="30" th:field="*{identifierTwo}" required>
<input name="identifierTwo" placeholder="请输入常温标识器ID2" class="form-control" type="text" maxlength="30" th:field="*{identifierTwo}">
</div>
</div>
</div>
@ -33,7 +33,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">标识器ID3</label>
<div class="col-sm-8">
<input name="identifierThree" placeholder="请输入常温标识器ID3" class="form-control" type="text" maxlength="30" th:field="*{identifierThree}" required>
<input name="identifierThree" placeholder="请输入常温标识器ID3" class="form-control" type="text" maxlength="30" th:field="*{identifierThree}">
</div>
</div>
</div>
@ -43,7 +43,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">标识器ID4</label>
<div class="col-sm-8">
<input name="identifierFour" placeholder="请输入常温标识器ID4" class="form-control" type="text" maxlength="30" th:field="*{identifierFour}" required>
<input name="identifierFour" placeholder="请输入常温标识器ID4" class="form-control" type="text" maxlength="30" th:field="*{identifierFour}">
</div>
</div>
</div>
@ -53,7 +53,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">铁包号:</label>
<div class="col-sm-8">
<input name="ladleNumber" placeholder="请输入铁包号" class="form-control" type="text" maxlength="30" th:field="*{ladleNumber}" required>
<input name="ladleNumber" placeholder="请输入铁包号" class="form-control" type="text" maxlength="30" th:field="*{ladleNumber}">
</div>
</div>
</div>
@ -77,8 +77,8 @@
var data = $("#form-user-edit").serializeArray();
$.operate.saveTab(prefix + "/edit", data);
}
closeItem();
//刷新父页面
// closeItem();
// 刷新父页面
parent.location.reload();
}
</script>

View File

@ -31,6 +31,12 @@
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:user:add">
<i class="fa fa-plus"></i> 新增
</a>
<a class="btn btn-info" onclick="$.table.importExcel()" >
<i class="fa fa-upload"></i> 导入
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()">
<i class="fa fa-download"></i> 导出
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
@ -78,7 +84,7 @@
importTemplateUrl: prefix + "/importTemplate",
sortName: "createTime",
sortOrder: "desc",
modalName: "用户",
modalName: "常温标识器配置",
columns: [{
checkbox: true
},
@ -114,6 +120,7 @@
if (row.userId != 1) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a> ');
return actions.join('');
} else {
return "";
@ -124,22 +131,6 @@
$.table.init(options);
}
function queryDeptTree()
{
var url = ctx + "system/user/deptTreeData";
var options = {
url: url,
expandLevel: 2,
onClick : zOnClick
};
$.tree.init(options);
function zOnClick(event, treeId, treeNode) {
$("#deptId").val(treeNode.id);
$("#parentId").val(treeNode.pId);
$.table.search();
}
}
$('#btnExpand').click(function() {
$._tree.expandAll(true);
@ -157,34 +148,6 @@
queryDeptTree();
});
/* 自定义重置-表单重置/隐藏框/树节点选择色/搜索 */
function resetPre() {
resetDate();
$("#user-form")[0].reset();
$("#deptId").val("");
$("#parentId").val("");
$(".curSelectedNode").removeClass("curSelectedNode");
$.table.search();
}
/* 用户管理-部门 */
function dept() {
var url = ctx + "system/dept";
$.modal.openTab("部门管理", url);
}
/* 用户管理-重置密码 */
function resetPwd(userId) {
var url = prefix + '/resetPwd/' + userId;
$.modal.open("重置密码", url, '800', '300');
}
/* 用户管理-分配角色 */
function authRole(userId) {
var url = prefix + '/authRole/' + userId;
$.modal.openTab("用户分配角色", url);
}
/* 用户状态显示 */
function statusTools(row) {
if (row.status == 1) {
@ -194,19 +157,6 @@
}
}
/* 用户管理-停用 */
function disable(userId) {
$.modal.confirm("确认要停用用户吗?", function() {
$.operate.post(prefix + "/changeStatus", { "userId": userId, "status": 1 });
})
}
/* 用户管理启用 */
function enable(userId) {
$.modal.confirm("确认要启用用户吗?", function() {
$.operate.post(prefix + "/changeStatus", { "userId": userId, "status": 0 });
})
}
</script>
</body>
<!-- 导入区域 -->
@ -215,7 +165,7 @@
<div class="col-xs-offset-1">
<input type="file" id="file" name="file"/>
<div class="mt10 pt5">
<input type="checkbox" id="updateSupport" name="updateSupport" title="如果登录账户已经存在,更新这条数据。"> 是否更新已经存在的用户数据
<input type="checkbox" id="updateSupport" name="updateSupport" title="如果数据已经存在,更新这条数据。"> 是否更新已经存在的数据
&nbsp; <a onclick="$.table.importTemplate()" class="btn btn-default btn-xs"><i class="fa fa-file-excel-o"></i> 下载模板</a>
</div>
<font color="red" class="pull-left mt10">

View File

@ -12,7 +12,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">工位:</label>
<div class="col-sm-8">
<input name="station" placeholder="请输入工位" class="form-control" type="text" maxlength="30" required>
<input name="station" placeholder="请输入工位" class="form-control" type="text" maxlength="30" >
</div>
</div>
</div>
@ -20,9 +20,9 @@
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">报警值:</label>
<label class="col-sm-4 control-label is-required">报警值A</label>
<div class="col-sm-8">
<input name="alarmValue" placeholder="请输入报警值" class="form-control" type="text" maxlength="30" required>
<input name="alarmValue1" placeholder="请输入报警值A" class="form-control" type="text" maxlength="30" >
</div>
</div>
</div>
@ -30,9 +30,29 @@
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">预设报警值:</label>
<label class="col-sm-4 control-label is-required">报警值B</label>
<div class="col-sm-8">
<input name="presetValue" placeholder="请输入预设报警值" class="form-control" type="text" maxlength="30" required>
<input name="alarmValue2" placeholder="请输入报警值B" class="form-control" type="text" maxlength="30" >
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">报警值C</label>
<div class="col-sm-8">
<input name="alarmValue3" placeholder="请输入报警值C" class="form-control" type="text" maxlength="30" >
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">报警值D</label>
<div class="col-sm-8">
<input name="alarmValue4" placeholder="请输入报警值D" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
@ -68,7 +88,7 @@
$.operate.saveTab(prefix + "/add", data);
}
//关闭弹窗
closeItem();
// closeItem();
//刷新父页面
parent.location.reload();
}

View File

@ -77,7 +77,7 @@
var data = $("#form-user-edit").serializeArray();
$.operate.saveTab(prefix + "/edit", data);
}
closeItem();
// closeItem();
//刷新父页面
parent.location.reload();
}

View File

@ -11,9 +11,9 @@
<div class="row">
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success" onclick="$.operate.add()" >
<i class="fa fa-plus"></i> 新增
</a>
<!-- <a class="btn btn-success" onclick="$.operate.add()" >-->
<!-- <i class="fa fa-plus"></i> 新增-->
<!-- </a>-->
<!-- <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:user:edit">-->
<!-- <i class="fa fa-edit"></i> 修改-->
<!-- </a>-->

View File

@ -12,7 +12,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">雷达IP</label>
<div class="col-sm-8">
<input name="radarIp" placeholder="请输入雷达IP" class="form-control" type="text" maxlength="30" required>
<input name="radarIp" placeholder="请输入雷达IP" class="form-control" type="text" maxlength="30">
</div>
</div>
</div>
@ -22,7 +22,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">雷达位置/工位:</label>
<div class="col-sm-8">
<input name="radarLocation" placeholder="请输入雷达位置/工位" class="form-control" type="text" maxlength="30" required>
<input name="radarLocation" placeholder="请输入雷达位置/工位" class="form-control" type="text" maxlength="30">
</div>
</div>
</div>
@ -32,7 +32,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">工位代号:</label>
<div class="col-sm-8">
<input name="stationCode" placeholder="请输入工位代号" class="form-control" type="text" maxlength="30" required>
<input name="stationCode" placeholder="请输入工位代号" class="form-control" type="text" maxlength="30">
</div>
</div>
</div>
@ -42,7 +42,35 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">工序:</label>
<div class="col-sm-8">
<input name="sort" placeholder="请输入工序" class="form-control" type="text" maxlength="30" required>
<input name="sort" placeholder="请输入工序" class="form-control" type="text" maxlength="30">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">雷达ID</label>
<div class="col-sm-8">
<input name="radarId" placeholder="请输入雷达ID" class="form-control" type="text" maxlength="30">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">雷达天线号:</label>
<div class="col-sm-8">
<!-- <input name="radarNum" placeholder="请输入雷达天线号" class="form-control" type="text" maxlength="30">-->
<div class="col-sm-12">
<label class="check-box">
<input type="checkbox" name="radarNum" value="1" id="v1">1</label>
<label class="check-box">
<input type="checkbox" name="radarNum" value="2" id="v2">2</label>
<label class="check-box">
<input type="checkbox" name="radarNum" value="1,2" id="v3">全部</label>
</div>
</div>
</div>
</div>
@ -59,7 +87,10 @@
<th:block th:include="include :: footer" />
<th:block th:include="include :: select2-js" />
<script>
var prefix = ctx + "system/radar";
var prefix = ctx + "system/radar";
$("#form-radar-add").validate({
onkeyup: false,
@ -78,7 +109,7 @@
$.operate.saveTab(prefix + "/add", data);
}
//关闭弹窗
closeItem();
// closeItem();
//刷新父页面
parent.location.reload();
}
@ -104,12 +135,54 @@
$.modal.close(index);
}
$(function() {
$('#post').select2({
placeholder: "请选择岗位",
allowClear: true
});
})
const checkboxAll = document.getElementById("v3");
const checkbox1 = document.getElementById("v1");
const checkbox2 = document.getElementById("v2");
checkboxAll.addEventListener("change", function() {
checkbox1.checked = checkboxAll.checked;
checkbox2.checked = checkboxAll.checked;
// 将选中的复选框的值作为参数传递给后端
const selectedValues = [];
if (checkbox1.checked) {
selectedValues.push(checkbox1.value);
}
if (checkbox2.checked) {
selectedValues.push(checkbox2.value);
}
// 将selectedValues作为参数传递给后端
// 例如使用fetch发送POST请求
// fetch("your-backend-url", {
// method: "POST",
// body: JSON.stringify(selectedValues),
// headers: {
// "Content-Type": "application/json"
// }
// })
// .then(response => response.json())
// .then(data => {
// // 处理后端返回的数据
// console.log(data);
// })
// .catch(error => {
// // 处理错误
// console.error(error);
// });
});
checkbox1.addEventListener("change", function() {
if (!checkbox1.checked) {
checkboxAll.checked = false;
}
});
checkbox2.addEventListener("change", function() {
if (!checkbox2.checked) {
checkboxAll.checked = false;
}
});
</script>
</body>
</html>

View File

@ -13,7 +13,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">雷达Ip</label>
<div class="col-sm-8">
<input name="radarIp" placeholder="请输入雷达Ip" class="form-control" type="text" maxlength="30" th:field="*{radarIp}" required>
<input name="radarIp" placeholder="请输入雷达Ip" class="form-control" type="text" maxlength="30" th:field="*{radarIp}">
</div>
</div>
</div>
@ -23,7 +23,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">雷达位置/工位:</label>
<div class="col-sm-8">
<input name="radarLocation" placeholder="请输入雷达位置/工位" class="form-control" type="text" maxlength="30" th:field="*{radarLocation}"required>
<input name="radarLocation" placeholder="请输入雷达位置/工位" class="form-control" type="text" maxlength="30" th:field="*{radarLocation}">
</div>
</div>
</div>
@ -33,7 +33,7 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">工位代号:</label>
<div class="col-sm-8">
<input name="stationCode" placeholder="请输入工位代号" class="form-control" type="text" maxlength="30" th:field="*{stationCode}" required>
<input name="stationCode" placeholder="请输入工位代号" class="form-control" type="text" maxlength="30" th:field="*{stationCode}">
</div>
</div>
</div>
@ -43,12 +43,31 @@
<div class="form-group">
<label class="col-sm-4 control-label is-required">工序:</label>
<div class="col-sm-8">
<input name="sort" placeholder="请输入工序" class="form-control" type="text" maxlength="30" th:field="*{sort}" required>
<input name="sort" placeholder="请输入工序" class="form-control" type="text" maxlength="30" th:field="*{sort}">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">雷达ID</label>
<div class="col-sm-8">
<input name="radarId" placeholder="请输入雷达ID" class="form-control" type="text" maxlength="30" th:field="*{radarId}">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">雷达天线号:</label>
<div class="col-sm-8">
<input name="radarNum" placeholder="请输入雷达天线号" class="form-control" type="text" maxlength="30" th:field="*{radarNum}">
</div>
</div>
</div>
</div>
</form>
</div>
<!-- <div class="row">-->
@ -72,7 +91,7 @@
var data = $("#form-user-edit").serializeArray();
$.operate.saveTab(prefix + "/edit", data);
}
closeItem();
// closeItem();
//刷新父页面
parent.location.reload();
}

View File

@ -71,12 +71,12 @@
<!-- <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:user:remove">-->
<!-- <i class="fa fa-remove"></i> 删除-->
<!-- </a>-->
<!-- <a class="btn btn-info" onclick="$.table.importExcel()" shiro:hasPermission="system:user:import">-->
<!-- <i class="fa fa-upload"></i> 导入-->
<!-- </a>-->
<!-- <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:user:export">-->
<!-- <i class="fa fa-download"></i> 导出-->
<!-- </a>-->
<a class="btn btn-info" onclick="$.table.importExcel()" >
<i class="fa fa-upload"></i> 导入
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()" >
<i class="fa fa-download"></i> 导出
</a>
</div>
<div class="col-sm-12 select-table table-striped">
@ -146,6 +146,14 @@
field: 'stationCode',
title: '工位代号'
},
{
field: 'radarId',
title: '雷达ID'
},
{
field: 'radarNum',
title: '雷达天线号'
},
{
field: 'sort',
title: '工序',
@ -157,7 +165,7 @@
if (row.userId != 1) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
// actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>删除</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a> ');
// var more = [];
// more.push("<a class='btn btn-default btn-xs " + resetPwdFlag + "' href='javascript:void(0)' onclick='resetPwd(" + row.userId + ")'><i class='fa fa-key'></i>重置密码</a> ");
// more.push("<a class='btn btn-default btn-xs " + editFlag + "' href='javascript:void(0)' onclick='authRole(" + row.userId + ")'><i class='fa fa-check-square-o'></i>分配角色</a>");
@ -263,7 +271,7 @@
<div class="col-xs-offset-1">
<input type="file" id="file" name="file"/>
<div class="mt10 pt5">
<input type="checkbox" id="updateSupport" name="updateSupport" title="如果登录账户已经存在,更新这条数据。"> 是否更新已经存在的用户数据
<input type="checkbox" id="updateSupport" name="updateSupport" title="如果数据已经存在,更新这条数据。"> 是否更新已经存在的数据
&nbsp; <a onclick="$.table.importTemplate()" class="btn btn-default btn-xs"><i class="fa fa-file-excel-o"></i> 下载模板</a>
</div>
<font color="red" class="pull-left mt10">

View File

@ -79,7 +79,7 @@
$.table.init(options);
});
var socket = new WebSocket("ws://192.168.120.15/websocket");
var socket = new WebSocket("ws://localhost/websocket");
socket.onopen = function(event) {
console.log("WebSocket连接已打开");
@ -99,18 +99,19 @@
var view = ''
$.each(data, function (i, row) {
view += template
.replace('%IMAGE%', getImageUrl(row.radarIp))
.replace('%IMAGE%', getImageUrl(row.status))
.replace('%radarIp%', row.radarIp)
.replace('%radarLocation%', row.radarLocation)
})
return `<div class="row mx-0">${view}</div>`
}
function getImageUrl(radarIp) {
if (radarIp === '192.168.0.7') {
return "https://xjl559.oss-cn-shanghai.aliyuncs.com/2023/12/11/%E6%88%AA%E5%B1%8F2024-01-08%2013.57.36.png";
} else if (radarIp === '192.168.0.8') {
return "https://xjl559.oss-cn-shanghai.aliyuncs.com/2023/12/11/%E6%88%AA%E5%B1%8F2024-01-08%2013.57.36.png";
function getImageUrl(status) {
if (status === 1) {
return "http://localhost/img/radarGreen.png";
} else if (status === 0) {
return "http://localhost/img/radarRed.jpg";
}
}
</script>

View File

@ -134,7 +134,7 @@
<div class="row container">
<div class="col-md-10">
<div class="imageBox">
<img id="avatar" th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="'this.src=\'' + @{'/img/profile.jpg'} + '\''">
<img id="avatar" th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/favicon.ico} : @{${user.avatar}}" th:onerror="'this.src=\'' + @{'/img/profile.jpg'} + '\''">
</div>
<div class="action">
<div class="new-contentarea tc">

View File

@ -12,34 +12,18 @@
<div class="col-sm-3 pr5">
<div class="ibox float-e-margins">
<div class="ibox-title ibox-title-gray dashboard-header gray-bg">
<h5>个人资料</h5>
<h5>工厂资料</h5>
</div>
<div class="ibox-content">
<div class="text-center">
<p class="user-info-head" onclick="avatar()"><img class="img-circle img-lg" th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="'this.src=\'' + @{'/img/profile.jpg'} + '\''"></p>
<p><a href="javascript:avatar()">修改头像</a></p>
<p class="user-info-head" onclick="avatar()"><img class="img-circle img-lg" th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/favicon.ico} : @{${user.avatar}}" th:onerror="'this.src=\'' + @{'/img/profile.jpg'} + '\''"></p>
<p><a href="javascript:avatar()">修改图标</a></p>
</div>
<ul class="list-group list-group-striped">
<li class="list-group-item"><i class="fa fa-user"></i>
<b class="font-noraml">登录名称:</b>
<b class="font-noraml">工厂名称:</b>
<p class="pull-right">[[${user.loginName}]]</p>
</li>
<li class="list-group-item"><i class="fa fa-phone"></i>
<b class="font-noraml">手机号码:</b>
<p class="pull-right">[[${user.phonenumber}]]</p>
</li>
<li class="list-group-item" th:if="${user.dept?.deptName != null}"><i class="fa fa-group"></i>
<b class="font-noraml">所属部门:</b>
<p class="pull-right" style="overflow: hidden; white-space: nowrap; text-overflow: ellipsis;width:120px;">[[${user.dept?.deptName}]] / [[${#strings.defaultString(postGroup,'无岗位')}]]</p>
</li>
<li class="list-group-item"><i class="fa fa-envelope-o"></i>
<b class="font-noraml">邮箱地址:</b>
<p class="pull-right" th:title="${user.email}">[[${#strings.abbreviate(user.email, 16)}]]</p>
</li>
<li class="list-group-item"><i class="fa fa-calendar"></i>
<b class="font-noraml">创建时间:</b>
<p class="pull-right">[[${#dates.format(user.createTime, 'yyyy-MM-dd')}]]</p>
</li>
</ul>
</div>
</div>
@ -54,7 +38,6 @@
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active"><a href="#user_info" data-toggle="tab" aria-expanded="true">基本资料</a></li>
<li><a href="#modify_password" data-toggle="tab" aria-expanded="false">修改密码</a></li>
</ul>
<div class="tab-content">
<!--用户信息-->
@ -63,36 +46,36 @@
<!--隐藏ID-->
<input name="id" id="id" type="hidden">
<div class="form-group">
<label class="col-sm-2 control-label">用户名称:</label>
<label class="col-sm-2 control-label">工厂名称:</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="userName" th:field="*{userName}" placeholder="请输入用户名称">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">手机号码:</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="phonenumber" maxlength="11" th:field="*{phonenumber}" placeholder="请输入手机号码">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">邮箱:</label>
<div class="col-sm-10">
<input type="text" maxlength="50" class="form-control" name="email" th:field="*{email}" placeholder="请输入邮箱">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">性别:</label>
<div class="col-sm-10">
<div class="radio-box">
<input type="radio" id="radio1" th:field="*{sex}" name="sex" value="0">
<label for="radio1"></label>
</div>
<div class="radio-box">
<input type="radio" id="radio2" th:field="*{sex}" name="sex" value="1">
<label for="radio2"></label>
</div>
<input type="text" class="form-control" name="userName" th:field="*{userName}" placeholder="请输入工厂名称">
</div>
</div>
<!-- <div class="form-group">-->
<!-- <label class="col-sm-2 control-label">手机号码:</label>-->
<!-- <div class="col-sm-10">-->
<!-- <input type="text" class="form-control" name="phonenumber" maxlength="11" th:field="*{phonenumber}" placeholder="请输入手机号码">-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-2 control-label">邮箱:</label>-->
<!-- <div class="col-sm-10">-->
<!-- <input type="text" maxlength="50" class="form-control" name="email" th:field="*{email}" placeholder="请输入邮箱">-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-2 control-label">性别:</label>-->
<!-- <div class="col-sm-10">-->
<!-- <div class="radio-box">-->
<!-- <input type="radio" id="radio1" th:field="*{sex}" name="sex" value="0">-->
<!-- <label for="radio1">男</label>-->
<!-- </div>-->
<!-- <div class="radio-box">-->
<!-- <input type="radio" id="radio2" th:field="*{sex}" name="sex" value="1">-->
<!-- <label for="radio2">女</label>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitUserInfo()"><i class="fa fa-check"></i>保 存</button>&nbsp;
@ -102,45 +85,7 @@
</form>
</div>
<!--修改密码-->
<div class="tab-pane" id="modify_password">
<form class="form-horizontal" id="form-user-resetPwd">
<div class="form-group">
<label class="col-sm-2 control-label">旧密码:</label>
<div class="col-sm-10">
<input type="password" class="form-control" name="oldPassword" placeholder="请输入旧密码">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">新密码:</label>
<div class="col-sm-10">
<input type="password" class="form-control" name="newPassword" id="newPassword" placeholder="请输入新密码">
<th:block th:with="chrtype=${@config.getKey('sys.account.chrtype')}">
<th:block th:if="${chrtype != '0'}">
<span class="help-block m-b-none">
<th:block th:if="${chrtype == '1'}"><i class="fa fa-info-circle" style="color: red;"></i> 密码只能为0-9数字 </th:block>
<th:block th:if="${chrtype == '2'}"><i class="fa fa-info-circle" style="color: red;"></i> 密码只能为a-z和A-Z字母</th:block>
<th:block th:if="${chrtype == '3'}"><i class="fa fa-info-circle" style="color: red;"></i> 密码必须包含(字母,数字)</th:block>
<th:block th:if="${chrtype == '4'}"><i class="fa fa-info-circle" style="color: red;"></i> 密码必须包含(字母,数字,特殊字符!@#$%^&*()-=_+</th:block>
</span>
</th:block>
</th:block>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">确认密码:</label>
<div class="col-sm-10">
<input type="password" class="form-control" name="confirmPassword" placeholder="请确认密码">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitChangPassword()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@ -161,7 +106,7 @@
//不固定
maxmin: true,
shade: 0.3,
title: "修改头像",
title: "修改图标",
content: url,
btn: ['确定', '关闭'],
// 弹层外区域关闭

View File

@ -0,0 +1,298 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('用户个人信息')" />
<style type="text/css">.user-info-head{position:relative;display:inline-block;}.user-info-head:hover:after{content:'\f030';position:absolute;left:0;right:0;top:0;bottom:0;color:#eee;background:rgba(0,0,0,0.5);font-family:FontAwesome;font-size:24px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;cursor:pointer;line-height:110px;border-radius:50%;}</style>
</head>
<body class="gray-bg" style="font: 14px Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif !important;">
<input id="userId" name="userId" type="hidden" th:value="${user.userId}" />
<section class="section-content">
<div class="row">
<div class="col-sm-3 pr5">
<div class="ibox float-e-margins">
<div class="ibox-title ibox-title-gray dashboard-header gray-bg">
<h5>个人资料</h5>
</div>
<div class="ibox-content">
<div class="text-center">
<p class="user-info-head" onclick="avatar()"><img class="img-circle img-lg" th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="'this.src=\'' + @{'/img/profile.jpg'} + '\''"></p>
<p><a href="javascript:avatar()">修改头像</a></p>
</div>
<ul class="list-group list-group-striped">
<li class="list-group-item"><i class="fa fa-user"></i>
<b class="font-noraml">登录名称:</b>
<p class="pull-right">[[${user.loginName}]]</p>
</li>
<li class="list-group-item"><i class="fa fa-phone"></i>
<b class="font-noraml">手机号码:</b>
<p class="pull-right">[[${user.phonenumber}]]</p>
</li>
<li class="list-group-item" th:if="${user.dept?.deptName != null}"><i class="fa fa-group"></i>
<b class="font-noraml">所属部门:</b>
<p class="pull-right" style="overflow: hidden; white-space: nowrap; text-overflow: ellipsis;width:120px;">[[${user.dept?.deptName}]] / [[${#strings.defaultString(postGroup,'无岗位')}]]</p>
</li>
<li class="list-group-item"><i class="fa fa-envelope-o"></i>
<b class="font-noraml">邮箱地址:</b>
<p class="pull-right" th:title="${user.email}">[[${#strings.abbreviate(user.email, 16)}]]</p>
</li>
<li class="list-group-item"><i class="fa fa-calendar"></i>
<b class="font-noraml">创建时间:</b>
<p class="pull-right">[[${#dates.format(user.createTime, 'yyyy-MM-dd')}]]</p>
</li>
</ul>
</div>
</div>
</div>
<div class="col-sm-9 about">
<div class="ibox float-e-margins">
<div class="ibox-title ibox-title-gray dashboard-header">
<h5>基本资料</h5>
</div>
<div class="ibox-content">
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active"><a href="#user_info" data-toggle="tab" aria-expanded="true">基本资料</a></li>
<li><a href="#modify_password" data-toggle="tab" aria-expanded="false">修改密码</a></li>
</ul>
<div class="tab-content">
<!--用户信息-->
<div class="tab-pane active" id="user_info" th:object="${user}">
<form class="form-horizontal" id="form-user-edit">
<!--隐藏ID-->
<input name="id" id="id" type="hidden">
<div class="form-group">
<label class="col-sm-2 control-label">用户名称:</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="userName" th:field="*{userName}" placeholder="请输入用户名称">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">手机号码:</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="phonenumber" maxlength="11" th:field="*{phonenumber}" placeholder="请输入手机号码">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">邮箱:</label>
<div class="col-sm-10">
<input type="text" maxlength="50" class="form-control" name="email" th:field="*{email}" placeholder="请输入邮箱">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">性别:</label>
<div class="col-sm-10">
<div class="radio-box">
<input type="radio" id="radio1" th:field="*{sex}" name="sex" value="0">
<label for="radio1"></label>
</div>
<div class="radio-box">
<input type="radio" id="radio2" th:field="*{sex}" name="sex" value="1">
<label for="radio2"></label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitUserInfo()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div>
</div>
</form>
</div>
<!--修改密码-->
<div class="tab-pane" id="modify_password">
<form class="form-horizontal" id="form-user-resetPwd">
<div class="form-group">
<label class="col-sm-2 control-label">旧密码:</label>
<div class="col-sm-10">
<input type="password" class="form-control" name="oldPassword" placeholder="请输入旧密码">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">新密码:</label>
<div class="col-sm-10">
<input type="password" class="form-control" name="newPassword" id="newPassword" placeholder="请输入新密码">
<th:block th:with="chrtype=${@config.getKey('sys.account.chrtype')}">
<th:block th:if="${chrtype != '0'}">
<span class="help-block m-b-none">
<th:block th:if="${chrtype == '1'}"><i class="fa fa-info-circle" style="color: red;"></i> 密码只能为0-9数字 </th:block>
<th:block th:if="${chrtype == '2'}"><i class="fa fa-info-circle" style="color: red;"></i> 密码只能为a-z和A-Z字母</th:block>
<th:block th:if="${chrtype == '3'}"><i class="fa fa-info-circle" style="color: red;"></i> 密码必须包含(字母,数字)</th:block>
<th:block th:if="${chrtype == '4'}"><i class="fa fa-info-circle" style="color: red;"></i> 密码必须包含(字母,数字,特殊字符!@#$%^&*()-=_+</th:block>
</span>
</th:block>
</th:block>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">确认密码:</label>
<div class="col-sm-10">
<input type="password" class="form-control" name="confirmPassword" placeholder="请确认密码">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitChangPassword()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<th:block th:include="include :: footer" />
<script>
/*用户管理-头像*/
function avatar() {
var url = ctx + 'system/user/profileEdit/avatar';
top.layer.open({
type: 2,
area: [$(window).width() + 'px', $(window).height() + 'px'],
fix: false,
//不固定
maxmin: true,
shade: 0.3,
title: "修改头像",
content: url,
btn: ['确定', '关闭'],
// 弹层外区域关闭
shadeClose: true,
yes: function(index, layero) {
var iframeWin = layero.find('iframe')[0];
iframeWin.contentWindow.submitHandler(index, layero);
},
cancel: function(index) {
return true;
}
});
}
/*用户信息-修改*/
$("#form-user-edit").validate({
onkeyup: false,
rules:{
userName:{
required:true,
},
email:{
required:true,
email:true,
remote: {
url: ctx + "system/user/checkEmailUnique",
type: "post",
dataType: "json",
data: {
"userId": function() {
return $("#userId").val();
},
"email": function() {
return $.common.trim($("#email").val());
}
}
}
},
phonenumber:{
required:true,
isPhone:true,
remote: {
url: ctx + "system/user/checkPhoneUnique",
type: "post",
dataType: "json",
data: {
"userId": function() {
return $("#userId").val();
},
"phonenumber": function() {
return $.common.trim($("#phonenumber").val());
}
}
}
},
},
messages: {
"userName": {
required: "请输入用户名称",
},
"email": {
required: "请输入邮箱",
remote: "Email已经存在"
},
"phonenumber":{
required: "请输入手机号码",
remote: "手机号码已经存在"
}
},
focusCleanup: true
});
function submitUserInfo() {
if ($.validate.form()) {
$.operate.saveModal(ctx + "system/user/profileEdit/update", $('#form-user-edit').serialize());
}
}
/*用户管理-修改密码*/
$("#form-user-resetPwd").validate({
onkeyup: false,
rules:{
oldPassword:{
required:true,
remote: {
url: ctx + "system/user/profileEdit/checkPassword",
type: "get",
dataType: "json",
data: {
password: function() {
return $("input[name='oldPassword']").val();
}
}
}
},
newPassword: {
required: true,
minlength: 6,
maxlength: 20
},
confirmPassword: {
required: true,
equalTo: "#newPassword"
}
},
messages: {
oldPassword: {
required: "请输入原密码",
remote: "原密码错误"
},
newPassword: {
required: "请输入新密码",
minlength: "密码不能小于6个字符",
maxlength: "密码不能大于20个字符"
},
confirmPassword: {
required: "请再次输入新密码",
equalTo: "两次密码输入不一致"
}
},
focusCleanup: true
});
function submitChangPassword () {
var chrtype = [[${#strings.defaultString(@config.getKey('sys.account.chrtype'), 0)}]];
var password = $("#newPassword").val();
if ($.validate.form("form-user-resetPwd") && checkpwd(chrtype, password)) {
$.operate.saveModal(ctx + "system/user/profileEdit/resetPwd", $('#form-user-resetPwd').serialize());
}
}
</script>
</body>
</html>

View File

@ -0,0 +1,93 @@
package com.ruoyi.common.core.domain.entity;
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;
/**
* sys_identifier
*
* @author ruoyi
*/
public class IdentifierExcel extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户ID */
@Excel(name = "高温标识器序号", cellType = ColumnType.NUMERIC, prompt = "序号")
private Long id;
@Excel(name = "高温标识器ID1")
private String identifierId;
@Excel(name = "高温标识器ID2")
private String identifierTwo;
@Excel(name = "铁包号")
private String ladleNumber;
/** 删除标志0代表存在 2代表删除 */
private String delFlag;
public IdentifierExcel() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getIdentifierId() {
return identifierId;
}
public void setIdentifierId(String identifierId) {
this.identifierId = identifierId;
}
public String getIdentifierTwo() {
return identifierTwo;
}
public void setIdentifierTwo(String identifierTwo) {
this.identifierTwo = identifierTwo;
}
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 String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("identifierId", getIdentifierId())
.append("identifierTwo", getIdentifierTwo())
.append("ladleNumber", getLadleNumber())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -0,0 +1,117 @@
package com.ruoyi.common.core.domain.entity;
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;
/**
* sys_identifier
*
* @author ruoyi
*/
public class NormalExcel extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户ID */
@Excel(name = "常温标识器序号", cellType = ColumnType.NUMERIC, prompt = "序号")
private Long id;
@Excel(name = "常温标识器ID1")
private String identifierId;
@Excel(name = "常温标识器ID2")
private String identifierTwo;
@Excel(name = "常温标识器ID3")
private String identifierThree;
@Excel(name = "常温标识器ID4")
private String identifierFour;
@Excel(name = "铁包号")
private String ladleNumber;
/** 删除标志0代表存在 2代表删除 */
private String delFlag;
public NormalExcel() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getIdentifierId() {
return identifierId;
}
public void setIdentifierId(String identifierId) {
this.identifierId = identifierId;
}
public String getIdentifierTwo() {
return identifierTwo;
}
public void setIdentifierTwo(String identifierTwo) {
this.identifierTwo = identifierTwo;
}
public String getIdentifierThree() {
return identifierThree;
}
public void setIdentifierThree(String identifierThree) {
this.identifierThree = identifierThree;
}
public String getIdentifierFour() {
return identifierFour;
}
public void setIdentifierFour(String identifierFour) {
this.identifierFour = identifierFour;
}
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 String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("identifierId", getIdentifierId())
.append("identifierTwo", getIdentifierTwo())
.append("ladleNumber", getLadleNumber())
.append("identifierThree", getIdentifierThree())
.append("identifierFour",getIdentifierFour())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -0,0 +1,142 @@
package com.ruoyi.common.core.domain.entity;
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;
/**
* sys_radar
*
* @author ruoyi
*/
public class RadarExcel extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户ID */
@Excel(name = "雷达序号", cellType = ColumnType.NUMERIC, prompt = "雷达编号")
private Long id;
@Excel(name = "雷达IP")
private String radarIp;
@Excel(name = "雷达位置/工位")
private String radarLocation;
@Excel(name = "工位代号")
private Integer stationCode;
@Excel(name = "工序")
private Integer sort;
private Integer status;
@Excel(name = "雷达ID")
private Integer radarId;
@Excel(name = "雷达天线号")
private String radarNum;
/** 删除标志0代表存在 2代表删除 */
private String delFlag;
public RadarExcel() {
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getRadarIp() {
return radarIp;
}
public void setRadarIp(String radarIp) {
this.radarIp = radarIp;
}
public String getRadarLocation() {
return radarLocation;
}
public void setRadarLocation(String radarLocation) {
this.radarLocation = radarLocation;
}
public Integer getStationCode() {
return stationCode;
}
public void setStationCode(Integer stationCode) {
this.stationCode = stationCode;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getRadarId() {
return radarId;
}
public void setRadarId(Integer radarId) {
this.radarId = radarId;
}
public String getRadarNum() {
return radarNum;
}
public void setRadarNum(String radarNum) {
this.radarNum = radarNum;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("radarIp", getRadarIp())
.append("radarLocation", getRadarLocation())
.append("stationCode", getStationCode())
.append("sort", getSort())
.append("status", getStatus())
.append("radarId", getRadarId())
.append("radarNum", getRadarNum())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -44,6 +44,10 @@ public class SysRadar extends BaseEntity
private Integer status;
private Integer radarId;
private String radarNum;
/** 删除标志0代表存在 2代表删除 */
private String delFlag;
@ -140,6 +144,22 @@ public class SysRadar extends BaseEntity
this.status = status;
}
public Integer getRadarId() {
return radarId;
}
public void setRadarId(Integer radarId) {
this.radarId = radarId;
}
public String getRadarNum() {
return radarNum;
}
public void setRadarNum(String radarNum) {
this.radarNum = radarNum;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@ -153,6 +173,8 @@ public class SysRadar extends BaseEntity
.append("alarmValue3", getAlarmValue3())
.append("alarmValue4", getAlarmValue4())
.append("status", getStatus())
.append("radarId", getRadarId())
.append("radarNum", getRadarNum())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())

View File

@ -34,4 +34,6 @@ public interface SysIdentifierMapper
List<SysIdentifier> selectAllIdentifierList();
SysIdentifier selectIdentifierByTag(String tag);
int deleteRadarByIds(String ids);
}

View File

@ -41,4 +41,5 @@ public interface SysRadarMapper
public int updateRadarValue(SysRadar radar);
public int updateStatus(SysRadar radar);
int deleteRadarByIds(String ids);
}

View File

@ -1,8 +1,6 @@
package com.ruoyi.system.service;
import com.ruoyi.common.core.domain.entity.SysIdentifier;
import com.ruoyi.common.core.domain.entity.SysRadar;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.*;
import com.ruoyi.system.domain.SysUserRole;
import java.util.List;
@ -31,4 +29,10 @@ public interface ISysIdentifierService
int updateNormalIdentifier(SysIdentifier identifier);
SysIdentifier selectIdentifierByTag(String tag);
int deleteRadarByIds(String ids);
String importNormalData(List<NormalExcel> normalList, boolean isUpdateSupport);
String importData(List<IdentifierExcel> identifierList, boolean isUpdateSupport);
}

View File

@ -1,5 +1,6 @@
package com.ruoyi.system.service;
import com.ruoyi.common.core.domain.entity.RadarExcel;
import com.ruoyi.common.core.domain.entity.SysRadar;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.domain.SysUserRole;
@ -32,4 +33,8 @@ public interface ISysRadarService
public int updateRadarValue(SysRadar radar);
int changeStatus(SysRadar radar);
int deleteRadarByIds(String ids);
String importData(List<RadarExcel> radarList, boolean isUpdateSupport);
}

View File

@ -1,14 +1,12 @@
package com.ruoyi.system.service.impl;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.entity.SysIdentifier;
import com.ruoyi.common.core.domain.entity.SysRadar;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.*;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.bean.BeanValidators;
import com.ruoyi.common.utils.security.Md5Utils;
import com.ruoyi.system.domain.SysPost;
@ -96,6 +94,138 @@ public class SysIdentifierServiceImpl implements ISysIdentifierService
return identifierMapper.selectIdentifierByTag(tag);
}
@Override
public int deleteRadarByIds(String ids) {
return identifierMapper.deleteRadarByIds(ids);
}
@Override
public String importNormalData(List<NormalExcel> normalList, boolean isUpdateSupport) {
if (StringUtils.isNull(normalList) || normalList.size() == 0)
{
throw new ServiceException("导入数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
List<SysIdentifier> sysIdentifiers = normalList.stream().map(normalExcel -> {
SysIdentifier sysIdentifier = new SysIdentifier();
BeanUtils.copyProperties(normalExcel, sysIdentifier);
sysIdentifier.setId(normalExcel.getId());
return sysIdentifier;
}).collect(Collectors.toList());
for (SysIdentifier sysIdentifier : sysIdentifiers)
{
try
{
// 验证是否存在
SysIdentifier u = identifierMapper.selectNormalIdentifierById(sysIdentifier.getId());
if (StringUtils.isNull(u))
{
BeanValidators.validateWithException(validator, sysIdentifier);
identifierMapper.insertNormalIdentifier(sysIdentifier);
successNum++;
successMsg.append("<br/>" + successNum + "、高温标识器 " + sysIdentifier.getId() + " 导入成功");
}
else if (isUpdateSupport)
{
BeanValidators.validateWithException(validator, sysIdentifier);
sysIdentifier.setId(u.getId());
identifierMapper.updateNormalIdentifier(sysIdentifier);
successNum++;
successMsg.append("<br/>" + successNum + "、高温标识器 " + sysIdentifier.getId() + " 更新成功");
}
else
{
failureNum++;
failureMsg.append("<br/>" + failureNum + "、高温标识器 " + sysIdentifier.getId() + " 已存在");
}
}
catch (Exception e)
{
failureNum++;
String msg = "<br/>" + failureNum + "、高温标识器 " + sysIdentifier.getId() + " 导入失败:";
failureMsg.append(msg + e.getMessage());
log.error(msg, e);
}
}
if (failureNum > 0)
{
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
}
else
{
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
@Override
public String importData(List<IdentifierExcel> identifierList, boolean isUpdateSupport) {
if (StringUtils.isNull(identifierList) || identifierList.size() == 0)
{
throw new ServiceException("导入数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
List<SysIdentifier> sysIdentifiers = identifierList.stream().map(identifierExcel -> {
SysIdentifier sysIdentifier = new SysIdentifier();
BeanUtils.copyProperties(identifierExcel, sysIdentifier);
sysIdentifier.setId(identifierExcel.getId());
return sysIdentifier;
}).collect(Collectors.toList());
for (SysIdentifier sysIdentifier : sysIdentifiers)
{
try
{
// 验证是否存在
SysIdentifier u = identifierMapper.selectIdentifierById(sysIdentifier.getId());
if (StringUtils.isNull(u))
{
BeanValidators.validateWithException(validator, sysIdentifier);
identifierMapper.insertIdentifier(sysIdentifier);
successNum++;
successMsg.append("<br/>" + successNum + "、高温标识器 " + sysIdentifier.getId() + " 导入成功");
}
else if (isUpdateSupport)
{
BeanValidators.validateWithException(validator, sysIdentifier);
sysIdentifier.setId(u.getId());
identifierMapper.updateIdentifier(sysIdentifier);
successNum++;
successMsg.append("<br/>" + successNum + "、高温标识器 " + sysIdentifier.getId() + " 更新成功");
}
else
{
failureNum++;
failureMsg.append("<br/>" + failureNum + "、高温标识器 " + sysIdentifier.getId() + " 已存在");
}
}
catch (Exception e)
{
failureNum++;
String msg = "<br/>" + failureNum + "、高温标识器 " + sysIdentifier.getId() + " 导入失败:";
failureMsg.append(msg + e.getMessage());
log.error(msg, e);
}
}
if (failureNum > 0)
{
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
}
else
{
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
@Override
public SysIdentifier selectIdentifierById(Long id) {

View File

@ -2,6 +2,7 @@ package com.ruoyi.system.service.impl;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.entity.RadarExcel;
import com.ruoyi.common.core.domain.entity.SysRadar;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
@ -9,6 +10,7 @@ import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.bean.BeanValidators;
import com.ruoyi.common.utils.security.Md5Utils;
import com.ruoyi.common.utils.spring.SpringUtils;
@ -101,6 +103,77 @@ public class SysRadarServiceImpl implements ISysRadarService
return radarMapper.updateStatus(radar);
}
@Override
public int deleteRadarByIds(String ids) {
return radarMapper.deleteRadarByIds(ids);
}
@Override
public String importData(List<RadarExcel> radarList, boolean isUpdateSupport) {
if (StringUtils.isNull(radarList) || radarList.size() == 0)
{
throw new ServiceException("导入数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
String password = configService.selectConfigByKey("sys.user.initPassword");
List<SysRadar> sysRadarList = radarList.stream().map(radarExcel -> {
SysRadar sysRadar = new SysRadar();
BeanUtils.copyProperties(radarExcel, sysRadar);
return sysRadar;
}).collect(Collectors.toList());
for (SysRadar radar : sysRadarList)
{
try
{
// 验证是否存在这个用户
SysRadar u = radarMapper.selectRadarById(radar.getId());
if (StringUtils.isNull(u))
{
BeanValidators.validateWithException(validator, radar);
radarMapper.insertRadar(radar);
successNum++;
successMsg.append("<br/>" + successNum + "、雷达 " + radar.getRadarIp() + " 导入成功");
}
else if (isUpdateSupport)
{
BeanValidators.validateWithException(validator, radar);
radar.setId(u.getId());
radarMapper.updateRadar(radar);
successNum++;
successMsg.append("<br/>" + successNum + "、雷达 " + radar.getRadarIp() + " 更新成功");
}
else
{
failureNum++;
failureMsg.append("<br/>" + failureNum + "、雷达 " + radar.getRadarIp() + " 已存在");
}
}
catch (Exception e)
{
failureNum++;
String msg = "<br/>" + failureNum + "、雷达 " + radar.getRadarIp() + " 导入失败:";
failureMsg.append(msg + e.getMessage());
log.error(msg, e);
}
}
if (failureNum > 0)
{
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
}
else
{
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
}

View File

@ -110,40 +110,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if>
</select>
<!-- <insert id="insertPrimaryRadarData">-->
<!-- insert into sys_normalIdentifier(-->
<!-- <if test="id != null and id != 0">id,</if>-->
<!-- <if test="value1 != null and value1 != ''">value1,</if>-->
<!-- <if test="value2 != null and value2 != ''">value2,</if>-->
<!-- <if test="value3 != null and value3 != ''">value3,</if>-->
<!-- <if test="value4 != null and value4 != ''">value4,</if>-->
<!-- <if test="value5 != null and value5 != ''">value5,</if>-->
<!-- <if test="baseLine != null and baseLine != ''">base_line,</if>-->
<!-- <if test="queryFre != null and queryFre != ''">query_fre,</if>-->
<!-- <if test="number != null and number != ''">number,</if>-->
<!-- <if test="radarLocation != null and radarLocation != ''">radar_location,</if>-->
<!-- <if test="ladleNumber != null and ladleNumber != ''">ladle_number,</if>-->
<!-- <if test="createBy != null and createBy != ''">create_by,</if>-->
<!-- <if test="remark != null and remark != ''">remark,</if>-->
<!-- create_time-->
<!-- )values(-->
<!-- <if test="id != null and id != 0">#{id},</if>-->
<!-- <if test="value1 != null and value1 != ''">#{value1},</if>-->
<!-- <if test="value2 != null and value2 != ''">#{value2},</if>-->
<!-- <if test="value3 != null and value3 != ''">#{value3},</if>-->
<!-- <if test="value4 != null and value4 != ''">#{value4},</if>-->
<!-- <if test="value5 != null and value5 != ''">#{value5},</if>-->
<!-- <if test="baseLine != null and baseLine != ''">#{baseLine},</if>-->
<!-- <if test="queryFre != null and queryFre != ''">#{queryFre},</if>-->
<!-- <if test="number != null and number != ''">#{number},</if>-->
<!-- <if test="radarLocation != null and radarLocation != ''">#{radarLocation},</if>-->
<!-- <if test="ladleNumber != null and ladleNumber != ''">#{ladleNumber},</if>-->
<!-- <if test="createBy!= null and createBy!= ''">#{createBy},</if>-->
<!-- <if test="remark != null and remark != ''">#{remark},</if>-->
<!-- sysdate()-->
<!-- )-->
<!-- </insert>-->
</mapper>

View File

@ -141,4 +141,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from sys_identifier i where i.identifier_id = #{tag} or identifier_two = #{tag} or identifier_three = #{tag} or identifier_four = #{tag}
</select>
<delete id="deleteRadarByIds">
delete from sys_identifier where id in (#{ids})
</delete>
</mapper>

View File

@ -15,6 +15,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="alarmValue3" column="alarm_value3"/>
<result property="alarmValue4" column="alarm_value4"/>
<result property="status" column="status" />
<result property="radarId" column="radar_id" />
<result property="radarNum" column="radar_num" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
@ -25,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectRadarList" parameterType="com.ruoyi.common.core.domain.entity.SysRadar" resultMap="SysRadarResult">
select r.id,r.radar_ip,r.radar_location,r.station_code,r.sort,r.alarm_value1,r.alarm_value2,r.alarm_value3,r.alarm_value4,r.status,r.create_by,r.create_time,r.update_by,r.update_time,r.remark from sys_radar r
select r.id,r.radar_ip,r.radar_location,r.station_code,r.sort,r.alarm_value1,r.alarm_value2,r.alarm_value3,r.alarm_value4,r.status,r.radar_id,r.radar_num,r.create_by,r.create_time,r.update_by,r.update_time,r.remark from sys_radar r
where r.del_flag = '0'
<if test="radarLocation != null and radarLocation != ''">
AND r.radar_location like concat('%',#{radarLocation}, '%')
@ -43,6 +45,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="radarLocation != null and radarLocation != ''">radar_location,</if>
<if test="stationCode != null and stationCode != ''">station_code,</if>
<if test="sort != null and sort != ''">sort,</if>
<if test="radarId != null and radarId != ''">radar_id,</if>
<if test="radarNum != null and radarNum != ''">radar_num,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
<if test="remark != null and remark != ''">remark,</if>
alarm_value1,
@ -57,6 +61,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="radarLocation != null and radarLocation != ''">#{radarLocation},</if>
<if test="stationCode != null and stationCode != ''">#{stationCode},</if>
<if test="sort != null and sort != ''">#{sort},</if>
<if test="radarId != null and radarId != ''">#{radarId},</if>
<if test="radarNum != null and radarNum != ''">#{radarNum},</if>
<if test="createBy != null and createBy != ''">#{createBy},#,</if>
<if test="remark != null and remark != ''">#{remark},</if>
0,
@ -69,7 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</insert>
<select id="selectRadarById" parameterType="Long" resultMap="SysRadarResult">
select r.id,r.radar_ip,r.radar_location,r.station_code,r.alarm_value1,r.alarm_value2,r.alarm_value3,r.alarm_value4,r.status,r.sort,r.create_by,r.create_time,r.update_by,r.update_time,r.remark from sys_radar r
select r.id,r.radar_ip,r.radar_location,r.station_code,r.alarm_value1,r.alarm_value2,r.alarm_value3,r.alarm_value4,r.radar_id,r.radar_num,r.status,r.sort,r.create_by,r.create_time,r.update_by,r.update_time,r.remark from sys_radar r
where r.id = #{id}
</select>
@ -81,6 +87,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="radarLocation != null and radarLocation != ''">radar_location = #{radarLocation},</if>
<if test="stationCode != null and stationCode != ''">station_code = #{stationCode},</if>
<if test="sort != null and sort != 0">sort = #{sort},</if>
<if test="radarId != null and radarId != 0">radar_id = #{radarId},</if>
<if test="radarNum != null and radarNum != 0">radar_num = #{radarNum},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
<if test="remark != null">remark = #{remark},</if>
update_time = sysdate()
@ -108,4 +116,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</set>
where id = #{id}
</update>
<delete id="deleteRadarByIds">
delete from sys_radar where id in (#{ids})
</delete>
</mapper>