TAlarmClockController.java 29 KB

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