getWorkDayAi接口
Some checks are pending
Java CI with Maven / build (11) (push) Waiting to run
Java CI with Maven / build (17) (push) Waiting to run
Java CI with Maven / build (8) (push) Waiting to run
yudao-ui-admin CI / build (14.x) (push) Waiting to run
yudao-ui-admin CI / build (16.x) (push) Waiting to run
Some checks are pending
Java CI with Maven / build (11) (push) Waiting to run
Java CI with Maven / build (17) (push) Waiting to run
Java CI with Maven / build (8) (push) Waiting to run
yudao-ui-admin CI / build (14.x) (push) Waiting to run
yudao-ui-admin CI / build (16.x) (push) Waiting to run
This commit is contained in:
parent
e349fb0deb
commit
f401cf5a19
@ -45,6 +45,12 @@ public class CalendarController {
|
||||
return success(calendarService.getWorkDay(WorkDayVO));
|
||||
}
|
||||
|
||||
@GetMapping("/getWorkDayAi")
|
||||
@Operation(summary = "获取时间段内工作天数")
|
||||
public CommonResult<BigDecimal> getWorkDayAI(@Valid CalendarAiVO WorkDayAiVO) {
|
||||
return success(calendarService.getWorkDayAi(WorkDayAiVO));
|
||||
}
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建工作日历数据")
|
||||
@PreAuthorize("@ss.hasPermission('home:calendar:create')")
|
||||
|
@ -0,0 +1,27 @@
|
||||
package cn.iocoder.yudao.module.home.controller.admin.calendar.vo;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
|
||||
@Schema(description = "管理后台 - 工作日历数据分页 Ai VO")
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
public class CalendarAiVO {
|
||||
// startTime: "2024-12-09 09:00:00",
|
||||
// endTime: "2024-12-09 18:00:00",
|
||||
|
||||
@Schema(description = "开始时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "开始时间不能为空")
|
||||
private String startTime;
|
||||
|
||||
|
||||
@Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "结束时间不能为空")
|
||||
private String endTime;
|
||||
|
||||
}
|
@ -60,4 +60,6 @@ public interface CalendarService {
|
||||
* @return
|
||||
*/
|
||||
BigDecimal getWorkDay(CalendarPageReqVO workDayVO);
|
||||
|
||||
BigDecimal getWorkDayAi(CalendarAiVO workDayAiVO);
|
||||
}
|
||||
|
@ -161,6 +161,8 @@ public class CalendarServiceImpl implements CalendarService {
|
||||
// 获取开始结束时间
|
||||
Integer sHour = workDayVO.getSHour();
|
||||
Integer eHour = workDayVO.getEHour();
|
||||
System.out.println("sHour: " + sHour);
|
||||
System.out.println("eHour: " + eHour);
|
||||
// 判断开始结束时间
|
||||
if (sHour == null || eHour == null) {
|
||||
return null;
|
||||
@ -168,6 +170,8 @@ public class CalendarServiceImpl implements CalendarService {
|
||||
// 获取开始日期结束日期传递的isWorkDay参数
|
||||
String sDay = workDayVO.getDate()[0];
|
||||
String eDay = workDayVO.getDate()[1];
|
||||
System.out.println("sDay: " + sDay);
|
||||
System.out.println("eDay: " + eDay);
|
||||
Integer isWork = workDayVO.getIsWorkday();
|
||||
// 设置开始时间vo判断开始天数是否为工作日
|
||||
CalendarPageReqVO sWorkDayVO = new CalendarPageReqVO();
|
||||
@ -177,6 +181,7 @@ public class CalendarServiceImpl implements CalendarService {
|
||||
CalendarPageReqVO eWorkDayVO = new CalendarPageReqVO();
|
||||
eWorkDayVO.setDate(new String[]{eDay, eDay});
|
||||
eWorkDayVO.setIsWorkday(isWork);
|
||||
System.out.println("workDayVO: " + workDayVO);
|
||||
// 获取开始结束工作日天数,获取时间段内工作日天数
|
||||
Long sTotal = calendarMapper.selectPage(sWorkDayVO).getTotal();
|
||||
Long eTotal = calendarMapper.selectPage(eWorkDayVO).getTotal();
|
||||
@ -235,4 +240,105 @@ public class CalendarServiceImpl implements CalendarService {
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public BigDecimal getWorkDayAi(CalendarAiVO workDayAiVO) {
|
||||
// 储存判断后扣除天数
|
||||
float day = 0.0f;
|
||||
int sWorkHour = 0;
|
||||
int eWorkHour = 0;
|
||||
// 储存返回天数
|
||||
BigDecimal result = null;
|
||||
|
||||
DateTimeFormatter formatterYMDHMS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
DateTimeFormatter formatterYMD = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
// 使用 formatter 解析字符串为 LocalDateTime
|
||||
LocalDateTime sDateTime = LocalDateTime.parse(workDayAiVO.getStartTime(), formatterYMDHMS);
|
||||
LocalDateTime eDateTime = LocalDateTime.parse(workDayAiVO.getEndTime(), formatterYMDHMS);
|
||||
|
||||
System.out.println("sDateTime: " + sDateTime);
|
||||
System.out.println("eDateTime: " + eDateTime);
|
||||
// 获取开始结束时间
|
||||
Integer sHour = sDateTime.getHour();
|
||||
Integer eHour = eDateTime.getHour();
|
||||
System.out.println("sHour: " + sHour);
|
||||
System.out.println("eHour: " + eHour);
|
||||
// 获取开始日期结束日期传递的isWorkDay参数
|
||||
String sDay = sDateTime.format(formatterYMD);
|
||||
String eDay = eDateTime.format(formatterYMD);
|
||||
System.out.println("sDay: " + sDay);
|
||||
System.out.println("eDay: " + eDay);
|
||||
// 设置开始时间vo判断开始天数是否为工作日
|
||||
CalendarPageReqVO sWorkDayVO = new CalendarPageReqVO();
|
||||
sWorkDayVO.setDate(new String[]{sDay, sDay});
|
||||
sWorkDayVO.setIsWorkday(1);
|
||||
// 设置结束时间vo判断结束天数是否为工作日
|
||||
CalendarPageReqVO eWorkDayVO = new CalendarPageReqVO();
|
||||
eWorkDayVO.setDate(new String[]{eDay, eDay});
|
||||
eWorkDayVO.setIsWorkday(1);
|
||||
// 时间段vo
|
||||
CalendarPageReqVO workDayVO = new CalendarPageReqVO();
|
||||
workDayVO.setDate(new String[]{sDay, eDay});
|
||||
workDayVO.setIsWorkday(1);
|
||||
workDayVO.setPageSize(1);
|
||||
System.out.println("workDayVO: " + workDayVO);
|
||||
// 获取开始结束工作日天数,获取时间段内工作日天数
|
||||
Long sTotal = calendarMapper.selectPage(sWorkDayVO).getTotal();
|
||||
Long eTotal = calendarMapper.selectPage(eWorkDayVO).getTotal();
|
||||
Long total = calendarMapper.selectPage(workDayVO).getTotal();
|
||||
// 判断总过天数不为0时才判断否则直接返回
|
||||
if (total >= 1) {
|
||||
// 判断开始天为工作日时才判断
|
||||
if (sTotal > 0) {
|
||||
// 开始日期的时间判断
|
||||
if (sHour < 8 ) {
|
||||
day += 0f;
|
||||
} else if (sHour <= 12) {
|
||||
sWorkHour = 16 - sHour;
|
||||
} else if (sHour < 17 ) {
|
||||
sWorkHour = 17 - sHour;
|
||||
} else {
|
||||
day += 1f;
|
||||
}
|
||||
}
|
||||
// 判断结束天为工作日时才判断
|
||||
if (eTotal > 0) {
|
||||
// 结束日期的时间判断
|
||||
if (eHour <= 8 ) {
|
||||
day += 1f;
|
||||
} else if (eHour <= 12) {
|
||||
eWorkHour = eHour - 8;
|
||||
}else if (eHour <= 17 ) {
|
||||
eWorkHour = eHour - 9;
|
||||
} else {
|
||||
day += 0f;
|
||||
}
|
||||
}
|
||||
// 计算开始时间
|
||||
if (sWorkHour == 1) {
|
||||
day += 1F;
|
||||
} else if (sWorkHour >= 2&&sWorkHour <= 4) {
|
||||
day += 0.5F;
|
||||
} else if (sWorkHour > 4) {
|
||||
day += 0F;
|
||||
}
|
||||
// 计算结束时间
|
||||
if (eWorkHour != 0 && eWorkHour <= 5) {
|
||||
day += 0.5F;
|
||||
} else if (eWorkHour > 5) {
|
||||
day += 0F;
|
||||
}
|
||||
// 小时数相等时
|
||||
if (sHour.equals(eHour)) {
|
||||
day = 1;
|
||||
}
|
||||
}
|
||||
// 计算总工作日期,需要减去的对应天数
|
||||
result = BigDecimal.valueOf(total)
|
||||
.subtract(BigDecimal.valueOf(day))
|
||||
.setScale(1, RoundingMode.HALF_UP);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user