BmsSysUserService.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  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. CareOrganization org = careOrganizationService.getById(user.getOrgId());
  59. userLogindConvertVO = new UserLogindConvertVO();
  60. BeanUtil.copyProperties(user,userLogindConvertVO);
  61. userLogindConvertVO.setOrgName(org.getName());
  62. userLogindConvertVO.setSystemName(org.getSystemName());
  63. userLogindConvertVO.setLogo(org.getLogo());
  64. String md5Password = DigestUtils.md5Hex(password);
  65. if (!md5Password.equalsIgnoreCase(user.getPassword())) {
  66. throw new BDException("用户名或密码错误");
  67. }
  68. }
  69. return userLogindConvertVO;
  70. }
  71. /**
  72. * 查询某服务站下的 安全管家列表
  73. * @param stationId
  74. * @return
  75. */
  76. public List<CareSysUserVO> queryKeeperListByStationId(Long stationId){
  77. List<CareSysUserVO> datas = new ArrayList<>();
  78. QueryWrapper<CareSysUser> userQueryWrapper = new QueryWrapper<>();
  79. userQueryWrapper.lambda().eq(stationId != null,CareSysUser::getStationId,stationId)
  80. .eq(CareSysUser::getRole, UserRoleEnum.CHANMB.getValue())
  81. .orderByAsc(CareSysUser::getName);
  82. List<CareSysUser> users = this.careSysUserService.list(userQueryWrapper);
  83. if (users != null){
  84. users.forEach(item -> {
  85. CareSysUserVO vo = new CareSysUserVO();
  86. BeanUtil.copyProperties(item,vo);
  87. datas.add(vo);
  88. });
  89. }
  90. return datas;
  91. }
  92. /**
  93. * 查询安全管家列表
  94. * @param stationId
  95. * @return
  96. */
  97. public IPage<CareSysUserVO> listCareSysUser(String name,String phone, Long stationId,UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
  98. IPage<CareSysUser> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
  99. QueryWrapper<CareSysUser> queryWrapper = new QueryWrapper<>();
  100. queryWrapper.lambda().like(StrUtil.isNotEmpty(name),CareSysUser::getName,name)
  101. .like(StrUtil.isNotEmpty(phone),CareSysUser::getPhone,phone)
  102. .eq(CareSysUser::getOrgId,loginUser.getOrgId())
  103. .eq(loginUser.getStationId()!=null,CareSysUser::getStationId,loginUser.getStationId())
  104. .eq(stationId!=null,CareSysUser::getStationId,stationId)
  105. .eq(CareSysUser::getRole,UserRoleEnum.CHANMB.getValue())
  106. .orderByAsc(CareSysUser::getName);
  107. IPage<CareSysUser> pageRes = this.careSysUserService.page(page, queryWrapper);
  108. IPage<CareSysUserVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
  109. if(CollUtil.isNotEmpty(pageRes.getRecords())){
  110. List<CareSysUserVO> list = new ArrayList<>();
  111. pageRes.getRecords().forEach(item -> {
  112. CareSysUserVO resVO = new CareSysUserVO();
  113. BeanUtils.copyProperties(item,resVO);
  114. //服务设备数量
  115. QueryWrapper<CareDevice> queryWrapper1 = new QueryWrapper<>();
  116. queryWrapper1.lambda().eq(CareDevice::getChambId,resVO.getId());
  117. resVO.setDevCount(this.careDeviceService.count(queryWrapper1));
  118. //服务次数
  119. QueryWrapper<CareEventOrderChamb> queryWrapper2 = new QueryWrapper<>();
  120. queryWrapper2.lambda().eq(CareEventOrderChamb::getChambId,resVO.getId()).ne(CareEventOrderChamb::getStatus,"3");
  121. resVO.setServeCount(this.careEventOrderChambService.count(queryWrapper2));
  122. CareStation station = this.careStationService.getById(resVO.getStationId());
  123. if (station!=null){
  124. resVO.setStationName(station.getShortName());
  125. }
  126. list.add(resVO);
  127. });
  128. results.setRecords(list);
  129. }
  130. return results;
  131. }
  132. /**
  133. * 删除管家
  134. * @param id
  135. * @return
  136. */
  137. public boolean deleteById(Long id){
  138. return this.careSysUserService.removeById(id);
  139. }
  140. /**
  141. * 详情
  142. * @param id
  143. * @return
  144. */
  145. public CareSysUserVO getCareSysUserById(Long id){
  146. CareSysUser careSysUser = this.careSysUserService.getById(id);
  147. if (careSysUser!=null){
  148. CareSysUserVO resVO = new CareSysUserVO();
  149. BeanUtil.copyProperties(careSysUser,resVO);
  150. //服务设备数量和列表
  151. QueryWrapper<CareDevice> queryWrapper1 = new QueryWrapper<>();
  152. queryWrapper1.lambda().eq(CareDevice::getChambId,resVO.getId());
  153. List<CareDevice> hasDeviceList = this.careDeviceService.list(queryWrapper1);
  154. if(CollUtil.isNotEmpty(hasDeviceList)){
  155. List<DeviceVO> hasDeviceVOList = new ArrayList<>();
  156. hasDeviceList.forEach(item ->{
  157. DeviceVO deviceVO = new DeviceVO();
  158. BeanUtil.copyProperties(item,deviceVO);
  159. deviceVO.setHouseAddr(careHouseService.getById(deviceVO.getHouseId()).getAddr());
  160. hasDeviceVOList.add(deviceVO);
  161. });
  162. resVO.setHasDeviceVOList(hasDeviceVOList);
  163. resVO.setDevCount(hasDeviceVOList.size());
  164. } else {
  165. resVO.setDevCount(0);
  166. }
  167. //服务次数
  168. QueryWrapper<CareEventOrderChamb> queryWrapper2 = new QueryWrapper<>();
  169. queryWrapper2.lambda().eq(CareEventOrderChamb::getChambId,resVO.getId()).ne(CareEventOrderChamb::getStatus,"3");
  170. resVO.setServeCount(this.careEventOrderChambService.count(queryWrapper2));
  171. CareStation station = this.careStationService.getById(resVO.getStationId());
  172. if (station!=null){
  173. resVO.setStationName(station.getShortName());
  174. }
  175. //空闲设备列表
  176. resVO.setFreeDeviceVOList(getFreeDeviceVOList());
  177. return resVO;
  178. }
  179. return null;
  180. }
  181. /**
  182. * 获取空闲设备列表
  183. * @return
  184. */
  185. public List<DeviceVO> getFreeDeviceVOList(){
  186. QueryWrapper<CareDevice> queryWrapper = new QueryWrapper<>();
  187. queryWrapper.lambda().isNull(CareDevice::getChambId);
  188. List<CareDevice> freeDeviceList = this.careDeviceService.list(queryWrapper);
  189. List<DeviceVO> freeDeviceVOList = new ArrayList<>();
  190. if(CollUtil.isNotEmpty(freeDeviceList)){
  191. freeDeviceList.forEach(item ->{
  192. DeviceVO deviceVO = new DeviceVO();
  193. BeanUtil.copyProperties(item,deviceVO);
  194. deviceVO.setHouseAddr(careHouseService.getById(deviceVO.getHouseId()).getAddr());
  195. freeDeviceVOList.add(deviceVO);
  196. });
  197. }
  198. return freeDeviceVOList;
  199. }
  200. /**
  201. * 保存管家
  202. * @param vo
  203. */
  204. @Transactional(rollbackFor = Exception.class)
  205. public int createCareSysUser(CareSysUserVO vo,UserLogindConvertVO loginUser){
  206. QueryWrapper<CareSysUser> queryWrapper = new QueryWrapper<>();
  207. queryWrapper.lambda().eq(CareSysUser::getPhone,vo.getPhone());
  208. if(careSysUserService.count(queryWrapper) > 0){
  209. return 1;
  210. }
  211. //保存管家
  212. CareSysUser careSysUser = new CareSysUser();
  213. BeanUtil.copyProperties(vo,careSysUser);
  214. careSysUser.setCreateTime(new Date());
  215. careSysUser.setRole(UserRoleEnum.CHANMB.getValue());
  216. careSysUser.setStationId(loginUser.getStationId());
  217. careSysUser.setOrgId(loginUser.getOrgId());
  218. this.careSysUserService.save(careSysUser);
  219. //更新设备
  220. List<DeviceVO> hasDeviceVOList = vo.getHasDeviceVOList();
  221. if (CollUtil.isNotEmpty(hasDeviceVOList)) {
  222. hasDeviceVOList.forEach(item -> {
  223. CareDevice careDevice = new CareDevice();
  224. BeanUtil.copyProperties(item,careDevice);
  225. careDevice.setChambId(careSysUser.getId());
  226. careDeviceService.updateById(careDevice);
  227. });
  228. }
  229. return 0;
  230. }
  231. /**
  232. * 修改管家
  233. * @param vo
  234. */
  235. @Transactional(rollbackFor = Exception.class)
  236. public void updateCareSysUser(CareSysUserVO vo){
  237. //保存管家
  238. CareSysUser careSysUser = this.careSysUserService.getById(vo.getId());
  239. MyBeanUtils.copyProperties(vo,careSysUser);
  240. careSysUser.setModifyTime(new Date());
  241. this.careSysUserService.updateById(careSysUser);
  242. List<DeviceVO> hasDeviceVOList = vo.getHasDeviceVOList();
  243. //查找原来拥有的设备
  244. QueryWrapper<CareDevice> queryWrapper = new QueryWrapper<>();
  245. queryWrapper.lambda().eq(CareDevice::getChambId,vo.getId());
  246. List<CareDevice> hasDeviceListOld = this.careDeviceService.list(queryWrapper);
  247. if (CollUtil.isNotEmpty(hasDeviceListOld)) {
  248. for(CareDevice careDevice : hasDeviceListOld){
  249. boolean has = false;
  250. for(DeviceVO deviceVO : hasDeviceVOList) {
  251. if(careDevice.getId().equals(deviceVO.getId())){
  252. has = true;
  253. break;
  254. }
  255. }
  256. if(!has) {
  257. //将不再拥有的设备的管家id置空
  258. this.careDeviceService.updateDevChamb(careDevice.getId());
  259. }
  260. }
  261. }
  262. //更新拥有的设备
  263. if (CollUtil.isNotEmpty(hasDeviceVOList)) {
  264. hasDeviceVOList.forEach(item -> {
  265. CareDevice careDevice = new CareDevice();
  266. BeanUtil.copyProperties(item,careDevice);
  267. careDevice.setChambId(careSysUser.getId());
  268. careDeviceService.updateById(careDevice);
  269. });
  270. }
  271. }
  272. }