TEquipmentController.java 69 KB

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