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 org.apache.commons.lang3.StringUtils;
|
import org.jeecg.common.constant.CommonConstant;
|
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.service.IEamEquipmentExtendService;
|
import org.jeecg.modules.eam.service.IEamEquipmentService;
|
import org.jeecg.modules.eam.tree.FindsEquipmentProductionUtil;
|
import org.jeecg.modules.eam.vo.EamEquipmentTree;
|
import org.jeecg.modules.system.entity.MdcProduction;
|
import org.jeecg.modules.system.service.IMdcProductionService;
|
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;
|
import java.util.stream.Collectors;
|
|
/**
|
* @Description: 设备台账
|
* @Author: jeecg-boot
|
* @Date: 2025-03-19
|
* @Version: V1.0
|
*/
|
@Service
|
public class EamEquipmentServiceImpl extends ServiceImpl<EamEquipmentMapper, EamEquipment> 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<EamEquipmentTree> loadTreeListByProductionIds(String ids) {
|
List<String> productionIds = Arrays.asList(ids.split(","));
|
//获取所有产线数据
|
List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()).orderByAsc(MdcProduction::getProductionOrder));
|
List<String> allProductionIds = new ArrayList<>();
|
//找到所有产线id的上级id
|
if (!productionIds.isEmpty()) {
|
for (String productionId : productionIds) {
|
this.getAllProductionIds(productionList, productionId, allProductionIds);
|
}
|
}
|
//过滤产线数据
|
List<MdcProduction> list = productionList.stream().filter((MdcProduction mdcProduction) -> allProductionIds.contains(mdcProduction.getId())).collect(Collectors.toList());
|
//组装产线设备树
|
List<EamEquipmentTree> treeList = FindsEquipmentProductionUtil.wrapEquipmentProductionTreeList(list);
|
//填充设备数据
|
fillEquipmentByProduction(treeList);
|
return treeList;
|
}
|
|
/**
|
* 获取所有的产线id(包含所有上级)
|
*/
|
private void getAllProductionIds(List<MdcProduction> productionList, String productionId, List<String> 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<EamEquipmentTree> treeList) {
|
for (EamEquipmentTree mdcEquipmentTree : treeList) {
|
List<EamEquipment> 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());
|
}
|
}
|
}
|
|
}
|