MouldEquipmentServiceImpl.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533
  1. package com.hssx.cloudmodel.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.github.pagehelper.PageHelper;
  6. import com.github.pagehelper.PageInfo;
  7. import com.hssx.cloudmodel.constant.Constant;
  8. import com.hssx.cloudmodel.entity.*;
  9. import com.hssx.cloudmodel.entity.vo.MouldEquipmentVO;
  10. import com.hssx.cloudmodel.entity.vo.UserVO;
  11. import com.hssx.cloudmodel.mapper.*;
  12. import com.hssx.cloudmodel.service.MouldEquipmentService;
  13. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  14. import com.hssx.cloudmodel.util.*;
  15. import org.apache.commons.lang3.StringEscapeUtils;
  16. import org.apache.commons.lang3.StringUtils;
  17. import org.apache.poi.ss.usermodel.Cell;
  18. import org.apache.poi.xssf.usermodel.XSSFCell;
  19. import org.apache.poi.xssf.usermodel.XSSFRow;
  20. import org.apache.poi.xssf.usermodel.XSSFSheet;
  21. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.web.bind.annotation.RequestParam;
  24. import org.springframework.web.multipart.MultipartFile;
  25. import javax.annotation.Resource;
  26. import java.io.*;
  27. import java.security.KeyManagementException;
  28. import java.security.NoSuchAlgorithmException;
  29. import java.security.NoSuchProviderException;
  30. import java.text.SimpleDateFormat;
  31. import java.time.LocalDateTime;
  32. import java.time.LocalTime;
  33. import java.util.*;
  34. import java.util.stream.Collectors;
  35. /**
  36. * <p>
  37. * 服务实现类
  38. * </p>
  39. *
  40. * @author 吴涛涛
  41. * @since 2019-08-02
  42. */
  43. @Service
  44. public class MouldEquipmentServiceImpl extends ServiceImpl<MouldEquipmentMapper, MouldEquipment> implements MouldEquipmentService {
  45. @Resource
  46. MouldEquipmentMapper mouldEquipmentMapper;
  47. @Resource
  48. MouldMapper mouldMapper;
  49. @Resource
  50. UserMapper userMapper;
  51. @Resource
  52. NewsNoticeMapper newsNoticeMapper;
  53. @Resource
  54. NewsNoticeUserMapper newsNoticeUserMapper;
  55. @Resource
  56. PowerMapper powerMapper;
  57. @Resource
  58. ProjectMapper projectMapper;
  59. @Resource
  60. ProjectApproveMapper projectApproveMapper;
  61. @Resource
  62. MouldDownPacketMapper mouldDownPacketMapper;
  63. @Resource
  64. ProjectUserMapper projectUserMapper;
  65. @Resource
  66. ChangeIpCommandMapper changeIpCommandMapper;
  67. @Resource
  68. CompanyMapper companyMapper;
  69. @Override
  70. public HttpRespMsg addAndUpdateMouldEquipment(MouldEquipment mouldEquipment, User user) {
  71. HttpRespMsg msg = new HttpRespMsg();
  72. if (user.getParentId() == 0) {
  73. if (mouldEquipment.getId() == null) {
  74. //添加设备
  75. //查询当前设备编号的模具是否存在
  76. Integer count = mouldEquipmentMapper.selectCount(new QueryWrapper<MouldEquipment>().eq("equipment_no", mouldEquipment.getEquipmentNo()));
  77. if (count > 0) {
  78. msg.setError("当前设备编号已存在,请重新输入其他模具编号");
  79. } else {
  80. mouldEquipmentMapper.insert(mouldEquipment);
  81. }
  82. } else {
  83. //修改设备
  84. MouldEquipment mouldEqu = mouldEquipmentMapper.selectById(mouldEquipment.getId());
  85. MouldEquipment m = mouldEquipmentMapper.selectOne(new QueryWrapper<MouldEquipment>().eq("equipment_no", mouldEquipment.getEquipmentNo()));
  86. if (mouldEqu.getEquipmentNo().equals(mouldEquipment.getEquipmentNo()) || m == null) {
  87. mouldEquipmentMapper.updateById(mouldEquipment);
  88. } else {
  89. msg.setError("当前设备编号已存在,请重新输入其他模具编号");
  90. }
  91. }
  92. } else {
  93. msg.setError("对不起,您不是管理员,不具备设备创建或修改的权限");
  94. }
  95. return msg;
  96. }
  97. @Override
  98. public HttpRespMsg isUse(MouldEquipmentVO mouldEquipment, User user) {
  99. HttpRespMsg msg = new HttpRespMsg();
  100. //16进制的转化
  101. String lowPowerLimitStr = Integer.toHexString(mouldEquipment.getLowPowerLimit());
  102. if (lowPowerLimitStr.length() == 1) {
  103. lowPowerLimitStr = "0" + lowPowerLimitStr;
  104. }
  105. String workInterval = Integer.toHexString(mouldEquipment.getWorkInterval());
  106. if (workInterval.length() == 1) {
  107. workInterval = "0" + workInterval;
  108. }
  109. String freeInterval = Integer.toHexString(mouldEquipment.getFreeInterval());
  110. if (freeInterval.length() == 1) {
  111. freeInterval = "0" + freeInterval;
  112. }
  113. String hotAlarmLimitStr = Integer.toHexString(mouldEquipment.getHotAlarmLimit());
  114. if (hotAlarmLimitStr.length() == 1) {
  115. hotAlarmLimitStr = "0" + hotAlarmLimitStr;
  116. }
  117. String isUseStr = "0" + Integer.toHexString(mouldEquipment.getIsUse());
  118. String threshold = "";
  119. if (null != mouldEquipment.getThreshold()) {
  120. threshold = String.format("%04d", Integer.parseInt(mouldEquipment.getThreshold()));
  121. }
  122. //判断是不是超级管理员,是才可操作
  123. if (user.getParentId() == 0) {
  124. //修改设备
  125. String[] split = mouldEquipment.getEquipmentNo().split(",");
  126. MouldDownPacket packet = null;
  127. String setPacketMessage = "";
  128. for (String str : split) {
  129. packet = mouldDownPacketMapper.selectOne(new QueryWrapper<MouldDownPacket>().eq("equipment_no", str));
  130. MouldEquipment equipment = new MouldEquipment();
  131. if (1 == mouldEquipment.getIsUse()) {
  132. //启用中
  133. equipment.setIsUse(2);
  134. } else if (0 == mouldEquipment.getIsUse()) {
  135. //停用中
  136. equipment.setIsUse(3);
  137. }
  138. equipment.setEquipmentNo(mouldEquipment.getEquipmentNo());
  139. equipment.setHillNumber(mouldEquipment.getLowPowerLimit() + "");
  140. equipment.setTemperature(mouldEquipment.getHotAlarmLimit());
  141. mouldEquipmentMapper.update(equipment, new QueryWrapper<MouldEquipment>().eq("equipment_no", str));
  142. MouldDownPacket mouldDownPacket = new MouldDownPacket();
  143. if (!threshold.equals("")) {
  144. mouldDownPacket.setThreshold(threshold);
  145. }
  146. if (0 == mouldEquipment.getIsUse()) {
  147. setPacketMessage = "FAAF0007001e781e50003C";//停用
  148. String crcCode = CRC16Util.getCRC(setPacketMessage);
  149. setPacketMessage = setPacketMessage + crcCode;
  150. } else {
  151. setPacketMessage = downProcessMsg(lowPowerLimitStr, hotAlarmLimitStr, isUseStr, freeInterval, workInterval);
  152. }
  153. mouldDownPacket.setPacketStr(setPacketMessage);
  154. mouldDownPacket.setIsUse(mouldEquipment.getIsUse());
  155. mouldDownPacket.setEquipmentNo(str);
  156. if (packet != null) {
  157. mouldDownPacket.setId(packet.getId());
  158. //已经存在更新下发数据包
  159. mouldDownPacketMapper.updateById(mouldDownPacket);
  160. } else {
  161. mouldDownPacketMapper.insert(mouldDownPacket);
  162. }
  163. }
  164. } else {
  165. msg.setError("对不起,您不是超级管理员,不具备启用设备的权限");
  166. return msg;
  167. }
  168. return msg;
  169. }
  170. @Override
  171. public HttpRespMsg getList(User user, PageUtil page, Integer companyId, String keyName) {
  172. HttpRespMsg msg = new HttpRespMsg();
  173. if (user != null) {
  174. if (Constant.SYS_PARENT_ID.equals(user.getParentId())) {
  175. PageHelper.startPage(page.getPageNum(), page.getPageSize());
  176. List<MouldEquipmentVO> mouldEquipments = mouldEquipmentMapper.getList(companyId, keyName);
  177. PageInfo<MouldEquipmentVO> pageInfo = new PageInfo<>(mouldEquipments);
  178. msg.data = pageInfo;
  179. } else {
  180. msg.setError("对不起,您不含有查看该列表的权利");
  181. }
  182. }
  183. return msg;
  184. }
  185. @Override
  186. public HttpRespMsg getListByCompanyId(MouldEquipmentVO mouldEquipmentVO) {
  187. HttpRespMsg msg = new HttpRespMsg();
  188. List<Integer> mouldsEquipmentIds = mouldMapper.selectList(new QueryWrapper<Mould>().eq("company_id", mouldEquipmentVO.getBelongCompanyId()).isNotNull("equipment_id")).stream().map(Mould::getEquipmentId).collect(Collectors.toList());
  189. mouldsEquipmentIds.add(-1);
  190. List<Integer> equipmentIds = mouldEquipmentMapper.selectList(new QueryWrapper<MouldEquipment>().eq("belong_company_id", mouldEquipmentVO.getBelongCompanyId()).eq("stage", 0)).stream().map(MouldEquipment::getId).collect(Collectors.toList());
  191. equipmentIds.removeAll(mouldsEquipmentIds);//把已经使用的设备剔除
  192. equipmentIds.add(-1);
  193. List<MouldEquipmentVO> list = mouldEquipmentMapper.getListByCompanyId(mouldEquipmentVO.getBelongCompanyId(), equipmentIds);
  194. msg.data = list;
  195. return msg;
  196. }
  197. @Override
  198. public HttpRespMsg MouldEquipmentAlarm() {
  199. HttpRespMsg msg = new HttpRespMsg();
  200. String token = GainTokenUtil.getToken();
  201. List<MouldEquipment> mouldEquipments = mouldEquipmentMapper.selectList(new QueryWrapper<MouldEquipment>().eq("is_use", 1));
  202. for (MouldEquipment mouldEquipment : mouldEquipments) {
  203. Mould mould = mouldMapper.selectOne(new QueryWrapper<Mould>().eq("equipment_id", mouldEquipment.getId()));
  204. Project project = projectMapper.selectById(mould.getProjectId());
  205. List<Integer> uids = projectUserMapper.selectList(new QueryWrapper<ProjectUser>().eq("project_id", project.getId())).stream().map(ProjectUser::getUserId).collect(Collectors.toList());
  206. uids.add(project.getManagerId());
  207. uids.add(project.getCreatorId());
  208. uids.add(-1);
  209. List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("id", uids).isNotNull("openid").eq("is_disable", 0));
  210. if (Constant.ELECTRICITY_THRESHOLD >= Double.parseDouble(mouldEquipment.getHillNumber())) {
  211. if (0 == mouldEquipment.getStage()) {
  212. mouldEquipment.setStage(2);
  213. } else {
  214. mouldEquipment.setStage(3);
  215. }
  216. mouldEquipmentMapper.updateById(mouldEquipment);
  217. //公众号的推送to do
  218. userList.forEach(u -> {
  219. try {
  220. WechatTemplateUtil.sendEmergencyTemplateMessage(u.getOpenid(), mouldEquipment.getEquipmentName(), Constant.ELECTRICITY_TYPE, Constant.ELECTRICITY_CONTENT, token);
  221. } catch (Exception e) {
  222. e.printStackTrace();
  223. }
  224. });
  225. //查询到参与该项目的人
  226. List<Integer> userIds = new ArrayList<>();
  227. userIds.add(-1);
  228. userIds.add(project.getCreatorId());
  229. userIds.add(project.getManagerId());
  230. List<ProjectUser> projectUsers = projectUserMapper.selectList(new QueryWrapper<ProjectUser>().eq("project_id", project.getId()));
  231. for (ProjectUser projectUser : projectUsers) {
  232. userIds.add(projectUser.getUserId());
  233. }
  234. List<ProjectApprove> projectApproves = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("project_id", project.getId()));
  235. for (ProjectApprove projectApprove : projectApproves) {
  236. userIds.add(projectApprove.getApproverId());
  237. }
  238. List<User> users = userMapper.selectList(new QueryWrapper<User>().in("id", userIds));
  239. //查询到之前模具保养的消息
  240. NewsNotice oldNews = newsNoticeMapper.selectOne(new QueryWrapper<NewsNotice>().eq("ref_id", mould.getId()).eq("notice_type", 2));
  241. NewsNotice newsNotice = new NewsNotice();
  242. if (oldNews != null) {
  243. NewsNotice newNews = new NewsNotice();
  244. newNews.setId(oldNews.getId());
  245. oldNews.setIndate(LocalDateTime.now());
  246. newsNoticeMapper.updateById(oldNews);
  247. newsNoticeUserMapper.updateNewsNoticeUserByNewsNoticeId(oldNews.getId());
  248. // for (User u : users) {
  249. // //添加通知的消息
  250. // NewsNoticeUser newsNoticeUser = new NewsNoticeUser();
  251. // newsNoticeUser.setNewsId(oldNews.getId());
  252. // newsNoticeUser.setUserId(u.getId());
  253. // newsNoticeUser.setIsRead(0);
  254. // newsNoticeUserMapper.updateById(newsNoticeUser);
  255. // }
  256. } else {
  257. newsNotice.setNoticeType(Constant.EMERGENCY_TYPE);
  258. newsNotice.setProjectId(project.getId());
  259. newsNotice.setProjectName(project.getProjectName() + "-" + mould.getModelName());
  260. newsNotice.setRefId(mould.getId());
  261. newsNotice.setContent(mouldEquipment.getEquipmentNo() + "-" + Constant.EMERGENCY_ELECTRICITY_NOTICE);
  262. newsNoticeMapper.insert(newsNotice);
  263. for (User u : users) {
  264. //添加通知的消息
  265. NewsNoticeUser newsNoticeUser = new NewsNoticeUser();
  266. newsNoticeUser.setNewsId(newsNotice.getId());
  267. newsNoticeUser.setUserId(u.getId());
  268. newsNoticeUserMapper.insert(newsNoticeUser);
  269. }
  270. }
  271. }
  272. if (Constant.TEMPERATURE_THRESHOLD <= mouldEquipment.getTemperature()) {
  273. if (0 == mouldEquipment.getStage()) {
  274. mouldEquipment.setStage(1);
  275. } else {
  276. mouldEquipment.setStage(3);
  277. }
  278. mouldEquipmentMapper.updateById(mouldEquipment);
  279. //公众号的推送to do
  280. userList.forEach(u -> {
  281. try {
  282. WechatTemplateUtil.sendEmergencyTemplateMessage(u.getOpenid(), mouldEquipment.getEquipmentName(), Constant.TEMPERATURE_TYPE, Constant.TEMPERATURE_CONTENT, token);
  283. } catch (Exception e) {
  284. e.printStackTrace();
  285. }
  286. });
  287. //查询到参与该项目的人
  288. List<Integer> userIds = new ArrayList<>();
  289. userIds.add(-1);
  290. userIds.add(project.getCreatorId());
  291. userIds.add(project.getManagerId());
  292. List<ProjectUser> projectUsers = projectUserMapper.selectList(new QueryWrapper<ProjectUser>().eq("project_id", project.getId()));
  293. for (ProjectUser projectUser : projectUsers) {
  294. userIds.add(projectUser.getUserId());
  295. }
  296. List<ProjectApprove> projectApproves = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("project_id", project.getId()));
  297. for (ProjectApprove projectApprove : projectApproves) {
  298. userIds.add(projectApprove.getApproverId());
  299. }
  300. List<User> users = userMapper.selectList(new QueryWrapper<User>().in("id", userIds));
  301. //查询到之前模具保养的消息
  302. NewsNotice oldNews = newsNoticeMapper.selectOne(new QueryWrapper<NewsNotice>().eq("ref_id", mould.getId()).eq("notice_type", 2));
  303. NewsNotice newsNotice = new NewsNotice();
  304. if (oldNews != null) {
  305. NewsNotice newNews = new NewsNotice();
  306. newNews.setId(oldNews.getId());
  307. oldNews.setIndate(LocalDateTime.now());
  308. newsNoticeMapper.updateById(oldNews);
  309. newsNoticeUserMapper.updateNewsNoticeUserByNewsNoticeId(oldNews.getId());
  310. // for (User u : users) {
  311. // //添加通知的消息
  312. // NewsNoticeUser newsNoticeUser = new NewsNoticeUser();
  313. // newsNoticeUser.setNewsId(oldNews.getId());
  314. // newsNoticeUser.setUserId(u.getId());
  315. // newsNoticeUser.setIsRead(0);
  316. // newsNoticeUserMapper.updateById(newsNoticeUser);
  317. // }
  318. } else {
  319. newsNotice.setNoticeType(Constant.EMERGENCY_TYPE);
  320. newsNotice.setProjectId(project.getId());
  321. newsNotice.setProjectName(project.getProjectName() + "-" + mould.getModelName());
  322. newsNotice.setRefId(mould.getId());
  323. newsNotice.setContent(mouldEquipment.getEquipmentNo() + "-" + Constant.EMERGENCY_TEMPERATURE_NOTICE);
  324. newsNoticeMapper.insert(newsNotice);
  325. for (User u : users) {
  326. //添加通知的消息
  327. NewsNoticeUser newsNoticeUser = new NewsNoticeUser();
  328. newsNoticeUser.setNewsId(newsNotice.getId());
  329. newsNoticeUser.setUserId(u.getId());
  330. newsNoticeUserMapper.insert(newsNoticeUser);
  331. }
  332. }
  333. }
  334. }
  335. return msg;
  336. }
  337. @Override
  338. public HttpRespMsg importMouldEquipmentExcel(MultipartFile file, UserVO userVO) {
  339. HttpRespMsg msg = new HttpRespMsg();
  340. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
  341. if (user != null) {
  342. List<MouldEquipment> mouldEquipments = mouldEquipmentMapper.selectList(new QueryWrapper<MouldEquipment>());
  343. try {
  344. File f = null;
  345. if ("".equals(file) || file.getSize() <= 0) {
  346. file = null;
  347. } else {
  348. //获取输入流
  349. InputStream ins = file.getInputStream();
  350. //新建一个文件
  351. f = new File(file.getOriginalFilename());
  352. //输入流转file
  353. inputStreamToFile(ins, f);
  354. }
  355. //根据文件创建工作簿
  356. XSSFWorkbook wookbook = new XSSFWorkbook(f);
  357. XSSFSheet sheet = wookbook.getSheetAt(0);
  358. int s = sheet.getLastRowNum();
  359. // 遍历当前sheet中的所有行,第一行是数据对应的字段,不是数据,
  360. // 故从第二行开始遍历拿数据(如果有标题的话,则从第三行开始拿数据)
  361. //有对所属公司的解析,先查出所有公司
  362. List<Company> companies = companyMapper.selectList(new QueryWrapper<>());
  363. List<MouldEquipment> allList = new ArrayList<>();
  364. List<String> oldEnoList = new ArrayList<>();
  365. for (int j = 1; j < sheet.getLastRowNum() + 1; j++) {
  366. XSSFRow row = sheet.getRow(j);
  367. //新建云模盒对象
  368. MouldEquipment mouldEquipment = new MouldEquipment();
  369. // 遍历所有的列,下面的10是excle表格里共有10列即对应了10个字段
  370. for (int y = 0; y < 5; y++) {
  371. XSSFCell cell = row.getCell(y);
  372. cell.setCellType(Cell.CELL_TYPE_STRING);
  373. //取出当前列的值
  374. String value = cell.getStringCellValue();
  375. //判断第几列插入数据,后面就是从列中取数据往对象里放,然后插入到数据库里
  376. if (value == null && "".equals(value)) {
  377. log.error("数据不可为空");
  378. msg.setError("数据不可为空");
  379. return msg;
  380. } else if (y == 0) {
  381. //云模编号
  382. for (MouldEquipment p : mouldEquipments) {
  383. if (value.equals(p.getEquipmentNo())) {
  384. // msg.setError("第" + j + "行的云模盒编号:" + value + "已被占用,请修改后重新上传");
  385. msg.setError("云模盒编号("+value+")已被占用,请修改后重新上传");
  386. return msg;
  387. }
  388. }
  389. //检查在本身的excel文件中,是否存在重复的。
  390. if (oldEnoList.contains(value)) {
  391. msg.setError("文档中云模盒编号("+value+")存在重复,请修改后重新上传");
  392. return msg;
  393. }
  394. mouldEquipment.setEquipmentNo(value);
  395. oldEnoList.add(value);
  396. } else if (y == 1) {
  397. //产品编号
  398. mouldEquipment.setEquipmentName(value);
  399. } else if (y == 2) {
  400. //所属公司
  401. if (StringUtils.isNotEmpty(value)) {
  402. Optional<Company> comp = companies.stream().filter(c->c.getCompanyName().equals(value)).findFirst();
  403. if (comp.isPresent()) {//设置公司id
  404. mouldEquipment.setBelongCompanyId(comp.get().getId());
  405. } else {
  406. msg.setError("公司名称不存在: " + value);
  407. }
  408. }
  409. } else if (y == 3) {
  410. //使用年限
  411. mouldEquipment.setUseLife(Integer.parseInt(value));
  412. } else if (y == 4) {
  413. //代理商
  414. mouldEquipment.setAgent(value);
  415. }
  416. }
  417. // mouldEquipmentMapper.insert(mouldEquipment);
  418. allList.add(mouldEquipment);
  419. }
  420. //批量插入数据库
  421. mouldEquipmentMapper.batchInsert(allList);
  422. //用完后删除临时文件
  423. if (!f.isDirectory()) {
  424. f.delete();
  425. }
  426. } catch (Exception e) {
  427. log.error(e.getMessage(), e);
  428. msg.setError(e.getMessage());
  429. return msg;
  430. }
  431. } else {
  432. msg.setError("用户不存在或者未登录");
  433. }
  434. return msg;
  435. }
  436. @Override
  437. public HttpRespMsg getEquipmentListByOldMouldAndUser(UserVO userVO) {
  438. HttpRespMsg msg = new HttpRespMsg();
  439. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
  440. if (user == null) {
  441. msg.setError("用户不存在或者未登录");
  442. } else {
  443. Mould mould = mouldMapper.selectById(userVO.getMouldId());
  444. User admin = userMapper.selectById(projectMapper.selectById(mould.getProjectId()).getCreatorId());
  445. List<Integer> mouldsEquipmentIds = mouldMapper.selectList(new QueryWrapper<Mould>().eq("company_id", admin.getCompanyId()).isNotNull("equipment_id")).stream().map(Mould::getEquipmentId).collect(Collectors.toList());
  446. mouldsEquipmentIds.add(-1);
  447. List<Integer> equipmentIds = mouldEquipmentMapper.selectList(new QueryWrapper<MouldEquipment>().eq("belong_company_id", admin.getCompanyId()).eq("stage", 0)).stream().map(MouldEquipment::getId).collect(Collectors.toList());
  448. equipmentIds.removeAll(mouldsEquipmentIds);//把已经使用的设备剔除
  449. equipmentIds.add(-1);
  450. List<MouldEquipmentVO> list = mouldEquipmentMapper.getListByCompanyId(admin.getCompanyId(), equipmentIds);
  451. msg.data = list;
  452. }
  453. return msg;
  454. }
  455. @Override
  456. public HttpRespMsg changeIp(ChangeIpCommand changeIpCommand) {
  457. HttpRespMsg msg = new HttpRespMsg();
  458. //验证服务器ip是否满足正则表达式
  459. if(!changeIpCommand.getIp().matches(Constant.IP_MATCH_REGULAR)){
  460. msg.setError("服务器ip不合法");
  461. return msg;
  462. }
  463. changeIpCommandMapper.insert(changeIpCommand);
  464. return msg;
  465. }
  466. /**
  467. * 输入流转file
  468. *
  469. * @param ins
  470. * @param file
  471. */
  472. public static void inputStreamToFile(InputStream ins, File file) {
  473. try {
  474. OutputStream os = new FileOutputStream(file);
  475. int bytesRead = 0;
  476. byte[] buffer = new byte[8192];
  477. while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
  478. os.write(buffer, 0, bytesRead);
  479. }
  480. os.close();
  481. ins.close();
  482. } catch (Exception e) {
  483. e.printStackTrace();
  484. }
  485. }
  486. // 下行配置数据包
  487. private String downProcessMsg(String lowPowerLimit, String hotAlarmLimit, String isUse, String freeInterval, String workInterval) {
  488. //"23"不解析
  489. if ("23".equals(lowPowerLimit)) {
  490. lowPowerLimit = "24";
  491. }
  492. if ("23".equals(hotAlarmLimit)) {
  493. hotAlarmLimit = "24";
  494. }
  495. if ("23".equals(freeInterval)) {
  496. freeInterval = "24";
  497. }
  498. if ("23".equals(workInterval)) {
  499. workInterval = "24";
  500. }
  501. if ("23".equals(isUse)) {
  502. isUse = "24";
  503. }
  504. StringBuilder sb = new StringBuilder();
  505. //FAAF0007021e781e50003C
  506. sb.append("FAAF0007");
  507. sb.append(isUse);
  508. sb.append(workInterval);
  509. sb.append(freeInterval);
  510. sb.append(lowPowerLimit);
  511. sb.append(hotAlarmLimit);
  512. sb.append("003C");
  513. String crcCode = CRC16Util.getCRC(sb.toString());
  514. System.out.println("ret===>" + sb.toString());
  515. String lastPart = (sb.toString() + crcCode).replaceAll("23", "24").replaceAll(" ", "");
  516. System.out.println("lastPart===>" + lastPart);
  517. return lastPart;
  518. }
  519. }