EnvDeviceServiceImpl.java 31 KB

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