EnvDeviceServiceImpl.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678
  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. QueryWrapper<BasePigpen> basePigpenQueryWrapper = new QueryWrapper<>();
  128. basePigpenQueryWrapper.eq("farm_id", envDevice1.getFarmId()).eq("id", envDevice1.getUnitId());
  129. BasePigpen basePigpen = basePigpenMapper.selectOne(basePigpenQueryWrapper);
  130. envDevice.setStageType(basePigpen.getStageCode());
  131. QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
  132. queryWrapper.eq("device_name", envDevice1.getDeviceName()).eq("farm_id", envDevice1.getFarmId())
  133. .or().eq("device_code", envDevice1.getDeviceCode());
  134. EnvDevice device = envDeviceMapper.selectOne(queryWrapper);
  135. if (ObjectUtil.isEmpty(device)) {
  136. QueryWrapper<EnvDevice> queryWrapper1 = new QueryWrapper<>();
  137. queryWrapper1.eq("farm_id", envDevice1.getFarmId());
  138. Integer integer = envDeviceMapper.selectCount(queryWrapper1);
  139. if (integer == 0) {
  140. envDevice.setDeviceSortCode("100" + 01);
  141. addAll(envDevice);
  142. } else {
  143. queryWrapper1.orderByDesc("id").last(" limit 1");
  144. EnvDevice envDevice2 = envDeviceMapper.selectOne(queryWrapper1);
  145. envDevice.setDeviceSortCode(envDevice2.getDeviceSortCode() + 1);
  146. addAll(envDevice);
  147. }
  148. envDeviceMapper.insert(envDevice);
  149. return new Result(ResultCode.SUCCESS, "添加成功");
  150. } else {
  151. return new Result(ResultCode.FAIL, "添加失败,设备名称或设备编码已存在");
  152. }
  153. }
  154. public void addAll(EnvDevice envDevice1) {
  155. for (int i = 1; i < 24; i++) {
  156. EnvDeviceRecentlyData data = new EnvDeviceRecentlyData();
  157. data.setDeviceCode(envDevice1.getDeviceSortCode());
  158. data.setChipCode(envDevice1.getDeviceSortCode()+ "14" + i);
  159. data.setChipStatus(0);
  160. data.setChipType(i);
  161. if (i < 9) {
  162. data.setChipName("温度" + i);
  163. }
  164. if (i == 9) {
  165. data.setChipName("室外温度");
  166. }
  167. if (i == 10) {
  168. data.setChipName("目标温度");
  169. }
  170. if (i == 11) {
  171. data.setChipName("平均温度");
  172. }
  173. if (i == 12) {
  174. data.setChipName("湿度1");
  175. }
  176. if (i == 13) {
  177. data.setChipName("湿度2");
  178. }
  179. if (i == 14) {
  180. data.setChipName("湿度3");
  181. }
  182. if (i == 15) {
  183. data.setChipName("CO2");
  184. }
  185. if (i == 16) {
  186. data.setChipName("压力");
  187. }
  188. if (i == 17) {
  189. data.setChipName("粉尘");
  190. }
  191. if (i == 18) {
  192. data.setChipName("氨气");
  193. }
  194. if (i == 19) {
  195. data.setChipName("通风级别");
  196. }
  197. if (i == 20) {
  198. data.setChipName("加热");
  199. }
  200. if (i == 21) {
  201. data.setChipName("水暖温度");
  202. }
  203. if (i == 22) {
  204. data.setChipName("室内光照");
  205. }
  206. if (i==23) {
  207. data.setChipName("体感温度");
  208. }
  209. data.setFarmId(envDevice1.getFarmId());
  210. data.setUpdateTime(new Date());
  211. envDeviceRecentlyDataMapper.insert(data);
  212. }
  213. for (int i = 1; i < 9; i++) {
  214. EnvTemp temp = new EnvTemp();
  215. temp.setDeviceCode(envDevice1.getDeviceSortCode());
  216. temp.setChipCode(envDevice1.getDeviceSortCode() + "14" + i);//温度1-8
  217. temp.setUnitId(envDevice1.getUnitId().toString());
  218. temp.setFarmId(envDevice1.getFarmId());
  219. tempMapper.insert(temp);
  220. }
  221. EnvTemp temp = new EnvTemp();
  222. temp.setDeviceCode(envDevice1.getDeviceSortCode());
  223. temp.setChipCode(envDevice1.getDeviceSortCode() + "1423");//体感温度
  224. temp.setUnitId(envDevice1.getUnitId().toString());
  225. temp.setFarmId(envDevice1.getFarmId());
  226. tempMapper.insert(temp);
  227. for (int i = 12; i < 15; i++) {
  228. EnvHumi humi = new EnvHumi();
  229. humi.setChipCode(envDevice1.getDeviceSortCode() + "14"+i);//湿度
  230. humi.setDeviceCode(envDevice1.getDeviceSortCode());
  231. humi.setUnitId(envDevice1.getUnitId().toString());
  232. humi.setFarmId(envDevice1.getFarmId());
  233. humiMapper.insert(humi);
  234. }
  235. EnvAmmonia ammonia = new EnvAmmonia();
  236. ammonia.setChipCode(envDevice1.getDeviceSortCode() + "1418");//氨气
  237. ammonia.setDeviceCode(envDevice1.getDeviceSortCode());
  238. ammonia.setUnitId(envDevice1.getUnitId().toString());
  239. ammonia.setFarmId(envDevice1.getFarmId());
  240. ammoniaMapper.insert(ammonia);
  241. EnvCo2 co2 = new EnvCo2();
  242. co2.setChipCode(envDevice1.getDeviceSortCode() + "1415");//co2
  243. co2.setDeviceCode(envDevice1.getDeviceSortCode());
  244. co2.setUnitId(envDevice1.getUnitId().toString());
  245. co2.setFarmId(envDevice1.getFarmId());
  246. co2Mapper.insert(co2);
  247. EnvStive stive = new EnvStive();
  248. stive.setChipCode(envDevice1.getDeviceSortCode() + "1417");//粉尘
  249. stive.setDeviceCode(envDevice1.getDeviceSortCode());
  250. stive.setUnitId(envDevice1.getUnitId().toString());
  251. stive.setFarmId(envDevice1.getFarmId());
  252. stiveMapper.insert(stive);
  253. EnvPressure pressure = new EnvPressure();
  254. pressure.setChipCode(envDevice1.getDeviceSortCode() + "1416");//压力
  255. pressure.setDeviceCode(envDevice1.getDeviceSortCode());
  256. pressure.setUnitId(envDevice1.getUnitId().toString());
  257. pressure.setFarmId(envDevice1.getFarmId());
  258. pressureMapper.insert(pressure);
  259. for (int i = 1; i < 21; i++) {
  260. EnvDeviceFan fan = new EnvDeviceFan();
  261. fan.setDeviceCode(envDevice1.getDeviceSortCode());
  262. fan.setChipCode(envDevice1.getDeviceSortCode() + "11" + i);
  263. fan.setFarmId(envDevice1.getFarmId());
  264. fan.setChipStatus(0);
  265. fan.setChipName("风机" + i);
  266. fan.setOther1(String.valueOf(i));
  267. fanMapper.insert(fan);
  268. }
  269. for (int i = 1; i < 9; i++) {
  270. EnvDeviceFenestrule fenestrulen = new EnvDeviceFenestrule();
  271. fenestrulen.setDeviceCode(envDevice1.getDeviceSortCode());
  272. fenestrulen.setChipCode(envDevice1.getDeviceSortCode() + "12" + i);
  273. fenestrulen.setFarmId(envDevice1.getFarmId());
  274. fenestrulen.setChipStatus(0);
  275. fenestrulen.setChipName("小窗" + i);
  276. fenestrulen.setOther1(String.valueOf(i));
  277. fenestruleMapper.insert(fenestrulen);
  278. }
  279. for (int i = 1; i < 6; i++) {
  280. EnvDeviceOther other = new EnvDeviceOther();
  281. other.setDeviceCode(envDevice1.getDeviceSortCode());
  282. other.setChipCode(envDevice1.getDeviceSortCode() + "13" + i);
  283. other.setFarmId(envDevice1.getFarmId());
  284. if (i==1) {
  285. other.setChipName("照明");
  286. }
  287. if (i==2) {
  288. other.setChipName("加热");
  289. }
  290. if (i==3) {
  291. other.setChipName("湿帘");
  292. }
  293. if (i==4) {
  294. other.setChipName("喷雾");
  295. }
  296. if (i==5) {
  297. other.setChipName("锅炉");
  298. }
  299. other.setChipStatus(0);
  300. other.setOther1(String.valueOf(i));
  301. otherMapper.insert(other);
  302. }
  303. }
  304. public static void main(String[] args) {
  305. String farm = "1000" + 01;
  306. System.out.println(farm);
  307. String farm2=String.valueOf((Integer.valueOf(farm) + 9));
  308. System.out.println(farm2);
  309. }
  310. @Override
  311. public Result edit(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  312. String farmId = paramsMap.get("farmId");
  313. String id = paramsMap.get("id");
  314. String DeviceCode = paramsMap.get("deviceCode");
  315. String DeviceName = paramsMap.get("deviceName");
  316. String BuildLocation = paramsMap.get("buildLocation");
  317. String DeviceBrand = paramsMap.get("deviceBrand");
  318. String remark = paramsMap.get("remark");
  319. if (remark == null || remark == "") {
  320. remark = null;
  321. }
  322. QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
  323. queryWrapper.eq("id", id);
  324. EnvDevice envDevice = envDeviceMapper.selectOne(queryWrapper);
  325. envDevice.setId(Integer.parseInt(id));
  326. envDevice.setFarmId(Integer.parseInt(farmId));
  327. envDevice.setDeviceName(DeviceName);
  328. envDevice.setDeviceCode(DeviceCode);
  329. envDevice.setDeviceBrand(DeviceBrand);
  330. envDevice.setBuildLocation(BuildLocation);
  331. envDevice.setRemark(remark);
  332. QueryWrapper<EnvDevice> queryWrapper1 = new QueryWrapper<>();
  333. queryWrapper1.ne("id",id).and(i ->i.eq("device_name", DeviceName).or().eq("device_code", DeviceCode));
  334. if (ObjectUtil.isEmpty(envDeviceMapper.selectOne(queryWrapper1))) {
  335. envDeviceMapper.updateById(envDevice);
  336. return new Result(ResultCode.SUCCESS,"修改成功");
  337. } else {
  338. return new Result(ResultCode.FAIL, "设备名称或者设备编码已存在");
  339. }
  340. }
  341. @Override
  342. public Result delete(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  343. String farmId = paramsMap.get("farmId");
  344. String id = paramsMap.get("id");
  345. QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
  346. queryWrapper.eq("id", id).eq("farm_id", farmId);
  347. EnvDevice envDevice = envDeviceMapper.selectOne(queryWrapper);
  348. String deviceCode = envDevice.getDeviceSortCode();
  349. QueryWrapper<EnvDeviceRecentlyData> queryWrapper1 = new QueryWrapper<>();
  350. queryWrapper1.eq("device_code", deviceCode).eq("farm_id", farmId);
  351. envDeviceRecentlyDataMapper.delete(queryWrapper1);//实时数据
  352. QueryWrapper<EnvTemp> queryWrapper2 = new QueryWrapper<>();
  353. queryWrapper2.eq("device_code", deviceCode).eq("farm_id", farmId);
  354. tempMapper.delete(queryWrapper2);//温度
  355. QueryWrapper<EnvHumi> queryWrapper3 = new QueryWrapper<>();
  356. queryWrapper3.eq("device_code", deviceCode).eq("farm_id", farmId);
  357. humiMapper.delete(queryWrapper3);//湿度
  358. QueryWrapper<EnvAmmonia> queryWrapper4 = new QueryWrapper<>();
  359. queryWrapper4.eq("device_code", deviceCode).eq("farm_id", farmId);
  360. ammoniaMapper.delete(queryWrapper4);//氨气
  361. QueryWrapper<EnvCo2> queryWrapper5 = new QueryWrapper<>();
  362. queryWrapper5.eq("device_code", deviceCode).eq("farm_id", farmId);
  363. co2Mapper.delete(queryWrapper5);//co2
  364. QueryWrapper<EnvStive> queryWrapper6 = new QueryWrapper<>();
  365. queryWrapper6.eq("device_code", deviceCode).eq("farm_id", farmId);
  366. stiveMapper.delete(queryWrapper6);//粉尘
  367. QueryWrapper<EnvPressure> queryWrapper7 = new QueryWrapper<>();
  368. queryWrapper7.eq("device_code", deviceCode).eq("farm_id", farmId);
  369. pressureMapper.delete(queryWrapper7);//压力
  370. QueryWrapper<EnvDeviceFan> queryWrapper8 = new QueryWrapper<>();
  371. queryWrapper8.eq("device_code", deviceCode).eq("farm_id", farmId);
  372. fanMapper.delete(queryWrapper8);//风机
  373. QueryWrapper<EnvDeviceFenestrule> queryWrapper9 = new QueryWrapper<>();
  374. queryWrapper9.eq("device_code", deviceCode).eq("farm_id", farmId);
  375. fenestruleMapper.delete(queryWrapper9);//小窗
  376. QueryWrapper<EnvDeviceOther> queryWrapper10 = new QueryWrapper<>();
  377. queryWrapper10.eq("device_code", deviceCode).eq("farm_id", farmId);
  378. otherMapper.delete(queryWrapper10);//其他
  379. envDeviceMapper.delete(queryWrapper);
  380. return new Result(ResultCode.SUCCESS, "删除成功");
  381. }
  382. @Override
  383. public Result listPigpen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  384. String farmId = paramsMap.get("farmId");
  385. String id = paramsMap.get("id");//楼层id
  386. JSONArray jsonArray = new JSONArray();
  387. QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
  388. queryWrapper.eq("farm_id", farmId);
  389. if (id == null || id == "") {
  390. queryWrapper.eq("parent_id", 3);
  391. } else {
  392. queryWrapper.like("other2", id);
  393. }
  394. List<BasePigpen> basePigpens = basePigpenMapper.selectList(queryWrapper);//得到栋舍单元
  395. for (int i = 0; i < basePigpens.size(); i++) {
  396. /* QueryWrapper<EnvDevice> queryWrapper1 = new QueryWrapper<>();
  397. queryWrapper1.eq("unit_name",basePigpens.get(i).getId());
  398. EnvDevice envDevice = envDeviceMapper.selectOne(queryWrapper1);//找到栋舍绑定的设备,利用单元id*/
  399. QueryWrapper<EnvData> queryWrapper2 = new QueryWrapper<>();
  400. queryWrapper2.eq("unit_id", basePigpens.get(i).getId()).orderByDesc("create_time").last(" limit 1");//通过设备id来拿取数据
  401. EnvData envData = dataMapper.selectOne(queryWrapper2);
  402. JSONObject jsonObject = new JSONObject();
  403. if (ObjectUtil.isEmpty(envData)) {
  404. jsonObject.put("temp", 0);//温度
  405. jsonObject.put("hum", 0);//湿度
  406. jsonObject.put("location", basePigpens.get(i).getBuildName());
  407. jsonObject.put("unit_id", 0);//单元id
  408. } else {
  409. jsonObject.put("temp", envData.getEnvTemp());//温度
  410. jsonObject.put("hum", envData.getEnvHum());//湿度
  411. jsonObject.put("location", basePigpens.get(i).getBuildName());
  412. jsonObject.put("unit_id", envData.getUnitId());//单元id
  413. }
  414. jsonArray.add(jsonObject);
  415. }
  416. return new Result(ResultCode.SUCCESS, jsonArray);
  417. }
  418. @Override
  419. public Result listEnv(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  420. String farmId = paramsMap.get("farmId");
  421. String id = paramsMap.get("id");//单元id
  422. String type = paramsMap.get("type");//查询类型
  423. String startTime = paramsMap.get("startTime");
  424. String endTime = paramsMap.get("endTime");
  425. if (type == null || type == "") {
  426. type = "1";
  427. }
  428. QueryWrapper<BasePigpen> basePigpenQueryWrapper = new QueryWrapper<>();
  429. basePigpenQueryWrapper.eq("farm_id", farmId).eq("id", id);
  430. BasePigpen basePigpen = basePigpenMapper.selectOne(basePigpenQueryWrapper);
  431. QueryWrapper<EnvData> queryWrapper = new QueryWrapper<>();
  432. queryWrapper.eq("unit_id", id).eq("farm_id", farmId);
  433. Map map = new HashMap<>();
  434. //自定义查询
  435. if ("4".equals(type)) {
  436. startTime = startTime + " 00:00:00";
  437. endTime = endTime + " 23:59:59";
  438. queryWrapper.between("create_time", startTime, endTime);
  439. List<EnvData> envData = dataMapper.listDay(queryWrapper);
  440. map.put("location", basePigpen.getBuildName());
  441. map.put("data", envData);
  442. }
  443. //本月
  444. else if ("3".equals(type)) {
  445. Date timesMonthmorning = DataUill.getTimesMonthmorning();
  446. queryWrapper.ge("create_time", timesMonthmorning);
  447. List<EnvData> envData = dataMapper.listDay(queryWrapper);
  448. map.put("location", basePigpen.getBuildName());
  449. map.put("data", envData);
  450. }
  451. //本周
  452. else if ("2".equals(type)) {
  453. Calendar calendar = Calendar.getInstance();
  454. calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
  455. queryWrapper.ge("create_time", calendar.getTime());
  456. List<EnvData> envData = dataMapper.listDay(queryWrapper);
  457. map.put("location", basePigpen.getBuildName());
  458. map.put("data", envData);
  459. }
  460. //今日
  461. else if ("1".equals(type)) {
  462. Date timesmorning = DataUill.getTimesmorning();
  463. queryWrapper.ge("create_time", timesmorning);
  464. List<EnvData> envData = dataMapper.listDay(queryWrapper);
  465. map.put("location", basePigpen.getBuildName());
  466. map.put("data", envData);
  467. }
  468. return new Result(ResultCode.SUCCESS, map);
  469. }
  470. @Override
  471. public Result listDeviceCount(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  472. String farmId = paramsMap.get("farmId");
  473. Integer offCount = 0;
  474. Integer onCount = 0;
  475. QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
  476. queryWrapper.eq("farm_id", farmId).eq("parent_id", 0);
  477. List<BasePigpen> basePigpens = basePigpenMapper.selectList(queryWrapper);//得到所有的栋
  478. JSONArray jsonArray = new JSONArray();
  479. for (int i = 0; i < basePigpens.size(); i++) {
  480. QueryWrapper<BasePigpen> queryWrapper1 = new QueryWrapper<>();
  481. queryWrapper1.like("other2", basePigpens.get(i).getId());
  482. List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(queryWrapper1);//得到所有的楼层
  483. for (int j = 0; j < basePigpens1.size(); j++) {
  484. QueryWrapper<EnvDevice> deviceQueryWrapper = new QueryWrapper<>();
  485. deviceQueryWrapper.eq("unit_id", basePigpens1.get(j).getId());
  486. EnvDevice envDevice = envDeviceMapper.selectOne(deviceQueryWrapper);
  487. if (ObjectUtil.isNotEmpty(envDevice)) {
  488. if (envDevice.getDeviceStatus() == 0) {
  489. offCount++;
  490. } else {
  491. onCount++;
  492. }
  493. }
  494. }
  495. JSONObject jsonObject = new JSONObject();
  496. jsonObject.put("location", basePigpens.get(i).getBuildName());
  497. jsonObject.put("onDevice", onCount);
  498. jsonObject.put("offDevice", offCount);
  499. jsonArray.add(jsonObject);
  500. offCount = 0;
  501. onCount = 0;
  502. }
  503. return new Result(ResultCode.SUCCESS, jsonArray);
  504. }
  505. @Override
  506. public Result selectList(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  507. String farmId = paramsMap.get("farmId");
  508. String name = paramsMap.get("name");
  509. String pageNum = paramsMap.get("pageNum");
  510. String pageSize = paramsMap.get("pageSize");
  511. if (pageNum == null || pageNum == "") {
  512. pageNum = "1";
  513. }
  514. if (pageSize == null || pageSize == "") {
  515. pageSize = "20";
  516. }
  517. QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
  518. if (name == "" || name == null) {
  519. queryWrapper.eq("farm_id", farmId);
  520. } else {
  521. queryWrapper.eq("farm_id", farmId);
  522. queryWrapper.like("device_code", name).or().like("device_name", name);
  523. }
  524. Page<EnvDevice> page = new Page(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
  525. return new Result(ResultCode.SUCCESS, envDeviceMapper.selectPage(page, queryWrapper));
  526. }
  527. // @Override
  528. // @Transactional
  529. // public Result sync(Map<String, String> params) throws Exception {
  530. // String farmId = params.get("farmId");
  531. // //获取所有栏舍
  532. // Map<String, Object> map = new HashMap<String, Object>();
  533. // String s = HttpClientSSLUtils.doPost("https://yzwlw.loongk.com/mobile/login?username=江西增鑫&password=21218cca77804d2ba1922c33e0151105", JSON.toJSONString(map));
  534. // System.out.println("登录带栏舍:"+s);
  535. // LoginDto loginDto = JSONUtil.toBean(s, LoginDto.class);
  536. // DataToken token = loginDto.getData().getToken();
  537. // String encode = Base64.encode(token.getUserId() + "_" + token.getToken());
  538. // HttpHeaders headers = new HttpHeaders();
  539. // headers.add("Authorization",encode);
  540. // HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
  541. // List<DataShacks> shacks = loginDto.getData().getShacks();
  542. // // 不能删除,需做比较
  543. // List<String> zengXinDeviceId = shacks.stream().map(DataShacks::getId).collect(Collectors.toList());
  544. // List<String> huatongDeviceId = envDeviceMapper.selectDeviceCodeByfarmId(Integer.parseInt(farmId));
  545. //
  546. // CopyOnWriteArrayList<String> zengXinDeviceIdCopy = ListUtil.toCopyOnWriteArrayList(zengXinDeviceId);
  547. // CopyOnWriteArrayList<String> huatongDeviceIdCopy = ListUtil.toCopyOnWriteArrayList(huatongDeviceId);
  548. // //新增的设备
  549. // zengXinDeviceIdCopy.removeAll(huatongDeviceId);
  550. // //新增
  551. // if (zengXinDeviceIdCopy.size() >0){
  552. // for (String deviceId : zengXinDeviceIdCopy) {
  553. // syncConfig(deviceId,requestEntity,farmId);
  554. // }
  555. // }
  556. // //需要删除的设备
  557. // huatongDeviceIdCopy.removeAll(zengXinDeviceId);
  558. // if (huatongDeviceIdCopy.size() >0){
  559. // this.remove(new QueryWrapper<EnvDevice>().in("device_code",huatongDeviceIdCopy));
  560. // }
  561. // System.out.println("zengxin:"+zengXinDeviceIdCopy);
  562. // System.out.println(huatongDeviceIdCopy);
  563. // return new Result(10000,"同步成功",false);
  564. // }
  565. @Override
  566. public Result bandingUnitId(HttpServletRequest httpServletRequest, EnvDevice envDevice) {
  567. Integer unitId = envDevice.getUnitId();
  568. int count = this.count(new QueryWrapper<EnvDevice>().eq("unit_id", unitId));
  569. if (count > 0) {
  570. return new Result(10001, "绑定失败,该栋舍已有设备", false);
  571. }
  572. this.updateById(envDevice);
  573. return new Result(10000, "绑定成功", true);
  574. }
  575. @Override
  576. public Result listPigpenAll(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  577. String farmId = paramsMap.get("farmId");
  578. List objects = new ArrayList<>();
  579. List<BasePigpen> basePigpens = basePigpenMapper.selectList(new QueryWrapper<BasePigpen>().eq("farm_id", farmId).eq("f_type", 3));
  580. for (BasePigpen basePigpen : basePigpens) {
  581. Integer id = basePigpen.getId();
  582. EnvData envData = dataMapper.selectOne(new QueryWrapper<EnvData>().eq("unit_id", id).orderByDesc("id").last("limit 1"));
  583. JSONObject jsonObject = new JSONObject();
  584. if (ObjectUtil.isNotEmpty(envData)) {
  585. jsonObject.put("temp", envData.getEnvTemp());//温度
  586. jsonObject.put("hum", envData.getEnvHum());//湿度
  587. jsonObject.put("location", basePigpen.getBuildName());
  588. jsonObject.put("unit_id", basePigpen.getId());//单元id
  589. } else {
  590. jsonObject.put("temp", 0);//温度
  591. jsonObject.put("hum", 0);//湿度
  592. jsonObject.put("location", basePigpen.getBuildName());
  593. jsonObject.put("unit_id", basePigpen.getId());//单元id
  594. }
  595. objects.add(jsonObject);
  596. }
  597. return new Result(ResultCode.SUCCESS, objects);
  598. }
  599. // //添加新的设备
  600. // private void syncConfig(String shackId,HttpEntity httpEntity,String farmId) {
  601. // try {
  602. // ResponseEntity<String> exchangePeizhi = restTemplate.exchange("https://yzwlw.loongk.com/mobile/loadShackConfig/"+shackId, HttpMethod.GET, httpEntity, String.class);
  603. // String peizhibody = exchangePeizhi.getBody();
  604. // ShackConfigDto shackConfigDto = JSONUtil.toBean(peizhibody, ShackConfigDto.class);
  605. // ShackConfigData data = shackConfigDto.getData();
  606. // List<ShackConfigDataSensors> sensors = data.getSensors();
  607. // if (ObjectUtil.isNotEmpty(sensors)){
  608. // EnvDevice envDevice =new EnvDevice();
  609. // envDevice.setFarmId(Integer.parseInt(farmId));
  610. // envDevice.setDeviceBrand("增鑫");
  611. // envDevice.setDeviceCode(data.getId());
  612. // envDevice.setDeviceName(data.getName());
  613. // for (ShackConfigDataSensors sensor : sensors) {
  614. // if ("TEMPERATURE".equals(sensor.getType())){
  615. // envDevice.setOhter1(sensor.getId());
  616. // }
  617. // if ("HUMIDITY".equals(sensor.getType())){
  618. // envDevice.setOhter2(sensor.getId());
  619. // }
  620. // }
  621. // envDeviceMapper.insert(envDevice);
  622. // }
  623. // }catch (Exception e){
  624. // System.out.println("设备同步异常:" + e +" deviceId"+shackId);
  625. // }
  626. //
  627. // }
  628. }