public static void main(String[] args) {
String array = "";
//班组
String[] dutyArr = {"A组","B组","C组","D组","E组"};
int dutyNum=dutyArr.length;
//日期
int days = getDaysOfMonth(new Date());
//班次
String[] classArr = {"早班","中班","晚班","休息","休息"};
int classNum = classArr.length;
int allClass=0;
for (int i=0; i= dutyNum){
System.out.println(i + 1 + "号排班:"+ dutyArr[(j+a)-dutyNum]);
}
}
}
}
/**
* 获取某个月的天数
* @param date
* @return
*/
public static int getDaysOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
以下亲测好用
- /**
- *
- * @param shiftArray 班次策略集合
- * @param teamArray 班组集合
- * @param betweenDay 间隔天数
- * @param date 排班时间
- * @param scheduleInfoPO
- */
- public void saveRecordInfo(List
shiftArray, List teamArray, Integer betweenDay, List date, ScheduleInfoPO scheduleInfoPO) { - int shiftNum = shiftArray.size();
- int dutyNum = teamArray.size();
- if(dutyNum > shiftNum){
- throw new InterfaceException(ResultEnum.SCHEDULE_ERROR.getCode(),ResultEnum.SCHEDULE_ERROR.getMsg());
- }
- List
recordList = new ArrayList<>(); - int t = -1;
- for (Integer dayCount = 0; dayCount <= betweenDay; dayCount++) {
- t++;
- for (int i = 0; i < dutyNum; i++) {
- int y = getOrder(dayCount, shiftNum, dutyNum, i);
- TeamPO teamPO = teamArray.get(i);
- ScheduleResultPO result = new ScheduleResultPO();
- result.setTeamId(teamPO.getId());
- result.setTeamName(teamPO.getTeamName());
- ShiftConfigPO shift = shiftArray.get(y);
- result.setShiftId(shift.getId());
- result.setShiftName(shift.getShiftName());
- result.setScheduleId(scheduleInfoPO.getId());
- result.setProductId(scheduleInfoPO.getProductId());
- result.setScheduleName(scheduleInfoPO.getScheduleName());
- String startTime = shift.getStartTime();
- String endTime = shift.getEndTime();
- String workData = date.get(t);
- if(StringUtils.isNotBlank(startTime)){
- String workDataTime = workData + " " + endTime;
- result.setWorkDate(DateUtil.parse(workDataTime));
- } else {
- result.setWorkDate(DateUtil.parse(workData));
- }
- Date workDate = result.getWorkDate();
- Calendar cal = Calendar.getInstance();
- cal.setTime(workDate);
- result.setYear(cal.get(Calendar.YEAR));
- result.setMonth(cal.get(Calendar.MONTH)+1);
- result.setDay(cal.get(Calendar.DATE));
- // 1、如果结束时间小于开始时间,则结束时间+1天:为交接班提供两个字段
- result = saveWorkStartOrEndDate(result, startTime, endTime, workData);
- recordList.add(result);
- }
- }
- scheduleResultRepository.saveAll(recordList);
- }
- public static Integer getOrder(Integer dayCount, Integer classNum, Integer teamCount, Integer teamNum) {
- int temp = (classNum / teamCount);
- return (((dayCount / temp) % teamCount + teamNum) % teamCount) * temp + dayCount % temp;
- }