package org.jeecg.modules.eam.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.jeecg.common.api.vo.FileUploadResult; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum; import org.jeecg.modules.eam.entity.EamMaintenanceStandard; import org.jeecg.modules.eam.entity.EamMaintenanceStandardDetail; import org.jeecg.modules.eam.mapper.EamMaintenanceStandardMapper; import org.jeecg.modules.eam.request.EamMaintenanceStandardRequest; import org.jeecg.modules.eam.service.IEamMaintenanceStandardDetailService; import org.jeecg.modules.eam.service.IEamMaintenanceStandardService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * @Description: 保养标准 * @Author: jeecg-boot * @Date: 2025-03-26 * @Version: V1.0 */ @Service public class EamMaintenanceStandardServiceImpl extends ServiceImpl implements IEamMaintenanceStandardService { @Resource private EamMaintenanceStandardMapper eamMaintenanceStandardMapper; @Autowired private IEamMaintenanceStandardDetailService eamMaintenanceStandardDetailService; @Override @Transactional(rollbackFor = Exception.class) public boolean addMaintenanceStandard(EamMaintenanceStandardRequest standardRequest) { EamMaintenanceStandard entity = new EamMaintenanceStandard(); entity.setStandardCode(standardRequest.getStandardCode()); entity.setStandardName(standardRequest.getStandardName()); entity.setMaintenanceCategory(standardRequest.getMaintenanceCategory()); entity.setMaintenancePeriod(standardRequest.getMaintenancePeriod()); entity.setInitialDate(standardRequest.getInitialDate()); entity.setFileCode(standardRequest.getFileCode()); entity.setStandardStatus(MaintenanceStandardStatusEnum.NORMAL.name()); //版本递增 entity.setStandardVersion(CommonConstant.OPERATE_TYPE_1); //设备处理 entity.setEquipmentId(standardRequest.getEquipmentId()); //删除标记 entity.setDelFlag(CommonConstant.DEL_FLAG_0); //重复性校验 EamMaintenanceStandard exist = checkDuplicate(entity.getEquipmentId(), entity.getMaintenanceCategory()); if(exist != null){ throw new JeecgBootException("设备标准已存在,不能重复添加!"); } //处理附件 if(CollectionUtil.isNotEmpty(standardRequest.getFileList())) { FileUploadResult fileUploadResult = standardRequest.getFileList().get(0); ObjectMapper mapper = new ObjectMapper(); try { String referenceFile = mapper.writeValueAsString(fileUploadResult); entity.setReferenceFile(referenceFile); } catch (JsonProcessingException e) { log.error("JSON转换失败:" + e.getMessage(), e); } } eamMaintenanceStandardMapper.insert(entity); //处理明细数据 if(CollectionUtil.isNotEmpty(standardRequest.getTableDetailList())) { standardRequest.getTableDetailList().forEach(tableDetail -> { tableDetail.setStandardId(entity.getId()); }); eamMaintenanceStandardDetailService.saveBatch(standardRequest.getTableDetailList()); } return true; } @Override @Transactional(rollbackFor = Exception.class) public boolean editMaintenanceStandard(EamMaintenanceStandardRequest standardRequest) { EamMaintenanceStandard entity = eamMaintenanceStandardMapper.selectById(standardRequest.getId()); if(entity == null){ throw new JeecgBootException("编辑的数据已删除,请刷新重试!"); } entity.setStandardName(standardRequest.getStandardName()); entity.setMaintenancePeriod(standardRequest.getMaintenancePeriod()); entity.setFileCode(standardRequest.getFileCode()); //处理附件 if(CollectionUtil.isNotEmpty(standardRequest.getFileList())) { FileUploadResult fileUploadResult = standardRequest.getFileList().get(0); ObjectMapper mapper = new ObjectMapper(); try { String referenceFile = mapper.writeValueAsString(fileUploadResult); entity.setReferenceFile(referenceFile); } catch (JsonProcessingException e) { log.error("JSON转换失败:" + e.getMessage(), e); } }else { entity.setReferenceFile(null); } eamMaintenanceStandardMapper.updateById(entity); //处理详情 if(CollectionUtil.isNotEmpty(standardRequest.getTableDetailList())) { List addList = new ArrayList<>(); List updateList = new ArrayList<>(); standardRequest.getTableDetailList().forEach(tableDetail -> { tableDetail.setStandardId(entity.getId()); if(tableDetail.getId() == null){ addList.add(tableDetail); }else { updateList.add(tableDetail); } }); if(CollectionUtil.isNotEmpty(addList)){ eamMaintenanceStandardDetailService.saveBatch(addList); } if(CollectionUtil.isNotEmpty(updateList)){ eamMaintenanceStandardDetailService.updateBatchById(updateList); } } if(CollectionUtil.isNotEmpty(standardRequest.getRemoveDetailList())) { List ids = standardRequest.getRemoveDetailList().stream().map(EamMaintenanceStandardDetail::getId).collect(Collectors.toList()); eamMaintenanceStandardDetailService.removeBatchByIds(ids); } return true; } @Override public EamMaintenanceStandard checkDuplicate(String equipmentId, String maintenanceCategory) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EamMaintenanceStandard::getEquipmentId, equipmentId); queryWrapper.eq(EamMaintenanceStandard::getMaintenanceCategory, maintenanceCategory); queryWrapper.eq(EamMaintenanceStandard::getDelFlag, CommonConstant.DEL_FLAG_0); queryWrapper.eq(EamMaintenanceStandard::getStandardStatus, MaintenanceStandardStatusEnum.NORMAL.name()); queryWrapper.orderByDesc(EamMaintenanceStandard::getStandardVersion); List list = eamMaintenanceStandardMapper.selectList(queryWrapper); if(CollectionUtil.isNotEmpty(list)) { return null; } return list.get(0); } }