| | |
| | | package com.moral.api.service.impl; |
| | | |
| | | |
| | | import com.moral.api.config.Interceptor.UserHelper; |
| | | import com.moral.api.entity.SysDictData; |
| | | import com.moral.api.exception.BusinessException; |
| | | import com.moral.api.mapper.*; |
| | | import com.moral.api.pojo.enums.SysDictTypeEnum; |
| | | import com.moral.api.pojo.vo.user.QxUser; |
| | | import com.moral.api.service.SysDictTypeService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.system.ApplicationHome; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | 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.Objects; |
| | | import java.util.Set; |
| | | import java.util.UUID; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | |
| | | import com.moral.api.entity.Dustld; |
| | | import com.moral.api.entity.ManageCoordinate; |
| | | import com.moral.api.entity.MaxRoad; |
| | | import com.moral.api.mapper.DustldMapper; |
| | | import com.moral.api.mapper.HistorySecondCruiserMapper; |
| | | import com.moral.api.mapper.ManageCoordinateMapper; |
| | | import com.moral.api.mapper.MaxRoadMapper; |
| | | import com.moral.api.pojo.dto.historySecondCruiser.DustldDTO; |
| | | import com.moral.api.pojo.dust.DustForm; |
| | | import com.moral.api.pojo.dust.TimeForm; |
| | |
| | | */ |
| | | @Override |
| | | public Integer getDailyDustld(Map<String, Object> params,MultipartFile file ) { |
| | | |
| | | SysDictData listDict = sysDictTypeService.listOne(SysDictTypeEnum.SYS_SECOND_CRUISER.getValue(),"dustld"); |
| | | //获取jar包所在目录 |
| | | ApplicationHome applicationHome = new ApplicationHome(getClass()); |
| | | //在jar包所在目录下生成一个upload文件夹用来存储上传的图片 |
| | |
| | | ArrayList<Double> rsDouble = new ArrayList<>(); |
| | | for (String s : dust) { |
| | | double aDouble = Double.parseDouble(s); |
| | | |
| | | if (aDouble>=0 && aDouble<40 ){ |
| | | if(listDict.getDataValue().contains(",")){ |
| | | List<String> resultStr = Arrays.asList(listDict.getDataValue().split(",")); |
| | | if(resultStr.size() % 2 ==0){ |
| | | aDouble = numAvg(resultStr,BigDecimal.valueOf(aDouble)).doubleValue(); |
| | | } |
| | | }else { |
| | | BigDecimal dataValue = Objects.nonNull(listDict.getDataValue())?BigDecimal.valueOf(Double.parseDouble(listDict.getDataValue())):BigDecimal.ZERO; |
| | | aDouble = BigDecimal.valueOf(aDouble).add(dataValue).doubleValue(); |
| | | } |
| | | /*if (aDouble>=0 && aDouble<40 ){ |
| | | aDouble = aDouble + 170; |
| | | }else if (aDouble>=40 && aDouble<60){ |
| | | aDouble = aDouble + 130; |
| | |
| | | aDouble = aDouble + 30; |
| | | }else { |
| | | aDouble= aDouble+0; |
| | | } |
| | | }*/ |
| | | rsDouble.add(aDouble); |
| | | } |
| | | list.addAll(rsDouble); |
| | |
| | | private ManageCoordinateMapper manageCoordinateMapper; |
| | | @Autowired |
| | | private MaxRoadMapper maxRoadMapper; |
| | | @Autowired |
| | | private OrganizationMapper organizationMapper; |
| | | @Autowired |
| | | private SysDictTypeService sysDictTypeService; |
| | | |
| | | @Override |
| | | @Transactional |
| | | public Map<String, Object> dailyDustlds(List<MultipartFile> file,Map<String, Object> params) { |
| | | |
| | | public Map<String, Object> dailyDustlds(Map<String, Object> params) { |
| | | SysDictData list = sysDictTypeService.listOne(SysDictTypeEnum.SYS_SECOND_CRUISER.getValue(),"dustld"); |
| | | Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfo(); |
| | | Map<String, Object> orgInfo = (Map<String, Object>) userInfo.get("organization"); |
| | | Integer orgId = (Integer) orgInfo.get("id"); |
| | | String mac = params.get("mac").toString(); |
| | | List<Integer> orgList = organizationMapper.orgIdSpecialDevList(orgId,mac); |
| | | if(CollectionUtils.isEmpty(orgList)){ |
| | | throw new BusinessException("该设备没有路段组织信息!"); |
| | | } |
| | | String time1 = params.get("startTime").toString(); |
| | | String dateString1 = DateUtils.stringToDateString(time1, DateUtils.yyyy_MM_dd_HH_mm_ss_EN, DateUtils.yyyy_MM_dd_HH_mm_CN); |
| | | String rsTime1 = dateString1.substring(5, 14); |
| | |
| | | String rsTime2 = dateString2.substring(5, 14); |
| | | HashMap<String, Object> rsMap = new HashMap<>(); |
| | | List<Map<String, Object>> dusts = historySecondCruiserMapper.getDusts(params); |
| | | Map<String, List<DustldDTO>> collect = manageCoordinateMapper.CompareTo(orgId).stream().collect(Collectors.groupingBy(o -> o.getName())); |
| | | Map<String, List<DustldDTO>> collect = manageCoordinateMapper.CompareTo(orgList.get(0)).stream().collect(Collectors.groupingBy(o -> o.getName())); |
| | | if (ObjectUtils.isEmpty(dusts) || ObjectUtils.isEmpty(collect)){ |
| | | return null; |
| | | } |
| | | Set<String> strings = collect.keySet(); |
| | | ArrayList<DustForm> list1 = new ArrayList<>(); |
| | | //所有的高值路段 |
| | |
| | | // String flyLon1 = dust.get("flyLon").toString(); |
| | | if (latDouble1==latDouble && lonDouble1==lonDouble){ |
| | | Double dustld = Objects.nonNull(dust.get("dustld"))?Double.parseDouble(dust.get("dustld").toString()):0d; |
| | | |
| | | if (dustld>=0 && dustld<40 ){ |
| | | dustld = dustld + 170; |
| | | }else if (dustld>=40 && dustld<60){ |
| | | dustld = dustld + 130; |
| | | }else if (dustld>=60 && dustld<100 ){ |
| | | dustld = dustld + 110; |
| | | }else if (dustld>=100 && dustld<150){ |
| | | dustld = dustld + 70; |
| | | }else if (dustld>=150 && dustld<180){ |
| | | dustld = dustld + 30; |
| | | if(list.getDataValue().contains(",")){ |
| | | List<String> resultStr = Arrays.asList(list.getDataValue().split(",")); |
| | | if(resultStr.size() % 2 ==0){ |
| | | dustld = numAvg(resultStr,BigDecimal.valueOf(dustld)).doubleValue(); |
| | | } |
| | | }else { |
| | | BigDecimal dataValue = Objects.nonNull(list.getDataValue())?BigDecimal.valueOf(Double.parseDouble(list.getDataValue())):BigDecimal.ZERO; |
| | | dustld = BigDecimal.valueOf(dustld).add(dataValue).doubleValue(); |
| | | } |
| | | doubleArrayList.add(dustld); |
| | | break; |
| | |
| | | if (road.getName().equals(dustForm.getRoad())){ |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("road",road.getName()); |
| | | map.put("value1",road.getData()); |
| | | map.put("value2",dustForm.getValue()); |
| | | map.put("value3",road.getData()-dustForm.getValue()); |
| | | map.put("value1",String.format("%.2f",road.getData())); |
| | | map.put("value2",String.format("%.2f",dustForm.getValue())); |
| | | map.put("value3",String.format("%.2f",road.getData()-dustForm.getValue())); |
| | | list3.add(map); |
| | | } |
| | | } |
| | | } |
| | | rsMap.put("data",builder); |
| | | rsMap.put("data",ObjectUtils.isEmpty(builder)?"暂无高值路段":builder); |
| | | rsMap.put("list3",list3); |
| | | rsMap.put("time",rsTime1+"-"+rsTime2); |
| | | rsMap.put("date1",dateString3.substring(5,10)); |
| | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | private BigDecimal numAvg(List<String> list , BigDecimal num){ |
| | | int nums = 1; |
| | | for (int i=0;i<list.size();i=i+2){ |
| | | if(num.compareTo(BigDecimal.valueOf(Double.parseDouble(list.get(i))))>= 0 ){ |
| | | return num.add(BigDecimal.valueOf(Double.parseDouble(list.get(i+1)))); |
| | | } |
| | | nums+=2; |
| | | } |
| | | return num; |
| | | } |
| | | } |