package org.jeecg.modules.eam.service.impl;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.shiro.SecurityUtils;
|
import org.jeecg.common.api.vo.FileUploadResult;
|
import org.jeecg.common.constant.CommonConstant;
|
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog;
|
import org.jeecg.modules.eam.constant.*;
|
import org.jeecg.modules.eam.entity.*;
|
import org.jeecg.modules.eam.mapper.EamReportRepairMapper;
|
import org.jeecg.modules.eam.request.EamReportRepairQuery;
|
import org.jeecg.modules.eam.service.IEamEquipmentExtendService;
|
import org.jeecg.modules.eam.service.IEamEquipmentFaultReasonService;
|
import org.jeecg.modules.eam.service.IEamReportRepairService;
|
import org.jeecg.modules.eam.vo.EquipmentRepairListVO;
|
import org.jeecg.modules.eam.vo.EquipmentRepairStatistics;
|
import org.jeecg.modules.eam.vo.EquipmentRepairStatusStatistics;
|
import org.jeecg.modules.eam.vo.FaultTypeStatisticsVO;
|
import org.jeecg.modules.system.service.IMdcProductionService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDate;
|
import java.util.*;
|
|
/**
|
* @Description: 故障报修
|
* @Author: Lius
|
* @Date: 2025-04-01
|
*/
|
@Service
|
public class EamReportRepairServiceImpl extends ServiceImpl<EamReportRepairMapper, EamReportRepair> implements IEamReportRepairService {
|
|
@Resource
|
private IEamEquipmentExtendService eamEquipmentExtendService;
|
@Autowired
|
private IMdcProductionService mdcProductionService;
|
@Autowired
|
private IEamEquipmentFaultReasonService eamEquipmentFaultReasonService;
|
|
/**
|
* 分页列表
|
*
|
* @param page
|
* @param eamReportRepairQuery
|
* @return
|
*/
|
@Override
|
public IPage<EamReportRepair> pageList(Page<EamReportRepair> page, EamReportRepairQuery eamReportRepairQuery) {
|
//用户数据权限
|
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
if (sysUser == null) {
|
return page;
|
}
|
List<String> equipmentIds = new ArrayList<>();
|
if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) {
|
//选择了设备,根据设备id过滤设备
|
equipmentIds = Arrays.asList(sysUser.getEquipmentIds().split(","));
|
}
|
return this.baseMapper.pageList(page, eamReportRepairQuery, sysUser.getId(), equipmentIds);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
@EquipmentHistoryLog(operationTag = EquipmentOperationTagEnum.REPORT_REPAIR, businessTable = "eam_report_repair")
|
public EamReportRepair reportRepairFromMaintenance(String equipmentId, String reportUser, List<EamWeekMaintenanceOrderDetail> detailList) {
|
StringBuilder sb = new StringBuilder();
|
detailList.forEach(detail -> {
|
sb.append(detail.getItemCode()).append("、");
|
sb.append(detail.getExceptionDescription()).append(";");
|
});
|
EamEquipmentFaultReason reason = eamEquipmentFaultReasonService.selectByFaultCode(BusinessCodeConst.EFR20250009);
|
EamReportRepair entity = new EamReportRepair();
|
entity.setEquipmentId(equipmentId);
|
entity.setCreateBy(reportUser);
|
entity.setFaultStartTime(new Date());
|
entity.setBreakdownFlag(CommonConstant.DEFAULT_0);
|
entity.setDelFlag(CommonConstant.DEL_FLAG_0);
|
if(reason == null){
|
entity.setFaultName("周保执行报修处理");
|
entity.setFaultDescription(sb.toString());
|
}else {
|
entity.setFaultName(reason.getFaultName());
|
entity.setFaultType(reason.getFaultCategory());
|
}
|
entity.setReportStatus(ReportRepairEnum.WAIT_REPAIR.name());
|
this.baseMapper.insert(entity);
|
//更新设备维修状态
|
eamEquipmentExtendService.updateEquipmentRepairStatus(entity.getEquipmentId(), EquipmentRepairStatus.WAIT_REPAIR.name());
|
return entity;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
@EquipmentHistoryLog(operationTag = EquipmentOperationTagEnum.REPORT_REPAIR, businessTable = "eam_report_repair")
|
public EamReportRepair reportRepairFromInspection(String equipmentId, String reportUser, List<EamInspectionOrderDetail> detailList) {
|
StringBuilder sb = new StringBuilder();
|
detailList.forEach(detail -> {
|
sb.append(detail.getItemCode()).append("、");
|
sb.append(detail.getExceptionDescription()).append(";");
|
});
|
EamEquipmentFaultReason reason = eamEquipmentFaultReasonService.selectByFaultCode(BusinessCodeConst.EFR20250010);
|
EamReportRepair entity = new EamReportRepair();
|
entity.setEquipmentId(equipmentId);
|
entity.setCreateBy(reportUser);
|
entity.setFaultStartTime(new Date());
|
entity.setBreakdownFlag(CommonConstant.DEFAULT_0);
|
entity.setDelFlag(CommonConstant.DEL_FLAG_0);
|
if(reason == null){
|
entity.setFaultName("点检执行报修处理");
|
entity.setFaultDescription(sb.toString());
|
}else {
|
entity.setFaultName(reason.getFaultName());
|
entity.setFaultType(reason.getFaultCategory());
|
}
|
entity.setReportStatus(ReportRepairEnum.WAIT_REPAIR.name());
|
this.baseMapper.insert(entity);
|
//更新设备维修状态
|
eamEquipmentExtendService.updateEquipmentRepairStatus(entity.getEquipmentId(), EquipmentRepairStatus.WAIT_REPAIR.name());
|
return entity;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
@EquipmentHistoryLog(operationTag = EquipmentOperationTagEnum.REPORT_REPAIR, businessTable = "eam_report_repair")
|
public EamReportRepair add(EamReportRepair eamReportRepair) {
|
eamReportRepair.setReportStatus(ReportRepairEnum.WAIT_REPAIR.name());
|
eamReportRepair.setDelFlag(CommonConstant.DEL_FLAG_0);
|
// 附件处理
|
if (eamReportRepair.getImageFilesResult() != null) {
|
List<FileUploadResult> imageFilesResult = eamReportRepair.getImageFilesResult();
|
ObjectMapper mapper = new ObjectMapper();
|
try {
|
String referenceFile = mapper.writeValueAsString(imageFilesResult);
|
eamReportRepair.setImageFiles(referenceFile);
|
} catch (JsonProcessingException e) {
|
return null;
|
}
|
}
|
this.baseMapper.insert(eamReportRepair);
|
//更新设备维修状态
|
eamEquipmentExtendService.updateEquipmentRepairStatus(eamReportRepair.getEquipmentId(), EquipmentRepairStatus.WAIT_REPAIR.name());
|
return eamReportRepair;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public boolean edit(EamReportRepair eamReportRepair) {
|
// 附件处理
|
if (eamReportRepair.getImageFilesResult() != null) {
|
List<FileUploadResult> imageFilesResult = eamReportRepair.getImageFilesResult();
|
ObjectMapper mapper = new ObjectMapper();
|
try {
|
String referenceFile = mapper.writeValueAsString(imageFilesResult);
|
eamReportRepair.setImageFiles(referenceFile);
|
} catch (JsonProcessingException e) {
|
return false;
|
}
|
} else {
|
eamReportRepair.setImageFiles(null);
|
}
|
this.baseMapper.updateById(eamReportRepair);
|
return true;
|
}
|
|
@Override
|
public List<EquipmentRepairStatistics> equipmentRepairStatistics(String productionId, LocalDate firstOfMonth, LocalDate today) {
|
if (StringUtils.isNotBlank(productionId)) {
|
//车间编码不为空
|
List<String> productIds = mdcProductionService.recursionChildren(productionId);
|
if (CollectionUtil.isEmpty(productIds)) {
|
return Collections.emptyList();
|
}
|
List<EquipmentRepairStatistics> list = this.baseMapper.equipmentRepairStatistics(productIds, firstOfMonth.toString(), today.plusDays(1).toString());
|
if (CollectionUtil.isEmpty(list)) {
|
return Collections.emptyList();
|
}
|
return list;
|
}
|
List<EquipmentRepairStatistics> list = this.baseMapper.equipmentRepairStatistics(null, firstOfMonth.toString(), today.plusDays(1).toString());
|
if (CollectionUtil.isEmpty(list)) {
|
return Collections.emptyList();
|
}
|
return list;
|
}
|
|
@Override
|
public EquipmentRepairStatusStatistics repairStatusStatistics() {
|
return this.baseMapper.repairStatusStatistics();
|
}
|
|
@Override
|
public List<EquipmentRepairListVO> repairList() {
|
return this.baseMapper.repairList();
|
}
|
|
@Override
|
public List<FaultTypeStatisticsVO> faultTypeStatistics(String start, String end) {
|
return this.baseMapper.faultTypeStatistics(start, end);
|
}
|
}
|