bug修复
This commit is contained in:
parent
94d1209005
commit
f8b4739f80
35
src/main/java/com/zhgd/xmgl/base/EmailService.java
Normal file
35
src/main/java/com/zhgd/xmgl/base/EmailService.java
Normal file
@ -0,0 +1,35 @@
|
||||
package com.zhgd.xmgl.base;
|
||||
|
||||
/**
|
||||
* @author heshi
|
||||
*/
|
||||
|
||||
public interface EmailService {
|
||||
/**
|
||||
* 发送文本邮件
|
||||
*
|
||||
* @param to 收件人
|
||||
* @param subject 主题
|
||||
* @param content 内容
|
||||
*/
|
||||
void sendSimpleMail(String to, String subject, String content);
|
||||
|
||||
/**
|
||||
* 发送HTML邮件
|
||||
*
|
||||
* @param to 收件人
|
||||
* @param subject 主题
|
||||
* @param content 内容
|
||||
*/
|
||||
public void sendHtmlMail(String to, String subject, String content);
|
||||
|
||||
/**
|
||||
* 发送带附件的邮件
|
||||
*
|
||||
* @param to 收件人
|
||||
* @param subject 主题
|
||||
* @param content 内容
|
||||
* @param filePath 附件
|
||||
*/
|
||||
public void sendAttachmentsMail(String to, String subject, String content, String filePath);
|
||||
}
|
||||
@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.websocket.*;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@ -35,7 +36,7 @@ public class SafetyHatWSClient {
|
||||
|
||||
@OnOpen
|
||||
public void open(Session session) {
|
||||
log.info("SafetyHatWSClient客户端:" + id + ",连接服务端...");
|
||||
log.info("SafetyHatWSClient连接客户端:" + id + ",连接服务端...");
|
||||
this.session = session;
|
||||
}
|
||||
|
||||
@ -52,6 +53,7 @@ public class SafetyHatWSClient {
|
||||
JSONObject jo = JSON.parseObject(message);
|
||||
String cmd = jo.getString("cmd");
|
||||
if (Objects.equals(cmd, "ma_login")) {
|
||||
log.info("SafetyHatWSClient登录......");
|
||||
//先登录
|
||||
Boolean status = jo.getBoolean("status");
|
||||
if (status != null && status) {
|
||||
@ -134,7 +136,7 @@ public class SafetyHatWSClient {
|
||||
|
||||
@OnClose
|
||||
public void onClose() {
|
||||
log.info("SafetyHatWSClient客户端:" + id + ",服务端服务端断开连接");
|
||||
log.info("SafetyHatWSClient关闭客户端:" + id + ",服务端服务端断开连接");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -18,7 +18,9 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -262,4 +264,25 @@ public class CompanyController {
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询某个用户的所属组织sn列表", notes = "查询某个用户的所属组织sn列表", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "userId", value = "用户id", paramType = "body", required = true, dataType = "String"),
|
||||
})
|
||||
@PostMapping(value = "/getOrgSnListByUserId")
|
||||
public Result<List<String>> getOrgSnListByUserId(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
|
||||
return Result.success(companyService.getOrgSnListByUserId(paramMap));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "修改租户的组织", notes = "修改租户的组织", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "userId", value = "用户id", paramType = "body", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "projectSns", value = "项目sn(多个以,分割)", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "companySns", value = "企业sn(多个以,分割)", paramType = "body", required = false, dataType = "String"),
|
||||
})
|
||||
@PostMapping(value = "/updateTenantOrg")
|
||||
public Result updateTenantOrg(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
|
||||
companyService.updateTenantOrg(paramMap);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.zhgd.xmgl.modules.basicdata.controller;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@ -9,7 +10,6 @@ import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.jeecg.common.util.oConvertUtils;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.OperationLog;
|
||||
import com.zhgd.xmgl.modules.basicdata.service.IOperationLogService;
|
||||
import com.zhgd.xmgl.modules.party.entity.PartyPromotionalVideo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
@ -51,27 +51,29 @@ public class OperationLogController {
|
||||
*/
|
||||
@ApiOperation(value = "分页列表查询操作日志表信息", notes = "分页列表查询操作日志表信息", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "userName", value = "操作人", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "operName", value = "操作名称", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "startTime", value = "开始时间,格式2021-08-15", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "endTime", value = "结束时间,格式2021-08-15", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "sn", value = "项目SN或企业sn", paramType = "body", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "operModul", value = "功能模块", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "body", required = true, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "body", required = true, dataType = "Integer"),
|
||||
})
|
||||
@ApiImplicitParam(name = "userName", value = "操作人", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "operName", value = "操作名称", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "startTime", value = "开始时间,格式2021-08-15", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "endTime", value = "结束时间,格式2021-08-15", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "sn", value = "项目SN或企业sn", paramType = "body", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "operModul", value = "功能模块", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "body", required = true, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "body", required = true, dataType = "Integer"),
|
||||
})
|
||||
@PostMapping(value = "/list")
|
||||
public Result<IPage<EntityMap>> queryPageList(@RequestBody Map<String,Object> map) {
|
||||
public Result<IPage<OperationLog>> queryPageList(@RequestBody Map<String, Object> map) {
|
||||
return Result.success(operationLogService.selectOperationLogPage(map));
|
||||
}
|
||||
/**
|
||||
* 添加
|
||||
* @param operationLog
|
||||
* @return
|
||||
*/
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param operationLog
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "添加操作日志表信息", notes = "添加操作日志表信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<OperationLog> add(@RequestBody OperationLog operationLog) {
|
||||
public Result<OperationLog> add(@RequestBody OperationLog operationLog) {
|
||||
Result<OperationLog> result = new Result<OperationLog>();
|
||||
try {
|
||||
operationLogService.save(operationLog);
|
||||
@ -146,35 +148,20 @@ public class OperationLogController {
|
||||
result.setSuccess(true);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "导出excel操作日志表信息", notes = "导出excel操作日志表信息", httpMethod = "POST")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
|
||||
//// Step.1 组装查询条件
|
||||
//QueryWrapper<PartyPromotionalVideo> queryWrapper = null;
|
||||
//try {
|
||||
// String paramsStr = request.getParameter("paramsStr");
|
||||
// if (oConvertUtils.isNotEmpty(paramsStr)) {
|
||||
// String deString = URLDecoder.decode(paramsStr, "UTF-8");
|
||||
// PartyPromotionalVideo partyPromotionalVideo = JSON.parseObject(deString, PartyPromotionalVideo.class);
|
||||
// queryWrapper = QueryGenerator.initQueryWrapper(partyPromotionalVideo, request.getParameterMap());
|
||||
// }
|
||||
//} catch (UnsupportedEncodingException e) {
|
||||
// e.printStackTrace();
|
||||
//}
|
||||
//
|
||||
////Step.2 AutoPoi 导出Excel
|
||||
//ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
|
||||
//List<PartyPromotionalVideo> pageList = s.list(queryWrapper);
|
||||
////导出文件名称
|
||||
//mv.addObject(NormalExcelConstants.FILE_NAME, "宣传视频列表");
|
||||
//mv.addObject(NormalExcelConstants.CLASS, PartyPromotionalVideo.class);
|
||||
//mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("宣传视频列表数据", "导出人:Jeecg", "导出信息"));
|
||||
//mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
|
||||
//return mv;
|
||||
return null;
|
||||
@ApiOperation(value = "导出excel操作日志表信息", notes = "导出excel操作日志表信息", httpMethod = "POST")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(@RequestBody Map<String, Object> map) {
|
||||
IPage<OperationLog> p = operationLogService.selectOperationLogPage(map);
|
||||
List<OperationLog> pageList = p.getRecords();
|
||||
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
|
||||
mv.addObject(NormalExcelConstants.FILE_NAME, "宣传视频列表");
|
||||
mv.addObject(NormalExcelConstants.CLASS, OperationLog.class);
|
||||
mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("宣传视频列表数据", "导出人:Jeecg", "导出信息"));
|
||||
mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
|
||||
return mv;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -212,4 +212,20 @@ public class SystemUserController {
|
||||
return systemUserService.deleteZjwjUser(systemUser);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "星纵修改密码", notes = "星纵修改密码", httpMethod = "POST")
|
||||
@PostMapping(value = "/xz/updatePw")
|
||||
public Result xzUpdatePw(@RequestBody SystemUser systemUser) {
|
||||
systemUserService.xzUpdatePw(systemUser);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "根据企业或项目SN查找新用户(租户)列表", notes = "根据企业或项目SN查找新用户(租户)列表", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "sn", required = true, value = "企业或项目SN", paramType = "body"),
|
||||
})
|
||||
@PostMapping(value = "/getTenantListBySn")
|
||||
public Result<List<SystemUser>> getTenantListBySn(@RequestBody Map<String, Object> map) {
|
||||
return Result.success(systemUserService.getTenantListBySn(map));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package com.zhgd.xmgl.modules.basicdata.entity;
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
@ -66,14 +67,25 @@ public class OperationLog implements Serializable {
|
||||
@Excel(name = "请求URI", width = 15)
|
||||
@ApiModelProperty(value="请求URI")
|
||||
private java.lang.String operUri ;
|
||||
/**请求IP*/
|
||||
@Excel(name = "请求IP", width = 15)
|
||||
@ApiModelProperty(value="请求IP")
|
||||
private java.lang.String operIp ;
|
||||
/**操作时间*/
|
||||
@Excel(name = "操作时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value="操作时间")
|
||||
private java.util.Date operCreateTime ;
|
||||
/**
|
||||
* 请求IP
|
||||
*/
|
||||
@Excel(name = "请求IP", width = 15)
|
||||
@ApiModelProperty(value = "请求IP")
|
||||
private java.lang.String operIp;
|
||||
/**
|
||||
* 操作时间
|
||||
*/
|
||||
@Excel(name = "操作时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "操作时间")
|
||||
private java.util.Date operCreateTime;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String account;
|
||||
@TableField(exist = false)
|
||||
private String realName;
|
||||
@TableField(exist = false)
|
||||
private String operLogTime;
|
||||
}
|
||||
|
||||
@ -85,11 +85,7 @@ public class SystemUser implements Serializable {
|
||||
@Excel(name = "企业或项目sn", width = 15)
|
||||
@ApiModelProperty(value = "企业或项目sn")
|
||||
private java.lang.String sn;
|
||||
/**
|
||||
* 账号类型,1系统管理员,2企业管理员账号,3企业区账号,4企业市账号,5项目账号,7项目人员账号
|
||||
*/
|
||||
@Excel(name = "账号类型,1系统管理员,2企业总部管理员账号,3区域账号,4城市账号,5项目账号,6项目子账号,7项目人员账号", width = 15)
|
||||
@ApiModelProperty(value = "账号类型,1系统管理员:jxjadmin,2企业管理员账号:17512009894,3企业区账号,4企业市账号,5项目账号(thhy,只能看一个项目),6项目子账号(aq,比一个项目更小),7企业子账号:qyyszh(只能看到很多项目的账号):,8参建单位,9政务")
|
||||
@ApiModelProperty(value = "账号类型,1系统管理员:jxjadmin,2企业管理员账号:17512009894,3企业区账号,4企业市账号,5项目账号(thhy,只能看一个项目),6项目子账号(aq,比一个项目更小),7企业子账号:qyyszh(只能看到很多项目的账号):,8参建单位,9政务,10租户")
|
||||
private java.lang.Integer accountType;
|
||||
|
||||
@ApiModelProperty(value = "项目子账号绑定的劳务人员")
|
||||
@ -153,4 +149,14 @@ public class SystemUser implements Serializable {
|
||||
|
||||
@TableField(exist = false)
|
||||
private java.lang.String workerName;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "图形验证码")
|
||||
private java.lang.String graphValidateCode;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "图形验证码uuid")
|
||||
private java.lang.String graphValidateCodeUuid;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,68 @@
|
||||
package com.zhgd.xmgl.modules.basicdata.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
/**
|
||||
* @Description: 星纵-账号和企业或项目关联表
|
||||
* @author: pds
|
||||
* @date: 2024-03-22
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("xz_system_user_to_company_project")
|
||||
@ApiModel(value = "XzSystemUserToCompanyProject实体类", description = "XzSystemUserToCompanyProject")
|
||||
public class XzSystemUserToCompanyProject implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "id")
|
||||
private java.lang.Long id;
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
@Excel(name = "用户id", width = 15)
|
||||
@ApiModelProperty(value = "用户id")
|
||||
private java.lang.Long userId;
|
||||
/**
|
||||
* 项目sn或企业sn
|
||||
*/
|
||||
@Excel(name = "项目sn或企业sn", width = 15)
|
||||
@ApiModelProperty(value = "项目sn或企业sn")
|
||||
private java.lang.String sn;
|
||||
/**
|
||||
* 1企业sn2项目sn
|
||||
*/
|
||||
@Excel(name = "1企业sn2项目sn", width = 15)
|
||||
@ApiModelProperty(value = "1企业sn2项目sn")
|
||||
private java.lang.Integer type;
|
||||
/**
|
||||
* 创建时间 yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
@Excel(name = "创建时间 yyyy-MM-dd HH:mm:ss", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "创建时间 yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date createTime;
|
||||
/**
|
||||
* 更新时间 yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
@Excel(name = "更新时间 yyyy-MM-dd HH:mm:ss", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新时间 yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date updateTime;
|
||||
}
|
||||
@ -19,5 +19,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
@Mapper
|
||||
public interface OperationLogMapper extends BaseMapper<OperationLog> {
|
||||
|
||||
List<EntityMap> selectOperationLogPage(Page<EntityMap> page, @Param("param")Map<String, Object> map);
|
||||
List<OperationLog> selectOperationLogPage(Page<OperationLog> page, @Param("param") Map<String, Object> map);
|
||||
}
|
||||
|
||||
@ -3,12 +3,11 @@ package com.zhgd.xmgl.modules.basicdata.mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zhgd.jeecg.common.mybatis.EntityMap;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.security.core.parameters.P;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@ -49,4 +48,8 @@ public interface SystemUserMapper extends BaseMapper<SystemUser> {
|
||||
IPage<SystemUser> getZjwjUserPage(Page<SystemUser> p, @Param("s") SystemUser systemUser);
|
||||
|
||||
List<SystemUser> getZjwjUserList(@Param("s") SystemUser systemUser);
|
||||
|
||||
List<String> getOrgSnListByUserId(HashMap<String, Object> paramMap);
|
||||
|
||||
List<SystemUser> getTenantListBySn(Map<String, Object> map);
|
||||
}
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
package com.zhgd.xmgl.modules.basicdata.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.XzSystemUserToCompanyProject;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @Description: 星纵-账号和企业或项目关联表
|
||||
* @author: pds
|
||||
* @date: 2024-03-22
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface XzSystemUserToCompanyProjectMapper extends BaseMapper<XzSystemUserToCompanyProject> {
|
||||
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zhgd.xmgl.modules.basicdata.mapper.OperationLogMapper">
|
||||
|
||||
<select id="selectOperationLogPage" resultType="com.zhgd.jeecg.common.mybatis.EntityMap">
|
||||
<select id="selectOperationLogPage" resultType="com.zhgd.xmgl.modules.basicdata.entity.OperationLog">
|
||||
SELECT b.account,
|
||||
a.*,b.real_name,date_format(a.oper_create_time, '%Y-%m-%d %H:%i:%S') oper_log_time
|
||||
FROM operation_log a INNER JOIN system_user b ON a.oper_user_id=b.user_id
|
||||
|
||||
@ -191,4 +191,18 @@
|
||||
AND di.id = #{s.departmentId}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="getOrgSnListByUserId" resultType="java.lang.String">
|
||||
select xsutcp.sn from system_user su
|
||||
join xz_system_user_to_company_project xsutcp on su.user_id = xsutcp.user_id
|
||||
where su.user_id=#{userId}
|
||||
</select>
|
||||
|
||||
<select id="getTenantListBySn" resultType="com.zhgd.xmgl.modules.basicdata.entity.SystemUser">
|
||||
SELECT a.*, jb.job_name
|
||||
from system_user a
|
||||
join xz_system_user_to_company_project p on p.user_id=a.user_id
|
||||
LEFT JOIN organization_job jb ON a.job_id = jb.id
|
||||
WHERE p.sn = #{sn} and a.account_type=10
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zhgd.xmgl.modules.basicdata.mapper.XzSystemUserToCompanyProjectMapper">
|
||||
</mapper>
|
||||
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.zhgd.jeecg.common.mybatis.EntityMap;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.Company;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -61,4 +62,8 @@ public interface ICompanyService extends IService<Company> {
|
||||
void addHeadquarterCompany(Company company);
|
||||
|
||||
void updateHeadquarterCompany(Company company);
|
||||
|
||||
void updateTenantOrg(HashMap<String, Object> paramMap);
|
||||
|
||||
List<String> getOrgSnListByUserId(HashMap<String, Object> paramMap);
|
||||
}
|
||||
|
||||
@ -15,5 +15,5 @@ import java.util.Map;
|
||||
*/
|
||||
public interface IOperationLogService extends IService<OperationLog> {
|
||||
|
||||
IPage<EntityMap> selectOperationLogPage(Map<String, Object> map);
|
||||
IPage<OperationLog> selectOperationLogPage(Map<String, Object> map);
|
||||
}
|
||||
|
||||
@ -73,4 +73,8 @@ public interface ISystemUserService extends IService<SystemUser> {
|
||||
List<SystemUser> getSystemUserList(Map<String, Object> map);
|
||||
|
||||
Map<String, Object> md5Login(Map<String, Object> map);
|
||||
|
||||
void xzUpdatePw(SystemUser systemUser);
|
||||
|
||||
List<SystemUser> getTenantListBySn(Map<String, Object> map);
|
||||
}
|
||||
|
||||
@ -0,0 +1,27 @@
|
||||
package com.zhgd.xmgl.modules.basicdata.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.XzSystemUserToCompanyProject;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 星纵-账号和企业或项目关联表
|
||||
* @author: pds
|
||||
* @date: 2024-03-22
|
||||
* @version: V1.0
|
||||
*/
|
||||
public interface IXzSystemUserToCompanyProjectService extends IService<XzSystemUserToCompanyProject> {
|
||||
|
||||
IPage<XzSystemUserToCompanyProject> queryPageList(HashMap<String, Object> paramMap);
|
||||
|
||||
List<XzSystemUserToCompanyProject> queryList(HashMap<String, Object> paramMap);
|
||||
|
||||
void add(XzSystemUserToCompanyProject xzSystemUserToCompanyProject);
|
||||
|
||||
void edit(XzSystemUserToCompanyProject xzSystemUserToCompanyProject);
|
||||
|
||||
void delete(String id);
|
||||
}
|
||||
@ -17,9 +17,11 @@ import com.zhgd.jeecg.common.mybatis.EntityMap;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.Company;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.CompanyConfig;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.XzSystemUserToCompanyProject;
|
||||
import com.zhgd.xmgl.modules.basicdata.mapper.CompanyConfigMapper;
|
||||
import com.zhgd.xmgl.modules.basicdata.mapper.CompanyMapper;
|
||||
import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper;
|
||||
import com.zhgd.xmgl.modules.basicdata.mapper.XzSystemUserToCompanyProjectMapper;
|
||||
import com.zhgd.xmgl.modules.basicdata.service.ICompanyService;
|
||||
import com.zhgd.xmgl.modules.project.entity.Project;
|
||||
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
||||
@ -60,6 +62,8 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
|
||||
private CompanyConfigMapper companyConfigMapper;
|
||||
@Autowired
|
||||
private PasswordEncoder passwordEncoder;
|
||||
@Autowired
|
||||
private XzSystemUserToCompanyProjectMapper xzSystemUserToCompanyProjectMapper;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getCompanyType(Map<String, Object> map) {
|
||||
@ -100,7 +104,7 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
|
||||
int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString());
|
||||
Page<EntityMap> page = new Page<>(pageNo, pageSize);
|
||||
|
||||
List<EntityMap> list = companyMapper.selectCompanyPage(page, map);
|
||||
List<EntityMap> list = companyMapper.selectCompanyPage(page, map);
|
||||
|
||||
for (EntityMap entityMap : list) {
|
||||
if (entityMap.get("expireTime") == null) {
|
||||
@ -623,6 +627,35 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
|
||||
systemUserMapper.update(su, new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getSn, company.getHeadquartersSn()).eq(SystemUser::getAccountType, 2));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTenantOrg(HashMap<String, Object> paramMap) {
|
||||
String userId = MapUtils.getString(paramMap, "userId");
|
||||
String projectSns = MapUtils.getString(paramMap, "projectSns");
|
||||
String companySns = MapUtils.getString(paramMap, "companySns");
|
||||
xzSystemUserToCompanyProjectMapper.delete(new LambdaQueryWrapper<XzSystemUserToCompanyProject>().eq(XzSystemUserToCompanyProject::getUserId, userId));
|
||||
insertTenantOrg(companySns, 1);
|
||||
insertTenantOrg(projectSns, 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getOrgSnListByUserId(HashMap<String, Object> paramMap) {
|
||||
return systemUserMapper.getOrgSnListByUserId(paramMap);
|
||||
}
|
||||
|
||||
private void insertTenantOrg(String sns, int type) {
|
||||
if (StringUtils.isNotBlank(sns)) {
|
||||
String[] snArr = StringUtils.split(sns, ",");
|
||||
for (int i = 0; i < snArr.length; i++) {
|
||||
String sn = snArr[i];
|
||||
XzSystemUserToCompanyProject to = new XzSystemUserToCompanyProject();
|
||||
to.setUserId(Long.valueOf(sn));
|
||||
to.setSn(sn);
|
||||
to.setType(type);
|
||||
xzSystemUserToCompanyProjectMapper.insert(to);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void checkHeadquarterCompanyParams(Company company) {
|
||||
String account = company.getAccount();
|
||||
if (StringUtils.isBlank(account)) {
|
||||
|
||||
@ -29,12 +29,12 @@ public class OperationLogServiceImpl extends ServiceImpl<OperationLogMapper, Ope
|
||||
private ICompanyService companyService;
|
||||
|
||||
@Override
|
||||
public IPage<EntityMap> selectOperationLogPage(Map<String, Object> param) {
|
||||
Map<String,Object> map=companyService.getCompanyType(param);
|
||||
public IPage<OperationLog> selectOperationLogPage(Map<String, Object> param) {
|
||||
Map<String, Object> map = companyService.getCompanyType(param);
|
||||
int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString());
|
||||
int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString());
|
||||
Page<EntityMap> page = new Page<>(pageNo, pageSize);
|
||||
List<EntityMap> list=operationLogMapper.selectOperationLogPage(page, map);
|
||||
Page<OperationLog> page = new Page<>(pageNo, pageSize);
|
||||
List<OperationLog> list = operationLogMapper.selectOperationLogPage(page, map);
|
||||
return page.setRecords(list);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1104,4 +1104,29 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void xzUpdatePw(SystemUser systemUser) {
|
||||
Object o = redisRepository.get(systemUser.getGraphValidateCodeUuid());
|
||||
if (o == null) {
|
||||
throw new OpenAlertException("验证码已过期");
|
||||
}
|
||||
String code = String.valueOf(o);
|
||||
if (!Objects.equals(code, systemUser.getGraphValidateCode())) {
|
||||
throw new OpenAlertException("验证码不正确");
|
||||
}
|
||||
systemUser.setPassword(null);
|
||||
String showPassword = systemUser.getShowPassword();
|
||||
if (StringUtils.isNotEmpty(showPassword)) {
|
||||
PwUtil.checkPwPattern(showPassword);
|
||||
systemUser.setPwUpdateTime(new Date());
|
||||
systemUser.setPassword(passwordEncoder.encode(showPassword));
|
||||
}
|
||||
systemUserMapper.updateById(systemUser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SystemUser> getTenantListBySn(Map<String, Object> map) {
|
||||
return baseMapper.getTenantListBySn(map);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,81 @@
|
||||
package com.zhgd.xmgl.modules.basicdata.service.impl;
|
||||
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.XzSystemUserToCompanyProject;
|
||||
import com.zhgd.xmgl.modules.basicdata.mapper.XzSystemUserToCompanyProjectMapper;
|
||||
import com.zhgd.xmgl.modules.basicdata.service.IXzSystemUserToCompanyProjectService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.xmgl.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import com.zhgd.xmgl.util.RefUtil;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
/**
|
||||
* @Description: 星纵-账号和企业或项目关联表
|
||||
* @author: pds
|
||||
* @date: 2024-03-22
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Service
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class XzSystemUserToCompanyProjectServiceImpl extends ServiceImpl<XzSystemUserToCompanyProjectMapper, XzSystemUserToCompanyProject> implements IXzSystemUserToCompanyProjectService {
|
||||
@Autowired
|
||||
private XzSystemUserToCompanyProjectMapper xzSystemUserToCompanyProjectMapper;
|
||||
|
||||
@Override
|
||||
public IPage<XzSystemUserToCompanyProject> queryPageList(HashMap<String, Object> paramMap) {
|
||||
QueryWrapper<XzSystemUserToCompanyProject> queryWrapper = getQueryWrapper(paramMap);
|
||||
Page<XzSystemUserToCompanyProject> page = PageUtil.getPage(paramMap);
|
||||
IPage<XzSystemUserToCompanyProject> pageList = this.page(page, queryWrapper);
|
||||
pageList.setRecords(dealList(pageList.getRecords()));
|
||||
return pageList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<XzSystemUserToCompanyProject> queryList(HashMap<String, Object> paramMap) {
|
||||
QueryWrapper<XzSystemUserToCompanyProject> queryWrapper = getQueryWrapper(paramMap);
|
||||
return dealList(this.list(queryWrapper));
|
||||
}
|
||||
|
||||
private QueryWrapper<XzSystemUserToCompanyProject> getQueryWrapper(HashMap<String, Object> paramMap) {
|
||||
String alias = "";
|
||||
QueryWrapper<XzSystemUserToCompanyProject> queryWrapper = QueryGenerator.initPageQueryWrapper(XzSystemUserToCompanyProject.class, paramMap, alias);
|
||||
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(XzSystemUserToCompanyProject::getId));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
private List<XzSystemUserToCompanyProject> dealList(List<XzSystemUserToCompanyProject> list) {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(XzSystemUserToCompanyProject xzSystemUserToCompanyProject) {
|
||||
xzSystemUserToCompanyProject.setId(null);
|
||||
baseMapper.insert(xzSystemUserToCompanyProject);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void edit(XzSystemUserToCompanyProject xzSystemUserToCompanyProject) {
|
||||
baseMapper.updateById(xzSystemUserToCompanyProject);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String id) {
|
||||
XzSystemUserToCompanyProject xzSystemUserToCompanyProject = baseMapper.selectById(id);
|
||||
if (xzSystemUserToCompanyProject == null) {
|
||||
throw new OpenAlertException("未找到对应实体");
|
||||
}
|
||||
baseMapper.deleteById(id);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@ -212,6 +213,26 @@ public class RtWorkTicketServiceImpl extends ServiceImpl<RtWorkTicketMapper, RtW
|
||||
.eq(RtWorkTicketToRiskSecurityLibraryType::getRtWorkTicketId, rtWorkTicket.getId()));
|
||||
insertRelIf(rtWorkTicket);
|
||||
baseMapper.updateById(rtWorkTicket);
|
||||
|
||||
boolean run = false;
|
||||
//更新null
|
||||
LambdaUpdateWrapper<RtWorkTicket> wrapper = new LambdaUpdateWrapper<RtWorkTicket>().eq(RtWorkTicket::getId, rtWorkTicket.getId());
|
||||
if (rtWorkTicket.getStartTime() == null) {
|
||||
wrapper.set(RtWorkTicket::getStartTime, null);
|
||||
run = true;
|
||||
}
|
||||
if (rtWorkTicket.getEndTime() == null) {
|
||||
wrapper.set(RtWorkTicket::getEndTime, null);
|
||||
run = true;
|
||||
}
|
||||
if (rtWorkTicket.getIssueDate() == null) {
|
||||
wrapper.set(RtWorkTicket::getIssueDate, null);
|
||||
run = true;
|
||||
}
|
||||
if (run) {
|
||||
baseMapper.update(null, wrapper);
|
||||
}
|
||||
|
||||
//中间表
|
||||
rtWorkTicketToVideoItemMapper.delete(new LambdaQueryWrapper<RtWorkTicketToVideoItem>()
|
||||
.eq(RtWorkTicketToVideoItem::getRtWorkTicketId, rtWorkTicket.getId()));
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
package com.zhgd.xmgl.modules.xz.captcha;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class ConfigBeanConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties(prefix = "login")
|
||||
public LoginProperties loginProperties() {
|
||||
return new LoginProperties();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
package com.zhgd.xmgl.modules.xz.captcha;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LoginCode {
|
||||
public static String prefix = "validCodeKey:";
|
||||
|
||||
/**
|
||||
* 验证码配置
|
||||
*/
|
||||
private LoginCodeEnum codeType;
|
||||
/**
|
||||
* 验证码有效期 分钟
|
||||
*/
|
||||
private Long expiration = 2L;
|
||||
/**
|
||||
* 验证码内容长度
|
||||
*/
|
||||
private int length = 2;
|
||||
/**
|
||||
* 验证码宽度
|
||||
*/
|
||||
private int width = 111;
|
||||
/**
|
||||
* 验证码高度
|
||||
*/
|
||||
private int height = 36;
|
||||
/**
|
||||
* 验证码字体
|
||||
*/
|
||||
private String fontName;
|
||||
/**
|
||||
* 字体大小
|
||||
*/
|
||||
private int fontSize = 25;
|
||||
|
||||
/**
|
||||
* 验证码前缀
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private String codeKey;
|
||||
|
||||
public LoginCodeEnum getCodeType() {
|
||||
return codeType;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
package com.zhgd.xmgl.modules.xz.captcha;
|
||||
|
||||
public enum LoginCodeEnum {
|
||||
/**
|
||||
* 算数
|
||||
*/
|
||||
ARITHMETIC,
|
||||
/**
|
||||
* 中文
|
||||
*/
|
||||
CHINESE,
|
||||
/**
|
||||
* 中文闪图
|
||||
*/
|
||||
CHINESE_GIF,
|
||||
/**
|
||||
* 闪图
|
||||
*/
|
||||
GIF,
|
||||
SPEC
|
||||
}
|
||||
@ -0,0 +1,96 @@
|
||||
package com.zhgd.xmgl.modules.xz.captcha;
|
||||
|
||||
import com.wf.captcha.*;
|
||||
import com.wf.captcha.base.Captcha;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Objects;
|
||||
|
||||
@Data
|
||||
@Component
|
||||
public class LoginProperties {
|
||||
|
||||
private LoginCode loginCode;
|
||||
|
||||
/**
|
||||
* 获取验证码生产类
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Captcha getCaptcha() {
|
||||
if (Objects.isNull(loginCode)) {
|
||||
loginCode = new LoginCode();
|
||||
if (Objects.isNull(loginCode.getCodeType())) {
|
||||
loginCode.setCodeType(LoginCodeEnum.ARITHMETIC);
|
||||
}
|
||||
|
||||
}
|
||||
return switchCaptcha(loginCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 依据配置信息生产验证码
|
||||
*
|
||||
* @param loginCode
|
||||
* @return
|
||||
*/
|
||||
private Captcha switchCaptcha(LoginCode loginCode) {
|
||||
Captcha captcha = null;
|
||||
synchronized (this) {
|
||||
switch (loginCode.getCodeType()) {
|
||||
case ARITHMETIC:
|
||||
captcha = new FixedArithmeticCaptcha(loginCode.getWidth(), loginCode.getHeight());
|
||||
captcha.setLen(loginCode.getLength());
|
||||
break;
|
||||
case CHINESE:
|
||||
captcha = new ChineseCaptcha(loginCode.getWidth(), loginCode.getHeight());
|
||||
captcha.setLen(loginCode.getLength());
|
||||
break;
|
||||
case CHINESE_GIF:
|
||||
captcha = new ChineseGifCaptcha(loginCode.getWidth(), loginCode.getHeight());
|
||||
captcha.setLen(loginCode.getLength());
|
||||
break;
|
||||
case GIF:
|
||||
captcha = new GifCaptcha(loginCode.getWidth(), loginCode.getHeight());
|
||||
captcha.setLen(loginCode.getLength());
|
||||
break;
|
||||
case SPEC:
|
||||
captcha = new SpecCaptcha(loginCode.getWidth(), loginCode.getHeight());
|
||||
captcha.setLen(loginCode.getLength());
|
||||
default:
|
||||
System.out.println("验证码配置信息错误!正确配置查看 LoginCodeEnum ");
|
||||
|
||||
}
|
||||
}
|
||||
if (StringUtils.isNotBlank(loginCode.getFontName())) {
|
||||
captcha.setFont(new Font(loginCode.getFontName(), Font.PLAIN, loginCode.getFontSize()));
|
||||
}
|
||||
return captcha;
|
||||
}
|
||||
|
||||
static class FixedArithmeticCaptcha extends ArithmeticCaptcha {
|
||||
public FixedArithmeticCaptcha(int width, int height) {
|
||||
super(width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected char[] alphas() {
|
||||
// 生成随机数字和运算符
|
||||
int n1 = num(1, 10), n2 = num(1, 10);
|
||||
int opt = num(3);
|
||||
|
||||
// 计算结果
|
||||
int res = new int[]{n1 + n2, n1 - n2, n1 * n2}[opt];
|
||||
// 转换为字符运算符
|
||||
char optChar = "+-x".charAt(opt);
|
||||
|
||||
this.setArithmeticString(String.format("%s%c%s=?", n1, optChar, n2));
|
||||
this.chars = String.valueOf(res);
|
||||
|
||||
return chars.toCharArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,133 @@
|
||||
package com.zhgd.xmgl.modules.xz.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzNotice;
|
||||
import com.zhgd.xmgl.modules.xz.service.IXzNoticeService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.simpleframework.xml.core.Validate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* @Title: Controller
|
||||
* @Description: 星纵-消息中心
|
||||
* @author: pds
|
||||
* @date: 2024-03-22
|
||||
* @version: V1.0
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/xmgl/xzNotice")
|
||||
@Slf4j
|
||||
@Api(tags = "星纵-消息中心相关Api")
|
||||
public class XzNoticeController {
|
||||
@Autowired
|
||||
private IXzNoticeService xzNoticeService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "分页列表查询星纵-消息中心信息", notes = "分页列表查询星纵-消息中心信息", httpMethod = "GET")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"),
|
||||
})
|
||||
@GetMapping(value = "/page")
|
||||
public Result<IPage<XzNotice>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
|
||||
return Result.success(xzNoticeService.queryPageList(paramMap));
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "列表查询星纵-消息中心信息", notes = "列表查询星纵-消息中心信息", httpMethod = "GET")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<List<XzNotice>> queryList(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
|
||||
return Result.success(xzNoticeService.queryList(paramMap));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param xzNotice
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "添加星纵-消息中心信息", notes = "添加星纵-消息中心信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<XzNotice> add(@RequestBody @Validate XzNotice xzNotice) {
|
||||
xzNoticeService.add(xzNotice);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param xzNotice
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "编辑星纵-消息中心信息", notes = "编辑星纵-消息中心信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/edit")
|
||||
public Result<XzNotice> edit(@RequestBody XzNotice xzNotice) {
|
||||
xzNoticeService.edit(xzNotice);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "删除星纵-消息中心信息", notes = "删除星纵-消息中心信息", httpMethod = "POST")
|
||||
@ApiImplicitParam(name = "id", value = "星纵-消息中心ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}")
|
||||
@PostMapping(value = "/delete")
|
||||
public Result<XzNotice> delete(@ApiIgnore @RequestBody HashMap<String, Object> map) {
|
||||
xzNoticeService.delete(MapUtils.getString(map, "id"));
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "通过id查询星纵-消息中心信息", notes = "通过id查询星纵-消息中心信息", httpMethod = "GET")
|
||||
@ApiImplicitParam(name = "id", value = "星纵-消息中心ID", paramType = "query", required = true, dataType = "Integer")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<XzNotice> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
Result<XzNotice> result = new Result<XzNotice>();
|
||||
XzNotice xzNotice = xzNoticeService.getById(id);
|
||||
if (xzNotice == null) {
|
||||
result.error500("未找到对应实体");
|
||||
} else {
|
||||
result.setResult(xzNotice);
|
||||
result.setSuccess(true);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@ApiOperation(value = "标为已读", notes = "标为已读", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "ids", value = "星纵-消息中心IDs(选择的消息已读)", paramType = "body", required = false, dataType = "String"),
|
||||
@ApiImplicitParam(name = "accountId", value = "推送到的账号ID(此账号下所有消息已读)", paramType = "body", required = false, dataType = "String"),
|
||||
})
|
||||
@PostMapping(value = "/markRead")
|
||||
public Result<XzNotice> markRead(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
|
||||
xzNoticeService.markRead(paramMap);
|
||||
return Result.ok();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,167 @@
|
||||
package com.zhgd.xmgl.modules.xz.controller;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.wf.captcha.base.Captcha;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import com.zhgd.redis.lock.RedisRepository;
|
||||
import com.zhgd.xmgl.modules.xz.captcha.LoginCode;
|
||||
import com.zhgd.xmgl.modules.xz.captcha.LoginCodeEnum;
|
||||
import com.zhgd.xmgl.modules.xz.captcha.LoginProperties;
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzRegistry;
|
||||
import com.zhgd.xmgl.modules.xz.service.IXzRegistryService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.simpleframework.xml.core.Validate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
* @Title: Controller
|
||||
* @Description: 星纵-用户和供应商注册
|
||||
* @author: pds
|
||||
* @date: 2024-03-21
|
||||
* @version: V1.0
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/xmgl/xzRegistry")
|
||||
@Slf4j
|
||||
@Api(tags = "星纵-用户和供应商注册相关Api")
|
||||
public class XzRegistryController {
|
||||
@Autowired
|
||||
private IXzRegistryService xzRegistryService;
|
||||
@Autowired
|
||||
private LoginProperties loginProperties;
|
||||
@Autowired
|
||||
private RedisRepository redisRepository;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "分页列表查询星纵-用户和供应商注册信息", notes = "分页列表查询星纵-用户和供应商注册信息", httpMethod = "GET")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"),
|
||||
})
|
||||
@GetMapping(value = "/page")
|
||||
public Result<IPage<XzRegistry>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
|
||||
return Result.success(xzRegistryService.queryPageList(paramMap));
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "列表查询星纵-用户和供应商注册信息", notes = "列表查询星纵-用户和供应商注册信息", httpMethod = "GET")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<List<XzRegistry>> queryList(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
|
||||
return Result.success(xzRegistryService.queryList(paramMap));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param xzRegistry
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "添加星纵-用户和供应商注册信息", notes = "添加星纵-用户和供应商注册信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<XzRegistry> add(@RequestBody @Validate XzRegistry xzRegistry) {
|
||||
xzRegistryService.add(xzRegistry);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param xzRegistry
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "编辑星纵-用户和供应商注册信息", notes = "编辑星纵-用户和供应商注册信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/edit")
|
||||
public Result<XzRegistry> edit(@RequestBody XzRegistry xzRegistry) {
|
||||
xzRegistryService.edit(xzRegistry);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "删除星纵-用户和供应商注册信息", notes = "删除星纵-用户和供应商注册信息", httpMethod = "POST")
|
||||
@ApiImplicitParam(name = "id", value = "星纵-用户和供应商注册ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}")
|
||||
@PostMapping(value = "/delete")
|
||||
public Result<XzRegistry> delete(@ApiIgnore @RequestBody HashMap<String, Object> map) {
|
||||
xzRegistryService.delete(MapUtils.getString(map, "id"));
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "通过id查询星纵-用户和供应商注册信息", notes = "通过id查询星纵-用户和供应商注册信息", httpMethod = "GET")
|
||||
@ApiImplicitParam(name = "id", value = "星纵-用户和供应商注册ID", paramType = "query", required = true, dataType = "Integer")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<XzRegistry> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
Result<XzRegistry> result = new Result<XzRegistry>();
|
||||
XzRegistry xzRegistry = xzRegistryService.getById(id);
|
||||
if (xzRegistry == null) {
|
||||
result.error500("未找到对应实体");
|
||||
} else {
|
||||
result.setResult(xzRegistry);
|
||||
result.setSuccess(true);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "获取验证码", notes = "获取验证码")
|
||||
@GetMapping("/validCode")
|
||||
public Result getCode() {
|
||||
Captcha captcha = loginProperties.getCaptcha();
|
||||
String uuid = LoginCode.prefix + IdUtil.simpleUUID();
|
||||
//当验证码类型为 arithmetic时且长度 >= 2 时,captcha.text()的结果有几率为浮点型
|
||||
String captchaValue = captcha.text();
|
||||
if (captcha.getCharType() - 1 == LoginCodeEnum.ARITHMETIC.ordinal() && captchaValue.contains(".")) {
|
||||
captchaValue = captchaValue.split("\\.")[0];
|
||||
}
|
||||
// 保存
|
||||
redisRepository.set(uuid, captchaValue, loginProperties.getLoginCode().getExpiration());
|
||||
// 验证码信息
|
||||
Map<String, Object> imgResult = new HashMap<String, Object>(2) {{
|
||||
put("img", captcha.toBase64());
|
||||
put("graphValidateCodeUuid", uuid);
|
||||
}};
|
||||
return Result.success(imgResult);
|
||||
|
||||
}
|
||||
|
||||
@ApiOperation(value = "审批", notes = "审批", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "id", value = "星纵-用户和供应商注册ID", paramType = "body", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "approvalProcess", value = "审核进程2审批通过3拒绝申请", paramType = "body", required = true, dataType = "Integer"),
|
||||
})
|
||||
@PostMapping(value = "/approval")
|
||||
public Result<XzRegistry> approval(@RequestBody XzRegistry xzRegistry) {
|
||||
xzRegistryService.approval(xzRegistry);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
}
|
||||
102
src/main/java/com/zhgd/xmgl/modules/xz/entity/XzNotice.java
Normal file
102
src/main/java/com/zhgd/xmgl/modules/xz/entity/XzNotice.java
Normal file
@ -0,0 +1,102 @@
|
||||
package com.zhgd.xmgl.modules.xz.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
/**
|
||||
* @Description: 星纵-消息中心
|
||||
* @author: pds
|
||||
* @date: 2024-03-22
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("xz_notice")
|
||||
@ApiModel(value = "XzNotice实体类", description = "XzNotice")
|
||||
public class XzNotice implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "id")
|
||||
private java.lang.Long id;
|
||||
@ApiModelProperty(value = "推送到的账号ID")
|
||||
private java.lang.Long accountId;
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
@Excel(name = "标题", width = 15)
|
||||
@ApiModelProperty(value = "标题")
|
||||
private java.lang.String title;
|
||||
/**
|
||||
* 内容
|
||||
*/
|
||||
@Excel(name = "内容", width = 15)
|
||||
@ApiModelProperty(value = "内容")
|
||||
private java.lang.String content;
|
||||
/**
|
||||
* 类别1通知公告2风险预警
|
||||
*/
|
||||
@Excel(name = "类别1通知公告2风险预警", width = 15)
|
||||
@ApiModelProperty(value = "类别1通知公告2风险预警3审批流程4任务待办5其他")
|
||||
private java.lang.Integer type;
|
||||
/**
|
||||
* 应用
|
||||
*/
|
||||
@Excel(name = "应用", width = 15)
|
||||
@ApiModelProperty(value = "应用")
|
||||
private java.lang.Integer app;
|
||||
/**
|
||||
* 标签
|
||||
*/
|
||||
@Excel(name = "标签", width = 15)
|
||||
@ApiModelProperty(value = "标签")
|
||||
private java.lang.Integer tag;
|
||||
/**
|
||||
* 操作/接收时间
|
||||
*/
|
||||
@Excel(name = "操作/接收时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "操作/接收时间")
|
||||
private java.util.Date operateTime;
|
||||
/**
|
||||
* 1已读0未读
|
||||
*/
|
||||
@Excel(name = "1已读0未读", width = 15)
|
||||
@ApiModelProperty(value = "1已读0未读")
|
||||
private java.lang.Integer isread;
|
||||
/**
|
||||
* 创建时间 yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
@Excel(name = "创建时间 yyyy-MM-dd HH:mm:ss", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "创建时间 yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date createTime;
|
||||
/**
|
||||
* 更新时间 yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
@Excel(name = "更新时间 yyyy-MM-dd HH:mm:ss", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新时间 yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date updateTime;
|
||||
/**
|
||||
* 项目sn
|
||||
*/
|
||||
@Excel(name = "项目sn", width = 15)
|
||||
@ApiModelProperty(value = "项目sn")
|
||||
private java.lang.String projectSn;
|
||||
}
|
||||
@ -0,0 +1,88 @@
|
||||
package com.zhgd.xmgl.modules.xz.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
/**
|
||||
* @Description: 星纵-用户和供应商注册
|
||||
* @author: pds
|
||||
* @date: 2024-03-21
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("xz_registry")
|
||||
@ApiModel(value = "XzRegistry实体类", description = "XzRegistry")
|
||||
public class XzRegistry implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "id")
|
||||
private java.lang.Long id;
|
||||
/**
|
||||
* 账号
|
||||
*/
|
||||
@Excel(name = "账号", width = 15)
|
||||
@ApiModelProperty(value = "账号")
|
||||
private java.lang.String account;
|
||||
/**
|
||||
* 密码
|
||||
*/
|
||||
@Excel(name = "密码", width = 15)
|
||||
@ApiModelProperty(value = "密码")
|
||||
private java.lang.String pw;
|
||||
/**
|
||||
* 电子邮箱
|
||||
*/
|
||||
@Excel(name = "电子邮箱", width = 15)
|
||||
@ApiModelProperty(value = "电子邮箱")
|
||||
private java.lang.String email;
|
||||
/**
|
||||
* 企业名称
|
||||
*/
|
||||
@Excel(name = "企业名称", width = 15)
|
||||
@ApiModelProperty(value = "企业名称")
|
||||
private java.lang.String companyName;
|
||||
/**
|
||||
* 账号类型1用户2供应商
|
||||
*/
|
||||
@Excel(name = "账号类型1用户2供应商", width = 15)
|
||||
@ApiModelProperty(value = "账号类型1用户2供应商")
|
||||
private java.lang.Integer accountType;
|
||||
/**
|
||||
* 创建时间 yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
@Excel(name = "创建时间 yyyy-MM-dd HH:mm:ss", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "创建时间 yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date createTime;
|
||||
/**
|
||||
* 更新时间 yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
@Excel(name = "更新时间 yyyy-MM-dd HH:mm:ss", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新时间 yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date updateTime;
|
||||
/**
|
||||
* 项目sn
|
||||
*/
|
||||
@Excel(name = "项目sn", width = 15)
|
||||
@ApiModelProperty(value = "项目sn")
|
||||
private java.lang.String projectSn;
|
||||
@ApiModelProperty(value = "审核进程1未处理2审批通过3拒绝申请")
|
||||
private java.lang.Integer approvalProcess;
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
package com.zhgd.xmgl.modules.xz.mapper;
|
||||
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzNotice;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* @Description: 星纵-消息中心
|
||||
* @author: pds
|
||||
* @date: 2024-03-22
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface XzNoticeMapper extends BaseMapper<XzNotice> {
|
||||
|
||||
Boolean markRead(HashMap<String, Object> paramMap);
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package com.zhgd.xmgl.modules.xz.mapper;
|
||||
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzRegistry;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @Description: 星纵-用户和供应商注册
|
||||
* @author: pds
|
||||
* @date: 2024-03-21
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface XzRegistryMapper extends BaseMapper<XzRegistry> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zhgd.xmgl.modules.xz.mapper.XzNoticeMapper">
|
||||
<select id="markRead" resultType="java.lang.Boolean">
|
||||
update xz_notice
|
||||
set isRead = 1
|
||||
where 1 = 1
|
||||
<if test="accountId != null and accountId != ''">
|
||||
and account_id = #{accountId}
|
||||
</if>
|
||||
<if test="ids != null and ids != ''">
|
||||
and id in
|
||||
<foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zhgd.xmgl.modules.xz.mapper.XzRegistryMapper">
|
||||
</mapper>
|
||||
@ -0,0 +1,29 @@
|
||||
package com.zhgd.xmgl.modules.xz.service;
|
||||
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzNotice;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 星纵-消息中心
|
||||
* @author: pds
|
||||
* @date: 2024-03-22
|
||||
* @version: V1.0
|
||||
*/
|
||||
public interface IXzNoticeService extends IService<XzNotice> {
|
||||
|
||||
IPage<XzNotice> queryPageList(HashMap<String, Object> paramMap);
|
||||
|
||||
List<XzNotice> queryList(HashMap<String, Object> paramMap);
|
||||
|
||||
void add(XzNotice xzNotice);
|
||||
|
||||
void edit(XzNotice xzNotice);
|
||||
|
||||
void delete(String id);
|
||||
|
||||
void markRead(HashMap<String, Object> paramMap);
|
||||
}
|
||||
@ -0,0 +1,29 @@
|
||||
package com.zhgd.xmgl.modules.xz.service;
|
||||
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzRegistry;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 星纵-用户和供应商注册
|
||||
* @author: pds
|
||||
* @date: 2024-03-21
|
||||
* @version: V1.0
|
||||
*/
|
||||
public interface IXzRegistryService extends IService<XzRegistry> {
|
||||
|
||||
IPage<XzRegistry> queryPageList(HashMap<String, Object> paramMap);
|
||||
|
||||
List<XzRegistry> queryList(HashMap<String, Object> paramMap);
|
||||
|
||||
void add(XzRegistry xzRegistry);
|
||||
|
||||
void edit(XzRegistry xzRegistry);
|
||||
|
||||
void delete(String id);
|
||||
|
||||
void approval(XzRegistry xzRegistry);
|
||||
}
|
||||
@ -0,0 +1,89 @@
|
||||
package com.zhgd.xmgl.modules.xz.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzNotice;
|
||||
import com.zhgd.xmgl.modules.xz.mapper.XzNoticeMapper;
|
||||
import com.zhgd.xmgl.modules.xz.service.IXzNoticeService;
|
||||
import com.zhgd.xmgl.util.PageUtil;
|
||||
import com.zhgd.xmgl.util.RefUtil;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 星纵-消息中心
|
||||
* @author: pds
|
||||
* @date: 2024-03-22
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Service
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class XzNoticeServiceImpl extends ServiceImpl<XzNoticeMapper, XzNotice> implements IXzNoticeService {
|
||||
@Autowired
|
||||
private XzNoticeMapper xzNoticeMapper;
|
||||
|
||||
@Override
|
||||
public IPage<XzNotice> queryPageList(HashMap<String, Object> paramMap) {
|
||||
QueryWrapper<XzNotice> queryWrapper = getQueryWrapper(paramMap);
|
||||
Page<XzNotice> page = PageUtil.getPage(paramMap);
|
||||
IPage<XzNotice> pageList = this.page(page, queryWrapper);
|
||||
pageList.setRecords(dealList(pageList.getRecords()));
|
||||
return pageList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<XzNotice> queryList(HashMap<String, Object> paramMap) {
|
||||
QueryWrapper<XzNotice> queryWrapper = getQueryWrapper(paramMap);
|
||||
return dealList(this.list(queryWrapper));
|
||||
}
|
||||
|
||||
private QueryWrapper<XzNotice> getQueryWrapper(HashMap<String, Object> paramMap) {
|
||||
String alias = "";
|
||||
QueryWrapper<XzNotice> queryWrapper = QueryGenerator.initPageQueryWrapper(XzNotice.class, paramMap, alias);
|
||||
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(XzNotice::getId));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
private List<XzNotice> dealList(List<XzNotice> list) {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(XzNotice xzNotice) {
|
||||
xzNotice.setId(null);
|
||||
baseMapper.insert(xzNotice);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void edit(XzNotice xzNotice) {
|
||||
baseMapper.updateById(xzNotice);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String id) {
|
||||
XzNotice xzNotice = baseMapper.selectById(id);
|
||||
if (xzNotice == null) {
|
||||
throw new OpenAlertException("未找到对应实体");
|
||||
}
|
||||
baseMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void markRead(HashMap<String, Object> paramMap) {
|
||||
baseMapper.markRead(paramMap);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,116 @@
|
||||
package com.zhgd.xmgl.modules.xz.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
|
||||
import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper;
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzRegistry;
|
||||
import com.zhgd.xmgl.modules.xz.mapper.XzRegistryMapper;
|
||||
import com.zhgd.xmgl.modules.xz.service.IXzRegistryService;
|
||||
import com.zhgd.xmgl.util.EmailUtil;
|
||||
import com.zhgd.xmgl.util.PageUtil;
|
||||
import com.zhgd.xmgl.util.RefUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @Description: 星纵-用户和供应商注册
|
||||
* @author: pds
|
||||
* @date: 2024-03-21
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Service
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class XzRegistryServiceImpl extends ServiceImpl<XzRegistryMapper, XzRegistry> implements IXzRegistryService {
|
||||
@Autowired
|
||||
private XzRegistryMapper xzRegistryMapper;
|
||||
@Autowired
|
||||
SystemUserMapper systemUserMapper;
|
||||
@Autowired
|
||||
EmailUtil emailUtil;
|
||||
|
||||
@Override
|
||||
public IPage<XzRegistry> queryPageList(HashMap<String, Object> paramMap) {
|
||||
QueryWrapper<XzRegistry> queryWrapper = getQueryWrapper(paramMap);
|
||||
Page<XzRegistry> page = PageUtil.getPage(paramMap);
|
||||
IPage<XzRegistry> pageList = this.page(page, queryWrapper);
|
||||
pageList.setRecords(dealList(pageList.getRecords()));
|
||||
return pageList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<XzRegistry> queryList(HashMap<String, Object> paramMap) {
|
||||
QueryWrapper<XzRegistry> queryWrapper = getQueryWrapper(paramMap);
|
||||
return dealList(this.list(queryWrapper));
|
||||
}
|
||||
|
||||
private QueryWrapper<XzRegistry> getQueryWrapper(HashMap<String, Object> paramMap) {
|
||||
String alias = "";
|
||||
QueryWrapper<XzRegistry> queryWrapper = QueryGenerator.initPageQueryWrapper(XzRegistry.class, paramMap, alias);
|
||||
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(XzRegistry::getId));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
private List<XzRegistry> dealList(List<XzRegistry> list) {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(XzRegistry xzRegistry) {
|
||||
SystemUser systemUser = systemUserMapper.selectOne(new LambdaQueryWrapper<SystemUser>()
|
||||
.eq(SystemUser::getAccount, xzRegistry.getAccount()));
|
||||
if (systemUser != null) {
|
||||
throw new OpenAlertException("账号已存在");
|
||||
}
|
||||
//to do 不能重复申请
|
||||
|
||||
xzRegistry.setId(null);
|
||||
baseMapper.insert(xzRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void edit(XzRegistry xzRegistry) {
|
||||
baseMapper.updateById(xzRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String id) {
|
||||
XzRegistry xzRegistry = baseMapper.selectById(id);
|
||||
if (xzRegistry == null) {
|
||||
throw new OpenAlertException("未找到对应实体");
|
||||
}
|
||||
baseMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void approval(XzRegistry r) {
|
||||
XzRegistry xzRegistry = baseMapper.selectById(r.getId());
|
||||
if (xzRegistry == null) {
|
||||
throw new OpenAlertException("未找到对应实体");
|
||||
}
|
||||
xzRegistry.setApprovalProcess(r.getApprovalProcess());
|
||||
String email = xzRegistry.getEmail();
|
||||
Integer approvalProcess = xzRegistry.getApprovalProcess();
|
||||
//2审批通过3拒绝申请
|
||||
if (Objects.equals(approvalProcess, 2)) {
|
||||
emailUtil.sendSimpleMail(email, xzRegistry.getAccount() + "账号审批通过", "您在平台申请的账号已经审核通过,账号:" + xzRegistry.getAccount() + "密码:" + xzRegistry.getPw());
|
||||
} else if (Objects.equals(approvalProcess, 3)) {
|
||||
emailUtil.sendSimpleMail(email, xzRegistry.getAccount() + "账号拒绝申请", "您在平台申请的账号拒绝申请,账号:" + xzRegistry.getAccount());
|
||||
}
|
||||
baseMapper.updateById(xzRegistry);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -336,6 +336,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
|
||||
.antMatchers("/xmgl/mechanicalEquipmentPositionData/add").permitAll()
|
||||
.antMatchers("/xmgl/mechanicalEquipmentPositionAlarm/add").permitAll()
|
||||
.antMatchers("/xmgl/mechanicalEquipmentPositionData/jxzhgAddData").permitAll()
|
||||
.antMatchers("/xmgl/xzRegistry/add").permitAll()
|
||||
.antMatchers(HttpMethod.OPTIONS, "/**").anonymous()
|
||||
.anyRequest().authenticated() // 剩下所有的验证都需要验证.
|
||||
.and()
|
||||
|
||||
@ -22,6 +22,7 @@ import org.springframework.http.HttpStatus;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@ -49,7 +50,7 @@ public class DischargingPlatformCurrentDataTask {
|
||||
*/
|
||||
@SchedulerLock(name = "getDischargingPlatformCurrentData", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
|
||||
@Scheduled(cron = "0 0/5 * * * ?")
|
||||
@GetMapping("/xmgl/task/getDischargingPlatformCurrentData")
|
||||
@RequestMapping("/xmgl/task/getDischargingPlatformCurrentData")
|
||||
public void getDischargingPlatformCurrentData() {
|
||||
log.info("获取卸料平台数据开始任务");
|
||||
List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>()
|
||||
|
||||
@ -21,6 +21,7 @@ import org.springframework.http.HttpStatus;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@ -62,7 +63,7 @@ public class ElectricalTask {
|
||||
*/
|
||||
@SchedulerLock(name = "getElectricRealTimeData", lockAtMostFor = 1000 * 60 * 5, lockAtLeastFor = 1000 * 60 * 3)
|
||||
@Scheduled(cron = "0 0/5 * * * ?")
|
||||
@GetMapping("/xmgl/task/getElectricRealTimeData")
|
||||
@RequestMapping("/xmgl/task/getElectricRealTimeData")
|
||||
public void getElectricRealTimeData() {
|
||||
log.info("获取最新电量使用情况 每5分钟触发任务");
|
||||
List<Project> projectList = projectMapper.selectList(new LambdaQueryWrapper<Project>()
|
||||
|
||||
@ -112,7 +112,7 @@ public class JzgTask {
|
||||
*/
|
||||
@SchedulerLock(name = "realNameSystem", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
|
||||
@Scheduled(cron = "0 0 0/1 * * ?")
|
||||
@GetMapping("/sync")
|
||||
@RequestMapping("/sync")
|
||||
public void realNameSystem() {
|
||||
if (environmentUtil.isDev()) {
|
||||
return;
|
||||
|
||||
@ -30,7 +30,7 @@ public class LocationDataTask {
|
||||
* 隧道定位数据超时人员标签清除
|
||||
*/
|
||||
@Scheduled(cron = "0 0/10 * * * ?")
|
||||
@GetMapping("/xmgl/task/clearLocationData")
|
||||
@RequestMapping("/xmgl/task/clearLocationData")
|
||||
public void clearLocationData() {
|
||||
log.info("隧道定位数据超时人员标签清除执行");
|
||||
locationDataMapper.clearLocationData();
|
||||
|
||||
@ -57,7 +57,12 @@ public class MechanicalEquipmentPositionDayRecordTask {
|
||||
MechanicalEquipmentPositionDayRecord dayRecord = new MechanicalEquipmentPositionDayRecord();
|
||||
dayRecord.setDevSn(dev.getDevSn());
|
||||
if (dataList.size() > 1) {
|
||||
dayRecord.setTrackDistanceDay(TiandituUtil.getDistance(getPoint(dataList.get(0)), getPoint(dataList.get(dataList.size() - 1)), getMid(dataList), 0));
|
||||
try {
|
||||
dayRecord.setTrackDistanceDay(TiandituUtil.getDistance(getPoint(dataList.get(0)), getPoint(dataList.get(dataList.size() - 1)), getMid(dataList), 0));
|
||||
} catch (Exception e) {
|
||||
log.error("计算轨迹异常", e);
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
dayRecord.setTrackDistanceDay(0D);
|
||||
}
|
||||
@ -72,6 +77,22 @@ public class MechanicalEquipmentPositionDayRecordTask {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试统计
|
||||
*/
|
||||
@RequestMapping("testDayRecord")
|
||||
public void testDayRecord(String devSn, String day) {
|
||||
DateTime dateTime = DateUtil.parse(day);
|
||||
List<MechanicalEquipmentPositionData> dataList = mechanicalEquipmentPositionDataMapper.selectList(new LambdaQueryWrapper<MechanicalEquipmentPositionData>()
|
||||
.eq(MechanicalEquipmentPositionData::getDevSn, devSn)
|
||||
.ge(MechanicalEquipmentPositionData::getUploadTime, DateUtil.formatDateTime(DateUtil.beginOfDay(dateTime)))
|
||||
.le(MechanicalEquipmentPositionData::getUploadTime, DateUtil.formatDateTime(DateUtil.endOfDay(dateTime)))
|
||||
);
|
||||
Double distance = TiandituUtil.getDistance(getPoint(dataList.get(0)), getPoint(dataList.get(dataList.size() - 1)), getMid(dataList), 0);
|
||||
log.info("测试每天计算一次轨迹距离:{}", distance);
|
||||
}
|
||||
|
||||
|
||||
private String getMid(List<MechanicalEquipmentPositionData> dataList) {
|
||||
List<MechanicalEquipmentPositionData> subList = dataList.subList(1, dataList.size() - 1);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
@ -9,7 +9,6 @@ import com.zhgd.xmgl.modules.project.entity.Project;
|
||||
import com.zhgd.xmgl.modules.project.service.IProjectService;
|
||||
import com.zhgd.xmgl.util.RundeSafeyHatUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.javacrumbs.shedlock.core.SchedulerLock;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@ -21,6 +20,7 @@ import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
/**
|
||||
* 智能安全帽task
|
||||
@ -39,7 +39,6 @@ public class SafetyHatTask {
|
||||
/**
|
||||
* 获取安全帽最新数据(30秒内的心跳)
|
||||
*/
|
||||
@SchedulerLock(name = "getHelmetData", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 10)
|
||||
@Scheduled(cron = "*/10 * * * * ?")
|
||||
@RequestMapping("getHelmetData")
|
||||
public void getHelmetData() {
|
||||
@ -50,16 +49,24 @@ public class SafetyHatTask {
|
||||
for (Project project : projectList) {
|
||||
log.info("安全帽user:{}", project.getHelmetUser());
|
||||
SafetyHatWSClient client = SafetyHatWSClient.clientMap.get(project.getHelmetUser());
|
||||
try {
|
||||
if (client == null) {
|
||||
CompletableFuture.runAsync(() -> {
|
||||
try {
|
||||
if (client == null) {
|
||||
log.info("首次连接安全帽:user:{}", project.getHelmetUser());
|
||||
connect(project);
|
||||
} else {
|
||||
log.info("发送安全帽获取实时数据,user:{}", project.getHelmetUser());
|
||||
client.send("{\"act\":\"ma_get_active_devices\"}");
|
||||
}
|
||||
} catch (IllegalStateException e) {
|
||||
log.info("异常重连:{}", e.getMessage());
|
||||
connect(project);
|
||||
} else {
|
||||
client.send("{\"act\":\"ma_get_active_devices\"}");
|
||||
}
|
||||
} catch (IllegalStateException e) {
|
||||
log.info("异常重连:{}", e.getMessage());
|
||||
connect(project);
|
||||
}
|
||||
}).exceptionally(throwable -> {
|
||||
log.error("err", throwable);
|
||||
return null;
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@ -75,16 +82,24 @@ public class SafetyHatTask {
|
||||
* @throws IOException
|
||||
* @throws URISyntaxException
|
||||
*/
|
||||
private SafetyHatWSClient connect(Project project) throws DeploymentException, IOException, URISyntaxException {
|
||||
private SafetyHatWSClient connect(Project project) {
|
||||
SafetyHatWSClient client = new SafetyHatWSClient();
|
||||
webSocketContainer.connectToServer(client, new URI("wss://caps.runde.pro/wss"));
|
||||
try {
|
||||
webSocketContainer.connectToServer(client, new URI("wss://caps.runde.pro/wss"));
|
||||
} catch (DeploymentException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (URISyntaxException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
JSONObject token = RundeSafeyHatUtils.getToken(project.getHelmetUser(), project.getHelmetPassword());
|
||||
if (token != null && CharSequenceUtil.isNotBlank(token.getString("session_id"))) {
|
||||
String sessionId = token.getString("session_id");
|
||||
project.setRundeToken(sessionId);
|
||||
String message = "{\"act\":\"ma_login\",\"user_name\":\"" + project.getHelmetUser() + "\",\"access_token\":\"" + sessionId + "\"}";
|
||||
client.send(message);
|
||||
log.info("安全帽用户:{},ms:{}", project.getHelmetUser(), message);
|
||||
log.info("登录安全帽user:{},ms:{}", project.getHelmetUser(), message);
|
||||
SafetyHatWSClient.clientMap.put(project.getHelmetUser(), client);
|
||||
}
|
||||
return client;
|
||||
|
||||
@ -27,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
@ -55,7 +56,7 @@ public class StableWaterMixStationTask {
|
||||
*/
|
||||
@Scheduled(cron = "0 0/5 * * * ?")
|
||||
@SchedulerLock(name = "executeStableWaterMixStationTask", lockAtMostFor = 1000 * 60 * 2, lockAtLeastFor = 1000 * 60 * 1)
|
||||
@GetMapping("xmgl/task/executeStableWaterMixStationTask")
|
||||
@RequestMapping("xmgl/task/executeStableWaterMixStationTask")
|
||||
public void executeStableWaterMixStationTask() {
|
||||
log.info("定时拉取广联达的搅拌站数据任务开始");
|
||||
List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>()
|
||||
|
||||
@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
@ -275,7 +276,7 @@ public class StandardDevTask {
|
||||
*/
|
||||
@Scheduled(cron = "0 0/2 * * * ?")
|
||||
@SchedulerLock(name = "getStandardData", lockAtMostFor = 1000 * 60 * 2, lockAtLeastFor = 1000 * 60 * 1)
|
||||
@GetMapping("/xmgl/task/getStandardData")
|
||||
@RequestMapping("/xmgl/task/getStandardData")
|
||||
public void getStandardData() {
|
||||
try {
|
||||
log.info("------------拉取执行标样室时数据任务开始---------");
|
||||
|
||||
@ -64,7 +64,7 @@ public class TowerTask {
|
||||
*/
|
||||
@SchedulerLock(name = "getTowerData", lockAtMostFor = 1000 * 60 * 5, lockAtLeastFor = 1000 * 60 * 3)
|
||||
@Scheduled(cron = "0 0/5 * * * ?")
|
||||
@GetMapping("tower")
|
||||
@RequestMapping("tower")
|
||||
public void getEnvironmentDustData() {
|
||||
log.info("获取塔吊数据(携稳)开始任务");
|
||||
List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>()
|
||||
|
||||
@ -62,7 +62,7 @@ public class TowerWorkerAttendanceTask {
|
||||
*/
|
||||
@SchedulerLock(name = "getTowerWorkerAttendanceData", lockAtMostFor = 1000 * 60 * 5, lockAtLeastFor = 1000 * 60 * 3)
|
||||
@Scheduled(cron = "0 0/5 * * * ?")
|
||||
@GetMapping("getTowerWorkerAttendanceData")
|
||||
@RequestMapping("getTowerWorkerAttendanceData")
|
||||
public void getTowerWorkerAttendanceData() {
|
||||
log.info("获取塔吊-人员考勤数据(携稳)开始任务");
|
||||
List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>()
|
||||
|
||||
@ -3,7 +3,9 @@ package com.zhgd.xmgl.task;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.SystemLogoConfig;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
|
||||
import com.zhgd.xmgl.modules.basicdata.mapper.SystemLogoConfigMapper;
|
||||
import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper;
|
||||
import com.zhgd.xmgl.modules.basicdata.service.INoticeService;
|
||||
import com.zhgd.xmgl.modules.project.entity.ProjectExternalSystemService;
|
||||
@ -23,7 +25,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Date;
|
||||
@ -40,6 +42,7 @@ import java.util.stream.Collectors;
|
||||
@Slf4j
|
||||
@Component
|
||||
@RestController
|
||||
@RequestMapping("xmgl/task")
|
||||
public class WorkerTask {
|
||||
@Autowired
|
||||
private ProjectExternalSystemServiceMapper projectExternalSystemServiceMapper;
|
||||
@ -49,6 +52,8 @@ public class WorkerTask {
|
||||
private ProjectMapper projectMapper;
|
||||
@Autowired
|
||||
private SystemUserMapper systemUserMapper;
|
||||
@Autowired
|
||||
private SystemLogoConfigMapper systemLogoConfigMapper;
|
||||
|
||||
@Autowired
|
||||
private INoticeService noticeService;
|
||||
@ -159,7 +164,7 @@ public class WorkerTask {
|
||||
*/
|
||||
@SchedulerLock(name = "addWorkerBlacklist", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
|
||||
@Scheduled(cron = "0 0 1 * * ?")
|
||||
@GetMapping("xmgl/task/addWorkerBlacklist")
|
||||
@RequestMapping("/addWorkerBlacklist")
|
||||
public void addWorkerBlacklist() {
|
||||
List<WorkerInfo> list = workerCertificateMapper.selectExpiredNotInBlackWorkerList();
|
||||
for (WorkerInfo workerInfo : list) {
|
||||
@ -178,11 +183,12 @@ public class WorkerTask {
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统整改提前一个星期对人员的资质证书到期进行预警,预警后发送消息提示项目管理员账号
|
||||
* 对人员的资质证书到期进行预警,预警后发送消息提示项目管理员账号
|
||||
* 系统设置:开启后将会在对企业下的各个项目开启人员证书到期预警提示,提前预警时间可以自行设置,监测内容包括人员的合同信息、资格证书、保险信息。
|
||||
*/
|
||||
@SchedulerLock(name = "alarmWorkerBlack", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
|
||||
@Scheduled(cron = "0 0 1 * * ?")
|
||||
@GetMapping("xmgl/task/alarmWorkerBlack")
|
||||
@RequestMapping("/alarmWorkerBlack")
|
||||
public void alarmWorkerBlack() {
|
||||
List<WorkerInfo> list = workerCertificateMapper.alarmWorkerBlack();
|
||||
Map<String, List<WorkerInfo>> projectMap = list.stream().collect(Collectors.groupingBy(WorkerInfo::getProjectSn));
|
||||
@ -202,6 +208,8 @@ public class WorkerTask {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
128
src/main/java/com/zhgd/xmgl/util/EmailUtil.java
Normal file
128
src/main/java/com/zhgd/xmgl/util/EmailUtil.java
Normal file
@ -0,0 +1,128 @@
|
||||
package com.zhgd.xmgl.util;
|
||||
|
||||
import com.zhgd.xmgl.base.EmailService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.core.io.FileSystemResource;
|
||||
import org.springframework.mail.SimpleMailMessage;
|
||||
import org.springframework.mail.javamail.JavaMailSender;
|
||||
import org.springframework.mail.javamail.JavaMailSenderImpl;
|
||||
import org.springframework.mail.javamail.MimeMessageHelper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.mail.internet.InternetAddress;
|
||||
import javax.mail.internet.MimeMessage;
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* 发送邮件工具类 MailUtil
|
||||
*
|
||||
* @author heshi
|
||||
* @date 2021/3/22 16:52
|
||||
*/
|
||||
|
||||
@Service
|
||||
public class EmailUtil implements EmailService {
|
||||
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
|
||||
//Spring Boot 提供了一个发送邮件的简单抽象,使用的是下面这个接口,这里直接注入即可使用
|
||||
@Autowired
|
||||
private JavaMailSender mailSender;
|
||||
|
||||
// 配置文件中我的qq邮箱
|
||||
@Value("${spring.mail.from}")
|
||||
private String from;
|
||||
|
||||
/**
|
||||
* 简单文本邮件
|
||||
*
|
||||
* @param to 收件人
|
||||
* @param subject 主题
|
||||
* @param content 内容
|
||||
*/
|
||||
@Override
|
||||
public void sendSimpleMail(String to, String subject, String content) {
|
||||
//创建SimpleMailMessage对象
|
||||
SimpleMailMessage message = new SimpleMailMessage();
|
||||
//邮件发送人
|
||||
message.setFrom(from);
|
||||
//邮件接收人
|
||||
message.setTo(to);
|
||||
//邮件主题
|
||||
message.setSubject(subject);
|
||||
//邮件内容
|
||||
message.setText(content);
|
||||
//发送邮件
|
||||
mailSender.send(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* html邮件
|
||||
*
|
||||
* @param to 收件人,多个时参数形式 :"xxx@xxx.com,xxx@xxx.com,xxx@xxx.com"
|
||||
* @param subject 主题
|
||||
* @param content 内容
|
||||
*/
|
||||
@Override
|
||||
public void sendHtmlMail(String to, String subject, String content) {
|
||||
//获取MimeMessage对象
|
||||
MimeMessage message = mailSender.createMimeMessage();
|
||||
MimeMessageHelper messageHelper;
|
||||
try {
|
||||
messageHelper = new MimeMessageHelper(message, true);
|
||||
//邮件发送人
|
||||
messageHelper.setFrom(from);
|
||||
//邮件接收人,设置多个收件人地址
|
||||
InternetAddress[] internetAddressTo = InternetAddress.parse(to);
|
||||
messageHelper.setTo(internetAddressTo);
|
||||
//messageHelper.setTo(to);
|
||||
//邮件主题
|
||||
message.setSubject(subject);
|
||||
//邮件内容,html格式
|
||||
messageHelper.setText(content, true);
|
||||
//发送
|
||||
mailSender.send(message);
|
||||
//日志信息
|
||||
logger.info("邮件已经发送。");
|
||||
} catch (Exception e) {
|
||||
logger.error("发送邮件时发生异常!", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 带附件的邮件
|
||||
*
|
||||
* @param to 收件人
|
||||
* @param subject 主题
|
||||
* @param content 内容
|
||||
* @param filePath 附件
|
||||
*/
|
||||
@Override
|
||||
public void sendAttachmentsMail(String to, String subject, String content, String filePath) {
|
||||
MimeMessage message = mailSender.createMimeMessage();
|
||||
try {
|
||||
MimeMessageHelper helper = new MimeMessageHelper(message, true);
|
||||
helper.setFrom(from);
|
||||
helper.setTo(to);
|
||||
helper.setSubject(subject);
|
||||
helper.setText(content, true);
|
||||
|
||||
FileSystemResource file = new FileSystemResource(new File(filePath));
|
||||
String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
|
||||
helper.addAttachment(fileName, file);
|
||||
mailSender.send(message);
|
||||
//日志信息
|
||||
logger.info("邮件已经发送。");
|
||||
} catch (Exception e) {
|
||||
logger.error("发送邮件时发生异常!", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
EmailUtil mailService = new EmailUtil();
|
||||
mailService.sendSimpleMail("xxx@qq.com", "主题:你好普通邮件", "内容:第一封邮件");
|
||||
mailService.sendHtmlMail("xxx@qq.com", "主题:你好html邮件", "<h1>内容:第一封html邮件</h1>");
|
||||
}
|
||||
}
|
||||
@ -3,11 +3,12 @@ package com.zhgd.xmgl.util;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.http.Header;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@Slf4j
|
||||
public class TiandituUtil {
|
||||
static Pattern pattern = Pattern.compile("<distance>(.*)</distance>");
|
||||
|
||||
@ -22,12 +23,15 @@ public class TiandituUtil {
|
||||
*/
|
||||
public static Double getDistance(String orig, String dest, String mid, Integer style) {
|
||||
String key = "000c3ade82b69dee54ac334e750cfac0";
|
||||
String url = "http://api.tianditu.gov.cn/drive?postStr={\"orig\":\"" + orig + "\",\"dest\":\"" + dest + "\",\"mid\":\"" + mid + "\",\"style\":\"" + style + "\"}&type=search&tk=" + key;
|
||||
String url = "http://api.tianditu.gov.cn/drive?type=search&tk=" + key;
|
||||
//String url = "http://api.tianditu.gov.cn/drive?postStr={\"orig\":\"116.35506,39.92277\",\"dest\":\"116.39751,39.90854\",\"mid\":\"116.36506,39.91277;116.37506,39.92077\",\"style\":\"0\"}&type=search&tk=000c3ade82b69dee54ac334e750cfac0";
|
||||
String rs = HttpRequest.get(url)
|
||||
log.info("查询轨迹距离:url:{}", url);
|
||||
String rs = HttpRequest.post(url)
|
||||
.header(Header.USER_AGENT, "PostmanRuntime/7.37.0")//头信息,多个头信息多次调用此方法即可
|
||||
.form("postStr", "{\"orig\":\"" + orig + "\",\"dest\":\"" + dest + "\",\"mid\":\"" + mid + "\",\"style\":\"" + style + "\"}")
|
||||
.timeout(20000)//超时,毫秒
|
||||
.execute().body();
|
||||
log.info("查询轨迹距离:rs:{}", rs);
|
||||
Matcher matcher = pattern.matcher(rs);
|
||||
matcher.find();
|
||||
return Convert.toDouble(matcher.group(1));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user