UserService.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568
  1. package com.huaxu.service;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.huaxu.common.ToolUtil;
  5. import com.huaxu.dao.OrgMapper;
  6. import com.huaxu.dao.UserMapper;
  7. import com.huaxu.dto.MaintainerCountDto;
  8. import com.huaxu.dto.UserListDto;
  9. import com.huaxu.entity.Org;
  10. import com.huaxu.entity.UserEntity;
  11. import com.huaxu.entity.UserRoleEntity;
  12. import com.huaxu.entity.UserTagEntity;
  13. import com.huaxu.model.LoginUser;
  14. import com.huaxu.model.ProgramItem;
  15. import com.huaxu.util.ByteArrayUtils;
  16. import com.huaxu.util.RedisUtil;
  17. import com.huaxu.util.UserUtil;
  18. import org.apache.ibatis.annotations.Param;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.beans.factory.annotation.Value;
  21. import org.springframework.http.HttpEntity;
  22. import org.springframework.http.HttpHeaders;
  23. import org.springframework.http.MediaType;
  24. import org.springframework.http.ResponseEntity;
  25. import org.springframework.stereotype.Service;
  26. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  27. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  28. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  29. import javax.annotation.Resource;
  30. import org.springframework.transaction.annotation.Transactional;
  31. import org.springframework.web.client.RestTemplate;
  32. import java.text.ParseException;
  33. import java.text.SimpleDateFormat;
  34. import java.util.*;
  35. import java.util.stream.Collectors;
  36. /**
  37. *
  38. * 用户Service接口
  39. * @author: WYY
  40. * @date 2020-10-22 17:35
  41. */
  42. @Service
  43. public class UserService extends ServiceImpl<UserMapper,UserEntity> {
  44. @Resource
  45. private UserMapper userMapper;
  46. @Resource
  47. private UserTagService userTagService;
  48. @Resource
  49. private UserRoleService userRoleService;
  50. @Resource
  51. private OrgMapper orgMapper;
  52. @Autowired
  53. private RedisUtil redisUtil;
  54. @Value("${add_iot_user_url}")
  55. private String addIotUserUrl;
  56. /**
  57. * 自定义分页查询,含关联实体对像
  58. */
  59. public IPage<UserEntity> findPage(IPage<UserEntity> page, UserEntity userEntity) {
  60. LoginUser currentUser = UserUtil.getCurrentUser();
  61. userEntity.setTenantId(currentUser.getTenantId());
  62. userEntity.setProgramItems(currentUser.getProgramItemList());
  63. userEntity.setUserType(currentUser.getType());
  64. //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
  65. userEntity.setPermissonType(currentUser.getPermissonType());
  66. Page<UserEntity> userPage = userMapper.findPage(page, userEntity);
  67. return userPage;
  68. }
  69. /**
  70. * 查列表
  71. */
  72. public List<UserEntity> findList(UserEntity userEntity) {
  73. LoginUser currentUser = UserUtil.getCurrentUser();
  74. userEntity.setTenantId(currentUser.getTenantId());
  75. return userMapper.findList(userEntity);
  76. }
  77. /**
  78. * 批量删除
  79. */
  80. @Transactional(rollbackFor = Exception.class)
  81. public boolean delUserByIds(Long[] ids) {
  82. for (Long id : ids) {
  83. UserEntity userEntity = findUserById(id);
  84. if (userEntity != null) {
  85. //將禁用的角色放入redis,作为登出判断
  86. if (userEntity.getEnableState().equals("0")) {
  87. String roleKey = "disableUser:" + id;
  88. redisUtil.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60 * 60 * 24);//15分钟过期
  89. }
  90. if (userEntity.getEnableState().equals("1")) {
  91. String roleKey = "disableUser:" + id;
  92. redisUtil.del(roleKey.getBytes());
  93. }
  94. }
  95. }
  96. return this.removeByIds(Arrays.asList(ids));
  97. }
  98. public boolean checkMobileUnique(String phone) {
  99. LoginUser currentUser = UserUtil.getCurrentUser();
  100. int count = this.count(new QueryWrapper<UserEntity>().eq("phone", phone).eq("tenant_id",currentUser.getTenantId()));
  101. if (count > 0) {
  102. return true;
  103. }
  104. return false;
  105. }
  106. public boolean checkMobileUnique(UserEntity user) {
  107. LoginUser currentUser = UserUtil.getCurrentUser();
  108. Long userId = ToolUtil.isEmpty(user.getId()) ? -1L : user.getId();
  109. UserEntity info = this.getOne(new QueryWrapper<UserEntity>().eq("phone", user.getPhone()).eq("tenant_id",currentUser.getTenantId()));
  110. if (ToolUtil.isNotEmpty(info) && !info.getId().equals(userId)) {
  111. return true;
  112. }
  113. return false;
  114. }
  115. /**
  116. * 单个删除
  117. */
  118. public boolean delUserById(Long id) {
  119. UserEntity userEntity = findUserById(id);
  120. if (userEntity != null) {
  121. //將禁用的角色放入redis,作为登出判断
  122. if (userEntity.getEnableState().equals("0")) {
  123. String roleKey = "disableUser:" + id;
  124. redisUtil.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60 * 60 * 24);//15分钟过期
  125. }
  126. if (userEntity.getEnableState().equals("1")) {
  127. String roleKey = "disableUser:" + id;
  128. redisUtil.del(roleKey.getBytes());
  129. }
  130. }
  131. return this.removeById(id);
  132. }
  133. /**
  134. * 保存
  135. */
  136. public boolean addUser(UserEntity user) {
  137. user.setUniqId(UUID.randomUUID().toString());
  138. if (this.save(user)) {
  139. Long pkId = user.getId();
  140. //添加用户标签
  141. if (user.getUserTags() != null) {
  142. for (Long item : user.getUserTags()) {
  143. UserTagEntity userTagEntity = new UserTagEntity();
  144. userTagEntity.setCreateBy(user.getCreateBy());
  145. userTagEntity.setUpdateBy(user.getUpdateBy());
  146. userTagEntity.setDateCreate(user.getDateCreate());
  147. userTagEntity.setDateUpdate(user.getDateUpdate());
  148. userTagEntity.setStatus(1);
  149. userTagEntity.setTagId(Long.valueOf(item));
  150. userTagEntity.setUserId(pkId);
  151. userTagService.addUserTag(userTagEntity);
  152. }
  153. }
  154. //添加角色
  155. if (user.getRoleId() != null) {
  156. UserRoleEntity userRoleEntity = new UserRoleEntity();
  157. userRoleEntity.setCreateBy(user.getCreateBy());
  158. userRoleEntity.setUpdateBy(user.getUpdateBy());
  159. userRoleEntity.setDateCreate(user.getDateCreate());
  160. userRoleEntity.setDateUpdate(user.getDateUpdate());
  161. userRoleEntity.setStatus(1);
  162. userRoleEntity.setRoleId(Long.valueOf(user.getRoleId()));
  163. userRoleEntity.setUserId(pkId);
  164. userRoleService.addUserRole(userRoleEntity);
  165. }
  166. addIotUser(user);
  167. return true;
  168. }
  169. return false;
  170. }
  171. private void addIotUser(UserEntity userEntity){
  172. try {
  173. HttpHeaders headers = new HttpHeaders();
  174. JSONObject args=new JSONObject();
  175. args.put("username",userEntity.getUsername());
  176. args.put("mobilePhone",userEntity.getPhone());
  177. args.put("tenantId",userEntity.getTenantId());
  178. args.put("uniqId",userEntity.getUniqId());
  179. headers.setContentType(MediaType.APPLICATION_JSON);
  180. HttpEntity<String> formEntity = new HttpEntity<>(args.toJSONString(), headers);
  181. RestTemplate restTemplate=new RestTemplate();
  182. restTemplate.postForEntity(addIotUserUrl, formEntity,String.class);
  183. }catch (Exception e){
  184. log.error("添加物联网用户失败",e);
  185. }
  186. }
  187. /**
  188. * 修改根居ID
  189. */
  190. public boolean updateUserById(UserEntity user) {
  191. if (this.updateById(user)) {
  192. UserEntity userEntity = findUserById(user.getId());
  193. if (userEntity != null) {
  194. //將禁用的角色放入redis,作为登出判断
  195. if (userEntity.getEnableState().equals("0")) {
  196. String roleKey = "disableUser:" + user.getId();
  197. redisUtil.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60 * 60 * 24);//15分钟过期
  198. }
  199. if (userEntity.getEnableState().equals("1")) {
  200. String roleKey = "disableUser:" + user.getId();
  201. redisUtil.del(roleKey.getBytes());
  202. }
  203. }
  204. //更新关联附件信息
  205. Long pkId = user.getId();
  206. //添加用户标签
  207. if (user.getUserTags() != null && user.getUserTags().size() > 0) {
  208. //先删除之前的标签
  209. List<UserTagEntity> userTagEntitys = new ArrayList<>();
  210. UserTagEntity userTagDelete = new UserTagEntity();
  211. userTagDelete.setUserId(pkId);
  212. userTagEntitys = userTagService.findList(userTagDelete);
  213. Long[] ids = new Long[userTagEntitys.size()];
  214. for (int i = 0; i < userTagEntitys.size(); i++) {
  215. ids[i] = userTagEntitys.get(i).getId();
  216. }
  217. userTagService.delUserTagByIds(ids);
  218. //新增标签
  219. for (Long item : user.getUserTags()) {
  220. UserTagEntity userTagEntity = new UserTagEntity();
  221. userTagEntity.setCreateBy(user.getCreateBy());
  222. userTagEntity.setUpdateBy(user.getUpdateBy());
  223. userTagEntity.setDateCreate(user.getDateCreate());
  224. userTagEntity.setDateUpdate(user.getDateUpdate());
  225. userTagEntity.setStatus(1);
  226. userTagEntity.setTagId(Long.valueOf(item));
  227. userTagEntity.setUserId(pkId);
  228. userTagService.addUserTag(userTagEntity);
  229. }
  230. }
  231. //修改角色
  232. if (user.getRoleId() != null) {
  233. List<UserRoleEntity> userRoleEntities = new ArrayList<>();
  234. UserRoleEntity userRoleEntity = new UserRoleEntity();
  235. userRoleEntity.setUserId(pkId);
  236. userRoleEntities = userRoleService.findList(userRoleEntity);
  237. if (userRoleEntities.size() > 0) {
  238. Long userRoleId = userRoleEntities.get(0).getId();
  239. userRoleService.delUserRoleById(userRoleId);
  240. }
  241. //新增角色
  242. UserRoleEntity userRole = new UserRoleEntity();
  243. userRole.setCreateBy(user.getCreateBy());
  244. userRole.setUpdateBy(user.getUpdateBy());
  245. userRole.setDateCreate(user.getDateCreate());
  246. userRole.setDateUpdate(user.getDateUpdate());
  247. userRole.setStatus(1);
  248. userRole.setRoleId(Long.valueOf(user.getRoleId()));
  249. userRole.setUserId(pkId);
  250. userRoleService.addUserRole(userRole);
  251. }
  252. return true;
  253. }
  254. return false;
  255. }
  256. /**
  257. * 根居ID获取对象
  258. */
  259. public UserEntity findUserById(Long id) {
  260. List<UserTagEntity> userTagEntitys = new ArrayList<>();
  261. UserTagEntity userTags = new UserTagEntity();
  262. userTags.setUserId(id);
  263. userTagEntitys = userTagService.findList(userTags);
  264. List<Long> ids = new ArrayList<>();
  265. for (int i = 0; i < userTagEntitys.size(); i++) {
  266. ids.add(userTagEntitys.get(i).getTagId());
  267. }
  268. UserEntity userEntity = userMapper.findUserById(id);
  269. userEntity.setUserTags(ids);
  270. return userEntity;
  271. }
  272. public List<Integer> getUserIdsByOrgId(List<Integer> orgIds) {
  273. List<Integer>userIds=new ArrayList<>();
  274. if(orgIds.size()>0){
  275. userIds=userMapper.getUserIdsByOrgId(orgIds);
  276. }
  277. return userIds;
  278. }
  279. public List<UserEntity> findUserIdsByOrgId(List<Integer> orgIds)
  280. {
  281. List<UserEntity> userEntities = new ArrayList<>();
  282. if(orgIds.size()>0){
  283. userEntities=userMapper.findUserIdsByOrgId(orgIds);
  284. }
  285. return userEntities;
  286. }
  287. public List<UserEntity> findUserIdsByOrgIdAndType(List<Integer> orgIds)
  288. {
  289. List<UserEntity> userEntities = new ArrayList<>();
  290. if(orgIds.size()>0){
  291. userEntities=userMapper.findUserIdsByOrgIdAndType(orgIds);
  292. }
  293. return userEntities;
  294. }
  295. public List<UserListDto> findUserList(Integer type)
  296. {
  297. List<UserListDto> userListDtos = new ArrayList<>();
  298. LoginUser currentUser = UserUtil.getCurrentUser();
  299. UserEntity userEntity=new UserEntity();
  300. userEntity.setTenantId(currentUser.getTenantId());
  301. userEntity.setProgramItems(currentUser.getProgramItemList());
  302. userEntity.setUserType(3+"");
  303. //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
  304. userEntity.setPermissonType(currentUser.getPermissonType());
  305. List<UserEntity>userEntities=userMapper.findUserList(userEntity);
  306. List<UserEntity>companyUser=new ArrayList<>();
  307. List<UserEntity>departmentUser=new ArrayList<>();
  308. if(type==null){
  309. userEntities.forEach(user->{
  310. if(user.getDeptOrgId()!=null){
  311. departmentUser.add(user);
  312. }else{
  313. companyUser.add(user);
  314. }
  315. });
  316. Map<Long, List<UserEntity>> companyGroup = companyUser.stream()
  317. .collect(Collectors.groupingBy(d -> d.getCompanyOrgId()));
  318. Map<Long, List<UserEntity>> departMentGroup = departmentUser.stream()
  319. .collect(Collectors.groupingBy(d -> d.getDeptOrgId()));
  320. Iterator<List<UserEntity>> companyIterator = companyGroup.values().iterator();
  321. Iterator<List<UserEntity>> departmentIterator = departMentGroup.values().iterator();
  322. while(companyIterator.hasNext()){
  323. List<UserEntity> users = companyIterator.next();
  324. UserListDto userListDto=new UserListDto();
  325. UserEntity user = users.get(0);
  326. userListDto.setLabel(user.getCompanyOrgName());
  327. userListDto.setId(user.getCompanyOrgId());
  328. userListDto.setValue(user.getCompanyOrgName());
  329. userListDto.setChildren(setChildrens(users));
  330. userListDtos.add(userListDto);
  331. }
  332. while(departmentIterator.hasNext()){
  333. List<UserEntity> users = departmentIterator.next();
  334. UserListDto userListDto=new UserListDto();
  335. UserEntity user = users.get(0);
  336. userListDto.setLabel(user.getDeptOrgName());
  337. userListDto.setId(user.getDeptOrgId());
  338. userListDto.setValue(user.getDeptOrgName());
  339. userListDto.setChildren(setChildrens(users));
  340. userListDtos.add(userListDto);
  341. }
  342. }else{
  343. userEntities.forEach(userParam->{
  344. UserListDto userInfo=new UserListDto();
  345. userInfo.setLabel(userParam.getUsername());
  346. userInfo.setId(userParam.getId());
  347. userInfo.setValue(userParam.getUsername());
  348. userListDtos.add(userInfo);
  349. });
  350. }
  351. return userListDtos;
  352. }
  353. private List<UserListDto> setChildrens(List<UserEntity> users){
  354. List<UserListDto> childrens=new ArrayList<>();
  355. users.forEach(u->{
  356. UserListDto children=new UserListDto();
  357. children.setLabel(u.getUsername());
  358. children.setId(u.getId());
  359. children.setValue(u.getUsername());
  360. childrens.add(children);
  361. });
  362. return childrens;
  363. }
  364. public List<UserEntity> findUserIdsByUserIds(List<Integer> userIds) {
  365. List<UserEntity> userEntities = new ArrayList<>();
  366. if(userIds.size()>0){
  367. userEntities=userMapper.findUserIdsByUserIds(userIds);
  368. }
  369. return userEntities;
  370. }
  371. public List<UserEntity> findUserIdsForOrg() {
  372. LoginUser currentUser = UserUtil.getCurrentUser();
  373. Integer compayId = currentUser.getCompanyId();
  374. Integer deptId = currentUser.getDepartmentId();
  375. String ids = "";
  376. if (deptId != null)
  377. ids = orgMapper.findParentOrgByChildId(deptId);
  378. //查询公司
  379. String comps = orgMapper.findParentOrgByChildId(compayId);
  380. String[] compids = comps.split(",");
  381. List<Long> compList = new ArrayList<>();
  382. for (String item : compids) {
  383. if (!item.equals(compayId.toString()))
  384. compList.add(Long.valueOf(item));
  385. }
  386. List<Long> idList = new ArrayList<>();
  387. String[] as = ids.split(",");
  388. for (String item : as) {
  389. idList.add(Long.valueOf(item));
  390. }
  391. List<UserEntity> list = userMapper.findUserIdsForOrg(compayId, deptId, idList,compList);
  392. return list;
  393. }
  394. public List<Integer> findUserIdsByPermissonOrg(String tenantId,Integer companyOrgId,Integer deptOrgId){
  395. List<Integer> userIds = new ArrayList<>();
  396. //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
  397. if(companyOrgId == null){
  398. return userIds;
  399. }
  400. //查询租户下所有公司部门
  401. List<Org> orgs = orgMapper.findOrgByTenant(tenantId);
  402. Map<Integer ,Org> orgMap = orgs.stream().collect(Collectors.toMap(Org::getId, a -> a, (k1, k2) -> k1));
  403. List<Integer> companyOrgIds = new ArrayList<>();
  404. List<Integer> deptOrgIds = new ArrayList<>();
  405. Integer deptOrgParentId =deptOrgId;
  406. if(deptOrgId != null){
  407. //权限类型为4部门及以下
  408. while(true){
  409. Org org = orgMap.get(deptOrgParentId);
  410. if(org == null ){
  411. break;
  412. }
  413. if(org.getOrgType().equals("company") ){
  414. break;
  415. }
  416. deptOrgIds.add(deptOrgParentId);
  417. deptOrgParentId = org.getParentOrgId();
  418. }
  419. }
  420. //权限类型为2是公司及以下
  421. Integer companyOrgParentId = companyOrgId ;
  422. while(true){
  423. Org org = orgMap.get(companyOrgParentId);
  424. if(org == null ){
  425. break;
  426. }
  427. companyOrgIds.add(companyOrgParentId);
  428. companyOrgParentId = org.getParentOrgId();
  429. if(org.getParentOrgId() == 0){
  430. break;
  431. }
  432. }
  433. //查询客户id
  434. if(companyOrgId != null && companyOrgIds.size() > 0){
  435. userIds = userMapper.findUserIdsByPermissonOrg(tenantId,companyOrgId,deptOrgId,companyOrgIds,deptOrgIds);
  436. }
  437. return userIds;
  438. }
  439. public List<UserEntity> findUserListBytype(Integer type) {
  440. List<UserListDto> userListDtos = new ArrayList<>();
  441. LoginUser currentUser = UserUtil.getCurrentUser();
  442. UserEntity userEntity = new UserEntity();
  443. userEntity.setTenantId(currentUser.getTenantId());
  444. userEntity.setProgramItems(currentUser.getProgramItemList());
  445. userEntity.setUserType(String.valueOf(type));
  446. //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
  447. userEntity.setPermissonType(currentUser.getPermissonType());
  448. List<UserEntity> userEntities = userMapper.findUserListByType(userEntity);
  449. return userEntities;
  450. }
  451. /**
  452. * 按类型租户及公司查询用户信息
  453. * @param companyOrgId
  454. * @param tenantId
  455. * @param type
  456. * @return
  457. */
  458. public List<UserEntity> findAllUserList(Integer companyOrgId, String tenantId,int type) {
  459. UserEntity userEntity = new UserEntity();
  460. userEntity.setUserType(String.valueOf(type));
  461. userEntity.setTenantId(tenantId);
  462. userEntity.setCompanyOrgId(Long.valueOf(companyOrgId));
  463. List<UserEntity> userEntities = userMapper.findAllUserListByType(userEntity);
  464. return userEntities;
  465. }
  466. public MaintainerCountDto findMaintainer(String startDate, String endDate, Integer statsType){
  467. MaintainerCountDto result=new MaintainerCountDto();
  468. try {
  469. LoginUser currentUser = UserUtil.getCurrentUser();
  470. UserEntity userEntity = new UserEntity();
  471. userEntity.setTenantId(currentUser.getTenantId());
  472. userEntity.setProgramItems(currentUser.getProgramItemList());
  473. //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
  474. userEntity.setPermissonType(currentUser.getPermissonType());
  475. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  476. Calendar c=Calendar.getInstance();
  477. Date thisDate=null, dateMtoM=null,dateYtoY=null;
  478. if(statsType==0){
  479. dateMtoM=sdf.parse(startDate+"-1");
  480. c.setTime(dateMtoM);
  481. c.add(Calendar.MONTH,1);
  482. thisDate=c.getTime();
  483. c.add(Calendar.YEAR,-1);
  484. dateYtoY=c.getTime();
  485. }else if(statsType==1){
  486. dateMtoM=sdf.parse(startDate+"-1-1");
  487. dateYtoY=dateMtoM;
  488. c.setTime(dateMtoM);
  489. c.add(Calendar.YEAR,1);
  490. thisDate=c.getTime();
  491. }else if(statsType==2){
  492. dateMtoM=sdf.parse(startDate+"-1");
  493. thisDate=sdf.parse(endDate+"-1");
  494. c.setTime(thisDate);
  495. c.add(Calendar.MONTH,1);
  496. thisDate=c.getTime();
  497. c.add(Calendar.YEAR,-1);
  498. dateYtoY=c.getTime();
  499. }
  500. userEntity.setDateCreate(thisDate);
  501. result.setCount(userMapper.findMaintainer(userEntity));
  502. userEntity.setDateCreate(dateMtoM);
  503. result.setCountMOnM(userMapper.findMaintainer(userEntity));
  504. userEntity.setDateCreate(dateYtoY);
  505. result.setCountYOnY(userMapper.findMaintainer(userEntity));
  506. result.setRateMOnM(result.getCountMOnM()!=0?(double)(result.getCount()-result.getCountMOnM())/result.getCountMOnM()*100:null);
  507. result.setRateYOnY(result.getCountYOnY()!=0?(double)(result.getCount()-result.getCountYOnY())/result.getCountYOnY()*100:null);
  508. }catch (Exception e){
  509. e.printStackTrace();
  510. }
  511. return result;
  512. }
  513. public Integer findMaintainerCount(String endDate){
  514. Integer maintainerCount=0;
  515. try {
  516. LoginUser currentUser = UserUtil.getCurrentUser();
  517. UserEntity userEntity = new UserEntity();
  518. userEntity.setTenantId(currentUser.getTenantId());
  519. userEntity.setProgramItems(currentUser.getProgramItemList());
  520. //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
  521. userEntity.setPermissonType(currentUser.getPermissonType());
  522. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  523. Calendar c=Calendar.getInstance();
  524. c.setTime(sdf.parse(endDate+"-1"));
  525. c.add(Calendar.MONTH,1);
  526. userEntity.setDateCreate(c.getTime());
  527. maintainerCount=userMapper.findMaintainer(userEntity);
  528. }catch (Exception e){
  529. e.printStackTrace();
  530. }
  531. return maintainerCount;
  532. }
  533. }