package com.zhgd.xmgl.task; import com.zhgd.xmgl.modules.basicdata.service.INoticeService; import com.zhgd.xmgl.modules.project.entity.ProjectExternalSystemService; import com.zhgd.xmgl.modules.project.mapper.ProjectExternalSystemServiceMapper; import com.zhgd.xmgl.modules.project.service.IProjectUfaceConfigService; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper; import com.zhgd.xmgl.util.ElecardUtil; import lombok.extern.log4j.Log4j; import net.javacrumbs.shedlock.core.SchedulerLock; 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 java.util.List; /** * @program: wisdomSite * @description: 劳务人员定时任务 * @author: Mr.Peng * @create: 2021-09-10 17:31 **/ @Log4j @Component public class WorkerTask { @Autowired private ProjectExternalSystemServiceMapper projectExternalSystemServiceMapper; @Autowired private WorkerInfoMapper workerInfoMapper; @Autowired private INoticeService noticeService; @Autowired private IProjectUfaceConfigService projectUfaceConfigService; /** * 定时修改用户码状态 */ @SchedulerLock(name = "updateWorkerCode", lockAtMostFor = 1000*60*60, lockAtLeastFor = 1000*60*5) //@Scheduled(cron = "0 0 4 * * ?") @Scheduled(cron = "0 0 1 * * ?") public void updateWorkerCode(){ log.info("------------------------------健康码同步开始-----------------------------------------"); try{ List list= projectExternalSystemServiceMapper.getChangtongCodeSystemList(); if(list!=null&&list.size()>0){ for (ProjectExternalSystemService projectExternalSystemService:list){ getWorkerCodeState(projectExternalSystemService); } } }catch (Exception e){ e.printStackTrace(); } log.info("------------------------------健康码同步结束-----------------------------------------"); } public void getWorkerCodeState(ProjectExternalSystemService projectExternalSystemService){ try{ List list= workerInfoMapper.selectAllWorkerInfoList(projectExternalSystemService.getProjectSn()); if(list!=null&&list.size()>0){ String token= ElecardUtil.getToken(projectExternalSystemService.getSystemUrl(),projectExternalSystemService.getAppId(),projectExternalSystemService.getAppSecert(), projectExternalSystemService.getPublicKey(),projectExternalSystemService.getPrivateKey()); if(StringUtils.isNotEmpty(token)){ int redNum=0; int orangeNum=0; StringBuilder redWorkerName=new StringBuilder(); StringBuilder orangeWorkerName=new StringBuilder(); for (WorkerInfo workerInfo:list){ log.info("---------------"+workerInfo.getWorkerName()); String enterStatus=ElecardUtil.getCardInfo(projectExternalSystemService.getSystemUrl(),projectExternalSystemService.getAppId(),projectExternalSystemService.getAppSecert(), projectExternalSystemService.getPublicKey(),projectExternalSystemService.getPrivateKey(),token,workerInfo.getIdCard()); //0 :绿色, 1:黄色 ,2:红色 //红黄码需设备取消授权不允许通行 if(StringUtils.isNotEmpty(enterStatus)){ if("2".equals(enterStatus)){ redNum++; if(redWorkerName.length()>0){ redWorkerName.append("、"); } redWorkerName.append(workerInfo.getWorkerName()); //码状态,0无码,1红,2黄,3绿 workerInfo.setCodeState(1); workerInfo.setUfaceDevId("0"); projectUfaceConfigService.deleteWorkerInfo(workerInfo); }else if("1".equals(enterStatus)){ orangeNum++; if(orangeWorkerName.length()>0){ orangeWorkerName.append("、"); } orangeWorkerName.append(workerInfo.getWorkerName()); workerInfo.setCodeState(2); workerInfo.setUfaceDevId("0"); projectUfaceConfigService.deleteWorkerInfo(workerInfo); }else{ workerInfo.setCodeState(3); } workerInfoMapper.updateById(workerInfo); } } if(redNum>0||orangeNum>0){ //String title="今日昌通码核验黄码"+orangeNum+"人,红码"+redNum+"人"; StringBuilder title=new StringBuilder(); title.append("今日昌通码核验黄码").append(orangeNum).append("人,"); if(orangeWorkerName.length()>0){ title.append("分别为:").append(orangeWorkerName.toString()).append(","); } title.append("红码").append(redNum).append("人"); if(redWorkerName.length()>0){ title.append("分别为:").append(redWorkerName.toString()).append("。"); } StringBuilder title2=new StringBuilder(); if(orangeWorkerName.length()>0){ title2.append("黄码人员:").append(orangeWorkerName.toString()).append(","); } if(redWorkerName.length()>0){ title2.append("红码人员:").append(redWorkerName.toString()).append("。"); } title2.append("已销权"); noticeService.sendProjectNoicte(projectExternalSystemService.getProjectSn(),"红黄码核验",title.toString(),"17"); noticeService.sendProjectNoicte(projectExternalSystemService.getProjectSn(),"红黄码销权",title2.toString(),"17"); } } } }catch (Exception e){ e.printStackTrace(); } } /*private void sendNoicte(String projectSn,String title,String msg,String type){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List systemUserList=systemUserMapper.selectProjectSystemUserList(projectSn); //向项目管理员和子账号推送通知 if(systemUserList.size()>0){ for (SystemUser systemUser:systemUserList){ addNotice(systemUser.getUserId(),msg,title,sdf.format(new Date()),type); } } } private void addNotice(Integer accountId,String msg,String title,String time,String type){ Notice notice = new Notice(); notice.setAccountId(accountId); notice.setMsg(msg); notice.setTitle(title); notice.setSendTime(time); notice.setType(type); noticeService.addNotice(notice,true); }*/ }