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 params) throws UnknownHostException { //查询列表数据 SysUser dluser = getUser(); //管理远看全部 List sysUserRolesone = sysUserRoleService.selectList(new EntityWrapper().eq("user_id",dluser.getUserId())); String usernameParam = dluser.getUsername(); if(sysUserRolesone.size()>0){ for(int i=0;i pageUtil = new Page(query.getPage(), query.getLimit()); Page page = sysUserService.queryPageList(pageUtil,query); if(page.getRecords().size()>0){ for(int i=0;i sysUserRoles = sysUserRoleService.selectList(new EntityWrapper().eq("user_id",sysUser.getUserId())); String roalArraystr = ""; if(sysUserRoles != null && sysUserRoles.size()>0){ for(int j=0;j tMaterialFileList = tMaterialFileService.selectList(new EntityWrapper().eq("parentid",sysUser.getUserId())); SysUserToken sysUserToken = sysUserTokenService.selectOne(new EntityWrapper().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().eq("user_id", user.getUserId())); List tMaterialFileList = tMaterialFileService.selectList(new EntityWrapper().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 roleIdList = sysUserRoleService.queryRoleIdList(userId); user.setRoleIdList(roleIdList); //获取附件列表 List tMaterialFiles = tMaterialFileService.selectList(new EntityWrapper().eq("parentid",userId)); List> mapList = new ArrayList<>(); if(!tMaterialFiles.isEmpty()){ for(TMaterialFile tMaterialFile:tMaterialFiles){ Map 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 users = sysUserService.selectList(new EntityWrapper().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 params) throws UnknownHostException { //查询列表数据 SysUser dluser = getUser(); //管理远看全部 List sysUserRolesone = sysUserRoleService.selectList(new EntityWrapper().eq("user_id",dluser.getUserId())); String usernameParam = dluser.getUsername(); if(sysUserRolesone.size()>0){ for(int i=0;i pageUtil = new Page(query.getPage(), query.getLimit()); Page page = sysUserService.queryPageList(pageUtil,query); if(page.getRecords().size()>0){ for(int i=0;i sysUserRoles = sysUserRoleService.selectList(new EntityWrapper().eq("user_id",sysUser.getUserId())); String roalArraystr = ""; if(sysUserRoles != null && sysUserRoles.size()>0){ for(int j=0;j tMaterialFileList = tMaterialFileService.selectList(new EntityWrapper().eq("parentid",sysUser.getUserId())); SysUserToken sysUserToken = sysUserTokenService.selectOne(new EntityWrapper().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 sysZySlxxbs = sysSlxxbService.selectList(new EntityWrapper().eq("username",sysUser.getUsername()).eq("type","1").orderBy(true,"jcsj",false)); List sysYySlxxbs = sysSlxxbService.selectList(new EntityWrapper().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 sysSlxxbs){ String ycjg = ""; String sfbj = ""; List x = new ArrayList<>(); List 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 x, List 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; } }