package com.sercurityControl.proteam.dutyTask.service; import com.securityControl.common.core.utils.aes.DateTimeHelper; import com.securityControl.common.core.utils.aes.ListHelper; import com.sercurityControl.proteam.domain.CheckUserVo; import com.sercurityControl.proteam.dutyTask.domain.ClassMettingCheckVo; import com.sercurityControl.proteam.dutyTask.domain.JjPeoson; import com.sercurityControl.proteam.dutyTask.domain.WorkTeamVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Random; /** * 班组定时器 */ @Service @Slf4j public class WorkTeamSchedule { @Autowired private TaskScheduleService service; /** * 站班会自动分配给人员 */ public void classMettingZdFp(){ try{ //专责 List zzUser=new ArrayList<>(); //安全分配用户 List isFPUser=new ArrayList<>(); // 质量分配用户 List isBDZuser=new ArrayList<>(); //已分配要删除的用户 List delUser=new ArrayList<>(); String type=getRoundMath(); //查询督查人员找账号 dcry-001 List users=service.getAllDcUsers(type); if(ListHelper.isNotEmpty(users)){ //数据分为三种 fpUserList(users,isFPUser,delUser,isBDZuser,zzUser); //清空已分配数据 delUser(delUser); } //只有一个会分配建设部的 两个就不会分配了 if(ListHelper.isNotEmpty(zzUser)&& zzUser.size()==1 ){//专责不是 空的 delNotJsbUser(zzUser);//删除非建设部数据 insertZZCheck(zzUser.get(0).getId());//对缺少的进行补 } //查询未分配的站班会//数据划分 List classes=service.getWfpList(null); Integer allNum=service.getAllClassNum(); if(ListHelper.isNotEmpty(classes) && ListHelper.isNotEmpty(isFPUser) ) { // 按照全部数据 每个人是多少 int num = allNum / isFPUser.size(); if (num > 0) { for (CheckUserVo user : isFPUser) {//先按照平准数量分配 Integer fpNum = service.getFpNum(user.getId()); if (num - fpNum > 0) { insertCheck(num - fpNum, user.getId());//对缺少的进行补 } } } for (CheckUserVo user : isFPUser) {//先按照平准数量分配 insertCheck(1, user.getId()); } } List bdzList=service.getBDZlist(null);//查询未分配的变电站工程 Integer allBdzNum=service.getallbdzclassnum(); if(ListHelper.isNotEmpty(bdzList) && ListHelper.isNotEmpty(isBDZuser) ) { // 按照全部数据 每个人是多少 int num = allBdzNum / isBDZuser.size(); if (num > 0) { for (CheckUserVo user : isBDZuser) {//先按照平准数量分配 Integer fpNum = service.getFpNum(user.getId()); if (num - fpNum > 0) { insertBDZCheck(num - fpNum, user.getId());//对缺少的进行补 } } } for (CheckUserVo user : isBDZuser) {//先按照平准数量分配 insertBDZCheck(1, user.getId()); } } //删除多分配的数据 if(ListHelper.isEmpty(isBDZuser)){ service.delQuData(); }else { isBDZuser.forEach(checkUserVo -> { service.delAuData(checkUserVo); }); } }catch (Exception e){ log.error(e.toString(),e); } } private void delNotJsbUser(List zzUser) { for (CheckUserVo user:zzUser) { Integer num= service.delNotJsbUser(user); Integer num2= service.delNsbUser(user);//删除非专责用户 已分配的 建设部数据 System.err.println(num+"----->"+num2); } } /** * 分配用户 * @param users * @param isFPUser * @param delUser */ public void fpUserList(List users, List isFPUser, List delUser, List bdzUser,List zzUser){ for (CheckUserVo user:users) {//先按照平准数量分配 if("0".equals(user.getCommissioner())){//不是专责 并且 不是 质量专员 if("1".equals(user.getQuality())){//质量专员 //对质量专员进行分配 bdzUser.add(user); }else{ if("1".equals(user.getOnDuty())){//在职的 isFPUser.add(user); }else{ delUser.add(user);//不在职的 } } }else{ zzUser.add(user);//专责 } } } /** * 删除已分配的用户 * @param delUser */ public void delUser(List delUser){ try{ if(ListHelper.isNotEmpty(delUser)){ for (CheckUserVo user:delUser) { service.delUser(user);//将已分配的数据进行删除 } } }catch (Exception e){ log.error(e.toString(),e); } } public String getRoundMath(){ try { Random random=new Random(); int result=random.nextInt(4); return result+1+""; }catch (Exception e){ return "2"; } } public void insertCheck(Integer num,String user){ List fpc=service.getWfpList(num);//查询未分配的站班会 if(ListHelper.isNotEmpty(fpc)){ ClassMettingCheckVo check=new ClassMettingCheckVo(); check.setCheckUser(user); check.setIsCheck("0"); check.setIsPj("0"); check.setQualityUser("AU");//安全专员 check.setCheckTime("0"); check.setCreateTime(DateTimeHelper.getNowDate()); service.insertCheck(check,fpc); } } public void insertZZCheck(String userId){ List fpc=service.getJsbList(userId);//查询建设部未分配的数据 if(ListHelper.isNotEmpty(fpc)){ ClassMettingCheckVo check=new ClassMettingCheckVo(); check.setCheckUser(userId); check.setIsCheck("0"); check.setIsPj("0"); check.setQualityUser("AU");//安全专员 check.setCheckTime("0"); check.setCreateTime(DateTimeHelper.getNowDate()); service.insertCheck(check,fpc); } } public void insertBDZCheck(Integer num,String user){ List fpc=service.getBDZlist(num);//查询未分配的变电站 if(ListHelper.isNotEmpty(fpc)){ ClassMettingCheckVo check=new ClassMettingCheckVo(); check.setCheckUser(user); check.setIsCheck("0"); check.setIsPj("0"); check.setQualityUser("QU"); check.setCheckTime("0"); check.setCreateTime(DateTimeHelper.getNowDate()); service.insertCheck(check,fpc); } } /** * 同步班组数据信息 */ public void replaceWorkTeam(){ try{ List classList=service.getToDayClass(); for (WorkTeamVo workTeamVo:classList) {//依据当日站班会提取班组 int num=service.getClassPeopleNum(workTeamVo.getClassId()); workTeamVo.setDayNum(num+""); WorkTeamVo vo=service.getWorkTeamById(workTeamVo); if(vo!=null){ if(vo.getClassId().equals(workTeamVo.getClassId())){//若同步过 workTeamVo.setyDayNum(vo.getyDayNum()); workTeamVo.setyClassId(vo.getyClassId()); }else{//未同步过 workTeamVo.setyDayNum(vo.getDayNum()); workTeamVo.setyClassId(vo.getClassId()); } workTeamVo.setWorkTime(vo.getWorkTime());//入库日期 workTeamVo.setImportTeam(vo.getImportTeam()); workTeamVo.setZhpj(vo.getZhpj()); workTeamVo.setWorkOff(vo.getWorkOff()); }else{//第一次入库 workTeamVo.setyDayNum("0"); workTeamVo.setZhpj("0"); workTeamVo.setWorkTime(DateTimeHelper.getNowDate());//入库日期 workTeamVo.setImportTeam("0"); workTeamVo.setWorkOff("0"); } workTeamVo.setUpdateTime(DateTimeHelper.getNowDate());//更新日期 service.replaceWorkTeam(workTeamVo); } service.updateYWorkTeam();//更新昨日班组状态为未施工 //更新退场班组 // service.getWorkTemWorkOff(); }catch (Exception e){ log.error(e.toString(),e); } } /** * 新进班组数据提取 */ public void getNewTeam() { try{ List typeList=new ArrayList<>(); typeList.add("班长兼指挥"); typeList.add("工作负责人"); List list=service.getJjPerson(typeList); if(ListHelper.isNotEmpty(list)){ service.replaceNewTeam(list); // List list2=service.getTcTeam();//获取投产的本班组 // if(ListHelper.isNotEmpty(list2)){ // service.updateNewTeam(list2); // } } }catch (Exception e){ log.error(e.toString(),e); } } }