package com.ld.igds.view.manager; import com.ld.igds.common.CoreSerService; import com.ld.igds.constant.BizType; import com.ld.igds.constant.Constant; import com.ld.igds.constant.RedisConst; import com.ld.igds.grain.dto.GrainSerCableData; import com.ld.igds.io.RemoteCommonService; import com.ld.igds.io.RemoteManager; import com.ld.igds.io.constant.OrderRespEnum; import com.ld.igds.io.request.BaseRequest; import com.ld.igds.io.request.GrainSerConfRequest; import com.ld.igds.io.response.BaseResponse; import com.ld.igds.models.DeviceSer; import com.ld.igds.order.ExeOrderService; import com.ld.igds.order.data.ExeRequest; import com.ld.igds.util.RedisUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; /** * 系统管理-粮情分机管理 * * @author andy.jia */ @Component(SysGrainMacManager.BEAN_ID) public class SysGrainMacManager { public static final String BEAN_ID = "sys.grainMacManager"; @Autowired private RemoteManager remoteManager; @Autowired private ExeOrderService exeOrderService; @Autowired private RedisUtil redisUtil; @Autowired private CoreSerService coreSerService; private RemoteCommonService remoteCommonService; /** * 读取粮情分机配置参数 * * @param data * @return */ public String readConf(DeviceSer data) { if (StringUtils.isEmpty(data.getProtocol())) { return "执行失败,当前分机未配置协议!"; } try { GrainSerConfRequest request = new GrainSerConfRequest(); request.setCompanyId(data.getCompanyId()); request.setCableX(data.getCableX()); request.setCableY(data.getCableY()); request.setCableZ(data.getCableZ()); request.setIp(data.getIp()); request.setPort(data.getPort()); request.setBizType(BizType.SYS.getCode()); request.setSerId(data.getId()); request.setCableFormat(data.getCableFormat()); request.setCableType(data.getCableType()); request.setPowerModel(data.getPowerModel()); request.setOrgId(data.getOrgId()); // 避免重复发送命令和添加操作记录 ExeRequest exeRequest = new ExeRequest(request); exeOrderService.checkExecute(exeRequest); remoteCommonService = remoteManager.getRemoteCommonService(data .getProtocol()); if (null == remoteCommonService) { return "执行失败,当前分机配置的协议系统没有实现。"; } BaseResponse result = remoteCommonService.readConf(request); // 添加缓存 if (OrderRespEnum.ORDER_SUCCESS.getCode().equals(result.getCode())) { exeOrderService.addCache(exeRequest); return "指令发送成功,待终端执行反馈。"; } return "指令发送失败,原因:" + result.getMsg(); } catch (Exception e) { return "系统执行异常,原因:" + e.getMessage(); } } /** * @param data * @return */ public String writeConf(DeviceSer data) { if (StringUtils.isEmpty(data.getProtocol())) { return "执行失败,当前分机未配置协议!"; } if (data.getCableX() == 0 || data.getCableY() == 0 || data.getCableZ() == 0) { return "执行失败,层行列信息未配置!"; } if (StringUtils.isEmpty(data.getCableFormat()) || StringUtils.isEmpty(data.getCableType())) { return "执行失败,电缆制式和电缆类型必填!"; } try { GrainSerConfRequest request = new GrainSerConfRequest(); request.setCompanyId(data.getCompanyId()); request.setCableX(data.getCableX()); request.setCableY(data.getCableY()); request.setCableZ(data.getCableZ()); request.setIp(data.getIp()); request.setPort(data.getPort()); request.setBizType(BizType.SYS.getCode()); request.setSerId(data.getId()); request.setCableFormat(data.getCableFormat()); request.setCableType(data.getCableType()); // request.setPowerModel(data.getPowerModel()); request.setOrgId(data.getOrgId()); request.setSerName(data.getName()); // 避免重复发送命令和添加操作记录 ExeRequest exeRequest = new ExeRequest(request); exeOrderService.checkExecute(exeRequest); remoteCommonService = remoteManager.getRemoteCommonService(data .getProtocol()); if (null == remoteCommonService) { return "执行失败,当前分机配置的协议系统没有实现。"; } BaseResponse result = remoteCommonService.writeConf(request); // 添加缓存 if (OrderRespEnum.ORDER_SUCCESS.getCode().equals(result.getCode())) { exeOrderService.addCache(exeRequest); return "指令发送成功,待终端执行反馈。"; } return "指令发送失败,原因:" + result.getMsg(); } catch (Exception e) { return "系统执行异常,原因:" + e.getMessage(); } } /** * 初始化电缆 * * @param data * @return */ public String initCable(DeviceSer data) { if (StringUtils.isEmpty(data.getProtocol())) { return "执行失败,当前分机未配置协议!"; } try { BaseRequest request = new BaseRequest(); request.setCompanyId(data.getCompanyId()); request.setIp(data.getIp()); request.setPort(data.getPort()); request.setBizType(BizType.SYS.getCode()); request.setSerId(data.getId()); // 避免重复发送命令和添加操作记录 ExeRequest exeRequest = new ExeRequest(request); exeOrderService.checkExecute(exeRequest); remoteCommonService = remoteManager.getRemoteCommonService(data .getProtocol()); if (null == remoteCommonService) { return "执行失败,当前分机配置的协议系统没有实现。"; } BaseResponse result = remoteCommonService.initCable(request); // 添加缓存 if (OrderRespEnum.ORDER_SUCCESS.getCode().equals(result.getCode())) { exeOrderService.addCache(exeRequest); return "指令发送成功,待终端执行反馈。"; } return "指令发送失败,原因:" + result.getMsg(); } catch (Exception e) { return "系统执行异常,原因:" + e.getMessage(); } } /** * 手动端口连接 * * @param data * @return */ public String destoryCon(DeviceSer data) { if (StringUtils.isEmpty(data.getProtocol())) { return "执行失败,当前分机未配置协议!"; } try { BaseRequest request = new BaseRequest(); request.setCompanyId(data.getCompanyId()); request.setIp(data.getIp()); request.setPort(data.getPort()); request.setBizType(BizType.SYS.getCode()); request.setSerId(data.getId()); // 避免重复发送命令和添加操作记录 ExeRequest exeRequest = new ExeRequest(request); exeOrderService.checkExecute(exeRequest); remoteCommonService = remoteManager.getRemoteCommonService(data .getProtocol()); if (null == remoteCommonService) { return "执行失败,当前分机配置的协议系统没有实现。"; } BaseResponse result = remoteCommonService.destroyCon(request); // 添加缓存 if (OrderRespEnum.ORDER_SUCCESS.getCode().equals(result.getCode())) { exeOrderService.addCache(exeRequest); return "指令发送成功,请刷新页面查看在线状态!"; } return "指令发送失败,原因:" + result.getMsg(); } catch (Exception e) { return "系统执行异常,原因:" + e.getMessage(); } } /** * 粮情分机-电缆配置 * * @param request */ public String updateGrainSerCable(GrainSerConfRequest request) { // 获取分机信息 DeviceSer ser = coreSerService.getCacheSer(request.getCompanyId(), request.getSerId()); if (null == ser) { return "系统没有找到相应的分机信息,执行失败!"; } if (Constant.YN_N.equals(ser.getStatus())) { return "当前分机不在线!"; } request.setSerName(ser.getName()); request.setIp(ser.getIp()); request.setPort(ser.getPort()); request.setBizType(BizType.SYS.getCode()); // 避免重复发送命令和添加操作记录 ExeRequest exeRequest = new ExeRequest(request); exeRequest.setAddLogTag(false); exeOrderService.checkExecute(exeRequest); remoteCommonService = remoteManager.getRemoteCommonService(ser .getProtocol()); if (null == remoteCommonService) { return "执行失败,当前分机配置的协议系统没有实现。"; } BaseResponse result = remoteCommonService.updateGrainSerCable(request); // 添加缓存 if (OrderRespEnum.ORDER_SUCCESS.getCode().equals(result.getCode())) { // exeOrderService.addCache(exeRequest); return "指令发送成功,请刷新页面查看在线状态!"; } return "指令发送失败,原因:" + result.getMsg(); } /** * 粮情电缆数据采集 * * @param request * @return */ public String checkGrainCable(GrainSerConfRequest request) { // 获取分机信息 DeviceSer ser = coreSerService.getCacheSer(request.getCompanyId(), request.getSerId()); if (null == ser) { return "系统没有找到相应的分机信息,执行失败!"; } if (Constant.YN_N.equals(ser.getStatus())) { return "当前分机不在线!"; } request.setSerName(ser.getName()); request.setIp(ser.getIp()); request.setPort(ser.getPort()); request.setBizType(BizType.SYS.getCode()); // 避免重复发送命令和添加操作记录 ExeRequest exeRequest = new ExeRequest(request); exeRequest.setAddLogTag(false); exeOrderService.checkExecute(exeRequest); remoteCommonService = remoteManager.getRemoteCommonService(ser .getProtocol()); if (null == remoteCommonService) { return "执行失败,当前分机配置的协议系统没有实现。"; } BaseResponse result = remoteCommonService.checkGrainSerCable(request); // 添加缓存 if (OrderRespEnum.ORDER_SUCCESS.getCode().equals(result.getCode())) { exeOrderService.addCache(exeRequest); return "SUCCESS=指令发送成功,请耐心等待结果返回!"; } return "指令发送失败,原因:" + result.getMsg(); } public String sumGrainCable(GrainSerConfRequest request) { // 获取分机信息 DeviceSer ser = coreSerService.getCacheSer(request.getCompanyId(), request.getSerId()); if (null == ser) { return "系统没有找到相应的分机信息,执行失败!"; } if (Constant.YN_N.equals(ser.getStatus())) { return "当前分机不在线!"; } request.setSerName(ser.getName()); request.setIp(ser.getIp()); request.setPort(ser.getPort()); request.setBizType(BizType.SYS.getCode()); // 避免重复发送命令和添加操作记录 ExeRequest exeRequest = new ExeRequest(request); exeRequest.setAddLogTag(false); exeOrderService.checkExecute(exeRequest); remoteCommonService = remoteManager.getRemoteCommonService(ser .getProtocol()); if (null == remoteCommonService) { return "执行失败,当前分机配置的协议系统没有实现。"; } BaseResponse result = remoteCommonService.sumGrainSerCable(request); // 添加缓存 if (OrderRespEnum.ORDER_SUCCESS.getCode().equals(result.getCode())) { exeOrderService.addCache(exeRequest); return "SUCCESS=指令发送成功,请耐心等待结果返回!"; } return "指令发送失败,原因:" + result.getMsg(); } /** * 根据参数获取 分机-通道-电缆数据 * * @param companyId * @param serId * @param passCode * @return */ @SuppressWarnings("unchecked") public List listSerCableData(String companyId, String serId, Integer passCode) { String redisKey = RedisConst.buildKey(companyId, RedisConst.KEY_TEMP_PREFIX, "CABLE_DATA_" + serId); if (null != passCode) {// 表示获取汇数据 redisKey = RedisConst.buildKey(companyId, RedisConst.KEY_TEMP_PREFIX, "CABLE_DATA_" + serId + "_" + passCode); } return (List) redisUtil.get(redisKey); } /** * 更新粮库子系统中的仓库配置列表 * * @param companyId * @param serId * @param sn * @return */ public String updateSysDepotConf(String companyId, String serId, String sn) { // 获取分机信息 DeviceSer ser = coreSerService.getCacheSer(companyId, serId); if (null == ser) { return "系统没有找到相应的分机信息,执行失败!"; } if (Constant.YN_N.equals(ser.getStatus())) { return "当前分机不在线!"; } BaseRequest request = new BaseRequest(); request.setSerName(ser.getName()); request.setIp(ser.getIp()); request.setPort(ser.getPort()); request.setCompanyId(serId); request.setBizType(BizType.SYS.getCode()); remoteCommonService = remoteManager.getRemoteCommonService(ser .getProtocol()); if (null == remoteCommonService) { return "执行失败,当前分机配置的协议系统没有实现。"; } BaseResponse result = remoteCommonService.updateSysDepotConf(request); // 添加缓存 if (OrderRespEnum.ORDER_SUCCESS.getCode().equals(result.getCode())) { return "SUCCESS=指令发送成功,请耐心等待结果返回!"; } return "指令发送失败,原因:" + result.getMsg(); } }