|  |  |  | 
|---|
|  |  |  | package com.doumee.service.business.impl; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
|---|
|  |  |  | import com.doumee.core.constants.ResponseStatus; | 
|---|
|  |  |  | import com.doumee.core.exception.BusinessException; | 
|---|
|  |  |  | import com.doumee.core.model.LoginUserInfo; | 
|---|
|  |  |  | import com.doumee.core.model.PageData; | 
|---|
|  |  |  | import com.doumee.core.model.PageWrap; | 
|---|
|  |  |  | import com.doumee.core.model.openapi.request.RoleListRequest; | 
|---|
|  |  |  | import com.doumee.core.model.openapi.response.DeviceListResponse; | 
|---|
|  |  |  | import com.doumee.core.model.openapi.response.RoleListResponse; | 
|---|
|  |  |  | import com.doumee.core.erp.model.openapi.request.RoleListRequest; | 
|---|
|  |  |  | import com.doumee.core.erp.model.openapi.response.DeviceListResponse; | 
|---|
|  |  |  | import com.doumee.core.erp.model.openapi.response.RoleListResponse; | 
|---|
|  |  |  | import com.doumee.core.utils.Constants; | 
|---|
|  |  |  | import com.doumee.core.utils.Utils; | 
|---|
|  |  |  | import com.doumee.dao.business.DeviceMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.DeviceRoleMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.model.Device; | 
|---|
|  |  |  | import com.doumee.dao.business.model.DeviceRole; | 
|---|
|  |  |  | import com.doumee.dao.business.model.Member; | 
|---|
|  |  |  | import com.doumee.dao.web.response.DeviceRoleVO; | 
|---|
|  |  |  | import com.doumee.service.business.DeviceRoleService; | 
|---|
|  |  |  | 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.doumee.service.business.MemberService; | 
|---|
|  |  |  | import io.swagger.models.auth.In; | 
|---|
|  |  |  | import org.apache.commons.collections.CollectionUtils; | 
|---|
|  |  |  | import org.apache.commons.lang3.StringUtils; | 
|---|
|  |  |  | import org.apache.shiro.SecurityUtils; | 
|---|
|  |  |  | import org.checkerframework.checker.units.qual.C; | 
|---|
|  |  |  | import org.springframework.beans.BeanUtils; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.context.annotation.Bean; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DeviceRoleMapper deviceRoleMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private MemberService memberService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public Integer create(DeviceRole deviceRole) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | QueryWrapper<DeviceRole> query = new QueryWrapper<>(); | 
|---|
|  |  |  | query.lambda() | 
|---|
|  |  |  | .eq(DeviceRole::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(DeviceRole::getType,deviceRole.getType()) | 
|---|
|  |  |  | .eq(DeviceRole::getStatus,Constants.ONE); | 
|---|
|  |  |  | List<DeviceRole> deviceRoles = deviceRoleMapper.selectList(query); | 
|---|
|  |  |  | if (CollectionUtils.isNotEmpty(deviceRoles) && Constants.equalsInteger(Constants.ONE,deviceRole.getStatus())){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"管理内部员工只能有一个默认门禁组"); | 
|---|
|  |  |  | // 获取之前是否存在默认门禁组 | 
|---|
|  |  |  | DeviceRole newDeviceRole = null; | 
|---|
|  |  |  | if(null != deviceRole.getType()) { | 
|---|
|  |  |  | newDeviceRole = getDeviceRole(deviceRole.getType()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | LoginUserInfo loginUserInfo = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal(); | 
|---|
|  |  |  | if(null != newDeviceRole) { | 
|---|
|  |  |  | DeviceRole updateDeviceRole = new DeviceRole(); | 
|---|
|  |  |  | // 若现在新增数据设置默认门禁组;那么先把之前的默认门禁组状态改为不是默认的 | 
|---|
|  |  |  | updateDeviceRole.setId(newDeviceRole.getId()); | 
|---|
|  |  |  | updateDeviceRole.setEdirot(loginUserInfo.getId().toString()); | 
|---|
|  |  |  | updateDeviceRole.setEditDate(new Date()); | 
|---|
|  |  |  | updateDeviceRole.setIsDefault(Constants.ONE); | 
|---|
|  |  |  | deviceRoleMapper.updateById(updateDeviceRole); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | DeviceRole insert = new DeviceRole(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | insert.setCreator(loginUserInfo.getId().toString()); | 
|---|
|  |  |  | insert.setCreateDate(new Date()); | 
|---|
|  |  |  | insert.setEdirot(loginUserInfo.getId().toString()); | 
|---|
|  |  |  | 
|---|
|  |  |  | insert.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | insert.setRemark(deviceRole.getRemark()); | 
|---|
|  |  |  | insert.setName(deviceRole.getName()); | 
|---|
|  |  |  | insert.setIsDefault(Constants.equalsInteger(Constants.ONE,deviceRole.getStatus()) ? 0 : 1); | 
|---|
|  |  |  | insert.setIsDefault(deviceRole.getIsDefault()); | 
|---|
|  |  |  | insert.setType(deviceRole.getType()); | 
|---|
|  |  |  | insert.setDoorIds(deviceRole.getDoorIds()); | 
|---|
|  |  |  | insert.setDoorNames(deviceRole.getDoorNames()); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void updateById(DeviceRole deviceRole) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | QueryWrapper<DeviceRole> query = new QueryWrapper<>(); | 
|---|
|  |  |  | query.lambda() | 
|---|
|  |  |  | .eq(DeviceRole::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(DeviceRole::getType,deviceRole.getType()) | 
|---|
|  |  |  | .eq(DeviceRole::getStatus,Constants.ONE); | 
|---|
|  |  |  | List<DeviceRole> deviceRoles = deviceRoleMapper.selectList(query); | 
|---|
|  |  |  | if (CollectionUtils.isNotEmpty(deviceRoles) && Constants.equalsInteger(Constants.ONE,deviceRole.getStatus())){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"管理内部员工只能有一个默认门禁组"); | 
|---|
|  |  |  | DeviceRole newDeviceRole = null; | 
|---|
|  |  |  | if(null != deviceRole.getType()) { | 
|---|
|  |  |  | newDeviceRole = getDeviceRole(deviceRole.getType()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | deviceRole.setIsDefault(Constants.equalsInteger(Constants.ONE,deviceRole.getStatus()) ? 0 : 1); | 
|---|
|  |  |  | LoginUserInfo loginUserInfo = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal(); | 
|---|
|  |  |  | if(null != newDeviceRole) { | 
|---|
|  |  |  | DeviceRole update = new DeviceRole(); | 
|---|
|  |  |  | update.setEdirot(loginUserInfo.getId().toString()); | 
|---|
|  |  |  | update.setEditDate(new Date()); | 
|---|
|  |  |  | update.setId(newDeviceRole.getId()); | 
|---|
|  |  |  | update.setIsDefault(Constants.ONE); | 
|---|
|  |  |  | deviceRoleMapper.updateById(update); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | deviceRoleMapper.updateById(deviceRole); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void updateStatusById(DeviceRole deviceRole) { | 
|---|
|  |  |  | QueryWrapper<DeviceRole> query = new QueryWrapper<>(); | 
|---|
|  |  |  | query.lambda() | 
|---|
|  |  |  | .eq(DeviceRole::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(DeviceRole::getType,deviceRole.getType()) | 
|---|
|  |  |  | .eq(DeviceRole::getStatus,Constants.ONE); | 
|---|
|  |  |  | List<DeviceRole> deviceRoles = deviceRoleMapper.selectList(query); | 
|---|
|  |  |  | if (CollectionUtils.isNotEmpty(deviceRoles) && Constants.equalsInteger(Constants.ONE,deviceRole.getStatus())){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"管理内部员工只能有一个默认门禁组"); | 
|---|
|  |  |  | // 获取之前是否存在默认门禁组 | 
|---|
|  |  |  | DeviceRole newDeviceRole = null; | 
|---|
|  |  |  | if(null != deviceRole.getType()) { | 
|---|
|  |  |  | newDeviceRole = getDeviceRole(deviceRole.getType()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | LoginUserInfo loginUserInfo = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal(); | 
|---|
|  |  |  | DeviceRole update = new DeviceRole(); | 
|---|
|  |  |  | update.setEdirot(loginUserInfo.getId().toString()); | 
|---|
|  |  |  | update.setEditDate(new Date()); | 
|---|
|  |  |  | update.setId(deviceRole.getId()); | 
|---|
|  |  |  | update.setStatus(deviceRole.getStatus()); | 
|---|
|  |  |  | update.setIsDefault(Constants.equalsInteger(Constants.ONE,deviceRole.getStatus()) ? 0 : 1); | 
|---|
|  |  |  | deviceRoleMapper.updateById(update); | 
|---|
|  |  |  | List<DeviceRole> deviceRoleList = new ArrayList<>(); | 
|---|
|  |  |  | if(null != newDeviceRole) { | 
|---|
|  |  |  | DeviceRole update = new DeviceRole(); | 
|---|
|  |  |  | update.setEdirot(loginUserInfo.getId().toString()); | 
|---|
|  |  |  | update.setEditDate(new Date()); | 
|---|
|  |  |  | update.setId(newDeviceRole.getId()); | 
|---|
|  |  |  | update.setStatus(newDeviceRole.getStatus()); | 
|---|
|  |  |  | update.setIsDefault(Constants.ONE); | 
|---|
|  |  |  | deviceRoleList.add(update); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | DeviceRole updateTwo = new DeviceRole(); | 
|---|
|  |  |  | updateTwo.setEdirot(loginUserInfo.getId().toString()); | 
|---|
|  |  |  | updateTwo.setEditDate(new Date()); | 
|---|
|  |  |  | updateTwo.setId(deviceRole.getId()); | 
|---|
|  |  |  | updateTwo.setStatus(deviceRole.getStatus()); | 
|---|
|  |  |  | updateTwo.setIsDefault(deviceRole.getIsDefault()); | 
|---|
|  |  |  | deviceRoleList.add(updateTwo); | 
|---|
|  |  |  | // 最多2条,所有就没有写批量修改了 | 
|---|
|  |  |  | for (DeviceRole data:deviceRoleList) { | 
|---|
|  |  |  | deviceRoleMapper.updateById(data); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private DeviceRole getDeviceRole(String type) { | 
|---|
|  |  |  | LambdaQueryWrapper<DeviceRole> query = new LambdaQueryWrapper<>(); | 
|---|
|  |  |  | query.eq(DeviceRole::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(DeviceRole::getIsDefault,Constants.ZERO) | 
|---|
|  |  |  | .eq(DeviceRole::getType,type); | 
|---|
|  |  |  | // 查询是否有默认门禁组,只能有一组默认门禁组 | 
|---|
|  |  |  | DeviceRole getDeviceRole = deviceRoleMapper.selectOne(query); | 
|---|
|  |  |  | return getDeviceRole; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | 
|---|
|  |  |  | IPage<DeviceRole> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|---|
|  |  |  | QueryWrapper<DeviceRole> queryWrapper = new QueryWrapper<>(); | 
|---|
|  |  |  | Utils.MP.blankToNull(pageWrap.getModel()); | 
|---|
|  |  |  | pageWrap.getModel().setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | if (pageWrap.getModel().getId() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(DeviceRole::getId, pageWrap.getModel().getId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | if (pageWrap.getModel().getIsDefault() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(DeviceRole::getIsDefault, pageWrap.getModel().getIsDefault()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getType() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(DeviceRole::getType, pageWrap.getModel().getType()); | 
|---|
|  |  |  | if (StringUtils.isNotBlank(pageWrap.getModel().getType())) { | 
|---|
|  |  |  | if(pageWrap.getModel().getType().length() > 1) { | 
|---|
|  |  |  | String[] types = pageWrap.getModel().getType().split(","); | 
|---|
|  |  |  | queryWrapper.lambda().and(p-> p.eq(DeviceRole::getType, types[0]) | 
|---|
|  |  |  | .or() | 
|---|
|  |  |  | .eq(DeviceRole::getType, types[1])); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | queryWrapper.lambda().eq(DeviceRole::getType, pageWrap.getModel().getType()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getDoorIds() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(DeviceRole::getDoorIds, pageWrap.getModel().getDoorIds()); | 
|---|
|  |  |  | 
|---|
|  |  |  | if (pageWrap.getModel().getStatus() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(DeviceRole::getStatus, pageWrap.getModel().getStatus()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | queryWrapper.select("t_aa.*," + | 
|---|
|  |  |  | "(SELECT count(DISTINCT `KEY`) FROM `test` WHERE `test`.`key` = `t_aa`.id ) "); | 
|---|
|  |  |  | for(PageWrap.SortData sortData: pageWrap.getSorts()) { | 
|---|
|  |  |  | if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { | 
|---|
|  |  |  | queryWrapper.orderByDesc(sortData.getProperty()); | 
|---|
|  |  |  | 
|---|
|  |  |  | queryWrapper.orderByAsc(sortData.getProperty()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return PageData.from(deviceRoleMapper.selectPage(page, queryWrapper)); | 
|---|
|  |  |  | IPage<DeviceRole> newPage = deviceRoleMapper.selectPage(page, queryWrapper); | 
|---|
|  |  |  | if(null != newPage && newPage.getRecords().size() > 0) { | 
|---|
|  |  |  | List<DeviceRole> deviceRoleList = newPage.getRecords(); | 
|---|
|  |  |  | for (DeviceRole dto:deviceRoleList) { | 
|---|
|  |  |  | Member member = new Member(); | 
|---|
|  |  |  | member.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | member.setRoleIdParam("["+dto.getId()+"]"); | 
|---|
|  |  |  | dto.setMemberNum((int) memberService.count(member)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | newPage.setRecords(deviceRoleList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return PageData.from(newPage); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | 
|---|
|  |  |  | List<DeviceRole> deviceRoleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda() | 
|---|
|  |  |  | .eq(DeviceRole::getType,type) | 
|---|
|  |  |  | .eq(DeviceRole::getIsdeleted, Constants.ZERO) | 
|---|
|  |  |  | .eq(DeviceRole::getStatus, Constants.ZERO) | 
|---|
|  |  |  | .eq(DeviceRole::getStatus, Constants.ONE) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | List<DeviceRoleVO> deviceRoleVOList = new ArrayList<>(); | 
|---|
|  |  |  | for (DeviceRole deviceRole:deviceRoleList) { | 
|---|