diff --git a/src/main/java/com/zhgd/xmgl/config/SafetyHatWSClient.java b/src/main/java/com/zhgd/xmgl/config/SafetyHatWSClient.java index ec012dac8..d7801bcce 100644 --- a/src/main/java/com/zhgd/xmgl/config/SafetyHatWSClient.java +++ b/src/main/java/com/zhgd/xmgl/config/SafetyHatWSClient.java @@ -1,11 +1,14 @@ package com.zhgd.xmgl.config; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.text.CharSequenceUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.SafetyHatData; 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 javax.websocket.*; +import java.util.ArrayList; import java.util.Date; +import java.util.List; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; @@ -65,12 +70,14 @@ public class SafetyHatWSClient { Boolean status = jo.getBoolean("status"); if (status != null && status) { JSONArray jaData = jo.getJSONArray("data"); + List devsns = new ArrayList<>(); if (jaData.size() != 0) { for (int i = 0; i < jaData.size(); i++) { JSONObject joData = jaData.getJSONObject(i); JSONObject joUserInfo = joData.getJSONObject("user_info"); if (joUserInfo != null) { String deviceId = joUserInfo.getString("device_id"); + devsns.add(deviceId); log.info("SafetyHatWSClient获取实时数据的deviceId:{}", deviceId); SafetyHatDev dev = SpringContextUtils.getBean(SafetyHatDevMapper.class).selectOne(new LambdaQueryWrapper() .eq(SafetyHatDev::getDevSn, deviceId)); @@ -94,10 +101,42 @@ public class SafetyHatWSClient { e.printStackTrace(); } } + dev.setOnline(1); + SpringContextUtils.getBean(ISafetyHatDataService.class).updateStatus(dev); } } } } + //不在data里面的,全部设置离线 + Project project = SpringContextUtils.getBean(ProjectMapper.class).selectOne(new LambdaQueryWrapper().eq(Project::getHelmetUser, id)); + if (project != null) { + List devList = SpringContextUtils.getBean(SafetyHatDevMapper.class).selectList(new LambdaQueryWrapper() + .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().eq(Project::getHelmetUser, id)); + if (project != null) { + List devList = SpringContextUtils.getBean(SafetyHatDevMapper.class).selectList(new LambdaQueryWrapper().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")) { log.info("SafetyHatWSClient接收报警数据"); diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/Notice.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/Notice.java index a3df2a6f5..38681da3f 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/Notice.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/Notice.java @@ -28,10 +28,7 @@ public class Notice implements Serializable { @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "消息通知") private java.lang.Long id; - /** - * 类型,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人员的资质证书即将到期") + @ApiModelProperty(value = "类型,1考勤提醒,2人员报警,3车辆,4混凝土监测,5卸料平台,6配电箱,7扬尘,8视频,9标养室,10安全检查,11质量检查,12塔吊,13升降机,14电表,15水表,16访客,17,防疫人员通知,18访客通知,19巡检点,20人员的资质证书即将到期,21人员的合同信息即将到期,22人员的保险信息即将到期") private java.lang.String type; /** * 消息内容 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 39016e7e2..9d7b65a6e 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 @@ -90,7 +90,7 @@ public class SystemUser implements Serializable { @Excel(name = "企业或项目sn", width = 15) @ApiModelProperty(value = "企业或项目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; @ApiModelProperty(value = "项目子账号绑定的劳务人员") 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 5f260599b..ca2329e18 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 @@ -2,7 +2,6 @@ package com.zhgd.xmgl.modules.basicdata.service; import com.baomidou.mybatisplus.core.metadata.IPage; 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.modules.basicdata.entity.dto.LoginInfoByTokenDto; import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; @@ -29,7 +28,7 @@ public interface ISystemUserService extends IService { List getSystemUserBySn(Map map); - void saveSystemUser(SystemUser systemUser); + Long saveSystemUser(SystemUser systemUser); void editSystemUser(SystemUser systemUser); 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 e9d3fd7c5..44ea82b8b 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 @@ -629,12 +629,12 @@ public class CompanyServiceImpl extends ServiceImpl impl @Override public void updateTenantOrg(HashMap paramMap) { - String userId = MapUtils.getString(paramMap, "userId"); + Long userId = MapUtils.getLong(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); + insertTenantOrg(companySns, 1, userId); + insertTenantOrg(projectSns, 2, userId); } @Override @@ -642,13 +642,13 @@ public class CompanyServiceImpl extends ServiceImpl impl return systemUserMapper.getOrgSnListByUserId(paramMap); } - private void insertTenantOrg(String sns, int type) { + private void insertTenantOrg(String sns, int type, Long userId) { 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.setUserId(userId); to.setSn(sn); to.setType(type); xzSystemUserToCompanyProjectMapper.insert(to); 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 542bd59c5..a735e6dde 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 @@ -623,7 +623,7 @@ public class SystemUserServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(SystemUser::getAccount, systemUser.getAccount()); int count = systemUserMapper.selectCount(queryWrapper); @@ -647,6 +647,7 @@ public class SystemUserServiceImpl extends ServiceImpl() + .eq(FrontierProtectionNoNetDev::getDevSn, deviceid) + .set(FrontierProtectionNoNetDev::getOnLine, 1) + ); + } else if (Objects.equals(dto.getAlarm(), "0") && Objects.equals(dto.getState(), "故障")) { + //故障 + frontierProtectionNoNetDevMapper.update(null, new LambdaUpdateWrapper() + .eq(FrontierProtectionNoNetDev::getDevSn, deviceid) + .set(FrontierProtectionNoNetDev::getOnLine, 0) + ); + } FrontierProtectionNoNetData data = new FrontierProtectionNoNetData(); data.setDevSn(deviceid); data.setMonitorObject(null); diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/controller/SafetyHatDataController.java b/src/main/java/com/zhgd/xmgl/modules/safetyhat/controller/SafetyHatDataController.java index 319419103..51ebd6aa9 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/controller/SafetyHatDataController.java +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/controller/SafetyHatDataController.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.gexin.fastjson.JSON; import com.zhgd.jeecg.common.api.vo.Result; 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 io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -76,6 +77,14 @@ public class SafetyHatDataController { return Result.ok(); } + @ApiOperation(value = "更新智能安全帽在线离线状态", notes = "更新智能安全帽在线离线状态", httpMethod = "POST") + @PostMapping(value = "/updateStatus") + public Result updateStatus(@RequestBody @Validate SafetyHatDev safetyHatDev) { + log.info("更新智能安全帽在线离线状态:{}", JSON.toJSONString(safetyHatDev)); + safetyHatDataService.updateStatus(safetyHatDev); + return Result.ok(); + } + /** * 编辑 * diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/SafetyHatDev.java b/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/SafetyHatDev.java index c6f433643..b9d3671dd 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/SafetyHatDev.java +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/SafetyHatDev.java @@ -74,6 +74,8 @@ public class SafetyHatDev implements Serializable { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "心跳时间") 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 = "人员名称") @TableField(exist = false) private java.lang.String workerName; - @TableField(exist = false) - @ApiModelProperty(value = "在线状态(0.离线 1.在线)") - private java.lang.Integer online; + } diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDevMapper.xml b/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDevMapper.xml index 075253190..f67c7633a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDevMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDevMapper.xml @@ -2,10 +2,7 @@ - select distinct wi.* from worker_info wi 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 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 distinct wi.* + from worker_info wi + join worker_contract wc on wi.id = wc.worker_id + where wc.contract_end_date current_date + AND not exists(SELECT * FROM worker_blacklist wb WHERE wb.worker_id = wi.id and wb.type = 2) + + + + + + + + + + + + + + + diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/UfaceDevServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/UfaceDevServiceImpl.java index eecb37b16..50a7949a4 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/UfaceDevServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/UfaceDevServiceImpl.java @@ -83,7 +83,6 @@ public class UfaceDevServiceImpl extends ServiceImpl i } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ufaceDev.setCreateTime(sdf.format(new Date())); - ufaceDev.setHeartBeatTime(new Date()); ufaceDevMapper.insert(ufaceDev); projectUfaceConfigService.addUfaceDev(ufaceDev); asyncWorker.saveUfaceDev(ufaceDev); 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 index 40631b3ce..470d32f44 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/entity/XzRegistry.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/entity/XzRegistry.java @@ -1,17 +1,17 @@ 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.TableField; 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; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; /** * @Description: 星纵-用户和供应商注册 @@ -85,4 +85,14 @@ public class XzRegistry implements Serializable { private java.lang.String projectSn; @ApiModelProperty(value = "审核进程1未处理2审批通过3拒绝申请") 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; + + } 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 index 45adea756..ba4184c84 100644 --- 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 @@ -9,12 +9,15 @@ 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.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.mapper.XzRegistryMapper; import com.zhgd.xmgl.modules.xz.service.IXzRegistryService; import com.zhgd.xmgl.util.EmailUtils; 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; @@ -37,6 +40,10 @@ public class XzRegistryServiceImpl extends ServiceImpl() - .eq(SystemUser::getAccount, xzRegistry.getAccount())); + .eq(SystemUser::getAccount, xz.getAccount())); if (systemUser != null) { throw new OpenAlertException("账号已存在"); } - //to do 不能重复申请 - - xzRegistry.setId(null); - baseMapper.insert(xzRegistry); + if (Objects.equals(xz.getAccountType(), 2)) { + //供应商不用审批 + SystemUser su = new SystemUser(); + 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 @@ -94,20 +109,37 @@ public class XzRegistryServiceImpl extends ServiceImpl 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)) { - emailUtils.sendSimpleMail(email, xzRegistry.getAccount() + "账号拒绝申请", "您在平台申请的账号拒绝申请,账号:" + xzRegistry.getAccount()); + emailUtils.sendSimpleMail(email, xz.getAccount() + "账号拒绝申请", "您在平台申请的账号拒绝申请,账号:" + xz.getAccount()); } - baseMapper.updateById(xzRegistry); + baseMapper.updateById(xz); } diff --git a/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java b/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java index 55dd564d5..27d0526aa 100644 --- a/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java +++ b/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java @@ -337,6 +337,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers("/xmgl/mechanicalEquipmentPositionAlarm/add").permitAll() .antMatchers("/xmgl/mechanicalEquipmentPositionData/jxzhgAddData").permitAll() .antMatchers("/xmgl/xzRegistry/add").permitAll() + .antMatchers("/xmgl/safetyHatData/updateStatus").permitAll() .antMatchers(HttpMethod.OPTIONS, "/**").anonymous() .anyRequest().authenticated() // 剩下所有的验证都需要验证. .and() diff --git a/src/main/java/com/zhgd/xmgl/task/WorkerTask.java b/src/main/java/com/zhgd/xmgl/task/WorkerTask.java index dddac2b49..77b69ac67 100644 --- a/src/main/java/com/zhgd/xmgl/task/WorkerTask.java +++ b/src/main/java/com/zhgd/xmgl/task/WorkerTask.java @@ -3,7 +3,6 @@ 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; @@ -28,6 +27,7 @@ import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Map; @@ -160,24 +160,38 @@ public class WorkerTask { } /** - * 劳务人员,截止日期到期的话,就自动填充原因,就是证件到期到黑名单中 + * 劳务人员,截止日期到期的话(包括人员的合同信息、资格证书、保险信息),就自动填充原因,就是证件到期到黑名单中 */ @SchedulerLock(name = "addWorkerBlacklist", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5) @Scheduled(cron = "0 0 1 * * ?") @RequestMapping("/addWorkerBlacklist") public void addWorkerBlacklist() { - List list = workerCertificateMapper.selectExpiredNotInBlackWorkerList(); + log.info("任务开始,劳务人员,截止日期到期的话(包括人员的合同信息、资格证书、保险信息),到黑名单"); + //证书过期 + List list = workerCertificateMapper.selectExpiredCertificateNotInBlackWorkerList(); + addWorkerBlacklist(list, "证件已到期", 1); + + //合同过期 + List list1 = workerCertificateMapper.selectExpiredContractNotInBlackWorkerList(); + addWorkerBlacklist(list1, "合同已到期", 2); + + //保险过期 + List list2 = workerCertificateMapper.selectExpiredInsuranceNotInBlackWorkerList(); + addWorkerBlacklist(list2, "保险已到期", 3); + } + + private void addWorkerBlacklist(List list, String addReason, int type) { for (WorkerInfo workerInfo : list) { WorkerBlacklist black = new WorkerBlacklist(); black.setProjectSn(workerInfo.getProjectSn()); black.setWorkerId(workerInfo.getId()); black.setWorkerName(workerInfo.getWorkerName()); black.setIdCard(workerInfo.getIdCard()); - black.setAddReason("证件已到期"); - black.setReason("证件已到期"); + black.setAddReason(addReason); + black.setReason(addReason); black.setAddTime(DateUtil.now()); black.setCreateTime(new Date()); - black.setType(1); + black.setType(type); workerBlacklistMapper.insert(black); } } @@ -190,7 +204,32 @@ public class WorkerTask { @Scheduled(cron = "0 0 1 * * ?") @RequestMapping("/alarmWorkerBlack") public void alarmWorkerBlack() { - List list = workerCertificateMapper.alarmWorkerBlack(); + log.info("任务开始,对人员的合同信息、资格证书、保险信息到期进行预警,预警后发送消息提示项目管理员账号"); + //资格证书预警 + List list1 = workerCertificateMapper.getAlarmWorkerCertificateWithHeadquarter(); + List list2 = workerCertificateMapper.getAlarmWorkerCertificateNotHeadquarter(); + addNotice(CollUtil.addAll(list1, list2), "人员的资质证书即将到期", null, "20"); + + //合同信息预警 + List list3 = workerCertificateMapper.getAlarmWorkerContractWithHeadquarter(); + List list4 = workerCertificateMapper.getAlarmWorkerContractNotHeadquarter(); + addNotice(CollUtil.addAll(list3, list4), "人员的合同信息即将到期", "合同信息", "21"); + + //保险信息预警 + List list5 = workerCertificateMapper.getAlarmWorkerInsuranceWithHeadquarter(); + List list6 = workerCertificateMapper.getAlarmWorkerInsuranceNotHeadquarter(); + addNotice(CollUtil.addAll(list5, list6), "人员的保险信息即将到期", "保险信息", "22"); + } + + /** + * 添加通知 + * + * @param list + * @param title 标题 + * @param book 具体的某项 + * @param type + */ + private void addNotice(Collection list, String title, String book, String type) { Map> projectMap = list.stream().collect(Collectors.groupingBy(WorkerInfo::getProjectSn)); if (CollUtil.isNotEmpty(projectMap)) { for (Map.Entry> entry : projectMap.entrySet()) { @@ -201,15 +240,19 @@ public class WorkerTask { for (WorkerInfo workerInfo : workerInfoList) { if (CollUtil.isNotEmpty(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); } } } } } } - - } } diff --git a/src/main/java/com/zhgd/xmgl/util/EmailUtils.java b/src/main/java/com/zhgd/xmgl/util/EmailUtils.java index d97a80ea5..cf2a4dedd 100644 --- a/src/main/java/com/zhgd/xmgl/util/EmailUtils.java +++ b/src/main/java/com/zhgd/xmgl/util/EmailUtils.java @@ -1,6 +1,7 @@ package com.zhgd.xmgl.util; import com.zhgd.xmgl.base.EmailService; +import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -23,6 +24,7 @@ import java.io.File; */ @Service +@Slf4j public class EmailUtils implements EmailService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -43,6 +45,7 @@ public class EmailUtils implements EmailService { */ @Override public void sendSimpleMail(String to, String subject, String content) { + log.info("发送邮件,收件人:{},主题:{},内容:{}", to, subject, content); //创建SimpleMailMessage对象 SimpleMailMessage message = new SimpleMailMessage(); //邮件发送人