lyh
2025-02-20 0eb2de47356408212a2641801ac7fd1aed7f5c33
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -5,6 +5,7 @@
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;
@@ -24,6 +25,7 @@
import org.jeecg.modules.mdc.model.MdcEquipmentTree;
import org.jeecg.modules.mdc.service.*;
import org.jeecg.modules.mdc.util.DateUtils;
import org.jeecg.modules.mdc.util.DncCopyEquipment;
import org.jeecg.modules.mdc.util.FindsEquipmentDepartUtil;
import org.jeecg.modules.mdc.util.FindsEquipmentProductionUtil;
import org.jeecg.modules.mdc.vo.*;
@@ -33,14 +35,19 @@
import org.jeecg.modules.system.mapper.MdcProductionEquipmentMapper;
import org.jeecg.modules.system.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -97,7 +104,10 @@
    private ISysParamsService ISysParamsService;
    @Resource
    private DncDevicePermissionMapper dncDevicePermissionMapper;
    private IDncDevicePermissionService iDncDevicePermissionService;
    @Value("${fileNCPath}")
    private String fileNCPath;
    @Override
@@ -148,11 +158,7 @@
        this.save(mdcEquipment);
        //DNC添加设备权限
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        DncDevicePermission dncDevicePermission=new DncDevicePermission();
        dncDevicePermission.setDeviceId(mdcEquipment.getId());
        dncDevicePermission.setUserId(userId);
        dncDevicePermissionMapper.insert(dncDevicePermission);
        iDncDevicePermissionService.addDevicePermission(mdcEquipment.getId(), user.getId());
        //step.2 保存所属部门
        if (oConvertUtils.isNotEmpty(selectedDeparts)) {
            String[] arr = selectedDeparts.split(",");
@@ -169,6 +175,8 @@
                mdcProductionEquipmentMapper.insert(mdcProductionEquipment);
            }
        }
        //step.3 保存设备对应的产线权限
        addDevicePermission(mdcEquipment);
    }
    @Override
@@ -191,6 +199,14 @@
                    break;
            }
        }
        //平移设备目录下现有结构与文件
        //获取原有结构
        String OldPath="";
        String NewPath="";
        List<String> OldStrings=mdcProductionService.findListParentTreeAll(mdcEquipment.getId());
        if (OldStrings != null && !OldStrings.isEmpty()) {
            OldPath = fileNCPath+"/"+StringUtils.join(OldStrings.toArray(), "/")+"/"+mdcEquipment.getEquipmentId();
        }
        //step.1 修改设备基础信息
        this.updateById(mdcEquipment);
        //step.2 修改部门
@@ -207,6 +223,8 @@
                mdcEquipmentDepartMapper.insert(equipmentDepart);
            }
        }
        //删除所有设备权限
        iDncDevicePermissionService.remove(new QueryWrapper<DncDevicePermission>().lambda().eq(DncDevicePermission::getDeviceId, mdcEquipment.getId()));
        //step.3 修改产线
        String productions = mdcEquipment.getSelectedProduction();
        String[] array = {};
@@ -221,15 +239,31 @@
                mdcProductionEquipmentMapper.insert(productionEquipment);
            }
        }
        List<String> NewStrings = mdcProductionService.findListParentTreeAll(mdcEquipment.getId());
        if (NewStrings != null && !NewStrings.isEmpty()) {
            NewPath = fileNCPath+"/"+StringUtils.join(NewStrings.toArray(), "/")+"/"+mdcEquipment.getEquipmentId();
        }
        // 平移OldPath下的文件到NewPath下
        DncCopyEquipment.CopyEquipmentPath(OldPath,NewPath);
        //保存设备对应的产线权限
        addDevicePermission(mdcEquipment);
        //step.4 修改设备权限
        //先删后加
        dncDevicePermissionMapper.delete(new QueryWrapper<DncDevicePermission>().lambda().eq(DncDevicePermission::getDeviceId, mdcEquipment.getId()));
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        DncDevicePermission dncDevicePermission=new DncDevicePermission();
        dncDevicePermission.setDeviceId(mdcEquipment.getId());
        dncDevicePermission.setUserId(userId);
        dncDevicePermissionMapper.insert(dncDevicePermission);
        List<DncDevicePermission> dncDevicePermissions=iDncDevicePermissionService.list(new LambdaQueryWrapper<DncDevicePermission>()
                .eq(DncDevicePermission::getDeviceId, mdcEquipment.getId()).eq(DncDevicePermission ::getUserId, user.getId()));
        if (CollectionUtils.isEmpty(dncDevicePermissions)){
            iDncDevicePermissionService.addDevicePermission(mdcEquipment.getId(), user.getId());
        }
    }
    private void addDevicePermission(MdcEquipment mdcEquipment) {
        List<String> productionIds=mdcProductionEquipmentMapper
                .selectList(new LambdaQueryWrapper<MdcProductionEquipment>().eq(MdcProductionEquipment::getEquipmentId, mdcEquipment.getId()))
                .stream().map(MdcProductionEquipment::getProductionId).collect(Collectors.toList());
        List<MdcUserProduction> mdcUserProductionList=mdcUserProductionService.queryByProductionIds(productionIds);
        mdcUserProductionList.forEach(item->{
            iDncDevicePermissionService.addDevicePermission(mdcEquipment.getId(), item.getUserId());
        });
    }
    @Override
@@ -243,7 +277,7 @@
        // 3. 删除设备产线关系
        line += mdcProductionEquipmentMapper.delete(new LambdaQueryWrapper<MdcProductionEquipment>().eq(MdcProductionEquipment::getEquipmentId, id));
        // 4. 删除设备权限
        line += dncDevicePermissionMapper.delete(new LambdaQueryWrapper<DncDevicePermission>().eq(DncDevicePermission::getDeviceId, id));
        line += iDncDevicePermissionService.remove(new LambdaQueryWrapper<DncDevicePermission>().eq(DncDevicePermission::getDeviceId, id))? 1 : 0;
        return line != 0;
    }
@@ -285,7 +319,7 @@
    public void removeEquipmentForProduction(String productionId, String equipmentId) {
        mdcProductionEquipmentMapper.delete(new LambdaQueryWrapper<MdcProductionEquipment>().eq(MdcProductionEquipment::getProductionId, productionId).eq(MdcProductionEquipment::getEquipmentId, equipmentId));
        //移除设备权限
        dncDevicePermissionMapper.delete(new LambdaQueryWrapper<DncDevicePermission>().eq(DncDevicePermission::getDeviceId, equipmentId));
        iDncDevicePermissionService.remove(new LambdaQueryWrapper<DncDevicePermission>().eq(DncDevicePermission::getDeviceId, equipmentId));
    }
    @Override