TEquipmentController.java 75 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554
  1. package com.szwl.controller;
  2. import cn.com.crbank.ommo.bean.ResultMessage;
  3. import cn.com.crbank.ommo.esUtil.BeanUtils;
  4. //import org.apache.commons.beanutils.BeanUtils;
  5. import cn.hutool.core.util.StrUtil;
  6. import com.alibaba.fastjson.JSON;
  7. import com.alibaba.fastjson.JSONObject;
  8. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  9. import com.baomidou.mybatisplus.core.metadata.IPage;
  10. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  11. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  12. import com.szwl.constant.ResponseCodesEnum;
  13. import com.szwl.model.bean.*;
  14. import com.szwl.model.bo.JsonMessage;
  15. import com.szwl.model.bo.R;
  16. import com.szwl.model.bo.ResponseModel;
  17. import com.szwl.model.entity.*;
  18. import com.szwl.model.param.PasswordParam;
  19. import com.szwl.model.query.StatisticsParam;
  20. import com.szwl.model.utils.DateUtils;
  21. import com.szwl.model.utils.PushUtils;
  22. import com.szwl.service.*;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiOperation;
  25. import org.apache.commons.lang.StringUtils;
  26. import org.springframework.amqp.core.MessageProperties;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.http.HttpStatus;
  29. import org.springframework.http.ResponseEntity;
  30. import org.springframework.web.bind.annotation.*;
  31. import org.springframework.web.servlet.mvc.support.RedirectAttributes;
  32. import javax.servlet.http.HttpServletResponse;
  33. import java.io.*;
  34. import java.net.URL;
  35. import java.net.URLConnection;
  36. import java.text.SimpleDateFormat;
  37. import java.util.*;
  38. import java.util.concurrent.Executors;
  39. import java.util.concurrent.ScheduledExecutorService;
  40. import java.util.concurrent.ScheduledFuture;
  41. import java.util.concurrent.TimeUnit;
  42. import java.util.stream.Collectors;
  43. import static com.szwl.constant.ResponseCodesEnum.A0001;
  44. import static com.szwl.constant.ResponseCodesEnum.P0002;
  45. /**
  46. * <p>
  47. * 设备表 前端控制器
  48. * </p>
  49. *
  50. * @author wuhs
  51. * @since 2022-04-19
  52. */
  53. @Api(value = "/tEquipment", tags = {"设备控制器"})
  54. @RestController
  55. @RequestMapping("/tEquipment")
  56. public class TEquipmentController {
  57. @Autowired
  58. TEquipmentService tEquipmentService;
  59. @Autowired
  60. TEquipmentDescService equipmentDescService;
  61. @Autowired
  62. TAdminService tAdminService;
  63. @Autowired
  64. TParametersService parametersService;
  65. @Autowired
  66. TAlarmRecordService tAlarmRecordService;
  67. @Autowired
  68. TAreaService tAreaService;
  69. @Autowired
  70. TOrderService tOrderService;
  71. @Autowired
  72. TAdminEquipmentService tAdminEquipmentService;
  73. private int j;
  74. private static final int TIMEOUT = 30000; // 超时时间为30秒
  75. /**
  76. * @param adminName 商户的登录名
  77. * @param equipmentName 机器名称
  78. * @param areaName 地址名-fullName
  79. * @return
  80. */
  81. @ApiOperation(value = "查找机器列表")
  82. @PostMapping("/findList")
  83. public ResponseModel<IPage<?>> findList(Long id, String clientId, String adminName, String equipmentName, String areaName, String eqeStatus, String machineType, String equimentType, String channel, long current, long size) {
  84. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  85. TAdmin admin = tAdminService.getById(id);
  86. Integer type = admin.getType();
  87. if (type > 1) {
  88. if (type == 2) {
  89. query.eq(TEquipment::getAdminId, id);
  90. }
  91. if (type == 3) {
  92. //查找属于这个商家子账户的设备 todo
  93. TAdminEquipment adminEquipment = tAdminEquipmentService.getById(admin.getId());
  94. if (adminEquipment.getType().equals("0")) {
  95. //全部机器
  96. query.eq(TEquipment::getAdminId, admin.getParentId());
  97. } else {
  98. String equipmentIds = adminEquipment.getEquipmentIds();
  99. String[] strings = equipmentIds.split(",");
  100. // List<String> equipmentIdList = JSON.parseArray(equipmentIds, String.class);
  101. query.in(TEquipment::getId, strings);
  102. }
  103. }
  104. }
  105. if (StringUtils.isNotEmpty(clientId)) {
  106. query.like(TEquipment::getClientId, clientId);
  107. }
  108. if (StringUtils.isNotEmpty(adminName) && !adminName.equals("admin")) {
  109. LambdaQueryWrapper<TAdmin> adminQuery = Wrappers.lambdaQuery();
  110. adminQuery.eq(TAdmin::getUsername, adminName);
  111. List<TAdmin> list = tAdminService.list(adminQuery);
  112. if (list.size() > 0) {
  113. query.eq(TEquipment::getAdminId, list.get(0).getId());
  114. }
  115. }
  116. if (StringUtils.isNotEmpty(equipmentName)) {
  117. query.eq(TEquipment::getName, equipmentName);
  118. }
  119. if (StringUtils.isNotEmpty(areaName)) {
  120. query.like(TEquipment::getFullName, areaName);
  121. }
  122. if (StringUtils.isNotEmpty(eqeStatus)) {
  123. query.eq(TEquipment::getEqeStatus, eqeStatus);
  124. }
  125. if (StringUtils.isNotEmpty(machineType)) {
  126. query.eq(TEquipment::getMachineType, machineType);
  127. }
  128. if (StringUtils.isNotEmpty(equimentType)) {
  129. query.eq(TEquipment::getEquimentType, equimentType);
  130. }
  131. if (StringUtils.isNotEmpty(channel)) {
  132. query.eq(TEquipment::getChannel, channel);
  133. }
  134. query.orderByDesc(TEquipment::getCreateDate);
  135. Page<TEquipment> page = new Page<>(current, size, true);
  136. IPage<TEquipment> iPage = tEquipmentService.page(page, query);
  137. Page<TEquipmentDTO> pageDTO = new Page<>(current, size, true);
  138. IPage<TEquipmentDTO> iPageDTO = pageDTO;
  139. iPageDTO.setCurrent(iPage.getCurrent());
  140. iPageDTO.setPages(iPage.getPages());
  141. iPageDTO.setSize(iPage.getSize());
  142. iPageDTO.setTotal(iPage.getTotal());
  143. List<TEquipment> list = iPage.getRecords();
  144. List<TEquipmentDTO> equipmentDTOList = list.stream().map(equipment -> {
  145. TEquipmentDTO equipmentDTO = new TEquipmentDTO();
  146. BeanUtils.copyPropertiesIgnoreNull(equipment, equipmentDTO, true);
  147. return equipmentDTO;
  148. }).collect(Collectors.toList());
  149. for (TEquipmentDTO equipmentDTO : equipmentDTOList) {
  150. Date date = new Date();//取时间
  151. Calendar calendar = new GregorianCalendar();
  152. Calendar calendar_end = new GregorianCalendar();
  153. calendar.setTime(date);
  154. calendar_end.setTime(date);
  155. calendar.set(Calendar.HOUR_OF_DAY, 0);
  156. calendar.set(Calendar.MINUTE, 0);
  157. calendar.set(Calendar.SECOND, 0);
  158. calendar.set(Calendar.MILLISECOND, 0);
  159. calendar_end.set(Calendar.HOUR_OF_DAY, 23);
  160. calendar_end.set(Calendar.MINUTE, 59);
  161. calendar_end.set(Calendar.SECOND, 59);
  162. calendar_end.set(Calendar.MILLISECOND, 999);
  163. Date date_start = calendar.getTime();
  164. Date date_end = calendar_end.getTime();
  165. LambdaQueryWrapper<TAlarmRecord> query1 = Wrappers.lambdaQuery();
  166. query1.eq(TAlarmRecord::getEquipmentId, equipmentDTO.getId());
  167. query1.eq(TAlarmRecord::getIsEliminate, 0);
  168. query1.gt(TAlarmRecord::getOccurrenceTime, date_start);
  169. query1.le(TAlarmRecord::getOccurrenceTime, date_end);
  170. List<TAlarmRecord> alarmRecordList = tAlarmRecordService.list(query1);
  171. if (alarmRecordList.size() > 0) {
  172. equipmentDTO.setHasTodayAlarm(true);
  173. equipmentDTO.setAlarmList(alarmRecordList);
  174. } else {
  175. equipmentDTO.setHasTodayAlarm(false);
  176. }
  177. TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipmentDTO.getId());
  178. if (equipmentDesc != null) {
  179. equipmentDTO.setRedSugar(equipmentDesc.getRedSugar());
  180. equipmentDTO.setWasteWater(equipmentDesc.getWasteWater());
  181. equipmentDTO.setWater(equipmentDesc.getWater());
  182. equipmentDTO.setYellowSugar(equipmentDesc.getYellowSugar());
  183. equipmentDTO.setBlueSugar(equipmentDesc.getBlueSugar());
  184. equipmentDTO.setIsMaterialUse(equipmentDesc.getIsMaterialUse());
  185. equipmentDTO.setStick(equipmentDesc.getStick());
  186. equipmentDTO.setWhiteSugar(equipmentDesc.getWhiteSugar());
  187. equipmentDTO.setSleepDesc(equipmentDesc.getSleepDesc());
  188. equipmentDTO.setOutDoor(equipmentDesc.getOutDoor());
  189. equipmentDTO.setInDoor(equipmentDesc.getInDoor());
  190. }
  191. }
  192. iPageDTO.setRecords(equipmentDTOList);
  193. return R.ok(iPageDTO);
  194. }
  195. @ApiOperation(value = "id查找机器详情")
  196. @PostMapping("/findById")
  197. public ResponseModel<?> findById(@RequestParam Long id) {
  198. TEquipment equipment = tEquipmentService.getById(id);
  199. TEquipmentDTO equipmentDTO = new TEquipmentDTO();
  200. // BeanUtils.copyProperties(equipment, equipmentDTO);
  201. BeanUtils.copyPropertiesIgnoreNull(equipment, equipmentDTO, true);
  202. TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipment.getId());
  203. if (equipmentDesc != null) {
  204. equipmentDTO.setCouponStatus(equipmentDesc.getCouponStatus());
  205. equipmentDTO.setInDoor(equipmentDesc.getInDoor());
  206. equipmentDTO.setOutDoor(equipmentDesc.getOutDoor());
  207. }
  208. String messageReceiver = equipment.getMessageReceiver();
  209. if (StringUtils.isNotEmpty(messageReceiver)) {
  210. String[] message = messageReceiver.split(",");
  211. int i = message.length;
  212. if (i > 0) {
  213. equipmentDTO.setMessageReceiver1(message[0]);
  214. }
  215. if (i > 1) {
  216. equipmentDTO.setMessageReceiver2(message[1]);
  217. }
  218. if (i > 2) {
  219. equipmentDTO.setMessageReceiver3(message[2]);
  220. }
  221. // equipmentDTO.setMessageReceiver1(message[0]);
  222. // equipmentDTO.setMessageReceiver2(message[1]);
  223. // equipmentDTO.setMessageReceiver3(message[2]);
  224. }
  225. return R.ok(equipmentDTO);
  226. }
  227. @ApiOperation(value = "id查找机器详情")
  228. @PostMapping("/findById2")
  229. public ResponseModel<TEquipment> findById2(@RequestParam Long id) {
  230. TEquipment equipment = tEquipmentService.getById(id);
  231. return R.ok(equipment);
  232. }
  233. @ApiOperation(value = "id查找机器详情")
  234. @GetMapping("/findEquipmentById")
  235. public ResponseModel<TEquipment> findEquipmentById(@RequestParam String id) {
  236. TEquipment equipment = tEquipmentService.getById(id);
  237. return R.ok(equipment);
  238. }
  239. //查找设备
  240. @ApiOperation(value = "ClientId查找设备")
  241. @GetMapping("/findEquipmentByClientId")
  242. public ResponseModel<TEquipment> findEquipmentByClientId(@RequestParam String clientId) {
  243. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  244. query.eq(TEquipment::getClientId, clientId);
  245. List<TEquipment> list = tEquipmentService.list(query);
  246. TEquipment equipment = list.get(0);
  247. return R.ok(equipment);
  248. }
  249. //查找设备
  250. @ApiOperation(value = "获取对应的机器id")
  251. @GetMapping("/getClientIdList")
  252. public ResponseModel<TAdminEquipment> getClientIdList(@RequestParam String adminId) {
  253. //查找属于这个商家子账户的设备
  254. TAdminEquipment adminEquipment = tAdminEquipmentService.getById(adminId);
  255. return R.ok(adminEquipment);
  256. }
  257. //查找设备
  258. @ApiOperation(value = "获取对应的机器编号")
  259. @GetMapping("/getClientIds")
  260. public ResponseModel<List<String>> getClientIds(@RequestParam String adminId) {
  261. //查找属于这个商家子账户的设备
  262. TAdminEquipment adminEquipment = tAdminEquipmentService.getById(adminId);
  263. String equipmentIds = adminEquipment.getEquipmentIds();
  264. // 分割保存在设备ID保存在list
  265. String[] tEquipmentIds = equipmentIds.split(",");
  266. // List<String> list = Collections.singletonList(equipmentIds);
  267. List<String> list = Arrays.asList(tEquipmentIds);
  268. List<String> returnList = new ArrayList<>();
  269. if (list.size() > 0) {
  270. for (String id : list) {
  271. TEquipment equipment = tEquipmentService.getById(id);
  272. returnList.add(equipment.getClientId());
  273. }
  274. }
  275. return R.ok(returnList);
  276. }
  277. @ApiOperation(value = "获取机器列表 分页")
  278. @GetMapping("/pageEquipment2")
  279. public ResponseModel<IPage<TEquipment>> pageEquipment2(@RequestParam(value = "current") long current, @RequestParam(value = "size") long size) {
  280. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  281. Page<TEquipment> page = new Page<>(current, size, true);
  282. IPage<TEquipment> iPage = tEquipmentService.page(page, query);
  283. return R.ok(iPage);
  284. }
  285. //查找设备
  286. @ApiOperation(value = "adminId查找设备")
  287. @GetMapping("/listEquipment")
  288. public ResponseModel<?> listEquipment(String adminId) {
  289. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  290. TAdmin admin = tAdminService.getById(adminId);
  291. Integer type = admin.getType();
  292. if (type < 2) {
  293. query.eq(TEquipment::getAdminId, 238);
  294. } else {
  295. query.eq(TEquipment::getAdminId, adminId);
  296. }
  297. if (type == 3) {
  298. //查找属于这个商家子账户的设备 todo
  299. TAdminEquipment adminEquipment = tAdminEquipmentService.getById(admin.getId());
  300. if (adminEquipment.getType().equals("0")) {
  301. //全部机器
  302. query.eq(TEquipment::getAdminId, admin.getParentId());
  303. } else {
  304. String equipmentIds = adminEquipment.getEquipmentIds();
  305. String[] strings = equipmentIds.split(",");
  306. // List<String> equipmentIdList = JSON.parseArray(equipmentIds, String.class);
  307. query.in(TEquipment::getId, strings);
  308. }
  309. }
  310. // query.eq(TEquipment::getAdminId,adminId);
  311. List<TEquipment> list = tEquipmentService.list(query);
  312. return R.ok(list);
  313. }
  314. @ApiOperation(value = "查找设备")
  315. @PostMapping("/getEquipmentByNameAndId")
  316. public ResponseModel<TEquipment> getEquipmentByNameAndId(@RequestBody TEquipment equipment) {
  317. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  318. TAdmin admin = tAdminService.getById(equipment.getId());
  319. if (admin.getType() == 3) {
  320. //子账户
  321. TAdmin parentAdmin = tAdminService.getById(admin.getParentId());
  322. LambdaQueryWrapper<TEquipment> query1 = Wrappers.lambdaQuery();
  323. query1.eq(TEquipment::getAdminId, parentAdmin.getId());
  324. List<TEquipment> list1 = tEquipmentService.list(query1);
  325. if (list1.size() > 0) {
  326. for (TEquipment tEquipment : list1) {
  327. if (equipment.getName().equals(tEquipment.getName())) {
  328. return R.ok(tEquipment);
  329. }
  330. }
  331. }
  332. }
  333. if (admin.getType() < 2) {
  334. query.eq(TEquipment::getName, equipment.getName());
  335. }
  336. if (admin.getType() == 2) {
  337. query.eq(TEquipment::getAdminId, equipment.getAdminId());
  338. query.eq(TEquipment::getName, equipment.getName());
  339. }
  340. List<TEquipment> list = tEquipmentService.list(query);
  341. TEquipment tEquipment = list.get(0);
  342. return R.ok(tEquipment);
  343. }
  344. /**
  345. * 更新
  346. */
  347. @ApiOperation(value = "更新机器")
  348. // @PostMapping("/update")
  349. @RequestMapping(value = "/update", method = RequestMethod.POST)
  350. public ResponseModel<?> update(@RequestBody TEquipmentDTO equipment) {
  351. //获取修改前的设备
  352. TEquipment oldEquipment = tEquipmentService.getById(equipment.getId());
  353. if (StringUtils.isNotEmpty(equipment.getSn())) {
  354. oldEquipment.setSn(equipment.getSn());
  355. }
  356. if (StringUtils.isNotEmpty(equipment.getName())) {
  357. oldEquipment.setName(equipment.getName());
  358. }
  359. if (StringUtils.isNotEmpty(equipment.getSelfName())) {
  360. oldEquipment.setSelfName(equipment.getSelfName());
  361. }
  362. if (equipment.getAreaId() != null) {
  363. oldEquipment.setAreaId(equipment.getAreaId());
  364. }
  365. if (StringUtils.isNotEmpty(equipment.getContactName())) {
  366. oldEquipment.setContactName(equipment.getContactName());
  367. }
  368. if (StringUtils.isNotEmpty(equipment.getContactPhone())) {
  369. oldEquipment.setContactPhone(equipment.getContactPhone());
  370. }
  371. if (StringUtils.isNotEmpty(equipment.getOperationalName())) {
  372. oldEquipment.setOperationalName(equipment.getOperationalName());
  373. }
  374. if (StringUtils.isNotEmpty(equipment.getOperationalPhone())) {
  375. oldEquipment.setOperationalPhone(equipment.getOperationalPhone());
  376. }
  377. if (StringUtils.isNotEmpty(equipment.getOperator())) {
  378. oldEquipment.setOperator(equipment.getOperator());
  379. }
  380. if (StringUtils.isNotEmpty(equipment.getSimNo())) {
  381. oldEquipment.setSimNo(equipment.getSimNo());
  382. }
  383. if (equipment.getTimeRuleId() != null) {
  384. oldEquipment.setTimeRuleId(equipment.getTimeRuleId());
  385. }
  386. if (StringUtils.isNotEmpty(equipment.getPlcVersion())) {
  387. oldEquipment.setPlcVersion(equipment.getPlcVersion());
  388. }
  389. if (StringUtils.isNotEmpty(equipment.getChannel())) {
  390. oldEquipment.setChannel(equipment.getChannel());
  391. }
  392. if (equipment.getPayType() != null) {
  393. oldEquipment.setPayType(equipment.getPayType());
  394. }
  395. if (equipment.getEndDate() != null) {
  396. oldEquipment.setEndDate(equipment.getEndDate());
  397. }
  398. if (equipment.getAreaId() != null) {
  399. oldEquipment.setFullName(tAreaService.getById(equipment.getAreaId()).getFullName());
  400. }
  401. if (StringUtils.isNotEmpty(equipment.getFlowers())) {
  402. if (StringUtils.isEmpty(oldEquipment.getFlowers())) {
  403. //发信息
  404. tEquipmentService.sentMessage(oldEquipment.getClientId(), PushUtils.buildJson("flowers", equipment.getFlowers()).toString());
  405. }
  406. if (StringUtils.isNotEmpty(oldEquipment.getFlowers()) && !oldEquipment.getFlowers().equals(equipment.getFlowers())) {
  407. //发信息
  408. tEquipmentService.sentMessage(oldEquipment.getClientId(), PushUtils.buildJson("flowers", equipment.getFlowers()).toString());
  409. }
  410. oldEquipment.setFlowers(equipment.getFlowers());
  411. }
  412. String[] message = new String[3];
  413. ;
  414. message[0] = equipment.getMessageReceiver1();
  415. message[1] = equipment.getMessageReceiver2();
  416. message[2] = equipment.getMessageReceiver3();
  417. if (message.length > 0) {
  418. oldEquipment.setMessageReceiver(message[0] + "," + message[1] + "," + message[2]);
  419. }
  420. tEquipmentService.updateById(oldEquipment);
  421. String channel = oldEquipment.getChannel();
  422. String equimentType = oldEquipment.getEquimentType();
  423. String clientId = oldEquipment.getClientId();
  424. if (equipment.getPayType() != null) {
  425. tEquipmentService.sentMessage(oldEquipment.getClientId(), PushUtils.buildJson("payType", oldEquipment.getPayType().toString() + ":" + oldEquipment.getTimeRuleId()).toString());
  426. }
  427. if (StringUtils.isNotEmpty(oldEquipment.getContactName()) && StringUtils.isNotEmpty(oldEquipment.getContactPhone())) {
  428. tEquipmentService.sentMessage(oldEquipment.getClientId(), PushUtils.buildJson("phone", oldEquipment.getContactName() + ":" + oldEquipment.getContactPhone().toString()).toString());
  429. }
  430. if (StringUtils.isNotEmpty(oldEquipment.getCompanyPhone())) {
  431. tEquipmentService.sentMessage(oldEquipment.getClientId(), PushUtils.buildJson("companyPhone", oldEquipment.getCompanyPhone()).toString());
  432. }
  433. if (StringUtils.isNotEmpty(oldEquipment.getPlcVersion())) {
  434. tEquipmentService.sentMessage(oldEquipment.getClientId(), PushUtils.buildJson("plcVersion", oldEquipment.getPlcVersion()).toString());
  435. }
  436. if (StringUtils.isNotEmpty(oldEquipment.getSelfName())) {
  437. tEquipmentService.sentMessage(oldEquipment.getClientId(), PushUtils.buildJson("selfName", oldEquipment.getSelfName()).toString());
  438. }
  439. if (oldEquipment.getTimeRuleId() != null) {
  440. tEquipmentService.sentMessage(oldEquipment.getClientId(), PushUtils.buildJson("pushTimeRule", oldEquipment.getTimeRuleId() + "").toString());
  441. }
  442. if (StringUtils.isNotEmpty(oldEquipment.getOperationalName())) {
  443. tEquipmentService.sentMessage(oldEquipment.getClientId(), PushUtils.buildJson("operational", oldEquipment.getOperationalName() + ":" + oldEquipment.getOperationalPhone()).toString());
  444. }
  445. return R.ok("null", "更新成功!");
  446. }
  447. @ApiOperation(value = "更新机器 整体")
  448. @PostMapping("/updateByEquipment")
  449. public ResponseModel<?> updateByEquipment(@RequestBody TEquipment equipment) {
  450. if (equipment != null && equipment.getId() != null) {
  451. equipment.setModifyDate(new Date());
  452. tEquipmentService.updateById(equipment);
  453. }
  454. return R.ok();
  455. }
  456. @ApiOperation(value = "查找机器")
  457. @PostMapping("/getEquipmentListByUser")
  458. public ResponseEntity<?> getEquipmentListByUser(@RequestBody TAdmin param) {
  459. List<TAdminDTO> resultList = new ArrayList<>();
  460. if ("admin".equals(param.getUsername())) { // 管理员查所有商家
  461. // List<TAdmin> adminList = tAdminService.selectByOption(null);
  462. List<TAdmin> adminList = tAdminService.list();
  463. // List<TEquipment> equipmentList = tEquipmentService.selectByOption(null);
  464. List<TEquipment> equipmentList = tEquipmentService.list();
  465. // List<TAlarmRecord> alarmRecordList = tAlarmRecordService.getLastAlarmRecord(null);
  466. List<TAlarmRecord> alarmRecordList = tAlarmRecordService.list();
  467. //获取当前用户今天所有机器的所以警报信息
  468. // List<TAlarmRecord> alarmList = tAlarmRecordService.getAlarmList(null);
  469. List<TAlarmRecord> alarmList = tAlarmRecordService.getAlarmList(null);
  470. resultList = adminList.stream().map(e -> {
  471. TAdminDTO dto = new TAdminDTO();
  472. BeanUtils.copyPropertiesIgnoreNull(e, dto, true);
  473. List<TEquipmentDTO> selList = equipmentList.stream()
  474. .filter(equipment -> e.getId().equals(equipment.getAdminId())) // 查对应的设备
  475. .map(equipment -> {
  476. TEquipmentDTO equipmentDTO = new TEquipmentDTO();
  477. BeanUtils.copyPropertiesIgnoreNull(equipment, equipmentDTO, true);
  478. Optional<TAlarmRecord> op = alarmRecordList.stream().filter(alarm -> equipment.getClientId().equals(alarm.getClientId())).findFirst();
  479. if (op.isPresent()) {
  480. equipmentDTO.setAlarmContent(op.get().getAlarmContent());
  481. equipmentDTO.setOccurrenceTime(op.get().getOccurrenceTime());
  482. }
  483. //获取该机器的所有警报信息
  484. List<TAlarmRecord> eqAlarmList = alarmList.stream().filter(alarm -> equipment.getClientId().equals(alarm.getClientId())).collect(Collectors.toList());
  485. equipmentDTO.setAlarmList(eqAlarmList);
  486. if (eqAlarmList.size() > 0) {
  487. int i = 0;
  488. for (TAlarmRecord alarmRecord : eqAlarmList) {
  489. if (DateUtils.isSameDay(new Date(), alarmRecord.getOccurrenceTime())) {
  490. if (alarmRecord.getIsEliminate() == null || alarmRecord.getIsEliminate() == 0) {
  491. i++;
  492. }
  493. }
  494. }
  495. if (i > 0) {
  496. equipmentDTO.setHasTodayAlarm(true);
  497. } else {
  498. equipmentDTO.setHasTodayAlarm(false);
  499. }
  500. }
  501. return equipmentDTO;
  502. }).collect(Collectors.toList());
  503. dto.setEquipmentList(selList);
  504. return dto;
  505. }).collect(Collectors.toList());
  506. } else { // 只查当前商家的设备列表
  507. TAdminDTO dto = new TAdminDTO();
  508. BeanUtils.copyPropertiesIgnoreNull(param, dto, true);
  509. // TEquipmentExample example = new TEquipmentExample();
  510. // TEquipmentExample.Criteria criteria = example.createCriteria();
  511. // criteria.andAdminIdEqualTo(param.getId());
  512. // List<TEquipment> equipmentList = tEquipmentService.selectByOption(example);
  513. //todo 需要区分是否商家子账户
  514. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  515. query.eq(TEquipment::getAdminId, param.getId());
  516. List<TEquipment> equipmentList = tEquipmentService.list(query);
  517. List<TAlarmRecord> alarmRecordList = tAlarmRecordService.getLastAlarmRecord(param.getId());
  518. //获取当前用户今天所有机器的所以警报信息
  519. List<TAlarmRecord> alarmList = tAlarmRecordService.getAlarmList(param.getId());
  520. List<TEquipmentDTO> equipmentDTOList = equipmentList.stream().map(equipment -> {
  521. TEquipmentDTO equipmentDTO = new TEquipmentDTO();
  522. BeanUtils.copyPropertiesIgnoreNull(equipment, equipmentDTO, true);
  523. Optional<TAlarmRecord> op = alarmRecordList.stream().filter(alarm -> equipment.getClientId().equals(alarm.getClientId())).findFirst();
  524. if (op.isPresent()) {
  525. equipmentDTO.setAlarmContent(op.get().getAlarmContent());
  526. equipmentDTO.setOccurrenceTime(op.get().getOccurrenceTime());
  527. }
  528. //获取该机器的所有警报信息
  529. List<TAlarmRecord> eqAlarmList = alarmList.stream().filter(alarm -> equipment.getClientId().equals(alarm.getClientId())).collect(Collectors.toList());
  530. equipmentDTO.setAlarmList(eqAlarmList);
  531. // if(DateUtils.isSameDay(new Date(),op.get().getOccurrenceTime())){
  532. if (eqAlarmList.size() > 0) {
  533. int i = 0;
  534. for (TAlarmRecord alarmRecord : eqAlarmList) {
  535. if (DateUtils.isSameDay(new Date(), alarmRecord.getOccurrenceTime())) {
  536. if (alarmRecord.getIsEliminate() == null || alarmRecord.getIsEliminate() == 0) {
  537. i++;
  538. }
  539. }
  540. }
  541. if (i > 0) {
  542. equipmentDTO.setHasTodayAlarm(true);
  543. } else {
  544. equipmentDTO.setHasTodayAlarm(false);
  545. }
  546. }
  547. return equipmentDTO;
  548. }).collect(Collectors.toList());
  549. dto.setEquipmentList(equipmentDTOList);
  550. resultList.add(dto);
  551. }
  552. return ResponseEntity.status(HttpStatus.OK)
  553. .body(new ResultMessage().setCode(true).setData(resultList).setMessage("SUCCESS"));
  554. }
  555. @ApiOperation(value = "消除报警")
  556. @PostMapping("/eliminate")
  557. public ResponseEntity<?> eliminate(@RequestBody TAlarmRecord param) {
  558. TAlarmRecord tAlarmRecord = tAlarmRecordService.getById(param.getId());
  559. TEquipment equipment = tEquipmentService.getById(tAlarmRecord.getEquipmentId());
  560. JSONObject kindData = new JSONObject();
  561. kindData.put("id", param.getId());
  562. kindData.put("content", tAlarmRecord.getAlarmContent());
  563. tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("eliminate", kindData.toString()).toString());
  564. // PushUtils.push(equipment.getGtClientId(), "", "", PushUtils.buildJson("eliminate", kindData.toString()).toString());
  565. return ResponseEntity.status(HttpStatus.OK)
  566. .body(new ResultMessage().setCode(true).setData("0").setMessage("已发送"));
  567. }
  568. @ApiOperation(value = "修改机器音量")
  569. @PostMapping("/updateVolume")
  570. public ResponseEntity<?> updateVolume(@RequestBody TEquipment equipment) {
  571. if (!StringUtils.isEmpty(equipment.getVolume())) {
  572. TEquipment tEquipment = tEquipmentService.getById(equipment.getId());
  573. tEquipmentService.sentMessage(tEquipment.getClientId(), PushUtils.buildJson("volume", equipment.getVolume()).toString());
  574. // PushUtils.push(tEquipment.getGtClientId(), "", "", PushUtils.buildJson("volume", equipment.getVolume()).toString());
  575. }
  576. return ResponseEntity.status(HttpStatus.OK)
  577. .body(new ResultMessage().setCode(true).setData(true).setMessage("修改成功"));
  578. }
  579. //修改机器信息
  580. @ApiOperation(value = "修改机器信息")
  581. @PostMapping("/updateEquipment")
  582. public ResponseEntity<?> updateEquipment(@RequestBody TEquipment equipment) {
  583. TEquipment equipment1 = tEquipmentService.getById(equipment.getId());
  584. Integer type = equipment.getType();
  585. //修改基本信息
  586. if (type == 0) {
  587. equipment1.setName(equipment.getName());
  588. equipment1.setSimNo(equipment.getSimNo());
  589. equipment1.setOperator(equipment.getOperator());
  590. }
  591. //修改后台密码
  592. if (type == 1) {
  593. equipment1.setAdminPwd(equipment.getAdminPwd());
  594. equipment1.setGuestPwd(equipment.getGuestPwd());
  595. tEquipmentService.sentMessage(equipment1.getClientId(), PushUtils.buildJson("guestPwd", equipment1.getGuestPwd()).toString());
  596. tEquipmentService.sentMessage(equipment1.getClientId(), PushUtils.buildJson("adminPwd", equipment1.getAdminPwd()).toString());
  597. // PushUtils.push(equipment1.getGtClientId(), "【棉花糖】设备管理-更改密码", "修改guest密码", PushUtils.buildJson("guestPwd", equipment1.getGuestPwd()).toString());
  598. // PushUtils.push(equipment1.getGtClientId(), "【棉花糖】设备管理-更改密码", "修改admin密码", PushUtils.buildJson("adminPwd", equipment1.getAdminPwd()).toString());
  599. }
  600. //定时开机
  601. if (type == 3) {
  602. // equipment1.setBootTime(equipment.getBootTime());
  603. // tEquipmentService.sentMessage(equipment1.getClientId(),PushUtils.buildJson("updateBootTime", equipment.getBootTime()).toString());
  604. // PushUtils.push(equipment.getGtClientId(), "", "", PushUtils.buildJson("updateBootTime", equipment.getBootTime()).toString());
  605. }
  606. //定时关机
  607. if (type == 4) {
  608. // equipment1.setOffTime(equipment.getOffTime());
  609. // tEquipmentService.sentMessage(equipment1.getClientId(), PushUtils.buildJson("updateOffTime", equipment.getBootTime()).toString());
  610. // PushUtils.push(equipment.getGtClientId(), "", "", PushUtils.buildJson("updateOffTime", equipment.getBootTime()).toString());
  611. }
  612. if (type == 5) {
  613. equipment1.setMessageReceiver(equipment.getMessageReceiver());
  614. }
  615. Boolean t = tEquipmentService.updateById(equipment1);
  616. if (t == true) {
  617. return ResponseEntity.status(HttpStatus.OK)
  618. .body(new ResultMessage().setCode(true).setData(equipment1).setMessage("修改成功"));
  619. } else {
  620. return ResponseEntity.status(HttpStatus.OK)
  621. .body(new ResultMessage().setCode(false).setData(t).setMessage("修改失败"));
  622. }
  623. }
  624. //根据机器id获取用户信息
  625. @ApiOperation(value = "根据机器id获取用户信息")
  626. @PostMapping("/findByEquipment")
  627. public ResponseEntity<?> findByEquipment(@RequestBody TEquipment equipment) {
  628. TEquipment tEquipment = tEquipmentService.getById(equipment.getId());
  629. TAdmin tAdmin = tAdminService.getById(tEquipment.getAdminId());
  630. return ResponseEntity.status(HttpStatus.OK)
  631. .body(new ResultMessage().setCode(false).setData(tAdmin).setMessage(""));
  632. }
  633. //根据机器编号获取用户信息
  634. @ApiOperation(value = "根据机器编号获取用户信息")
  635. @PostMapping("/getEquipmentListLikeClientId")
  636. public ResponseEntity<?> getEquipmentListLikeClientId(@RequestBody TEquipment equipment) {
  637. if (StringUtils.isEmpty(equipment.getClientId())) {
  638. return ResponseEntity.status(HttpStatus.OK)
  639. .body(new ResultMessage().setCode(false).setData("").setMessage("设备编号为空"));
  640. }
  641. // TEquipmentExample example = new TEquipmentExample();
  642. // TEquipmentExample.Criteria criteria = example.createCriteria();
  643. // criteria.andClientIdLike(equipment.getClientId());
  644. // List<TEquipment> list = tEquipmentService.selectByOption(example);
  645. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  646. query.like(TEquipment::getClientId, equipment.getClientId());
  647. List<TEquipment> list = tEquipmentService.list(query);
  648. return ResponseEntity.status(HttpStatus.OK)
  649. .body(new ResultMessage().setCode(true).setData(list).setMessage(""));
  650. }
  651. //脱机
  652. @ApiOperation(value = "脱机")
  653. @PostMapping("/tuoji")
  654. public ResponseEntity<?> tuoji(@RequestBody TEquipment equipment) {
  655. if (equipment.getId() == null) {
  656. return ResponseEntity.status(HttpStatus.OK)
  657. .body(new ResultMessage().setCode(false).setData("").setMessage(""));
  658. }
  659. TEquipment tEquipment = tEquipmentService.getById(equipment.getId());
  660. tEquipmentService.sentMessage(tEquipment.getClientId(), PushUtils.buildJson("tuoji", "0").toString());
  661. if ("xxx".equals(tEquipment.getClientId().substring(tEquipment.getClientId().length() - 3, tEquipment.getClientId().length()))) {
  662. return ResponseEntity.status(HttpStatus.OK)
  663. .body(new ResultMessage().setCode(true).setData("").setMessage("发送成功!"));
  664. }
  665. tEquipment.setClientId(tEquipment.getClientId() + "xxx");
  666. tEquipmentService.updateById(tEquipment);
  667. return ResponseEntity.status(HttpStatus.OK)
  668. .body(new ResultMessage().setCode(true).setData("").setMessage("发送成功!"));
  669. }
  670. //一键补料
  671. @ApiOperation(value = "一键补料")
  672. @GetMapping("/buliao")
  673. public ResponseModel<?> buliao(String equipmentId) {
  674. TEquipment equipment = tEquipmentService.getById(equipmentId);
  675. if (equipment == null || equipment.getId() == null) {
  676. return R.fail(ResponseCodesEnum.A0001, "找不到设备");
  677. }
  678. TEquipmentDesc tEquipmentDesc = equipmentDescService.getById(equipment.getId());
  679. if (tEquipmentDesc != null) {
  680. tEquipmentDesc.setBlueSugar("100");
  681. tEquipmentDesc.setRedSugar("100");
  682. tEquipmentDesc.setStick("100");
  683. tEquipmentDesc.setWhiteSugar("100");
  684. tEquipmentDesc.setYellowSugar("100");
  685. tEquipmentDesc.setWater("100");
  686. tEquipmentDesc.setWasteWater("0");
  687. equipmentDescService.updateById(tEquipmentDesc);
  688. tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("buliao", "buliao").toString());
  689. } else {
  690. return R.fail(ResponseCodesEnum.A0001, "找不到设备");
  691. }
  692. return R.ok(null, "发送请求成功");
  693. }
  694. //
  695. @ApiOperation(value = "修改优惠券开关状态")
  696. @GetMapping("/updateCouponStatus")
  697. public ResponseModel<?> updateCouponStatus(String equipmentId, String couponStatus) {
  698. if (StringUtils.isEmpty(couponStatus) || StringUtils.isEmpty(equipmentId)) {
  699. return R.fail(ResponseCodesEnum.A0001, "参数有空");
  700. }
  701. TEquipment equipment = tEquipmentService.getById(equipmentId);
  702. if (equipment == null || equipment.getId() == null) {
  703. return R.fail(ResponseCodesEnum.A0001, "找不到设备");
  704. }
  705. // tEquipmentService.sentMessage(equipment.getClientId(),PushUtils.buildJson("couponStatus", couponStatus).toString());
  706. TEquipmentDesc tEquipmentDesc = equipmentDescService.getById(equipment.getId());
  707. if (tEquipmentDesc != null) {
  708. // tEquipmentDesc.setCouponStatus(couponStatus);
  709. // equipmentDescService.updateById(tEquipmentDesc);
  710. tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("couponStatus", couponStatus).toString());
  711. } else {
  712. return R.fail(ResponseCodesEnum.A0001, "找不到设备");
  713. }
  714. return R.ok(null, "修改成功");
  715. }
  716. //查找设备
  717. @ApiOperation(value = "查找设备")
  718. @PostMapping("/findEquipment")
  719. public ResponseEntity<?> findEquipment(@RequestBody TEquipment equipment) {
  720. TEquipment tEquipment = tEquipmentService.getById(equipment.getId());
  721. return ResponseEntity.status(HttpStatus.OK)
  722. .body(new ResultMessage().setCode(false).setData(tEquipment).setMessage(""));
  723. }
  724. //获取机器数量
  725. @ApiOperation(value = "获取机器数量")
  726. @PostMapping("/getMachineNum")
  727. public ResponseModel<?> getMachineNum(@RequestBody StatisticsParam param) {
  728. String machineTotalNum = "";
  729. String machineUseNum = "";
  730. String equipmentId = param.getEquipmentId();
  731. String paramAdminId = param.getAdminId();
  732. TAdmin admin = tAdminService.getById(paramAdminId);
  733. if (admin.getType() < 2) {
  734. param.setAdminId(null);
  735. }
  736. //判断是否有机器id传入
  737. if (equipmentId != null && equipmentId != "") {
  738. Long id = Long.valueOf(equipmentId);
  739. TEquipment equipment = tEquipmentService.getById(id);
  740. Long adminId = equipment.getAdminId();
  741. String dminId = String.valueOf(adminId);
  742. param.setAdminId(dminId);
  743. //todo 需要区分是否商家子账户
  744. machineTotalNum = tEquipmentService.findMachineTotalNum(param);
  745. machineUseNum = tEquipmentService.findMachineUseNum(param);
  746. } else {
  747. machineTotalNum = tEquipmentService.findMachineTotalNum(param);
  748. machineUseNum = tEquipmentService.findMachineUseNum(param);
  749. }
  750. Map<String, String> map = new HashMap<>();
  751. map.put("machineTotalNum", machineTotalNum);
  752. map.put("machineUseNum", machineUseNum);
  753. List<String> list = new ArrayList<>();
  754. list.add(machineTotalNum);
  755. list.add(machineUseNum);
  756. return R.ok(map, "获取成功");
  757. }
  758. @ApiOperation(value = "推送设备密码")
  759. @PostMapping("/updatePassword")
  760. public ResponseModel<?> updatePassword(@RequestBody PasswordParam passwordParam) {
  761. String equipmentId = passwordParam.getEquipmentId();
  762. String adminPwd = passwordParam.getAdminPwd();
  763. String guestPwd = passwordParam.getGuestPwd();
  764. TEquipment tEquipment = tEquipmentService.getById(equipmentId);
  765. if(tEquipment==null) {
  766. return R.fail(ResponseCodesEnum.A0001, "找不到设备");
  767. }
  768. if (StringUtils.isNotEmpty(guestPwd)) {
  769. tEquipmentService.sentMessage(tEquipment.getClientId(), PushUtils.buildJson("guestPwd", guestPwd).toString());
  770. tEquipment.setGuestPwd(guestPwd);
  771. }
  772. if (StringUtils.isNotEmpty(adminPwd)) {
  773. tEquipmentService.sentMessage(tEquipment.getClientId(), PushUtils.buildJson("adminPwd", adminPwd).toString());
  774. tEquipment.setAdminPwd(adminPwd);
  775. }
  776. tEquipmentService.updateById(tEquipment);
  777. return R.ok(null, "修改成功");
  778. }
  779. //远程开门
  780. // @ApiOperation(value = "远程开门")
  781. // @PostMapping("/openDoor")
  782. // public ResponseEntity<?> openDoor(@RequestBody StatisticsParam param) {
  783. // String equipmentId = param.getEquipmentId();
  784. // Long id = Long.valueOf(equipmentId);
  785. // TEquipment equipment = tEquipmentService.getById(id);
  786. // tEquipmentService.sentMessage(equipment.getClientId(),PushUtils.buildJson("openDoor", "0").toString());
  787. //// PushUtils.push(equipment.getGtClientId(), "", "", PushUtils.buildJson("openDoor", "0").toString());
  788. // return ResponseEntity
  789. // .status(HttpStatus.OK)
  790. // .body(new ResultMessage()
  791. // .setCode(true)
  792. // .setData("SUCCESS")
  793. // .setMessage("SUCCESS"));
  794. // }
  795. //修改机器状态 type(类型,0:外门,1:内门),
  796. // status(状态:0:关闭,1:开启)
  797. @ApiOperation(value = "远程开门")
  798. @GetMapping("/openDoor")
  799. public ResponseModel<?> openDoor(String equipmentId, String type, String status) {
  800. if (StringUtils.isEmpty(equipmentId) || StringUtils.isEmpty(type) || StringUtils.isEmpty(status)) {
  801. return R.fail(ResponseCodesEnum.A0001, "参数有空");
  802. }
  803. TEquipment equipment = tEquipmentService.getById(equipmentId);
  804. if (equipment == null || equipment.getId() == null) {
  805. return R.fail(ResponseCodesEnum.A0001, "找不到设备");
  806. }
  807. if (type.equals("0")) {
  808. tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("outdoor", status).toString());
  809. } else if (type.equals("1")) {
  810. tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("indoor", status).toString());
  811. }
  812. return R.ok(null, "修改成功");
  813. }
  814. //查看是否远程来关机成功
  815. @ApiOperation(value = "查看是否远程来关机成功")
  816. @PostMapping("/checkStatus")
  817. public ResponseEntity<?> checkStatus(@RequestBody StatisticsParam param) {
  818. String equipmentId = param.getEquipmentId();
  819. Long id = Long.valueOf(equipmentId);
  820. TEquipment equipment = tEquipmentService.getById(id);
  821. String network = equipment.getNetwork();
  822. Long nowTime2 = getNetworkTime();
  823. // Long nowTime2 = new Date().getTime();
  824. if (network != null) {
  825. Long old = Long.valueOf(network);
  826. if (nowTime2 == null) {
  827. nowTime2 = getNetworkTime();
  828. }
  829. if (nowTime2 == null) {
  830. nowTime2 = System.currentTimeMillis();
  831. }
  832. if (nowTime2 - old < 15000) {
  833. return ResponseEntity
  834. .status(HttpStatus.OK)
  835. .body(new ResultMessage()
  836. .setCode(true)
  837. .setData("SUCCESS")
  838. .setMessage("网络良好"));
  839. } else {
  840. // if(equipment.getEqeStatus()==0){
  841. // equipment.setEqeStatus(1);
  842. // tEquipmentService.updateById(equipment);
  843. // }else {
  844. // equipment.setEqeStatus(0);
  845. // tEquipmentService.updateById(equipment);
  846. // }
  847. return ResponseEntity
  848. .status(HttpStatus.OK)
  849. .body(new ResultMessage()
  850. .setCode(true)
  851. .setData("fail")
  852. .setMessage("网络不好,操作失败"));
  853. }
  854. } else {
  855. return ResponseEntity
  856. .status(HttpStatus.OK)
  857. .body(new ResultMessage()
  858. .setCode(true)
  859. .setData("SUCCESS")
  860. .setMessage("该机器尚未更新系统"));
  861. }
  862. }
  863. public static Long getNetworkTime() {
  864. Long time = null;
  865. URL url = null;//取得资源对象http://time.tianqi.com/
  866. try {
  867. url = new URL("http://time.tianqi.com");
  868. URLConnection uc = url.openConnection();//生成连接对象
  869. uc.connect(); //发出连接
  870. long ld = uc.getDate(); //取得网站日期时间
  871. Date date = new Date(ld); //转换为标准时间对象
  872. time = date.getTime();
  873. } catch (Exception e) {
  874. e.printStackTrace();
  875. }
  876. return time;
  877. }
  878. //机器睡眠
  879. @ApiOperation(value = "机器睡眠")
  880. @PostMapping("/sleep")
  881. public ResponseEntity<?> sleep(@RequestBody StatisticsParam param) {
  882. String equipmentId = param.getEquipmentId();
  883. Long id = Long.valueOf(equipmentId);
  884. TEquipment equipment = tEquipmentService.getById(id);
  885. if (equipment == null) {
  886. // return ERROR_MESSAGE;
  887. }
  888. String eqeStatus = "0";
  889. String code = param.getEqeStatus();
  890. if (code.equals("1")) {
  891. eqeStatus = "1";
  892. equipment.setIsSleep(true);
  893. } else {
  894. equipment.setIsSleep(false);
  895. }
  896. tEquipmentService.updateById(equipment);
  897. tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("is_sleep", eqeStatus).toString());
  898. // PushUtils.push(equipment.getGtClientId(), "", "", PushUtils.buildJson("is_sleep", eqeStatus).toString());
  899. return ResponseEntity
  900. .status(HttpStatus.OK)
  901. .body(new ResultMessage()
  902. .setCode(true)
  903. .setData("SUCCESS")
  904. .setMessage("SUCCESS"));
  905. }
  906. // 获取机器开关机状态
  907. @ApiOperation(value = "获取机器开关机状态")
  908. @PostMapping("/onoffStatus")
  909. public ResponseEntity<?> onoffStatus(@RequestBody StatisticsParam param) {
  910. String equipmentId = param.getEquipmentId();
  911. Long id = Long.valueOf(equipmentId);
  912. TEquipment equipments = tEquipmentService.getById(id);
  913. tEquipmentService.sentMessage(equipments.getClientId(), PushUtils.buildJson("onoffstatus", "0").toString());
  914. // PushUtils.push(equipments.getGtClientId(), "", "", PushUtils.buildJson("onoffstatus", "0").toString());
  915. return ResponseEntity
  916. .status(HttpStatus.OK)
  917. .body(new ResultMessage()
  918. .setCode(true)
  919. .setData("SUCCESS")
  920. .setMessage("SUCCESS"));
  921. }
  922. // 获取所有机器开关机状态
  923. @ApiOperation(value = "获取所有机器开关机状态")
  924. @PostMapping("/equipmentStatus")
  925. public ResponseEntity<?> equipmentStatus(@RequestBody StatisticsParam param) {
  926. String adminId = param.getAdminId();
  927. //碧桂园的机器太多,不查
  928. if (adminId.equals("236") || adminId.equals("31")) {
  929. return ResponseEntity
  930. .status(HttpStatus.OK)
  931. .body(new ResultMessage()
  932. .setCode(true)
  933. .setData("SUCCESS")
  934. .setMessage("SUCCESS"));
  935. }
  936. // TEquipmentExample example = new TEquipmentExample();
  937. // TEquipmentExample.Criteria criteria = example.createCriteria();
  938. // criteria.andAdminIdEqualTo(Long.valueOf(adminId));
  939. // List<TEquipment> equipmentList = tEquipmentService.selectByOption(example);
  940. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  941. query.eq(TEquipment::getAdminId, Long.valueOf(adminId));
  942. List<TEquipment> equipmentList = tEquipmentService.list(query);
  943. if (equipmentList.size() > 0) {
  944. for (TEquipment equipment : equipmentList) {
  945. tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("onoffstatus", "0").toString());
  946. // PushUtils.push(equipment.getGtClientId(), "", "", PushUtils.buildJson("onoffstatus", "0").toString());
  947. }
  948. }
  949. return ResponseEntity
  950. .status(HttpStatus.OK)
  951. .body(new ResultMessage()
  952. .setCode(true)
  953. .setData("SUCCESS")
  954. .setMessage("SUCCESS"));
  955. }
  956. // 检验所有机器是否开机
  957. @ApiOperation(value = "检验所有机器是否开机")
  958. @PostMapping("/checkEquipmentStatus")
  959. public ResponseEntity<?> checkEquipmentStatus(@RequestBody StatisticsParam param) {
  960. String adminId = param.getAdminId();
  961. // TEquipmentExample example = new TEquipmentExample();
  962. // TEquipmentExample.Criteria criteria = example.createCriteria();
  963. // criteria.andAdminIdEqualTo(Long.valueOf(adminId));
  964. // List<TEquipment> equipmentList = tEquipmentService.selectByOption(example);
  965. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  966. query.eq(TEquipment::getAdminId, Long.valueOf(adminId));
  967. List<TEquipment> equipmentList = tEquipmentService.list(query);
  968. long nowTime = new Date().getTime();
  969. if (equipmentList.size() > 0) {
  970. for (TEquipment equipment : equipmentList) {
  971. long modifyTime = equipment.getModifyDate().getTime();
  972. if (nowTime > modifyTime && (nowTime - modifyTime) > 310000) {
  973. // if((nowTime-modifyTime)>310000){
  974. // equipment.setEqeStatus(0);
  975. // }
  976. equipment.setCabinetTm("");
  977. equipment.setCabinetHd("");
  978. equipment.setFurnaceTm("");
  979. equipment.setFurnaceSp("");
  980. tEquipmentService.updateById(equipment);
  981. }
  982. }
  983. }
  984. return ResponseEntity
  985. .status(HttpStatus.OK)
  986. .body(new ResultMessage()
  987. .setCode(true)
  988. .setData("SUCCESS")
  989. .setMessage("SUCCESS"));
  990. }
  991. //机器开关机
  992. @ApiOperation(value = "机器开关机")
  993. @PostMapping("/onOff")
  994. public ResponseEntity<?> onOff(@RequestBody StatisticsParam param) {
  995. String equipmentId = param.getEquipmentId();
  996. Long id = Long.valueOf(equipmentId);
  997. // TEquipment equipments = tEquipmentService.selectEntityById(id);
  998. // PushUtils.push(equipments.getGtClientId(), "", "", PushUtils.buildJson("onoffstatus", "0").toString());
  999. TEquipment equipment = tEquipmentService.getById(id);
  1000. if (equipment == null) {
  1001. // return ERROR_MESSAGE;
  1002. }
  1003. String eqeStatus = "1";
  1004. String code = param.getEqeStatus();
  1005. //开机为1,关机为0
  1006. Integer intcode = Integer.valueOf(code);
  1007. Integer eqeStatus1 = equipment.getEqeStatus();
  1008. // if(intcode==eqeStatus1){
  1009. // return ResponseEntity
  1010. // .status(HttpStatus.OK)
  1011. // .body(new ResultMessage()
  1012. // .setCode(false)
  1013. // .setData("ERROT")
  1014. // .setMessage("操作异常"));
  1015. // }
  1016. if (code.equals("0")) {
  1017. eqeStatus = "0";
  1018. equipment.setEqeStatus(0);
  1019. } else {
  1020. equipment.setEqeStatus(1);
  1021. }
  1022. Long time = getNetworkTime();
  1023. // long time = new Date().getTime();
  1024. // PushUtils.push(equipment.getGtClientId(), String.valueOf(time), "", PushUtils.buildJson("eqeStatus", eqeStatus).toString());
  1025. if (time == null) {
  1026. time = getNetworkTime();
  1027. }
  1028. if (time == null) {
  1029. time = new Date().getTime();
  1030. }
  1031. if (time != null) {
  1032. // System.out.println("time=="+time);
  1033. tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("eqeStatus", eqeStatus, String.valueOf(time), "http://time.tianqi.com").toString());
  1034. // PushUtils.push(equipment.getGtClientId(), "", "", PushUtils.buildJson("eqeStatus", eqeStatus,String.valueOf(time),"http://time.tianqi.com").toString());
  1035. // tEquipmentService.updateById(equipment);
  1036. } else {
  1037. return ResponseEntity
  1038. .status(HttpStatus.OK)
  1039. .body(new ResultMessage()
  1040. .setCode(false)
  1041. .setData("error")
  1042. .setMessage("error"));
  1043. }
  1044. return ResponseEntity
  1045. .status(HttpStatus.OK)
  1046. .body(new ResultMessage()
  1047. .setCode(true)
  1048. .setData("SUCCESS")
  1049. .setMessage("SUCCESS"));
  1050. }
  1051. @ApiOperation(value = "获取各省份机器销售情况")
  1052. @PostMapping("/getEquipmentListByProvince")
  1053. public ResponseEntity<?> getEquipmentListByProvince(@RequestBody TAdmin param) {
  1054. List<TAdminDTO> resultList = new ArrayList<>();
  1055. if ("admin".equals(param.getUsername())) { // 管理员查所有商家
  1056. //获取有多少个省份
  1057. List<TArea> list1 = tAreaService.getProvinceList();
  1058. Map<Long, String> map1 = new HashMap<>();
  1059. for (TArea area : list1) {
  1060. String fullname = area.getFullName();
  1061. String provinceName = fullname.substring(0, 3);
  1062. String treePath = area.getTreePath();
  1063. String[] str = treePath.split(",");
  1064. Long s = null;
  1065. if (str.length > 1) {
  1066. s = Long.valueOf(str[1]);
  1067. }
  1068. if (str.length <= 1) {
  1069. s = area.getId();
  1070. }
  1071. map1.put(s, provinceName);
  1072. }
  1073. List<Children3> children3List = new ArrayList<>();
  1074. for (Long key : map1.keySet()) {
  1075. Children3 children3 = new Children3();
  1076. children3.setId(key);
  1077. // children3.setName(map1.get(key));
  1078. int pday = 0;
  1079. int pweek = 0;
  1080. int pmonth = 0;
  1081. int pyear = 0;
  1082. Set<Long> province = new HashSet<>();
  1083. //本省有多少个市
  1084. Map<Long, String> cityMap = new HashMap<>();
  1085. for (TArea carea : list1) {
  1086. String fullName = carea.getFullName();
  1087. if (fullName.substring(0, 3).equals(map1.get(key))) {
  1088. province.add(carea.getId());
  1089. if (key.equals(carea.getParent())) {
  1090. cityMap.put(carea.getId(), carea.getName());
  1091. } else {
  1092. TArea cityArea = tAreaService.getById(carea.getParent());
  1093. cityMap.put(cityArea.getId(), cityArea.getName());
  1094. }
  1095. }
  1096. }
  1097. List<Children2> children2List = new ArrayList<>();
  1098. //有多少个市,市有多少个商家
  1099. for (Long citykey : cityMap.keySet()) {
  1100. for (TArea area : list1) {
  1101. String fullName = area.getFullName();
  1102. if (fullName.substring(0, 3).equals(map1.get(key))) {
  1103. //市级
  1104. Children2 children2 = new Children2();
  1105. //市级下所有商家集合
  1106. List<Child> Children = new ArrayList<>();
  1107. //属于这个市的所以设备的areaid
  1108. Set<Long> city = new HashSet<>();
  1109. //添加市级
  1110. if ((area.getId()).equals(citykey) || (area.getParent()).equals(citykey)) {
  1111. children2.setId(citykey);
  1112. for (TArea cityArea2 : list1) {
  1113. if ((cityArea2.getId()).equals(citykey) || (cityArea2.getParent()).equals(citykey)) {
  1114. city.add(cityArea2.getId());
  1115. }
  1116. }
  1117. children2.setCity(city);
  1118. int i = 0;
  1119. for (Children2 children21 : children2List) {
  1120. if (children21.getId().equals(citykey)) {
  1121. i++;
  1122. }
  1123. }
  1124. if (i == 0) {
  1125. for (Long id : city) {
  1126. // List<Childlast> childlasts = new ArrayList<>();
  1127. Set<Long> adminIds = new HashSet<>();
  1128. // List<TEquipment> equipments = tEquipmentService.findByArea(id);
  1129. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1130. query.eq(TEquipment::getAreaId, id);
  1131. List<TEquipment> equipments = tEquipmentService.list(query);
  1132. for (TEquipment tEquipment : equipments) {
  1133. adminIds.add(tEquipment.getAdminId());
  1134. }
  1135. for (Long adminId3 : adminIds) {
  1136. TAdmin tAdmin = tAdminService.getById(adminId3);
  1137. int k = 0;
  1138. for (Child child : Children) {
  1139. if (child.getId().equals(tAdmin.getId())) {
  1140. k++;
  1141. }
  1142. }
  1143. if (k == 0) {
  1144. //new
  1145. Child child = new Child();
  1146. child.setId(adminId3);
  1147. child.setName(tAdmin.getName());
  1148. List<Childlast> children = new ArrayList<>();
  1149. Childlast childlast1 = new Childlast();
  1150. childlast1.setId(adminId3);
  1151. childlast1.setName("总销售情况");
  1152. children.add(0, childlast1);
  1153. // List<TEquipment> tEquipmentList = tEquipmentService.findByAdmin(adminId3);
  1154. LambdaQueryWrapper<TEquipment> query1 = Wrappers.lambdaQuery();
  1155. query1.eq(TEquipment::getAdminId, adminId3);
  1156. List<TEquipment> tEquipmentList = tEquipmentService.list(query1);
  1157. for (TEquipment tEquipment : tEquipmentList) {
  1158. Long areaId = tEquipment.getAreaId();
  1159. for (Long idd : city) {
  1160. if (idd.equals(areaId)) {
  1161. Childlast childlast2 = new Childlast();
  1162. childlast2.setId(tEquipment.getId());
  1163. childlast2.setName(tEquipment.getName());
  1164. children.add(childlast2);
  1165. }
  1166. }
  1167. }
  1168. child.setChildren(children);
  1169. Children.add(child);
  1170. }
  1171. }
  1172. }
  1173. children2.setChildren(Children);
  1174. //这个市的销售数据 日 周 月 年
  1175. List<Long> cityIds = new ArrayList();
  1176. for (Long cityid : city) {
  1177. cityIds.add(cityid);
  1178. }
  1179. StringBuffer namelast = new StringBuffer();
  1180. namelast.append(cityMap.get(citykey)).append(" ");
  1181. String day = "";
  1182. String week = "";
  1183. String month = "";
  1184. String year = "";
  1185. //数据为空时要处理
  1186. for (int s = 1; s < 5; s++) {
  1187. String startDate = null;
  1188. String endDate = null;
  1189. if (s == 1) {
  1190. //日
  1191. Date date = new Date();
  1192. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
  1193. String format = dateFormat.format(date);
  1194. startDate = format;
  1195. endDate = format;
  1196. Map<String, Object> params = new HashMap<String, Object>();
  1197. params.put("areaIds", cityIds);
  1198. params.put("startDate", startDate);
  1199. params.put("endDate", endDate);
  1200. Double day1 = tOrderService.getAreaPrice(params);
  1201. if (day1 != null) {
  1202. double ceil = Math.ceil(day1);
  1203. int ceil1 = (int) ceil;
  1204. pday += ceil1;
  1205. day = String.valueOf(ceil1);
  1206. namelast.append("-----日:").append(day);
  1207. } else {
  1208. namelast.append("-----日:0 ");
  1209. }
  1210. }
  1211. if (s == 2) {
  1212. //周
  1213. Map<String, String> weekDate = getWeekDate();
  1214. startDate = weekDate.get("mondayDate");
  1215. endDate = weekDate.get("sundayDate");
  1216. Map<String, Object> params = new HashMap<String, Object>();
  1217. params.put("areaIds", cityIds);
  1218. params.put("startDate", startDate);
  1219. params.put("endDate", endDate);
  1220. Double day1 = tOrderService.getAreaPrice(params);
  1221. if (day1 != null) {
  1222. double ceil = Math.ceil(day1);
  1223. int ceil1 = (int) ceil;
  1224. pweek += ceil1;
  1225. week = String.valueOf(ceil1);
  1226. namelast.append(" 周:").append(week);
  1227. } else {
  1228. namelast.append(" 周:0 ");
  1229. }
  1230. }
  1231. if (s == 3) {
  1232. //月
  1233. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
  1234. //获取当前月第一天:
  1235. Calendar c = Calendar.getInstance();
  1236. c.add(Calendar.MONTH, 0);
  1237. c.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天
  1238. String first = dateFormat.format(c.getTime());
  1239. //获取当前月最后一天
  1240. Calendar ca = Calendar.getInstance();
  1241. ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
  1242. String last = dateFormat.format(ca.getTime());
  1243. startDate = first;
  1244. endDate = last;
  1245. Map<String, Object> params = new HashMap<String, Object>();
  1246. params.put("areaIds", cityIds);
  1247. params.put("startDate", startDate);
  1248. params.put("endDate", endDate);
  1249. Double day1 = tOrderService.getAreaPrice(params);
  1250. if (day1 != null) {
  1251. double ceil = Math.ceil(day1);
  1252. int ceil1 = (int) ceil;
  1253. pmonth += ceil1;
  1254. month = String.valueOf(ceil1);
  1255. namelast.append(" 月:").append(month);
  1256. } else {
  1257. namelast.append(" 月:0 ");
  1258. }
  1259. }
  1260. if (s == 4) {
  1261. //年
  1262. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
  1263. Calendar cale = Calendar.getInstance();
  1264. int year1 = cale.get(Calendar.YEAR);
  1265. String y = String.valueOf(year1);
  1266. StringBuffer st = new StringBuffer();
  1267. st.append(y).append("/01/01");
  1268. startDate = st.toString();
  1269. StringBuffer e = new StringBuffer();
  1270. e.append(y).append("/12/30");
  1271. endDate = e.toString();
  1272. Map<String, Object> params = new HashMap<String, Object>();
  1273. params.put("areaIds", cityIds);
  1274. params.put("startDate", startDate);
  1275. params.put("endDate", endDate);
  1276. Double day1 = tOrderService.getAreaPrice(params);
  1277. if (day1 != null) {
  1278. double ceil = Math.ceil(day1);
  1279. int ceil1 = (int) ceil;
  1280. pyear += ceil1;
  1281. year = String.valueOf(ceil1);
  1282. namelast.append(" 年:").append(year);
  1283. } else {
  1284. namelast.append(" 年:0 ");
  1285. }
  1286. }
  1287. }
  1288. children2.setName(namelast.toString());
  1289. children2List.add(children2);
  1290. } else {
  1291. i = 0;
  1292. }
  1293. }
  1294. }
  1295. }
  1296. }
  1297. children3.setChildren(children2List);
  1298. children3.setProvince(province);
  1299. StringBuffer pnameLast = new StringBuffer();
  1300. pnameLast.append(map1.get(key)).append("-----日:").append(pday).append(" 周:").append(pweek).append(" 月:").append(pmonth).append(" 年:").append(pyear);
  1301. children3.setName(pnameLast.toString());
  1302. children3List.add(children3);
  1303. }
  1304. return ResponseEntity.status(HttpStatus.OK)
  1305. .body(new ResultMessage().setCode(true).setData(children3List).setMessage("SUCCESS"));
  1306. } else { // 只查当前商家的设备列表
  1307. return ResponseEntity.status(HttpStatus.OK)
  1308. .body(new ResultMessage().setCode(true).setData(resultList).setMessage("SUCCESS"));
  1309. }
  1310. // return ResponseEntity.status(HttpStatus.OK)
  1311. // .body(new ResultMessage().setCode(true).setData(resultList).setMessage("SUCCESS"));
  1312. }
  1313. public static Map<String, String> getWeekDate() {
  1314. Map<String, String> map = new HashMap();
  1315. SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
  1316. Calendar cal = Calendar.getInstance();
  1317. cal.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
  1318. int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
  1319. if (dayWeek == 1) {
  1320. dayWeek = 8;
  1321. }
  1322. // System.out.println("要计算日期为:" + sdf.format(cal.getTime())); // 输出要计算日期
  1323. cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - dayWeek);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
  1324. Date mondayDate = cal.getTime();
  1325. String weekBegin = sdf.format(mondayDate);
  1326. // System.out.println("所在周星期一的日期:" + weekBegin);
  1327. cal.add(Calendar.DATE, 4 + cal.getFirstDayOfWeek());
  1328. Date sundayDate = cal.getTime();
  1329. String weekEnd = sdf.format(sundayDate);
  1330. // System.out.println("所在周星期日的日期:" + weekEnd);
  1331. map.put("mondayDate", weekBegin);
  1332. map.put("sundayDate", weekEnd);
  1333. return map;
  1334. }
  1335. /**
  1336. * 推送设备共同以及/设备参数
  1337. *
  1338. * @param
  1339. * @return
  1340. */
  1341. @PostMapping("/updateParameters")
  1342. public ResponseEntity<?> updateCommonParam(@RequestBody CommonParamVo commonParamVo) {
  1343. String equipmentId = commonParamVo.getId();
  1344. TEquipment equipment = tEquipmentService.getById(Long.valueOf(equipmentId));
  1345. tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("Param", commonParamVo.getName() + ":" + commonParamVo.getVal()).toString());
  1346. // PushUtils.push(equipment.getGtClientId(), "", "", PushUtils.buildJson("Param", commonParamVo.getName() + ":" + commonParamVo.getVal()).toString());
  1347. return ResponseEntity
  1348. .status(HttpStatus.OK)
  1349. .body(new ResultMessage()
  1350. .setCode(true)
  1351. .setData("SUCCESS")
  1352. .setMessage("SUCCESS"));
  1353. }
  1354. /**
  1355. * 推送设备共同以及/设备参数 湿度
  1356. *
  1357. * @param
  1358. * @return
  1359. */
  1360. @PostMapping("/humidityParameters")
  1361. public ResponseEntity<?> humidityParameters(@RequestBody CommonParamVo commonParamVo) {
  1362. String equipmentId = commonParamVo.getId();
  1363. TEquipment equipment = tEquipmentService.getById(equipmentId);
  1364. tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("humidityParameters", commonParamVo.getName() + ":" + commonParamVo.getVal()).toString());
  1365. // PushUtils.push(equipment.getGtClientId(), "", "", PushUtils.buildJson("Param", commonParamVo.getName() + ":" + commonParamVo.getVal()).toString());
  1366. return ResponseEntity
  1367. .status(HttpStatus.OK)
  1368. .body(new ResultMessage()
  1369. .setCode(true)
  1370. .setData("SUCCESS")
  1371. .setMessage("SUCCESS"));
  1372. }
  1373. /**
  1374. * 下载日志
  1375. * @param equipmentId
  1376. * @param day
  1377. * @param response
  1378. */
  1379. @ApiOperation(value = "下载日志")
  1380. @GetMapping("/downloadLog")
  1381. public ResponseModel<?> downloadLog(String equipmentId, String day, HttpServletResponse response) throws IOException, InterruptedException {
  1382. // 1、发送MQ到安卓端上传日志
  1383. if(day.length()!=8){
  1384. return R.fail(A0001,"日期格式有误");
  1385. }
  1386. if(StringUtils.isEmpty(equipmentId)) {
  1387. return R.fail(A0001);
  1388. }
  1389. TEquipment tEquipment = tEquipmentService.getById(equipmentId);
  1390. if (tEquipment == null) {
  1391. return R.fail(A0001,"该设备不存在");
  1392. }
  1393. String clientId = tEquipment.getClientId();
  1394. String kind = day+"-"+clientId;
  1395. String filepath = "/home/hboxs/log/"+kind+".txt";
  1396. // 1.1 如果文件已存在,直接下载
  1397. if(new File(filepath).exists()) {
  1398. downloadFile(filepath, response);
  1399. return R.ok();
  1400. }
  1401. String channel = tEquipment.getChannel();
  1402. String equimentType = tEquipment.getEquimentType();
  1403. if(StringUtils.isEmpty(channel)||channel.equals("1")||StringUtils.isEmpty(equimentType)){
  1404. //用个推
  1405. PushUtils.push(tEquipment.getGtClientId(), "", "", PushUtils.buildJson("log", kind).toString());
  1406. }
  1407. if(StringUtils.isNotEmpty(channel)&&channel.equals("2")&&StringUtils.isNotEmpty(equimentType)){
  1408. //用Mq
  1409. tEquipmentService.sentMessage(tEquipment.getClientId(), PushUtils.buildJson("log", kind).toString());
  1410. }
  1411. // 2、设置定时器查看日志是否已上传
  1412. ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
  1413. long startTime = System.currentTimeMillis();
  1414. ScheduledFuture<?> future = exec.schedule(() -> {
  1415. // 超时处理逻辑
  1416. if (new File(filepath).exists()) {
  1417. return null;
  1418. } else {
  1419. throw new RuntimeException("找不到日志");
  1420. }
  1421. }, TIMEOUT, TimeUnit.MILLISECONDS);
  1422. while (true) {
  1423. if (new File(filepath).exists()) {
  1424. // 文件存在,取消定时器
  1425. future.cancel(false);
  1426. break;
  1427. }else {
  1428. Thread.sleep(1000);
  1429. if (System.currentTimeMillis() - startTime >= 20000L) {
  1430. // 超过最大等待时间,抛出异常
  1431. future.cancel(false);
  1432. throw new RuntimeException("等待文件生成超时");
  1433. }
  1434. }
  1435. }
  1436. // 3、从服务器下载文件
  1437. downloadFile(filepath, response);
  1438. return R.ok();
  1439. }
  1440. // 从服务器下载文件
  1441. public void downloadFile(String filepath, HttpServletResponse response) throws IOException {
  1442. File logFile = new File(filepath);
  1443. response.setHeader("Content-Disposition", "attachment; filename=\"" + logFile.getName() + "\"");
  1444. FileInputStream fis = new FileInputStream(logFile);
  1445. OutputStream os = response.getOutputStream();
  1446. byte[] buffer = new byte[4096];
  1447. int length;
  1448. while ((length = fis.read(buffer)) > 0) {
  1449. os.write(buffer, 0, length);
  1450. os.flush();
  1451. }
  1452. os.close();
  1453. fis.close();
  1454. response.flushBuffer();
  1455. }
  1456. }