package doumeemes.service.business.impl; import doumeemes.core.exception.BusinessException; import doumeemes.core.model.ApiResponse; import doumeemes.core.model.LoginUserInfo; import doumeemes.core.model.PageData; import doumeemes.core.model.PageWrap; import doumeemes.core.utils.Constants; import doumeemes.core.utils.Utils; import doumeemes.dao.business.UserDeviceMapper; import doumeemes.dao.business.model.CompanyUser; import doumeemes.dao.business.model.UserDevice; import doumeemes.service.business.UserDeviceService; 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 org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; /** * 设置类-人员绑定设备关联表Service实现 * @author 江蹄蹄 * @date 2022/05/10 09:30 */ @Service public class UserDeviceServiceImpl implements UserDeviceService { @Autowired private UserDeviceMapper userDeviceMapper; @Autowired private CompanyUserServiceImpl companyUserService; @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public ApiResponse create(UserDevice userDevice) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(StringUtils.isNotEmpty(userDevice.getUserIds())){ String [] ids=userDevice.getUserIds().split(","); try { for (String id : ids) { CompanyUser companyUser = companyUserService.findById(Integer.valueOf(id)); //查询人员是否绑定设备 UserDevice queryparam = new UserDevice(); queryparam.setDeleted(Constants.ZERO); queryparam.setDeviceId(userDevice.getDeviceId()); queryparam.setCompanyUserId(companyUser.getId()); queryparam.setUserId(companyUser.getUserId()); List findList = this.findList(queryparam); if (findList.size() > 0) { throw new RuntimeException(); } userDevice.setCompanyUserId(companyUser.getId()); userDevice.setUserId(companyUser.getUserId()); userDevice.setCreateTime(new Date()); userDevice.setCreateUser(user.getId()); userDevice.setDeleted(Constants.ZERO); userDevice.setDeviceDate(new Date()); userDeviceMapper.insert(userDevice); } }catch (Exception e){ return ApiResponse.failed("人员设备已关联!"); } } return ApiResponse.success(null); } @Override public void deleteById(Integer id) { UserDevice find=this.findById(id); find.setDeleted(Constants.ONE); userDeviceMapper.updateById(find); } @Override public void delete(UserDevice userDevice) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(userDevice); userDeviceMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } for(Integer id:ids){ UserDevice find=this.findById(id); find.setDeleted(Constants.ONE); userDeviceMapper.updateById(find); } // userDeviceMapper.deleteBatchIds(ids); } @Override public ApiResponse updateById(UserDevice userDevice) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); CompanyUser companyUser = companyUserService.findById(userDevice.getCompanyUserId()); //查询人员是否绑定设备 UserDevice queryparam=new UserDevice(); queryparam.setDeleted(Constants.ZERO); queryparam.setDeviceId(userDevice.getDeviceId()); queryparam.setCompanyUserId(userDevice.getCompanyUserId()); queryparam.setUserId(companyUser.getUserId()); List findList=this.findList(queryparam); if(findList.size()>0){ if(findList.get(0).getId()!=userDevice.getId()){ return ApiResponse.failed("人员设备已关联!"); } } UserDevice find=this.findById(userDevice.getId()); find.setUpdateUser(user.getId()); find.setUpdateTime(new Date()); find.setDeviceId(userDevice.getDeviceId()); find.setDeviceDate(new Date()); find.setCompanyUserId(userDevice.getCompanyUserId()); find.setUserId(userDevice.getUserId()); return ApiResponse.success(userDeviceMapper.updateById(find)); } @Override public void updateByIdInBatch(List userDevices) { if (CollectionUtils.isEmpty(userDevices)) { return; } for (UserDevice userDevice: userDevices) { this.updateById(userDevice); } } @Override public UserDevice findById(Integer id) { return userDeviceMapper.selectById(id); } @Override public UserDevice findOne(UserDevice userDevice) { QueryWrapper wrapper = new QueryWrapper<>(userDevice); return userDeviceMapper.selectOne(wrapper); } @Override public List findList(UserDevice userDevice) { QueryWrapper wrapper = new QueryWrapper<>(userDevice); return userDeviceMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.lambda() .eq(pageWrap.getModel().getId() != null, UserDevice::getId, pageWrap.getModel().getId()) .eq(pageWrap.getModel().getDeleted() != null, UserDevice::getDeleted, pageWrap.getModel().getDeleted()) .eq(pageWrap.getModel().getCreateUser() != null, UserDevice::getCreateUser, pageWrap.getModel().getCreateUser()) .ge(pageWrap.getModel().getCreateTime() != null, UserDevice::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime())) .le(pageWrap.getModel().getCreateTime() != null, UserDevice::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime())) .eq(pageWrap.getModel().getUpdateUser() != null, UserDevice::getUpdateUser, pageWrap.getModel().getUpdateUser()) .ge(pageWrap.getModel().getUpdateTime() != null, UserDevice::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime())) .le(pageWrap.getModel().getUpdateTime() != null, UserDevice::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime())) .eq(pageWrap.getModel().getRemark() != null, UserDevice::getRemark, pageWrap.getModel().getRemark()) .eq(pageWrap.getModel().getCompanyUserId() != null, UserDevice::getCompanyUserId, pageWrap.getModel().getCompanyUserId()) .eq(pageWrap.getModel().getDeviceId() != null, UserDevice::getDeviceId, pageWrap.getModel().getDeviceId()) .ge(pageWrap.getModel().getDeviceDate() != null, UserDevice::getDeviceDate, Utils.Date.getStart(pageWrap.getModel().getDeviceDate())) .le(pageWrap.getModel().getDeviceDate() != null, UserDevice::getDeviceDate, Utils.Date.getEnd(pageWrap.getModel().getDeviceDate())) .eq(pageWrap.getModel().getUserId() != null, UserDevice::getUserId, pageWrap.getModel().getUserId()) ; for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); } else { queryWrapper.orderByAsc(sortData.getProperty()); } } return PageData.from(userDeviceMapper.selectPage(page, queryWrapper)); } @Override public long count(UserDevice userDevice) { QueryWrapper wrapper = new QueryWrapper<>(userDevice); return userDeviceMapper.selectCount(wrapper); } }