TAlarmClockController.java 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  1. package com.szwl.controller;
  2. import cn.com.crbank.ommo.bean.ResultMessage;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6. import com.szwl.constant.ResponseCodesEnum;
  7. import com.szwl.model.bo.R;
  8. import com.szwl.model.bo.ResponseModel;
  9. import com.szwl.model.entity.TAlarmClock;
  10. import com.szwl.model.entity.TAlarmClockItem;
  11. import com.szwl.model.entity.TEquipment;
  12. import com.szwl.model.utils.PushUtils;
  13. import com.szwl.service.TAlarmClockItemService;
  14. import com.szwl.service.TAlarmClockService;
  15. import com.szwl.service.TEquipmentService;
  16. import io.swagger.annotations.Api;
  17. import io.swagger.annotations.ApiOperation;
  18. import org.apache.commons.lang.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.http.HttpStatus;
  21. import org.springframework.http.ResponseEntity;
  22. import org.springframework.web.bind.annotation.*;
  23. import java.util.*;
  24. /**
  25. * <p>
  26. * 闹钟列表 前端控制器
  27. * </p>
  28. *
  29. * @author wuhs
  30. * @since 2022-06-02
  31. */
  32. @Api(value = "/tAlarmClock", tags = {"闹钟"})
  33. @RestController
  34. @RequestMapping("/tAlarmClock")
  35. public class TAlarmClockController {
  36. @Autowired
  37. TAlarmClockService tAlarmClockService;
  38. @Autowired
  39. TAlarmClockItemService tAlarmClockItemService;
  40. @Autowired
  41. TEquipmentService tEquipmentService;
  42. @ApiOperation(value = "查询闹钟列表信息")
  43. @GetMapping("/list")
  44. public ResponseEntity<?> list(String adminId){
  45. LambdaQueryWrapper<TAlarmClock> query = Wrappers.lambdaQuery();
  46. query.eq(TAlarmClock::getAdminId,Long.valueOf(adminId));
  47. List<TAlarmClock> alarmClockList = tAlarmClockService.list(query);
  48. if(alarmClockList.size()==0){
  49. return ResponseEntity.status(HttpStatus.OK)
  50. .body(new ResultMessage().setCode(false).setData(null).setMessage("尚未设置闹钟"));
  51. }
  52. return ResponseEntity.status(HttpStatus.OK)
  53. .body(new ResultMessage().setCode(true).setData(alarmClockList).setMessage("SUCCESS"));
  54. }
  55. @ApiOperation(value = "添加闹钟")
  56. @PostMapping("/add")
  57. public ResponseEntity<?> add(@RequestBody TAlarmClock alarmClock){
  58. if(alarmClock==null|| StringUtils.isEmpty(alarmClock.getWeek())||StringUtils.isEmpty(alarmClock.getEquipmentIds())){
  59. return ResponseEntity.status(HttpStatus.OK)
  60. .body(new ResultMessage().setCode(false).setData(null).setMessage("数据为空"));
  61. }
  62. Date date = new Date();
  63. alarmClock.setCreateDate(date);
  64. alarmClock.setModifyDate(date);
  65. alarmClock.setEquipmentIds(alarmClock.getEquipmentIds()+",");
  66. alarmClock.setWeek(alarmClock.getWeek()+",");
  67. alarmClock.setHour(alarmClock.getHour()+":00");
  68. tAlarmClockService.save(alarmClock);
  69. // sentMessageToEquiment(alarmClock.getType(),alarmClock.getEquipmentIds(),alarmClock.getAdminId());
  70. //避免返回大量数据
  71. // alarmClock.setEquipmentIds(null);
  72. Long alarmClockItemId = alarmClock.getId();
  73. String equipmentIds = alarmClock.getEquipmentIds();
  74. String[] eids = equipmentIds.split(",");
  75. for (int i = 0;i < eids.length;i++){
  76. TAlarmClockItem alarmClockItem = new TAlarmClockItem();
  77. alarmClockItem.setAdminId(alarmClock.getAdminId());
  78. alarmClockItem.setEquipmentId(Long.valueOf(eids[i]));
  79. alarmClockItem.setClockId(alarmClockItemId);
  80. alarmClockItem.setHour(alarmClock.getHour());
  81. alarmClockItem.setWeek(alarmClock.getWeek());
  82. alarmClockItem.setStatus(alarmClock.getStatus());
  83. alarmClockItem.setType(alarmClock.getType());
  84. // alarmClockItem.setIsCirculate(alarmClocka1.getIsCirculate());
  85. alarmClockItem.setModifyDate(alarmClock.getModifyDate());
  86. alarmClockItem.setCreateDate(alarmClock.getCreateDate());
  87. tAlarmClockItemService.save(alarmClockItem);
  88. }
  89. for (int i = 0;i < eids.length;i++){
  90. TEquipment equipment = tEquipmentService.getById(Long.valueOf(eids[i]));
  91. LambdaQueryWrapper<TAlarmClockItem> query = Wrappers.lambdaQuery();
  92. query.eq(TAlarmClockItem::getEquipmentId,Long.valueOf(eids[i]));
  93. query.eq(TAlarmClockItem::getType,alarmClock.getType());
  94. query.eq(TAlarmClockItem::getStatus,"1");
  95. List<TAlarmClockItem> tAlarmClockItems = tAlarmClockItemService.list(query);
  96. Map<String,String> map = new HashMap<>();
  97. List<String> list = new ArrayList<>();
  98. if(tAlarmClockItems.size()>0){
  99. for(TAlarmClockItem alarmClockItem:tAlarmClockItems){
  100. list.add(alarmClockItem.getWeek()+":"+alarmClockItem.getHour());
  101. }
  102. JSONObject kindData = new JSONObject();
  103. kindData.put("type" ,alarmClock.getType());
  104. kindData.put("data" , list);
  105. tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("alarmClock", kindData.toString()).toString());
  106. // PushUtils.push(equipment.getGtClientId(), "", "", PushUtils.buildJson("alarmClock", kindData.toString()).toString());
  107. }
  108. }
  109. return ResponseEntity.status(HttpStatus.OK)
  110. .body(new ResultMessage().setCode(true).setData(alarmClock).setMessage("SUCCESS"));
  111. }
  112. @ApiOperation(value = "闹钟详情")
  113. @PostMapping("/selectOne")
  114. public ResponseEntity<?> selectOne(@RequestBody TAlarmClock alarmClock){
  115. if(alarmClock.getId()==null){
  116. return ResponseEntity.status(HttpStatus.OK)
  117. .body(new ResultMessage().setCode(false).setData(null).setMessage("数据为空"));
  118. }
  119. TAlarmClock tAlarmClock = tAlarmClockService.getById(alarmClock.getId());
  120. tAlarmClock.setWeek(tAlarmClock.getWeek().substring(0,tAlarmClock.getWeek().length()-1));
  121. return ResponseEntity.status(HttpStatus.OK)
  122. .body(new ResultMessage().setCode(true).setData(tAlarmClock).setMessage("SUCCESS"));
  123. }
  124. @ApiOperation(value = "修改闹钟")
  125. @PostMapping("/updata")
  126. public ResponseEntity<?> updata(@RequestBody TAlarmClock alarmClock){
  127. if(alarmClock==null||StringUtils.isEmpty(alarmClock.getHour())){
  128. return ResponseEntity.status(HttpStatus.OK)
  129. .body(new ResultMessage().setCode(false).setData(null).setMessage("数据为空"));
  130. }
  131. if(StringUtils.isEmpty(alarmClock.getEquipmentIds())){
  132. return ResponseEntity.status(HttpStatus.OK)
  133. .body(new ResultMessage().setCode(false).setData(null).setMessage("机器为空"));
  134. }
  135. if(StringUtils.isEmpty(alarmClock.getWeek())){
  136. return ResponseEntity.status(HttpStatus.OK)
  137. .body(new ResultMessage().setCode(false).setData(null).setMessage("星期为空"));
  138. }
  139. //要确认修改了什么状态,机器的增减情况
  140. TAlarmClock oldAlarmClock = tAlarmClockService.getById(alarmClock.getId());
  141. oldAlarmClock.setName(alarmClock.getName());
  142. tAlarmClockService.updateById(oldAlarmClock);
  143. //是否启用状态 0:未开启,1:已开启
  144. if(!oldAlarmClock.getStatus().equals(alarmClock.getStatus())){
  145. //修改了状态
  146. //是否改变了闹钟的类型
  147. if(!oldAlarmClock.getType().equals(alarmClock.getType())){
  148. //修改了类型
  149. //1,修改原有类型的闹钟及删除其对应的单个机器的数据,再重新创建。要把改变前和改变后的机器都通知一遍,要注意分类型推送
  150. //修改类型
  151. oldAlarmClock.setStatus(alarmClock.getStatus());
  152. String oldAlarmClockType = oldAlarmClock.getType();
  153. oldAlarmClock.setType(alarmClock.getType());
  154. String oldEquipmentIds = oldAlarmClock.getEquipmentIds();
  155. oldAlarmClock.setEquipmentIds(alarmClock.getEquipmentIds()+",");
  156. oldAlarmClock.setModifyDate(new Date());
  157. oldAlarmClock.setHour(alarmClock.getHour()+":00");
  158. oldAlarmClock.setWeek(alarmClock.getWeek()+",");
  159. tAlarmClockService.updateById(oldAlarmClock);
  160. //删除其对应的单个机器的数据
  161. LambdaQueryWrapper<TAlarmClockItem> query = Wrappers.lambdaQuery();
  162. query.eq(TAlarmClockItem::getClockId,oldAlarmClock.getId());
  163. List<TAlarmClockItem> list = tAlarmClockItemService.list(query);
  164. if(list.size()>0){
  165. for(TAlarmClockItem tAlarmClockItem:list){
  166. tAlarmClockItemService.removeById(tAlarmClockItem.getId());
  167. }
  168. }
  169. //新增其对应的单个机器的数据
  170. addItemList(oldAlarmClock);
  171. //旧类型通知
  172. sentMessageToEquiment(oldAlarmClockType,oldEquipmentIds,oldAlarmClock.getAdminId());
  173. //新类型通知
  174. sentMessageToEquiment(alarmClock.getType(),alarmClock.getEquipmentIds(),alarmClock.getAdminId());
  175. }else{
  176. //没有修改了类型 判断机器有没有做改变
  177. String oldEquipmentIds = oldAlarmClock.getEquipmentIds();
  178. String nowEquipmentIds = alarmClock.getEquipmentIds()+",";
  179. Boolean b = changIds(oldEquipmentIds,nowEquipmentIds);
  180. //b=true 机器改变 b=false 机器没有改变
  181. if(b){
  182. //b=true 机器改变
  183. //修改t_alarm_clock的机器ids及删除其对应的单个机器的数据,再重新创建。要把改变前和改变后的机器都通知一遍
  184. //修改类型t_alarm_clock的机器ids
  185. oldAlarmClock.setStatus(alarmClock.getStatus());
  186. oldAlarmClock.setEquipmentIds(oldAlarmClock.getEquipmentIds());
  187. oldAlarmClock.setModifyDate(new Date());
  188. oldAlarmClock.setHour(alarmClock.getHour()+":00");
  189. oldAlarmClock.setWeek(alarmClock.getWeek()+",");
  190. tAlarmClockService.updateById(oldAlarmClock);
  191. //删除其对应的单个机器的数据
  192. LambdaQueryWrapper<TAlarmClockItem> query = Wrappers.lambdaQuery();
  193. query.eq(TAlarmClockItem::getClockId,oldAlarmClock.getId());
  194. List<TAlarmClockItem> list = tAlarmClockItemService.list(query);
  195. if(list.size()>0){
  196. for(TAlarmClockItem tAlarmClockItem:list){
  197. tAlarmClockItemService.removeById(tAlarmClockItem.getId());
  198. }
  199. }
  200. //新增其对应的单个机器的数据
  201. addItemList(oldAlarmClock);
  202. //旧机器通知
  203. sentMessageToEquiment(alarmClock.getType(),oldEquipmentIds,oldAlarmClock.getAdminId());
  204. //新机器通知
  205. sentMessageToEquiment(alarmClock.getType(),nowEquipmentIds,alarmClock.getAdminId());
  206. }else{
  207. //b=false 机器没有改变 修改了状态 没有修改了类型
  208. //判断星期有没有改变
  209. Boolean aBoolean = changIds(oldAlarmClock.getWeek(), alarmClock.getWeek()+",");
  210. if(aBoolean){
  211. //week星期有改变
  212. //修改t_alarm_clock的机器week及删除其对应的单个机器的数据,再重新创建。要把机器通知一遍
  213. oldAlarmClock.setStatus(alarmClock.getStatus());
  214. oldAlarmClock.setModifyDate(new Date());
  215. oldAlarmClock.setHour(alarmClock.getHour()+":00");
  216. oldAlarmClock.setWeek(alarmClock.getWeek()+",");
  217. tAlarmClockService.updateById(oldAlarmClock);
  218. //删除其对应的单个机器的数据
  219. // TAlarmClockItemExample itemExample = new TAlarmClockItemExample();
  220. // TAlarmClockItemExample.Criteria criteria = itemExample.createCriteria();
  221. // criteria.andClockIdEqualTo(oldAlarmClock.getId());
  222. // tAlarmClockItemService.deleteByOption(itemExample);
  223. LambdaQueryWrapper<TAlarmClockItem> query = Wrappers.lambdaQuery();
  224. query.eq(TAlarmClockItem::getClockId,oldAlarmClock.getId());
  225. List<TAlarmClockItem> list = tAlarmClockItemService.list(query);
  226. if(list.size()>0){
  227. for(TAlarmClockItem tAlarmClockItem:list){
  228. tAlarmClockItemService.removeById(tAlarmClockItem.getId());
  229. }
  230. }
  231. //新增其对应的单个机器的数据
  232. addItemList(oldAlarmClock);
  233. //机器通知
  234. sentMessageToEquiment(alarmClock.getType(),oldEquipmentIds,oldAlarmClock.getAdminId());
  235. }else {
  236. //week星期没有改变 修改了状态 没有修改了类型
  237. //判断时间有没有改变
  238. if(!oldAlarmClock.getHour().equals(alarmClock.getHour()+":00")){
  239. //有改变
  240. //修改t_alarm_clock的机器hour及删除其对应的单个机器的数据,再重新创建。要把机器通知一遍
  241. oldAlarmClock.setStatus(alarmClock.getStatus());
  242. oldAlarmClock.setModifyDate(new Date());
  243. oldAlarmClock.setHour(alarmClock.getHour()+":00");
  244. tAlarmClockService.updateById(oldAlarmClock);
  245. //删除其对应的单个机器的数据
  246. // TAlarmClockItemExample itemExample = new TAlarmClockItemExample();
  247. // TAlarmClockItemExample.Criteria criteria = itemExample.createCriteria();
  248. // criteria.andClockIdEqualTo(oldAlarmClock.getId());
  249. // tAlarmClockItemService.deleteByOption(itemExample);
  250. LambdaQueryWrapper<TAlarmClockItem> query = Wrappers.lambdaQuery();
  251. query.eq(TAlarmClockItem::getClockId,oldAlarmClock.getId());
  252. List<TAlarmClockItem> list = tAlarmClockItemService.list(query);
  253. if(list.size()>0){
  254. for(TAlarmClockItem tAlarmClockItem:list){
  255. tAlarmClockItemService.removeById(tAlarmClockItem.getId());
  256. }
  257. }
  258. //新增其对应的单个机器的数据
  259. addItemList(oldAlarmClock);
  260. //机器通知
  261. sentMessageToEquiment(alarmClock.getType(),oldEquipmentIds,oldAlarmClock.getAdminId());
  262. }else{
  263. //没改变
  264. oldAlarmClock.setStatus(alarmClock.getStatus());
  265. oldAlarmClock.setModifyDate(new Date());
  266. tAlarmClockService.updateById(oldAlarmClock);
  267. //删除其对应的单个机器的数据
  268. // TAlarmClockItemExample itemExample = new TAlarmClockItemExample();
  269. // TAlarmClockItemExample.Criteria criteria = itemExample.createCriteria();
  270. // criteria.andClockIdEqualTo(oldAlarmClock.getId());
  271. // tAlarmClockItemService.deleteByOption(itemExample);
  272. LambdaQueryWrapper<TAlarmClockItem> query = Wrappers.lambdaQuery();
  273. query.eq(TAlarmClockItem::getClockId,oldAlarmClock.getId());
  274. List<TAlarmClockItem> list = tAlarmClockItemService.list(query);
  275. if(list.size()>0){
  276. for(TAlarmClockItem tAlarmClockItem:list){
  277. tAlarmClockItemService.removeById(tAlarmClockItem.getId());
  278. }
  279. }
  280. //新增其对应的单个机器的数据
  281. addItemList(oldAlarmClock);
  282. //机器通知
  283. sentMessageToEquiment(alarmClock.getType(),oldEquipmentIds,oldAlarmClock.getAdminId());
  284. }
  285. }
  286. }
  287. }
  288. }else{
  289. //没有修改状态
  290. //是否改变了闹钟的类型
  291. if(!oldAlarmClock.getType().equals(alarmClock.getType())){
  292. //修改了类型
  293. //1,修改原有类型的闹钟及删除其对应的单个机器的数据,再重新创建。要把改变前和改变后的机器都通知一遍,要注意分类型推送
  294. //修改类型
  295. oldAlarmClock.setStatus(alarmClock.getStatus());
  296. String oldAlarmClockType = oldAlarmClock.getType();
  297. oldAlarmClock.setType(alarmClock.getType());
  298. String oldEquipmentIds = oldAlarmClock.getEquipmentIds();
  299. oldAlarmClock.setEquipmentIds(alarmClock.getEquipmentIds()+",");
  300. oldAlarmClock.setModifyDate(new Date());
  301. oldAlarmClock.setHour(alarmClock.getHour()+":00");
  302. oldAlarmClock.setWeek(alarmClock.getWeek()+",");
  303. tAlarmClockService.updateById(oldAlarmClock);
  304. //删除其对应的单个机器的数据
  305. // TAlarmClockItemExample itemExample = new TAlarmClockItemExample();
  306. // TAlarmClockItemExample.Criteria criteria = itemExample.createCriteria();
  307. // criteria.andClockIdEqualTo(oldAlarmClock.getId());
  308. // tAlarmClockItemService.deleteByOption(itemExample);
  309. LambdaQueryWrapper<TAlarmClockItem> query = Wrappers.lambdaQuery();
  310. query.eq(TAlarmClockItem::getClockId,oldAlarmClock.getId());
  311. List<TAlarmClockItem> list = tAlarmClockItemService.list(query);
  312. if(list.size()>0){
  313. for(TAlarmClockItem tAlarmClockItem:list){
  314. tAlarmClockItemService.removeById(tAlarmClockItem.getId());
  315. }
  316. }
  317. //新增其对应的单个机器的数据
  318. addItemList(oldAlarmClock);
  319. //旧类型通知
  320. sentMessageToEquiment(oldAlarmClockType,oldEquipmentIds,oldAlarmClock.getAdminId());
  321. //新类型通知
  322. sentMessageToEquiment(alarmClock.getType(),alarmClock.getEquipmentIds(),alarmClock.getAdminId());
  323. }else{
  324. //没有修改类型 判断机器有没有做改变
  325. String oldEquipmentIds = oldAlarmClock.getEquipmentIds();
  326. String nowEquipmentIds = alarmClock.getEquipmentIds()+",";
  327. Boolean b = changIds(oldEquipmentIds,nowEquipmentIds);
  328. //b=true 机器改变 b=false 机器没有改变
  329. if(b){
  330. //b=true 机器改变
  331. //修改t_alarm_clock的机器ids及删除其对应的单个机器的数据,再重新创建。要把改变前和改变后的机器都通知一遍
  332. //修改类型t_alarm_clock的机器ids
  333. oldAlarmClock.setEquipmentIds(alarmClock.getEquipmentIds()+",");
  334. oldAlarmClock.setModifyDate(new Date());
  335. oldAlarmClock.setHour(alarmClock.getHour()+":00");
  336. oldAlarmClock.setWeek(alarmClock.getWeek()+",");
  337. tAlarmClockService.updateById(oldAlarmClock);
  338. //删除其对应的单个机器的数据
  339. // TAlarmClockItemExample itemExample = new TAlarmClockItemExample();
  340. // TAlarmClockItemExample.Criteria criteria = itemExample.createCriteria();
  341. // criteria.andClockIdEqualTo(oldAlarmClock.getId());
  342. // tAlarmClockItemService.deleteByOption(itemExample);
  343. LambdaQueryWrapper<TAlarmClockItem> query = Wrappers.lambdaQuery();
  344. query.eq(TAlarmClockItem::getClockId,oldAlarmClock.getId());
  345. List<TAlarmClockItem> list = tAlarmClockItemService.list(query);
  346. if(list.size()>0){
  347. for(TAlarmClockItem tAlarmClockItem:list){
  348. tAlarmClockItemService.removeById(tAlarmClockItem.getId());
  349. }
  350. }
  351. //新增其对应的单个机器的数据
  352. addItemList(oldAlarmClock);
  353. //旧机器通知
  354. sentMessageToEquiment(alarmClock.getType(),oldEquipmentIds,oldAlarmClock.getAdminId());
  355. //新机器通知
  356. sentMessageToEquiment(alarmClock.getType(),nowEquipmentIds,alarmClock.getAdminId());
  357. }else{
  358. //b=false 机器没有改变 没有修改状态 没有修改类型
  359. //判断星期有没有改变
  360. Boolean aBoolean = changIds(oldAlarmClock.getWeek(), alarmClock.getWeek()+",");
  361. if(aBoolean){
  362. //week星期有改变
  363. //修改t_alarm_clock的机器week及删除其对应的单个机器的数据,再重新创建。要把机器通知一遍
  364. oldAlarmClock.setStatus(alarmClock.getStatus());
  365. oldAlarmClock.setModifyDate(new Date());
  366. oldAlarmClock.setHour(alarmClock.getHour()+":00");
  367. oldAlarmClock.setWeek(alarmClock.getWeek()+",");
  368. tAlarmClockService.updateById(oldAlarmClock);
  369. //删除其对应的单个机器的数据
  370. // TAlarmClockItemExample itemExample = new TAlarmClockItemExample();
  371. // TAlarmClockItemExample.Criteria criteria = itemExample.createCriteria();
  372. // criteria.andClockIdEqualTo(oldAlarmClock.getId());
  373. // tAlarmClockItemService.deleteByOption(itemExample);
  374. LambdaQueryWrapper<TAlarmClockItem> query = Wrappers.lambdaQuery();
  375. query.eq(TAlarmClockItem::getClockId,oldAlarmClock.getId());
  376. List<TAlarmClockItem> list = tAlarmClockItemService.list(query);
  377. if(list.size()>0){
  378. for(TAlarmClockItem tAlarmClockItem:list){
  379. tAlarmClockItemService.removeById(tAlarmClockItem.getId());
  380. }
  381. }
  382. //新增其对应的单个机器的数据
  383. addItemList(oldAlarmClock);
  384. //机器通知
  385. sentMessageToEquiment(alarmClock.getType(),oldEquipmentIds,oldAlarmClock.getAdminId());
  386. }else {
  387. //week星期没有改变 修改了状态 没有修改了类型
  388. //判断时间有没有改变
  389. if(!oldAlarmClock.getHour().equals(alarmClock.getHour()+":00")){
  390. //有改变
  391. //修改t_alarm_clock的机器hour及删除其对应的单个机器的数据,再重新创建。要把机器通知一遍
  392. oldAlarmClock.setStatus(alarmClock.getStatus());
  393. oldAlarmClock.setModifyDate(new Date());
  394. oldAlarmClock.setHour(alarmClock.getHour()+":00");
  395. tAlarmClockService.updateById(oldAlarmClock);
  396. //删除其对应的单个机器的数据
  397. // TAlarmClockItemExample itemExample = new TAlarmClockItemExample();
  398. // TAlarmClockItemExample.Criteria criteria = itemExample.createCriteria();
  399. // criteria.andClockIdEqualTo(oldAlarmClock.getId());
  400. // tAlarmClockItemService.deleteByOption(itemExample);
  401. LambdaQueryWrapper<TAlarmClockItem> query = Wrappers.lambdaQuery();
  402. query.eq(TAlarmClockItem::getClockId,oldAlarmClock.getId());
  403. List<TAlarmClockItem> list = tAlarmClockItemService.list(query);
  404. if(list.size()>0){
  405. for(TAlarmClockItem tAlarmClockItem:list){
  406. tAlarmClockItemService.removeById(tAlarmClockItem.getId());
  407. }
  408. }
  409. //新增其对应的单个机器的数据
  410. addItemList(oldAlarmClock);
  411. //机器通知
  412. sentMessageToEquiment(alarmClock.getType(),oldEquipmentIds,oldAlarmClock.getAdminId());
  413. }
  414. }
  415. }
  416. }
  417. }
  418. return ResponseEntity.status(HttpStatus.OK)
  419. .body(new ResultMessage().setCode(true).setData(null).setMessage("SUCCESS"));
  420. }
  421. //机器及星期是否改变
  422. private Boolean changIds(String oldEquipmentIds, String nowEquipmentIds) {
  423. Boolean b = true;
  424. String[] olds = oldEquipmentIds.split(",");
  425. Long[] a = new Long[olds.length];
  426. for(int i=0;i<olds.length;i++){
  427. a[i] = Long.valueOf(olds[i]);
  428. }
  429. Arrays.sort(a);
  430. StringBuffer old = new StringBuffer();
  431. for(int i=0;i<a.length;i++){
  432. old.append(a[i]+",");
  433. }
  434. String[] newIds = nowEquipmentIds.split(",");
  435. Long[] c = new Long[newIds.length];
  436. for(int i=0;i<newIds.length;i++){
  437. c[i] = Long.valueOf(newIds[i]);
  438. }
  439. Arrays.sort(c);
  440. StringBuffer now = new StringBuffer();
  441. for(int i=0;i<c.length;i++){
  442. now.append(c[i]+",");
  443. }
  444. if(old.toString().equals(now.toString())){
  445. b=false;
  446. }
  447. return b;
  448. }
  449. @ApiOperation(value = "删除闹钟")
  450. @PostMapping("/delete")
  451. public ResponseModel<?> delete(@RequestBody TAlarmClock alarmClock){
  452. if(alarmClock.getId()==null){
  453. return R.fail(ResponseCodesEnum.A0001);
  454. }
  455. LambdaQueryWrapper<TAlarmClockItem> query = Wrappers.lambdaQuery();
  456. query.eq(TAlarmClockItem::getClockId,alarmClock.getId());
  457. List<TAlarmClockItem> list = tAlarmClockItemService.list(query);
  458. if(!list.isEmpty()){
  459. for(TAlarmClockItem tAlarmClockItem:list){
  460. tAlarmClockItemService.removeById(tAlarmClockItem.getId());
  461. }
  462. }
  463. tAlarmClockService.removeById(alarmClock.getId());
  464. return R.ok();
  465. }
  466. // 添加对应单个机器的列表
  467. private void addItemList(TAlarmClock alarmClock) {
  468. Long alarmClockItemId = alarmClock.getId();
  469. String equipmentIds = alarmClock.getEquipmentIds();
  470. String[] eids = equipmentIds.split(",");
  471. for (int i = 0;i < eids.length;i++){
  472. TAlarmClockItem alarmClockItem = new TAlarmClockItem();
  473. alarmClockItem.setAdminId(alarmClock.getAdminId());
  474. alarmClockItem.setEquipmentId(Long.valueOf(eids[i]));
  475. alarmClockItem.setClockId(alarmClockItemId);
  476. alarmClockItem.setHour(alarmClock.getHour());
  477. alarmClockItem.setWeek(alarmClock.getWeek());
  478. alarmClockItem.setStatus(alarmClock.getStatus());
  479. alarmClockItem.setType(alarmClock.getType());
  480. alarmClockItem.setModifyDate(new Date());
  481. alarmClockItem.setCreateDate(new Date());
  482. tAlarmClockItemService.save(alarmClockItem);
  483. }
  484. }
  485. // type 0:炉头开启,1:炉头关闭,2:开始休眠,3:结束休眠
  486. private void sentMessageToEquiment(String type,String ids,Long adminId) {
  487. String[] eids = ids.split(",");
  488. if(eids.length>0){
  489. for (int i = 0;i < eids.length;i++){
  490. TEquipment equipment = tEquipmentService.getById(Long.valueOf(eids[i]));
  491. LambdaQueryWrapper<TAlarmClockItem> query = Wrappers.lambdaQuery();
  492. query.eq(TAlarmClockItem::getEquipmentId,Long.valueOf(eids[i]));
  493. query.eq(TAlarmClockItem::getType,type);
  494. query.eq(TAlarmClockItem::getAdminId,adminId);
  495. query.eq(TAlarmClockItem::getStatus,"1");
  496. List<TAlarmClockItem> tAlarmClockItems = tAlarmClockItemService.list(query);
  497. JSONObject kindData = new JSONObject();
  498. kindData.put("type" ,type);
  499. List<String> list = new ArrayList<>();
  500. if(tAlarmClockItems.size()>0){
  501. for(TAlarmClockItem alarmClockItem:tAlarmClockItems){
  502. list.add(alarmClockItem.getWeek()+":"+alarmClockItem.getHour());
  503. }
  504. }
  505. kindData.put("data" , list);
  506. tEquipmentService.sentMessage(equipment.getClientId(),PushUtils.buildJson("alarmClock", kindData.toString()).toString());
  507. }
  508. }
  509. }
  510. }