package com.gk.firework.Scheduls.Task; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.gk.firework.Config.WebSocket.WebSocketServer; import com.gk.firework.Domain.Enterprise; import com.gk.firework.Domain.EnterpriseLicense; import com.gk.firework.Domain.EnterprisePerson; import com.gk.firework.Domain.Enum.EnterpriseSafetySupervision; import com.gk.firework.Domain.Enum.MsgContentType; import com.gk.firework.Domain.Enum.MsgType; import com.gk.firework.Domain.Enum.PersonnelCategory; import com.gk.firework.Domain.UserInfo; import com.gk.firework.Domain.Utils.Message; import com.gk.firework.Domain.Utils.SpringBeanUtil; import com.gk.firework.Domain.Utils.StringUtils; import com.gk.firework.Service.EnterpriseLicenseService; import com.gk.firework.Service.EnterprisePersonService; import com.gk.firework.Service.EnterpriseService; import lombok.SneakyThrows; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import javax.websocket.Session; import java.util.ArrayList; import java.util.Date; @Component("task") @Scope("prototype") public class CheckEnterpriseTask implements Runnable{ final static Logger logger= LoggerFactory.getLogger(CheckEnterpriseTask.class); private UserInfo userInfo; public CheckEnterpriseTask(UserInfo userInfo) { this.userInfo = userInfo; } @SneakyThrows @Override public void run() { String companynumber = userInfo.getCompanynumber(); Long companyid = userInfo.getCompanyid(); //普通企业 if (StringUtils.isNotBlank(companynumber)) { logger.info("正在执行:检查企业信息是否完善"); Enterprise enterprise = SpringBeanUtil.getBean(EnterpriseService.class).selectEnterpriseByNumber(companynumber); Message message = new Message(MsgType.NOTIFICATION,MsgContentType.INFO_UNDONE,Boolean.FALSE); ArrayList msgs = new ArrayList<>(); if (!checkEnterprise(enterprise)) msgs.add("企业相关信息还未完善"); if (!checkEnterpriseLicense(companyid)) msgs.add("许可证信息还未完善"); if (!checkSafetyPerson(companyid)) msgs.add("安全人员信息还未完善"); //长期店、短期店不用特种人员 if (!checkSpecialPerson(companyid) && (enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.PRODUCE) || enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.WHOLESALER)) ) msgs.add("特种人员信息还未完善"); if (msgs.size() > 0){ message.setMessage(msgs.toString()); WebSocketServer.sendMessage(userInfo.getId(), JSONObject.toJSONString(message)); } //检查许可证过期 logger.info("正在执行:检查企业许可证是否过期"); if (enterprise.getValidendtime().before(new Date())) { Message message2 = new Message(MsgType.NOTIFICATION,MsgContentType.LICENSE_EXPIRED,Boolean.FALSE); message2.setMessage("您的许可证已到期,请重新录入许可证期限并上传许可证"); WebSocketServer.sendMessage(userInfo.getId(), JSONObject.toJSONString(message2)); } } //监管部门 if (StringUtils.isBlank(companynumber)) { //查找管辖的所有企业的信息未完善的 logger.info("正在执行:检查企业信息未完善个数"); int undoneEnterprise = SpringBeanUtil.getBean(EnterpriseService.class).countAllUndoneEnterprise(userInfo); if (undoneEnterprise > 0) { Message message = new Message(MsgType.NOTIFICATION, MsgContentType.INFO_UNDONE, Boolean.TRUE); message.setMessage(String.format("共有%d个企业未完善企业相关信息",undoneEnterprise)); WebSocketServer.sendMessage(userInfo.getId(), JSONObject.toJSONString(message)); } logger.info("正在执行:检查所有许可证过期企业"); int expiredEnterprise = SpringBeanUtil.getBean(EnterpriseService.class).countAllEnterpriseExpired(userInfo); if (expiredEnterprise > 0) { Message message = new Message(MsgType.NOTIFICATION, MsgContentType.LICENSE_EXPIRED, Boolean.TRUE); message.setMessage(String.format("共有%d个企业许可证已过期",expiredEnterprise)); WebSocketServer.sendMessage(userInfo.getId(), JSONObject.toJSONString(message)); } } logger.info("结束执行"); } //检查企业信息完整 private boolean checkEnterprise(Enterprise enterprise) { boolean flag = true; //小提示 if (StringUtils.isBlank(enterprise.getOfficeaddress())) { flag = false; } return flag; } //检查许可证 有无 private boolean checkEnterpriseLicense(Long enterpriseid) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EnterpriseLicense::getEnterpriseid, enterpriseid) .eq(EnterpriseLicense::getValidflag, true); int count = SpringBeanUtil.getBean(EnterpriseLicenseService.class).count(queryWrapper); return count != 0; } //检查安全人员 private boolean checkSafetyPerson(Long enterpriseid) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EnterprisePerson::getEnterpriseid, enterpriseid) .eq(EnterprisePerson::getValidflag, true) .eq(EnterprisePerson::getType, PersonnelCategory.SECURITY); int count = SpringBeanUtil.getBean(EnterprisePersonService.class).count(queryWrapper); return count != 0; } //检查特种人员 private boolean checkSpecialPerson(Long enterpriseid) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EnterprisePerson::getEnterpriseid, enterpriseid) .eq(EnterprisePerson::getValidflag, true) .eq(EnterprisePerson::getType, PersonnelCategory.SPECIAL); int count = SpringBeanUtil.getBean(EnterprisePersonService.class).count(queryWrapper); return count != 0; } }