TEquipmentController.java 66 KB

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