package com.moral.api.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.moral.api.entity.Device; import com.moral.api.entity.ManageAccount; import com.moral.api.entity.MonitorPoint; import com.moral.api.entity.Organization; import com.moral.api.entity.SysDictData; import com.moral.api.entity.SysDictType; import com.moral.api.entity.Version; import com.moral.api.mapper.DeviceMapper; import com.moral.api.mapper.ManageAccountMapper; import com.moral.api.mapper.MonitorPointMapper; import com.moral.api.mapper.OrganizationMapper; import com.moral.api.mapper.SysDictDataMapper; import com.moral.api.mapper.SysDictTypeMapper; import com.moral.api.pojo.vo.device.DeviceVO; import com.moral.api.service.DeviceService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.constant.Constants; import com.moral.redis.RedisUtil; import com.moral.util.ConvertUtils; import com.moral.util.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; /** *

* 设备表 服务实现类 *

* * @author moral * @since 2021-05-11 */ @Service public class DeviceServiceImpl extends ServiceImpl implements DeviceService { @Autowired private DeviceMapper deviceMapper; @Autowired private ManageAccountMapper manageAccountMapper; @Autowired private OrganizationMapper organizationMapper; @Autowired private MonitorPointMapper monitorPointMapper; @Autowired private SysDictTypeMapper sysDictTypeMapper; @Autowired private SysDictDataMapper sysDictDataMapper; @Override @Transactional public void insert(Device device) { deviceMapper.insert(device); Map deviceInfo = selectDeviceInfoById(device.getId()); RedisUtil.set("device_" + device.getMac(), deviceInfo); } @Override @Transactional public void delete(Integer deviceId) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", deviceId).set("is_delete", Constants.DELETE); deviceMapper.update(null, updateWrapper); String mac = deviceMapper.selectById(deviceId).getMac(); //清除redis RedisUtil.del("device_" + mac); } @Override @Transactional public void update(Device device) { deviceMapper.updateById(device); //更新redis Map deviceInfo = selectDeviceInfoById(device.getId()); RedisUtil.set("device_" + deviceInfo.get("mac"), deviceInfo); } @Override public List> selectAllOperators() { //维护人列表 QueryWrapper operatorWrapper = new QueryWrapper<>(); operatorWrapper.select("id", "user_name").eq("is_delete", Constants.NOT_DELETE); return manageAccountMapper.selectMaps(operatorWrapper); } //根据字典类型获取字典数据 @Override public List> selectDeviceDictData(String dictType) { QueryWrapper typeQueryWrapper = new QueryWrapper<>(); typeQueryWrapper.select("id").eq("name", dictType); SysDictType sysDictType = sysDictTypeMapper.selectOne(typeQueryWrapper); QueryWrapper dataQueryWrapper = new QueryWrapper<>(); dataQueryWrapper.select("dataKey", "dataValue").eq("dict_type_id", sysDictType.getId()).eq("is_delete", Constants.NOT_DELETE); return sysDictDataMapper.selectMaps(dataQueryWrapper); } @Override public List> selectMonitorsByOrgId(Integer orgId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("id", "name").eq("organization_id", orgId).eq("is_delete", Constants.NOT_DELETE); return monitorPointMapper.selectMaps(queryWrapper); } @Override public List> selectDevicesByOrgId(Integer orgId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("is_delete", Constants.NOT_DELETE).eq("organization_id", orgId); return deviceMapper.selectMaps(queryWrapper); } @Override public List> selectDevicesByMpId(Integer mpId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("is_delete", Constants.NOT_DELETE).eq("monitor_point_id", mpId); return deviceMapper.selectMaps(queryWrapper); } @Override public IPage selectDevices(Map parameters) { QueryWrapper queryWrapper = new QueryWrapper<>(); Integer page = (Integer) parameters.get("page"); Integer size = (Integer) parameters.get("size"); Object order = parameters.get("order"); Object orderType = parameters.get("orderType"); Object name = parameters.get("name"); Object mac = parameters.get("mac"); if (name != null) { queryWrapper.like("name", name); } if (mac != null) { queryWrapper.like("mac", mac); } //排序参数,默认create_time降序 if (order != null && orderType != null) { if (Constants.ORDER_ASC.equals(orderType)) { queryWrapper.orderByAsc(ConvertUtils.toLine(order.toString())); } else { queryWrapper.orderByDesc(ConvertUtils.toLine(order.toString())); } } else { queryWrapper.orderByDesc("create_time"); } queryWrapper.eq("is_delete", Constants.NOT_DELETE); Page devicePage = new Page<>(page, size); deviceMapper.selectPage(devicePage, queryWrapper); return devicePage; } @Override public Map selectDeviceInfoById(Integer deviceId) { Map result = new LinkedHashMap<>(); DeviceVO device = deviceMapper.selectDeviceInfoById(deviceId); //设备 result.put("id", device.getId()); result.put("name", device.getName()); result.put("mac", device.getMac()); result.put("address", device.getAddress()); result.put("longitude", device.getLongitude()); result.put("latitude", device.getLatitude()); result.put("createTime", DateUtils.dateToDateString(device.getCreateTime())); //行业 result.put("profession", device.getProfession()); result.put("professionName", device.getProfessionName()); //工艺 result.put("tech", device.getTech()); result.put("techName", device.getTechName()); //检测器 result.put("detector", device.getDetector()); result.put("detectorName", device.getDetectorName()); //采购商 result.put("purchaser", device.getPurchaser()); result.put("purchaserName", device.getPurchaserName()); //型号 Map versionInfo = new LinkedHashMap<>(); Version version = device.getVersion(); versionInfo.put("id", version.getId()); versionInfo.put("name", version.getName()); result.put("version", versionInfo); //维护人 List> operatorsInfo = new ArrayList<>(); List operators = device.getOperators(); for (ManageAccount operator : operators) { Map operatorMap = new LinkedHashMap<>(); operatorMap.put("id", operator.getId()); operatorMap.put("name", operator.getUserName()); operatorsInfo.add(operatorMap); } result.put("operators", operatorsInfo); //组织 Map orgInfo = new LinkedHashMap<>(); Organization organization = device.getOrganization(); orgInfo.put("id", organization.getId()); orgInfo.put("name", organization.getName()); result.put("organization", orgInfo); //站点 Map mpInfo = new LinkedHashMap<>(); MonitorPoint monitorPoint = device.getMonitorPoint(); mpInfo.put("id", monitorPoint.getId()); mpInfo.put("name", monitorPoint.getName()); result.put("monitorPoint", mpInfo); return result; } @Override public List> selectAllOrganization() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("id", "name").eq("is_delete", Constants.NOT_DELETE); return organizationMapper.selectMaps(queryWrapper); } @Override public List> selectAllMonitorPoint() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("id", "name").eq("is_delete", Constants.NOT_DELETE); return monitorPointMapper.selectMaps(queryWrapper); } }