package com.ld.igds.n2.manager; import com.ld.igds.common.CoreCommonService; import com.ld.igds.common.CoreSerService; import com.ld.igds.constant.BizType; import com.ld.igds.constant.Constant; 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.AccessRequest; import com.ld.igds.io.request.BaseRequest; import com.ld.igds.io.request.DepotStatusRequest; import com.ld.igds.io.response.BaseResponse; import com.ld.igds.models.DepotConf; import com.ld.igds.models.DeviceSer; import com.ld.igds.order.ExeOrderService; import com.ld.igds.order.data.ExeRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class BasicSystemManager { @Autowired private RemoteManager remoteManager; @Autowired private CoreSerService coreSerService; @Autowired private ExeOrderService exeOrderService; @Autowired private CoreCommonService coreCommonService; /** * 远程获取设备信息 * * @param companyId * @param serId * @return */ public String pullDevice(String companyId, String serId) { DeviceSer ser = coreSerService.getCacheSer(companyId, serId); if (null == ser) { return "执行失败,系统中没有获取到当前分机信息。"; } if (Constant.YN_N.equals(ser.getStatus())) { return "执行失败,当前分机已经掉线,不支持当前操作。"; } BaseRequest request = new BaseRequest(); request.setIp(ser.getIp()); request.setSerName(ser.getName()); request.setPort(ser.getPort()); request.setCompanyId(ser.getCompanyId()); request.setBizType(BizType.SYS.getCode()); request.setSerId(ser.getId()); RemoteCommonService remoteCommonService = remoteManager.getRemoteCommonService(ser.getProtocol()); if (null == remoteCommonService) { return "执行失败,系统没有没有匹配到当前分机的实现协议,无法执行。"; } ExeRequest exeRequest = new ExeRequest(request); exeRequest.setAddLogTag(true); exeRequest.setRepeatTag(true); exeRequest.setMsg("执行远程同步设备信息"); BaseResponse response = remoteCommonService.pullDevice(request); if (OrderRespEnum.ORDER_SUCCESS.getCode().equals(response.getCode())) { exeOrderService.checkExecute(exeRequest); return null; } return "执行失败,原因:" + response.getMsg(); } /** * 平台获取控制柜仓房信息 * * @param companyId * @param serId * @return */ public String pullDepot(String companyId, String serId) { DeviceSer ser = coreSerService.getCacheSer(companyId, serId); if (null == ser) { return "执行失败,系统中没有获取到当前分机信息。"; } if (Constant.YN_N.equals(ser.getStatus())) { return "执行失败,当前分机已经掉线,不支持当前操作。"; } BaseRequest request = new BaseRequest(); request.setIp(ser.getIp()); request.setSerName(ser.getName()); request.setPort(ser.getPort()); request.setCompanyId(ser.getCompanyId()); request.setBizType(BizType.SYS.getCode()); request.setSerId(ser.getId()); RemoteCommonService remoteCommonService = remoteManager.getRemoteCommonService(ser.getProtocol()); if (null == remoteCommonService) { return "执行失败,系统没有没有匹配到当前分机的实现协议,无法执行。"; } ExeRequest exeRequest = new ExeRequest(request); exeRequest.setAddLogTag(true); exeRequest.setRepeatTag(true); exeRequest.setMsg("执行远程同步仓库信息"); BaseResponse response = remoteCommonService.pullDepot(request); if (OrderRespEnum.ORDER_SUCCESS.getCode().equals(response.getCode())) { exeOrderService.checkExecute(exeRequest); return null; } return "执行失败,原因:" + response.getMsg(); } public String pullAccess(String companyId, String serId, String accessCode) { DeviceSer ser = coreSerService.getCacheSer(companyId, serId); if (null == ser) { return "执行失败,系统中没有获取到当前分机信息。"; } if (Constant.YN_N.equals(ser.getStatus())) { return "执行失败,当前分机已经掉线,不支持当前操作。"; } AccessRequest request = new AccessRequest(); request.setIp(ser.getIp()); request.setSerName(ser.getName()); request.setPort(ser.getPort()); request.setCompanyId(ser.getCompanyId()); request.setBizType(BizType.SYS.getCode()); request.setSerId(ser.getId()); request.setAccessCode(accessCode); RemoteCommonService remoteCommonService = remoteManager.getRemoteCommonService(ser.getProtocol()); if (null == remoteCommonService) { return "执行失败,系统没有没有匹配到当前分机的实现协议,无法执行。"; } ExeRequest exeRequest = new ExeRequest(request); exeRequest.setAddLogTag(true); exeRequest.setRepeatTag(true); exeRequest.setMsg("执行远程控制柜授权操作"); BaseResponse response = remoteCommonService.pullAccess(request); if (OrderRespEnum.ORDER_SUCCESS.getCode().equals(response.getCode())) { exeOrderService.checkExecute(exeRequest); return null; } return "执行失败,原因:" + response.getMsg(); } /** * 更新 仓库状态,同时推送仓库状态 * @return */ public String updateDepotStatus(String companyId,String depotId,String status) { coreCommonService.updateDepotStatus(companyId,depotId,status); //执行推送 DepotConf depotConf = coreCommonService.getCacheDepotConf(companyId,depotId); if(null == depotConf) return "状态更新成功,未同步远程控制柜!"; DeviceSer ser = coreSerService.getCacheSer(depotConf.getCompanyId(), depotConf.getGrainSer()); if (null == ser) { return "状态更新成功,未同步远程控制柜!"; } if (Constant.YN_N.equals(ser.getStatus())) { return "状态更新成功,风机不在线,未同步远程控制柜!"; } DepotStatusRequest request = new DepotStatusRequest(); request.setIp(ser.getIp()); request.setSerName(ser.getName()); request.setPort(ser.getPort()); request.setCompanyId(ser.getCompanyId()); request.setBizType(BizType.SYS.getCode()); request.setSerId(ser.getId()); request.setStatus(status); request.setDepotId(depotConf.getDepotId()); request.setDepotName(depotConf.getDepotName()); RemoteCommonService remoteCommonService = remoteManager.getRemoteCommonService(ser.getProtocol()); if (null == remoteCommonService) { return "状态更新成功,未同步远程控制柜!"; } ExeRequest exeRequest = new ExeRequest(request); exeRequest.setAddLogTag(true); exeRequest.setRepeatTag(true); exeRequest.setMsg("修改仓库状态,系统自动更新远程仓库状态"); BaseResponse response = remoteCommonService.pullDepotStatus(request); if (OrderRespEnum.ORDER_SUCCESS.getCode().equals(response.getCode())) { exeOrderService.checkExecute(exeRequest); return null; } return "状态更新成功,远程推送控制柜失败:"+response.getMsg(); } }