package com.yuanchu.mom.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yuanchu.mom.common.GetLook; import com.yuanchu.mom.common.PrintChina; import com.yuanchu.mom.dto.DeviceDto; import com.yuanchu.mom.exception.ErrorException; import com.yuanchu.mom.mapper.DeviceMapper; import com.yuanchu.mom.mapper.StructureItemParameterMapper; import com.yuanchu.mom.pojo.DataConfig; import com.yuanchu.mom.pojo.Device; import com.yuanchu.mom.pojo.StructureItemParameter; import com.yuanchu.mom.service.DataConfigService; import com.yuanchu.mom.service.DeviceService; import com.yuanchu.mom.utils.DataAcquisition; import com.yuanchu.mom.utils.QueryWrappers; import com.yuanchu.mom.vo.Result; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 设备(Device)表服务实现类 */ @Service @AllArgsConstructor public class DeviceServiceImpl extends ServiceImpl implements DeviceService { private GetLook getLook; private DeviceMapper deviceMapper; private StructureItemParameterMapper structureItemParameterMapper; @Autowired private DataConfigService dataConfigService; @Override public Map selectDeviceParameter(Page page, DeviceDto itemParameter) { Map map = new HashMap<>(); map.put("head", PrintChina.printChina(DeviceDto.class)); Map map1 = getLook.selectPowerByMethodAndUserId("selectDeviceParameter"); if (map1.get("look") == 1) itemParameter.setCreateUser(map1.get("userId")); IPage iPage = deviceMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(itemParameter)); map.put("body", iPage); return map; } @Override public int addDeviceParameter(Device itemParameter) { return deviceMapper.insert(itemParameter); } @Override public int delDeviceParameter(Integer id) { return deviceMapper.deleteById(id); } @Override public int upDeviceParameter(Device itemParameter) { return deviceMapper.updateById(itemParameter); } @Override public List selectEquipmentOverview() { return deviceMapper.selectEquipmentOverview(new Page(1, 10), QueryWrappers.queryWrappers(new Device())); } @Override public List authorizedPerson() { return deviceMapper.authorizedPerson(); } @Override public List search(Integer status, String deviceName, String specificationModel, String largeCategory) { return deviceMapper.search(status, deviceName, specificationModel, largeCategory); } @Override public List selectDevicePrincipal() { return deviceMapper.selectDevicePrincipal(); } @Override public List selectDeviceByCategory(String inspectionItem, String inspectionItemSubclass) { Integer id; try { if (ObjectUtils.isEmpty(inspectionItemSubclass)) { id = structureItemParameterMapper.selectOne(Wrappers.lambdaQuery() .eq(StructureItemParameter::getInspectionItem, inspectionItem) .last("limit 1").select(StructureItemParameter::getId)).getId(); }else { id = structureItemParameterMapper.selectOne(Wrappers.lambdaQuery() .eq(StructureItemParameter::getInspectionItem, inspectionItem) .eq(StructureItemParameter::getInspectionItemSubclass, inspectionItemSubclass) .last("limit 1").select(StructureItemParameter::getId)).getId(); } } catch (Exception e) { return null; } List devices = deviceMapper.selectList(Wrappers.lambdaQuery() .eq(Device::getDeviceStatus, 0) .isNotNull(Device::getInsProductIds)); List devices2 = new ArrayList<>(); for (Device device : devices) { String[] ids = device.getInsProductIds().split(","); for (String i : ids) { if (i.equals(id + "")) { if (ObjectUtils.isEmpty(device.getFileType()) || ObjectUtils.isEmpty(device.getCollectUrl())) { device.setIsItADataAcquisitionDevice(false); } else { device.setIsItADataAcquisitionDevice(true); } devices2.add(device); break; } } } return devices2; } @Override public Device selectDeviceByCode(String code) { return deviceMapper.selectOne(Wrappers.lambdaQuery().eq(Device::getFactoryNo, code).last("limit 1")); } @Override public Result dataAcquisition(HttpServletRequest request, Integer id, String entrustCode, String sampleCode) { String ipAddress = request.getRemoteAddr(); // 防止回环地址变为IPv6 String ip = ipAddress.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipAddress; List device = baseMapper.selectList(Wrappers.lambdaQuery() .eq(Device::getIp, ip)); if (ObjectUtils.isEmpty(device)) { throw new ErrorException("未给该IP:" + ip + "配置设备,无法进行数采!"); } List inspectionItemSubclass = baseMapper.getInspectionItemSubclass(id); Map hashMap = new HashMap<>(); device.forEach(i -> { if (ObjectUtils.isEmpty(i.getFileType()) || ObjectUtils.isEmpty(i.getCollectUrl())) { throw new ErrorException("未给该:" + i.getDeviceName() + "设备配置采集路径或文件后缀!"); } List list = dataConfigService.list(Wrappers.lambdaQuery() .eq(DataConfig::getDeviceId, i.getId()) .in(DataConfig::getInsProductItem, inspectionItemSubclass) .orderBy(false, false, DataConfig::getId)); hashMap.putAll(DataAcquisition.dataAcquisitionEntrance(request, list, i, entrustCode, sampleCode, ip)); }); String frequency = DataAcquisition.createFrequency(entrustCode, sampleCode); hashMap.put("frequency", frequency); return Result.success(hashMap); } }