lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceTypeServiceImpl.java
@@ -10,17 +10,12 @@
import org.jeecg.modules.dnc.response.ProcessInfoCode;
import org.jeecg.modules.dnc.service.IDeviceTypeService;
import org.jeecg.modules.dnc.utils.ValidateUtil;
import org.jeecg.modules.mdc.entity.MdcEquipment;
import org.jeecg.modules.mdc.service.IMdcEquipmentService;
import org.jeecg.modules.mdc.service.IMdcProductionEquipmentService;
import org.jeecg.modules.system.entity.MdcProductionEquipment;
import org.jeecg.modules.system.entity.SysParams;
import org.jeecg.modules.system.service.ISysParamsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class DeviceTypeServiceImpl extends ServiceImpl<DeviceTypeMapper, DeviceType> implements IDeviceTypeService {
@@ -28,28 +23,32 @@
    @Autowired
    private ISysParamsService sysParamsService;
    @Autowired
    private IMdcEquipmentService mdcEquipmentService;
    @Autowired
    private IMdcProductionEquipmentService mdcProductionEquipmentService;
    /**
     * 新增设备类
     * @param deviceType
     * @return
     */
    @Override
    public Result<?> add(DeviceType deviceType){
        SysParams sysParams = sysParamsService.getSysPramBySettingKey("dnc_nc_device_type");
        if ("-1".equals(sysParams.getSettingValue())){
        SysParams sysParams;
        if (deviceType.getAttributionType()==5){
            //工序设备类
            sysParams = sysParamsService.getSysPramBySettingKey("dnc_device_type_process");
        }else {
            //工步设备类
            sysParams = sysParamsService.getSysPramBySettingKey("dnc_device_type_step");
        }
        if ("0".equals(sysParams.getSettingValue())){
            //未启动设备类
            return Result.error("设备类未启动,请联系管理员");
        }else {
            //已启动设备类
            if(deviceType == null)
                ExceptionCast.cast(CommonCode.INVALID_PARAM);
            if(!ValidateUtil.validateString(deviceType.getProcessStepId()))
            if(!ValidateUtil.validateString(deviceType.getAttributionId()))
                Result.error("无效的设备类");
            List<DeviceType> deviceTypes=this.getByProductionIdAndDeviceManagementId(deviceType);
            if(!deviceTypes.isEmpty()){
                return Result.error("设备类名称已存在");
            }
            boolean save = this.save(deviceType);
            if(save){
                return Result.OK("添加设备类成功");
@@ -62,14 +61,27 @@
     * @param deviceType
     * @return
     */
    @Override
    public Result<?> edit(DeviceType deviceType){
        if(deviceType == null)
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        if(deviceType.getDeviceType()==null)
        if(deviceType.getDeviceManagementId()==null)
            ExceptionCast.cast(ProcessInfoCode.PROCESS_NAME_NONE);
        DeviceType en = super.getById(deviceType.getId());
        if(en == null)
            ExceptionCast.cast(ProcessInfoCode.WORKSTEP_NOT_EXIST);
        //判断设备类是否为本身
        if(en.getDeviceManagementId().equals(deviceType.getDeviceManagementId())
                &&en.getProductionId().equals(deviceType.getProductionId())
                &&en.getAttributionId().equals(deviceType.getAttributionId())
                &&en.getAttributionType().equals(deviceType.getAttributionType())){
            return Result.OK("设备类编辑成功");
        }
        //判断设备类是否被使用
        List<DeviceType> deviceTypeList=this.getByProductionIdAndDeviceManagementId(deviceType);
        if(!deviceTypeList.isEmpty()){
            return Result.error("设备类已存在");
        }
        boolean save = this.updateById(deviceType);
        if(save){
            return Result.OK("设备类编辑成功");
@@ -81,6 +93,7 @@
     * @param id
     * @return
     */
    @Override
    public Result<?> delete(String id){
        if(!ValidateUtil.validateString(id))
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
@@ -99,15 +112,24 @@
     * @param deviceTypes
     * @return
     */
    @Override
    public Result<?> getByDeviceType(List<DeviceType> deviceTypes){
        if (deviceTypes == null || deviceTypes.isEmpty()) {
            return Result.error("设备类信息为空");
        }
        List<Integer> deviceTypeIds = deviceTypes.stream().map(DeviceType::getDeviceType).collect(Collectors.toList());
        QueryWrapper<MdcEquipment> queryWrapper = new QueryWrapper<>();
        queryWrapper.in("device_type", deviceTypeIds);
        List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(queryWrapper);
        return Result.OK(mdcEquipmentList);
        return Result.OK(null);
    }
    /**
     * 通过车间id与设备类id查询设备信息
     * @param deviceType
     * @return
     */
    public List<DeviceType> getByProductionIdAndDeviceManagementId(DeviceType deviceType) {
        List<DeviceType> list = this.list(new QueryWrapper<DeviceType>().eq("attribution_id", deviceType.getAttributionId())
               .eq("attribution_type", deviceType.getAttributionType())
           .eq("device_management_id", deviceType.getDeviceManagementId()));
        list.forEach(item->{
            item.setDeviceManagementCode(item.getDeviceManagementId());
        });
        return list;
    }
    /**
@@ -116,18 +138,11 @@
     * @param type
     * @return
     */
    @Override
    public Result<?> getByBusinessId(String businessId,String type){
        List<DeviceType> list = this.list(new QueryWrapper<DeviceType>().eq("production_id", businessId).eq("type", type));
        if (list == null || list.isEmpty()) {
            return Result.error("设备类信息为空");
        }
        List<Integer> deviceTypeIds = list.stream().map(DeviceType::getDeviceType).collect(Collectors.toList());
        List<String> equipmentIds=mdcProductionEquipmentService.list(new QueryWrapper<MdcProductionEquipment>().in("production_id",deviceTypeIds))
                .stream().map(MdcProductionEquipment::getEquipmentId).collect(Collectors.toList());
        List<DeviceType> list = this.list(new QueryWrapper<DeviceType>().eq("attribution_id", businessId).eq("attribution_type", type));
        list.forEach(item->{
            List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(new QueryWrapper<MdcEquipment>()
                    .eq("device_type", item.getDeviceType()).in("id", equipmentIds));
            item.setEquipmentList(mdcEquipmentList);
            item.setDeviceManagementCode(item.getDeviceManagementId());
        });
        return Result.OK(list);
    }