bug修复
This commit is contained in:
parent
e3569117df
commit
981db8a873
@ -1,11 +1,14 @@
|
|||||||
package com.zhgd.xmgl.config;
|
package com.zhgd.xmgl.config;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.text.CharSequenceUtil;
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.zhgd.jeecg.common.util.SpringContextUtils;
|
import com.zhgd.jeecg.common.util.SpringContextUtils;
|
||||||
|
import com.zhgd.xmgl.modules.project.entity.Project;
|
||||||
|
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
||||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatAlarm;
|
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatAlarm;
|
||||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
||||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
||||||
@ -18,7 +21,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.websocket.*;
|
import javax.websocket.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
@ -65,12 +70,14 @@ public class SafetyHatWSClient {
|
|||||||
Boolean status = jo.getBoolean("status");
|
Boolean status = jo.getBoolean("status");
|
||||||
if (status != null && status) {
|
if (status != null && status) {
|
||||||
JSONArray jaData = jo.getJSONArray("data");
|
JSONArray jaData = jo.getJSONArray("data");
|
||||||
|
List<String> devsns = new ArrayList<>();
|
||||||
if (jaData.size() != 0) {
|
if (jaData.size() != 0) {
|
||||||
for (int i = 0; i < jaData.size(); i++) {
|
for (int i = 0; i < jaData.size(); i++) {
|
||||||
JSONObject joData = jaData.getJSONObject(i);
|
JSONObject joData = jaData.getJSONObject(i);
|
||||||
JSONObject joUserInfo = joData.getJSONObject("user_info");
|
JSONObject joUserInfo = joData.getJSONObject("user_info");
|
||||||
if (joUserInfo != null) {
|
if (joUserInfo != null) {
|
||||||
String deviceId = joUserInfo.getString("device_id");
|
String deviceId = joUserInfo.getString("device_id");
|
||||||
|
devsns.add(deviceId);
|
||||||
log.info("SafetyHatWSClient获取实时数据的deviceId:{}", deviceId);
|
log.info("SafetyHatWSClient获取实时数据的deviceId:{}", deviceId);
|
||||||
SafetyHatDev dev = SpringContextUtils.getBean(SafetyHatDevMapper.class).selectOne(new LambdaQueryWrapper<SafetyHatDev>()
|
SafetyHatDev dev = SpringContextUtils.getBean(SafetyHatDevMapper.class).selectOne(new LambdaQueryWrapper<SafetyHatDev>()
|
||||||
.eq(SafetyHatDev::getDevSn, deviceId));
|
.eq(SafetyHatDev::getDevSn, deviceId));
|
||||||
@ -94,10 +101,42 @@ public class SafetyHatWSClient {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
dev.setOnline(1);
|
||||||
|
SpringContextUtils.getBean(ISafetyHatDataService.class).updateStatus(dev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//不在data里面的,全部设置离线
|
||||||
|
Project project = SpringContextUtils.getBean(ProjectMapper.class).selectOne(new LambdaQueryWrapper<Project>().eq(Project::getHelmetUser, id));
|
||||||
|
if (project != null) {
|
||||||
|
List<SafetyHatDev> devList = SpringContextUtils.getBean(SafetyHatDevMapper.class).selectList(new LambdaQueryWrapper<SafetyHatDev>()
|
||||||
|
.eq(SafetyHatDev::getProjectSn, project.getProjectSn())
|
||||||
|
.notIn(SafetyHatDev::getDevSn, devsns)
|
||||||
|
);
|
||||||
|
if (CollUtil.isNotEmpty(devList)) {
|
||||||
|
for (SafetyHatDev dev : devList) {
|
||||||
|
dev.setOnline(0);
|
||||||
|
SpringContextUtils.getBean(ISafetyHatDataService.class).updateStatus(dev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (status != null && !status) {
|
||||||
|
//暂时没有活跃的设备,全部设置离线
|
||||||
|
try {
|
||||||
|
Project project = SpringContextUtils.getBean(ProjectMapper.class).selectOne(new LambdaQueryWrapper<Project>().eq(Project::getHelmetUser, id));
|
||||||
|
if (project != null) {
|
||||||
|
List<SafetyHatDev> devList = SpringContextUtils.getBean(SafetyHatDevMapper.class).selectList(new LambdaQueryWrapper<SafetyHatDev>().eq(SafetyHatDev::getProjectSn, project.getProjectSn()));
|
||||||
|
if (CollUtil.isNotEmpty(devList)) {
|
||||||
|
for (SafetyHatDev dev : devList) {
|
||||||
|
dev.setOnline(0);
|
||||||
|
SpringContextUtils.getBean(ISafetyHatDataService.class).updateStatus(dev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (Objects.equals(cmd, "server_push_sos")) {
|
} else if (Objects.equals(cmd, "server_push_sos")) {
|
||||||
log.info("SafetyHatWSClient接收报警数据");
|
log.info("SafetyHatWSClient接收报警数据");
|
||||||
|
|||||||
@ -28,10 +28,7 @@ public class Notice implements Serializable {
|
|||||||
@TableId(type = IdType.ASSIGN_ID)
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
@ApiModelProperty(value = "消息通知")
|
@ApiModelProperty(value = "消息通知")
|
||||||
private java.lang.Long id;
|
private java.lang.Long id;
|
||||||
/**
|
@ApiModelProperty(value = "类型,1考勤提醒,2人员报警,3车辆,4混凝土监测,5卸料平台,6配电箱,7扬尘,8视频,9标养室,10安全检查,11质量检查,12塔吊,13升降机,14电表,15水表,16访客,17,防疫人员通知,18访客通知,19巡检点,20人员的资质证书即将到期,21人员的合同信息即将到期,22人员的保险信息即将到期")
|
||||||
* 类型,1考勤提醒,2人员报警,3车辆,4混凝土监测,5卸料平台,6配电箱,7扬尘,8视频,9标养室,10安全检查,11质量检查,12塔吊,13升降机,14电表,15水表,16访客,17,防疫人员通知,18访客通知,19巡检点,20人员的资质证书即将到期
|
|
||||||
*/
|
|
||||||
@ApiModelProperty(value = "类型,1考勤提醒,2人员报警,3车辆,4混凝土监测,5卸料平台,6配电箱,7扬尘,8视频,9标养室,10安全检查,11质量检查,12塔吊,13升降机,14电表,15水表,16访客,17,防疫人员通知,18访客通知,19巡检点,20人员的资质证书即将到期")
|
|
||||||
private java.lang.String type;
|
private java.lang.String type;
|
||||||
/**
|
/**
|
||||||
* 消息内容
|
* 消息内容
|
||||||
|
|||||||
@ -90,7 +90,7 @@ public class SystemUser implements Serializable {
|
|||||||
@Excel(name = "企业或项目sn", width = 15)
|
@Excel(name = "企业或项目sn", width = 15)
|
||||||
@ApiModelProperty(value = "企业或项目sn")
|
@ApiModelProperty(value = "企业或项目sn")
|
||||||
private java.lang.String sn;
|
private java.lang.String sn;
|
||||||
@ApiModelProperty(value = "账号类型,1系统管理员:jxjadmin,2企业管理员账号:17512009894,3企业区账号,4企业市账号,5项目账号(thhy,只能看一个项目),6项目子账号(aq,比一个项目更小),7企业子账号:qyyszh(只能看到很多项目的账号):,8参建单位,9政务,10租户")
|
@ApiModelProperty(value = "账号类型,1系统管理员:jxjadmin,2企业管理员账号:17512009894,3企业区账号,4企业市账号,5项目账号(thhy,只能看一个项目),6项目子账号(aq,比一个项目更小),7企业子账号:qyyszh(只能看到很多项目的账号):,8参建单位,9政务,10租户(新用户)11供应商")
|
||||||
private java.lang.Integer accountType;
|
private java.lang.Integer accountType;
|
||||||
|
|
||||||
@ApiModelProperty(value = "项目子账号绑定的劳务人员")
|
@ApiModelProperty(value = "项目子账号绑定的劳务人员")
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package com.zhgd.xmgl.modules.basicdata.service;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.zhgd.jeecg.common.api.vo.Result;
|
import com.zhgd.jeecg.common.api.vo.Result;
|
||||||
import com.zhgd.jeecg.common.mybatis.EntityMap;
|
|
||||||
import com.zhgd.xmgl.entity.sj.JwtPayloadUserInfo;
|
import com.zhgd.xmgl.entity.sj.JwtPayloadUserInfo;
|
||||||
import com.zhgd.xmgl.modules.basicdata.entity.dto.LoginInfoByTokenDto;
|
import com.zhgd.xmgl.modules.basicdata.entity.dto.LoginInfoByTokenDto;
|
||||||
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
|
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
|
||||||
@ -29,7 +28,7 @@ public interface ISystemUserService extends IService<SystemUser> {
|
|||||||
|
|
||||||
List<SystemUser> getSystemUserBySn(Map<String, Object> map);
|
List<SystemUser> getSystemUserBySn(Map<String, Object> map);
|
||||||
|
|
||||||
void saveSystemUser(SystemUser systemUser);
|
Long saveSystemUser(SystemUser systemUser);
|
||||||
|
|
||||||
void editSystemUser(SystemUser systemUser);
|
void editSystemUser(SystemUser systemUser);
|
||||||
|
|
||||||
|
|||||||
@ -629,12 +629,12 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTenantOrg(HashMap<String, Object> paramMap) {
|
public void updateTenantOrg(HashMap<String, Object> paramMap) {
|
||||||
String userId = MapUtils.getString(paramMap, "userId");
|
Long userId = MapUtils.getLong(paramMap, "userId");
|
||||||
String projectSns = MapUtils.getString(paramMap, "projectSns");
|
String projectSns = MapUtils.getString(paramMap, "projectSns");
|
||||||
String companySns = MapUtils.getString(paramMap, "companySns");
|
String companySns = MapUtils.getString(paramMap, "companySns");
|
||||||
xzSystemUserToCompanyProjectMapper.delete(new LambdaQueryWrapper<XzSystemUserToCompanyProject>().eq(XzSystemUserToCompanyProject::getUserId, userId));
|
xzSystemUserToCompanyProjectMapper.delete(new LambdaQueryWrapper<XzSystemUserToCompanyProject>().eq(XzSystemUserToCompanyProject::getUserId, userId));
|
||||||
insertTenantOrg(companySns, 1);
|
insertTenantOrg(companySns, 1, userId);
|
||||||
insertTenantOrg(projectSns, 2);
|
insertTenantOrg(projectSns, 2, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -642,13 +642,13 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
|
|||||||
return systemUserMapper.getOrgSnListByUserId(paramMap);
|
return systemUserMapper.getOrgSnListByUserId(paramMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void insertTenantOrg(String sns, int type) {
|
private void insertTenantOrg(String sns, int type, Long userId) {
|
||||||
if (StringUtils.isNotBlank(sns)) {
|
if (StringUtils.isNotBlank(sns)) {
|
||||||
String[] snArr = StringUtils.split(sns, ",");
|
String[] snArr = StringUtils.split(sns, ",");
|
||||||
for (int i = 0; i < snArr.length; i++) {
|
for (int i = 0; i < snArr.length; i++) {
|
||||||
String sn = snArr[i];
|
String sn = snArr[i];
|
||||||
XzSystemUserToCompanyProject to = new XzSystemUserToCompanyProject();
|
XzSystemUserToCompanyProject to = new XzSystemUserToCompanyProject();
|
||||||
to.setUserId(Long.valueOf(sn));
|
to.setUserId(userId);
|
||||||
to.setSn(sn);
|
to.setSn(sn);
|
||||||
to.setType(type);
|
to.setType(type);
|
||||||
xzSystemUserToCompanyProjectMapper.insert(to);
|
xzSystemUserToCompanyProjectMapper.insert(to);
|
||||||
|
|||||||
@ -623,7 +623,7 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveSystemUser(SystemUser systemUser) {
|
public Long saveSystemUser(SystemUser systemUser) {
|
||||||
QueryWrapper<SystemUser> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SystemUser> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.lambda().eq(SystemUser::getAccount, systemUser.getAccount());
|
queryWrapper.lambda().eq(SystemUser::getAccount, systemUser.getAccount());
|
||||||
int count = systemUserMapper.selectCount(queryWrapper);
|
int count = systemUserMapper.selectCount(queryWrapper);
|
||||||
@ -647,6 +647,7 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
|
|||||||
systemUser.setShowPassword(password);
|
systemUser.setShowPassword(password);
|
||||||
systemUser.setPassword(passwordEncoder.encode(password));
|
systemUser.setPassword(passwordEncoder.encode(password));
|
||||||
systemUserMapper.insert(systemUser);
|
systemUserMapper.insert(systemUser);
|
||||||
|
return systemUser.getUserId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -99,7 +99,11 @@ public class FrontierProtectionNoNetDev implements Serializable {
|
|||||||
@ApiModelProperty(value = "上传时间")
|
@ApiModelProperty(value = "上传时间")
|
||||||
private java.util.Date uploadDate;
|
private java.util.Date uploadDate;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "设备在线状态 0离线;1在线")
|
||||||
|
private Integer onLine;
|
||||||
|
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
@ApiModelProperty(value = "责任班组名称")
|
@ApiModelProperty(value = "责任班组名称")
|
||||||
private java.lang.String dutyTeamInfoName;
|
private java.lang.String dutyTeamInfoName;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,31 +1,31 @@
|
|||||||
package com.zhgd.xmgl.modules.frontierprotectionnonet.service.impl;
|
package com.zhgd.xmgl.modules.frontierprotectionnonet.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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;
|
||||||
|
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||||
import com.zhgd.xmgl.modules.frontierprotectionnonet.entity.FrontierProtectionNoNetData;
|
import com.zhgd.xmgl.modules.frontierprotectionnonet.entity.FrontierProtectionNoNetData;
|
||||||
import com.zhgd.xmgl.modules.frontierprotectionnonet.entity.dto.FrontierProtectionNoNetDataDto;
|
|
||||||
import com.zhgd.xmgl.modules.frontierprotectionnonet.entity.FrontierProtectionNoNetDev;
|
import com.zhgd.xmgl.modules.frontierprotectionnonet.entity.FrontierProtectionNoNetDev;
|
||||||
|
import com.zhgd.xmgl.modules.frontierprotectionnonet.entity.dto.FrontierProtectionNoNetDataDto;
|
||||||
import com.zhgd.xmgl.modules.frontierprotectionnonet.mapper.FrontierProtectionNoNetDataMapper;
|
import com.zhgd.xmgl.modules.frontierprotectionnonet.mapper.FrontierProtectionNoNetDataMapper;
|
||||||
import com.zhgd.xmgl.modules.frontierprotectionnonet.mapper.FrontierProtectionNoNetDevMapper;
|
import com.zhgd.xmgl.modules.frontierprotectionnonet.mapper.FrontierProtectionNoNetDevMapper;
|
||||||
import com.zhgd.xmgl.modules.frontierprotectionnonet.service.IFrontierProtectionNoNetDataService;
|
import com.zhgd.xmgl.modules.frontierprotectionnonet.service.IFrontierProtectionNoNetDataService;
|
||||||
import com.zhgd.xmgl.security.entity.UserInfo;
|
import com.zhgd.xmgl.security.entity.UserInfo;
|
||||||
import com.zhgd.xmgl.security.util.SecurityUtils;
|
import com.zhgd.xmgl.security.util.SecurityUtils;
|
||||||
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.zhgd.xmgl.util.PageUtil;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.zhgd.xmgl.util.RefUtil;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import com.zhgd.xmgl.util.RefUtil;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 临边防护(无网)-数据
|
* @Description: 临边防护(无网)-数据
|
||||||
* @author: pds
|
* @author: pds
|
||||||
@ -91,6 +91,24 @@ public class FrontierProtectionNoNetDataServiceImpl extends ServiceImpl<Frontier
|
|||||||
//throw new OpenAlertException("设备编号不正确");
|
//throw new OpenAlertException("设备编号不正确");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
只有设备状态变化(在线/离线)时才会推送数据,推送失败不会重试。
|
||||||
|
布防(在线):alarm=0,state=布防
|
||||||
|
离线:alarm=0,state=故障
|
||||||
|
*/
|
||||||
|
if (Objects.equals(dto.getAlarm(), "0") && Objects.equals(dto.getState(), "布防")) {
|
||||||
|
//在线
|
||||||
|
frontierProtectionNoNetDevMapper.update(null, new LambdaUpdateWrapper<FrontierProtectionNoNetDev>()
|
||||||
|
.eq(FrontierProtectionNoNetDev::getDevSn, deviceid)
|
||||||
|
.set(FrontierProtectionNoNetDev::getOnLine, 1)
|
||||||
|
);
|
||||||
|
} else if (Objects.equals(dto.getAlarm(), "0") && Objects.equals(dto.getState(), "故障")) {
|
||||||
|
//故障
|
||||||
|
frontierProtectionNoNetDevMapper.update(null, new LambdaUpdateWrapper<FrontierProtectionNoNetDev>()
|
||||||
|
.eq(FrontierProtectionNoNetDev::getDevSn, deviceid)
|
||||||
|
.set(FrontierProtectionNoNetDev::getOnLine, 0)
|
||||||
|
);
|
||||||
|
}
|
||||||
FrontierProtectionNoNetData data = new FrontierProtectionNoNetData();
|
FrontierProtectionNoNetData data = new FrontierProtectionNoNetData();
|
||||||
data.setDevSn(deviceid);
|
data.setDevSn(deviceid);
|
||||||
data.setMonitorObject(null);
|
data.setMonitorObject(null);
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.gexin.fastjson.JSON;
|
import com.gexin.fastjson.JSON;
|
||||||
import com.zhgd.jeecg.common.api.vo.Result;
|
import com.zhgd.jeecg.common.api.vo.Result;
|
||||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
||||||
|
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
||||||
import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatDataService;
|
import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatDataService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
@ -76,6 +77,14 @@ public class SafetyHatDataController {
|
|||||||
return Result.ok();
|
return Result.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "更新智能安全帽在线离线状态", notes = "更新智能安全帽在线离线状态", httpMethod = "POST")
|
||||||
|
@PostMapping(value = "/updateStatus")
|
||||||
|
public Result<SafetyHatData> updateStatus(@RequestBody @Validate SafetyHatDev safetyHatDev) {
|
||||||
|
log.info("更新智能安全帽在线离线状态:{}", JSON.toJSONString(safetyHatDev));
|
||||||
|
safetyHatDataService.updateStatus(safetyHatDev);
|
||||||
|
return Result.ok();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 编辑
|
* 编辑
|
||||||
*
|
*
|
||||||
|
|||||||
@ -74,6 +74,8 @@ public class SafetyHatDev implements Serializable {
|
|||||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@ApiModelProperty(value = "心跳时间")
|
@ApiModelProperty(value = "心跳时间")
|
||||||
private java.util.Date heartbeatTime;
|
private java.util.Date heartbeatTime;
|
||||||
|
@ApiModelProperty(value = "在线状态(0.离线 1.在线)")
|
||||||
|
private java.lang.Integer online;
|
||||||
/**
|
/**
|
||||||
* 人员名称
|
* 人员名称
|
||||||
*/
|
*/
|
||||||
@ -81,7 +83,5 @@ public class SafetyHatDev implements Serializable {
|
|||||||
@ApiModelProperty(value = "人员名称")
|
@ApiModelProperty(value = "人员名称")
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private java.lang.String workerName;
|
private java.lang.String workerName;
|
||||||
@TableField(exist = false)
|
|
||||||
@ApiModelProperty(value = "在线状态(0.离线 1.在线)")
|
|
||||||
private java.lang.Integer online;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,10 +2,7 @@
|
|||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatDevMapper">
|
<mapper namespace="com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatDevMapper">
|
||||||
<select id="queryList" resultType="com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev">
|
<select id="queryList" resultType="com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev">
|
||||||
select shd.*,wi.worker_name,IFNULL(((case
|
select shd.*,wi.worker_name
|
||||||
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(heartbeat_time)) / 60) <= 30
|
|
||||||
then 1
|
|
||||||
else 0 end)),0) online
|
|
||||||
from safety_hat_dev shd
|
from safety_hat_dev shd
|
||||||
left join worker_info wi on wi.id = shd.worker_info_id
|
left join worker_info wi on wi.id = shd.worker_info_id
|
||||||
${ew.customSqlSegment}
|
${ew.customSqlSegment}
|
||||||
@ -15,10 +12,7 @@
|
|||||||
resultType="com.zhgd.xmgl.modules.vehicleposition.entity.vo.CountVehiclePositionDevVo">
|
resultType="com.zhgd.xmgl.modules.vehicleposition.entity.vo.CountVehiclePositionDevVo">
|
||||||
select t.*,t.count - t.onlineCount as offlineCount from (
|
select t.*,t.count - t.onlineCount as offlineCount from (
|
||||||
select count(*) count,
|
select count(*) count,
|
||||||
IFNULL(sum(IFNULL(((case
|
IFNULL(sum(online),0) onlineCount
|
||||||
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(heartbeat_time)) / 60) <= 30
|
|
||||||
then 1
|
|
||||||
else 0 end)), 0)),0) onlineCount
|
|
||||||
from safety_hat_dev
|
from safety_hat_dev
|
||||||
where 1 = 1
|
where 1 = 1
|
||||||
<if test="devSn != null and devSn != ''">
|
<if test="devSn != null and devSn != ''">
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.zhgd.xmgl.modules.safetyhat.service;
|
|||||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -26,4 +27,6 @@ public interface ISafetyHatDataService extends IService<SafetyHatData> {
|
|||||||
void delete(String id);
|
void delete(String id);
|
||||||
|
|
||||||
List<SafetyHatData> getNewestList(HashMap<String, Object> paramMap);
|
List<SafetyHatData> getNewestList(HashMap<String, Object> paramMap);
|
||||||
|
|
||||||
|
void updateStatus(SafetyHatDev safetyHatDev);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -93,11 +93,6 @@ public class SafetyHatDataServiceImpl extends ServiceImpl<SafetyHatDataMapper, S
|
|||||||
if (dev == null) {
|
if (dev == null) {
|
||||||
throw new OpenAlertException("设备编号不正确");
|
throw new OpenAlertException("设备编号不正确");
|
||||||
}
|
}
|
||||||
SafetyHatData lastData = safetyHatDataMapper.selectOne(new LambdaQueryWrapper<SafetyHatData>()
|
|
||||||
.eq(SafetyHatData::getDevSn, safetyHatData.getDevSn())
|
|
||||||
.orderByDesc(SafetyHatData::getUploadTime)
|
|
||||||
.last("limit 1")
|
|
||||||
);
|
|
||||||
dev.setHeartbeatTime(new Date());
|
dev.setHeartbeatTime(new Date());
|
||||||
safetyHatDevMapper.update(dev, new LambdaQueryWrapper<SafetyHatDev>()
|
safetyHatDevMapper.update(dev, new LambdaQueryWrapper<SafetyHatDev>()
|
||||||
.eq(SafetyHatDev::getDevSn, safetyHatData.getDevSn()));
|
.eq(SafetyHatDev::getDevSn, safetyHatData.getDevSn()));
|
||||||
@ -170,5 +165,16 @@ public class SafetyHatDataServiceImpl extends ServiceImpl<SafetyHatDataMapper, S
|
|||||||
return baseMapper.getNewestList(paramMap);
|
return baseMapper.getNewestList(paramMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateStatus(SafetyHatDev safetyHatDev) {
|
||||||
|
SafetyHatDev dev = safetyHatDevMapper.selectOne(new LambdaQueryWrapper<SafetyHatDev>()
|
||||||
|
.eq(SafetyHatDev::getDevSn, safetyHatDev.getDevSn()));
|
||||||
|
if (dev == null) {
|
||||||
|
throw new OpenAlertException("设备编号不正确");
|
||||||
|
}
|
||||||
|
dev.setOnline(safetyHatDev.getOnline());
|
||||||
|
safetyHatDevMapper.updateById(dev);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,16 +63,6 @@ public class SafetyHatDevServiceImpl extends ServiceImpl<SafetyHatDevMapper, Saf
|
|||||||
String alias = "shd.";
|
String alias = "shd.";
|
||||||
QueryWrapper<SafetyHatDev> queryWrapper = QueryGenerator.initPageQueryWrapper(SafetyHatDev.class, paramMap, alias);
|
QueryWrapper<SafetyHatDev> queryWrapper = QueryGenerator.initPageQueryWrapper(SafetyHatDev.class, paramMap, alias);
|
||||||
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(SafetyHatDev::getId));
|
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(SafetyHatDev::getId));
|
||||||
Integer online = MapUtils.getInteger(paramMap, "online");
|
|
||||||
if (online != null) {
|
|
||||||
String dateTime = DateUtil.formatDateTime(DateUtil.offsetMinute(new Date(), -30));
|
|
||||||
if (online == 1) {
|
|
||||||
queryWrapper.ge(alias + RefUtil.fieldNameUlc(SafetyHatDev::getHeartbeatTime), dateTime);
|
|
||||||
} else {
|
|
||||||
queryWrapper.and(qw -> qw.lt(alias + RefUtil.fieldNameUlc(SafetyHatDev::getHeartbeatTime), dateTime).or()
|
|
||||||
.isNull(alias + RefUtil.fieldNameUlc(SafetyHatDev::getHeartbeatTime)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return queryWrapper;
|
return queryWrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.zhgd.xmgl.modules.worker.entity;
|
package com.zhgd.xmgl.modules.worker.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
@ -81,6 +82,10 @@ public class WorkerBlacklist implements Serializable {
|
|||||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@ApiModelProperty(value = "创建时间")
|
@ApiModelProperty(value = "创建时间")
|
||||||
private java.util.Date createTime;
|
private java.util.Date createTime;
|
||||||
@ApiModelProperty(value = "类型:1证书过期")
|
@ApiModelProperty(value = "类型:1证书过期2合同过期3保险过期")
|
||||||
private java.lang.Integer type;
|
private java.lang.Integer type;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
@ApiModelProperty(value = "考勤考号")
|
||||||
|
private java.lang.String attendanceNumber;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,7 +27,62 @@ public interface WorkerCertificateMapper extends BaseMapper<WorkerCertificate> {
|
|||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<WorkerInfo> selectExpiredNotInBlackWorkerList();
|
List<WorkerInfo> selectExpiredCertificateNotInBlackWorkerList();
|
||||||
|
|
||||||
List<WorkerInfo> alarmWorkerBlack();
|
/**
|
||||||
|
* 查询有合同,但是合同过期而且没有添加到黑名单的劳务人员
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<WorkerInfo> selectExpiredContractNotInBlackWorkerList();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询有保险,但是保险过期而且没有添加到黑名单的劳务人员
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<WorkerInfo> selectExpiredInsuranceNotInBlackWorkerList();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 资格证书到期预警,有总公司配置的
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<WorkerInfo> getAlarmWorkerCertificateWithHeadquarter();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 资格证书到期预警,无总公司配置的
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<WorkerInfo> getAlarmWorkerCertificateNotHeadquarter();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同信息到期预警,有总公司配置的
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<WorkerInfo> getAlarmWorkerContractWithHeadquarter();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同信息到期预警,无总公司配置的
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<WorkerInfo> getAlarmWorkerContractNotHeadquarter();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保险信息到期预警,有总公司配置的
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<WorkerInfo> getAlarmWorkerInsuranceWithHeadquarter();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保险信息到期预警,无总公司配置的
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<WorkerInfo> getAlarmWorkerInsuranceNotHeadquarter();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,7 +51,7 @@
|
|||||||
GROUP BY t1.id
|
GROUP BY t1.id
|
||||||
</select>
|
</select>
|
||||||
<select id="selectWorkerBlacklistPage" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerBlacklist">
|
<select id="selectWorkerBlacklistPage" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerBlacklist">
|
||||||
SELECT b.worker_name,a.*
|
SELECT b.worker_name,b.attendance_number,a.*
|
||||||
from worker_blacklist a LEFT JOIN worker_info b ON a.worker_id=b.id
|
from worker_blacklist a LEFT JOIN worker_info b ON a.worker_id=b.id
|
||||||
WHERE a.project_sn=#{param.projectSn}
|
WHERE a.project_sn=#{param.projectSn}
|
||||||
<if test="param.workerName!=null and param.workerName!=''">
|
<if test="param.workerName!=null and param.workerName!=''">
|
||||||
|
|||||||
@ -22,23 +22,119 @@
|
|||||||
order by num;
|
order by num;
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectExpiredNotInBlackWorkerList" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo">
|
<select id="selectExpiredCertificateNotInBlackWorkerList"
|
||||||
|
resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo">
|
||||||
select distinct wi.*
|
select distinct wi.*
|
||||||
from worker_info wi
|
from worker_info wi
|
||||||
join worker_certificate wc on wi.id = wc.worker_id
|
join worker_certificate wc on wi.id = wc.worker_id
|
||||||
left join worker_blacklist wb on wb.worker_id = wi.id
|
|
||||||
where wc.effect_time <![CDATA[<]]> current_date
|
where wc.effect_time <![CDATA[<]]> current_date
|
||||||
AND (wb.type is null or wb.type != 1)
|
AND not exists(SELECT * FROM worker_blacklist wb WHERE wb.worker_id = wi.id and wb.type = 1)
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="alarmWorkerBlack" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo">
|
<select id="selectExpiredContractNotInBlackWorkerList" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo">
|
||||||
|
select distinct wi.*
|
||||||
|
from worker_info wi
|
||||||
|
join worker_contract wc on wi.id = wc.worker_id
|
||||||
|
where wc.contract_end_date <![CDATA[<]]> current_date
|
||||||
|
AND not exists(SELECT * FROM worker_blacklist wb WHERE wb.worker_id = wi.id and wb.type = 2)
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectExpiredInsuranceNotInBlackWorkerList" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo">
|
||||||
|
select distinct wi.*
|
||||||
|
from worker_info wi
|
||||||
|
join worker_insurance wc on wi.id = wc.worker_id
|
||||||
|
where wc.expire_time <![CDATA[<]]> current_date
|
||||||
|
AND not exists(SELECT * FROM worker_blacklist wb WHERE wb.worker_id = wi.id and wb.type = 3)
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getAlarmWorkerCertificateWithHeadquarter" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo">
|
||||||
select distinct wi.*, b.dictionary_name certificate_type_name
|
select distinct wi.*, b.dictionary_name certificate_type_name
|
||||||
from worker_info wi
|
from worker_info wi
|
||||||
join worker_certificate wc on wi.id = wc.worker_id
|
join worker_certificate wc on wi.id = wc.worker_id
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
(select dictionary_name, id from dictionaries_record WHERE key_name = 'WORKER_CERT') b
|
(select dictionary_name, id from dictionaries_record WHERE key_name = 'WORKER_CERT') b
|
||||||
ON wc.certificate_type = b.id
|
ON wc.certificate_type = b.id
|
||||||
where wc.effect_time <![CDATA[>=]]> date_sub(current_date, interval 15 day)
|
join project p on p.project_sn = wi.project_sn
|
||||||
and wc.effect_time <![CDATA[<]]> current_date
|
join company c on c.company_sn = p.company_sn
|
||||||
|
join system_logo_config slc on slc.headquarters_sn = c.headquarters_sn
|
||||||
|
where current_date <![CDATA[>=]]>
|
||||||
|
date_format(date_sub(wc.effect_time, interval slc.certificate_expire_warn_ahead_day day), '%Y-%m-%d')
|
||||||
|
and current_date <![CDATA[<=]]> wc.effect_time
|
||||||
|
and slc.is_open_certificate_expire_warn = 1
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getAlarmWorkerCertificateNotHeadquarter" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo">
|
||||||
|
select distinct wi.*, b.dictionary_name certificate_type_name
|
||||||
|
from worker_info wi
|
||||||
|
join worker_certificate wc on wi.id = wc.worker_id
|
||||||
|
LEFT JOIN
|
||||||
|
(select dictionary_name, id from dictionaries_record WHERE key_name = 'WORKER_CERT') b
|
||||||
|
ON wc.certificate_type = b.id
|
||||||
|
join project p on p.project_sn = wi.project_sn
|
||||||
|
join company c on c.company_sn = p.company_sn
|
||||||
|
where current_date <![CDATA[>=]]> date_format(date_sub(wc.effect_time, interval (select certificate_expire_warn_ahead_day
|
||||||
|
from system_logo_config
|
||||||
|
where headquarters_sn = '-1') day),
|
||||||
|
'%Y-%m-%d')
|
||||||
|
and current_date <![CDATA[<=]]> wc.effect_time
|
||||||
|
and not exists(select 1 from system_logo_config slc where slc.headquarters_sn = c.headquarters_sn)
|
||||||
|
and (select is_open_certificate_expire_warn from system_logo_config where headquarters_sn = '-1') = 1
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getAlarmWorkerContractWithHeadquarter" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo">
|
||||||
|
select distinct wi.*
|
||||||
|
from worker_info wi
|
||||||
|
join worker_contract wc on wi.id = wc.worker_id
|
||||||
|
join project p on p.project_sn = wi.project_sn
|
||||||
|
join company c on c.company_sn = p.company_sn
|
||||||
|
join system_logo_config slc on slc.headquarters_sn = c.headquarters_sn
|
||||||
|
where current_date <![CDATA[>=]]>
|
||||||
|
date_format(date_sub(wc.contract_end_date, interval slc.certificate_expire_warn_ahead_day day),
|
||||||
|
'%Y-%m-%d')
|
||||||
|
and current_date <![CDATA[<=]]> wc.contract_end_date
|
||||||
|
and slc.is_open_certificate_expire_warn = 1
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getAlarmWorkerContractNotHeadquarter" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo">
|
||||||
|
select distinct wi.*
|
||||||
|
from worker_info wi
|
||||||
|
join worker_contract wc on wi.id = wc.worker_id
|
||||||
|
join project p on p.project_sn = wi.project_sn
|
||||||
|
join company c on c.company_sn = p.company_sn
|
||||||
|
where current_date <![CDATA[>=]]> date_format(date_sub(wc.contract_end_date, interval
|
||||||
|
(select certificate_expire_warn_ahead_day
|
||||||
|
from system_logo_config
|
||||||
|
where headquarters_sn = '-1') day), '%Y-%m-%d')
|
||||||
|
and current_date <![CDATA[<=]]> wc.contract_end_date
|
||||||
|
and not exists(select 1 from system_logo_config slc where slc.headquarters_sn = c.headquarters_sn)
|
||||||
|
and (select is_open_certificate_expire_warn from system_logo_config where headquarters_sn = '-1') = 1
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getAlarmWorkerInsuranceWithHeadquarter" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo">
|
||||||
|
select distinct wi.*
|
||||||
|
from worker_info wi
|
||||||
|
join worker_insurance wc on wi.id = wc.worker_id
|
||||||
|
join project p on p.project_sn = wi.project_sn
|
||||||
|
join company c on c.company_sn = p.company_sn
|
||||||
|
join system_logo_config slc on slc.headquarters_sn = c.headquarters_sn
|
||||||
|
where current_date <![CDATA[>=]]>
|
||||||
|
date_format(date_sub(wc.expire_time, interval slc.certificate_expire_warn_ahead_day day), '%Y-%m-%d')
|
||||||
|
and current_date <![CDATA[<=]]> wc.expire_time
|
||||||
|
and slc.is_open_certificate_expire_warn = 1
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getAlarmWorkerInsuranceNotHeadquarter" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo">
|
||||||
|
select distinct wi.*
|
||||||
|
from worker_info wi
|
||||||
|
join worker_insurance wc on wi.id = wc.worker_id
|
||||||
|
join project p on p.project_sn = wi.project_sn
|
||||||
|
join company c on c.company_sn = p.company_sn
|
||||||
|
where current_date <![CDATA[>=]]> date_format(date_sub(wc.expire_time, interval (select certificate_expire_warn_ahead_day
|
||||||
|
from system_logo_config
|
||||||
|
where headquarters_sn = '-1') day),
|
||||||
|
'%Y-%m-%d')
|
||||||
|
and current_date <![CDATA[<=]]> wc.expire_time
|
||||||
|
and not exists(select 1 from system_logo_config slc where slc.headquarters_sn = c.headquarters_sn)
|
||||||
|
and (select is_open_certificate_expire_warn from system_logo_config where headquarters_sn = '-1') = 1
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@ -83,7 +83,6 @@ public class UfaceDevServiceImpl extends ServiceImpl<UfaceDevMapper, UfaceDev> i
|
|||||||
}
|
}
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
ufaceDev.setCreateTime(sdf.format(new Date()));
|
ufaceDev.setCreateTime(sdf.format(new Date()));
|
||||||
ufaceDev.setHeartBeatTime(new Date());
|
|
||||||
ufaceDevMapper.insert(ufaceDev);
|
ufaceDevMapper.insert(ufaceDev);
|
||||||
projectUfaceConfigService.addUfaceDev(ufaceDev);
|
projectUfaceConfigService.addUfaceDev(ufaceDev);
|
||||||
asyncWorker.saveUfaceDev(ufaceDev);
|
asyncWorker.saveUfaceDev(ufaceDev);
|
||||||
|
|||||||
@ -1,17 +1,17 @@
|
|||||||
package com.zhgd.xmgl.modules.xz.entity;
|
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.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
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.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 星纵-用户和供应商注册
|
* @Description: 星纵-用户和供应商注册
|
||||||
@ -85,4 +85,14 @@ public class XzRegistry implements Serializable {
|
|||||||
private java.lang.String projectSn;
|
private java.lang.String projectSn;
|
||||||
@ApiModelProperty(value = "审核进程1未处理2审批通过3拒绝申请")
|
@ApiModelProperty(value = "审核进程1未处理2审批通过3拒绝申请")
|
||||||
private java.lang.Integer approvalProcess;
|
private java.lang.Integer approvalProcess;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
@ApiModelProperty(value = "绑定的项目sn(多个以,分割)")
|
||||||
|
private java.lang.String projectSns;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
@ApiModelProperty(value = "绑定的企业sn(多个以,分割)")
|
||||||
|
private java.lang.String companySns;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,12 +9,15 @@ import com.zhgd.jeecg.common.execption.OpenAlertException;
|
|||||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||||
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
|
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
|
||||||
import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper;
|
import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper;
|
||||||
|
import com.zhgd.xmgl.modules.basicdata.service.ICompanyService;
|
||||||
|
import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService;
|
||||||
import com.zhgd.xmgl.modules.xz.entity.XzRegistry;
|
import com.zhgd.xmgl.modules.xz.entity.XzRegistry;
|
||||||
import com.zhgd.xmgl.modules.xz.mapper.XzRegistryMapper;
|
import com.zhgd.xmgl.modules.xz.mapper.XzRegistryMapper;
|
||||||
import com.zhgd.xmgl.modules.xz.service.IXzRegistryService;
|
import com.zhgd.xmgl.modules.xz.service.IXzRegistryService;
|
||||||
import com.zhgd.xmgl.util.EmailUtils;
|
import com.zhgd.xmgl.util.EmailUtils;
|
||||||
import com.zhgd.xmgl.util.PageUtil;
|
import com.zhgd.xmgl.util.PageUtil;
|
||||||
import com.zhgd.xmgl.util.RefUtil;
|
import com.zhgd.xmgl.util.RefUtil;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@ -37,6 +40,10 @@ public class XzRegistryServiceImpl extends ServiceImpl<XzRegistryMapper, XzRegis
|
|||||||
@Autowired
|
@Autowired
|
||||||
SystemUserMapper systemUserMapper;
|
SystemUserMapper systemUserMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
ISystemUserService systemUserService;
|
||||||
|
@Autowired
|
||||||
|
ICompanyService companyService;
|
||||||
|
@Autowired
|
||||||
EmailUtils emailUtils;
|
EmailUtils emailUtils;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -66,16 +73,24 @@ public class XzRegistryServiceImpl extends ServiceImpl<XzRegistryMapper, XzRegis
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void add(XzRegistry xzRegistry) {
|
public void add(XzRegistry xz) {
|
||||||
SystemUser systemUser = systemUserMapper.selectOne(new LambdaQueryWrapper<SystemUser>()
|
SystemUser systemUser = systemUserMapper.selectOne(new LambdaQueryWrapper<SystemUser>()
|
||||||
.eq(SystemUser::getAccount, xzRegistry.getAccount()));
|
.eq(SystemUser::getAccount, xz.getAccount()));
|
||||||
if (systemUser != null) {
|
if (systemUser != null) {
|
||||||
throw new OpenAlertException("账号已存在");
|
throw new OpenAlertException("账号已存在");
|
||||||
}
|
}
|
||||||
//to do 不能重复申请
|
if (Objects.equals(xz.getAccountType(), 2)) {
|
||||||
|
//供应商不用审批
|
||||||
xzRegistry.setId(null);
|
SystemUser su = new SystemUser();
|
||||||
baseMapper.insert(xzRegistry);
|
su.setAccount(xz.getAccount());
|
||||||
|
su.setPassword(xz.getPw());
|
||||||
|
su.setRealName(xz.getAccount());
|
||||||
|
su.setAccountType(11);
|
||||||
|
systemUserService.saveSystemUser(su);
|
||||||
|
} else if (Objects.equals(xz.getAccountType(), 1)) {
|
||||||
|
xz.setId(null);
|
||||||
|
baseMapper.insert(xz);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -94,20 +109,37 @@ public class XzRegistryServiceImpl extends ServiceImpl<XzRegistryMapper, XzRegis
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void approval(XzRegistry r) {
|
public void approval(XzRegistry r) {
|
||||||
XzRegistry xzRegistry = baseMapper.selectById(r.getId());
|
XzRegistry xz = baseMapper.selectById(r.getId());
|
||||||
if (xzRegistry == null) {
|
if (xz == null) {
|
||||||
throw new OpenAlertException("未找到对应实体");
|
throw new OpenAlertException("未找到对应实体");
|
||||||
}
|
}
|
||||||
xzRegistry.setApprovalProcess(r.getApprovalProcess());
|
xz.setApprovalProcess(r.getApprovalProcess());
|
||||||
String email = xzRegistry.getEmail();
|
String email = xz.getEmail();
|
||||||
Integer approvalProcess = xzRegistry.getApprovalProcess();
|
Integer approvalProcess = xz.getApprovalProcess();
|
||||||
//2审批通过3拒绝申请
|
//2审批通过3拒绝申请
|
||||||
if (Objects.equals(approvalProcess, 2)) {
|
if (Objects.equals(approvalProcess, 2)) {
|
||||||
emailUtils.sendSimpleMail(email, xzRegistry.getAccount() + "账号审批通过", "您在平台申请的账号已经审核通过,账号:" + xzRegistry.getAccount() + "密码:" + xzRegistry.getPw());
|
String projectSns = r.getProjectSns();
|
||||||
|
String companySns = r.getCompanySns();
|
||||||
|
if (StringUtils.isBlank(projectSns) && StringUtils.isBlank(companySns)) {
|
||||||
|
throw new OpenAlertException("审核通过的projectSns和companySns不能同时为空");
|
||||||
|
}
|
||||||
|
SystemUser systemUser = new SystemUser();
|
||||||
|
systemUser.setAccount(xz.getAccount());
|
||||||
|
systemUser.setPassword(xz.getPw());
|
||||||
|
systemUser.setRealName(xz.getAccount());
|
||||||
|
systemUser.setAccountType(10);
|
||||||
|
Long userId = systemUserService.saveSystemUser(systemUser);
|
||||||
|
//处理权限
|
||||||
|
HashMap<String, Object> map = new HashMap<>();
|
||||||
|
map.put("userId", userId);
|
||||||
|
map.put("projectSns", projectSns);
|
||||||
|
map.put("companySns", companySns);
|
||||||
|
companyService.updateTenantOrg(map);
|
||||||
|
emailUtils.sendSimpleMail(email, xz.getAccount() + "账号审批通过", "您在平台申请的账号已经审核通过,账号:" + xz.getAccount() + "密码:" + xz.getPw());
|
||||||
} else if (Objects.equals(approvalProcess, 3)) {
|
} else if (Objects.equals(approvalProcess, 3)) {
|
||||||
emailUtils.sendSimpleMail(email, xzRegistry.getAccount() + "账号拒绝申请", "您在平台申请的账号拒绝申请,账号:" + xzRegistry.getAccount());
|
emailUtils.sendSimpleMail(email, xz.getAccount() + "账号拒绝申请", "您在平台申请的账号拒绝申请,账号:" + xz.getAccount());
|
||||||
}
|
}
|
||||||
baseMapper.updateById(xzRegistry);
|
baseMapper.updateById(xz);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -337,6 +337,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
|
|||||||
.antMatchers("/xmgl/mechanicalEquipmentPositionAlarm/add").permitAll()
|
.antMatchers("/xmgl/mechanicalEquipmentPositionAlarm/add").permitAll()
|
||||||
.antMatchers("/xmgl/mechanicalEquipmentPositionData/jxzhgAddData").permitAll()
|
.antMatchers("/xmgl/mechanicalEquipmentPositionData/jxzhgAddData").permitAll()
|
||||||
.antMatchers("/xmgl/xzRegistry/add").permitAll()
|
.antMatchers("/xmgl/xzRegistry/add").permitAll()
|
||||||
|
.antMatchers("/xmgl/safetyHatData/updateStatus").permitAll()
|
||||||
.antMatchers(HttpMethod.OPTIONS, "/**").anonymous()
|
.antMatchers(HttpMethod.OPTIONS, "/**").anonymous()
|
||||||
.anyRequest().authenticated() // 剩下所有的验证都需要验证.
|
.anyRequest().authenticated() // 剩下所有的验证都需要验证.
|
||||||
.and()
|
.and()
|
||||||
|
|||||||
@ -3,7 +3,6 @@ package com.zhgd.xmgl.task;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.entity.SystemUser;
|
||||||
import com.zhgd.xmgl.modules.basicdata.mapper.SystemLogoConfigMapper;
|
import com.zhgd.xmgl.modules.basicdata.mapper.SystemLogoConfigMapper;
|
||||||
import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper;
|
import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper;
|
||||||
@ -28,6 +27,7 @@ import org.springframework.stereotype.Component;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -160,24 +160,38 @@ public class WorkerTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 劳务人员,截止日期到期的话,就自动填充原因,就是证件到期到黑名单中
|
* 劳务人员,截止日期到期的话(包括人员的合同信息、资格证书、保险信息),就自动填充原因,就是证件到期到黑名单中
|
||||||
*/
|
*/
|
||||||
@SchedulerLock(name = "addWorkerBlacklist", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
|
@SchedulerLock(name = "addWorkerBlacklist", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
|
||||||
@Scheduled(cron = "0 0 1 * * ?")
|
@Scheduled(cron = "0 0 1 * * ?")
|
||||||
@RequestMapping("/addWorkerBlacklist")
|
@RequestMapping("/addWorkerBlacklist")
|
||||||
public void addWorkerBlacklist() {
|
public void addWorkerBlacklist() {
|
||||||
List<WorkerInfo> list = workerCertificateMapper.selectExpiredNotInBlackWorkerList();
|
log.info("任务开始,劳务人员,截止日期到期的话(包括人员的合同信息、资格证书、保险信息),到黑名单");
|
||||||
|
//证书过期
|
||||||
|
List<WorkerInfo> list = workerCertificateMapper.selectExpiredCertificateNotInBlackWorkerList();
|
||||||
|
addWorkerBlacklist(list, "证件已到期", 1);
|
||||||
|
|
||||||
|
//合同过期
|
||||||
|
List<WorkerInfo> list1 = workerCertificateMapper.selectExpiredContractNotInBlackWorkerList();
|
||||||
|
addWorkerBlacklist(list1, "合同已到期", 2);
|
||||||
|
|
||||||
|
//保险过期
|
||||||
|
List<WorkerInfo> list2 = workerCertificateMapper.selectExpiredInsuranceNotInBlackWorkerList();
|
||||||
|
addWorkerBlacklist(list2, "保险已到期", 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addWorkerBlacklist(List<WorkerInfo> list, String addReason, int type) {
|
||||||
for (WorkerInfo workerInfo : list) {
|
for (WorkerInfo workerInfo : list) {
|
||||||
WorkerBlacklist black = new WorkerBlacklist();
|
WorkerBlacklist black = new WorkerBlacklist();
|
||||||
black.setProjectSn(workerInfo.getProjectSn());
|
black.setProjectSn(workerInfo.getProjectSn());
|
||||||
black.setWorkerId(workerInfo.getId());
|
black.setWorkerId(workerInfo.getId());
|
||||||
black.setWorkerName(workerInfo.getWorkerName());
|
black.setWorkerName(workerInfo.getWorkerName());
|
||||||
black.setIdCard(workerInfo.getIdCard());
|
black.setIdCard(workerInfo.getIdCard());
|
||||||
black.setAddReason("证件已到期");
|
black.setAddReason(addReason);
|
||||||
black.setReason("证件已到期");
|
black.setReason(addReason);
|
||||||
black.setAddTime(DateUtil.now());
|
black.setAddTime(DateUtil.now());
|
||||||
black.setCreateTime(new Date());
|
black.setCreateTime(new Date());
|
||||||
black.setType(1);
|
black.setType(type);
|
||||||
workerBlacklistMapper.insert(black);
|
workerBlacklistMapper.insert(black);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -190,7 +204,32 @@ public class WorkerTask {
|
|||||||
@Scheduled(cron = "0 0 1 * * ?")
|
@Scheduled(cron = "0 0 1 * * ?")
|
||||||
@RequestMapping("/alarmWorkerBlack")
|
@RequestMapping("/alarmWorkerBlack")
|
||||||
public void alarmWorkerBlack() {
|
public void alarmWorkerBlack() {
|
||||||
List<WorkerInfo> list = workerCertificateMapper.alarmWorkerBlack();
|
log.info("任务开始,对人员的合同信息、资格证书、保险信息到期进行预警,预警后发送消息提示项目管理员账号");
|
||||||
|
//资格证书预警
|
||||||
|
List<WorkerInfo> list1 = workerCertificateMapper.getAlarmWorkerCertificateWithHeadquarter();
|
||||||
|
List<WorkerInfo> list2 = workerCertificateMapper.getAlarmWorkerCertificateNotHeadquarter();
|
||||||
|
addNotice(CollUtil.addAll(list1, list2), "人员的资质证书即将到期", null, "20");
|
||||||
|
|
||||||
|
//合同信息预警
|
||||||
|
List<WorkerInfo> list3 = workerCertificateMapper.getAlarmWorkerContractWithHeadquarter();
|
||||||
|
List<WorkerInfo> list4 = workerCertificateMapper.getAlarmWorkerContractNotHeadquarter();
|
||||||
|
addNotice(CollUtil.addAll(list3, list4), "人员的合同信息即将到期", "合同信息", "21");
|
||||||
|
|
||||||
|
//保险信息预警
|
||||||
|
List<WorkerInfo> list5 = workerCertificateMapper.getAlarmWorkerInsuranceWithHeadquarter();
|
||||||
|
List<WorkerInfo> list6 = workerCertificateMapper.getAlarmWorkerInsuranceNotHeadquarter();
|
||||||
|
addNotice(CollUtil.addAll(list5, list6), "人员的保险信息即将到期", "保险信息", "22");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加通知
|
||||||
|
*
|
||||||
|
* @param list
|
||||||
|
* @param title 标题
|
||||||
|
* @param book 具体的某项
|
||||||
|
* @param type
|
||||||
|
*/
|
||||||
|
private void addNotice(Collection<WorkerInfo> list, String title, String book, String type) {
|
||||||
Map<String, List<WorkerInfo>> projectMap = list.stream().collect(Collectors.groupingBy(WorkerInfo::getProjectSn));
|
Map<String, List<WorkerInfo>> projectMap = list.stream().collect(Collectors.groupingBy(WorkerInfo::getProjectSn));
|
||||||
if (CollUtil.isNotEmpty(projectMap)) {
|
if (CollUtil.isNotEmpty(projectMap)) {
|
||||||
for (Map.Entry<String, List<WorkerInfo>> entry : projectMap.entrySet()) {
|
for (Map.Entry<String, List<WorkerInfo>> entry : projectMap.entrySet()) {
|
||||||
@ -201,15 +240,19 @@ public class WorkerTask {
|
|||||||
for (WorkerInfo workerInfo : workerInfoList) {
|
for (WorkerInfo workerInfo : workerInfoList) {
|
||||||
if (CollUtil.isNotEmpty(systemUserList)) {
|
if (CollUtil.isNotEmpty(systemUserList)) {
|
||||||
for (SystemUser systemUser : systemUserList) {
|
for (SystemUser systemUser : systemUserList) {
|
||||||
noticeService.addUserNotice(systemUser.getUserId(), workerInfo.getWorkerName() + "的" + workerInfo.getCertificateTypeName() + "即将到期,请尽快更新!", "人员的资质证书即将到期", "20");
|
String name = "";
|
||||||
|
if (StringUtils.isNotBlank(book)) {
|
||||||
|
name = book;
|
||||||
|
} else {
|
||||||
|
name = workerInfo.getCertificateTypeName();
|
||||||
|
}
|
||||||
|
noticeService.addUserNotice(systemUser.getUserId(), workerInfo.getWorkerName() + "的" + name + "即将到期,请尽快更新!", title, type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.zhgd.xmgl.util;
|
package com.zhgd.xmgl.util;
|
||||||
|
|
||||||
import com.zhgd.xmgl.base.EmailService;
|
import com.zhgd.xmgl.base.EmailService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -23,6 +24,7 @@ import java.io.File;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@Slf4j
|
||||||
public class EmailUtils implements EmailService {
|
public class EmailUtils implements EmailService {
|
||||||
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||||
|
|
||||||
@ -43,6 +45,7 @@ public class EmailUtils implements EmailService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void sendSimpleMail(String to, String subject, String content) {
|
public void sendSimpleMail(String to, String subject, String content) {
|
||||||
|
log.info("发送邮件,收件人:{},主题:{},内容:{}", to, subject, content);
|
||||||
//创建SimpleMailMessage对象
|
//创建SimpleMailMessage对象
|
||||||
SimpleMailMessage message = new SimpleMailMessage();
|
SimpleMailMessage message = new SimpleMailMessage();
|
||||||
//邮件发送人
|
//邮件发送人
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user