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.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.SimpleVersionGenerateUtil; import org.jeecg.modules.eam.base.entity.BaseFactory; import org.jeecg.modules.eam.base.entity.BaseFactoryUser; import org.jeecg.modules.eam.base.service.IBaseFactoryService; import org.jeecg.modules.eam.base.service.IBaseFactoryUserService; import org.jeecg.modules.eam.constant.TechnicalStatusEvaluationStandardEnum; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandard; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandardDetail; import org.jeecg.modules.eam.mapper.EamTechnicalStatusEvaluationStandardMapper; import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationStandardRequest; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardDetailService; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** * @Description: 技术状态鉴定规范 * @Author: jeecg-boot * @Date: 2025-07-07 * @Version: V1.0 */ @Service public class EamTechnicalStatusEvaluationStandardServiceImpl extends ServiceImpl implements IEamTechnicalStatusEvaluationStandardService { @Autowired private IBaseFactoryUserService baseFactoryUserService; @Autowired private IBaseFactoryService baseFactoryService; @Autowired private IEamTechnicalStatusEvaluationStandardDetailService standardDetailService; @Override public IPage queryPageList(Page page, EamTechnicalStatusEvaluationStandard query) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ems.del_flag", CommonConstant.DEL_FLAG_0); //用户数据权限 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if (sysUser == null) { return page; } if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) { //选择了设备,根据设备id过滤设备 List equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(",")); queryWrapper.in("e.equipment_code", equipArr); } else { //没有选择设备,根据中心过滤设备 List baseFactoryUserList = baseFactoryUserService. list(new LambdaQueryWrapper().eq(BaseFactoryUser::getUserId, sysUser.getId())); if (!CollectionUtils.isEmpty(baseFactoryUserList)) { List factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toList()); List factoryCode = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getFactoryCode).collect(Collectors.toList()); queryWrapper.in("e.factory_code", factoryCode); } else { return page; } } if (query != null) { //编码 模糊查询 if (StringUtils.isNotBlank(query.getStandardCode())) { queryWrapper.like("ems.standard_code", query.getStandardCode()); } //名称 模糊查询 if (StringUtils.isNotBlank(query.getStandardName())) { queryWrapper.like("ems.standard_name", query.getStandardName()); } //设备 if (StringUtils.isNotBlank(query.getEquipmentId())) { queryWrapper.eq("ems.equipment_id", query.getEquipmentId()); } //保养分类 if (StringUtils.isNotBlank(query.getStandardStatus())) { queryWrapper.eq("ems.standard_status", query.getStandardStatus()); } } queryWrapper.orderByDesc("ems.create_time"); return this.getBaseMapper().queryPageList(page, queryWrapper); } @Override @Transactional(rollbackFor = Exception.class) public boolean addEamTechnicalStatusEvaluationStandard(EamTechnicalStatusEvaluationStandardRequest request) { EamTechnicalStatusEvaluationStandard entity = new EamTechnicalStatusEvaluationStandard(); BeanUtils.copyProperties(request, entity); entity.setStandardStatus(TechnicalStatusEvaluationStandardEnum.WAIT_SUBMIT.name()); //版本递增 entity.setStandardVersion(SimpleVersionGenerateUtil.getInitVersion()); //设备处理 entity.setEquipmentId(request.getEquipmentId()); //删除标记 entity.setDelFlag(CommonConstant.DEL_FLAG_0); //重复性校验 EamTechnicalStatusEvaluationStandard exist = checkDuplicate(entity.getEquipmentId(), null); if(exist != null){ throw new JeecgBootException("规范已存在,不能重复添加!"); } this.getBaseMapper().insert(entity); //处理明细数据 if(CollectionUtil.isNotEmpty(request.getTableDetailList())) { request.getTableDetailList().forEach(tableDetail -> { tableDetail.setStandardId(entity.getId()); }); standardDetailService.saveBatch(request.getTableDetailList()); } return true; } @Override public EamTechnicalStatusEvaluationStandard checkDuplicate(String equipmentId, String id) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EamTechnicalStatusEvaluationStandard::getEquipmentId, equipmentId); queryWrapper.eq(EamTechnicalStatusEvaluationStandard::getDelFlag, CommonConstant.DEL_FLAG_0); //待提交、启用状态 queryWrapper.in(EamTechnicalStatusEvaluationStandard::getStandardStatus, Arrays.asList(TechnicalStatusEvaluationStandardEnum.ENABLE.name(), TechnicalStatusEvaluationStandardEnum.WAIT_SUBMIT.name())); queryWrapper.orderByDesc(EamTechnicalStatusEvaluationStandard::getStandardVersion); if(StringUtils.isNotBlank(id)){ queryWrapper.ne(EamTechnicalStatusEvaluationStandard::getId, id); } List list = this.getBaseMapper().selectList(queryWrapper); if(CollectionUtil.isEmpty(list)) { return null; } return list.get(0); } @Override @Transactional(rollbackFor = Exception.class) public boolean editEamTechnicalStatusEvaluationStandard(EamTechnicalStatusEvaluationStandardRequest request) { EamTechnicalStatusEvaluationStandard entity = this.getBaseMapper().selectById(request.getId()); if(entity == null){ throw new JeecgBootException("编辑的数据已删除,请刷新重试!"); } entity.setStandardName(request.getStandardName()); entity.setEvaluationPeriod(request.getEvaluationPeriod()); this.getBaseMapper().updateById(entity); //处理详情 if(CollectionUtil.isNotEmpty(request.getTableDetailList())) { List addList = new ArrayList<>(); List updateList = new ArrayList<>(); request.getTableDetailList().forEach(tableDetail -> { tableDetail.setStandardId(entity.getId()); if(tableDetail.getId() == null){ addList.add(tableDetail); }else { updateList.add(tableDetail); } }); if(CollectionUtil.isNotEmpty(addList)){ standardDetailService.saveBatch(addList); } if(CollectionUtil.isNotEmpty(updateList)){ standardDetailService.updateBatchById(updateList); } } if(CollectionUtil.isNotEmpty(request.getRemoveDetailList())) { List ids = request.getRemoveDetailList().stream().map(EamTechnicalStatusEvaluationStandardDetail::getId).collect(Collectors.toList()); standardDetailService.removeBatchByIds(ids); } return true; } @Override @Transactional(rollbackFor = Exception.class) public boolean upgrade(EamTechnicalStatusEvaluationStandardRequest request) { EamTechnicalStatusEvaluationStandard entity = this.getBaseMapper().selectById(request.getId()); if(entity == null){ throw new JeecgBootException("升版的数据已删除,请刷新重试!"); } //新增一个版本 EamTechnicalStatusEvaluationStandard newEntity = new EamTechnicalStatusEvaluationStandard(); newEntity.setStandardCode(request.getStandardCode()); newEntity.setStandardName(request.getStandardName()); newEntity.setEvaluationPeriod(request.getEvaluationPeriod()); newEntity.setStandardStatus(TechnicalStatusEvaluationStandardEnum.ENABLE.name()); //版本递增 newEntity.setStandardVersion(SimpleVersionGenerateUtil.addVersion(entity.getStandardVersion())); //设备处理 newEntity.setEquipmentId(request.getEquipmentId()); //删除标记 newEntity.setDelFlag(CommonConstant.DEL_FLAG_0); //重复性校验 EamTechnicalStatusEvaluationStandard exist = checkDuplicate(newEntity.getEquipmentId(), entity.getId()); if(exist != null){ throw new JeecgBootException("鉴定规范已存在,不能重复添加!"); } this.getBaseMapper().insert(newEntity); //处理明细数据 if(CollectionUtil.isNotEmpty(request.getTableDetailList())) { request.getTableDetailList().forEach(tableDetail -> { tableDetail.setId(null); tableDetail.setCreateBy(null); tableDetail.setUpdateBy(null); tableDetail.setCreateTime(null); tableDetail.setUpdateTime(null); tableDetail.setStandardId(newEntity.getId()); }); standardDetailService.saveBatch(request.getTableDetailList()); } //禁用原来的版本 entity.setStandardStatus(TechnicalStatusEvaluationStandardEnum.DISABLE.name()); this.getBaseMapper().updateById(entity); return true; } }