BmsSysUserService.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. package com.care.bms.service;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.collection.CollUtil;
  4. import cn.hutool.core.util.StrUtil;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.core.metadata.IPage;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.care.common.entity.*;
  9. import com.care.common.enums.UserRoleEnum;
  10. import com.care.common.exception.BDException;
  11. import com.care.common.service.*;
  12. import com.care.common.util.MyBeanUtils;
  13. import com.care.common.vo.PageReqVO;
  14. import com.care.common.vo.UserLogindConvertVO;
  15. import com.care.common.vo.device.DeviceVO;
  16. import com.care.common.vo.sysuser.CareSysUserVO;
  17. import org.apache.commons.codec.digest.DigestUtils;
  18. import org.springframework.beans.BeanUtils;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.transaction.annotation.Transactional;
  21. import javax.annotation.Resource;
  22. import java.util.ArrayList;
  23. import java.util.Date;
  24. import java.util.List;
  25. /**
  26. * 安全管家表(CareSysUser)表服务实现类
  27. *
  28. * @author makejava
  29. * @since 2021-05-21 00:08:38
  30. */
  31. @Service
  32. public class BmsSysUserService{
  33. @Resource
  34. private CareOrganizationService careOrganizationService;
  35. @Resource
  36. private CareStationService careStationService;
  37. @Resource
  38. private CareSysUserService careSysUserService;
  39. @Resource
  40. private CareDeviceService careDeviceService;
  41. @Resource
  42. private CareEventOrderChambService careEventOrderChambService;
  43. @Resource
  44. private CareHouseService careHouseService;
  45. public UserLogindConvertVO getLoginUser(String orgCode, String phone,String password) {
  46. UserLogindConvertVO userLogindConvertVO = null;
  47. QueryWrapper<CareOrganization> organizationQueryWrapper = new QueryWrapper<>();
  48. organizationQueryWrapper.lambda().eq(CareOrganization::getOrgCode,orgCode);
  49. CareOrganization org = this.careOrganizationService.getOne(organizationQueryWrapper);
  50. if (org == null){
  51. return null;
  52. }
  53. QueryWrapper<CareSysUser> userQueryWrapper = new QueryWrapper<>();
  54. userQueryWrapper.lambda().eq(CareSysUser::getOrgId,org.getId())
  55. .eq(CareSysUser::getPhone,phone);
  56. CareSysUser user = this.careSysUserService.getOne(userQueryWrapper);
  57. if (user != null){
  58. userLogindConvertVO = new UserLogindConvertVO();
  59. BeanUtil.copyProperties(user,userLogindConvertVO);
  60. userLogindConvertVO.setOrgName(org.getName());
  61. userLogindConvertVO.setSystemName(org.getSystemName());
  62. userLogindConvertVO.setLogo(org.getLogo());
  63. String md5Password = DigestUtils.md5Hex(password);
  64. if (!md5Password.equalsIgnoreCase(user.getPassword())) {
  65. throw new BDException("用户名或密码错误");
  66. }
  67. }
  68. return userLogindConvertVO;
  69. }
  70. /**
  71. * 查询某服务站下的 安全管家列表
  72. * @param stationId
  73. * @return
  74. */
  75. public List<CareSysUserVO> queryKeeperListByStationId(Long stationId){
  76. List<CareSysUserVO> datas = new ArrayList<>();
  77. QueryWrapper<CareSysUser> userQueryWrapper = new QueryWrapper<>();
  78. userQueryWrapper.lambda().eq(stationId != null,CareSysUser::getStationId,stationId)
  79. .eq(CareSysUser::getRole, UserRoleEnum.CHANMB.getValue())
  80. .orderByAsc(CareSysUser::getName);
  81. List<CareSysUser> users = this.careSysUserService.list(userQueryWrapper);
  82. if (users != null){
  83. users.forEach(item -> {
  84. CareSysUserVO vo = new CareSysUserVO();
  85. BeanUtil.copyProperties(item,vo);
  86. datas.add(vo);
  87. });
  88. }
  89. return datas;
  90. }
  91. /**
  92. * 查询安全管家列表
  93. * @param stationId
  94. * @return
  95. */
  96. public IPage<CareSysUserVO> listCareSysUser(String name,String phone, Long stationId,UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
  97. IPage<CareSysUser> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
  98. QueryWrapper<CareSysUser> queryWrapper = new QueryWrapper<>();
  99. queryWrapper.lambda().like(StrUtil.isNotEmpty(name),CareSysUser::getName,name)
  100. .like(StrUtil.isNotEmpty(phone),CareSysUser::getPhone,phone)
  101. .eq(CareSysUser::getOrgId,loginUser.getOrgId())
  102. .eq(loginUser.getStationId()!=null,CareSysUser::getStationId,loginUser.getStationId())
  103. .eq(stationId!=null,CareSysUser::getStationId,stationId)
  104. .eq(CareSysUser::getRole,UserRoleEnum.CHANMB.getValue())
  105. .orderByAsc(CareSysUser::getName);
  106. IPage<CareSysUser> pageRes = this.careSysUserService.page(page, queryWrapper);
  107. IPage<CareSysUserVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
  108. if(CollUtil.isNotEmpty(pageRes.getRecords())){
  109. List<CareSysUserVO> list = new ArrayList<>();
  110. pageRes.getRecords().forEach(item -> {
  111. CareSysUserVO resVO = new CareSysUserVO();
  112. BeanUtils.copyProperties(item,resVO);
  113. //服务设备数量
  114. QueryWrapper<CareDevice> queryWrapper1 = new QueryWrapper<>();
  115. queryWrapper1.lambda().eq(CareDevice::getChambId,resVO.getId());
  116. resVO.setDevCount(this.careDeviceService.count(queryWrapper1));
  117. //服务次数
  118. QueryWrapper<CareEventOrderChamb> queryWrapper2 = new QueryWrapper<>();
  119. queryWrapper2.lambda().eq(CareEventOrderChamb::getChambId,resVO.getId()).ne(CareEventOrderChamb::getStatus,"3");
  120. resVO.setServeCount(this.careEventOrderChambService.count(queryWrapper2));
  121. CareStation station = this.careStationService.getById(resVO.getStationId());
  122. if (station!=null){
  123. resVO.setStationName(station.getShortName());
  124. }
  125. list.add(resVO);
  126. });
  127. results.setRecords(list);
  128. }
  129. return results;
  130. }
  131. /**
  132. * 删除管家
  133. * @param id
  134. * @return
  135. */
  136. public boolean deleteById(Long id){
  137. return this.careSysUserService.removeById(id);
  138. }
  139. /**
  140. * 详情
  141. * @param id
  142. * @return
  143. */
  144. public CareSysUserVO getCareSysUserById(Long id){
  145. CareSysUser careSysUser = this.careSysUserService.getById(id);
  146. if (careSysUser!=null){
  147. CareSysUserVO resVO = new CareSysUserVO();
  148. BeanUtil.copyProperties(careSysUser,resVO);
  149. //服务设备数量和列表
  150. QueryWrapper<CareDevice> queryWrapper1 = new QueryWrapper<>();
  151. queryWrapper1.lambda().eq(CareDevice::getChambId,resVO.getId());
  152. List<CareDevice> hasDeviceList = this.careDeviceService.list(queryWrapper1);
  153. if(CollUtil.isNotEmpty(hasDeviceList)){
  154. List<DeviceVO> hasDeviceVOList = new ArrayList<>();
  155. hasDeviceList.forEach(item ->{
  156. DeviceVO deviceVO = new DeviceVO();
  157. BeanUtil.copyProperties(item,deviceVO);
  158. deviceVO.setHouseAddr(careHouseService.getById(deviceVO.getHouseId()).getAddr());
  159. hasDeviceVOList.add(deviceVO);
  160. });
  161. resVO.setHasDeviceVOList(hasDeviceVOList);
  162. resVO.setDevCount(hasDeviceVOList.size());
  163. } else {
  164. resVO.setDevCount(0);
  165. }
  166. //服务次数
  167. QueryWrapper<CareEventOrderChamb> queryWrapper2 = new QueryWrapper<>();
  168. queryWrapper2.lambda().eq(CareEventOrderChamb::getChambId,resVO.getId()).ne(CareEventOrderChamb::getStatus,"3");
  169. resVO.setServeCount(this.careEventOrderChambService.count(queryWrapper2));
  170. CareStation station = this.careStationService.getById(resVO.getStationId());
  171. if (station!=null){
  172. resVO.setStationName(station.getShortName());
  173. }
  174. //空闲设备列表
  175. resVO.setFreeDeviceVOList(getFreeDeviceVOList());
  176. return resVO;
  177. }
  178. return null;
  179. }
  180. /**
  181. * 获取空闲设备列表
  182. * @return
  183. */
  184. public List<DeviceVO> getFreeDeviceVOList(){
  185. QueryWrapper<CareDevice> queryWrapper = new QueryWrapper<>();
  186. queryWrapper.lambda().isNull(CareDevice::getChambId);
  187. List<CareDevice> freeDeviceList = this.careDeviceService.list(queryWrapper);
  188. List<DeviceVO> freeDeviceVOList = new ArrayList<>();
  189. if(CollUtil.isNotEmpty(freeDeviceList)){
  190. freeDeviceList.forEach(item ->{
  191. DeviceVO deviceVO = new DeviceVO();
  192. BeanUtil.copyProperties(item,deviceVO);
  193. deviceVO.setHouseAddr(careHouseService.getById(deviceVO.getHouseId()).getAddr());
  194. freeDeviceVOList.add(deviceVO);
  195. });
  196. }
  197. return freeDeviceVOList;
  198. }
  199. /**
  200. * 保存管家
  201. * @param vo
  202. */
  203. @Transactional(rollbackFor = Exception.class)
  204. public void createCareSysUser(CareSysUserVO vo,UserLogindConvertVO loginUser){
  205. //保存管家
  206. CareSysUser careSysUser = new CareSysUser();
  207. BeanUtil.copyProperties(vo,careSysUser);
  208. careSysUser.setCreateTime(new Date());
  209. careSysUser.setRole(UserRoleEnum.CHANMB.getValue());
  210. careSysUser.setStationId(loginUser.getStationId());
  211. careSysUser.setOrgId(loginUser.getOrgId());
  212. this.careSysUserService.save(careSysUser);
  213. //更新设备
  214. List<DeviceVO> hasDeviceVOList = vo.getHasDeviceVOList();
  215. if (CollUtil.isNotEmpty(hasDeviceVOList)) {
  216. hasDeviceVOList.forEach(item -> {
  217. CareDevice careDevice = new CareDevice();
  218. BeanUtil.copyProperties(item,careDevice);
  219. careDevice.setChambId(careSysUser.getId());
  220. careDeviceService.updateById(careDevice);
  221. });
  222. }
  223. }
  224. /**
  225. * 修改管家
  226. * @param vo
  227. */
  228. @Transactional(rollbackFor = Exception.class)
  229. public void updateCareSysUser(CareSysUserVO vo){
  230. //保存管家
  231. CareSysUser careSysUser = this.careSysUserService.getById(vo.getId());
  232. MyBeanUtils.copyProperties(vo,careSysUser);
  233. careSysUser.setModifyTime(new Date());
  234. this.careSysUserService.updateById(careSysUser);
  235. List<DeviceVO> hasDeviceVOList = vo.getHasDeviceVOList();
  236. //查找原来拥有的设备
  237. QueryWrapper<CareDevice> queryWrapper = new QueryWrapper<>();
  238. queryWrapper.lambda().eq(CareDevice::getChambId,vo.getId());
  239. List<CareDevice> hasDeviceListOld = this.careDeviceService.list(queryWrapper);
  240. if (CollUtil.isNotEmpty(hasDeviceListOld)) {
  241. for(CareDevice careDevice : hasDeviceListOld){
  242. boolean has = false;
  243. for(DeviceVO deviceVO : hasDeviceVOList) {
  244. if(careDevice.getId().equals(deviceVO.getId())){
  245. has = true;
  246. break;
  247. }
  248. }
  249. if(!has) {
  250. //将不再拥有的设备的管家id置空
  251. this.careDeviceService.updateDevChamb(careDevice.getId());
  252. }
  253. }
  254. }
  255. //更新拥有的设备
  256. if (CollUtil.isNotEmpty(hasDeviceVOList)) {
  257. hasDeviceVOList.forEach(item -> {
  258. CareDevice careDevice = new CareDevice();
  259. BeanUtil.copyProperties(item,careDevice);
  260. careDevice.setChambId(careSysUser.getId());
  261. careDeviceService.updateById(careDevice);
  262. });
  263. }
  264. }
  265. }