lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/FaultIntervalTimeController.java
@@ -1,5 +1,6 @@ package org.jeecg.modules.eam.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -12,15 +13,20 @@ import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.eam.entity.FaultIntervalTime; import org.jeecg.modules.eam.service.IFaultIntervalTimeService; import org.jeecg.modules.eam.vo.EquipmentAvailabilityVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.text.ParseException; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; /** /** * @Description: mom_eam_fault_interval_time * @Author: jeecg-boot * @Date: 2023-08-30 @@ -158,4 +164,22 @@ return super.importExcel(request, response, FaultIntervalTime.class); } /** * ç产设å¤å¹³åæ éé´éæ¶é´MTBF * (说æ:设å¤å¹³åæéé´éæ (MTBF): æå¨è§å®æå ï¼è®¾å¤æ æ é工使¶é´çå¹³åå¼ã设å¤çå¹³åæ éåéæææ è¶å¤§å¥½ï¼è¡¨æè®¾å¤æ æ éè¿è¡æ¶é´é¿ã * 设å¤å¹³åæ éé´éæï¼MTBPï¼=ï¼æ¥åæ¶é´-æ»æ éåæºæ¶é´ï¼/æ»æ 鿬¡æ°ï¼ * * @return */ @GetMapping("/getMTBF") public JSONObject getMTBF(@RequestParam Map<String, String> query) throws ParseException { Map<String,Object> result= new HashMap<>(); IPage<FaultIntervalTime> pageData = new Page<FaultIntervalTime>(); List<FaultIntervalTime> list = faultIntervalTimeService.getMTBF(query); JSONObject jsonObject = new JSONObject(); jsonObject.put("data",list); return jsonObject; } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/RepairOrderController.java
@@ -1,5 +1,6 @@ package org.jeecg.modules.eam.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -19,6 +20,7 @@ import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.eam.entity.*; import org.jeecg.modules.eam.service.*; import org.jeecg.modules.eam.vo.EquipmentAvailabilityVo; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; @@ -36,6 +38,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; import java.text.ParseException; import java.util.*; import java.util.stream.Collectors; @@ -1700,4 +1703,17 @@ repairOrderService.updateById(repairOrder); return Result.OK("æä½æå"); } /** * 设å¤å®å¥½ç * * @return */ @GetMapping("/equipmentAvailability") public JSONObject equipmentAvailability(@RequestParam Map<String, String> query) throws ParseException { List<EquipmentAvailabilityVo> list = repairOrderService.equipmentAvailability(query); JSONObject jsonObject = new JSONObject(); jsonObject.put("data",list); return jsonObject; } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/FaultIntervalTime.java
@@ -4,10 +4,8 @@ import java.io.UnsupportedEncodingException; import java.util.Date; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.format.annotation.DateTimeFormat; @@ -96,4 +94,15 @@ @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "updateTime") private Date updateTime; @TableField(exist = false) private String equipmentNum; @TableField(exist = false) private String equipmentName; @TableField(exist = false) private String equipmentModel; @TableField(exist = false) private String userDepart; } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IFaultIntervalTimeService.java
@@ -2,6 +2,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.eam.entity.FaultIntervalTime; import org.jeecg.modules.eam.vo.EquipmentAvailabilityVo; import java.text.ParseException; import java.util.List; import java.util.Map; /** * @Description: mom_eam_fault_interval_time @@ -11,4 +16,5 @@ */ public interface IFaultIntervalTimeService extends IService<FaultIntervalTime> { public List<FaultIntervalTime> getMTBF(Map<String, String> query) throws ParseException; } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IRepairOrderService.java
@@ -5,8 +5,10 @@ import org.apache.ibatis.annotations.Param; import org.jeecg.modules.eam.entity.RepairOrder; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.eam.vo.EquipmentAvailabilityVo; import java.io.Serializable; import java.text.ParseException; import java.util.Collection; import java.util.List; import java.util.Map; @@ -47,4 +49,5 @@ IPage<Map<String, Object>> getMaterialSpareList(Integer pageNo, Integer pageSize, Map<String, Object> params); public List<EquipmentAvailabilityVo> equipmentAvailability(Map<String, String> query) throws ParseException; } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/FaultIntervalTimeServiceImpl.java
@@ -1,10 +1,34 @@ package org.jeecg.modules.eam.service.impl; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.entity.Equipment; import org.jeecg.modules.eam.entity.EquipmentReportRepair; import org.jeecg.modules.eam.entity.FaultIntervalTime; import org.jeecg.modules.eam.entity.RepairOrder; import org.jeecg.modules.eam.mapper.FaultIntervalTimeMapper; import org.jeecg.modules.eam.service.IEamEquipmentService; import org.jeecg.modules.eam.service.IEquipmentReportRepairService; import org.jeecg.modules.eam.service.IFaultIntervalTimeService; import org.jeecg.modules.eam.service.IRepairOrderService; import org.jeecg.modules.system.entity.SysDepart; import org.jeecg.modules.system.service.ISysDepartService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Period; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.*; /** * @Description: mom_eam_fault_interval_time @@ -15,4 +39,154 @@ @Service public class FaultIntervalTimeServiceImpl extends ServiceImpl<FaultIntervalTimeMapper, FaultIntervalTime> implements IFaultIntervalTimeService { @Autowired private IEamEquipmentService equipmentService; @Autowired private IEquipmentReportRepairService equipmentReportRepairService; @Autowired private IRepairOrderService repairOrderService; @Autowired private ISysDepartService departService; @Override public List<FaultIntervalTime> getMTBF(Map<String, String> query) throws ParseException { List<FaultIntervalTime> faultIntervalTimeList = new ArrayList<>(); String startTime = query.get("startTime"); String endTime = query.get("endTime"); if(StringUtils.isBlank(startTime) || StringUtils.isBlank(endTime)){ return faultIntervalTimeList; }else { startTime = startTime+" 00:00:00"; endTime = endTime+" 23:59:59"; } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date startDate = sdf.parse(startTime); Date endDate = sdf.parse(endTime); long diff = endDate.getTime() - startDate.getTime(); // 计ç®ä¸¤ä¸ªæ¥æä¹é´çæ¯«ç§æ° BigDecimal totalHours = new BigDecimal(diff) .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); //æ¶é´æ®µæ»å¯å©ç¨æ¶é´ String totalAvailableTime = String.valueOf(totalHours); //æ¥è¯¢ææè®¾å¤ List<Equipment> equipmentList = equipmentService.lambdaQuery().eq(Equipment::getDelFlag, CommonConstant.DEL_FLAG_0).list(); for(Equipment equipment : equipmentList){ FaultIntervalTime faultIntervalTime = new FaultIntervalTime(); faultIntervalTime.setEquipmentId(equipment.getId()); faultIntervalTime.setEquipmentNum(equipment.getNum()); faultIntervalTime.setEquipmentName(equipment.getName()); faultIntervalTime.setEquipmentModel(equipment.getModel()); SysDepart depart = departService.lambdaQuery().eq(SysDepart::getId,equipment.getUseId()).eq(SysDepart::getDelFlag,CommonConstant.DEL_FLAG_0).one(); if(depart != null){ faultIntervalTime.setUserDepart(depart.getDepartName()); } //æ¥è¯¢è®¾å¤æ¯å¦ææ¥ä¿®å List<EquipmentReportRepair> equipmentReportRepairList = equipmentReportRepairService.lambdaQuery().eq(EquipmentReportRepair::getEquipmentId,equipment.getId()) .eq(EquipmentReportRepair::getDelFlag,CommonConstant.DEL_FLAG_0).list(); if(CollectionUtils.isNotEmpty(equipmentReportRepairList)){ BigDecimal equipmentFaultTime = new BigDecimal("0"); BigDecimal equipmentRepairTime = new BigDecimal("0"); int count = 0; //ä¸ãæ¥è¯¢æ éæ¶é´ for(EquipmentReportRepair equipmentReportRepair : equipmentReportRepairList){ //1ã妿æ¥ä¿®æ¶é´ä¸ä¸ºç©ºï¼å¹¶ä¸å¨æ¥è¯¢æ¶é´æ®µå if(equipmentReportRepair.getFaultTime() != null && equipmentReportRepair.getFaultTime().compareTo(endDate) < 0 && equipmentReportRepair.getFaultTime().compareTo(startDate) > 0){ //2ãéªæ¶æ¶é´å¨æ¥è¯¢æ¶é´æ®µå if(equipmentReportRepair.getAcceptTime() != null && equipmentReportRepair.getAcceptTime().compareTo(endDate) < 0){ equipmentFaultTime = equipmentFaultTime.add(new BigDecimal(equipmentReportRepair.getFaultHour())); count++; //3ãéªæ¶æ¶é´å¤§äºæ¥è¯¢ç»ææ¶é´ }else { long diff2 = endDate.getTime() - equipmentReportRepair.getFaultTime().getTime(); BigDecimal faultTime1 = new BigDecimal(diff2) .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); equipmentFaultTime = equipmentFaultTime.add(faultTime1); count++; } //4ãæ¥ä¿®æ¶é´å¨æ¥è¯¢å¼å§æ¶é´ä¹å }else if(equipmentReportRepair.getFaultTime().compareTo(startDate) < 0 ){ //5ãéªæ¶æ¶é´å¨æ¥è¯¢æ¶é´æ®µå if(equipmentReportRepair.getAcceptTime() != null && equipmentReportRepair.getAcceptTime().compareTo(endDate) < 0){ long diff2 = equipmentReportRepair.getAcceptTime().getTime() - startDate.getTime(); BigDecimal faultTime1 = new BigDecimal(diff2) .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); equipmentFaultTime = equipmentFaultTime.add(faultTime1); count++; //6ãéªæ¶æ¶é´ä¸ºç©ºæéªæ¶æ¶é´å¨æ¥è¯¢ç»ææ¶é´ä¹å }else { long diff2 = endDate.getTime() - startDate.getTime(); BigDecimal faultTime1 = new BigDecimal(diff2) .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); equipmentFaultTime = equipmentFaultTime.add(faultTime1); count++; } } //äºãæ¥è¯¢ä¿®å¤æ¶é´ //æ¥è¯¢æ¥ä¿®åæ¯å¦å·²é¢åå¹¶å¼å·¥ List<RepairOrder> repairOrderList = repairOrderService.lambdaQuery().eq(RepairOrder::getReportRepairId,equipmentReportRepair.getId()) .eq(RepairOrder::getDelFlag,CommonConstant.DEL_FLAG_0).list(); if(CollectionUtils.isNotEmpty(repairOrderList)){ //1ãå¼å·¥æ¶é´å¨æ¥è¯¢æ¶é´æ®µå if(repairOrderList.get(0).getActualStartTime() != null && repairOrderList.get(0).getActualStartTime().compareTo(endDate) < 0 && repairOrderList.get(0).getActualStartTime().compareTo(startDate) > 0 ){ //2ãå®å·¥æ¶é´å¨æ¥è¯¢æ¶é´æ®µå if(repairOrderList.get(0).getActualEndTime() != null && repairOrderList.get(0).getActualEndTime().compareTo(endDate) < 0){ equipmentRepairTime = equipmentRepairTime.add(repairOrderList.get(0).getActualHour()); //3ãå®å·¥æ¶é´å¤§äºæ¥è¯¢ç»ææ¶é´ }else { long diff1 = endDate.getTime() - repairOrderList.get(0).getActualStartTime().getTime(); BigDecimal repairTime1 = new BigDecimal(diff1) .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); equipmentRepairTime = equipmentRepairTime.add(repairTime1); } //4ãå¼å·¥æ¶é´å¨æ¥è¯¢å¼å§æ¶é´ä¹å }else if(repairOrderList.get(0).getActualStartTime() != null && repairOrderList.get(0).getActualStartTime().compareTo(startDate) < 0 ){ //5ãå®å·¥æ¶é´å¨æ¥è¯¢æ¶é´æ®µå if(repairOrderList.get(0).getActualEndTime() != null && repairOrderList.get(0).getActualEndTime().compareTo(endDate) < 0){ long diff1 = repairOrderList.get(0).getActualEndTime().getTime() - startDate.getTime(); BigDecimal repairTime1 = new BigDecimal(diff1) .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); equipmentRepairTime = equipmentRepairTime.add(repairTime1); //6ãå®å·¥æ¶é´ä¸ºç©ºæå®å·¥æ¶é´å¨æ¥è¯¢ç»ææ¶é´ä¹å }else{ long diff1 = endDate.getTime() - startDate.getTime(); BigDecimal repairTime1 = new BigDecimal(diff1) .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); equipmentRepairTime = equipmentRepairTime.add(repairTime1); } } } } //è®¾å¤æ éæ¶é´ String faultTime = String.valueOf(equipmentFaultTime); //设å¤ç»´ä¿®æ¶é¿ String repairTime = String.valueOf(equipmentRepairTime); //è®¾å¤æ æ éæ¶é´ String noFaultTime = String.valueOf(totalHours.subtract(equipmentFaultTime)); //设å¤å¹³åæ éé´éæ¶é´ String averageFaultIntervalTime = String.valueOf(totalHours.subtract(equipmentFaultTime).divide(new BigDecimal(equipmentReportRepairList.size()), 2, BigDecimal.ROUND_HALF_EVEN)); //设å¤å¹³åä¿®å¤æ¶é´ String averageRepairTime = String.valueOf(equipmentRepairTime.divide(new BigDecimal(equipmentReportRepairList.size()), 2, BigDecimal.ROUND_HALF_EVEN)); faultIntervalTime.setTotalAvailableTime(totalAvailableTime); faultIntervalTime.setFaultTime(faultTime); faultIntervalTime.setRepairTime(repairTime); //è®¾å¤æ 鿬¡æ° faultIntervalTime.setFaultNumber(String.valueOf(count)); faultIntervalTime.setAverageFaultIntervalTime(averageFaultIntervalTime); faultIntervalTime.setAverageRepairTime(averageRepairTime); faultIntervalTime.setNoFaultTime(noFaultTime); faultIntervalTimeList.add(faultIntervalTime); }else { faultIntervalTime.setTotalAvailableTime(totalAvailableTime); faultIntervalTime.setFaultTime("0"); faultIntervalTime.setRepairTime("0"); faultIntervalTime.setFaultNumber("0"); faultIntervalTime.setAverageRepairTime("0"); faultIntervalTime.setAverageFaultIntervalTime(totalAvailableTime); faultIntervalTime.setNoFaultTime(totalAvailableTime); faultIntervalTimeList.add(faultIntervalTime); } } return faultIntervalTimeList; } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/RepairOrderServiceImpl.java
@@ -1,14 +1,21 @@ package org.jeecg.modules.eam.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.common.constant.CommonConstant; import org.jeecg.modules.eam.entity.Equipment; import org.jeecg.modules.eam.entity.EquipmentReportRepair; import org.jeecg.modules.eam.entity.RepairOrder; import org.jeecg.modules.eam.entity.RepairOrderDetail; import org.jeecg.modules.eam.mapper.*; import org.jeecg.modules.eam.service.IEamEquipmentService; import org.jeecg.modules.eam.service.IEquipmentReportRepairService; import org.jeecg.modules.eam.service.IRepairOrderDetailService; import org.jeecg.modules.eam.service.IRepairOrderService; import org.jeecg.modules.eam.vo.EquipmentAvailabilityVo; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.mapper.SysUserMapper; import org.springframework.beans.factory.annotation.Autowired; @@ -16,6 +23,9 @@ import org.springframework.transaction.annotation.Transactional; import java.io.Serializable; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** @@ -45,6 +55,10 @@ private EquipmentDocumentMapper equipmentDocumentMapper; @Autowired private SysUserMapper sysUserMapper; @Autowired private IEamEquipmentService equipmentService; @Autowired private IEquipmentReportRepairService equipmentReportRepairService; @@ -115,5 +129,176 @@ return super.baseMapper.getMaterialSpareList(pageData,num,status); } @Override public List<EquipmentAvailabilityVo> equipmentAvailability(Map<String, String> query) throws ParseException { List<EquipmentAvailabilityVo> equipmentAvailabilityVoList = new ArrayList<>(); String yearStr = query.get("year"); String startTime1 = ""; String endTime1 = ""; String startTime2 = ""; String endTime2 = ""; String startTime3 = ""; String endTime3 = ""; String startTime4 = ""; String endTime4 = ""; String startTime5 = ""; String endTime5 = ""; String startTime6 = ""; String endTime6 = ""; String startTime7 = ""; String endTime7 = ""; String startTime8 = ""; String endTime8 = ""; String startTime9 = ""; String endTime9 = ""; String startTime10 = ""; String endTime10 = ""; String startTime11 = ""; String endTime11 = ""; String startTime12 = ""; String endTime12 = ""; if(StringUtils.isBlank(yearStr)){ return equipmentAvailabilityVoList; }else { startTime1 = yearStr+"-01-01 00:00:00"; endTime1 = yearStr+"-01-31 23:59:59"; startTime2 = yearStr+"-02-01 00:00:00"; endTime2 = yearStr+"-02-31 23:59:59"; startTime3 = yearStr+"-03-01 00:00:00"; endTime3 = yearStr+"-03-31 23:59:59"; startTime4 = yearStr+"-04-01 00:00:00"; endTime4 = yearStr+"-04-30 23:59:59"; startTime5 = yearStr+"-05-01 00:00:00"; endTime5 = yearStr+"-05-31 23:59:59"; startTime6 = yearStr+"-06-01 00:00:00"; endTime6 = yearStr+"-06-30 23:59:59"; startTime7 = yearStr+"-07-01 00:00:00"; endTime7 = yearStr+"-07-31 23:59:59"; startTime8 = yearStr+"-08-01 00:00:00"; endTime8 = yearStr+"-08-31 23:59:59"; startTime9 = yearStr+"-09-01 00:00:00"; endTime9 = yearStr+"-09-30 23:59:59"; startTime10 = yearStr+"-10-01 00:00:00"; endTime10 = yearStr+"-10-31 23:59:59"; startTime11 = yearStr+"-11-01 00:00:00"; endTime11 = yearStr+"-11-30 23:59:59"; startTime12 = yearStr+"-12-01 00:00:00"; endTime12 = yearStr+"-12-31 23:59:59"; } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date startDate1 = sdf.parse(startTime1); Date endDate1 = sdf.parse(endTime1); Date startDate2 = sdf.parse(startTime2); Date endDate2 = sdf.parse(endTime2); Date startDate3 = sdf.parse(startTime3); Date endDate3 = sdf.parse(endTime3); Date startDate4 = sdf.parse(startTime4); Date endDate4 = sdf.parse(endTime4); Date startDate5 = sdf.parse(startTime5); Date endDate5 = sdf.parse(endTime5); Date startDate6 = sdf.parse(startTime6); Date endDate6 = sdf.parse(endTime6); Date startDate7 = sdf.parse(startTime7); Date endDate7 = sdf.parse(endTime7); Date startDate8 = sdf.parse(startTime8); Date endDate8 = sdf.parse(endTime8); Date startDate9 = sdf.parse(startTime9); Date endDate9 = sdf.parse(endTime9); Date startDate10 = sdf.parse(startTime10); Date endDate10 = sdf.parse(endTime10); Date startDate11 = sdf.parse(startTime11); Date endDate11 = sdf.parse(endTime11); Date startDate12 = sdf.parse(startTime12); Date endDate12 = sdf.parse(endTime12); EquipmentAvailabilityVo equipmentAvailabilityVo1 = this.getFaultTime(startDate1,endDate1,"1"); EquipmentAvailabilityVo equipmentAvailabilityVo2 = this.getFaultTime(startDate2,endDate2,"2"); EquipmentAvailabilityVo equipmentAvailabilityVo3 = this.getFaultTime(startDate3,endDate3,"3"); EquipmentAvailabilityVo equipmentAvailabilityVo4 = this.getFaultTime(startDate4,endDate4,"4"); EquipmentAvailabilityVo equipmentAvailabilityVo5 = this.getFaultTime(startDate5,endDate5,"5"); EquipmentAvailabilityVo equipmentAvailabilityVo6 = this.getFaultTime(startDate6,endDate6,"6"); EquipmentAvailabilityVo equipmentAvailabilityVo7 = this.getFaultTime(startDate7,endDate7,"7"); EquipmentAvailabilityVo equipmentAvailabilityVo8 = this.getFaultTime(startDate8,endDate8,"8"); EquipmentAvailabilityVo equipmentAvailabilityVo9 = this.getFaultTime(startDate9,endDate9,"9"); EquipmentAvailabilityVo equipmentAvailabilityVo10 = this.getFaultTime(startDate10,endDate10,"10"); EquipmentAvailabilityVo equipmentAvailabilityVo11 = this.getFaultTime(startDate11,endDate11,"11"); EquipmentAvailabilityVo equipmentAvailabilityVo12 = this.getFaultTime(startDate12,endDate12,"12"); equipmentAvailabilityVoList.add(equipmentAvailabilityVo1); equipmentAvailabilityVoList.add(equipmentAvailabilityVo2); equipmentAvailabilityVoList.add(equipmentAvailabilityVo3); equipmentAvailabilityVoList.add(equipmentAvailabilityVo4); equipmentAvailabilityVoList.add(equipmentAvailabilityVo5); equipmentAvailabilityVoList.add(equipmentAvailabilityVo6); equipmentAvailabilityVoList.add(equipmentAvailabilityVo7); equipmentAvailabilityVoList.add(equipmentAvailabilityVo8); equipmentAvailabilityVoList.add(equipmentAvailabilityVo9); equipmentAvailabilityVoList.add(equipmentAvailabilityVo10); equipmentAvailabilityVoList.add(equipmentAvailabilityVo11); equipmentAvailabilityVoList.add(equipmentAvailabilityVo12); return equipmentAvailabilityVoList; } public EquipmentAvailabilityVo getFaultTime(Date startDate,Date endDate,String month) throws ParseException { //æ¥è¯¢A类设å¤å°æ°ï¼æªæ¢å°1æåº List<Equipment> equipmentList = equipmentService.lambdaQuery().eq(Equipment::getEquipmentImportanceId,"A").eq(Equipment::getDelFlag, CommonConstant.DEL_FLAG_0).lt(Equipment::getAcceptanceCheckDate,endDate).list(); Integer countA = equipmentList.size(); EquipmentAvailabilityVo equipmentAvailabilityVo = new EquipmentAvailabilityVo(); BigDecimal equipmentFaultTime = new BigDecimal("0"); int count = 0; //æ¥è¯¢ä¸æä»½æ éæ¶é´ for(Equipment equipment : equipmentList){ //æ¥è¯¢è®¾å¤æ¯å¦ææ¥ä¿®å List<EquipmentReportRepair> equipmentReportRepairList = equipmentReportRepairService.lambdaQuery().eq(EquipmentReportRepair::getEquipmentId,equipment.getId()) .eq(EquipmentReportRepair::getDelFlag,CommonConstant.DEL_FLAG_0).list(); if(CollectionUtils.isNotEmpty(equipmentReportRepairList)){ //ä¸ãæ¥è¯¢æ éæ¶é´ for(EquipmentReportRepair equipmentReportRepair : equipmentReportRepairList){ //1ã妿æ¥ä¿®æ¶é´ä¸ä¸ºç©ºï¼å¹¶ä¸å¨æ¥è¯¢æ¶é´æ®µå if(equipmentReportRepair.getFaultTime() != null && equipmentReportRepair.getFaultTime().compareTo(endDate) < 0 && equipmentReportRepair.getFaultTime().compareTo(startDate) > 0){ //2ãéªæ¶æ¶é´å¨æ¥è¯¢æ¶é´æ®µå if(equipmentReportRepair.getAcceptTime() != null && equipmentReportRepair.getAcceptTime().compareTo(endDate) < 0){ equipmentFaultTime = equipmentFaultTime.add(new BigDecimal(equipmentReportRepair.getFaultHour())); count++; //3ãéªæ¶æ¶é´å¤§äºæ¥è¯¢ç»ææ¶é´ }else { long diff2 = endDate.getTime() - equipmentReportRepair.getFaultTime().getTime(); BigDecimal faultTime1 = new BigDecimal(diff2) .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); equipmentFaultTime = equipmentFaultTime.add(faultTime1); count++; } //4ãæ¥ä¿®æ¶é´å¨æ¥è¯¢å¼å§æ¶é´ä¹å }else if(equipmentReportRepair.getFaultTime().compareTo(startDate) < 0 ){ //5ãéªæ¶æ¶é´å¨æ¥è¯¢æ¶é´æ®µå if(equipmentReportRepair.getAcceptTime() != null && equipmentReportRepair.getAcceptTime().compareTo(endDate) < 0){ long diff2 = equipmentReportRepair.getAcceptTime().getTime() - startDate.getTime(); BigDecimal faultTime1 = new BigDecimal(diff2) .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); equipmentFaultTime = equipmentFaultTime.add(faultTime1); count++; //6ãéªæ¶æ¶é´ä¸ºç©ºæéªæ¶æ¶é´å¨æ¥è¯¢ç»ææ¶é´ä¹å }else { long diff2 = endDate.getTime() - startDate.getTime(); BigDecimal faultTime1 = new BigDecimal(diff2) .divide(new BigDecimal(60 * 60 * 1000), 2, BigDecimal.ROUND_HALF_EVEN); equipmentFaultTime = equipmentFaultTime.add(faultTime1); count++; } } } equipmentAvailabilityVo.setMonth(month); equipmentAvailabilityVo.setCountA(countA); equipmentAvailabilityVo.setFaultNumber(String.valueOf(count)); equipmentAvailabilityVo.setFaultDuration(equipmentFaultTime); }else { equipmentAvailabilityVo.setMonth(month); equipmentAvailabilityVo.setCountA(countA); equipmentAvailabilityVo.setFaultNumber("0"); equipmentAvailabilityVo.setFaultDuration(new BigDecimal("0")); equipmentAvailabilityVo.setAvailability("100"); } } return equipmentAvailabilityVo; } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/EquipmentAvailabilityVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,38 @@ package org.jeecg.modules.eam.vo; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.jeecg.common.aspect.annotation.Dict; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.base.entity.JeecgEntity; import org.jeecg.modules.eam.entity.EquipmentUnsealDetail; import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecgframework.poi.excel.annotation.ExcelCollection; import java.math.BigDecimal; import java.util.List; /** * @Description: 设å¤å®å¥½ç * @Author: cj * @Date: 2023-11-16 * @Version: V1.0 */ @Data public class EquipmentAvailabilityVo { /**æä»½*/ private String month; /**A类设å¤å°æ°*/ private Integer countA; /**æ éæ¶é´*/ private BigDecimal faultDuration; /**æ 鿻尿¬¡*/ private String faultNumber; /**A类设å¤å®å¥½ç*/ private String availability; }