3ed2d4ec sonin

设备统计分析 设备完好率

1 个父辈 99a09abe
...@@ -92,15 +92,17 @@ public class EquipmentAnalysisServiceImpl implements IEquipmentAnalysisService { ...@@ -92,15 +92,17 @@ public class EquipmentAnalysisServiceImpl implements IEquipmentAnalysisService {
92 String tmpDepartId = entry.getKey(); 92 String tmpDepartId = entry.getKey();
93 int equipCount = entry.getValue(); 93 int equipCount = entry.getValue();
94 // 计算完好率 94 // 计算完好率
95 long value0 = departId2Equip2FaultTimeMap.getOrDefault(tmpDepartId, new HashMap<>()).values().stream().mapToLong(item -> item).sum(); 95 long faultSecond = departId2Equip2FaultTimeMap.getOrDefault(tmpDepartId, new HashMap<>()).values().stream().mapToLong(item -> item).sum();
96 long value1 = equipCount * interval; 96 long allSecond = equipCount * interval;
97 double intactRate = 1 - 1.0 * value0 / value1; 97 double intactRate = 1 - 1.0 * faultSecond / allSecond;
98 String departName = sysDepartDictMap.get(tmpDepartId); 98 String departName = sysDepartDictMap.get(tmpDepartId);
99 // 结果 99 // 结果
100 Map<String, Object> resMap = new HashMap<>(4); 100 Map<String, Object> resMap = new HashMap<>(4);
101 resMap.put("departId", tmpDepartId); 101 resMap.put("departId", tmpDepartId);
102 resMap.put("departName", departName); 102 resMap.put("departName", departName);
103 resMap.put("intactRate", intactRate); 103 resMap.put("intactRate", intactRate);
104 resMap.put("faultSecond", faultSecond);
105 resMap.put("intactSecond", allSecond - faultSecond);
104 resMapList.add(resMap); 106 resMapList.add(resMap);
105 } 107 }
106 return resMapList; 108 return resMapList;
...@@ -170,13 +172,15 @@ public class EquipmentAnalysisServiceImpl implements IEquipmentAnalysisService { ...@@ -170,13 +172,15 @@ public class EquipmentAnalysisServiceImpl implements IEquipmentAnalysisService {
170 long interval = DateUtils.dateStr2Sec(timeRangeArray[1], BusinessConstant.dateFormat) - DateUtils.dateStr2Sec(timeRangeArray[0], BusinessConstant.dateFormat) + 1; 172 long interval = DateUtils.dateStr2Sec(timeRangeArray[1], BusinessConstant.dateFormat) - DateUtils.dateStr2Sec(timeRangeArray[0], BusinessConstant.dateFormat) + 1;
171 Map<String, Long> equip2FaultTimeMap = entry.getValue(); 173 Map<String, Long> equip2FaultTimeMap = entry.getValue();
172 // 计算完好率 174 // 计算完好率
173 long value0 = equip2FaultTimeMap.values().stream().mapToLong(Long::longValue).sum(); 175 long faultSecond = equip2FaultTimeMap.values().stream().mapToLong(Long::longValue).sum();
174 long value1 = equipTotal * interval; 176 long allSecond = equipTotal * interval;
175 double intactRate = 1 - 1.0 * value0 / value1; 177 double intactRate = 1 - 1.0 * faultSecond / allSecond;
176 // 结果 178 // 结果
177 Map<String, Object> resMap = new HashMap<>(4); 179 Map<String, Object> resMap = new HashMap<>(4);
178 resMap.put("time", timeRange); 180 resMap.put("time", timeRange);
179 resMap.put("intactRate", intactRate); 181 resMap.put("intactRate", intactRate);
182 resMap.put("faultSecond", faultSecond);
183 resMap.put("intactSecond", allSecond - faultSecond);
180 resMapList.add(resMap); 184 resMapList.add(resMap);
181 } 185 }
182 return resMapList; 186 return resMapList;
......
...@@ -3,6 +3,7 @@ package com.skua.modules.equipment.service.impl; ...@@ -3,6 +3,7 @@ package com.skua.modules.equipment.service.impl;
3 import cn.hutool.core.util.StrUtil; 3 import cn.hutool.core.util.StrUtil;
4 import com.baomidou.mybatisplus.core.metadata.IPage; 4 import com.baomidou.mybatisplus.core.metadata.IPage;
5 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 import com.skua.common.constant.BusinessConstant;
6 import com.skua.core.context.BaseContextHandler; 7 import com.skua.core.context.BaseContextHandler;
7 import com.skua.core.util.ConvertUtils; 8 import com.skua.core.util.ConvertUtils;
8 import com.skua.core.util.DoubleOperaUtils; 9 import com.skua.core.util.DoubleOperaUtils;
...@@ -10,9 +11,11 @@ import com.skua.modules.common.mapper.CommonSqlMapper; ...@@ -10,9 +11,11 @@ import com.skua.modules.common.mapper.CommonSqlMapper;
10 import com.skua.modules.common.service.ICommonSqlService; 11 import com.skua.modules.common.service.ICommonSqlService;
11 import com.skua.modules.equipment.dto.ReportStatisticsDTO; 12 import com.skua.modules.equipment.dto.ReportStatisticsDTO;
12 import com.skua.modules.equipment.mapper.ProductionEquipmentMapper; 13 import com.skua.modules.equipment.mapper.ProductionEquipmentMapper;
14 import com.skua.modules.equipment.service.IEquipmentAnalysisService;
13 import com.skua.modules.equipment.service.IProductionEquipmentService; 15 import com.skua.modules.equipment.service.IProductionEquipmentService;
14 import com.skua.modules.equipment.vo.*; 16 import com.skua.modules.equipment.vo.*;
15 import com.skua.tool.util.DateUtils; 17 import com.skua.tool.util.DateUtils;
18 import com.skua.tool.util.DigitalUtils;
16 import com.skua.tool.util.JSUtils; 19 import com.skua.tool.util.JSUtils;
17 import io.swagger.annotations.ApiModelProperty; 20 import io.swagger.annotations.ApiModelProperty;
18 import org.apache.commons.lang3.StringUtils; 21 import org.apache.commons.lang3.StringUtils;
...@@ -43,6 +46,8 @@ public class ProductionEquipmentServiceImpl implements IProductionEquipmentServi ...@@ -43,6 +46,8 @@ public class ProductionEquipmentServiceImpl implements IProductionEquipmentServi
43 private ProductionEquipmentMapper productionEquipmentMapper; 46 private ProductionEquipmentMapper productionEquipmentMapper;
44 @Autowired 47 @Autowired
45 private ICommonSqlService commonSqlService; 48 private ICommonSqlService commonSqlService;
49 @Autowired
50 private IEquipmentAnalysisService equipmentAnalysisService;
46 51
47 private static final String MONTH_START = "-01 00:00:00"; 52 private static final String MONTH_START = "-01 00:00:00";
48 private static final String MONTH_END = "-31 23:59:59"; 53 private static final String MONTH_END = "-31 23:59:59";
...@@ -74,6 +79,13 @@ public class ProductionEquipmentServiceImpl implements IProductionEquipmentServi ...@@ -74,6 +79,13 @@ public class ProductionEquipmentServiceImpl implements IProductionEquipmentServi
74 Double sbwhCost = 0d; //维护费用 79 Double sbwhCost = 0d; //维护费用
75 Double sbbyCost = 0d;//保养费用 80 Double sbbyCost = 0d;//保养费用
76 Double jjwxCost = 0d; //基建维修费用 81 Double jjwxCost = 0d; //基建维修费用
82
83 // 开始时间往前推一个月,方便计算环比
84 String startTime0 = DateUtils.date2Str(DateUtils.prevMonth(DateUtils.str2Date(reportStatisticsDTO.getStartTime(), BusinessConstant.dateFormat)), BusinessConstant.dateFormat);
85 // endTime修改到本月月底
86 int days = DateUtils.lengthOfSomeMonth(Integer.parseInt(reportStatisticsDTO.getEndTime().split("-")[0]), Integer.parseInt(reportStatisticsDTO.getEndTime().split("-")[1]));
87 String endTime0 = reportStatisticsDTO.getEndTime().substring(0, 7) + "-" + days + BusinessConstant.endTimeSuffix;
88
77 //ab总数 89 //ab总数
78 Integer ABEquipmentNum = 0; 90 Integer ABEquipmentNum = 0;
79 if (reportStatisticsDTO.getTimeUnit() != null && reportStatisticsDTO.getTimeUnit() == 3) { 91 if (reportStatisticsDTO.getTimeUnit() != null && reportStatisticsDTO.getTimeUnit() == 3) {
...@@ -245,21 +257,36 @@ public class ProductionEquipmentServiceImpl implements IProductionEquipmentServi ...@@ -245,21 +257,36 @@ public class ProductionEquipmentServiceImpl implements IProductionEquipmentServi
245 } 257 }
246 } 258 }
247 259
260 List<Map<String, Object>> inTactRateMapList = equipmentAnalysisService.equipmentInTactRateByTime(new HashMap<String, Object>(){{
261 put("startTime", startTime0);
262 put("endTime", endTime0);
263 put("timeType", "month");
264 put("departId", "");
265 }});
266
248 productionEquipmentVO.setEquipmentNum(equipmentNum); 267 productionEquipmentVO.setEquipmentNum(equipmentNum);
249 productionEquipmentVO.setAbEquipmentNum(ABEquipmentNum); 268 productionEquipmentVO.setAbEquipmentNum(ABEquipmentNum);
250 //本月新增 269 //本月新增
251 productionEquipmentVO.setIncrease(increase); 270 productionEquipmentVO.setIncrease(increase);
252 //设备完好率 271 //设备完好率
253 BigDecimal bigDecimal = new BigDecimal(ConvertUtils.getDou(v,0d)*100).setScale(2, BigDecimal.ROUND_HALF_UP); 272 BigDecimal bigDecimal = new BigDecimal(ConvertUtils.getDou(v,0d)*100).setScale(2, BigDecimal.ROUND_HALF_UP);
254 productionEquipmentVO.setEquipmentIntactRate(bigDecimal.toString() + "%"); 273 // productionEquipmentVO.setEquipmentIntactRate(bigDecimal.toString() + "%");
274 productionEquipmentVO.setEquipmentIntactRate(DigitalUtils.nPoint(ConvertUtils.getDouble(inTactRateMapList.get(inTactRateMapList.size() - 1).get("intactRate"), 0D) * 100, 2) + "%");
255 //设备完好总台日 275 //设备完好总台日
256 BigDecimal bigDecimal5 = new BigDecimal(goodDay).setScale(2, BigDecimal.ROUND_HALF_UP); 276 BigDecimal bigDecimal5 = new BigDecimal(goodDay).setScale(2, BigDecimal.ROUND_HALF_UP);
257 productionEquipmentVO.setEquipmentIntactDay(bigDecimal5.toString()); 277 // productionEquipmentVO.setEquipmentIntactDay(bigDecimal5.toString());
278 // 从第2条开始算,因为开始时间往前推了一个月,方便计算环比
279 long okSecond = 0L;
280 for (int i = 1; i < inTactRateMapList.size(); i++) {
281 okSecond += Long.parseLong(ConvertUtils.getString(inTactRateMapList.get(i).get("intactSecond")));
282 }
283 productionEquipmentVO.setEquipmentIntactDay(DigitalUtils.nPoint(ConvertUtils.getDouble(okSecond, 0D) / 3600 / 24, 1));
258 //维护台次 284 //维护台次
259 productionEquipmentVO.setMaintainUnits(repairNum); 285 productionEquipmentVO.setMaintainUnits(repairNum);
260 //设备完好率月环比 286 //设备完好率月环比
261 BigDecimal bigDecimal1 = new BigDecimal(goodDayRing).setScale(2, BigDecimal.ROUND_HALF_UP); 287 BigDecimal bigDecimal1 = new BigDecimal(goodDayRing).setScale(2, BigDecimal.ROUND_HALF_UP);
262 productionEquipmentVO.setEquipmentIntactRingRate(bigDecimal1.toString() + "%"); 288 // productionEquipmentVO.setEquipmentIntactRingRate(bigDecimal1.toString() + "%");
289 productionEquipmentVO.setEquipmentIntactRingRate(DigitalUtils.nPoint(ConvertUtils.getDouble(inTactRateMapList.get(inTactRateMapList.size() - 2).get("intactRate"), 0D) * 100, 2) + "%");
263 //维修计划完成率 290 //维修计划完成率
264 BigDecimal bigDecimal2 = new BigDecimal(repairCompleteRate).setScale(2, BigDecimal.ROUND_HALF_UP); 291 BigDecimal bigDecimal2 = new BigDecimal(repairCompleteRate).setScale(2, BigDecimal.ROUND_HALF_UP);
265 productionEquipmentVO.setRepairCompleteRate(bigDecimal2.toString() + "%"); 292 productionEquipmentVO.setRepairCompleteRate(bigDecimal2.toString() + "%");
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!