New file |
| | |
| | | package com.moral.api.service.impl; |
| | | |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.system.ApplicationHome; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.ObjectUtils; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.text.DecimalFormat; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | | import java.util.Comparator; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.Iterator; |
| | | import java.util.LinkedHashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.UUID; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | |
| | | import com.moral.api.entity.Dustld; |
| | | import com.moral.api.mapper.DustldMapper; |
| | | import com.moral.api.mapper.HistorySecondCruiserMapper; |
| | | import com.moral.api.pojo.dust.DustForm; |
| | | import com.moral.api.pojo.dust.TimeForm; |
| | | import com.moral.api.service.DustldService; |
| | | import com.moral.util.DateUtils; |
| | | import com.moral.util.FileUtils; |
| | | |
| | | @Service |
| | | @Slf4j |
| | | public class DustldServiceImpl implements DustldService { |
| | | |
| | | |
| | | @Autowired |
| | | private HistorySecondCruiserMapper historySecondCruiserMapper; |
| | | |
| | | @Autowired |
| | | private DustldMapper dustldMapper; |
| | | |
| | | /** |
| | | * 保存日报信息 |
| | | * @param params |
| | | * @param file |
| | | * @return |
| | | * @throws ParseException |
| | | */ |
| | | @Override |
| | | public Integer getDailyDustld(Map<String, Object> params,MultipartFile file ) { |
| | | |
| | | //获取jar包所在目录 |
| | | ApplicationHome applicationHome = new ApplicationHome(getClass()); |
| | | //在jar包所在目录下生成一个upload文件夹用来存储上传的图片 |
| | | String path = applicationHome.getSource().getParentFile().toString() + "/static/img"; |
| | | |
| | | |
| | | String mac = params.get("mac").toString(); |
| | | String time3 = params.get("time3").toString(); |
| | | String time4 = params.get("time4").toString(); |
| | | String table = params.get("table").toString(); |
| | | String substring = time3.substring(0, 10); |
| | | //路段名 |
| | | String road = params.get("road").toString(); |
| | | |
| | | ArrayList<Double> list = new ArrayList<>(); |
| | | List<TimeForm> tables = JSONArray.parseArray(table, TimeForm.class); |
| | | |
| | | if (!ObjectUtils.isEmpty(tables)){ |
| | | for (TimeForm timeForm : tables) { |
| | | String start = timeForm.getStart(); |
| | | String end = timeForm.getEnd(); |
| | | List<Double> dust = historySecondCruiserMapper.getDust(start, end, mac); |
| | | list.addAll(dust); |
| | | } |
| | | } |
| | | String format = ""; |
| | | if (!ObjectUtils.isEmpty(list)){ |
| | | Double collect = (list.stream().collect(Collectors.averagingDouble(Double::doubleValue)))/1000; |
| | | format = new DecimalFormat("0.000").format(collect); |
| | | } |
| | | |
| | | QueryWrapper<Dustld> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("mac",mac).likeRight("time",substring); |
| | | Dustld dustld = dustldMapper.selectOne(queryWrapper); |
| | | |
| | | if (ObjectUtils.isEmpty(dustld)){ |
| | | Dustld dustld1 = new Dustld(); |
| | | if (!ObjectUtils.isEmpty(file)){ |
| | | HashMap<String, Object> hashMap = new HashMap<>(); |
| | | String fileType = file.getContentType(); |
| | | if ("image/jpg".equals(fileType) || "image/png".equals(fileType) || "image/jpeg".equals(fileType)){ |
| | | //获取文件名 |
| | | String fileName = file.getOriginalFilename(); |
| | | //获取文件后缀名 |
| | | String suffixName = fileName.substring(fileName.lastIndexOf(".")); |
| | | //每一次都需要 |
| | | fileName.substring(fileName.lastIndexOf(".")); |
| | | //重新生成文件名 |
| | | fileName = UUID.randomUUID() + suffixName; |
| | | //图片上传 |
| | | if (FileUtils.upload(file, path, fileName)) { |
| | | hashMap.put("file1",fileName); |
| | | String s = JSON.toJSONString(hashMap); |
| | | dustld1.setImages(s); |
| | | } |
| | | } |
| | | } |
| | | |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | |
| | | map.put(road,format); |
| | | String value = JSON.toJSONString(map); |
| | | dustld1.setMac(mac); |
| | | dustld1.setTime(DateUtils.getDate(time3,DateUtils.yyyy_MM_dd_HH_mm_ss_EN)); |
| | | dustld1.setValue(value); |
| | | dustld1.setEndTime(DateUtils.getDate(time4,DateUtils.yyyy_MM_dd_HH_mm_ss_EN)); |
| | | dustldMapper.insert(dustld1); |
| | | return 200; |
| | | }else { |
| | | if (!ObjectUtils.isEmpty(file)){ |
| | | HashMap<String, Object> hashMap = new HashMap<>(); |
| | | String fileType = file.getContentType(); |
| | | if ("image/jpg".equals(fileType) || "image/png".equals(fileType) || "image/jpeg".equals(fileType)){ |
| | | //获取文件名 |
| | | String fileName = file.getOriginalFilename(); |
| | | //获取文件后缀名 |
| | | String suffixName = fileName.substring(fileName.lastIndexOf(".")); |
| | | //每一次都需要 |
| | | fileName.substring(fileName.lastIndexOf(".")); |
| | | //重新生成文件名 |
| | | fileName = UUID.randomUUID() + suffixName; |
| | | //图片上传 |
| | | if (FileUtils.upload(file, path, fileName)) { |
| | | hashMap.put("file1",fileName); |
| | | String s = JSON.toJSONString(hashMap); |
| | | dustld.setImages(s); |
| | | } |
| | | } |
| | | } |
| | | String value = dustld.getValue(); |
| | | JSONObject jsonObject = JSONObject.parseObject(value); |
| | | jsonObject.put(road,format); |
| | | String rsValue = JSONObject.toJSONString(jsonObject); |
| | | dustld.setValue(rsValue); |
| | | dustldMapper.updateById(dustld); |
| | | return 200; |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 下载日报 |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Map<String,Object> dailyDustld(Integer id,List<MultipartFile> files) { |
| | | //获取jar包所在目录 |
| | | ApplicationHome applicationHome = new ApplicationHome(getClass()); |
| | | //在jar包所在目录下生成一个upload文件夹用来存储上传的图片 |
| | | String path = applicationHome.getSource().getParentFile().toString() + "/static/img"; |
| | | |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | ArrayList<DustForm> list1 = new ArrayList<>(); |
| | | ArrayList<DustForm> list2= new ArrayList<>(); |
| | | |
| | | Dustld dustld = dustldMapper.selectById(id); |
| | | if (ObjectUtils.isEmpty(dustld)){ |
| | | return null; |
| | | } |
| | | String pathList = getList(path, files); |
| | | String images = dustld.getImages(); |
| | | if (ObjectUtils.isEmpty(images)){ |
| | | HashMap<String, Object> map1 = new HashMap<>(); |
| | | map1.put("file1",""); |
| | | if (pathList==null){ |
| | | map1.put("file2",""); |
| | | }else { |
| | | map1.put("file2",pathList); |
| | | } |
| | | |
| | | String s = JSON.toJSONString(map1); |
| | | dustld.setImages(s); |
| | | dustldMapper.updateById(dustld); |
| | | }else { |
| | | JSONObject jsonObject = JSONObject.parseObject(images); |
| | | if (ObjectUtils.isEmpty(pathList)){ |
| | | jsonObject.put("file2",""); |
| | | }else { |
| | | jsonObject.put("file2",pathList); |
| | | } |
| | | String s = JSON.toJSONString(jsonObject); |
| | | dustld.setImages(s); |
| | | dustldMapper.updateById(dustld); |
| | | } |
| | | |
| | | |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒"); |
| | | String stsrtTime = sdf.format(dustld.getTime()); |
| | | String substring = stsrtTime.substring(5, 14); |
| | | String endTime = sdf.format(dustld.getEndTime()); |
| | | String substring1 = endTime.substring(5, 14); |
| | | |
| | | String value = dustld.getValue(); |
| | | JSONObject jsonObject = JSONObject.parseObject(value); |
| | | Iterator<Map.Entry<String, Object>> iterator = jsonObject.entrySet().iterator(); |
| | | while (iterator.hasNext()) { |
| | | DustForm dustForm = new DustForm(); |
| | | Map.Entry entry = (Map.Entry) iterator.next(); |
| | | dustForm.setRoad(entry.getKey().toString()); |
| | | dustForm.setValue(Double.parseDouble(entry.getValue().toString())); |
| | | double aDouble = Double.parseDouble(entry.getValue().toString()); |
| | | list2.add(dustForm); |
| | | if (aDouble>=0.3){ |
| | | list1.add(dustForm); |
| | | } |
| | | } |
| | | |
| | | //排序 |
| | | list1.sort(Comparator.comparing(DustForm::getValue).reversed()); |
| | | list2.sort(Comparator.comparing(DustForm::getValue).reversed()); |
| | | map.put("list1",list1); |
| | | map.put("list2",list2); |
| | | map.put("time",substring+"-"+substring1); |
| | | map.put("images",JSON.parseObject(dustld.getImages())); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 查询尘负荷高值 |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Map<String,Object> selectDust(Integer id) { |
| | | |
| | | HashMap<String, Object> rsMap = new HashMap<>(); |
| | | ArrayList<DustForm> list1 = new ArrayList<>(); |
| | | |
| | | Dustld dustld = dustldMapper.selectById(id); |
| | | if (ObjectUtils.isEmpty(dustld)){ |
| | | return null; |
| | | } |
| | | String value = dustld.getValue(); |
| | | JSONObject jsonObject = JSONObject.parseObject(value); |
| | | Iterator<Map.Entry<String, Object>> iterator = jsonObject.entrySet().iterator(); |
| | | while (iterator.hasNext()) { |
| | | DustForm dustForm = new DustForm(); |
| | | Map.Entry entry = (Map.Entry) iterator.next(); |
| | | dustForm.setRoad(entry.getKey().toString()); |
| | | dustForm.setValue(Double.parseDouble(entry.getValue().toString())); |
| | | double aDouble = Double.parseDouble(entry.getValue().toString()); |
| | | if (aDouble>=0.3){ |
| | | list1.add(dustForm); |
| | | } |
| | | } |
| | | if (!ObjectUtils.isEmpty(list1)){ |
| | | list1.sort(Comparator.comparing(DustForm::getValue).reversed()); |
| | | } |
| | | rsMap.put("list",list1); |
| | | rsMap.put("count",list1.size()); |
| | | return rsMap; |
| | | } |
| | | |
| | | /** |
| | | * 查询日报记录 |
| | | * @param params |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<Dustld> selectAll(Map<String, Object> params) { |
| | | String mac = params.get("mac").toString(); |
| | | String time1 = params.get("startTime").toString(); |
| | | String time2 = params.get("endTime").toString(); |
| | | |
| | | QueryWrapper<Dustld> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("mac",mac).between("time",time1,time2); |
| | | List<Dustld> dustlds = dustldMapper.selectList(queryWrapper); |
| | | if (ObjectUtils.isEmpty(dustlds)){ |
| | | return null; |
| | | } |
| | | return dustlds; |
| | | } |
| | | |
| | | |
| | | //获取图片地址 |
| | | private String getList(String path, List<MultipartFile> files1) { |
| | | ArrayList<String> images = new ArrayList<>(); |
| | | if (!ObjectUtils.isEmpty(files1)){ |
| | | for (MultipartFile file : files1) { |
| | | String fileType = file.getContentType(); |
| | | if ("image/jpg".equals(fileType) || "image/png".equals(fileType) || "image/jpeg".equals(fileType)){ |
| | | //获取文件名 |
| | | String fileName = file.getOriginalFilename(); |
| | | //获取文件后缀名 |
| | | String suffixName = fileName.substring(fileName.lastIndexOf(".")); |
| | | //每一次都需要 |
| | | fileName.substring(fileName.lastIndexOf(".")); |
| | | //重新生成文件名 |
| | | fileName = UUID.randomUUID() + suffixName; |
| | | //图片上传 |
| | | if (FileUtils.upload(file, path, fileName)) { |
| | | images.add(fileName); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (!ObjectUtils.isEmpty(images)) { |
| | | String image = images.stream() |
| | | .map(String::valueOf) |
| | | .collect(Collectors.joining(",")); |
| | | |
| | | return image; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | } |