|
|
package cn.jeefast.system.controller;
|
|
|
|
|
|
import cn.jeefast.system.entity.*;
|
|
|
import cn.jeefast.system.service.*;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
|
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
|
|
import org.apache.commons.lang.ArrayUtils;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|
|
import org.apache.shiro.crypto.hash.Sha256Hash;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import com.baomidou.mybatisplus.plugins.Page;
|
|
|
|
|
|
import cn.jeefast.common.annotation.Log;
|
|
|
import cn.jeefast.common.base.BaseController;
|
|
|
import cn.jeefast.common.utils.Query;
|
|
|
import cn.jeefast.common.utils.R;
|
|
|
import cn.jeefast.common.validator.Assert;
|
|
|
import cn.jeefast.common.validator.ValidatorUtils;
|
|
|
import cn.jeefast.common.validator.group.AddGroup;
|
|
|
import cn.jeefast.common.validator.group.UpdateGroup;
|
|
|
|
|
|
import java.net.InetAddress;
|
|
|
import java.net.UnknownHostException;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* 系统用户
|
|
|
*
|
|
|
*/
|
|
|
@RestController
|
|
|
@RequestMapping("/sys/user")
|
|
|
public class SysUserController extends BaseController {
|
|
|
@Autowired
|
|
|
private SysUserService sysUserService;
|
|
|
@Autowired
|
|
|
private SysUserRoleService sysUserRoleService;
|
|
|
|
|
|
@Autowired
|
|
|
private SysUserTokenService sysUserTokenService;
|
|
|
|
|
|
@Autowired
|
|
|
private TMaterialFileService tMaterialFileService;
|
|
|
|
|
|
@Autowired
|
|
|
private SysRoleService sysRoleService;
|
|
|
|
|
|
@Value("${server.port}")
|
|
|
private String serverport;
|
|
|
|
|
|
@Value("${server.context-path}")
|
|
|
private String servercontextpath;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 所有用户列表
|
|
|
*/
|
|
|
@RequestMapping("/list")
|
|
|
@RequiresPermissions("sys:user:list")
|
|
|
public R list(@RequestParam Map<String, Object> params) throws UnknownHostException {
|
|
|
//查询列表数据
|
|
|
SysUser dluser = getUser();
|
|
|
//管理远看全部
|
|
|
List<SysUserRole> sysUserRolesone = sysUserRoleService.selectList(new EntityWrapper<SysUserRole>().eq("user_id",dluser.getUserId()));
|
|
|
String usernameParam = dluser.getUsername();
|
|
|
if(sysUserRolesone.size()>0){
|
|
|
for(int i=0;i<sysUserRolesone.size();i++){
|
|
|
SysUserRole sysUserRole = sysUserRolesone.get(i);
|
|
|
if((sysUserRole.getRoleId()+"").equals("1")){
|
|
|
usernameParam = null;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
params.put("usernameParam",usernameParam);
|
|
|
Query query = new Query(params);
|
|
|
Page<SysUser> pageUtil = new Page<SysUser>(query.getPage(), query.getLimit());
|
|
|
Page<SysUser> page = sysUserService.queryPageList(pageUtil,query);
|
|
|
if(page.getRecords().size()>0){
|
|
|
for(int i=0;i<page.getRecords().size();i++){
|
|
|
SysUser sysUser = page.getRecords().get(i);
|
|
|
List<SysUserRole> sysUserRoles = sysUserRoleService.selectList(new EntityWrapper<SysUserRole>().eq("user_id",sysUser.getUserId()));
|
|
|
String roalArraystr = "";
|
|
|
if(sysUserRoles != null && sysUserRoles.size()>0){
|
|
|
for(int j=0;j<sysUserRoles.size();j++){
|
|
|
SysRole sysRole = sysRoleService.selectById(sysUserRoles.get(j).getRoleId());
|
|
|
if(sysRole != null){
|
|
|
roalArraystr = sysRole.getRoleName()+","+roalArraystr;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
sysUser.setRoalArraystr(roalArraystr);//显示角色信息
|
|
|
|
|
|
/**
|
|
|
* 设置头像信息
|
|
|
*/
|
|
|
List<TMaterialFile> tMaterialFileList = tMaterialFileService.selectList(new EntityWrapper<TMaterialFile>().eq("parentid",sysUser.getUserId()));
|
|
|
SysUserToken sysUserToken = sysUserTokenService.selectOne(new EntityWrapper<SysUserToken>().eq("user_id", getUserId()));
|
|
|
InetAddress address = InetAddress.getLocalHost();
|
|
|
sysUser.setPhotopath(tMaterialFileList != null && tMaterialFileList.size()>0?"http://"+address.getHostAddress() +":"+serverport+"/"+servercontextpath+"/upload/"+tMaterialFileList.get(0).getSfilename()+"?token="+sysUserToken.getToken():"img/usermm.jpg");
|
|
|
|
|
|
}
|
|
|
}
|
|
|
return R.ok().put("page", page);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取登录的用户信息
|
|
|
*/
|
|
|
@RequestMapping("/info")
|
|
|
public R info() throws UnknownHostException {
|
|
|
SysUser user = getUser();
|
|
|
SysUserToken sysUserToken = sysUserTokenService.selectOne(new EntityWrapper<SysUserToken>().eq("user_id", user.getUserId()));
|
|
|
List<TMaterialFile> tMaterialFileList = tMaterialFileService.selectList(new EntityWrapper<TMaterialFile>().eq("parentid",user.getUserId()));
|
|
|
InetAddress address = InetAddress.getLocalHost();
|
|
|
return R.ok().put("user", getUser()).put("lj",tMaterialFileList != null && tMaterialFileList.size()>0?"http://"+address.getHostAddress() +":"+serverport+"/"+servercontextpath+"/upload/"+tMaterialFileList.get(0).getSfilename()+"?token="+sysUserToken.getToken():"img/usermm.jpg");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 修改登录用户密码
|
|
|
*/
|
|
|
@Log("修改密码")
|
|
|
@RequestMapping("/password")
|
|
|
public R password(String password, String newPassword){
|
|
|
Assert.isBlank(newPassword, "新密码不为能空");
|
|
|
|
|
|
//sha256加密
|
|
|
password = new Sha256Hash(password, getUser().getSalt()).toHex();
|
|
|
SysUser sysUser = sysUserService.selectById(getUser().getUserId());
|
|
|
String passwordOld = new Sha256Hash(sysUser.getPassword(), getUser().getSalt()).toHex();
|
|
|
if(!password.equals(sysUser.getPassword())){
|
|
|
return R.error("原密码输入不正确无法重置密码,请联系管理员谢谢!");
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//sha256加密
|
|
|
newPassword = new Sha256Hash(newPassword, getUser().getSalt()).toHex();
|
|
|
|
|
|
SysUser user = new SysUser();
|
|
|
user.setUserId(getUserId());
|
|
|
user.setPassword(newPassword);
|
|
|
//更新密码
|
|
|
boolean bFlag = sysUserService.updateById(user);
|
|
|
if(!bFlag){
|
|
|
return R.error("原密码不正确");
|
|
|
}
|
|
|
|
|
|
return R.ok();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 用户信息
|
|
|
*/
|
|
|
@RequestMapping("/info/{userId}")
|
|
|
@RequiresPermissions("sys:user:info")
|
|
|
public R info(@PathVariable("userId") Long userId){
|
|
|
SysUser user = sysUserService.selectById(userId);
|
|
|
|
|
|
//获取用户所属的角色列表
|
|
|
List<Long> roleIdList = sysUserRoleService.queryRoleIdList(userId);
|
|
|
user.setRoleIdList(roleIdList);
|
|
|
|
|
|
//获取附件列表
|
|
|
List<TMaterialFile> tMaterialFiles = tMaterialFileService.selectList(new EntityWrapper<TMaterialFile>().eq("parentid",userId));
|
|
|
List<Map<String,Object>> mapList = new ArrayList<>();
|
|
|
if(!tMaterialFiles.isEmpty()){
|
|
|
for(TMaterialFile tMaterialFile:tMaterialFiles){
|
|
|
Map<String,Object> map =new HashMap<>();
|
|
|
map.put("id",tMaterialFile.getId());
|
|
|
map.put("filePath",tMaterialFile.getSfilename());
|
|
|
map.put("fileName",tMaterialFile.getSaccessoryname());
|
|
|
mapList.add(map);
|
|
|
}
|
|
|
}
|
|
|
JSONArray json = (JSONArray) JSONArray.toJSON(mapList);
|
|
|
user.setFiles(json);
|
|
|
return R.ok().put("user", user);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 保存用户
|
|
|
*/
|
|
|
@Log("保存用户")
|
|
|
@RequestMapping("/save")
|
|
|
@RequiresPermissions("sys:user:save")
|
|
|
public R save(@RequestBody SysUser user){
|
|
|
ValidatorUtils.validateEntity(user, AddGroup.class);
|
|
|
user.setCreateTime(new Date());
|
|
|
user.setCreateUserId(getUserId());
|
|
|
sysUserService.save(user);
|
|
|
tMaterialFileService.setTMaterialFilePrintId(user.getFiles(),user.getUserId()+"");
|
|
|
return R.ok();
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 修改用户
|
|
|
*/
|
|
|
@Log("修改用户")
|
|
|
@RequestMapping("/update")
|
|
|
@RequiresPermissions("sys:user:update")
|
|
|
public R update(@RequestBody SysUser user){
|
|
|
ValidatorUtils.validateEntity(user, UpdateGroup.class);
|
|
|
|
|
|
user.setCreateUserId(getUserId());
|
|
|
sysUserService.update(user);
|
|
|
tMaterialFileService.setTMaterialFilePrintId(user.getFiles(),user.getUserId()+"");
|
|
|
return R.ok();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 删除用户
|
|
|
*/
|
|
|
@Log("删除用户")
|
|
|
@RequestMapping("/delete")
|
|
|
@RequiresPermissions("sys:user:delete")
|
|
|
public R delete(@RequestBody Long[] userIds){
|
|
|
if(ArrayUtils.contains(userIds, 1L)){
|
|
|
return R.error("系统管理员不能删除");
|
|
|
}
|
|
|
|
|
|
if(ArrayUtils.contains(userIds, getUserId())){
|
|
|
return R.error("当前用户不能删除");
|
|
|
}
|
|
|
|
|
|
sysUserService.deleteBatch(userIds);
|
|
|
|
|
|
return R.ok();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取用户
|
|
|
*/
|
|
|
@Log("获取用户")
|
|
|
@RequestMapping("/getUsers")
|
|
|
public R getUsers(){
|
|
|
List<SysUser> users = sysUserService.selectList(new EntityWrapper<SysUser>().orderBy(true,"create_time",false));
|
|
|
return R.ok().put("users",users);
|
|
|
}
|
|
|
|
|
|
@Autowired
|
|
|
private SysSlxxbService sysSlxxbService;
|
|
|
|
|
|
/**
|
|
|
* 所有用户列表
|
|
|
*/
|
|
|
@RequestMapping("/yjlist")
|
|
|
@RequiresPermissions("sys:user:yjlist")
|
|
|
public R yjlist(@RequestParam Map<String, Object> params) throws UnknownHostException {
|
|
|
//查询列表数据
|
|
|
SysUser dluser = getUser();
|
|
|
//管理远看全部
|
|
|
List<SysUserRole> sysUserRolesone = sysUserRoleService.selectList(new EntityWrapper<SysUserRole>().eq("user_id",dluser.getUserId()));
|
|
|
String usernameParam = dluser.getUsername();
|
|
|
if(sysUserRolesone.size()>0){
|
|
|
for(int i=0;i<sysUserRolesone.size();i++){
|
|
|
SysUserRole sysUserRole = sysUserRolesone.get(i);
|
|
|
if((sysUserRole.getRoleId()+"").equals("1")){
|
|
|
usernameParam = null;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
params.put("usernameParam",usernameParam);
|
|
|
Query query = new Query(params);
|
|
|
Page<SysUser> pageUtil = new Page<SysUser>(query.getPage(), query.getLimit());
|
|
|
Page<SysUser> page = sysUserService.queryPageList(pageUtil,query);
|
|
|
if(page.getRecords().size()>0){
|
|
|
for(int i=0;i<page.getRecords().size();i++){
|
|
|
SysUser sysUser = page.getRecords().get(i);
|
|
|
List<SysUserRole> sysUserRoles = sysUserRoleService.selectList(new EntityWrapper<SysUserRole>().eq("user_id",sysUser.getUserId()));
|
|
|
String roalArraystr = "";
|
|
|
if(sysUserRoles != null && sysUserRoles.size()>0){
|
|
|
for(int j=0;j<sysUserRoles.size();j++){
|
|
|
SysRole sysRole = sysRoleService.selectById(sysUserRoles.get(j).getRoleId());
|
|
|
if(sysRole != null){
|
|
|
roalArraystr = sysRole.getRoleName()+","+roalArraystr;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
sysUser.setRoalArraystr(roalArraystr);//显示角色信息
|
|
|
|
|
|
/**
|
|
|
* 设置头像信息
|
|
|
*/
|
|
|
List<TMaterialFile> tMaterialFileList = tMaterialFileService.selectList(new EntityWrapper<TMaterialFile>().eq("parentid",sysUser.getUserId()));
|
|
|
SysUserToken sysUserToken = sysUserTokenService.selectOne(new EntityWrapper<SysUserToken>().eq("user_id", getUserId()));
|
|
|
InetAddress address = InetAddress.getLocalHost();
|
|
|
sysUser.setPhotopath(tMaterialFileList != null && tMaterialFileList.size()>0?"http://"+address.getHostAddress() +":"+serverport+"/"+servercontextpath+"/upload/"+tMaterialFileList.get(0).getSfilename()+"?token="+sysUserToken.getToken():"img/usermm.jpg");
|
|
|
|
|
|
|
|
|
//预警走势算法计算
|
|
|
List<SysSlxxb> sysZySlxxbs = sysSlxxbService.selectList(new EntityWrapper<SysSlxxb>().eq("username",sysUser.getUsername()).eq("type","1").orderBy(true,"jcsj",false));
|
|
|
List<SysSlxxb> sysYySlxxbs = sysSlxxbService.selectList(new EntityWrapper<SysSlxxb>().eq("username",sysUser.getUsername()).eq("type","2").orderBy(true,"jcsj",false));
|
|
|
Map zyMap = getYcjg(sysZySlxxbs);
|
|
|
Map yyMap = getYcjg(sysYySlxxbs);
|
|
|
sysUser.setZyycjg(zyMap.get("ycjg")+"");
|
|
|
sysUser.setYyycjg(yyMap.get("ycjg")+"");
|
|
|
|
|
|
sysUser.setZysfbj(zyMap.get("sfbj")+"");
|
|
|
sysUser.setYysfbj(yyMap.get("sfbj")+"");
|
|
|
|
|
|
}
|
|
|
}
|
|
|
return R.ok().put("page", page);
|
|
|
}
|
|
|
|
|
|
//获取预测结果
|
|
|
private Map getYcjg(List<SysSlxxb> sysSlxxbs){
|
|
|
String ycjg = "";
|
|
|
String sfbj = "";
|
|
|
List<Double> x = new ArrayList<>();
|
|
|
List<Double> y = new ArrayList<>();
|
|
|
// x.add(2019.0); y.add(10.0);
|
|
|
// x.add(2020.0); y.add(20.0);
|
|
|
// x.add(2021.0); y.add(22.0);
|
|
|
// x.add(2022.0); y.add(30.0);
|
|
|
// x.add(2023.0); y.add(33.0);
|
|
|
if(sysSlxxbs.size()>=5){
|
|
|
for (int i = 1; i <= sysSlxxbs.size(); i++) {
|
|
|
x.add(i+2019.0); y.add(sysSlxxbs.size()+0.0);
|
|
|
}
|
|
|
|
|
|
// 训练模型
|
|
|
double[] coefficients = train(x, y);
|
|
|
// 预测j结果值
|
|
|
double jgz = predict(coefficients, sysSlxxbs.size()+1+2019.0);
|
|
|
System.out.println("预测j结果值:" + jgz);
|
|
|
System.out.println("最后数量:" + sysSlxxbs.get(sysSlxxbs.size()-1).getSlj());
|
|
|
if(jgz < sysSlxxbs.get(sysSlxxbs.size()-1).getSlj()){
|
|
|
ycjg = "目前态势是你的视力越来越差";
|
|
|
sfbj = "1";
|
|
|
System.out.println(ycjg);
|
|
|
|
|
|
}else {
|
|
|
ycjg = "目前态势是你的视力越来越好";
|
|
|
System.out.println(ycjg);
|
|
|
sfbj = "2";
|
|
|
}
|
|
|
}else {
|
|
|
ycjg = "检测数量不足五条无法进行预测评估";
|
|
|
System.out.println(ycjg);
|
|
|
sfbj = "2";
|
|
|
}
|
|
|
Map map = new HashMap();
|
|
|
map.put("ycjg",ycjg);
|
|
|
map.put("sfbj",sfbj);
|
|
|
return map;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 训练模型
|
|
|
public static double[] train(List<Double> x, List<Double> y) {
|
|
|
int n = x.size();
|
|
|
double xSum = 0.0, ySum = 0.0, xySum = 0.0, xxSum = 0.0;
|
|
|
for (int i = 0; i < n; i++) {
|
|
|
xSum += x.get(i);
|
|
|
ySum += y.get(i);
|
|
|
xySum += x.get(i) * y.get(i);
|
|
|
xxSum += x.get(i) * x.get(i);
|
|
|
}
|
|
|
double xMean = xSum / n;
|
|
|
double yMean = ySum / n;
|
|
|
double beta1 = (xySum - n * xMean * yMean) / (xxSum - n * xMean * xMean);
|
|
|
double beta0 = yMean - beta1 * xMean;
|
|
|
double[] coefficients = new double[2];
|
|
|
coefficients[0] = beta0;
|
|
|
coefficients[1] = beta1;
|
|
|
return coefficients;
|
|
|
}
|
|
|
// 预测
|
|
|
public static double predict(double[] coefficients, double x) {
|
|
|
double beta0 = coefficients[0];
|
|
|
double beta1 = coefficients[1];
|
|
|
return beta0 + beta1 * x;
|
|
|
}
|
|
|
}
|