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   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

temp_index = employeeIds.indexOf("," + dutyEmpIdList.get(i) + ",");

if(temp_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为当前值班的员工

}

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

mysql班次和排班怎么设计表_java 员工轮询值班排班 开发设计(mysql+redis)相关推荐

  1. java 员工轮询值班排班 开发设计(mysql+redis)

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

  2. Lua mysql insert 并发数_高并发 Nginx+Lua OpenResty系列(6)——Lua开发库Mysql

    Mysql客户端 lua-resty-mysql是为基于cosocket API的ngx_lua提供的Lua Mysql客户端,经过它能够完成Mysql的操做.默认安装OpenResty时已经自带了该 ...

  3. java贪吃蛇设计流程_JAVA版贪食蛇(贪吃蛇)游戏的设计与实现(含录像)

    JAVA版贪食蛇(贪吃蛇)游戏的设计与实现(含录像)(任务书,开题报告,外文翻译,毕业论文12000字,程序代码,MySQL数据库,答辩PPT,答辩视频录像) 摘要 "贪食蛇"游戏 ...

  4. 〖Python 数据库开发实战 - Python与MySQL交互篇⑪〗- 项目实战- 完善新闻管理系统中轮询的交互判断

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  5. 数据库设计技巧系列(二)——设计表和字段

    设计表和字段 1. 检查各种变化 我在设计数据库的时候会考虑到哪些数据字段将来可能会发生变更.比方说,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等).所以,在建立系统存储客户信息时,我倾向 ...

  6. 写好一份软件开发设计文档

    如何写好一份软件开发设计文档 转载: 设计文档 - 也被称作技术规范和实现手册,描述了你如何去解决一个问题,是确保正确完成工作最有用的工具,其目的是迫使你对设计展开缜密的思考,并收集他人的反馈,进而完 ...

  7. 支付系统设计四:轮询扣款设计04-整体设计

    文章目录 前言 一.背景 二.PayCore系统设计 1.应用架构 2.相关表 2.1 Order表 2.2 Detail表 3. 原代扣流程 三.轮询扣款改造 1. 改造后的整体流程概览 2. 改造 ...

  8. 支付系统设计四:轮询扣款设计04-详解

    文章目录 前言 一.相关表改造 1. payCore支付核心 2. payRouter支付路由系统 2.1 增加轮询规则表 2.2 后台配置页面 二.执行逻辑调整 1. payCore支付核心 1.1 ...

  9. C# 定时器轮询 设计思路

    [C#] 定时器设计过程的记录 在Windows 系统上 C# 常用定时器有三种,而最高进度的定时器误差 58ms 则个误差数字无法应用 16ms 级别的定时轮询,但还有另外的高精度定时器,这不是还有 ...

最新文章

  1. Day25 linux shell中的特殊符号与命令
  2. 【洛谷P1381】单词背诵
  3. TCP粘包产生的原因
  4. 《剑指offer》包含min函数的栈
  5. KernelPCA进行非线性数据的映射和分类
  6. 怎么使用socket在云服务上通信步骤(可支持TCP或UDP)
  7. 节目表演的点子_矿泉水桶当架子鼓,幼儿园小朋友出色表演,圈粉无数
  8. 信息学奥赛一本通 2056:【例3.7】最大的数
  9. IE6的重定向页面无法跳转解决
  10. 机器学习—K-means聚类、密度聚类、层次聚类理论与实战
  11. python自动抠图软件_比PS还好用!Python 20行代码批量抠图
  12. flutter混编ios打包生成ipa文件
  13. 网络安全应急响应-流量分析技术
  14. 技术分享| RTC通讯中常用的音频格式
  15. 科普:卡他妈滤波_拔剑-浆糊的传说_新浪博客
  16. 照片太大怎么压缩200k?图片怎么缩小到200k以下?
  17. 互联网和大数据是什么意思_数据化和互联网行业 互联网大数据什么意思
  18. 将来有机会把自己的院子建成这种
  19. 步步为营---- MuleEsb学习(一) 扫盲篇
  20. Springboot毕设项目篮球文化商铺系统的设计与实现t1klm(java+VUE+Mybatis+Maven+Mysql)

热门文章

  1. 机器学习第一篇:开篇
  2. 如何检测 SAP 电商云 Spartacus UI 当前正处于导航状态
  3. 网友提问:关于CX_VSI_SYSTEM_ERROR异常,Fiori病毒扫描参数文件
  4. SAP Spartacus 的页面设计思路
  5. SAP Spartacus OccEndpointsService getUrl方法的实现原理
  6. SAP Spartacus把指定产品添加到购物车的API
  7. 蛙泳如何找准背部发力的感觉
  8. The compiler compliance specified is 11 but a JRE 1.8 is used
  9. SAP ABAP Netweaver服务器的标准登录方式讲解
  10. Fiori Elements - sap.ui.core.util.XMLPreprocessor2 - insert fragment