EnvDeviceServiceImpl.java 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740
  1. package com.huimv.admin.service.impl;
  2. import cn.hutool.core.codec.Base64;
  3. import cn.hutool.core.collection.ListUtil;
  4. import cn.hutool.core.util.ObjectUtil;
  5. import cn.hutool.json.JSONUtil;
  6. import com.alibaba.fastjson.JSON;
  7. import com.alibaba.fastjson.JSONArray;
  8. import com.alibaba.fastjson.JSONObject;
  9. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  10. import com.baomidou.mybatisplus.core.metadata.IPage;
  11. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  12. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  13. import com.huimv.admin.common.utils.DataUill;
  14. import com.huimv.admin.common.utils.Result;
  15. import com.huimv.admin.common.utils.ResultCode;
  16. import com.huimv.admin.entity.*;
  17. import com.huimv.admin.entity.vo.EnvDeviceVo;
  18. import com.huimv.admin.entity.vo.PublicDeployVo;
  19. import com.huimv.admin.mapper.*;
  20. import com.huimv.admin.service.IEnvDeviceService;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.http.HttpEntity;
  23. import org.springframework.http.HttpHeaders;
  24. import org.springframework.http.HttpMethod;
  25. import org.springframework.http.ResponseEntity;
  26. import org.springframework.stereotype.Service;
  27. import org.springframework.transaction.annotation.Transactional;
  28. import org.springframework.web.client.RestTemplate;
  29. import javax.servlet.http.HttpServletRequest;
  30. import java.text.NumberFormat;
  31. import java.util.*;
  32. import java.util.concurrent.CopyOnWriteArrayList;
  33. import java.util.stream.Collectors;
  34. /**
  35. * <p>
  36. * 服务实现类
  37. * </p>
  38. *
  39. * @author author
  40. * @since 2023-02-13
  41. */
  42. @Service
  43. public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice> implements IEnvDeviceService {
  44. @Autowired
  45. private EnvDeviceMapper envDeviceMapper;
  46. @Autowired
  47. private BasePigpenMapper basePigpenMapper;
  48. @Autowired
  49. private EnvDataMapper dataMapper;
  50. @Autowired
  51. private EnvDeviceRecentlyDataMapper envDeviceRecentlyDataMapper;
  52. @Autowired
  53. private EnvCo2Mapper co2Mapper;//CO2
  54. @Autowired
  55. private EnvAmmoniaMapper ammoniaMapper;//氨气
  56. @Autowired
  57. private EnvTempMapper tempMapper;//温度
  58. @Autowired
  59. private EnvHumiMapper humiMapper;//湿度
  60. @Autowired
  61. private EnvStiveMapper stiveMapper;//粉尘
  62. @Autowired
  63. private EnvPressureMapper pressureMapper;//压力
  64. @Autowired
  65. private EnvDeviceFanMapper fanMapper;//风机
  66. @Autowired
  67. private EnvDeviceFenestruleMapper fenestruleMapper;//小窗
  68. @Autowired
  69. private EnvDeviceOtherMapper otherMapper;//
  70. // @Autowired
  71. // private RestTemplate restTemplate;
  72. @Override
  73. public Result count(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  74. String farmId = paramsMap.get("farmId");
  75. QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
  76. queryWrapper.eq("farm_id", farmId);
  77. Integer count = envDeviceMapper.selectCount(queryWrapper);
  78. JSONObject jsonObject = new JSONObject();
  79. if (count == 0) {
  80. jsonObject.put("DeviceCount", 0);
  81. jsonObject.put("OnDeviceCount", 0);
  82. jsonObject.put("OffDeviceCount", 0);
  83. jsonObject.put("OnDeviceRate", 0);
  84. } else {
  85. QueryWrapper<EnvDevice> queryWrapper1 = new QueryWrapper<>();
  86. queryWrapper1.eq("device_status", 1);
  87. Integer count1 = envDeviceMapper.selectCount(queryWrapper1);
  88. Integer OffDeviceCount = count - count1;
  89. //创建一个数值格式化对象
  90. NumberFormat numberFormat = NumberFormat.getInstance();
  91. //设置精确到小数点后两位
  92. numberFormat.setMaximumFractionDigits(2);
  93. String onDeviceRate = numberFormat.format((float) count1 / (float) count * 100) + "%";
  94. jsonObject.put("DeviceCount", count);
  95. jsonObject.put("OnDeviceCount", count1);
  96. jsonObject.put("OffDeviceCount", OffDeviceCount);
  97. jsonObject.put("OnDeviceRate", onDeviceRate);
  98. }
  99. return new Result(ResultCode.SUCCESS, jsonObject);
  100. }
  101. @Override
  102. public Result list(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  103. String farmId = paramsMap.get("farmId");
  104. String pageSize = paramsMap.get("pageSize");
  105. String pageNo = paramsMap.get("pageNo");
  106. if (pageSize == null || pageSize == "") {
  107. pageSize = "10";
  108. }
  109. if (pageNo == null || pageNo == "") {
  110. pageNo = "1";
  111. }
  112. QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
  113. queryWrapper.eq("farm_id", farmId);
  114. Page<EnvDevice> page = new Page(Integer.parseInt(pageNo), Integer.parseInt(pageSize));
  115. return new Result(ResultCode.SUCCESS, envDeviceMapper.selectPage(page, queryWrapper));
  116. }
  117. @Override
  118. public Result add(HttpServletRequest httpServletRequest, EnvDevice envDevice1) {
  119. EnvDevice envDevice = new EnvDevice();
  120. envDevice.setFarmId(envDevice1.getFarmId());
  121. envDevice.setDeviceCode(envDevice1.getDeviceCode());
  122. envDevice.setDeviceName(envDevice1.getDeviceName());
  123. envDevice.setBuildLocation(envDevice1.getBuildLocation());
  124. envDevice.setUnitId(envDevice1.getUnitId());
  125. envDevice.setUnitName(envDevice1.getUnitName());
  126. envDevice.setDeviceBrand(envDevice1.getDeviceBrand());
  127. envDevice.setRemark(envDevice1.getRemark());
  128. envDevice.setDeviceStatus(0);
  129. envDevice.setDayAge(envDevice1.getDayAge());
  130. envDevice.setFengJiNum(envDevice1.getFengJiNum());
  131. envDevice.setXiaoChuangNum(envDevice1.getXiaoChuangNum());
  132. QueryWrapper<BasePigpen> basePigpenQueryWrapper = new QueryWrapper<>();
  133. basePigpenQueryWrapper.eq("farm_id", envDevice1.getFarmId()).eq("id", envDevice1.getUnitId());
  134. BasePigpen basePigpen = basePigpenMapper.selectOne(basePigpenQueryWrapper);
  135. envDevice.setStageType(basePigpen.getStageCode());
  136. QueryWrapper<EnvDevice> deviceQueryWrapper = new QueryWrapper<>();
  137. deviceQueryWrapper.eq("farm_id", envDevice1.getFarmId()).eq("unit_id", envDevice1.getUnitId());
  138. EnvDevice device1 = envDeviceMapper.selectOne(deviceQueryWrapper);//一个栋舍只能有一个设备
  139. if (ObjectUtil.isEmpty(device1)) {
  140. QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
  141. queryWrapper.eq("device_name", envDevice1.getDeviceName()).eq("farm_id", envDevice1.getFarmId())
  142. .or().eq("device_code", envDevice1.getDeviceCode());
  143. EnvDevice device = envDeviceMapper.selectOne(queryWrapper);//名字和编码不能重复
  144. if (ObjectUtil.isEmpty(device)) {
  145. QueryWrapper<EnvDevice> queryWrapper1 = new QueryWrapper<>();
  146. queryWrapper1.eq("farm_id", envDevice1.getFarmId());
  147. Integer integer = envDeviceMapper.selectCount(queryWrapper1);
  148. if (integer == 0) {
  149. envDevice.setDeviceSortCode("100" + "01");
  150. addAll(envDevice);
  151. } else {
  152. queryWrapper1.orderByDesc("id").last(" limit 1");
  153. EnvDevice envDevice2 = envDeviceMapper.selectOne(queryWrapper1);
  154. envDevice.setDeviceSortCode(String.valueOf(Integer.parseInt(envDevice2.getDeviceSortCode())+1));
  155. addAll(envDevice);
  156. }
  157. envDeviceMapper.insert(envDevice);
  158. return new Result(ResultCode.SUCCESS, "添加成功");
  159. } else {
  160. return new Result(ResultCode.FAIL, "添加失败,设备名称或设备编码已存在");
  161. }
  162. } else {
  163. return new Result(ResultCode.FAIL, "添加失败,该栋舍已绑定设备");
  164. }
  165. }
  166. public void addAll(EnvDevice envDevice1) {
  167. for (int i = 1; i < 24; i++) {
  168. EnvDeviceRecentlyData data = new EnvDeviceRecentlyData();
  169. data.setDeviceCode(envDevice1.getDeviceSortCode());
  170. if (i < 10) {
  171. data.setChipCode(envDevice1.getDeviceSortCode() + "140" + i);
  172. } else {
  173. data.setChipCode(envDevice1.getDeviceSortCode() + "14" + i);
  174. }
  175. data.setChipStatus(0);
  176. data.setChipType(i);
  177. if (i < 9) {
  178. data.setChipName("温度" + i);
  179. }
  180. if (i == 9) {
  181. data.setChipName("室外温度");
  182. }
  183. if (i == 10) {
  184. data.setChipName("目标温度");
  185. }
  186. if (i == 11) {
  187. data.setChipName("平均温度");
  188. }
  189. if (i == 12) {
  190. data.setChipName("湿度1");
  191. }
  192. if (i == 13) {
  193. data.setChipName("湿度2");
  194. }
  195. if (i == 14) {
  196. data.setChipName("湿度3");
  197. }
  198. if (i == 15) {
  199. data.setChipName("CO2");
  200. }
  201. if (i == 16) {
  202. data.setChipName("压力");
  203. }
  204. if (i == 17) {
  205. data.setChipName("粉尘");
  206. }
  207. if (i == 18) {
  208. data.setChipName("氨气");
  209. }
  210. if (i == 19) {
  211. data.setChipName("通风级别");
  212. }
  213. if (i == 20) {
  214. data.setChipName("加热");
  215. }
  216. if (i == 21) {
  217. data.setChipName("水暖温度");
  218. }
  219. if (i == 22) {
  220. data.setChipName("室内光照");
  221. }
  222. if (i == 23) {
  223. data.setChipName("体感温度");
  224. }
  225. data.setFarmId(envDevice1.getFarmId());
  226. data.setUpdateTime(new Date());
  227. envDeviceRecentlyDataMapper.insert(data);
  228. }
  229. for (int i = 1; i < 9; i++) {
  230. EnvTemp temp = new EnvTemp();
  231. temp.setDeviceCode(envDevice1.getDeviceSortCode());
  232. temp.setChipCode(envDevice1.getDeviceSortCode() + "140" + i);//温度1-8
  233. temp.setUnitId(envDevice1.getUnitId().toString());
  234. temp.setFarmId(envDevice1.getFarmId());
  235. tempMapper.insert(temp);
  236. }
  237. EnvTemp temp = new EnvTemp();
  238. temp.setDeviceCode(envDevice1.getDeviceSortCode());
  239. temp.setChipCode(envDevice1.getDeviceSortCode() + "1423");//体感温度
  240. temp.setUnitId(envDevice1.getUnitId().toString());
  241. temp.setFarmId(envDevice1.getFarmId());
  242. tempMapper.insert(temp);
  243. for (int i = 12; i < 15; i++) {
  244. EnvHumi humi = new EnvHumi();
  245. humi.setChipCode(envDevice1.getDeviceSortCode() + "14" + i);//湿度
  246. humi.setDeviceCode(envDevice1.getDeviceSortCode());
  247. humi.setUnitId(envDevice1.getUnitId().toString());
  248. humi.setFarmId(envDevice1.getFarmId());
  249. humiMapper.insert(humi);
  250. }
  251. EnvAmmonia ammonia = new EnvAmmonia();
  252. ammonia.setChipCode(envDevice1.getDeviceSortCode() + "1418");//氨气
  253. ammonia.setDeviceCode(envDevice1.getDeviceSortCode());
  254. ammonia.setUnitId(envDevice1.getUnitId().toString());
  255. ammonia.setFarmId(envDevice1.getFarmId());
  256. ammoniaMapper.insert(ammonia);
  257. EnvCo2 co2 = new EnvCo2();
  258. co2.setChipCode(envDevice1.getDeviceSortCode() + "1415");//co2
  259. co2.setDeviceCode(envDevice1.getDeviceSortCode());
  260. co2.setUnitId(envDevice1.getUnitId().toString());
  261. co2.setFarmId(envDevice1.getFarmId());
  262. co2Mapper.insert(co2);
  263. EnvStive stive = new EnvStive();
  264. stive.setChipCode(envDevice1.getDeviceSortCode() + "1417");//粉尘
  265. stive.setDeviceCode(envDevice1.getDeviceSortCode());
  266. stive.setUnitId(envDevice1.getUnitId().toString());
  267. stive.setFarmId(envDevice1.getFarmId());
  268. stiveMapper.insert(stive);
  269. EnvPressure pressure = new EnvPressure();
  270. pressure.setChipCode(envDevice1.getDeviceSortCode() + "1416");//压力
  271. pressure.setDeviceCode(envDevice1.getDeviceSortCode());
  272. pressure.setUnitId(envDevice1.getUnitId().toString());
  273. pressure.setFarmId(envDevice1.getFarmId());
  274. pressureMapper.insert(pressure);
  275. for (int i = 1; i < envDevice1.getFengJiNum() + 5; i++) {
  276. EnvDeviceFan fan = new EnvDeviceFan();
  277. fan.setDeviceCode(envDevice1.getDeviceSortCode());
  278. if (i < 10) {
  279. fan.setChipCode(envDevice1.getDeviceSortCode() + "110" + i);
  280. } else {
  281. fan.setChipCode(envDevice1.getDeviceSortCode() + "11" + i);
  282. }
  283. if (i < 20) {
  284. fan.setChipName("风机" + i);
  285. } else {
  286. fan.setChipName("变频风机" + i);
  287. }
  288. fan.setFarmId(envDevice1.getFarmId());
  289. fan.setChipStatus(0);
  290. fan.setOther1(String.valueOf(i));
  291. fanMapper.insert(fan);
  292. }
  293. for (int i = 1; i < envDevice1.getXiaoChuangNum() + 1; i++) {
  294. EnvDeviceFenestrule fenestrulen = new EnvDeviceFenestrule();
  295. fenestrulen.setDeviceCode(envDevice1.getDeviceSortCode());
  296. fenestrulen.setChipCode(envDevice1.getDeviceSortCode() + "12" + i);
  297. fenestrulen.setFarmId(envDevice1.getFarmId());
  298. fenestrulen.setChipStatus(0);
  299. fenestrulen.setChipName("小窗" + i);
  300. fenestrulen.setOther1(String.valueOf(i));
  301. fenestruleMapper.insert(fenestrulen);
  302. }
  303. for (int i = 1; i < 6; i++) {
  304. EnvDeviceOther other = new EnvDeviceOther();
  305. other.setDeviceCode(envDevice1.getDeviceSortCode());
  306. other.setChipCode(envDevice1.getDeviceSortCode() + "13" + i);
  307. other.setFarmId(envDevice1.getFarmId());
  308. if (i == 1) {
  309. other.setChipName("照明");
  310. }
  311. if (i == 2) {
  312. other.setChipName("加热");
  313. }
  314. if (i == 3) {
  315. other.setChipName("湿帘");
  316. }
  317. if (i == 4) {
  318. other.setChipName("喷雾");
  319. }
  320. if (i == 5) {
  321. other.setChipName("锅炉");
  322. }
  323. other.setChipStatus(0);
  324. other.setOther1(String.valueOf(i));
  325. otherMapper.insert(other);
  326. }
  327. }
  328. public static void main(String[] args) {
  329. String farm = "1000" + 01;
  330. System.out.println(farm);
  331. String farm2 = String.valueOf((Integer.valueOf(farm) + 9));
  332. System.out.println(farm2);
  333. }
  334. @Override
  335. public Result edit(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  336. String farmId = paramsMap.get("farmId");
  337. String id = paramsMap.get("id");
  338. String DeviceCode = paramsMap.get("deviceCode");
  339. String DeviceName = paramsMap.get("deviceName");
  340. String BuildLocation = paramsMap.get("buildLocation");
  341. String DeviceBrand = paramsMap.get("deviceBrand");
  342. String remark = paramsMap.get("remark");
  343. if (remark == null || remark == "") {
  344. remark = null;
  345. }
  346. QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
  347. queryWrapper.eq("id", id);
  348. EnvDevice envDevice = envDeviceMapper.selectOne(queryWrapper);
  349. envDevice.setId(Integer.parseInt(id));
  350. envDevice.setFarmId(Integer.parseInt(farmId));
  351. envDevice.setDeviceName(DeviceName);
  352. envDevice.setDeviceCode(DeviceCode);
  353. envDevice.setDeviceBrand(DeviceBrand);
  354. envDevice.setBuildLocation(BuildLocation);
  355. envDevice.setRemark(remark);
  356. QueryWrapper<EnvDevice> queryWrapper1 = new QueryWrapper<>();
  357. queryWrapper1.ne("id", id).and(i -> i.eq("device_name", DeviceName).or().eq("device_code", DeviceCode));
  358. if (ObjectUtil.isEmpty(envDeviceMapper.selectOne(queryWrapper1))) {
  359. envDeviceMapper.updateById(envDevice);
  360. return new Result(ResultCode.SUCCESS, "修改成功");
  361. } else {
  362. return new Result(ResultCode.FAIL, "设备名称或者设备编码已存在");
  363. }
  364. }
  365. @Override
  366. public Result delete(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  367. String farmId = paramsMap.get("farmId");
  368. String id = paramsMap.get("id");
  369. QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
  370. queryWrapper.eq("id", id).eq("farm_id", farmId);
  371. EnvDevice envDevice = envDeviceMapper.selectOne(queryWrapper);
  372. String deviceCode = envDevice.getDeviceSortCode();
  373. QueryWrapper<EnvDeviceRecentlyData> queryWrapper1 = new QueryWrapper<>();
  374. queryWrapper1.eq("device_code", deviceCode).eq("farm_id", farmId);
  375. envDeviceRecentlyDataMapper.delete(queryWrapper1);//实时数据
  376. QueryWrapper<EnvTemp> queryWrapper2 = new QueryWrapper<>();
  377. queryWrapper2.eq("device_code", deviceCode).eq("farm_id", farmId);
  378. tempMapper.delete(queryWrapper2);//温度
  379. QueryWrapper<EnvHumi> queryWrapper3 = new QueryWrapper<>();
  380. queryWrapper3.eq("device_code", deviceCode).eq("farm_id", farmId);
  381. humiMapper.delete(queryWrapper3);//湿度
  382. QueryWrapper<EnvAmmonia> queryWrapper4 = new QueryWrapper<>();
  383. queryWrapper4.eq("device_code", deviceCode).eq("farm_id", farmId);
  384. ammoniaMapper.delete(queryWrapper4);//氨气
  385. QueryWrapper<EnvCo2> queryWrapper5 = new QueryWrapper<>();
  386. queryWrapper5.eq("device_code", deviceCode).eq("farm_id", farmId);
  387. co2Mapper.delete(queryWrapper5);//co2
  388. QueryWrapper<EnvStive> queryWrapper6 = new QueryWrapper<>();
  389. queryWrapper6.eq("device_code", deviceCode).eq("farm_id", farmId);
  390. stiveMapper.delete(queryWrapper6);//粉尘
  391. QueryWrapper<EnvPressure> queryWrapper7 = new QueryWrapper<>();
  392. queryWrapper7.eq("device_code", deviceCode).eq("farm_id", farmId);
  393. pressureMapper.delete(queryWrapper7);//压力
  394. QueryWrapper<EnvDeviceFan> queryWrapper8 = new QueryWrapper<>();
  395. queryWrapper8.eq("device_code", deviceCode).eq("farm_id", farmId);
  396. fanMapper.delete(queryWrapper8);//风机
  397. QueryWrapper<EnvDeviceFenestrule> queryWrapper9 = new QueryWrapper<>();
  398. queryWrapper9.eq("device_code", deviceCode).eq("farm_id", farmId);
  399. fenestruleMapper.delete(queryWrapper9);//小窗
  400. QueryWrapper<EnvDeviceOther> queryWrapper10 = new QueryWrapper<>();
  401. queryWrapper10.eq("device_code", deviceCode).eq("farm_id", farmId);
  402. otherMapper.delete(queryWrapper10);//其他
  403. envDeviceMapper.delete(queryWrapper);
  404. return new Result(ResultCode.SUCCESS, "删除成功");
  405. }
  406. @Override
  407. public Result listPigpen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  408. String farmId = paramsMap.get("farmId");
  409. String id = paramsMap.get("id");//楼层id
  410. JSONArray jsonArray = new JSONArray();
  411. QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
  412. queryWrapper.eq("farm_id", farmId);
  413. if (id == null || id == "") {
  414. queryWrapper.eq("parent_id", 3);
  415. } else {
  416. queryWrapper.like("other2", id);
  417. }
  418. List<BasePigpen> basePigpens = basePigpenMapper.selectList(queryWrapper);//得到栋舍单元
  419. for (int i = 0; i < basePigpens.size(); i++) {
  420. /* QueryWrapper<EnvDevice> queryWrapper1 = new QueryWrapper<>();
  421. queryWrapper1.eq("unit_name",basePigpens.get(i).getId());
  422. EnvDevice envDevice = envDeviceMapper.selectOne(queryWrapper1);//找到栋舍绑定的设备,利用单元id*/
  423. QueryWrapper<EnvData> queryWrapper2 = new QueryWrapper<>();
  424. queryWrapper2.eq("unit_id", basePigpens.get(i).getId()).orderByDesc("create_time").last(" limit 1");//通过设备id来拿取数据
  425. EnvData envData = dataMapper.selectOne(queryWrapper2);
  426. JSONObject jsonObject = new JSONObject();
  427. if (ObjectUtil.isEmpty(envData)) {
  428. jsonObject.put("temp", 0);//温度
  429. jsonObject.put("hum", 0);//湿度
  430. jsonObject.put("location", basePigpens.get(i).getBuildName());
  431. jsonObject.put("unit_id", 0);//单元id
  432. } else {
  433. jsonObject.put("temp", envData.getEnvTemp());//温度
  434. jsonObject.put("hum", envData.getEnvHum());//湿度
  435. jsonObject.put("location", basePigpens.get(i).getBuildName());
  436. jsonObject.put("unit_id", envData.getUnitId());//单元id
  437. }
  438. jsonArray.add(jsonObject);
  439. }
  440. return new Result(ResultCode.SUCCESS, jsonArray);
  441. }
  442. @Override
  443. public Result listEnv(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  444. String farmId = paramsMap.get("farmId");
  445. String id = paramsMap.get("id");//单元id
  446. String type = paramsMap.get("type");//查询类型
  447. String startTime = paramsMap.get("startTime");
  448. String endTime = paramsMap.get("endTime");
  449. if (type == null || type == "") {
  450. type = "1";
  451. }
  452. QueryWrapper<BasePigpen> basePigpenQueryWrapper = new QueryWrapper<>();
  453. basePigpenQueryWrapper.eq("farm_id", farmId).eq("id", id);
  454. BasePigpen basePigpen = basePigpenMapper.selectOne(basePigpenQueryWrapper);
  455. QueryWrapper<EnvData> queryWrapper = new QueryWrapper<>();
  456. queryWrapper.eq("unit_id", id).eq("farm_id", farmId);
  457. Map map = new HashMap<>();
  458. //自定义查询
  459. if ("4".equals(type)) {
  460. startTime = startTime + " 00:00:00";
  461. endTime = endTime + " 23:59:59";
  462. queryWrapper.between("create_time", startTime, endTime);
  463. List<EnvData> envData = dataMapper.listDay(queryWrapper);
  464. map.put("location", basePigpen.getBuildName());
  465. map.put("data", envData);
  466. }
  467. //本月
  468. else if ("3".equals(type)) {
  469. Date timesMonthmorning = DataUill.getTimesMonthmorning();
  470. queryWrapper.ge("create_time", timesMonthmorning);
  471. List<EnvData> envData = dataMapper.listDay(queryWrapper);
  472. map.put("location", basePigpen.getBuildName());
  473. map.put("data", envData);
  474. }
  475. //本周
  476. else if ("2".equals(type)) {
  477. Calendar calendar = Calendar.getInstance();
  478. calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
  479. queryWrapper.ge("create_time", calendar.getTime());
  480. List<EnvData> envData = dataMapper.listDay(queryWrapper);
  481. map.put("location", basePigpen.getBuildName());
  482. map.put("data", envData);
  483. }
  484. //今日
  485. else if ("1".equals(type)) {
  486. Date timesmorning = DataUill.getTimesmorning();
  487. queryWrapper.ge("create_time", timesmorning);
  488. List<EnvData> envData = dataMapper.listDay(queryWrapper);
  489. map.put("location", basePigpen.getBuildName());
  490. map.put("data", envData);
  491. }
  492. return new Result(ResultCode.SUCCESS, map);
  493. }
  494. @Override
  495. public Result listDeviceCount(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  496. String farmId = paramsMap.get("farmId");
  497. Integer offCount = 0;
  498. Integer onCount = 0;
  499. QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
  500. queryWrapper.eq("farm_id", farmId).eq("parent_id", 0);
  501. List<BasePigpen> basePigpens = basePigpenMapper.selectList(queryWrapper);//得到所有的栋
  502. JSONArray jsonArray = new JSONArray();
  503. for (int i = 0; i < basePigpens.size(); i++) {
  504. QueryWrapper<BasePigpen> queryWrapper1 = new QueryWrapper<>();
  505. queryWrapper1.like("other2", basePigpens.get(i).getId());
  506. List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(queryWrapper1);//得到所有的楼层
  507. for (int j = 0; j < basePigpens1.size(); j++) {
  508. QueryWrapper<EnvDevice> deviceQueryWrapper = new QueryWrapper<>();
  509. deviceQueryWrapper.eq("unit_id", basePigpens1.get(j).getId());
  510. EnvDevice envDevice = envDeviceMapper.selectOne(deviceQueryWrapper);
  511. if (ObjectUtil.isNotEmpty(envDevice)) {
  512. if (envDevice.getDeviceStatus() == 0) {
  513. offCount++;
  514. } else {
  515. onCount++;
  516. }
  517. }
  518. }
  519. JSONObject jsonObject = new JSONObject();
  520. jsonObject.put("location", basePigpens.get(i).getBuildName());
  521. jsonObject.put("onDevice", onCount);
  522. jsonObject.put("offDevice", offCount);
  523. jsonArray.add(jsonObject);
  524. offCount = 0;
  525. onCount = 0;
  526. }
  527. return new Result(ResultCode.SUCCESS, jsonArray);
  528. }
  529. @Override
  530. public Result selectList(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  531. String farmId = paramsMap.get("farmId");
  532. String name = paramsMap.get("name");
  533. String pageNum = paramsMap.get("pageNum");
  534. String pageSize = paramsMap.get("pageSize");
  535. if (pageNum == null || pageNum == "") {
  536. pageNum = "1";
  537. }
  538. if (pageSize == null || pageSize == "") {
  539. pageSize = "20";
  540. }
  541. QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
  542. if (name == "" || name == null) {
  543. queryWrapper.eq("farm_id", farmId);
  544. } else {
  545. queryWrapper.eq("farm_id", farmId);
  546. queryWrapper.like("d.device_code", name).or().like("d.device_name", name);
  547. }
  548. Page<EnvDeviceVo> page = new Page(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
  549. IPage<EnvDeviceVo> list = envDeviceMapper.list(page, queryWrapper);
  550. return new Result(ResultCode.SUCCESS, list);
  551. }
  552. // @Override
  553. // @Transactional
  554. // public Result sync(Map<String, String> params) throws Exception {
  555. // String farmId = params.get("farmId");
  556. // //获取所有栏舍
  557. // Map<String, Object> map = new HashMap<String, Object>();
  558. // String s = HttpClientSSLUtils.doPost("https://yzwlw.loongk.com/mobile/login?username=江西增鑫&password=21218cca77804d2ba1922c33e0151105", JSON.toJSONString(map));
  559. // System.out.println("登录带栏舍:"+s);
  560. // LoginDto loginDto = JSONUtil.toBean(s, LoginDto.class);
  561. // DataToken token = loginDto.getData().getToken();
  562. // String encode = Base64.encode(token.getUserId() + "_" + token.getToken());
  563. // HttpHeaders headers = new HttpHeaders();
  564. // headers.add("Authorization",encode);
  565. // HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
  566. // List<DataShacks> shacks = loginDto.getData().getShacks();
  567. // // 不能删除,需做比较
  568. // List<String> zengXinDeviceId = shacks.stream().map(DataShacks::getId).collect(Collectors.toList());
  569. // List<String> huatongDeviceId = envDeviceMapper.selectDeviceCodeByfarmId(Integer.parseInt(farmId));
  570. //
  571. // CopyOnWriteArrayList<String> zengXinDeviceIdCopy = ListUtil.toCopyOnWriteArrayList(zengXinDeviceId);
  572. // CopyOnWriteArrayList<String> huatongDeviceIdCopy = ListUtil.toCopyOnWriteArrayList(huatongDeviceId);
  573. // //新增的设备
  574. // zengXinDeviceIdCopy.removeAll(huatongDeviceId);
  575. // //新增
  576. // if (zengXinDeviceIdCopy.size() >0){
  577. // for (String deviceId : zengXinDeviceIdCopy) {
  578. // syncConfig(deviceId,requestEntity,farmId);
  579. // }
  580. // }
  581. // //需要删除的设备
  582. // huatongDeviceIdCopy.removeAll(zengXinDeviceId);
  583. // if (huatongDeviceIdCopy.size() >0){
  584. // this.remove(new QueryWrapper<EnvDevice>().in("device_code",huatongDeviceIdCopy));
  585. // }
  586. // System.out.println("zengxin:"+zengXinDeviceIdCopy);
  587. // System.out.println(huatongDeviceIdCopy);
  588. // return new Result(10000,"同步成功",false);
  589. // }
  590. @Override
  591. public Result bandingUnitId(HttpServletRequest httpServletRequest, EnvDevice envDevice) {
  592. Integer unitId = envDevice.getUnitId();
  593. int count = this.count(new QueryWrapper<EnvDevice>().eq("unit_id", unitId));
  594. if (count > 0) {
  595. return new Result(10001, "绑定失败,该栋舍已有设备", false);
  596. }
  597. this.updateById(envDevice);
  598. return new Result(10000, "绑定成功", true);
  599. }
  600. @Override
  601. public Result listPigpenAll(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  602. String farmId = paramsMap.get("farmId");
  603. List objects = new ArrayList<>();
  604. List<BasePigpen> basePigpens = basePigpenMapper.selectList(new QueryWrapper<BasePigpen>().eq("farm_id", farmId).eq("f_type", 3));
  605. for (BasePigpen basePigpen : basePigpens) {
  606. Integer id = basePigpen.getId();
  607. EnvData envData = dataMapper.selectOne(new QueryWrapper<EnvData>().eq("unit_id", id).orderByDesc("id").last("limit 1"));
  608. JSONObject jsonObject = new JSONObject();
  609. if (ObjectUtil.isNotEmpty(envData)) {
  610. jsonObject.put("temp", envData.getEnvTemp());//温度
  611. jsonObject.put("hum", envData.getEnvHum());//湿度
  612. jsonObject.put("location", basePigpen.getBuildName());
  613. jsonObject.put("unit_id", basePigpen.getId());//单元id
  614. } else {
  615. jsonObject.put("temp", 0);//温度
  616. jsonObject.put("hum", 0);//湿度
  617. jsonObject.put("location", basePigpen.getBuildName());
  618. jsonObject.put("unit_id", basePigpen.getId());//单元id
  619. }
  620. objects.add(jsonObject);
  621. }
  622. return new Result(ResultCode.SUCCESS, objects);
  623. }
  624. @Override
  625. public Result listDetail(Map<String, String> paramsMap) {
  626. String deviceCode = paramsMap.get("deviceCode");
  627. String farmId = paramsMap.get("farmId");
  628. Map map = new HashMap();
  629. Integer sensorNum = envDeviceRecentlyDataMapper.selectCount(new QueryWrapper<EnvDeviceRecentlyData>().eq("device_code", deviceCode).eq("farm_Id", farmId));
  630. Integer fanNum = fanMapper.selectCount(new QueryWrapper<EnvDeviceFan>().eq("device_code", deviceCode).eq("farm_Id", farmId));
  631. Integer fenestruleNum = fenestruleMapper.selectCount(new QueryWrapper<EnvDeviceFenestrule>().eq("device_code", deviceCode).eq("farm_Id", farmId));
  632. Integer lightNum = otherMapper.selectCount(new QueryWrapper<EnvDeviceOther>().eq("device_code", deviceCode).eq("other1", 1).eq("farm_Id", farmId));
  633. Integer heatNum = otherMapper.selectCount(new QueryWrapper<EnvDeviceOther>().eq("device_code", deviceCode).eq("other1", 2).eq("farm_Id", farmId));
  634. if (ObjectUtil.isNull(sensorNum)) {
  635. sensorNum = 0;
  636. }
  637. if (ObjectUtil.isNull(fanNum)) {
  638. fanNum = 0;
  639. }
  640. if (ObjectUtil.isNull(fenestruleNum)) {
  641. fenestruleNum = 0;
  642. }
  643. if (ObjectUtil.isNull(lightNum)) {
  644. lightNum = 0;
  645. }
  646. if (ObjectUtil.isNull(heatNum)) {
  647. heatNum = 0;
  648. }
  649. map.put("sensorNum", sensorNum);
  650. map.put("fanNum", fanNum);
  651. map.put("fenestruleNum", fenestruleNum);
  652. map.put("lightNum", lightNum);
  653. map.put("heatNum", heatNum);
  654. return new Result(ResultCode.SUCCESS, map);
  655. }
  656. // //添加新的设备
  657. // private void syncConfig(String shackId,HttpEntity httpEntity,String farmId) {
  658. // try {
  659. // ResponseEntity<String> exchangePeizhi = restTemplate.exchange("https://yzwlw.loongk.com/mobile/loadShackConfig/"+shackId, HttpMethod.GET, httpEntity, String.class);
  660. // String peizhibody = exchangePeizhi.getBody();
  661. // ShackConfigDto shackConfigDto = JSONUtil.toBean(peizhibody, ShackConfigDto.class);
  662. // ShackConfigData data = shackConfigDto.getData();
  663. // List<ShackConfigDataSensors> sensors = data.getSensors();
  664. // if (ObjectUtil.isNotEmpty(sensors)){
  665. // EnvDevice envDevice =new EnvDevice();
  666. // envDevice.setFarmId(Integer.parseInt(farmId));
  667. // envDevice.setDeviceBrand("增鑫");
  668. // envDevice.setDeviceCode(data.getId());
  669. // envDevice.setDeviceName(data.getName());
  670. // for (ShackConfigDataSensors sensor : sensors) {
  671. // if ("TEMPERATURE".equals(sensor.getType())){
  672. // envDevice.setOhter1(sensor.getId());
  673. // }
  674. // if ("HUMIDITY".equals(sensor.getType())){
  675. // envDevice.setOhter2(sensor.getId());
  676. // }
  677. // }
  678. // envDeviceMapper.insert(envDevice);
  679. // }
  680. // }catch (Exception e){
  681. // System.out.println("设备同步异常:" + e +" deviceId"+shackId);
  682. // }
  683. //
  684. // }
  685. }