package org.jeecg.modules.eam.service.impl;
|
|
import cn.hutool.core.util.StrUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.shiro.SecurityUtils;
|
import org.jeecg.common.constant.CommonConstant;
|
import org.jeecg.common.constant.DataBaseConstant;
|
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecg.common.util.oConvertUtils;
|
import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog;
|
import org.jeecg.modules.eam.constant.*;
|
import org.jeecg.modules.eam.dto.EamReportRepairDto;
|
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.request.EamReportRepairRequest;
|
import org.jeecg.modules.eam.service.*;
|
import org.jeecg.modules.system.entity.BaseFactory;
|
import org.jeecg.modules.system.entity.BaseFactoryUser;
|
import org.jeecg.modules.system.entity.SysAnnouncementSend;
|
import org.jeecg.modules.system.service.IBaseFactoryService;
|
import org.jeecg.modules.system.service.IBaseFactoryUserService;
|
import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Lazy;
|
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.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* @Description: 故障报修
|
* @Author: Lius
|
* @Date: 2025-04-01
|
*/
|
@Service
|
public class EamReportRepairServiceImpl extends ServiceImpl<EamReportRepairMapper, EamReportRepair> implements IEamReportRepairService {
|
|
@Resource
|
private IEamEquipmentExtendService eamEquipmentExtendService;
|
|
@Autowired
|
private IBaseFactoryUserService baseFactoryUserService;
|
@Autowired
|
private IBaseFactoryService baseFactoryService;
|
@Autowired
|
private IEamReportProductHazardsService iEamReportProductHazardsService;
|
@Autowired
|
private IEamReportAccidentsRegisterService iEamReportAccidentsRegisterService;
|
@Autowired
|
@Lazy
|
private IEamRepairOrderService iEamRepairOrderService;
|
@Autowired
|
private ISysBusinessCodeRuleService businessCodeRuleService;
|
/**
|
* 分页列表
|
*
|
* @param page
|
* @param query
|
* @return
|
*/
|
@Override
|
public IPage<EamReportRepairDto> pageList(Page<EamReportRepairDto> page, EamReportRepairQuery query) {
|
QueryWrapper<EamReportRepairDto> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("wmo.del_flag", CommonConstant.DEL_FLAG_0);
|
//用户数据权限
|
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
if (sysUser == null) {
|
return page;
|
}
|
if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) {
|
//选择了设备,根据设备id过滤设备
|
List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(","));
|
queryWrapper.in("e.equipment_code", equipArr);
|
} else {
|
//没有选择设备,根据中心过滤设备
|
List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService.
|
list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId, sysUser.getId()));
|
if (!CollectionUtils.isEmpty(baseFactoryUserList)) {
|
Set<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet());
|
Set<String> factoryCode = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet());
|
queryWrapper.in("e.factory_org_code", factoryCode);
|
} else {
|
return page;
|
}
|
}
|
//查询条件过滤
|
if (query != null) {
|
if (StringUtils.isNotBlank(query.getEquipmentId())) {
|
queryWrapper.eq("wmo.equipment_id", query.getEquipmentId());
|
}
|
if (StringUtils.isNotBlank(query.getEquipmentCode())) {
|
queryWrapper.like("e.equipment_code", query.getEquipmentCode());
|
}
|
if (StringUtils.isNotBlank(query.getEquipmentName())) {
|
queryWrapper.like("e.equipment_name", query.getEquipmentName());
|
}
|
if (StringUtils.isNotBlank(query.getBreakdownFlag())) {
|
queryWrapper.eq("wmo.breakdown_flag", query.getBreakdownFlag());
|
}
|
if (StringUtils.isNotBlank(query.getReportStatus())) {
|
queryWrapper.eq("wmo.report_status", query.getReportStatus());
|
}
|
if (StringUtils.isNotBlank(query.getFaultDescription())) {
|
queryWrapper.like("wmo.fault_description", query.getFaultDescription());
|
}
|
if(query.getStartTime() != null && query.getEndTime() != null) {
|
queryWrapper.between("wmo.fault_start_time", query.getStartTime(), query.getEndTime());
|
}
|
//排序
|
if (StringUtils.isNotBlank(query.getColumn()) && StringUtils.isNotBlank(query.getOrder())) {
|
String column = query.getColumn();
|
if (column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) {
|
column = column.substring(0, column.lastIndexOf(CommonConstant.DICT_TEXT_SUFFIX));
|
}
|
if (DataBaseConstant.SQL_ASC.equalsIgnoreCase(query.getOrder())) {
|
queryWrapper.orderByAsc("wmo." + oConvertUtils.camelToUnderline(column));
|
} else {
|
queryWrapper.orderByDesc("wmo." + oConvertUtils.camelToUnderline(column));
|
}
|
} else {
|
queryWrapper.orderByDesc("wmo.create_time");
|
}
|
} else {
|
queryWrapper.orderByDesc("wmo.create_time");
|
}
|
|
return baseMapper.queryPageList(page, queryWrapper);
|
}
|
|
@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(";");
|
});
|
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);
|
entity.setFaultDescription(sb.toString());
|
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(";");
|
});
|
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);
|
entity.setFaultDescription(sb.toString());
|
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(EamReportRepairRequest eamReportRepairRequest) {
|
EamReportRepair eamReportRepair = new EamReportRepair();
|
BeanUtils.copyProperties(eamReportRepairRequest, eamReportRepair);
|
eamReportRepair.setDelFlag(CommonConstant.DEL_FLAG_0);
|
eamReportRepair.setReportStatus(EamRepairOrderRepairStatusEnum.PENDING_REPAIR.name());
|
this.baseMapper.insert(eamReportRepair);
|
if(StrUtil.isNotEmpty(eamReportRepair.getIsProcessed())&&("1").equals(eamReportRepair.getIsProcessed())){
|
//添加产品安全隐患确认
|
EamReportProductHazards eamReportProductHazards=new EamReportProductHazards();
|
eamReportProductHazards.setEquipmentId(eamReportRepair.getEquipmentId());
|
eamReportProductHazards.setReportId(eamReportRepair.getId());
|
iEamReportProductHazardsService.save(eamReportProductHazards);
|
}
|
if (StrUtil.isNotEmpty(eamReportRepair.getIsAccidentsRegister())&&("1").equals(eamReportRepair.getIsAccidentsRegister())) {
|
//添加设备事故登记表
|
EamReportAccidentsRegister eamReportAccidentsRegister = new EamReportAccidentsRegister();
|
BeanUtils.copyProperties(eamReportRepairRequest, eamReportAccidentsRegister);
|
eamReportAccidentsRegister.setReportId(eamReportRepair.getId());
|
eamReportAccidentsRegister.setDelFlag(Integer.valueOf(CommonConstant.DEFAULT_0));
|
eamReportAccidentsRegister.setRegisterStatus(EamReportAccidentsRegisterEnum.PENDING_SUBMIT.name());
|
iEamReportAccidentsRegisterService.save(eamReportAccidentsRegister);
|
}
|
//生成维修工单,可能会有领取操作
|
EamRepairOrder eamRepairOrder=new EamRepairOrder();
|
BeanUtils.copyProperties(eamReportRepairRequest, eamRepairOrder);
|
String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.REPAIR_ORDER_CODE_RULE);
|
eamRepairOrder.setRepairCode(codeSeq);
|
eamRepairOrder.setId(null);
|
eamRepairOrder.setDelFlag(CommonConstant.DEL_FLAG_0);
|
eamRepairOrder.setReportId(eamReportRepair.getId());
|
eamRepairOrder.setReportPerson(eamReportRepair.getCreateBy());
|
eamRepairOrder.setFaultPhenomenon(eamReportRepair.getFaultDescription());
|
eamRepairOrder.setRepairStatus(EamRepairOrderRepairStatusEnum.PENDING_REPAIR.name());
|
iEamRepairOrderService.save(eamRepairOrder);
|
//更新设备维修状态
|
eamEquipmentExtendService.updateEquipmentRepairStatus(eamReportRepair.getEquipmentId(), EquipmentRepairStatus.WAIT_REPAIR.name());
|
return eamReportRepair;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public boolean edit(EamReportRepairDto eamReportRepairDto) {
|
LambdaUpdateWrapper<EamReportRepair> updateWrapper = new UpdateWrapper().lambda();
|
EamReportRepair eamReportRepair=new EamReportRepair();
|
BeanUtils.copyProperties(eamReportRepairDto, eamReportRepair);
|
if(StrUtil.isNotEmpty(eamReportRepairDto.getIsProcessed())){
|
//todo 缺少对应流程判断
|
if ("0".equals(eamReportRepairDto.getIsProcessed())) {
|
updateWrapper.set(EamReportRepair::getBatchNumber,null);
|
updateWrapper.set(EamReportRepair::getProcessingPart,null);
|
updateWrapper.set(EamReportRepair::getQuantity, null);
|
}
|
//直接删除再添加
|
iEamReportProductHazardsService.remove(new QueryWrapper<EamReportProductHazards>().eq("report_id",eamReportRepairDto.getId())
|
.eq("equipment_id",eamReportRepairDto.getEquipmentId()));
|
//添加产品安全隐患确认
|
EamReportProductHazards eamReportProductHazards=new EamReportProductHazards();
|
eamReportProductHazards.setEquipmentId(eamReportRepairDto.getEquipmentId());
|
eamReportProductHazards.setReportId(eamReportRepairDto.getId());
|
eamReportProductHazards.setId(null);
|
iEamReportProductHazardsService.save(eamReportProductHazards);
|
}
|
if (StrUtil.isNotEmpty(eamReportRepairDto.getIsAccidentsRegister())) {
|
//todo 缺少对应流程判断
|
if ("0".equals(eamReportRepairDto.getIsAccidentsRegister())) {
|
updateWrapper.set(EamReportRepair::getScrapPartNumber,null);
|
updateWrapper.set(EamReportRepair::getScrapPartValue, null);
|
updateWrapper.set(EamReportRepair::getScrapPartQuantity, null);
|
}
|
//直接删除再添加
|
iEamReportAccidentsRegisterService.remove(new QueryWrapper<EamReportAccidentsRegister>()
|
.eq("report_id",eamReportRepairDto.getId()).eq("equipment_id",eamReportRepairDto.getEquipmentId()));
|
//添加设备事故登记表
|
EamReportAccidentsRegister eamReportAccidentsRegister = new EamReportAccidentsRegister();
|
BeanUtils.copyProperties(eamReportRepairDto, eamReportAccidentsRegister);
|
eamReportAccidentsRegister.setReportId(eamReportRepairDto.getId());
|
eamReportAccidentsRegister.setDelFlag(Integer.valueOf(CommonConstant.DEFAULT_0));
|
eamReportAccidentsRegister.setId(null);
|
iEamReportAccidentsRegisterService.save(eamReportAccidentsRegister);
|
}
|
updateWrapper.eq(EamReportRepair::getId,eamReportRepairDto.getId());
|
this.update(eamReportRepair,updateWrapper);
|
return true;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
@EquipmentHistoryLog(operationTag = EquipmentOperationTagEnum.REPORT_REPAIR, businessTable = "eam_report_repair")
|
public EamReportRepair reportRepairFromSecondMaintenance(String equipmentId, String reportUser, List<EamSecondMaintenanceOrderDetail> detailList) {
|
StringBuilder sb = new StringBuilder();
|
detailList.forEach(detail -> {
|
sb.append(detail.getItemCode()).append("、");
|
sb.append(detail.getExceptionDescription()).append(";");
|
});
|
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);
|
entity.setFaultDescription(sb.toString());
|
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 reportRepairFromThirdMaintenance(String equipmentId, String reportUser, List<EamThirdMaintenanceOrderDetail> detailList) {
|
StringBuilder sb = new StringBuilder();
|
detailList.forEach(detail -> {
|
sb.append(detail.getItemCode()).append("、");
|
sb.append(detail.getExceptionDescription()).append(";");
|
});
|
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);
|
entity.setFaultDescription(sb.toString());
|
this.baseMapper.insert(entity);
|
//更新设备维修状态
|
eamEquipmentExtendService.updateEquipmentRepairStatus(entity.getEquipmentId(), EquipmentRepairStatus.WAIT_REPAIR.name());
|
return entity;
|
}
|
}
|