TEquipmentController.java 76 KB

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