277 lines
9.8 KiB
Plaintext
277 lines
9.8 KiB
Plaintext
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<CheckUserVo> zzUser=new ArrayList<>();
|
|
//安全分配用户
|
|
List<CheckUserVo> isFPUser=new ArrayList<>();
|
|
// 质量分配用户
|
|
List<CheckUserVo> isBDZuser=new ArrayList<>();
|
|
//已分配要删除的用户
|
|
List<CheckUserVo> delUser=new ArrayList<>();
|
|
String type=getRoundMath();
|
|
//查询督查人员找账号 dcry-001
|
|
List<CheckUserVo> 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<String> 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<String> 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<CheckUserVo> 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<CheckUserVo> users, List<CheckUserVo> isFPUser, List<CheckUserVo> delUser, List<CheckUserVo> bdzUser,List<CheckUserVo> 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<CheckUserVo> 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<String> 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<String> 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<String> 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<WorkTeamVo> 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<String> typeList=new ArrayList<>();
|
|
typeList.add("班长兼指挥");
|
|
typeList.add("工作负责人");
|
|
List<JjPeoson> list=service.getJjPerson(typeList);
|
|
if(ListHelper.isNotEmpty(list)){
|
|
service.replaceNewTeam(list);
|
|
// List<JjPeoson> list2=service.getTcTeam();//获取投产的本班组
|
|
// if(ListHelper.isNotEmpty(list2)){
|
|
// service.updateNewTeam(list2);
|
|
// }
|
|
}
|
|
}catch (Exception e){
|
|
log.error(e.toString(),e);
|
|
}
|
|
|
|
}
|
|
|
|
}
|