|
@@ -39,7 +39,9 @@ import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
import java.io.InputStream;
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
import java.text.ParseException;
|
|
import java.text.ParseException;
|
|
|
|
|
+import java.time.Instant;
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
|
|
|
+import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -244,6 +246,101 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ public CommonResult queryPageUserClasses(int currentPage, int pageCount, int schoolId) {
|
|
|
|
|
+ PageUtils<AddressBookVo> result = repairUserService.queryUserPageBySchoolId(currentPage, pageCount, schoolId);
|
|
|
|
|
+ List<Integer> userIds = result.getList().stream().map(AddressBookVo::getId).collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+ List<ClassesDataVo> users = repairClassesSettingsService.queryClassesDatas(userIds, schoolId);
|
|
|
|
|
+
|
|
|
|
|
+ List<UserScheduleVo> results = new ArrayList<>();
|
|
|
|
|
+ for (AddressBookVo ru : result.getList()) {
|
|
|
|
|
+ UserScheduleVo dataV = new UserScheduleVo();
|
|
|
|
|
+ dataV.setId(ru.getId());
|
|
|
|
|
+ dataV.setUserName(ru.getUserName());
|
|
|
|
|
+ dataV.setUserPhone(ru.getUserPhone());
|
|
|
|
|
+ dataV.setWorkTypeName(ru.getWorkTypeName());
|
|
|
|
|
+ dataV.setState(ru.getState());
|
|
|
|
|
+ dataV.setStateStr(ru.getStateStr());
|
|
|
|
|
+ Optional<ClassesDataVo> data = users.stream().filter(e -> Integer.valueOf(e.getUserId()).equals(ru.getId())).findFirst();
|
|
|
|
|
+ if (data != null && data.isPresent()) {
|
|
|
|
|
+ dataV.setShifts(data.get().getShifts());
|
|
|
|
|
+ dataV.setClassId(data.get().getId());
|
|
|
|
|
+ }
|
|
|
|
|
+ results.add(dataV);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ PageUtils resultPage = new PageUtils(results, result.getTotalCount(), result.getTotalPage(), result.getCurrPage());
|
|
|
|
|
+ return CommonResult.ok(resultPage);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public CommonResult updateUserClasses(UserScheduleVo usv, BindingResult bindingResult) throws ParseException {
|
|
|
|
|
+ if (bindingResult.hasErrors()) {
|
|
|
|
|
+ String st = paramUtils.getParamError(bindingResult);
|
|
|
|
|
+ return CommonResult.fail(st);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ RepairUser user = repairUserService.getRepairById(usv.getId());
|
|
|
|
|
+ if (user == null) {
|
|
|
|
|
+ return CommonResult.fail("用户信息失效,修改失败");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!user.getState().equals(usv.getState())) {
|
|
|
|
|
+ user.setState(usv.getState());
|
|
|
|
|
+ int updateUser = repairUserService.updateRepairUser(user);
|
|
|
|
|
+ if (updateUser <= 0) {
|
|
|
|
|
+ return CommonResult.fail("用户信息更新失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (usv.getShifts() != null && usv.getShifts().size() > 0) {
|
|
|
|
|
+ List<String> shifts = usv.getShifts().stream().map(ShiftSettingDataVo::getId).distinct().collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+ List<RepairShiftSettings> datas = repairShiftSettingsService.getRepairsByShiftIds(shifts);
|
|
|
|
|
+ for (int i = 0; i < datas.size(); i++) {
|
|
|
|
|
+ for (int j = i + 1; j < datas.size(); j++) {
|
|
|
|
|
+ boolean isOver = TimeExchange.overlapping(datas.get(i).getStartTime(), datas.get(i).getEndTime(), datas.get(j).getStartTime(), datas.get(j).getEndTime());
|
|
|
|
|
+ if (isOver) {
|
|
|
|
|
+ return CommonResult.fail(datas.get(i).getStartTime() + "-" + datas.get(i).getEndTime() + "时间段和" + datas.get(j).getStartTime() + "-" + datas.get(j).getEndTime() + "时间段存在重叠");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ RepairClassesSettings rcs = new RepairClassesSettings();
|
|
|
|
|
+ //为空则新增排班数据
|
|
|
|
|
+ if (usv.getClassId() == null) {
|
|
|
|
|
+ //判断对应师傅当天排班数据是否存在
|
|
|
|
|
+ ClassesDataVo csv = repairClassesSettingsService.queryClassesData(usv.getId());
|
|
|
|
|
+ if (csv != null) {
|
|
|
|
|
+ return CommonResult.fail("排班数据已存在,新增失败");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ rcs.setUserId(usv.getId());
|
|
|
|
|
+ Date date = new Date();
|
|
|
|
|
+ Instant instant = date.toInstant();
|
|
|
|
|
+ ZoneId zoneId = ZoneId.systemDefault();
|
|
|
|
|
+ // atZone()方法返回在指定时区从此Instant生成的ZonedDateTime。
|
|
|
|
|
+ LocalDate localDate = instant.atZone(zoneId).toLocalDate();
|
|
|
|
|
+ rcs.setStartDate(localDate);
|
|
|
|
|
+ rcs.setShiftId(StringUtils.join(shifts, ","));
|
|
|
|
|
+
|
|
|
|
|
+ int insertClasses = repairClassesSettingsService.insertRepairClassesSettings(rcs);
|
|
|
|
|
+ if (insertClasses <= 0) {
|
|
|
|
|
+ return CommonResult.fail("排班信息新增失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ rcs.setShiftId(StringUtils.join(shifts, ","));
|
|
|
|
|
+ int updateClasses = repairClassesSettingsService.updateRepairClassesSettings(rcs);
|
|
|
|
|
+ if (updateClasses <= 0) {
|
|
|
|
|
+ return CommonResult.fail("排班信息更新失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return CommonResult.ok("操作成功");
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
public CommonResult importRepairClassesSettingExcel(MultipartFile file) throws IOException, ParseException {
|
|
public CommonResult importRepairClassesSettingExcel(MultipartFile file) throws IOException, ParseException {
|
|
|
if (file.isEmpty() || file.getSize() == 0) {
|
|
if (file.isEmpty() || file.getSize() == 0) {
|
|
|
return CommonResult.fail("导入文件不能为空");
|
|
return CommonResult.fail("导入文件不能为空");
|