JAVA 员工轮询 值班 排班

1.设计一个值班历史纪录表 duty_employee_history(area_id,dept_id) 联合主键,存放已值班过的数据

area_id  int(11) NOT NULL   区域 dep_id  int(11) NOT NULL    部门employee_ids   varchar(2000) NOT NULL  已值班过的 ,号分隔 格式 ,12,22,3,45, 前后要有逗号 防止 45 匹配456 这样的数据

2.值班表 duty

从值班表中拿到当前部门当前区域 正在值班的employee   List<Integer>   dutyEmpIdList   (可以存放到Redis)

3.  从duty_history 中拿出  当前排班部门区域的唯一一条数据DutyEmployeeHistory 、 一个部门区域只有一条数据,可以不担心效率问题

DutyEmployeeHistory dutyEmployeeHistory = dutyEmployeeHistoryDao.selectByPrimaryKey(key);
//如果为null 插入一条新的  第一个值班人员从值班人员list中随便拿一个
if(null == dutyEmployeeHistory){dutyEmployeeHistory = new DutyEmployeeHistory();dutyEmployeeHistory.setOrgAreaId(areaId);dutyEmployeeHistory.setDepId(deptId);dutyEmployeeHistory.setFlowTypeId(flowTypeId);dutyEmployeeHistory.setEmployeeIds(","+dutyEmpIdList.get(0)+",");  //第一个值班人员dutyEmployeeHistoryDao.insertSelective(dutyEmployeeHistory);return dutyEmpIdList.get(0); //返回第一个值班人员
}else {//遍历值班员工,如果在已经值班历史中没有,则将该员工追加到历史 employeeIds 后面//返回追加的该员工  即当前值班的员工String employeeIds = dutyEmployeeHistory.getEmployeeIds();for (Integer empId:dutyEmpIdList) {boolean contains = employeeIds.contains("," + empId + ",");if(!contains){//如果已值班员工中不存在 当前员工,追加后面返回即可employeeIds+=empId+",";dutyEmployeeHistory.setEmployeeIds(employeeIds);dutyEmployeeHistoryDao.updateByPrimaryKeySelective(dutyEmployeeHistory);return empId;}}//该列表员工都已值过班,比较先后顺序  最后面的为最新的值班数据。Integer result = dutyEmpIdList.get(0);int index = employeeIds.indexOf("," + result + ",");int temp_index = 0;//判断  该list中的值班员工在 历史中的顺序,顺序越靠前的优先值班for (int i=0;i<dutyEmpIdList.size();i++) {temp_index = employeeIds.indexOf("," + dutyEmpIdList.get(i) + ",");if(temp_index<index){index = temp_index;result = dutyEmpIdList.get(i);}}//修改 duty_employee_history 表中的值班数据。employeeIds = employeeIds.replaceAll(","+result+",",",");employeeIds+=result+",";dutyEmployeeHistory.setEmployeeIds(employeeIds);dutyEmployeeHistoryDao.updateByPrimaryKeySelective(dutyEmployeeHistory);                   return result;   //该result为当前值班的员工
}

有好方案  还望骚扰   共同进步!!!!

java 员工轮询值班排班 开发设计(mysql+redis)相关推荐

  1. mysql班次和排班怎么设计表_java 员工轮询值班排班 开发设计(mysql+redis)

    JAVA 员工轮询 值班 排班 1.设计一个值班历史纪录表 duty_employee_history(area_id,dept_id) 联合主键,存放已值班过的数据 area_id  int(11) ...

  2. 客服智能排班开发设计

    前言 这段时间一直在做客服智能排班的需求,由于这需求是客服提出的,设计方案有好多不合理的地方,这就花费了大量的时间和人力去讨论和设计开发方案. 最终需求 分出两个体系:早中晚班:夜班 排班:人员按分组 ...

  3. java排班_使用java规则引擎Drools自动排班前言.doc

    使用java规则引擎Drools自动排班前言 使用java规则引擎Drools自动排班前言本文以一个经简化的运输车队自动排班需求为例,详细讲解了如何使用java规则引擎Drools进行商业规则的形式语 ...

  4. JAVA计算机毕业设计医护人员排班系统Mybatis+系统+数据库+调试部署

    JAVA计算机毕业设计医护人员排班系统Mybatis+系统+数据库+调试部署 JAVA计算机毕业设计医护人员排班系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

  5. java计算机毕业设计医护人员排班系统源码+系统+lw+数据库+调试运行

    java计算机毕业设计医护人员排班系统源码+系统+lw+数据库+调试运行 注意:该项目只展示部分功能,如需了解,文末获取源码地址. 临近学期结束,还是毕业设计,你还在做java程序.网络编程.课程设计 ...

  6. Java毕设项目医护人员排班系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目医护人员排班系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Web ...

  7. [附源码]JAVA毕业设计医院医护人员排班系统(系统+LW)

    [附源码]JAVA毕业设计医院医护人员排班系统(系统+LW) 项目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclis ...

  8. java计算机毕业设计医护人员排班系统源码+系统+数据库+lw文档

    java计算机毕业设计医护人员排班系统源码+系统+数据库+lw文档 java计算机毕业设计医护人员排班系统源码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开 ...

  9. 值班c语言程序,c语言编程,实验楼值班排班系统。

    满意答案 syq149933369 推荐于 2017.10.06 c语言编程实验楼值班排班系统代码: #include int n = 0; int rest[7][7]; void swap(int ...

最新文章

  1. 公司GitHub被封号,只因员工在伊朗开电脑,官方:将撤销被美制裁国家限制
  2. hdu2973 YAPTCHA
  3. NSHashTable and NSMapTable
  4. Kibana Guide ( Kibana 向导 )
  5. macos 全局代理 app_「主观向」macOS 好软推荐(使用体验)
  6. ONVIF、RTSP/RTP、FFMPEG的开发实录
  7. 内核对象和句柄的介绍及注意事项
  8. Sensei for Mac(系统优化清理工具)
  9. 拓端tecdat|Python使用神经网络进行简单文本分类
  10. python中文乱码问题大总结
  11. 你还在对着手机干唱?k歌神器挑选法则
  12. 物联网应用领域(全)
  13. Windows下调试工具Windbg入门
  14. 用html和css实现字体发光效果
  15. photoshop ps 替换图片文字
  16. 怎么看mmdetection版本_mmdetection使用指南
  17. AI智能抠图工具--头发丝都可见
  18. python tkinter 窗口颜色--数据和名称
  19. latex论文模板:中文小论文
  20. 正则表达式高级技巧背后的关键概念[SM]

热门文章

  1. 七彩智能组卷软件系统 V4.9.0.0官方版
  2. 基于GMT的GPS速度场绘制
  3. Windows下快速创建指定大小的空文件
  4. 整体大于部分_软装 | 整体大于部分之和的生活哲学
  5. 【锐捷无线】黑白名单配置
  6. 解决win10系统一开机就内存占用过高的问题
  7. 【sop】基于灵敏度分析的有源配电网智能软开关优化配置(Matlab代码实现)
  8. 使用Grunt实现资源自动化同步
  9. Kubernetes 二进制部署 多节点(基于单节点部署,超详细)3
  10. php开发如何一键群发几十个群,快手、头条、抖音群发软件,一键操控几十个账号的工具...