package com.fdkankan.manage_jp.service.impl; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fdkankan.common.util.DateUtil; import com.fdkankan.manage_jp.common.Constant; import com.fdkankan.manage_jp.common.PageInfo; import com.fdkankan.manage_jp.common.ResultCode; import com.fdkankan.manage_jp.entity.Camera; import com.fdkankan.manage_jp.entity.CameraDetail; import com.fdkankan.manage_jp.entity.Company; import com.fdkankan.manage_jp.entity.User; import com.fdkankan.manage_jp.exception.BusinessException; import com.fdkankan.manage_jp.httpClient.param.SSToBind; import com.fdkankan.manage_jp.httpClient.service.LaserService; import com.fdkankan.manage_jp.mapper.ICameraMapper; import com.fdkankan.manage_jp.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.manage_jp.vo.request.CameraAddParam; import com.fdkankan.manage_jp.vo.request.CameraListParam; import com.fdkankan.manage_jp.vo.request.RequestCamera; import com.fdkankan.manage_jp.vo.response.ResponseCamera; import com.github.yulichang.base.MPJBaseServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** *

* 相机主表 服务实现类 *

* * @author * @since 2022-12-30 */ @Service public class CameraServiceImpl extends MPJBaseServiceImpl implements ICameraService { @Autowired ICameraDetailService cameraDetailService; @Autowired ICompanyService companyService; @Autowired IUserService userService; @Autowired IUserRoleService userRoleService; @Autowired ISceneProService sceneProService; @Autowired IScenePlusService scenePlusService; @Autowired LaserService laserService; @Override public Camera findByChildName(String childName) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Camera::getChildName,childName); return this.getOne(wrapper); } @Override public Object pageList(CameraListParam param,User user) { Set roleIds = userRoleService.getByUser(user); if(roleIds.contains(6L)){ param.setCompanyId(user.getCompanyId()); } Page page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(),param.getPageSize()),param); for (ResponseCamera record : page.getRecords()) { record.setCameraType(record.getType()); } return PageInfo.PageInfo(page); } @Override public void add(CameraAddParam param) { if(StringUtils.isBlank(param.getChildName()) && StringUtils.isBlank(param.getSnCode())){ throw new BusinessException(ResultCode.PARAM_ERROR); } if(!param.getChildName().equals(param.getSnCode())){ throw new BusinessException(ResultCode.PARAM_ERROR); } List byChildNames = this.getByChildNames(Arrays.asList(param.getChildName())); if(byChildNames !=null && byChildNames.size() >0){ throw new BusinessException(ResultCode.CAMERA_IN); } Camera camera = new Camera(); camera.setChildName(param.getChildName()); camera.setChildPassword(Constant.CHILD_PASSWORD_VALUE); camera.setSnCode(param.getSnCode()); camera.setWifiName(param.getWifiName()); camera.setWifiPassword(Constant.WIFI_PASSWORD_VALUE); // camera.setActivatedTime(DateUtil.date2String(new Date(),"yyyy-MM-dd HH:mm:ss")); this.save(camera); CameraDetail detail = new CameraDetail(); detail.setOwn(param.getOwn()); detail.setTotalSpace(0L); detail.setUsedSpace(0L); detail.setCameraId(camera.getId()); detail.setType(param.getCameraType()); if(param.getCameraType() == 9){ detail.setGoodsId(9L); }else if(param.getCameraType() == 10){ detail.setGoodsId(10L); }else{ detail.setGoodsId(param.getCameraType() == 0 ? 1L : 4L); } detail.setOutTime(new Date()); detail.setAgency(Constant.DEFAULT_AGENT); detail.setAddress(param.getAddress()); // detail.setCompanyId(112L); cameraDetailService.save(detail); } @Override public void updateByParam(CameraAddParam param) { if(param.getCameraId() == null || param.getOwn() == null ){ throw new BusinessException(ResultCode.PARAM_ERROR); } cameraDetailService.updateOwnByCameraId(param.getCameraId(),param.getOwn()); } @Override public void unbind(CameraAddParam param) { if(StringUtils.isBlank(param.getChildName())){ throw new BusinessException(ResultCode.PARAM_ERROR); } Camera camera = this.findByChildName(param.getChildName()); if(camera == null){ throw new BusinessException(ResultCode.PARAM_ERROR); } CameraDetail cameraDetail = cameraDetailService.getByCameraId(camera.getId()); if(cameraDetail == null){ throw new BusinessException(ResultCode.PARAM_ERROR); } LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(Camera::getId,camera.getId()); wrapper.set(Camera::getActivatedTime,null); this.update(wrapper); cameraDetailService.unbind(camera.getId()); sceneProService.unbind(camera.getId(),null); scenePlusService.unbind(camera.getId(),null); if(cameraDetail.getType() == 10){ laserService.toBind(Arrays.asList(camera.getSnCode()),false,null); } } @Override public void bind(CameraAddParam param) { if(param.getChildNames() == null || param.getChildNames().size() <=0 || param.getCompanyId() == null){ throw new BusinessException(ResultCode.PARAM_ERROR); } Company company = companyService.getById(param.getCompanyId()); if(company == null){ throw new BusinessException(ResultCode.COMPANY_NOT_EXIST); } User user = userService.getById(company.getManagerId()); if(user == null){ throw new BusinessException(ResultCode.USER_NOT_EXIST); } LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.in(Camera::getChildName,param.getChildNames()); wrapper.set(Camera::getActivatedTime, DateUtil.date2String(new Date(),"yyyy-MM-dd HH:mm:ss")); this.update(wrapper); List byChildNames = this.getByChildNames(param.getChildNames()); List cameraIds = byChildNames.stream().map(Camera::getId).collect(Collectors.toList()); cameraDetailService.bind(cameraIds,param.getCompanyId()); for (Long cameraId : cameraIds) { sceneProService.unbind(cameraId, user.getId()); scenePlusService.unbind(cameraId,user.getId()); } } @Override public List getByChildNames(List childNames) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(Camera::getChildName,childNames); return this.list(wrapper); } @Override public List getByWiFiName(List wifiNames) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(Camera::getWifiName,wifiNames); return this.list(wrapper); } @Override public List getLikeChildName(String childName) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.like(Camera::getChildName,childName); return this.list(wrapper); } @Override public Object getByUser(Long userId, Long oldCameraId) { CameraDetail cameraDetail = cameraDetailService.getByCameraId(oldCameraId); if(cameraDetail == null){ return null; } List cameraDetails = cameraDetailService.getByUserIdAndType(userId,cameraDetail.getType()); if(cameraDetails.isEmpty()){ return null; } List cameraIds = cameraDetails.stream().map(CameraDetail::getCameraId).collect(Collectors.toList()); return this.listByIds(cameraIds); } }