From eadaad85fc5fed59c34a0145c2f99a1022581458 Mon Sep 17 00:00:00 2001
From: cuijian <cuijian@xalxzn.com>
Date: 星期二, 21 十一月 2023 20:57:25 +0800
Subject: [PATCH] 生产时间间隔报表逻辑、设备完好率报表逻辑

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/RepairOrderServiceImpl.java |  185 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 185 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/RepairOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/RepairOrderServiceImpl.java
index 07dd294..aebfa46 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/RepairOrderServiceImpl.java
+++ b/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;
+	}
+
 
 }

--
Gitblit v1.9.3