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;
|
import org.springframework.stereotype.Service;
|
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.*;
|
|
/**
|
* @Description: 维修工单
|
* @Author: jeecg-boot
|
* @Date: 2023-04-25
|
* @Version: V1.0
|
*/
|
@Service
|
public class RepairOrderServiceImpl extends ServiceImpl<RepairOrderMapper, RepairOrder> implements IRepairOrderService {
|
|
@Autowired
|
private RepairOrderMapper repairOrderMapper;
|
@Autowired
|
private RepairOrderDetailMapper repairOrderDetailMapper;
|
@Autowired
|
private RepairOrderRiskPreventionMapper repairOrderRiskPreventionMapper;
|
@Autowired
|
private RepairOrderFaultAnalysisMapper repairOrderFaultAnalysisMapper;
|
@Autowired
|
private RepairOrderPlanMaterialMapper repairOrderPlanMaterialMapper;
|
@Autowired
|
private RepairOrderActualMaterialMapper repairOrderActualMaterialMapper;
|
@Autowired
|
private RepairOrderActualWorkHoursMapper repairOrderActualWorkHoursMapper;
|
@Autowired
|
private EquipmentDocumentMapper equipmentDocumentMapper;
|
@Autowired
|
private SysUserMapper sysUserMapper;
|
@Autowired
|
private IEamEquipmentService equipmentService;
|
@Autowired
|
private IEquipmentReportRepairService equipmentReportRepairService;
|
|
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void delMain(String id) {
|
repairOrderDetailMapper.deleteByMainId(id);
|
repairOrderRiskPreventionMapper.deleteByMainId(id);
|
repairOrderFaultAnalysisMapper.deleteByMainId(id);
|
repairOrderPlanMaterialMapper.deleteByMainId(id);
|
repairOrderActualMaterialMapper.deleteByMainId(id);
|
repairOrderActualWorkHoursMapper.deleteByMainId(id);
|
equipmentDocumentMapper.deleteByMainId(id);
|
repairOrderMapper.deleteById(id);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void delBatchMain(Collection<? extends Serializable> idList) {
|
for(Serializable id:idList) {
|
repairOrderDetailMapper.deleteByMainId(id.toString());
|
repairOrderRiskPreventionMapper.deleteByMainId(id.toString());
|
repairOrderFaultAnalysisMapper.deleteByMainId(id.toString());
|
repairOrderPlanMaterialMapper.deleteByMainId(id.toString());
|
repairOrderActualMaterialMapper.deleteByMainId(id.toString());
|
repairOrderActualWorkHoursMapper.deleteByMainId(id.toString());
|
equipmentDocumentMapper.deleteByMainId(id.toString());
|
repairOrderMapper.deleteById(id);
|
}
|
}
|
|
@Override
|
public Page<RepairOrder> getRepairOrderList(Page<RepairOrder> page, RepairOrder repairOrder) {
|
if(StringUtils.isNotBlank(repairOrder.getUserId())){
|
SysUser sysUser = sysUserMapper.selectById(repairOrder.getUserId());
|
repairOrder.setTeamId(sysUser.getTeamId());
|
}else{
|
repairOrder.setTeamId("");
|
}
|
List<String> equipNums = new ArrayList<>();
|
if(StringUtils.isNotBlank(repairOrder.getNums())){
|
equipNums = Arrays.asList(repairOrder.getNums().trim().split(","));
|
}
|
return page.setRecords(baseMapper.getRepairOrderList(page,repairOrder.getId(),repairOrder.getNum(),repairOrder.getEquipmentNum(),repairOrder.getEquipmentName(),repairOrder.getStatus(),repairOrder.getRepairOrderType(),repairOrder.getEquipmentCategoryId(),repairOrder.getFactoryModelId(),repairOrder.getSpecificEquipment(),repairOrder.getTeamId(),equipNums,repairOrder.getRepairOrderUda1()));
|
}
|
|
@Override
|
public IPage<Map<String, Object>> getUserTeam(Integer pageNo, Integer pageSize, Map<String, Object> params) {
|
IPage<Map> pageData = new Page<Map>(pageNo, pageSize);
|
String realname = null;
|
if (params.get("realname")!=null){
|
realname = String.valueOf(params.get("realname"));
|
}
|
return super.baseMapper.getUserTeam(pageData,realname);
|
}
|
|
@Override
|
public IPage<Map<String, Object>> getMaterialSpareList(Integer pageNo, Integer pageSize, Map<String, Object> params) {
|
IPage<Map> pageData = new Page<Map>(pageNo, pageSize);
|
String num = null;
|
String status = null;
|
if (params.get("num")!=null){
|
num = String.valueOf(params.get("num"));
|
}
|
if (params.get("status")!=null){
|
status = String.valueOf(params.get("status"));
|
}
|
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;
|
}
|
|
|
}
|