HouseController.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515
  1. package com.template.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.template.annotation.Encrypt;
  8. import com.template.api.HouseAPI;
  9. import com.template.common.utils.DateUtil;
  10. import com.template.model.dto.HouseDto;
  11. import com.template.model.pojo.*;
  12. import com.template.model.result.CommonResult;
  13. import com.template.model.result.PageUtils;
  14. import com.template.model.vo.*;
  15. import com.template.services.*;
  16. import org.springframework.beans.BeanUtils;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.transaction.annotation.Transactional;
  19. import org.springframework.web.bind.annotation.RequestBody;
  20. import org.springframework.web.bind.annotation.RestController;
  21. import java.math.BigDecimal;
  22. import java.time.LocalDateTime;
  23. import java.time.format.DateTimeFormatter;
  24. import java.util.ArrayList;
  25. import java.util.Date;
  26. import java.util.List;
  27. /**
  28. * <p>
  29. * 前端控制器
  30. * </p>
  31. *
  32. * @author ceshi
  33. * @since 2023-11-06
  34. */
  35. @RestController
  36. //加密
  37. //@DESRespondSecret
  38. public class HouseController implements HouseAPI {
  39. @Autowired
  40. HouseService houseService;
  41. @Autowired
  42. HouseNumberService houseNumberService;
  43. @Autowired
  44. HouseNumberStateService houseNumberStateService;
  45. @Autowired
  46. PermissionSettingService permissionSettingService;
  47. @Autowired
  48. HousePriceService housePriceService;
  49. @Autowired
  50. FacilityServicesService facilityServicesService;
  51. @Override
  52. @Encrypt
  53. @Transactional(rollbackFor = Exception.class)
  54. public CommonResult save(@RequestBody HouseDto houseDto) {
  55. if (ObjectUtils.isEmpty(houseDto) && ObjectUtils.isEmpty(houseDto.getAdminId())) {
  56. return CommonResult.fail("参数异常");
  57. }
  58. PermissionSetting permissionSetting = permissionSettingService.getById(houseDto.getAdminId());
  59. if (ObjectUtils.isEmpty(permissionSetting)) {
  60. return CommonResult.fail("非法进入");
  61. }
  62. // 判断该用户是否拥有权限
  63. String houseTypeManagement = permissionSetting.getHouseTypeManagement();
  64. if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("1")) {
  65. return CommonResult.fail("此账号暂无该权限");
  66. }
  67. House house = houseDto.getHouse();
  68. // List<String> roomNumbers = houseDto.getRoomNumbers();
  69. //
  70. // Integer number = house.getNumber();
  71. //
  72. // if (number != roomNumbers.size()) {
  73. // return CommonResult.fail("房间数量不一致");
  74. // }
  75. LambdaQueryWrapper<House> wrapper = new LambdaQueryWrapper<>();
  76. wrapper.eq(House::getRoomName, house.getRoomName())
  77. .eq(House::getRoomType, house.getRoomType());
  78. House one = houseService.getOne(wrapper);
  79. if (ObjectUtils.isNotEmpty(one)) {
  80. return CommonResult.fail("该房型已存在");
  81. }
  82. try {
  83. houseService.save(house);
  84. // ArrayList<HouseNumber> houseNumbers = new ArrayList<>();
  85. // for (String roomNumber : roomNumbers) {
  86. //// 修改房间
  87. // HouseNumber byId = houseNumberService.getById(roomNumber);
  88. // byId.setHouseId(house.getId()+"");
  89. // houseNumbers.add(byId);
  90. // }
  91. // boolean b = houseNumberService.updateBatchById(houseNumbers);
  92. //
  93. // if (b) {
  94. // return CommonResult.ok();
  95. // }
  96. } catch (Exception e) {
  97. return CommonResult.fail();
  98. }
  99. return CommonResult.ok();
  100. }
  101. @Override
  102. public CommonResult getPage(int page, int size, int type, String keyWord) {
  103. if (ObjectUtils.isEmpty(page) && page <= 0) {
  104. page = 1;
  105. }
  106. if (ObjectUtils.isEmpty(size) && size <= 0) {
  107. size = 10;
  108. }
  109. // if (!(type == 1 || type == 2)) {
  110. // return CommonResult.fail("参数异常");
  111. // }
  112. PageUtils<HouseVo> pageDto = houseService.getPage(page, size, type, keyWord);
  113. List<HouseVo> list = pageDto.getList();
  114. System.out.println("list = " + list);
  115. return CommonResult.ok(pageDto);
  116. }
  117. @Override
  118. public CommonResult details(String houseId) {
  119. if (ObjectUtils.isEmpty(houseId)) {
  120. return CommonResult.fail("参数异常");
  121. }
  122. HousedetailsVo housedetailsVo = houseService.details(houseId);
  123. if (ObjectUtils.isNotEmpty(housedetailsVo)) {
  124. String roomIds = housedetailsVo.getRoomIds();
  125. if (ObjectUtils.isNotEmpty(roomIds)) {
  126. String[] split = roomIds.split(",");
  127. ArrayList<BuildingHouseNumberVo> vos = new ArrayList<>();
  128. for (int i = 0; i < split.length; i++) {
  129. String s = split[i];
  130. HouseNumber byId = houseNumberService.getById(s);
  131. BuildingHouseNumberVo vo = new BuildingHouseNumberVo();
  132. vo.setHouseNumberId(byId.getId());
  133. // 跟下拉列表的楼栋单元id一样
  134. vo.setBuildingId(byId.getBuildingId() + 1000000);
  135. vos.add(vo);
  136. }
  137. housedetailsVo.setList(vos);
  138. }
  139. }
  140. return CommonResult.ok(housedetailsVo);
  141. }
  142. @Override
  143. @Transactional(rollbackFor = Exception.class)
  144. public CommonResult update(HouseDto houseDto) {
  145. if (ObjectUtils.isEmpty(houseDto) && ObjectUtils.isEmpty(houseDto.getHouse().getId()) && ObjectUtils.isEmpty(houseDto.getAdminId())) {
  146. return CommonResult.fail("参数异常");
  147. }
  148. PermissionSetting permissionSetting = permissionSettingService.getById(houseDto.getAdminId());
  149. if (ObjectUtils.isEmpty(permissionSetting)) {
  150. return CommonResult.fail("非法进入");
  151. }
  152. // 判断该用户是否拥有权限
  153. String houseTypeManagement = permissionSetting.getHouseTypeManagement();
  154. if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("2")) {
  155. return CommonResult.fail("此账号暂无该权限");
  156. }
  157. House house = houseDto.getHouse();
  158. // List<String> roomNumbers = houseDto.getRoomNumbers();
  159. //
  160. // Integer number = house.getNumber();
  161. //
  162. // if (number != roomNumbers.size()) {
  163. // return CommonResult.fail("房间数量不一致");
  164. // }
  165. // 判断修改的房型名称和房型类型是是否已存在
  166. House byId = houseService.getById(house.getId());
  167. String roomName = byId.getRoomName();
  168. Integer type = byId.getRoomType();
  169. if (!house.getRoomName().equals(roomName)||!type.equals(house.getRoomType())) {
  170. LambdaQueryWrapper<House> wrapper = new LambdaQueryWrapper<>();
  171. wrapper.eq(House::getRoomName, house.getRoomName())
  172. .eq(House::getRoomType, house.getRoomType());
  173. House one = houseService.getOne(wrapper);
  174. if (ObjectUtils.isNotEmpty(one)) {
  175. return CommonResult.fail("该房型已存在");
  176. }
  177. }
  178. houseService.updateById(house);
  179. return CommonResult.ok();
  180. // try {
  181. // // 通过houseId,找到房间号
  182. //// LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
  183. //// wrapperHn.eq(HouseNumber::getHouseId, house.getId());
  184. //// List<HouseNumber> list = houseNumberService.list(wrapperHn);
  185. //// for (HouseNumber houseNumber : list) {
  186. ////// 判断房间号是否还存在
  187. //// String roomNumber = houseNumber.getRoomNumber();
  188. ////// 不存在则删除
  189. //// if (!roomNumbers.contains(roomNumber)) {
  190. ////// 判断房间是否有订单,有则不能删除
  191. //// LambdaQueryWrapper<HouseNumberState> wrapperHNS = new LambdaQueryWrapper<>();
  192. //// wrapperHNS.eq(HouseNumberState::getHouseNumberId, houseNumber.getId())
  193. //// .ge(HouseNumberState::getEndTime, new Date());
  194. //// List<HouseNumberState> houseNumberStates = houseNumberStateService.list(wrapperHNS);
  195. //// if (ObjectUtils.isNotEmpty(houseNumberStates) && houseNumberStates.size() > 0) {
  196. //// return CommonResult.fail(roomNumber + "房间在使用");
  197. //// }
  198. //// houseNumberService.removeById(houseNumber);
  199. ////
  200. //// } else {
  201. ////// 存在则在集合删除这个
  202. //// roomNumbers.remove(roomNumber);
  203. //// }
  204. //// }
  205. ////
  206. //// houseService.updateById(house);
  207. //// if (ObjectUtils.isNotEmpty(roomNumbers) && roomNumbers.size() > 0) {
  208. //// ArrayList<HouseNumber> houseNumbers = new ArrayList<>();
  209. //// for (String roomNumber : roomNumbers) {
  210. ////// 添加
  211. //// HouseNumber houseNumber = new HouseNumber();
  212. //// houseNumber.setRoomNumber(roomNumber);
  213. //// houseNumber.setHouseId(house.getId() + "");
  214. ////// 默认净房
  215. //// houseNumber.setHouseStatus(1);
  216. //////// 默认空闲
  217. ////// houseNumber.setStatus(1);
  218. ////// 默认关电
  219. //// houseNumber.setElectricType("2");
  220. ////
  221. //// houseNumbers.add(houseNumber);
  222. //// }
  223. //// boolean b = houseNumberService.saveOrUpdateBatch(houseNumbers);
  224. //// }
  225. // return CommonResult.ok();
  226. //
  227. // } catch (Exception e) {
  228. // return CommonResult.fail();
  229. // }
  230. }
  231. @Override
  232. @Transactional(rollbackFor = Exception.class)
  233. public CommonResult delete(String houseId, int adminId) {
  234. if (ObjectUtils.isEmpty(houseId) && ObjectUtils.isEmpty(adminId)) {
  235. return CommonResult.fail();
  236. }
  237. PermissionSetting permissionSetting = permissionSettingService.getById(adminId);
  238. if (ObjectUtils.isEmpty(permissionSetting)) {
  239. return CommonResult.fail("非法进入");
  240. }
  241. // 判断该用户是否拥有权限
  242. String houseTypeManagement = permissionSetting.getHouseTypeManagement();
  243. if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("3")) {
  244. return CommonResult.fail("此账号暂无该权限");
  245. }
  246. // 删除房型需先删除房间号
  247. // 通过houseId,找到房间号
  248. // LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
  249. // wrapperHn.eq(HouseNumber::getHouseId, houseId);
  250. // List<HouseNumber> list = houseNumberService.list(wrapperHn);
  251. // for (HouseNumber houseNumber : list) {
  252. //// 判断房间是否有订单,有则不能删除
  253. // LambdaQueryWrapper<HouseNumberState> wrapperHNS = new LambdaQueryWrapper<>();
  254. // wrapperHNS.eq(HouseNumberState::getHouseNumberId, houseNumber.getId())
  255. // .ge(HouseNumberState::getEndTime, new Date());
  256. // List<HouseNumberState> houseNumberStates = houseNumberStateService.list(wrapperHNS);
  257. // if (ObjectUtils.isNotEmpty(houseNumberStates) && houseNumberStates.size() > 0) {
  258. // return CommonResult.fail(houseNumber.getRoomNumber() + "房间在使用,无法删除");
  259. // }
  260. // }
  261. try {
  262. // for (HouseNumber houseNumber : list) {
  263. // Integer id = houseNumber.getId();
  264. // houseNumberService.removeById(id);
  265. // }
  266. House byId = houseService.getById(houseId);
  267. if (ObjectUtils.isEmpty(byId)) {
  268. return CommonResult.fail("参数异常");
  269. }
  270. List<HouseNumber> houseNumberList=houseNumberService.getHouseId(houseId);
  271. if (ObjectUtils.isNotEmpty(houseNumberList)||houseNumberList.size()>0) {
  272. return CommonResult.fail("该房型下还有房间");
  273. }
  274. houseService.removeById(Integer.valueOf(houseId));
  275. return CommonResult.ok();
  276. } catch (Exception e) {
  277. e.printStackTrace();
  278. return CommonResult.fail();
  279. }
  280. }
  281. @Override
  282. public CommonResult roomNameType() {
  283. List<String> roomNameList = houseService.group();
  284. return CommonResult.ok(roomNameList);
  285. }
  286. public static void main(String[] args) {
  287. LocalDateTime now = LocalDateTime.now();
  288. LocalDateTime start = now.withHour(0).withMinute(0).withSecond(0);
  289. LocalDateTime end = now.withHour(23).withMinute(59).withSecond(59);
  290. System.out.println("start = " + start);
  291. System.out.println("end = " + end);
  292. }
  293. @Override
  294. public CommonResult getAppletPage(int page, int size, int type, String startTime, String endTime) {
  295. if (ObjectUtils.isEmpty(page) && page <= 0) {
  296. page = 1;
  297. }
  298. if (ObjectUtils.isEmpty(size) && size <= 0) {
  299. size = 10;
  300. }
  301. if (ObjectUtils.isEmpty(startTime) && ObjectUtils.isEmpty(endTime)) {
  302. return CommonResult.fail("参数异常");
  303. }
  304. DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  305. // 判断传过来的时间和当前时间比较
  306. LocalDateTime now = LocalDateTime.now();
  307. LocalDateTime date = LocalDateTime.parse(startTime, dateTimeFormatter1);
  308. if (now.isAfter(date)) {
  309. startTime = now.format(dateTimeFormatter1);
  310. }
  311. LambdaQueryWrapper<House> wrapper = new LambdaQueryWrapper<>();
  312. wrapper.eq(House::getRoomType, type);
  313. // 上架
  314. wrapper.eq(House::getIsAdded,1);
  315. IPage<House> page1 = houseService.page(new Page<>(page, size), wrapper);
  316. List<House> records = page1.getRecords();
  317. String houseIds = "";
  318. for (int i = 0; i < records.size(); i++) {
  319. String id = String.valueOf(records.get(i).getId());
  320. if (i == 0) {
  321. houseIds = houseIds + id;
  322. } else {
  323. houseIds = houseIds + "," + id;
  324. }
  325. }
  326. // 获取今天的所有的改价记录
  327. // LocalDateTime now = LocalDateTime.now();
  328. LocalDateTime now2 = LocalDateTime.parse(startTime, dateTimeFormatter1);
  329. LocalDateTime start = now2.withHour(0).withMinute(0).withSecond(0);
  330. LocalDateTime end = now2.withHour(23).withMinute(59).withSecond(59);
  331. List<HousePrice> housePrices = housePriceService.housePrice(start, end, houseIds);
  332. ArrayList<HouseAppletPageVo> houseAppletPageVos = new ArrayList<>();
  333. for (House record : records) {
  334. HouseAppletPageVo houseAppletPageVo = new HouseAppletPageVo();
  335. BeanUtils.copyProperties(record, houseAppletPageVo);
  336. // 获取设置图片
  337. String roomConfiguration = record.getRoomConfiguration();
  338. String[] split1 = roomConfiguration.split(",");
  339. ArrayList<FacilityServices> strings = new ArrayList<>();
  340. for (int i = 0; i < split1.length; i++) {
  341. String name=split1[i];
  342. LambdaQueryWrapper<FacilityServices> wrapperRC=new LambdaQueryWrapper<>();
  343. wrapperRC.eq(FacilityServices::getHouseService,name);
  344. FacilityServices one = facilityServicesService.getOne(wrapperRC);
  345. if (ObjectUtils.isNotEmpty(one)) {
  346. strings.add(one);
  347. }
  348. }
  349. houseAppletPageVo.setRoomConfigurationPicture(strings);
  350. String id = String.valueOf(record.getId());
  351. // 判断这个时间内是否有
  352. for (HousePrice housePrice : housePrices) {
  353. if (housePrice.getHouseId().equals(id)) {
  354. String setDate = housePrice.getSetDate();
  355. String[] split = setDate.split(",");
  356. Date startDate = DateUtil.parseDateOnly(split[0]);
  357. Date endDate = DateUtil.parseDateOnly(split[1]);
  358. // 判断当前时间是否在[startTime, endTime]区间
  359. assert startDate != null;
  360. boolean effectiveDate = DateUtil.isEffectiveDate(new Date(), startDate, endDate);
  361. if (effectiveDate) {
  362. BigDecimal price = housePrice.getPrice();
  363. houseAppletPageVo.setRoomPrice(price);
  364. }
  365. }
  366. }
  367. // 判断该房型是否还有房间
  368. LambdaQueryWrapper<HouseNumber> wrapperHN = new LambdaQueryWrapper<>();
  369. wrapperHN.eq(HouseNumber::getHouseId, id);
  370. List<HouseNumber> houseNumberList = houseNumberService.list(wrapperHN);
  371. // 获取当前房型的所有id
  372. String houseNumberIds = "";
  373. for (int i = 0; i < houseNumberList.size(); i++) {
  374. String houseNumber = houseNumberList.get(i).getId() + "";
  375. if (i == 0) {
  376. houseNumberIds = houseNumberIds + houseNumber;
  377. } else {
  378. houseNumberIds = houseNumberIds + "," + houseNumber;
  379. }
  380. }
  381. // LocalDateTime localDateTime = LocalDateTime.parse(startTime, dateTimeFormatter1);
  382. // LocalDateTime endLocalDateTime = LocalDateTime.parse(endTime, dateTimeFormatter1);
  383. List<String> houseNumberStates = houseNumberStateService.getHouseNumber(startTime, endTime, houseNumberIds);
  384. LambdaQueryWrapper<HouseNumber> wrapperHN2 = new LambdaQueryWrapper<>();
  385. wrapperHN2.eq(HouseNumber::getHouseId, id);
  386. wrapperHN2.eq(HouseNumber::getHouseStatus,2);
  387. List<HouseNumber> list = houseNumberService.list(wrapperHN2);
  388. if (houseNumberList.size()-houseNumberStates.size()-list.size()>0) {
  389. houseAppletPageVo.setHouseStatus("1");
  390. houseAppletPageVo.setSurplusCount(houseNumberList.size()-houseNumberStates.size()-list.size());
  391. }else {
  392. houseAppletPageVo.setHouseStatus("2");
  393. houseAppletPageVo.setSurplusCount(0);
  394. }
  395. houseAppletPageVos.add(houseAppletPageVo);
  396. }
  397. IPage<HouseAppletPageVo> houseAppletPageVoPage = new Page<>();
  398. BeanUtils.copyProperties(page1, houseAppletPageVoPage);
  399. houseAppletPageVoPage.setRecords(houseAppletPageVos);
  400. return CommonResult.ok(houseAppletPageVoPage);
  401. }
  402. @Override
  403. public CommonResult getappletParticulars(Integer houseId) {
  404. if (ObjectUtils.isEmpty(houseId)) {
  405. return CommonResult.fail("参数异常");
  406. }
  407. House house = houseService.getById(houseId);
  408. if (ObjectUtils.isEmpty(house)) {
  409. return CommonResult.fail("参数异常");
  410. }
  411. JSONObject jsonObject = new JSONObject();
  412. jsonObject.put("housePicture",house.getHousePicture());
  413. jsonObject.put("introductory",house.getIntroductory());
  414. return CommonResult.ok(jsonObject);
  415. }
  416. @Override
  417. public CommonResult displayBar(Integer type) {
  418. List<HouseDisplayBarVo> list = houseService.displayBar(type);
  419. return CommonResult.ok(list);
  420. }
  421. }