package com.care.bms.service; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.care.common.entity.CareDevice; import com.care.common.entity.CareOrganization; import com.care.common.entity.CareStation; import com.care.common.enums.DeviceActiveStatusEnum; import com.care.common.exception.BDException; import com.care.common.service.CareDeviceService; import com.care.common.service.CareOrganizationService; import com.care.common.service.CareStationService; import com.care.common.util.RandomCodeUtil; import com.care.common.vo.PageReqVO; import com.care.common.vo.UserLogindConvertVO; import com.care.common.vo.device.DeviceVO; import com.care.common.vo.station.StationVO; import org.apache.commons.compress.utils.Lists; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * @Author: lilt * @Date: 2021/7/14 * @Desc: */ @Service public class StationService { @Resource private CareStationService careStationService; @Resource private CareDeviceService careDeviceService; @Resource private CareOrganizationService careOrganizationService; /** * 查询服务站列表 * @return */ public IPage listStation(String name, Long orgId, UserLogindConvertVO loginUser, PageReqVO pageReqVo) { IPage page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize()); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().like(StrUtil.isNotEmpty(name),CareStation::getName,name) .eq(orgId != null,CareStation::getOrgId,orgId) .eq(loginUser.getOrgId() != null,CareStation::getOrgId,loginUser.getOrgId()) .orderByAsc(CareStation::getName); IPage pageRes = this.careStationService.page(page, queryWrapper); IPage results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal()); if(CollUtil.isNotEmpty(pageRes.getRecords())){ List list = new ArrayList<>(); pageRes.getRecords().forEach(item -> { StationVO resVO = new StationVO(); BeanUtils.copyProperties(item,resVO); //服务设备数量 QueryWrapper queryWrapper1 = new QueryWrapper<>(); queryWrapper1.lambda().eq(CareDevice::getStationId,resVO.getId()); resVO.setDevCount(this.careDeviceService.count(queryWrapper1)); CareOrganization org = this.careOrganizationService.getById(resVO.getOrgId()); resVO.setOrgName(org != null? org.getName() : ""); list.add(resVO); }); results.setRecords(list); } return results; } public StationVO getStationInfo(Long stationId) { CareStation stationInfo = this.careStationService.getById(stationId); if(stationInfo == null){ return null; } StationVO vo = new StationVO(); BeanUtil.copyProperties(stationInfo,vo); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(CareDevice::getStationId,stationId); List deviceList = this.careDeviceService.list(queryWrapper); if(CollUtil.isNotEmpty(deviceList)){ List deviceVOList = Lists.newArrayList(); deviceList.forEach(item -> { DeviceVO deviceVO = new DeviceVO(); BeanUtil.copyProperties(item,deviceVO); deviceVO.setActiveStatusName(DeviceActiveStatusEnum.getCodeToName(deviceVO.getActiveStatus())); deviceVOList.add(deviceVO); }); vo.setDeviceVOList(deviceVOList); vo.setDevCount(deviceVOList.size()); } CareOrganization careOrganization = this.careOrganizationService.getById(vo.getOrgId()); if(careOrganization != null){ vo.setOrgName(careOrganization.getName()); } return vo; } /** * 查询登陆人,所能看到的 服务站列表 * @param loginUser * @return */ public List queryStationsForSelect(UserLogindConvertVO loginUser){ List datas = Lists.newArrayList(); if (loginUser == null){ return datas; } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(loginUser.getOrgId()!=null,CareStation::getOrgId,loginUser.getOrgId()); queryWrapper.lambda().eq(loginUser.getStationId()!=null,CareStation::getId,loginUser.getStationId()); List stations = this.careStationService.list(queryWrapper); if (CollUtil.isNotEmpty(stations)){ stations.forEach(item -> { StationVO vo = new StationVO(); BeanUtil.copyProperties(item,vo); datas.add(vo); }); } return datas; } public Long addStation(StationVO vo) throws BDException { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(CareStation::getName,vo.getName()); int count = this.careStationService.count(queryWrapper); if(count > 0){ throw new BDException("服务站名称已经存在!"); } CareStation careStation = new CareStation(); BeanUtil.copyProperties(vo,careStation); careStation.setCode(getCode()); careStation.setCreateTime(new Date()); boolean flag = this.careStationService.save(careStation); if (!flag) { throw new BDException("新增服务站失败!"); } return careStation.getId(); } private String getCode(){ String code = RandomCodeUtil.radomNumberCode(10); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(CareStation::getCode,code); CareStation careStationDb1 = this.careStationService.getOne(queryWrapper); if(careStationDb1 == null) { return code; } else { return getCode(); } } }