package com.yuanchu.mom.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.yuanchu.mom.common.GetLook;
|
import com.yuanchu.mom.common.PrintChina;
|
import com.yuanchu.mom.dto.DeviceDto;
|
import com.yuanchu.mom.dto.ReservationDto;
|
import com.yuanchu.mom.mapper.DeviceMapper;
|
import com.yuanchu.mom.mapper.ReservationMapper;
|
import com.yuanchu.mom.pojo.Reservation;
|
import com.yuanchu.mom.service.DataConfigService;
|
import com.yuanchu.mom.service.ReservationService;
|
import com.yuanchu.mom.utils.QueryWrappers;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.time.LocalDate;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 资源预定新建预定表 服务实现类
|
* </p>
|
*
|
* @author baomidou
|
* @since 2024-09-14
|
*/
|
@Service
|
public class ReservationServiceImpl extends ServiceImpl<ReservationMapper, Reservation> implements ReservationService {
|
|
@Autowired
|
private GetLook getLook;
|
|
@Autowired
|
private DeviceMapper deviceMapper;
|
|
@Autowired
|
private ReservationMapper reservationMapper;
|
|
@Autowired
|
private DataConfigService dataConfigService;
|
|
@Override
|
public Map<String, Object> selectDeviceParameter(Page page, DeviceDto itemParameter, Boolean laboratoryNameIsNull, String starttime, String endtime) {
|
ArrayList<String> dateTextList = new ArrayList<>();
|
if (StringUtils.isNoneEmpty(starttime)&&StringUtils.isNoneEmpty(endtime)){
|
LocalDate startDate = LocalDate.parse(starttime, DateTimeFormatter.ISO_LOCAL_DATE);
|
LocalDate endDate = LocalDate.parse(endtime, DateTimeFormatter.ISO_LOCAL_DATE);
|
while (!startDate.isAfter(endDate)) {
|
dateTextList.add(startDate.toString());
|
startDate = startDate.plusDays(1);
|
}
|
}
|
LambdaQueryWrapper<Reservation> lambdaQueryWrapper=new LambdaQueryWrapper<>();
|
lambdaQueryWrapper.between(Reservation::getReservationTime,starttime,endtime);
|
List<Reservation> reservations = reservationMapper.selectList(lambdaQueryWrapper);
|
HashMap dates = new HashMap<String, Integer>();
|
|
Map<Integer, List<Reservation>> deviceIdcollect = reservations.stream().collect(Collectors.groupingBy(Reservation::getDeviceId));
|
for (Integer deviceId : deviceIdcollect.keySet()) {
|
List<Reservation> deviceIdList = deviceIdcollect.get(deviceId);
|
Map<String, List<Reservation>> collect = deviceIdList.stream().collect(Collectors.groupingBy(Reservation::getReservationTime));
|
for (String date : collect.keySet()) {
|
List<Reservation> reservations1 = collect.get(date);
|
Map<String, List<Reservation>> collect1 = reservations1.stream().collect(Collectors.groupingBy(Reservation::getSpecificTime));
|
for (String s : collect1.keySet()) {
|
if (!(dates.containsKey(deviceId + date + s))) {
|
dates.put(deviceId + date + s, collect1.get(s).size());
|
}
|
}
|
}
|
}
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
map.put("head", PrintChina.printChina(DeviceDto.class));
|
Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectDeviceParameter");
|
if (map1.get("look") == 1) itemParameter.setCreateUser(map1.get("userId"));
|
IPage<DeviceDto> iPage = deviceMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(itemParameter), laboratoryNameIsNull);
|
List<DeviceDto> records = iPage.getRecords();
|
ArrayList<JSONObject> datas = new ArrayList<>();
|
|
String [] dateArrays={"09:00-12:00","13:00-18:00", "18:00-22:00"};
|
for (DeviceDto record : records) {
|
for (int i = 0; i < dateArrays.length; i++) {
|
String dateArray = dateArrays[i];
|
JSONObject temp = JSON.parseObject(JSON.toJSONString(record));
|
temp.put("time", dateArray);
|
JSONArray dataArray = new JSONArray();
|
for (String date : dateTextList) {
|
JSONObject dateObject = new JSONObject();
|
dateObject.put("date", date);
|
dateObject.put("value", dates.containsKey(record.getId()+date + dateArray) ? dates.get(record.getId()+date + dateArray) : 0);
|
dataArray.add(dateObject);
|
}
|
temp.put("dateList", dataArray);
|
datas.add(temp);
|
}
|
}
|
map.put("body", datas);
|
return map;
|
}
|
|
|
@Override
|
public List<ReservationDto> selectReservationParameterPage(String deviceId, String reservationTime, String specificTime) {
|
return reservationMapper.selectReservationParameterPage(Integer.parseInt(deviceId), reservationTime, specificTime);
|
}
|
}
|