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.constant.DataBaseConstant; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.eam.constant.EamTechnicalStatusEvaluationOrderEnum; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrder; import org.jeecg.modules.eam.mapper.EamTechnicalStatusEvaluationOrderMapper; import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderQuery; import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderRequest; import org.jeecg.modules.eam.service.IEamEquipmentService; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderDetailService; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderService; import org.jeecg.modules.system.entity.BaseFactory; import org.jeecg.modules.system.entity.BaseFactoryUser; 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.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** * @Description: 技术状态鉴定工单 * @Author: jeecg-boot * @Date: 2025-07-09 * @Version: V1.0 */ @Service public class EamTechnicalStatusEvaluationOrderServiceImpl extends ServiceImpl implements IEamTechnicalStatusEvaluationOrderService { @Autowired private IBaseFactoryUserService baseFactoryUserService; @Autowired private IBaseFactoryService baseFactoryService; @Autowired private IEamTechnicalStatusEvaluationOrderDetailService orderDetailService; @Autowired private IEamEquipmentService equipmentService; @Autowired private ISysBusinessCodeRuleService businessCodeRuleService; @Override public IPage queryPageList(Page page, EamTechnicalStatusEvaluationOrderQuery 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)) { Set factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet()); Set factoryCodeList = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet()); queryWrapper.in("e.factory_org_code", factoryCodeList); } else { return page; } } if (query != null) { //编码 模糊查询 if (StringUtils.isNotBlank(query.getOrderNum())) { queryWrapper.like("ems.order_num", query.getOrderNum()); } //设备 if (StringUtils.isNotBlank(query.getEquipmentId())) { queryWrapper.eq("ems.equipment_id", query.getEquipmentId()); } //保养分类 if (StringUtils.isNotBlank(query.getEvaluationStatus())) { queryWrapper.eq("ems.evaluation_status", query.getEvaluationStatus()); } if (query.getDateBegin() != null && query.getDateEnd() != null) { queryWrapper.between("ems.evaluation_date", query.getDateBegin(), query.getDateEnd()); } //排序 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("ems." + oConvertUtils.camelToUnderline(column)); } else { queryWrapper.orderByDesc("ems." + oConvertUtils.camelToUnderline(column)); } } else { queryWrapper.orderByDesc("ems.create_time"); } } else { queryWrapper.orderByDesc("ems.create_time"); } queryWrapper.orderByDesc("ems.create_time"); return this.getBaseMapper().queryPageList(page, queryWrapper); } @Override @Transactional(rollbackFor = Exception.class) public boolean addTechnicalStatusEvaluationOrder(EamTechnicalStatusEvaluationOrderRequest request) { EamEquipment equipment = equipmentService.getById(request.getEquipmentId()); if (equipment == null) { throw new JeecgBootException("设备不存在,添加失败!"); } EamTechnicalStatusEvaluationOrder order = new EamTechnicalStatusEvaluationOrder(); order.setOrderNum(request.getOrderNum()); order.setEquipmentId(request.getEquipmentId()); order.setStandardId(request.getStandardId()); order.setEvaluationDate(request.getEvaluationDate()); order.setEvaluator(request.getEvaluator()); order.setRemark(request.getRemark()); //状态初始化 order.setEvaluationStatus(EamTechnicalStatusEvaluationOrderEnum.WAIT_EVALUATION.name()); order.setCreationMethod(request.getCreationMethod()); //删除标记 order.setDelFlag(CommonConstant.DEL_FLAG_0); this.getBaseMapper().insert(order); //处理明细数据 if (CollectionUtil.isNotEmpty(request.getTableDetailList())) { request.getTableDetailList().forEach(tableDetail -> { tableDetail.setId(null); tableDetail.setOrderId(order.getId()); }); orderDetailService.saveBatch(request.getTableDetailList()); } return true; } }