From f8b4739f805411b210eb728ca424c6f2fa6aa7f2 Mon Sep 17 00:00:00 2001 From: guo Date: Mon, 25 Mar 2024 15:13:09 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zhgd/xmgl/base/EmailService.java | 35 ++++ .../zhgd/xmgl/config/SafetyHatWSClient.java | 6 +- .../controller/CompanyController.java | 23 +++ .../controller/OperationLogController.java | 75 ++++---- .../controller/SystemUserController.java | 16 ++ .../basicdata/entity/OperationLog.java | 32 ++-- .../modules/basicdata/entity/SystemUser.java | 16 +- .../entity/XzSystemUserToCompanyProject.java | 68 +++++++ .../basicdata/mapper/OperationLogMapper.java | 2 +- .../basicdata/mapper/SystemUserMapper.java | 7 +- .../XzSystemUserToCompanyProjectMapper.java | 19 ++ .../mapper/xml/OperationLogMapper.xml | 2 +- .../basicdata/mapper/xml/SystemUserMapper.xml | 14 ++ .../XzSystemUserToCompanyProjectMapper.xml | 4 + .../basicdata/service/ICompanyService.java | 5 + .../service/IOperationLogService.java | 2 +- .../basicdata/service/ISystemUserService.java | 4 + .../IXzSystemUserToCompanyProjectService.java | 27 +++ .../service/impl/CompanyServiceImpl.java | 35 +++- .../service/impl/OperationLogServiceImpl.java | 8 +- .../service/impl/SystemUserServiceImpl.java | 25 +++ ...SystemUserToCompanyProjectServiceImpl.java | 81 +++++++++ .../service/impl/RtWorkTicketServiceImpl.java | 21 +++ .../xz/captcha/ConfigBeanConfiguration.java | 15 ++ .../xmgl/modules/xz/captcha/LoginCode.java | 48 +++++ .../modules/xz/captcha/LoginCodeEnum.java | 21 +++ .../modules/xz/captcha/LoginProperties.java | 96 ++++++++++ .../xz/controller/XzNoticeController.java | 133 ++++++++++++++ .../xz/controller/XzRegistryController.java | 167 ++++++++++++++++++ .../zhgd/xmgl/modules/xz/entity/XzNotice.java | 102 +++++++++++ .../xmgl/modules/xz/entity/XzRegistry.java | 88 +++++++++ .../modules/xz/mapper/XzNoticeMapper.java | 19 ++ .../modules/xz/mapper/XzRegistryMapper.java | 16 ++ .../modules/xz/mapper/xml/XzNoticeMapper.xml | 18 ++ .../xz/mapper/xml/XzRegistryMapper.xml | 4 + .../modules/xz/service/IXzNoticeService.java | 29 +++ .../xz/service/IXzRegistryService.java | 29 +++ .../xz/service/impl/XzNoticeServiceImpl.java | 89 ++++++++++ .../service/impl/XzRegistryServiceImpl.java | 116 ++++++++++++ .../zhgd/xmgl/security/WebSecurityConfig.java | 1 + .../DischargingPlatformCurrentDataTask.java | 3 +- .../com/zhgd/xmgl/task/ElectricalTask.java | 3 +- src/main/java/com/zhgd/xmgl/task/JzgTask.java | 2 +- .../com/zhgd/xmgl/task/LocationDataTask.java | 2 +- ...hanicalEquipmentPositionDayRecordTask.java | 23 ++- .../com/zhgd/xmgl/task/SafetyHatTask.java | 41 +++-- .../xmgl/task/StableWaterMixStationTask.java | 3 +- .../com/zhgd/xmgl/task/StandardDevTask.java | 3 +- .../java/com/zhgd/xmgl/task/TowerTask.java | 2 +- .../xmgl/task/TowerWorkerAttendanceTask.java | 2 +- .../java/com/zhgd/xmgl/task/WorkerTask.java | 16 +- .../java/com/zhgd/xmgl/util/EmailUtil.java | 128 ++++++++++++++ .../java/com/zhgd/xmgl/util/TiandituUtil.java | 10 +- 53 files changed, 1656 insertions(+), 100 deletions(-) create mode 100644 src/main/java/com/zhgd/xmgl/base/EmailService.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/basicdata/entity/XzSystemUserToCompanyProject.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/XzSystemUserToCompanyProjectMapper.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/XzSystemUserToCompanyProjectMapper.xml create mode 100644 src/main/java/com/zhgd/xmgl/modules/basicdata/service/IXzSystemUserToCompanyProjectService.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/XzSystemUserToCompanyProjectServiceImpl.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/captcha/ConfigBeanConfiguration.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/captcha/LoginCode.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/captcha/LoginCodeEnum.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/captcha/LoginProperties.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/controller/XzNoticeController.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/controller/XzRegistryController.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/entity/XzNotice.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/entity/XzRegistry.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzNoticeMapper.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzRegistryMapper.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/mapper/xml/XzNoticeMapper.xml create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/mapper/xml/XzRegistryMapper.xml create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/service/IXzNoticeService.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/service/IXzRegistryService.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzNoticeServiceImpl.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzRegistryServiceImpl.java create mode 100644 src/main/java/com/zhgd/xmgl/util/EmailUtil.java diff --git a/src/main/java/com/zhgd/xmgl/base/EmailService.java b/src/main/java/com/zhgd/xmgl/base/EmailService.java new file mode 100644 index 000000000..f81a7d798 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/base/EmailService.java @@ -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); +} diff --git a/src/main/java/com/zhgd/xmgl/config/SafetyHatWSClient.java b/src/main/java/com/zhgd/xmgl/config/SafetyHatWSClient.java index 9773e57a9..adb91812b 100644 --- a/src/main/java/com/zhgd/xmgl/config/SafetyHatWSClient.java +++ b/src/main/java/com/zhgd/xmgl/config/SafetyHatWSClient.java @@ -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 + ",服务端服务端断开连接"); } /** diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/CompanyController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/CompanyController.java index f141d5e5c..89a403528 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/CompanyController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/CompanyController.java @@ -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> getOrgSnListByUserId(@ApiIgnore @RequestBody HashMap 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 paramMap) { + companyService.updateTenantOrg(paramMap); + return Result.ok(); + } + } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/OperationLogController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/OperationLogController.java index 59f2796f3..028180e05 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/OperationLogController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/OperationLogController.java @@ -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> queryPageList(@RequestBody Map map) { + public Result> queryPageList(@RequestBody Map map) { return Result.success(operationLogService.selectOperationLogPage(map)); } - /** - * 添加 - * @param operationLog - * @return - */ + + /** + * 添加 + * + * @param operationLog + * @return + */ @ApiOperation(value = "添加操作日志表信息", notes = "添加操作日志表信息", httpMethod = "POST") @PostMapping(value = "/add") - public Result add(@RequestBody OperationLog operationLog) { + public Result add(@RequestBody OperationLog operationLog) { Result result = new Result(); 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 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 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 map) { + IPage p = operationLogService.selectOperationLogPage(map); + List 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; } } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/SystemUserController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/SystemUserController.java index 9fe8ed097..c41ad68cc 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/SystemUserController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/SystemUserController.java @@ -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> getTenantListBySn(@RequestBody Map map) { + return Result.success(systemUserService.getTenantListBySn(map)); + } + } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/OperationLog.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/OperationLog.java index 567bde8c9..d43741785 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/OperationLog.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/OperationLog.java @@ -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; } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/SystemUser.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/SystemUser.java index cc9ffb8f8..9e90ce244 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/SystemUser.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/SystemUser.java @@ -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; + + } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/XzSystemUserToCompanyProject.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/XzSystemUserToCompanyProject.java new file mode 100644 index 000000000..9e616230b --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/XzSystemUserToCompanyProject.java @@ -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; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/OperationLogMapper.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/OperationLogMapper.java index 3861d8c0d..8c993c846 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/OperationLogMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/OperationLogMapper.java @@ -19,5 +19,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; @Mapper public interface OperationLogMapper extends BaseMapper { - List selectOperationLogPage(Page page, @Param("param")Map map); + List selectOperationLogPage(Page page, @Param("param") Map map); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/SystemUserMapper.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/SystemUserMapper.java index 0224f68b7..d20861e86 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/SystemUserMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/SystemUserMapper.java @@ -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 { IPage getZjwjUserPage(Page p, @Param("s") SystemUser systemUser); List getZjwjUserList(@Param("s") SystemUser systemUser); + + List getOrgSnListByUserId(HashMap paramMap); + + List getTenantListBySn(Map map); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/XzSystemUserToCompanyProjectMapper.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/XzSystemUserToCompanyProjectMapper.java new file mode 100644 index 000000000..298e7691a --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/XzSystemUserToCompanyProjectMapper.java @@ -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 { + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/OperationLogMapper.xml b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/OperationLogMapper.xml index 54f7de282..f3567a3c0 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/OperationLogMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/OperationLogMapper.xml @@ -2,7 +2,7 @@ - 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 diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml index 62562d436..106e697ed 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml @@ -191,4 +191,18 @@ AND di.id = #{s.departmentId} + + + + diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/XzSystemUserToCompanyProjectMapper.xml b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/XzSystemUserToCompanyProjectMapper.xml new file mode 100644 index 000000000..884a97017 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/XzSystemUserToCompanyProjectMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ICompanyService.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ICompanyService.java index efcbcceab..9ff139fe7 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ICompanyService.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ICompanyService.java @@ -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 { void addHeadquarterCompany(Company company); void updateHeadquarterCompany(Company company); + + void updateTenantOrg(HashMap paramMap); + + List getOrgSnListByUserId(HashMap paramMap); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/IOperationLogService.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/IOperationLogService.java index 3f33d9348..baa3a964e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/IOperationLogService.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/IOperationLogService.java @@ -15,5 +15,5 @@ import java.util.Map; */ public interface IOperationLogService extends IService { - IPage selectOperationLogPage(Map map); + IPage selectOperationLogPage(Map map); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ISystemUserService.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ISystemUserService.java index d3c00c788..5f260599b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ISystemUserService.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ISystemUserService.java @@ -73,4 +73,8 @@ public interface ISystemUserService extends IService { List getSystemUserList(Map map); Map md5Login(Map map); + + void xzUpdatePw(SystemUser systemUser); + + List getTenantListBySn(Map map); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/IXzSystemUserToCompanyProjectService.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/IXzSystemUserToCompanyProjectService.java new file mode 100644 index 000000000..943dacdcb --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/IXzSystemUserToCompanyProjectService.java @@ -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 { + + IPage queryPageList(HashMap paramMap); + + List queryList(HashMap paramMap); + + void add(XzSystemUserToCompanyProject xzSystemUserToCompanyProject); + + void edit(XzSystemUserToCompanyProject xzSystemUserToCompanyProject); + + void delete(String id); +} diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java index c42a52f95..e9d3fd7c5 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java @@ -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 impl private CompanyConfigMapper companyConfigMapper; @Autowired private PasswordEncoder passwordEncoder; + @Autowired + private XzSystemUserToCompanyProjectMapper xzSystemUserToCompanyProjectMapper; @Override public Map getCompanyType(Map map) { @@ -100,7 +104,7 @@ public class CompanyServiceImpl extends ServiceImpl impl int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString()); Page page = new Page<>(pageNo, pageSize); - List list = companyMapper.selectCompanyPage(page, map); + List list = companyMapper.selectCompanyPage(page, map); for (EntityMap entityMap : list) { if (entityMap.get("expireTime") == null) { @@ -623,6 +627,35 @@ public class CompanyServiceImpl extends ServiceImpl impl systemUserMapper.update(su, new LambdaQueryWrapper().eq(SystemUser::getSn, company.getHeadquartersSn()).eq(SystemUser::getAccountType, 2)); } + @Override + public void updateTenantOrg(HashMap paramMap) { + String userId = MapUtils.getString(paramMap, "userId"); + String projectSns = MapUtils.getString(paramMap, "projectSns"); + String companySns = MapUtils.getString(paramMap, "companySns"); + xzSystemUserToCompanyProjectMapper.delete(new LambdaQueryWrapper().eq(XzSystemUserToCompanyProject::getUserId, userId)); + insertTenantOrg(companySns, 1); + insertTenantOrg(projectSns, 2); + } + + @Override + public List getOrgSnListByUserId(HashMap 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)) { diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/OperationLogServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/OperationLogServiceImpl.java index 2a7714514..01f284341 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/OperationLogServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/OperationLogServiceImpl.java @@ -29,12 +29,12 @@ public class OperationLogServiceImpl extends ServiceImpl selectOperationLogPage(Map param) { - Map map=companyService.getCompanyType(param); + public IPage selectOperationLogPage(Map param) { + Map map = companyService.getCompanyType(param); int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString()); int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString()); - Page page = new Page<>(pageNo, pageSize); - List list=operationLogMapper.selectOperationLogPage(page, map); + Page page = new Page<>(pageNo, pageSize); + List list = operationLogMapper.selectOperationLogPage(page, map); return page.setRecords(list); } } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java index 39f9867ac..542bd59c5 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java @@ -1104,4 +1104,29 @@ public class SystemUserServiceImpl extends ServiceImpl getTenantListBySn(Map map) { + return baseMapper.getTenantListBySn(map); + } + } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/XzSystemUserToCompanyProjectServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/XzSystemUserToCompanyProjectServiceImpl.java new file mode 100644 index 000000000..52481fccc --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/XzSystemUserToCompanyProjectServiceImpl.java @@ -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 implements IXzSystemUserToCompanyProjectService { + @Autowired + private XzSystemUserToCompanyProjectMapper xzSystemUserToCompanyProjectMapper; + + @Override + public IPage queryPageList(HashMap paramMap) { + QueryWrapper queryWrapper = getQueryWrapper(paramMap); + Page page = PageUtil.getPage(paramMap); + IPage pageList = this.page(page, queryWrapper); + pageList.setRecords(dealList(pageList.getRecords())); + return pageList; + } + + @Override + public List queryList(HashMap paramMap) { + QueryWrapper queryWrapper = getQueryWrapper(paramMap); + return dealList(this.list(queryWrapper)); + } + + private QueryWrapper getQueryWrapper(HashMap paramMap) { + String alias = ""; + QueryWrapper queryWrapper = QueryGenerator.initPageQueryWrapper(XzSystemUserToCompanyProject.class, paramMap, alias); + queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(XzSystemUserToCompanyProject::getId)); + return queryWrapper; + } + + private List dealList(List 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); + } + + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/rt/service/impl/RtWorkTicketServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/rt/service/impl/RtWorkTicketServiceImpl.java index 181b61b1a..df50cc98c 100644 --- a/src/main/java/com/zhgd/xmgl/modules/rt/service/impl/RtWorkTicketServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/rt/service/impl/RtWorkTicketServiceImpl.java @@ -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 wrapper = new LambdaUpdateWrapper().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() .eq(RtWorkTicketToVideoItem::getRtWorkTicketId, rtWorkTicket.getId())); diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/captcha/ConfigBeanConfiguration.java b/src/main/java/com/zhgd/xmgl/modules/xz/captcha/ConfigBeanConfiguration.java new file mode 100644 index 000000000..c317bb2eb --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/captcha/ConfigBeanConfiguration.java @@ -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(); + } +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/captcha/LoginCode.java b/src/main/java/com/zhgd/xmgl/modules/xz/captcha/LoginCode.java new file mode 100644 index 000000000..4a675cc06 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/captcha/LoginCode.java @@ -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; + } +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/captcha/LoginCodeEnum.java b/src/main/java/com/zhgd/xmgl/modules/xz/captcha/LoginCodeEnum.java new file mode 100644 index 000000000..029a65ba2 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/captcha/LoginCodeEnum.java @@ -0,0 +1,21 @@ +package com.zhgd.xmgl.modules.xz.captcha; + +public enum LoginCodeEnum { + /** + * 算数 + */ + ARITHMETIC, + /** + * 中文 + */ + CHINESE, + /** + * 中文闪图 + */ + CHINESE_GIF, + /** + * 闪图 + */ + GIF, + SPEC +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/captcha/LoginProperties.java b/src/main/java/com/zhgd/xmgl/modules/xz/captcha/LoginProperties.java new file mode 100644 index 000000000..f1b2ea804 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/captcha/LoginProperties.java @@ -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(); + } + } +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzNoticeController.java b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzNoticeController.java new file mode 100644 index 000000000..31c0b3014 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzNoticeController.java @@ -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> queryPageList(@ApiIgnore @RequestParam HashMap paramMap) { + return Result.success(xzNoticeService.queryPageList(paramMap)); + } + + /** + * 列表查询 + * + * @return + */ + @ApiOperation(value = "列表查询星纵-消息中心信息", notes = "列表查询星纵-消息中心信息", httpMethod = "GET") + @GetMapping(value = "/list") + public Result> queryList(@ApiIgnore @RequestParam HashMap paramMap) { + return Result.success(xzNoticeService.queryList(paramMap)); + } + + /** + * 添加 + * + * @param xzNotice + * @return + */ + @ApiOperation(value = "添加星纵-消息中心信息", notes = "添加星纵-消息中心信息", httpMethod = "POST") + @PostMapping(value = "/add") + public Result add(@RequestBody @Validate XzNotice xzNotice) { + xzNoticeService.add(xzNotice); + return Result.ok(); + } + + /** + * 编辑 + * + * @param xzNotice + * @return + */ + @ApiOperation(value = "编辑星纵-消息中心信息", notes = "编辑星纵-消息中心信息", httpMethod = "POST") + @PostMapping(value = "/edit") + public Result 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 delete(@ApiIgnore @RequestBody HashMap 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 queryById(@RequestParam(name = "id", required = true) String id) { + Result result = new Result(); + 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 markRead(@ApiIgnore @RequestBody HashMap paramMap) { + xzNoticeService.markRead(paramMap); + return Result.ok(); + } +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzRegistryController.java b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzRegistryController.java new file mode 100644 index 000000000..dde465ec5 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzRegistryController.java @@ -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> queryPageList(@ApiIgnore @RequestParam HashMap paramMap) { + return Result.success(xzRegistryService.queryPageList(paramMap)); + } + + /** + * 列表查询 + * + * @return + */ + @ApiOperation(value = "列表查询星纵-用户和供应商注册信息", notes = "列表查询星纵-用户和供应商注册信息", httpMethod = "GET") + @GetMapping(value = "/list") + public Result> queryList(@ApiIgnore @RequestParam HashMap paramMap) { + return Result.success(xzRegistryService.queryList(paramMap)); + } + + /** + * 添加 + * + * @param xzRegistry + * @return + */ + @ApiOperation(value = "添加星纵-用户和供应商注册信息", notes = "添加星纵-用户和供应商注册信息", httpMethod = "POST") + @PostMapping(value = "/add") + public Result add(@RequestBody @Validate XzRegistry xzRegistry) { + xzRegistryService.add(xzRegistry); + return Result.ok(); + } + + /** + * 编辑 + * + * @param xzRegistry + * @return + */ + @ApiOperation(value = "编辑星纵-用户和供应商注册信息", notes = "编辑星纵-用户和供应商注册信息", httpMethod = "POST") + @PostMapping(value = "/edit") + public Result 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 delete(@ApiIgnore @RequestBody HashMap 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 queryById(@RequestParam(name = "id", required = true) String id) { + Result result = new Result(); + 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 imgResult = new HashMap(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 approval(@RequestBody XzRegistry xzRegistry) { + xzRegistryService.approval(xzRegistry); + return Result.ok(); + } + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/entity/XzNotice.java b/src/main/java/com/zhgd/xmgl/modules/xz/entity/XzNotice.java new file mode 100644 index 000000000..38e858533 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/entity/XzNotice.java @@ -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; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/entity/XzRegistry.java b/src/main/java/com/zhgd/xmgl/modules/xz/entity/XzRegistry.java new file mode 100644 index 000000000..40631b3ce --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/entity/XzRegistry.java @@ -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; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzNoticeMapper.java b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzNoticeMapper.java new file mode 100644 index 000000000..4e48c0577 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzNoticeMapper.java @@ -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 { + + Boolean markRead(HashMap paramMap); +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzRegistryMapper.java b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzRegistryMapper.java new file mode 100644 index 000000000..18344d818 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzRegistryMapper.java @@ -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 { + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/mapper/xml/XzNoticeMapper.xml b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/xml/XzNoticeMapper.xml new file mode 100644 index 000000000..dd1b645a4 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/xml/XzNoticeMapper.xml @@ -0,0 +1,18 @@ + + + + + diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/mapper/xml/XzRegistryMapper.xml b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/xml/XzRegistryMapper.xml new file mode 100644 index 000000000..3f89f02cb --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/xml/XzRegistryMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzNoticeService.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzNoticeService.java new file mode 100644 index 000000000..9952c0bc5 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzNoticeService.java @@ -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 { + + IPage queryPageList(HashMap paramMap); + + List queryList(HashMap paramMap); + + void add(XzNotice xzNotice); + + void edit(XzNotice xzNotice); + + void delete(String id); + + void markRead(HashMap paramMap); +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzRegistryService.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzRegistryService.java new file mode 100644 index 000000000..e67a561ff --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzRegistryService.java @@ -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 { + + IPage queryPageList(HashMap paramMap); + + List queryList(HashMap paramMap); + + void add(XzRegistry xzRegistry); + + void edit(XzRegistry xzRegistry); + + void delete(String id); + + void approval(XzRegistry xzRegistry); +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzNoticeServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzNoticeServiceImpl.java new file mode 100644 index 000000000..f387b8730 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzNoticeServiceImpl.java @@ -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 implements IXzNoticeService { + @Autowired + private XzNoticeMapper xzNoticeMapper; + + @Override + public IPage queryPageList(HashMap paramMap) { + QueryWrapper queryWrapper = getQueryWrapper(paramMap); + Page page = PageUtil.getPage(paramMap); + IPage pageList = this.page(page, queryWrapper); + pageList.setRecords(dealList(pageList.getRecords())); + return pageList; + } + + @Override + public List queryList(HashMap paramMap) { + QueryWrapper queryWrapper = getQueryWrapper(paramMap); + return dealList(this.list(queryWrapper)); + } + + private QueryWrapper getQueryWrapper(HashMap paramMap) { + String alias = ""; + QueryWrapper queryWrapper = QueryGenerator.initPageQueryWrapper(XzNotice.class, paramMap, alias); + queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(XzNotice::getId)); + return queryWrapper; + } + + private List dealList(List 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 paramMap) { + baseMapper.markRead(paramMap); + + } + + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzRegistryServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzRegistryServiceImpl.java new file mode 100644 index 000000000..aa6b24f60 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzRegistryServiceImpl.java @@ -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 implements IXzRegistryService { + @Autowired + private XzRegistryMapper xzRegistryMapper; + @Autowired + SystemUserMapper systemUserMapper; + @Autowired + EmailUtil emailUtil; + + @Override + public IPage queryPageList(HashMap paramMap) { + QueryWrapper queryWrapper = getQueryWrapper(paramMap); + Page page = PageUtil.getPage(paramMap); + IPage pageList = this.page(page, queryWrapper); + pageList.setRecords(dealList(pageList.getRecords())); + return pageList; + } + + @Override + public List queryList(HashMap paramMap) { + QueryWrapper queryWrapper = getQueryWrapper(paramMap); + return dealList(this.list(queryWrapper)); + } + + private QueryWrapper getQueryWrapper(HashMap paramMap) { + String alias = ""; + QueryWrapper queryWrapper = QueryGenerator.initPageQueryWrapper(XzRegistry.class, paramMap, alias); + queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(XzRegistry::getId)); + return queryWrapper; + } + + private List dealList(List list) { + return list; + } + + @Override + public void add(XzRegistry xzRegistry) { + SystemUser systemUser = systemUserMapper.selectOne(new LambdaQueryWrapper() + .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); + + } + + +} diff --git a/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java b/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java index 973d84570..55dd564d5 100644 --- a/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java +++ b/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java @@ -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() diff --git a/src/main/java/com/zhgd/xmgl/task/DischargingPlatformCurrentDataTask.java b/src/main/java/com/zhgd/xmgl/task/DischargingPlatformCurrentDataTask.java index 2d04c19c4..fe093bef3 100644 --- a/src/main/java/com/zhgd/xmgl/task/DischargingPlatformCurrentDataTask.java +++ b/src/main/java/com/zhgd/xmgl/task/DischargingPlatformCurrentDataTask.java @@ -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 projects = projectMapper.selectList(new LambdaQueryWrapper() diff --git a/src/main/java/com/zhgd/xmgl/task/ElectricalTask.java b/src/main/java/com/zhgd/xmgl/task/ElectricalTask.java index 84e38d1a6..975f6045e 100644 --- a/src/main/java/com/zhgd/xmgl/task/ElectricalTask.java +++ b/src/main/java/com/zhgd/xmgl/task/ElectricalTask.java @@ -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 projectList = projectMapper.selectList(new LambdaQueryWrapper() diff --git a/src/main/java/com/zhgd/xmgl/task/JzgTask.java b/src/main/java/com/zhgd/xmgl/task/JzgTask.java index 26a2842c4..27e8a008c 100644 --- a/src/main/java/com/zhgd/xmgl/task/JzgTask.java +++ b/src/main/java/com/zhgd/xmgl/task/JzgTask.java @@ -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; diff --git a/src/main/java/com/zhgd/xmgl/task/LocationDataTask.java b/src/main/java/com/zhgd/xmgl/task/LocationDataTask.java index 53a0d0893..c08d2c37b 100644 --- a/src/main/java/com/zhgd/xmgl/task/LocationDataTask.java +++ b/src/main/java/com/zhgd/xmgl/task/LocationDataTask.java @@ -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(); diff --git a/src/main/java/com/zhgd/xmgl/task/MechanicalEquipmentPositionDayRecordTask.java b/src/main/java/com/zhgd/xmgl/task/MechanicalEquipmentPositionDayRecordTask.java index 9fc69c359..de47a9c30 100644 --- a/src/main/java/com/zhgd/xmgl/task/MechanicalEquipmentPositionDayRecordTask.java +++ b/src/main/java/com/zhgd/xmgl/task/MechanicalEquipmentPositionDayRecordTask.java @@ -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 dataList = mechanicalEquipmentPositionDataMapper.selectList(new LambdaQueryWrapper() + .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 dataList) { List subList = dataList.subList(1, dataList.size() - 1); StringBuilder sb = new StringBuilder(); diff --git a/src/main/java/com/zhgd/xmgl/task/SafetyHatTask.java b/src/main/java/com/zhgd/xmgl/task/SafetyHatTask.java index 428d71bdd..e529f673b 100644 --- a/src/main/java/com/zhgd/xmgl/task/SafetyHatTask.java +++ b/src/main/java/com/zhgd/xmgl/task/SafetyHatTask.java @@ -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; diff --git a/src/main/java/com/zhgd/xmgl/task/StableWaterMixStationTask.java b/src/main/java/com/zhgd/xmgl/task/StableWaterMixStationTask.java index 619a4ac3d..3f6b326bd 100644 --- a/src/main/java/com/zhgd/xmgl/task/StableWaterMixStationTask.java +++ b/src/main/java/com/zhgd/xmgl/task/StableWaterMixStationTask.java @@ -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 projects = projectMapper.selectList(new LambdaQueryWrapper() diff --git a/src/main/java/com/zhgd/xmgl/task/StandardDevTask.java b/src/main/java/com/zhgd/xmgl/task/StandardDevTask.java index 9952ad6c1..cc4c7e551 100644 --- a/src/main/java/com/zhgd/xmgl/task/StandardDevTask.java +++ b/src/main/java/com/zhgd/xmgl/task/StandardDevTask.java @@ -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("------------拉取执行标样室时数据任务开始---------"); diff --git a/src/main/java/com/zhgd/xmgl/task/TowerTask.java b/src/main/java/com/zhgd/xmgl/task/TowerTask.java index 1c8eba7de..5ae02ebfe 100644 --- a/src/main/java/com/zhgd/xmgl/task/TowerTask.java +++ b/src/main/java/com/zhgd/xmgl/task/TowerTask.java @@ -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 projects = projectMapper.selectList(new LambdaQueryWrapper() diff --git a/src/main/java/com/zhgd/xmgl/task/TowerWorkerAttendanceTask.java b/src/main/java/com/zhgd/xmgl/task/TowerWorkerAttendanceTask.java index f15e6c338..4666c6fde 100644 --- a/src/main/java/com/zhgd/xmgl/task/TowerWorkerAttendanceTask.java +++ b/src/main/java/com/zhgd/xmgl/task/TowerWorkerAttendanceTask.java @@ -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 projects = projectMapper.selectList(new LambdaQueryWrapper() diff --git a/src/main/java/com/zhgd/xmgl/task/WorkerTask.java b/src/main/java/com/zhgd/xmgl/task/WorkerTask.java index e36342bcf..dddac2b49 100644 --- a/src/main/java/com/zhgd/xmgl/task/WorkerTask.java +++ b/src/main/java/com/zhgd/xmgl/task/WorkerTask.java @@ -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 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 list = workerCertificateMapper.alarmWorkerBlack(); Map> projectMap = list.stream().collect(Collectors.groupingBy(WorkerInfo::getProjectSn)); @@ -202,6 +208,8 @@ public class WorkerTask { } } } + + } } diff --git a/src/main/java/com/zhgd/xmgl/util/EmailUtil.java b/src/main/java/com/zhgd/xmgl/util/EmailUtil.java new file mode 100644 index 000000000..bcf8dd012 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/util/EmailUtil.java @@ -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邮件", "

内容:第一封html邮件

"); + } +} diff --git a/src/main/java/com/zhgd/xmgl/util/TiandituUtil.java b/src/main/java/com/zhgd/xmgl/util/TiandituUtil.java index e4da1b61b..6bad5a3f4 100644 --- a/src/main/java/com/zhgd/xmgl/util/TiandituUtil.java +++ b/src/main/java/com/zhgd/xmgl/util/TiandituUtil.java @@ -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("(.*)"); @@ -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));