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.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.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog; import org.jeecg.modules.eam.constant.AssetStatusEnum; import org.jeecg.modules.eam.constant.EquipmentMaintenanceStatus; import org.jeecg.modules.eam.constant.EquipmentOperationTagEnum; import org.jeecg.modules.eam.constant.EquipmentRepairStatus; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamEquipmentExtend; import org.jeecg.modules.eam.mapper.EamEquipmentMapper; import org.jeecg.modules.eam.request.EamEquipmentQuery; import org.jeecg.modules.eam.service.IEamEquipmentExtendService; import org.jeecg.modules.eam.service.IEamEquipmentService; import org.jeecg.modules.eam.vo.EquipmentSearchResult; 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.Arrays; import java.util.Collections; import java.util.List; /** * @Description: 设备台账 * @Author: jeecg-boot * @Date: 2025-03-19 * @Version: V1.0 */ @Service public class EamEquipmentServiceImpl extends ServiceImpl implements IEamEquipmentService { @Resource private EamEquipmentMapper eamEquipmentMapper; @Autowired private IEamEquipmentExtendService equipmentExtendService; // @Autowired // private IMdcProductionService mdcProductionService; @Override @Transactional(rollbackFor = Exception.class) @EquipmentHistoryLog(operationTag = EquipmentOperationTagEnum.ACCEPTANCE, businessTable = "eam_equipment") public EamEquipment saveEquipment(EamEquipment eamEquipment) { if (eamEquipment == null) { return null; } //资产状态默认 正常 eamEquipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); eamEquipment.setDelFlag(CommonConstant.DEL_FLAG_0); eamEquipmentMapper.insert(eamEquipment); //扩展表数据同步添加 EamEquipmentExtend eamEquipmentExtend = new EamEquipmentExtend(); eamEquipmentExtend.setId(eamEquipment.getId()); eamEquipmentExtend.setMaintenanceStatus(EquipmentMaintenanceStatus.NORMAL.name()); eamEquipmentExtend.setRepairStatus(EquipmentRepairStatus.NORMAL.name()); equipmentExtendService.save(eamEquipmentExtend); //插入设备履历 @EquipmentHistoryLog return eamEquipment; } // @Override // public List loadTreeListByProductionIds(String ids) { // List productionIds = Arrays.asList(ids.split(",")); // //获取所有产线数据 // List productionList = mdcProductionService.list(new LambdaQueryWrapper().eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()).orderByAsc(MdcProduction::getProductionOrder)); // List allProductionIds = new ArrayList<>(); // //找到所有产线id的上级id // if (!productionIds.isEmpty()) { // for (String productionId : productionIds) { // this.getAllProductionIds(productionList, productionId, allProductionIds); // } // } // //过滤产线数据 // List list = productionList.stream().filter((MdcProduction mdcProduction) -> allProductionIds.contains(mdcProduction.getId())).collect(Collectors.toList()); // //组装产线设备树 // List treeList = FindsEquipmentProductionUtil.wrapEquipmentProductionTreeList(list); // //填充设备数据 // fillEquipmentByProduction(treeList); // return treeList; // } @Override public IPage queryPageList(IPage page, EamEquipmentQuery eamEquipment) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("e.del_flag", CommonConstant.DEL_FLAG_0); //用户数据权限 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if (sysUser == null) { return page; } if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) { //选择了设备,根据设备id过滤设备 List equipArr = Arrays.asList(sysUser.getEquipmentIds().split(",")); queryWrapper.in("e.equipment_code", equipArr); } else { //没有选择设备,根据车间过滤设备 queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=e.org_id", sysUser.getId()); } //查询条件过滤 if (eamEquipment != null) { if (StringUtils.isNotBlank(eamEquipment.getEquipmentCode())) { queryWrapper.like("e.equipment_code", eamEquipment.getEquipmentCode()); } if (StringUtils.isNotBlank(eamEquipment.getEquipmentName())) { queryWrapper.like("e.equipment_name", eamEquipment.getEquipmentName()); } if (StringUtils.isNotBlank(eamEquipment.getEquipmentImportance())) { queryWrapper.eq("e.equipment_importance", eamEquipment.getEquipmentImportance()); } if (StringUtils.isNotBlank(eamEquipment.getAssetStatus())) { queryWrapper.like("e.asset_status", eamEquipment.getAssetStatus()); } if (StringUtils.isNotBlank(eamEquipment.getTechnologyStatus())) { queryWrapper.like("e.technology_status", eamEquipment.getTechnologyStatus()); } if (StringUtils.isNotBlank(eamEquipment.getOperationSystem())) { queryWrapper.like("e.operation_system", eamEquipment.getOperationSystem()); } // if (StringUtils.isNotBlank(eamEquipment.getOrgId())) { // //车间编码不为空 // List productIds = mdcProductionService.recursionChildren(eamEquipment.getOrgId()); // if (CollectionUtil.isNotEmpty(productIds)) { // //不做筛选 // queryWrapper.in("e.org_id", productIds); // } // } if (StringUtils.isNotBlank(eamEquipment.getEquipmentCategory())) { queryWrapper.like("e.equipment_category", eamEquipment.getEquipmentCategory()); } if (StringUtils.isNotBlank(eamEquipment.getId())) { queryWrapper.eq("e.id", eamEquipment.getId()); } //排序 if (StringUtils.isNotBlank(eamEquipment.getColumn()) && StringUtils.isNotBlank(eamEquipment.getOrder())) { //queryWrapper.like("column", eamEquipment.getColumn()); String column = eamEquipment.getColumn(); if (column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) { column = column.substring(0, column.lastIndexOf(CommonConstant.DICT_TEXT_SUFFIX)); } if (DataBaseConstant.SQL_ASC.equalsIgnoreCase(eamEquipment.getOrder())) { queryWrapper.orderByAsc("e." + oConvertUtils.camelToUnderline(column)); } else { queryWrapper.orderByDesc("e." + oConvertUtils.camelToUnderline(column)); } } else { queryWrapper.orderByDesc("e.create_time"); } } else { queryWrapper.orderByDesc("e.create_time"); } IPage ipage = eamEquipmentMapper.queryPageList(page, queryWrapper); return ipage; } @Override public List asyncLoadEquipment(String keyword, Integer pageSize, String id) { if (StringUtils.isNotBlank(id)) { EamEquipment eamEquipment = eamEquipmentMapper.selectById(id); if (eamEquipment != null) { List resultList = new ArrayList<>(); resultList.add(new EquipmentSearchResult(eamEquipment)); return resultList; } } IPage page = new Page<>(1, pageSize); QueryWrapper queryWrapper = new QueryWrapper<>(); //用户数据权限 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if (sysUser == null) { return Collections.emptyList(); } if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) { //选择了设备,根据设备id过滤设备 List equipArr = Arrays.asList(sysUser.getEquipmentIds().split(",")); queryWrapper.in("equipment_code", equipArr); } else { //没有选择设备,根据车间过滤设备 queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=org_id", sysUser.getId()); } if (StringUtils.isNotBlank(keyword)) { queryWrapper.like("equipment_code", keyword); queryWrapper.or().like("equipment_name", keyword); } queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0); IPage pageResult = eamEquipmentMapper.queryPageList(page, queryWrapper); if (pageResult != null && CollectionUtil.isNotEmpty(pageResult.getRecords())) { List resultList = new ArrayList<>(); pageResult.getRecords().forEach((record) -> { resultList.add(new EquipmentSearchResult(record)); }); return resultList; } return Collections.emptyList(); } @Override public EamEquipment selectByEquipmentCode(String equipmentCode) { if (StringUtils.isBlank(equipmentCode)) { return null; } QueryWrapper queryWrapper = new QueryWrapper<>(); //用户数据权限 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if (sysUser == null) { return null; } if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) { //选择了设备,根据设备id过滤设备 List equipArr = Arrays.asList(sysUser.getEquipmentIds().split(",")); queryWrapper.in("equipment_code", equipArr); } else { //没有选择设备,根据车间过滤设备 queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=org_id", sysUser.getId()); } queryWrapper.eq("equipment_code", equipmentCode); queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0); return eamEquipmentMapper.selectOne(queryWrapper); } /** * 获取所有的产线id(包含所有上级) */ // private void getAllProductionIds(List productionList, String productionId, List allProductionIds) { // if (!allProductionIds.contains(productionId)) { // allProductionIds.add(productionId); // } // for (MdcProduction mdcProduction : productionList) { // if (StringUtils.isEmpty(mdcProduction.getParentId())) { // continue; // } // if (productionId.equals(mdcProduction.getId())) { // if (!allProductionIds.contains(mdcProduction.getParentId())) { // allProductionIds.add(mdcProduction.getParentId()); // getAllProductionIds(productionList, mdcProduction.getParentId(), allProductionIds); // } // } // } // } /** * 产线设备树填充设备数据 */ // private void fillEquipmentByProduction(List treeList) { // for (EamEquipmentTree mdcEquipmentTree : treeList) { // List equipmentList = eamEquipmentMapper.queryByProductionId(mdcEquipmentTree.getKey()); // if (CollectionUtil.isNotEmpty(equipmentList)) { // for (EamEquipment mdcEquipment : equipmentList) { // EamEquipmentTree tree = new EamEquipmentTree().convert(mdcEquipment); // tree.setParentId(mdcEquipmentTree.getKey()); // tree.setType(2); // mdcEquipmentTree.getChildren().add(tree); // } // mdcEquipmentTree.setLeaf(false); // } // if (CollectionUtil.isNotEmpty(mdcEquipmentTree.getChildren())) { // fillEquipmentByProduction(mdcEquipmentTree.getChildren()); // } // } // } }