Compare commits
9 Commits
9d2b4b97f9
...
2025-10
| Author | SHA1 | Date | |
|---|---|---|---|
| b7574b2916 | |||
| 43bdcbf623 | |||
| 629ba0746a | |||
| b86c81d70a | |||
| d10240758b | |||
| 995bd8b310 | |||
| 9531e18e93 | |||
| 753a22eb4c | |||
| 814b5757fd |
@@ -1,18 +1,13 @@
|
||||
package com.njcn.csdevice.api;
|
||||
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.constant.ServerInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.csdevice.api.fallback.CsLedgerFeignClientFallbackFactory;
|
||||
import com.njcn.csdevice.pojo.dto.DevDetailDTO;
|
||||
import com.njcn.csdevice.pojo.dto.LineParamDTO;
|
||||
import com.njcn.csdevice.pojo.param.CsLedgerParam;
|
||||
import com.njcn.csdevice.pojo.po.CsLedger;
|
||||
import com.njcn.csdevice.pojo.vo.CsLedgerVO;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
package com.njcn.csdevice.api;
|
||||
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.constant.ServerInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.csdevice.api.fallback.CsLineClientFallbackFactory;
|
||||
import com.njcn.csdevice.pojo.param.CsLineParam;
|
||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@@ -51,4 +45,7 @@ public interface CsLineFeignClient {
|
||||
|
||||
@PostMapping("/getLinesByDevList")
|
||||
HttpResult<List<CsLinePO>> getLinesByDevList(@RequestBody List<String> ids);
|
||||
|
||||
@PostMapping("/updateLineDataByList")
|
||||
HttpResult<String> updateDataByList(@RequestParam("list") List<String> list, @RequestParam("id") String id, @RequestParam("setId") String setId);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.csdevice.api;
|
||||
|
||||
import com.njcn.common.pojo.constant.ServerInfo;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.csdevice.api.fallback.CsTerminalLogsClientFallbackFactory;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/csTerminalLogs", fallbackFactory = CsTerminalLogsClientFallbackFactory.class,contextId = "csTerminalLogs")
|
||||
|
||||
public interface CsTerminalLogsFeignClient {
|
||||
|
||||
@PostMapping("/updateLaterData")
|
||||
HttpResult<String> updateLaterData(@RequestParam("id") String id, @RequestParam("code") String code);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.njcn.csdevice.api;
|
||||
|
||||
import com.njcn.common.pojo.constant.ServerInfo;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.csdevice.api.fallback.CsTerminalReplyClientFallbackFactory;
|
||||
import com.njcn.csdevice.param.IcdBzReplyParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/csTerminalReply", fallbackFactory = CsTerminalReplyClientFallbackFactory.class,contextId = "csTerminalReply")
|
||||
|
||||
public interface CsTerminalReplyFeignClient {
|
||||
|
||||
@PostMapping("/updateData")
|
||||
@ApiOperation("更新推送结果")
|
||||
HttpResult<String> updateData(@RequestBody @Validated IcdBzReplyParam param);
|
||||
|
||||
|
||||
@PostMapping("/updateBzData")
|
||||
@ApiOperation("更新补召推送结果")
|
||||
HttpResult<String> updateBzData(@RequestBody @Validated IcdBzReplyParam param);
|
||||
|
||||
|
||||
}
|
||||
@@ -28,4 +28,7 @@ public interface DevModelRelationFeignClient {
|
||||
@PostMapping("/getModelByType")
|
||||
HttpResult<String> getModelByType(@RequestParam("devId") String devId, @RequestParam("type") Integer type);
|
||||
|
||||
@PostMapping("/updateDataByList")
|
||||
HttpResult<String> updateDataByList(@RequestParam("list") List<String> list, @RequestParam("id") String id);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.njcn.csdevice.api;
|
||||
|
||||
import com.njcn.common.pojo.constant.ServerInfo;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.csdevice.api.fallback.CsTerminalLogsClientFallbackFactory;
|
||||
import com.njcn.csdevice.api.fallback.IcdFallbackFactory;
|
||||
import com.njcn.csdevice.param.IcdBzParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/icd", fallbackFactory = IcdFallbackFactory.class,contextId = "icd")
|
||||
|
||||
public interface IcdFeignClient {
|
||||
|
||||
@PostMapping("/bzEvent")
|
||||
@ApiOperation("补召事件")
|
||||
HttpResult<String> bzEvent(@RequestBody @Validated IcdBzParam param);
|
||||
|
||||
@PostMapping("/bzFile")
|
||||
@ApiOperation("补召波形")
|
||||
HttpResult<String> bzFile(@RequestBody @Validated IcdBzParam param);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.njcn.csdevice.api;
|
||||
|
||||
import com.njcn.common.pojo.constant.ServerInfo;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.csdevice.api.fallback.NodeFallbackFactory;
|
||||
import com.njcn.csdevice.pojo.po.Node;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/node", fallbackFactory = NodeFallbackFactory.class,contextId = "node")
|
||||
public interface NodeFeignClient {
|
||||
|
||||
@ApiOperation("获取全部前置机")
|
||||
@GetMapping("/nodeAllList")
|
||||
HttpResult<List<Node>> nodeAllList();
|
||||
|
||||
|
||||
}
|
||||
@@ -80,6 +80,12 @@ public class CsLineClientFallbackFactory implements FallbackFactory<CsLineFeignC
|
||||
log.error("{}异常,降级处理,异常为:{}","根据装置id集合获取监测点id集合",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HttpResult<String> updateDataByList(List<String> list, String id, String setId) {
|
||||
log.error("{}异常,降级处理,异常为:{}","根据装置集合修改监测点信息",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.njcn.csdevice.api.fallback;
|
||||
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.csdevice.api.CsTerminalLogsFeignClient;
|
||||
import feign.hystrix.FallbackFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class CsTerminalLogsClientFallbackFactory implements FallbackFactory<CsTerminalLogsFeignClient> {
|
||||
@Override
|
||||
public CsTerminalLogsFeignClient create(Throwable cause) {
|
||||
//判断抛出异常是否为解码器抛出的业务异常
|
||||
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
|
||||
if (cause.getCause() instanceof BusinessException) {
|
||||
BusinessException businessException = (BusinessException) cause.getCause();
|
||||
}
|
||||
Enum<?> finalExceptionEnum = exceptionEnum;
|
||||
return new CsTerminalLogsFeignClient() {
|
||||
@Override
|
||||
public HttpResult<String> updateLaterData(String id, String code) {
|
||||
log.error("{}异常,降级处理,异常为:{}","更新最新一组数据的推送状态",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.njcn.csdevice.api.fallback;
|
||||
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.csdevice.api.CsTerminalReplyFeignClient;
|
||||
import com.njcn.csdevice.param.IcdBzReplyParam;
|
||||
import feign.hystrix.FallbackFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class CsTerminalReplyClientFallbackFactory implements FallbackFactory<CsTerminalReplyFeignClient> {
|
||||
@Override
|
||||
public CsTerminalReplyFeignClient create(Throwable cause) {
|
||||
//判断抛出异常是否为解码器抛出的业务异常
|
||||
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
|
||||
if (cause.getCause() instanceof BusinessException) {
|
||||
BusinessException businessException = (BusinessException) cause.getCause();
|
||||
}
|
||||
Enum<?> finalExceptionEnum = exceptionEnum;
|
||||
return new CsTerminalReplyFeignClient() {
|
||||
|
||||
@Override
|
||||
public HttpResult<String> updateData(IcdBzReplyParam param) {
|
||||
log.error("{}异常,降级处理,异常为:{}","更新推送结果异常",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HttpResult<String> updateBzData(IcdBzReplyParam param) {
|
||||
log.error("{}异常,降级处理,异常为:{}","更新补召推送结果异常",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -46,6 +46,12 @@ public class DevModelRelationFeignClientFallbackFactory implements FallbackFacto
|
||||
log.error("{}异常,降级处理,异常为:{}","根据装置类型查询模板",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HttpResult<String> updateDataByList(List<String> list, String id) {
|
||||
log.error("{}异常,降级处理,异常为:{}","根据装置集合修改模板信息",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.njcn.csdevice.api.fallback;
|
||||
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.csdevice.api.IcdFeignClient;
|
||||
import com.njcn.csdevice.param.IcdBzParam;
|
||||
import feign.hystrix.FallbackFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class IcdFallbackFactory implements FallbackFactory<IcdFeignClient> {
|
||||
@Override
|
||||
public IcdFeignClient create(Throwable cause) {
|
||||
//判断抛出异常是否为解码器抛出的业务异常
|
||||
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
|
||||
if (cause.getCause() instanceof BusinessException) {
|
||||
BusinessException businessException = (BusinessException) cause.getCause();
|
||||
}
|
||||
Enum<?> finalExceptionEnum = exceptionEnum;
|
||||
return new IcdFeignClient() {
|
||||
@Override
|
||||
public HttpResult<String> bzEvent(IcdBzParam param) {
|
||||
log.error("{}异常,降级处理,异常为:{}","定时补召事件异常",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HttpResult<String> bzFile(IcdBzParam param) {
|
||||
log.error("{}异常,降级处理,异常为:{}","定时补召波形异常",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.njcn.csdevice.api.fallback;
|
||||
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.csdevice.api.NodeFeignClient;
|
||||
import com.njcn.csdevice.pojo.po.Node;
|
||||
import feign.hystrix.FallbackFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class NodeFallbackFactory implements FallbackFactory<NodeFeignClient> {
|
||||
@Override
|
||||
public NodeFeignClient create(Throwable cause) {
|
||||
//判断抛出异常是否为解码器抛出的业务异常
|
||||
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
|
||||
if (cause.getCause() instanceof BusinessException) {
|
||||
BusinessException businessException = (BusinessException) cause.getCause();
|
||||
}
|
||||
Enum<?> finalExceptionEnum = exceptionEnum;
|
||||
return new NodeFeignClient() {
|
||||
|
||||
@Override
|
||||
public HttpResult<List<Node>> nodeAllList() {
|
||||
log.error("{}异常,降级处理,异常为:{}","获取全部前置机异常",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -58,7 +58,7 @@ public interface DataParam {
|
||||
|
||||
String GOVERNANCE_SYSTEM = "治理系统";
|
||||
|
||||
String cldDev = "云前置设备";
|
||||
String cldDev = "在线设备";
|
||||
|
||||
String EvtParamPhase = "Evt_Param_Phase";
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.njcn.csdevice.param;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Data
|
||||
public class IcdBzParam implements Serializable {
|
||||
|
||||
@ApiModelProperty("监测点集合")
|
||||
private List<String> lineList;
|
||||
|
||||
@ApiModelProperty("开始时间")
|
||||
private String startTime;
|
||||
|
||||
@ApiModelProperty("结束时间")
|
||||
private String endTime;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.njcn.csdevice.param;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Data
|
||||
public class IcdBzReplyParam implements Serializable {
|
||||
|
||||
@ApiModelProperty("guid")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("状态")
|
||||
private Integer state;
|
||||
|
||||
@ApiModelProperty("设备id")
|
||||
private String deviceId;
|
||||
|
||||
@ApiModelProperty("监测点id")
|
||||
private String lineId;
|
||||
|
||||
@ApiModelProperty("响应码")
|
||||
private Integer code;
|
||||
|
||||
@ApiModelProperty("响应消息")
|
||||
private String msg;
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import com.njcn.csdevice.pojo.param.AppProjectAddParm;
|
||||
import com.njcn.csdevice.pojo.param.CsEngineeringAddParm;
|
||||
import com.njcn.csdevice.pojo.param.CsEquipmentDeliveryAddParm;
|
||||
import com.njcn.csdevice.pojo.param.CsLineParam;
|
||||
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@@ -30,6 +31,9 @@ public class IcdLedgerParam implements Serializable {
|
||||
@ApiModelProperty("设备和mac关系")
|
||||
private Map<String,String> devMacMap;
|
||||
|
||||
@ApiModelProperty("设备mac和设备信息关系")
|
||||
private Map<String, CsEquipmentDeliveryPO> devMap;
|
||||
|
||||
@ApiModelProperty("工程信息")
|
||||
private CsEngineeringAddParm engineering;
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.csdevice.param;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Data
|
||||
public class IcdNodeParam implements Serializable {
|
||||
|
||||
@ApiModelProperty("设备id")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("前置服务器id")
|
||||
private String nodeId;
|
||||
|
||||
@ApiModelProperty("进程号")
|
||||
private Integer processNo;
|
||||
}
|
||||
@@ -13,9 +13,9 @@ import java.util.List;
|
||||
@Data
|
||||
public class IcdParam implements Serializable {
|
||||
|
||||
@ApiModelProperty("前置ip,不传时查询所有的终端台账信息")
|
||||
@NotBlank(message = "前置ip不可为空")
|
||||
private String ip;
|
||||
@ApiModelProperty("前置id,不传时查询所有的终端台账信息")
|
||||
@NotBlank(message = "前置id不可为空")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("终端运行状态,不传则查询所有的终端信息 (0:运行;1:检修;2:停运;3:调试;4:退运)")
|
||||
private List<Integer> runFlag;
|
||||
|
||||
@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
@@ -53,21 +55,25 @@ public class CsLineParam extends BaseEntity {
|
||||
/**
|
||||
* PT一次变比
|
||||
*/
|
||||
@Min(value = 1, message = "PT一次变比必须大于等于1")
|
||||
private Double ptRatio;
|
||||
|
||||
/**
|
||||
* PT二次变比
|
||||
*/
|
||||
@Min(value = 1, message = "PT二次变比必须大于等于1")
|
||||
private Double pt2Ratio;
|
||||
|
||||
/**
|
||||
* CT一次变比
|
||||
*/
|
||||
@Min(value = 1, message = "CT一次变比必须大于等于1")
|
||||
private Double ctRatio;
|
||||
|
||||
/**
|
||||
* CT二次变比
|
||||
*/
|
||||
@Min(value = 1, message = "CT二次变比必须大于等于1")
|
||||
private Double ct2Ratio;
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.njcn.csdevice.pojo.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.njcn.db.bo.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2025-09-26
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("cs_terminal_logs")
|
||||
public class CsTerminalLogs extends BaseEntity implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 设备id
|
||||
*/
|
||||
private String deviceId;
|
||||
|
||||
/**
|
||||
* 设备名称
|
||||
*/
|
||||
private String deviceName;
|
||||
|
||||
/**
|
||||
* 监测点id
|
||||
*/
|
||||
private String lineId;
|
||||
|
||||
/**
|
||||
* 前置服务器id
|
||||
*/
|
||||
private String nodeId;
|
||||
|
||||
/**
|
||||
* 进程号
|
||||
*/
|
||||
private Integer nodeProcess;
|
||||
|
||||
/**
|
||||
* 操作类型(0:新增 1:修改 2:删除)
|
||||
*/
|
||||
private Integer operateType;
|
||||
|
||||
/**
|
||||
* 是否推送(0未推送 1已推送)
|
||||
*/
|
||||
private Integer isPush;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.njcn.csdevice.pojo.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.njcn.db.bo.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2025-10-09
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("cs_terminal_reply")
|
||||
public class CsTerminalReply extends BaseEntity implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 消息id
|
||||
*/
|
||||
private String replyId;
|
||||
|
||||
/**
|
||||
* 操作类型
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 前置id
|
||||
*/
|
||||
private String nodeId;
|
||||
|
||||
/**
|
||||
* 进程号
|
||||
*/
|
||||
private Integer processNo;
|
||||
|
||||
/**
|
||||
* 设备id
|
||||
*/
|
||||
private String deviceId;
|
||||
|
||||
/**
|
||||
* 设备名称
|
||||
*/
|
||||
private String deviceName;
|
||||
|
||||
/**
|
||||
* 监测点id
|
||||
*/
|
||||
private String lineId;
|
||||
|
||||
/**
|
||||
* 是否收到(0:未收到 1:收到)
|
||||
*/
|
||||
private Integer isReceived;
|
||||
|
||||
/**
|
||||
* 接收消息状态码
|
||||
*/
|
||||
private Integer receivedCode;
|
||||
|
||||
/**
|
||||
* 接收消息描述
|
||||
*/
|
||||
private String receivedMsg;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.njcn.csdevice.pojo.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
* 日志信息
|
||||
*/
|
||||
@Data
|
||||
public class CldLogsVo implements Serializable {
|
||||
|
||||
@ApiModelProperty("工程名称")
|
||||
private String engineeringName;
|
||||
|
||||
@ApiModelProperty("项目名称")
|
||||
private String projectName;
|
||||
|
||||
@ApiModelProperty("设备名称")
|
||||
private String deviceName;
|
||||
|
||||
@ApiModelProperty("监测点名称")
|
||||
private String lineName;
|
||||
|
||||
@ApiModelProperty("补召类型")
|
||||
private String log;
|
||||
|
||||
@ApiModelProperty("补召时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime logTime;
|
||||
|
||||
@ApiModelProperty("状态")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty("结果")
|
||||
private String result;
|
||||
|
||||
}
|
||||
@@ -25,6 +25,12 @@ public class DeviceInfo implements Serializable {
|
||||
@ApiModelProperty("前置机序号")
|
||||
private Integer node;
|
||||
|
||||
@ApiModelProperty("开启的进程数")
|
||||
private Integer maxProcessNum;
|
||||
|
||||
@ApiModelProperty("对时启动标志")
|
||||
private boolean rightTime;
|
||||
|
||||
@ApiModelProperty("监测点集合")
|
||||
private List<MonitorInfo> monitorData;
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.njcn.csdevice.pojo.vo;
|
||||
|
||||
|
||||
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
|
||||
import com.njcn.csdevice.pojo.po.Node;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Data
|
||||
public class NodeProcessDeviceVo implements Serializable {
|
||||
|
||||
private Node node;
|
||||
|
||||
private List<ProcessDevice> processDeviceList;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public static class ProcessDevice implements Serializable{
|
||||
private Integer processNo;
|
||||
private String processState;
|
||||
private List<CsEquipmentDeliveryPO> deviceInfoList;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -153,6 +153,12 @@
|
||||
<artifactId>access-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.njcn</groupId>
|
||||
<artifactId>common-mq</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -93,8 +93,8 @@ public class DevModelRelationController extends BaseController {
|
||||
@PostMapping("/getModelByType")
|
||||
@ApiOperation("根据装置类型查询模板")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "devId", value = "装置id", required = true),
|
||||
@ApiImplicitParam(name = "type", value = "模板类型", required = true)
|
||||
@ApiImplicitParam(name = "devId", value = "装置id", required = true),
|
||||
@ApiImplicitParam(name = "type", value = "模板类型", required = true)
|
||||
})
|
||||
@ApiIgnore
|
||||
public HttpResult<String> getModelByType(@RequestParam("devId") String devId, @RequestParam("type") Integer type){
|
||||
@@ -103,4 +103,18 @@ public class DevModelRelationController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, modelId, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/updateDataByList")
|
||||
@ApiOperation("根据装置集合修改模板信息")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "list", value = "装置id集合", required = true),
|
||||
@ApiImplicitParam(name = "id", value = "模板id", required = true)
|
||||
})
|
||||
@ApiIgnore
|
||||
public HttpResult<String> updateDataByList(@RequestParam("list") List<String> list, @RequestParam("id") String id){
|
||||
String methodDescribe = getMethodDescribe("updateDataByList");
|
||||
csDevModelRelationService.updateDataByList(list,id);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.njcn.csdevice.controller.equipment;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
@@ -152,6 +153,9 @@ public class EquipmentDeliveryController extends BaseController {
|
||||
@ApiImplicitParam(name = "ids", value = "设备id集合", required = true)
|
||||
public HttpResult<List<CsEquipmentDeliveryDTO>> queryEquipmentById(@RequestParam List<String> ids){
|
||||
String methodDescribe = getMethodDescribe("queryEquipmentById");
|
||||
if (CollectionUtil.isEmpty(ids)) {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
List<CsEquipmentDeliveryPO> csEquipmentDeliveryPOS = csEquipmentDeliveryService.listByIds(ids);
|
||||
List<CsEquipmentDeliveryDTO> collect = csEquipmentDeliveryPOS.stream().map(temp -> {
|
||||
CsEquipmentDeliveryDTO csEquipmentDeliveryDTO = new CsEquipmentDeliveryDTO();
|
||||
@@ -356,7 +360,7 @@ public class EquipmentDeliveryController extends BaseController {
|
||||
@ApiOperation("删除云前置设备")
|
||||
@ApiImplicitParam(name = "id", value = "id", required = true)
|
||||
@DeviceLog(operateType = DeviceOperate.DELETE)
|
||||
public HttpResult<Boolean> delCldDev(@RequestBody @Validated String id){
|
||||
public HttpResult<Boolean> delCldDev(@RequestParam("id") String id){
|
||||
String methodDescribe = getMethodDescribe("delCldDev");
|
||||
boolean result = csEquipmentDeliveryService.delCldDev(id);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
package com.njcn.csdevice.controller.icd;
|
||||
|
||||
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.csdevice.service.ICsTerminalLogsService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2025-09-26
|
||||
*/
|
||||
@Slf4j
|
||||
@RequestMapping("/csTerminalLogs")
|
||||
@RestController
|
||||
@Api(tags = "云前置台账信息日志")
|
||||
@AllArgsConstructor
|
||||
public class CsTerminalLogsController extends BaseController {
|
||||
|
||||
private final ICsTerminalLogsService csTerminalLogsService;
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/pushCldInfo")
|
||||
@ApiOperation("推送日志台账信息")
|
||||
public HttpResult<String> pushCldInfo(){
|
||||
String methodDescribe = getMethodDescribe("pushCldInfo");
|
||||
String result = csTerminalLogsService.pushCldInfo();
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/updateCldInfo")
|
||||
@ApiOperation("更新日志台账信息")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "id", value = "设备id", required = true),
|
||||
@ApiImplicitParam(name = "code", value = "流程状态", required = true)
|
||||
})
|
||||
public HttpResult<String> updateCldInfo(@RequestParam String id, @RequestParam Integer code){
|
||||
String methodDescribe = getMethodDescribe("updateCldInfo");
|
||||
csTerminalLogsService.updateLogs(id,code);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/updateLaterData")
|
||||
@ApiOperation("更新最新一组数据的推送状态")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "id", value = "设备id", required = true),
|
||||
@ApiImplicitParam(name = "code", value = "流程状态", required = true)
|
||||
})
|
||||
public HttpResult<String> updateLaterData(@RequestParam String id, @RequestParam String code){
|
||||
String methodDescribe = getMethodDescribe("updateLaterData");
|
||||
csTerminalLogsService.updateLaterData(id,code);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
package com.njcn.csdevice.controller.icd;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.csdevice.param.IcdBzParam;
|
||||
import com.njcn.csdevice.param.IcdBzReplyParam;
|
||||
import com.njcn.csdevice.pojo.vo.CldLogsVo;
|
||||
import com.njcn.csdevice.service.ICsTerminalReplyService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import com.njcn.web.pojo.param.BaseParam;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2025-10-09
|
||||
*/
|
||||
@Slf4j
|
||||
@RequestMapping("/csTerminalReply")
|
||||
@RestController
|
||||
@Api(tags = "云前置台账信息响应记录")
|
||||
@AllArgsConstructor
|
||||
|
||||
public class CsTerminalReplyController extends BaseController {
|
||||
|
||||
private final ICsTerminalReplyService csTerminalReplyService;
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/queryData")
|
||||
@ApiOperation("查询推送结果")
|
||||
public HttpResult<List<String>> queryData(){
|
||||
String methodDescribe = getMethodDescribe("queryData");
|
||||
List<String> result = csTerminalReplyService.queryReplyData();
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/updateData")
|
||||
@ApiOperation("更新推送结果")
|
||||
@ApiImplicitParam(name = "param", value = "参数", required = true)
|
||||
public HttpResult<String> updateData(@RequestBody @Validated IcdBzReplyParam param){
|
||||
String methodDescribe = getMethodDescribe("updateData");
|
||||
csTerminalReplyService.updateReplyData(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/bzLogs")
|
||||
@ApiOperation("补召日志")
|
||||
@ApiImplicitParam(name = "param", value = "参数", required = true)
|
||||
public HttpResult<Page<CldLogsVo>> bzLogs(@RequestBody @Validated BaseParam param){
|
||||
String methodDescribe = getMethodDescribe("bzLogs");
|
||||
Page<CldLogsVo> list = csTerminalReplyService.getBzLogs(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/updateBzData")
|
||||
@ApiOperation("更新补召推送结果")
|
||||
@ApiImplicitParam(name = "param", value = "参数", required = true)
|
||||
public HttpResult<String> updateBzData(@RequestBody @Validated IcdBzReplyParam param){
|
||||
String methodDescribe = getMethodDescribe("updateBzData");
|
||||
csTerminalReplyService.updateBzData(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.csdevice.param.IcdBzParam;
|
||||
import com.njcn.csdevice.param.IcdLedgerParam;
|
||||
import com.njcn.csdevice.param.IcdParam;
|
||||
import com.njcn.csdevice.pojo.vo.CldLedgerVo;
|
||||
@@ -64,4 +65,34 @@ public class IcdController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, vo, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/bzFileByEventId")
|
||||
@ApiOperation("指定事件补召波形")
|
||||
@ApiImplicitParam(name = "eventId", value = "事件id", required = true)
|
||||
public HttpResult<String> bzFileByEventId(@RequestParam String eventId){
|
||||
String methodDescribe = getMethodDescribe("bzFileByEventId");
|
||||
icdService.bzFileByEventId(eventId);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/bzEvent")
|
||||
@ApiOperation("补召事件")
|
||||
@ApiImplicitParam(name = "param", value = "参数", required = true)
|
||||
public HttpResult<String> bzEvent(@RequestBody @Validated IcdBzParam param){
|
||||
String methodDescribe = getMethodDescribe("bzEvent");
|
||||
icdService.bzEvent(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/bzFile")
|
||||
@ApiOperation("补召波形")
|
||||
@ApiImplicitParam(name = "param", value = "参数", required = true)
|
||||
public HttpResult<String> bzFile(@RequestBody @Validated IcdBzParam param){
|
||||
String methodDescribe = getMethodDescribe("bzFile");
|
||||
icdService.bzFile(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,8 +8,10 @@ import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.csdevice.param.IcdNodeParam;
|
||||
import com.njcn.csdevice.pojo.param.NodeParam;
|
||||
import com.njcn.csdevice.pojo.po.Node;
|
||||
import com.njcn.csdevice.pojo.vo.NodeProcessDeviceVo;
|
||||
import com.njcn.csdevice.service.INodeService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
@@ -159,5 +161,55 @@ public class NodeController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, node, methodDescribe);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据前置机id获取下面的进程和设备
|
||||
* @author xy
|
||||
*/
|
||||
@ApiOperation("根据前置机id获取下面的进程和设备")
|
||||
@ApiImplicitParam(value = "前置机id",name = "id",required = true)
|
||||
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
|
||||
@GetMapping("/getProcessNoAndDeviceById")
|
||||
public HttpResult<NodeProcessDeviceVo> getProcessNoAndDeviceById(@Validated @NotNull(message = "id不可为空") @RequestParam("id")String id){
|
||||
String methodDescribe = getMethodDescribe("getProcessNoAndDeviceById");
|
||||
NodeProcessDeviceVo vo = iNodeService.getProcessNoAndDeviceById(id);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, vo, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/restartProcess")
|
||||
@ApiOperation("重启前置机进程")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "nodeId", value = "前置服务器id", required = true),
|
||||
@ApiImplicitParam(name = "processNo", value = "进程号", required = true)
|
||||
})
|
||||
public HttpResult<String> restartProcess(@RequestParam String nodeId,@RequestParam Integer processNo){
|
||||
String methodDescribe = getMethodDescribe("restartProcess");
|
||||
iNodeService.restartProcess(nodeId,processNo);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/updateDevProcessNo")
|
||||
@ApiOperation("更新设备进程号")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "id", value = "设备id", required = true),
|
||||
@ApiImplicitParam(name = "processNo", value = "进程号", required = true)
|
||||
})
|
||||
public HttpResult<String> updateDevProcessNo(@RequestParam String id,@RequestParam Integer processNo){
|
||||
String methodDescribe = getMethodDescribe("updateDevProcessNo");
|
||||
String result = iNodeService.updateDevProcessNo(id,processNo);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/updateDevNode")
|
||||
@ApiOperation("更新设备前置信息")
|
||||
@ApiImplicitParam(name = "param", value = "参数", required = true)
|
||||
public HttpResult<String> updateDevNode(@RequestBody IcdNodeParam param){
|
||||
String methodDescribe = getMethodDescribe("updateDevNode");
|
||||
String result = iNodeService.updateDevNode(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -156,5 +156,14 @@ public class CsLedgerController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, allList, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/cldTree")
|
||||
@ApiOperation("云前置树")
|
||||
public HttpResult<CsLedgerVO> cldTree(){
|
||||
String methodDescribe = getMethodDescribe("cldTree");
|
||||
CsLedgerVO vo = csLedgerService.cldTree();
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, vo, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.njcn.device.biz.utils.COverlimitUtil;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -171,6 +172,11 @@ public class CslineController extends BaseController {
|
||||
public HttpResult<List<CsLinePO>> addCldLine(@RequestBody @Validated CsLineParam param) {
|
||||
String methodDescribe = getMethodDescribe("addCldLine");
|
||||
csLinePOService.addCldLine(param);
|
||||
//新增监测点限值
|
||||
Overlimit overlimit = COverlimitUtil.globalAssemble(param.getVolGrade().floatValue(),10f,10f,10f,0,1);
|
||||
overlimit.setId(param.getLineId());
|
||||
overlimitMapper.deleteById(param.getLineId());
|
||||
overlimitMapper.insert(overlimit);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
@@ -181,6 +187,11 @@ public class CslineController extends BaseController {
|
||||
public HttpResult<List<CsLinePO>> updateCldLine(@RequestBody CsLineParam param) {
|
||||
String methodDescribe = getMethodDescribe("updateCldLine");
|
||||
csLinePOService.updateCldLine(param);
|
||||
//修改监测点限值
|
||||
Overlimit overlimit = COverlimitUtil.globalAssemble(param.getVolGrade().floatValue(),10f,10f,10f,0,1);
|
||||
overlimit.setId(param.getLineId());
|
||||
overlimitMapper.deleteById(param.getLineId());
|
||||
overlimitMapper.insert(overlimit);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
@@ -194,4 +205,19 @@ public class CslineController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/updateLineDataByList")
|
||||
@ApiOperation("根据装置集合修改监测点信息")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "list", value = "装置id集合", required = true),
|
||||
@ApiImplicitParam(name = "id", value = "模板id", required = true),
|
||||
@ApiImplicitParam(name = "setId", value = "数据集id", required = true),
|
||||
})
|
||||
@ApiIgnore
|
||||
public HttpResult<String> updateDataByList(@RequestParam("list") List<String> list, @RequestParam("id") String id, @RequestParam("setId") String setId){
|
||||
String methodDescribe = getMethodDescribe("updateLineDataByList");
|
||||
csLinePOService.updateLineDataByList(list,id,setId);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,4 +35,6 @@ public interface CsEquipmentDeliveryMapper extends BaseMapper<CsEquipmentDeliver
|
||||
int getCounts(@Param("queryParam") CsEquipmentDeliveryQueryParm queryParam);
|
||||
|
||||
int getListByNodeProcess(@Param("nodeId")String nodeId,@Param("process")Integer process);
|
||||
|
||||
List<CsEquipmentDeliveryPO> getDataByNodeIdAndProcessNo(@Param("nodeId")String nodeId,@Param("process")Integer process);
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.csdevice.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.csdevice.pojo.po.CsTerminalLogs;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2025-09-26
|
||||
*/
|
||||
public interface CsTerminalLogsMapper extends BaseMapper<CsTerminalLogs> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.csdevice.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.njcn.csdevice.pojo.po.CsTerminalReply;
|
||||
import com.njcn.user.pojo.vo.RoleVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2025-10-09
|
||||
*/
|
||||
public interface CsTerminalReplyMapper extends BaseMapper<CsTerminalReply> {
|
||||
|
||||
Page<CsTerminalReply> page(@Param("page")Page<RoleVO> page, @Param("ew") QueryWrapper<CsTerminalReply> queryWrapper);
|
||||
|
||||
}
|
||||
@@ -137,4 +137,16 @@
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="getDataByNodeIdAndProcessNo" resultType="com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO">
|
||||
select
|
||||
*
|
||||
from
|
||||
cs_equipment_delivery
|
||||
where
|
||||
node_id = #{nodeId} and run_status != 0
|
||||
<if test="process != null and process !=''">
|
||||
and node_process = #{process}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.njcn.csdevice.mapper.CsTerminalReplyMapper">
|
||||
|
||||
<!--获取角色分页列表-->
|
||||
<select id="page" resultType="CsTerminalReply">
|
||||
select
|
||||
cs_terminal_reply.*
|
||||
from
|
||||
cs_terminal_reply
|
||||
WHERE ${ew.sqlSegment}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -55,5 +55,5 @@ public interface CsDevModelRelationService extends IService<CsDevModelRelationPO
|
||||
|
||||
String getVersionByDevId(String devId);
|
||||
|
||||
|
||||
void updateDataByList(List<String> list, String id);
|
||||
}
|
||||
|
||||
@@ -130,6 +130,12 @@ public interface CsEquipmentDeliveryService extends IService<CsEquipmentDelivery
|
||||
*/
|
||||
List<CsEquipmentDeliveryPO> getAll();
|
||||
|
||||
/**
|
||||
* 获取所有装置信息(投运且在线)
|
||||
* @return
|
||||
*/
|
||||
List<CsEquipmentDeliveryPO> getAllOnline();
|
||||
|
||||
/**
|
||||
* 判断设备型号
|
||||
*/
|
||||
@@ -183,4 +189,8 @@ public interface CsEquipmentDeliveryService extends IService<CsEquipmentDelivery
|
||||
*/
|
||||
List<CsEquipmentDeliveryPO> getDevListByProjectId(String projectId);
|
||||
|
||||
List<CsEquipmentDeliveryPO> getDataByNodeIdAndProcessNo(String nodeId, Integer processNo);
|
||||
|
||||
List<CsEquipmentDeliveryPO> getListByIds(List<String> devList);
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.njcn.csdevice.service;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.csdevice.pojo.param.CsLineParam;
|
||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -48,7 +49,7 @@ public interface CsLinePOService extends IService<CsLinePO>{
|
||||
|
||||
List<CsLinePO> getLinesByDevList(List<String> list);
|
||||
|
||||
void addCldLine(CsLineParam param);
|
||||
CsLinePO addCldLine(CsLineParam param);
|
||||
|
||||
void updateCldLine(CsLineParam param);
|
||||
|
||||
@@ -60,4 +61,13 @@ public interface CsLinePOService extends IService<CsLinePO>{
|
||||
* @param status 运行状态
|
||||
*/
|
||||
void updateCldLineStatus(List<CsLinePO> lineList, Integer status);
|
||||
|
||||
void updateLineDataByList(List<String> list, String id, String setId);
|
||||
|
||||
/**
|
||||
* 根据名称获取监测点
|
||||
* @param lineName
|
||||
* @return
|
||||
*/
|
||||
List<CsLinePO> getLineByName(String lineName);
|
||||
}
|
||||
|
||||
@@ -83,4 +83,6 @@ public interface ICsLedgerService extends IService<CsLedger> {
|
||||
* @return
|
||||
*/
|
||||
List<CsLedgerVO> getProAndEngineer(List<String> id);
|
||||
|
||||
CsLedgerVO cldTree();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.njcn.csdevice.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.csdevice.pojo.po.CsTerminalLogs;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2025-09-26
|
||||
*/
|
||||
public interface ICsTerminalLogsService extends IService<CsTerminalLogs> {
|
||||
|
||||
/**
|
||||
* 更新台账操作日志信息
|
||||
*/
|
||||
void updateLogs(String id, Integer code);
|
||||
|
||||
/**
|
||||
* 推送台账操作日志信息
|
||||
*/
|
||||
String pushCldInfo();
|
||||
|
||||
void updateLaterData(String id, String code);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.njcn.csdevice.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.csdevice.param.IcdBzParam;
|
||||
import com.njcn.csdevice.param.IcdBzReplyParam;
|
||||
import com.njcn.csdevice.pojo.po.CsTerminalReply;
|
||||
import com.njcn.csdevice.pojo.vo.CldLogsVo;
|
||||
import com.njcn.web.pojo.param.BaseParam;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2025-10-09
|
||||
*/
|
||||
public interface ICsTerminalReplyService extends IService<CsTerminalReply> {
|
||||
|
||||
List<String> queryReplyData();
|
||||
|
||||
void updateReplyData(IcdBzReplyParam param);
|
||||
|
||||
List<CsTerminalReply> getBzReplyData(String lineId);
|
||||
|
||||
Page<CldLogsVo> getBzLogs(BaseParam param);
|
||||
|
||||
void updateBzData(IcdBzReplyParam param);
|
||||
|
||||
}
|
||||
@@ -3,8 +3,11 @@ package com.njcn.csdevice.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.csdevice.param.IcdNodeParam;
|
||||
import com.njcn.csdevice.pojo.param.NodeParam;
|
||||
import com.njcn.csdevice.pojo.po.Node;
|
||||
import com.njcn.csdevice.pojo.vo.NodeProcessDeviceVo;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -76,4 +79,12 @@ public interface INodeService extends IService<Node> {
|
||||
Node getNodeByNodeName(String nodeName);
|
||||
|
||||
Node getNodeByIp(String ip);
|
||||
|
||||
NodeProcessDeviceVo getProcessNoAndDeviceById(String id);
|
||||
|
||||
void restartProcess(String nodeId, Integer processNo);
|
||||
|
||||
String updateDevProcessNo(String id, Integer processNo);
|
||||
|
||||
String updateDevNode(IcdNodeParam param);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.njcn.csdevice.service;
|
||||
|
||||
import com.njcn.csdevice.param.IcdBzParam;
|
||||
import com.njcn.csdevice.param.IcdLedgerParam;
|
||||
import com.njcn.csdevice.param.IcdParam;
|
||||
import com.njcn.csdevice.pojo.vo.CldLedgerVo;
|
||||
@@ -15,4 +16,10 @@ public interface IcdService {
|
||||
|
||||
CldLedgerVo getLedgerById(String id);
|
||||
|
||||
void bzFileByEventId(String eventId);
|
||||
|
||||
void bzEvent(IcdBzParam param);
|
||||
|
||||
void bzFile(IcdBzParam param);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.csdevice.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.csdevice.enums.AlgorithmResponseEnum;
|
||||
@@ -101,4 +102,11 @@ public class CsDevModelRelationServiceImpl extends ServiceImpl<CsDevModelRelatio
|
||||
public String getVersionByDevId(String devId) {
|
||||
return this.baseMapper.getVersionByDevId(devId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDataByList(List<String> list, String id) {
|
||||
LambdaUpdateWrapper<CsDevModelRelationPO> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.in(CsDevModelRelationPO::getDevId,list).set(CsDevModelRelationPO::getModelId,id);
|
||||
this.update(updateWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.njcn.csdevice.enums.AlgorithmResponseEnum;
|
||||
import com.njcn.csdevice.mapper.CsEquipmentDeliveryMapper;
|
||||
import com.njcn.csdevice.mapper.CsLedgerMapper;
|
||||
import com.njcn.csdevice.mapper.CsSoftInfoMapper;
|
||||
import com.njcn.csdevice.mapper.CsTerminalLogsMapper;
|
||||
import com.njcn.csdevice.pojo.param.*;
|
||||
import com.njcn.csdevice.pojo.po.*;
|
||||
import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO;
|
||||
@@ -100,6 +101,7 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
private final INodeService nodeService;
|
||||
private final CsDevModelService csDevModelService;
|
||||
private final CsLedgerMapper csLedgerMapper;
|
||||
private final CsTerminalLogsMapper csTerminalLogsMapper;
|
||||
|
||||
|
||||
@Override
|
||||
@@ -156,6 +158,7 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
|
||||
@Override
|
||||
public Boolean AuditEquipmentDelivery(String id) {
|
||||
CsEquipmentDeliveryPO one = this.lambdaQuery().eq(CsEquipmentDeliveryPO::getId, id).one();
|
||||
//物理删除
|
||||
QueryWrapper<CsEquipmentDeliveryPO> wrapper = new QueryWrapper();
|
||||
wrapper.eq ("id", id);
|
||||
@@ -425,6 +428,7 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
if (isCLdDevice) {
|
||||
// 云前置数据集
|
||||
addDataSet(dataSetList, item, "实时数据", "realtimedata");
|
||||
addDataSet(dataSetList, item, "暂态事件", "event");
|
||||
}
|
||||
deviceManagerVo.setDataLevel(item.getDataLevel());
|
||||
}
|
||||
@@ -703,6 +707,15 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
return this.lambdaQuery().ne(CsEquipmentDeliveryPO::getRunStatus,0).list();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CsEquipmentDeliveryPO> getAllOnline() {
|
||||
return this.lambdaQuery()
|
||||
.ne(CsEquipmentDeliveryPO::getRunStatus,0)
|
||||
.eq(CsEquipmentDeliveryPO::getUsageStatus,1)
|
||||
.isNotNull(CsEquipmentDeliveryPO::getNodeId)
|
||||
.list();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean judgeDevModel(String nDid) {
|
||||
boolean result = false;
|
||||
@@ -784,6 +797,7 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean delCldDev(String id) {
|
||||
CsEquipmentDeliveryPO one = this.lambdaQuery().eq(CsEquipmentDeliveryPO::getId, id).one();
|
||||
LambdaQueryWrapper<CsEquipmentDeliveryPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(CsEquipmentDeliveryPO::getId,id);
|
||||
boolean update = this.remove(lambdaQueryWrapper);
|
||||
@@ -805,22 +819,31 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
if (update) {
|
||||
refreshDeviceDataCache();
|
||||
}
|
||||
//新增操作日志
|
||||
CsTerminalLogs csTerminalLogs = new CsTerminalLogs();
|
||||
csTerminalLogs.setDeviceId(id);
|
||||
csTerminalLogs.setOperateType(2);
|
||||
csTerminalLogs.setIsPush(0);
|
||||
csTerminalLogs.setNodeId(one.getNodeId());
|
||||
csTerminalLogs.setNodeProcess(one.getNodeProcess());
|
||||
csTerminalLogs.setDeviceName(one.getName());
|
||||
csTerminalLogsMapper.insert(csTerminalLogs);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateCldDev(CsEquipmentDeliveryAuditParm param) {
|
||||
//云前置设备判断,修改云前置判断设备是否达到上限
|
||||
if(ObjectUtil.isNotNull(param.getNodeId())){
|
||||
Node node = nodeService.getNodeById(param.getNodeId());
|
||||
List<CsEquipmentDeliveryPO> devList = getListByNodeId(param.getNodeId());
|
||||
if (ObjectUtil.isNotEmpty(devList) && devList.size() >= node.getNodeDevNum()) {
|
||||
throw new BusinessException (AlgorithmResponseEnum.OVER_MAX_DEV_COUNT);
|
||||
}
|
||||
//自动分配进程号
|
||||
int process = findLeastFrequentProcess(devList,node.getMaxProcessNum());
|
||||
param.setNodeProcess(process);
|
||||
}
|
||||
// //云前置设备判断,修改云前置判断设备是否达到上限
|
||||
// if(ObjectUtil.isNotNull(param.getNodeId())){
|
||||
// Node node = nodeService.getNodeById(param.getNodeId());
|
||||
// List<CsEquipmentDeliveryPO> devList = getListByNodeId(param.getNodeId());
|
||||
// if (ObjectUtil.isNotEmpty(devList) && devList.size() >= node.getNodeDevNum()) {
|
||||
// throw new BusinessException (AlgorithmResponseEnum.OVER_MAX_DEV_COUNT);
|
||||
// }
|
||||
// //自动分配进程号
|
||||
// int process = findLeastFrequentProcess(devList,node.getMaxProcessNum());
|
||||
// param.setNodeProcess(process);
|
||||
// }
|
||||
StringUtil.containsSpecialCharacters(param.getNdid());
|
||||
boolean result;
|
||||
LambdaQueryWrapper<CsEquipmentDeliveryPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
@@ -867,6 +890,12 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
csLogsFeignClient.addUserLog(dto);
|
||||
}
|
||||
}
|
||||
//新增台账日志
|
||||
CsTerminalLogs csTerminalLogs = new CsTerminalLogs();
|
||||
csTerminalLogs.setDeviceId(csEquipmentDeliveryPo.getId());
|
||||
csTerminalLogs.setOperateType(1);
|
||||
csTerminalLogs.setIsPush(0);
|
||||
csTerminalLogsMapper.insert(csTerminalLogs);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -932,10 +961,30 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
QueryWrapper<CsLedger> csLedgerQueryWrapper = new QueryWrapper();
|
||||
csLedgerQueryWrapper.lambda().eq(CsLedger::getPid, projectId).eq(CsLedger::getState,1);
|
||||
List<CsLedger> csLedgers = csLedgerMapper.selectList(csLedgerQueryWrapper);
|
||||
if (CollectionUtil.isEmpty(csLedgers)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<String> collect = csLedgers.stream().map(CsLedger::getId).collect(Collectors.toList());
|
||||
return this.lambdaQuery().in(CsEquipmentDeliveryPO::getId,collect).list();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CsEquipmentDeliveryPO> getDataByNodeIdAndProcessNo(String nodeId, Integer processNo) {
|
||||
LambdaQueryWrapper<CsEquipmentDeliveryPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(CsEquipmentDeliveryPO::getNodeId,nodeId)
|
||||
.ne(CsEquipmentDeliveryPO::getRunStatus,0)
|
||||
.eq(CsEquipmentDeliveryPO::getDevAccessMethod,"CLD");
|
||||
if (ObjectUtil.isNotNull(processNo)) {
|
||||
lambdaQueryWrapper.eq(CsEquipmentDeliveryPO::getNodeProcess,processNo);
|
||||
}
|
||||
return this.list(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CsEquipmentDeliveryPO> getListByIds(List<String> devList) {
|
||||
return this.lambdaQuery().in(CsEquipmentDeliveryPO::getId,devList).list();
|
||||
}
|
||||
|
||||
//根据前置机id获取装置数量
|
||||
public List<CsEquipmentDeliveryPO> getListByNodeId(String nodeId) {
|
||||
LambdaQueryWrapper<CsEquipmentDeliveryPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
@@ -7,11 +7,9 @@ import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||
import com.njcn.csdevice.constant.DataParam;
|
||||
import com.njcn.csdevice.enums.LineBaseEnum;
|
||||
import com.njcn.csdevice.mapper.*;
|
||||
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||
import com.njcn.csdevice.pojo.dto.DevDetailDTO;
|
||||
import com.njcn.csdevice.pojo.dto.LineParamDTO;
|
||||
import com.njcn.csdevice.pojo.param.CsLedgerParam;
|
||||
@@ -54,7 +52,6 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
|
||||
private final CsDevModelRelationService csDevModelRelationService;
|
||||
private final CsEquipmentDeliveryMapper csEquipmentDeliveryMapper;
|
||||
private final ICsDataSetService csDataSetService;
|
||||
private final EquipmentFeignClient equipmentFeignClient;
|
||||
private final DictTreeFeignClient dictTreeFeignClient;
|
||||
|
||||
@Override
|
||||
@@ -82,14 +79,14 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
|
||||
//区分治理装置和云前置装置
|
||||
List<String> zhiLianDevice = new ArrayList<>();
|
||||
List<String> cldDevice = new ArrayList<>();
|
||||
List<CsEquipmentDeliveryDTO> csEquipmentDeliveryPOS = equipmentFeignClient.queryDeviceById(device).getData();
|
||||
if (CollectionUtil.isNotEmpty(csEquipmentDeliveryPOS)) {
|
||||
if (CollectionUtil.isNotEmpty(device)) {
|
||||
List<CsEquipmentDeliveryPO> csEquipmentDeliveryPOS = csEquipmentDeliveryMapper.selectBatchIds(device);
|
||||
DictTreeVO vo1 = dictTreeFeignClient.queryByCode(DicDataEnum.DEV_CLD.getCode()).getData();
|
||||
Optional.ofNullable(vo1)
|
||||
.map(DictTreeVO::getId)
|
||||
.ifPresent(id -> csEquipmentDeliveryPOS.stream()
|
||||
.filter(item -> Objects.equals(item.getDevType(), id))
|
||||
.map(CsEquipmentDeliveryDTO::getId)
|
||||
.map(CsEquipmentDeliveryPO::getId)
|
||||
.forEach(cldDevice::add)
|
||||
);
|
||||
DictTreeVO vo2 = dictTreeFeignClient.queryByCode(DicDataEnum.CONNECT_DEV.getCode()).getData();
|
||||
@@ -97,11 +94,10 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
|
||||
.map(DictTreeVO::getId)
|
||||
.ifPresent(id -> csEquipmentDeliveryPOS.stream()
|
||||
.filter(item -> Objects.equals(item.getDevType(), id))
|
||||
.map(CsEquipmentDeliveryDTO::getId)
|
||||
.map(CsEquipmentDeliveryPO::getId)
|
||||
.forEach(zhiLianDevice::add)
|
||||
);
|
||||
}
|
||||
|
||||
engineeringList = allList.stream().filter(item->roleengineer.contains(item.getId())).collect(Collectors.toList());
|
||||
List<CsLedgerVO> projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList());
|
||||
|
||||
@@ -287,14 +283,14 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
|
||||
|
||||
List<String> zhiLianDevice = new ArrayList<>();
|
||||
List<String> cldDevice = new ArrayList<>();
|
||||
List<CsEquipmentDeliveryDTO> csEquipmentDeliveryPOS = equipmentFeignClient.queryDeviceById(device).getData();
|
||||
if (CollectionUtil.isNotEmpty(csEquipmentDeliveryPOS)) {
|
||||
if (CollectionUtil.isNotEmpty(device)) {
|
||||
List<CsEquipmentDeliveryPO> csEquipmentDeliveryPOS = csEquipmentDeliveryMapper.selectBatchIds(device);
|
||||
DictTreeVO vo1 = dictTreeFeignClient.queryByCode(DicDataEnum.DEV_CLD.getCode()).getData();
|
||||
Optional.ofNullable(vo1)
|
||||
.map(DictTreeVO::getId)
|
||||
.ifPresent(id -> csEquipmentDeliveryPOS.stream()
|
||||
.filter(item -> Objects.equals(item.getDevType(), id))
|
||||
.map(CsEquipmentDeliveryDTO::getId)
|
||||
.map(CsEquipmentDeliveryPO::getId)
|
||||
.forEach(cldDevice::add)
|
||||
);
|
||||
DictTreeVO vo2 = dictTreeFeignClient.queryByCode(DicDataEnum.CONNECT_DEV.getCode()).getData();
|
||||
@@ -302,10 +298,11 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
|
||||
.map(DictTreeVO::getId)
|
||||
.ifPresent(id -> csEquipmentDeliveryPOS.stream()
|
||||
.filter(item -> Objects.equals(item.getDevType(), id))
|
||||
.map(CsEquipmentDeliveryDTO::getId)
|
||||
.map(CsEquipmentDeliveryPO::getId)
|
||||
.forEach(zhiLianDevice::add)
|
||||
);
|
||||
}
|
||||
|
||||
engineeringList = allList.stream().filter(item->roleengineer.contains(item.getId())).collect(Collectors.toList());
|
||||
List<CsLedgerVO> projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList());
|
||||
|
||||
@@ -650,6 +647,102 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CsLedgerVO cldTree() {
|
||||
|
||||
List<CsLedgerVO> engineerTree = new ArrayList<>();
|
||||
List<CsLedgerVO> projectTree = new ArrayList<>();
|
||||
List<CsLedgerVO> deviceTree = new ArrayList<>();
|
||||
List<CsLedgerVO> lineTree = new ArrayList<>();
|
||||
|
||||
List<CsLedgerVO> allList = this.baseMapper.getAll();
|
||||
if (CollectionUtil.isNotEmpty(allList)) {
|
||||
//工程集合
|
||||
List<CsLedgerVO> tree1 = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.ENGINEERING_LEVEL.getCode())).collect(Collectors.toList());
|
||||
//项目集合
|
||||
List<CsLedgerVO> tree2 = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).collect(Collectors.toList());
|
||||
//设备集合
|
||||
List<CsLedgerVO> tree3 = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.DEVICE_LEVEL.getCode())).collect(Collectors.toList());
|
||||
//监测点集合
|
||||
List<CsLedgerVO> tree4 = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.LINE_LEVEL.getCode())).collect(Collectors.toList());
|
||||
|
||||
//筛选出云前置设备
|
||||
if (CollectionUtil.isNotEmpty(tree3)) {
|
||||
Set<String> list1 = new HashSet<>();
|
||||
List<String> devList = tree3.stream().map(CsLedgerVO::getId).collect(Collectors.toList());
|
||||
List<CsEquipmentDeliveryPO> devs = csEquipmentDeliveryMapper.selectBatchIds(devList);
|
||||
Map<String, CsEquipmentDeliveryPO> devsMap = devs.stream().collect(Collectors.toMap(CsEquipmentDeliveryPO::getId, Function.identity()));
|
||||
DictTreeVO vo1 = dictTreeFeignClient.queryByCode(DicDataEnum.DEV_CLD.getCode()).getData();
|
||||
|
||||
//list1是 cld设备
|
||||
devs.forEach(item->{
|
||||
if (item.getDevType().equals(vo1.getId())) {
|
||||
list1.add(item.getId());
|
||||
}
|
||||
});
|
||||
//list2是 非cld设备
|
||||
Set<String> list2 = devList.stream().filter(item -> !list1.contains(item)).collect(Collectors.toSet());
|
||||
List<CsLedgerVO> tree5 = tree3.stream().filter(vo -> list2.contains(vo.getId())).collect(Collectors.toList());
|
||||
Set<String> list3 = tree5.stream().map(CsLedgerVO::getPid).collect(Collectors.toSet());
|
||||
projectTree = tree2.stream().filter(vo -> !list3.contains(vo.getId())).collect(Collectors.toList());
|
||||
|
||||
List<CsLedgerVO> tree6 = tree2.stream().filter(vo -> list3.contains(vo.getId())).collect(Collectors.toList());
|
||||
Set<String> proList = tree6.stream().map(CsLedgerVO::getPid).collect(Collectors.toSet());
|
||||
engineerTree = tree1.stream().filter(vo -> !proList.contains(vo.getId())).collect(Collectors.toList());
|
||||
|
||||
if (CollectionUtil.isNotEmpty(list1)) {
|
||||
deviceTree = tree3.stream()
|
||||
.filter(vo -> list1.contains(vo.getId()))
|
||||
.peek(item -> {
|
||||
CsEquipmentDeliveryPO dev = devsMap.get(item.getId());
|
||||
if (dev != null) {
|
||||
item.setComFlag(dev.getRunStatus());
|
||||
}
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
|
||||
lineTree = tree4.stream()
|
||||
.filter(vo -> list1.contains(vo.getPid()))
|
||||
.peek(item -> {
|
||||
CsEquipmentDeliveryPO dev = devsMap.get(item.getId());
|
||||
if (dev != null) {
|
||||
item.setComFlag(dev.getRunStatus());
|
||||
}
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (CollectionUtil.isNotEmpty(deviceTree)) {
|
||||
List<CsLedgerVO> finalLineTree = lineTree;
|
||||
deviceTree.forEach(item->{
|
||||
item.setChildren(getChildren(item, finalLineTree));
|
||||
});
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(projectTree)) {
|
||||
List<CsLedgerVO> finalDeviceTree = deviceTree;
|
||||
projectTree.forEach(item->{
|
||||
item.setChildren(getChildren(item, finalDeviceTree));
|
||||
});
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(engineerTree)) {
|
||||
List<CsLedgerVO> finalProjectTree = projectTree;
|
||||
engineerTree.forEach(item->{
|
||||
item.setChildren(getChildren(item, finalProjectTree));
|
||||
});
|
||||
}
|
||||
|
||||
CsLedgerVO government = new CsLedgerVO();
|
||||
government.setLevel(0);
|
||||
government.setName(DataParam.cldDev);
|
||||
government.setPid("0");
|
||||
government.setId(IdUtil.simpleUUID());
|
||||
government.setChildren(engineerTree);
|
||||
|
||||
return government;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子节点
|
||||
*/
|
||||
|
||||
@@ -8,29 +8,21 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.csdevice.mapper.CsLedgerMapper;
|
||||
import com.njcn.csdevice.mapper.CsLinePOMapper;
|
||||
import com.njcn.csdevice.mapper.OverlimitMapper;
|
||||
import com.njcn.csdevice.mapper.CsTerminalLogsMapper;
|
||||
import com.njcn.csdevice.pojo.param.CsLineParam;
|
||||
import com.njcn.csdevice.pojo.po.CsDataSet;
|
||||
import com.njcn.csdevice.pojo.po.CsDevModelPO;
|
||||
import com.njcn.csdevice.pojo.po.CsLedger;
|
||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||
import com.njcn.csdevice.pojo.po.*;
|
||||
import com.njcn.csdevice.service.CsDevModelService;
|
||||
import com.njcn.csdevice.service.CsLinePOService;
|
||||
import com.njcn.csdevice.service.ICsDataSetService;
|
||||
import com.njcn.device.biz.pojo.po.Overlimit;
|
||||
import com.njcn.device.biz.utils.COverlimitUtil;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import com.njcn.system.pojo.po.DictData;
|
||||
import com.njcn.user.pojo.constant.FunctionState;
|
||||
import com.njcn.user.pojo.po.Function;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -50,7 +42,7 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
|
||||
private final CsDevModelService csDevModelService;
|
||||
private final ICsDataSetService csDataSetService;
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
private final OverlimitMapper overlimitMapper;
|
||||
private final CsTerminalLogsMapper csTerminalLogsMapper;
|
||||
|
||||
@Override
|
||||
public List<CsLinePO> getLineByDev(List<String> list) {
|
||||
@@ -111,7 +103,7 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void addCldLine(CsLineParam param) {
|
||||
public CsLinePO addCldLine(CsLineParam param) {
|
||||
String lineId = param.getDevMac().replace(":","") + param.getLineNo();
|
||||
CsLinePO po = new CsLinePO();
|
||||
//1.新增监测点信息
|
||||
@@ -145,21 +137,17 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
|
||||
csLedger.setState(1);
|
||||
csLedger.setSort(0);
|
||||
csLedgerMapper.insert(csLedger);
|
||||
|
||||
//3.新增监测点限值
|
||||
Overlimit overlimit = COverlimitUtil.globalAssemble(param.getVolGrade().floatValue(),10f,10f,10f,0,1);
|
||||
overlimit.setId(lineId);
|
||||
overlimitMapper.deleteById(lineId);
|
||||
overlimitMapper.insert(overlimit);
|
||||
return po;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateCldLine(CsLineParam param) {
|
||||
LambdaQueryWrapper<CsLinePO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(CsLinePO::getDeviceId,param.getDevId())
|
||||
.ne(CsLinePO::getLineId,param.getLineId())
|
||||
.eq(CsLinePO::getStatus,1)
|
||||
.eq(CsLinePO::getClDid,param.getClDid());
|
||||
.eq(CsLinePO::getLineNo,param.getLineNo())
|
||||
.eq(CsLinePO::getStatus,1);
|
||||
List<CsLinePO> lineList = this.list(wrapper);
|
||||
if (CollectionUtil.isNotEmpty(lineList)) {
|
||||
throw new BusinessException("监测点线路号重复,请调整!");
|
||||
@@ -167,23 +155,47 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
|
||||
LambdaUpdateWrapper<CsLinePO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.eq(CsLinePO::getLineId,param.getLineId())
|
||||
.eq(CsLinePO::getStatus,1)
|
||||
.set(CsLinePO::getVolGrade,param.getVolGrade())
|
||||
.set(CsLinePO::getName,param.getName())
|
||||
.set(CsLinePO::getLineNo,param.getLineNo())
|
||||
.set(CsLinePO::getConType,param.getConType())
|
||||
.set(CsLinePO::getLineInterval,param.getLineInterval())
|
||||
.set(CsLinePO::getPtRatio,param.getPtRatio())
|
||||
.set(CsLinePO::getPt2Ratio,param.getPt2Ratio())
|
||||
.set(CsLinePO::getCtRatio,param.getCtRatio())
|
||||
.set(CsLinePO::getCt2Ratio,param.getCt2Ratio())
|
||||
.set(CsLinePO::getClDid,param.getClDid())
|
||||
.set(CsLinePO::getLineInterval,param.getLineInterval())
|
||||
.set(CsLinePO::getVolGrade,param.getVolGrade())
|
||||
.set(CsLinePO::getRunStatus,param.getRunStatus());
|
||||
this.update(lambdaUpdateWrapper);
|
||||
|
||||
//修改台账树中监测点的名称
|
||||
QueryWrapper<CsLedger> queryWrapper = new QueryWrapper();
|
||||
queryWrapper.eq("state",1).eq("id",param.getLineId());
|
||||
CsLedger csLedger = csLedgerMapper.selectOne(queryWrapper);
|
||||
csLedger.setName(param.getName());
|
||||
csLedgerMapper.updateById(csLedger);
|
||||
|
||||
//新增台账日志
|
||||
CsTerminalLogs csTerminalLogs = new CsTerminalLogs();
|
||||
csTerminalLogs.setDeviceId(param.getDevId());
|
||||
csTerminalLogs.setOperateType(1);
|
||||
csTerminalLogs.setIsPush(0);
|
||||
csTerminalLogsMapper.insert(csTerminalLogs);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteCldLine(String id) {
|
||||
CsLinePO po = this.getById(id);
|
||||
|
||||
this.removeById(id);
|
||||
csLedgerMapper.deleteById(id);
|
||||
|
||||
//新增台账日志
|
||||
CsTerminalLogs csTerminalLogs = new CsTerminalLogs();
|
||||
csTerminalLogs.setDeviceId(po.getDeviceId());
|
||||
csTerminalLogs.setOperateType(1);
|
||||
csTerminalLogs.setIsPush(0);
|
||||
csTerminalLogsMapper.insert(csTerminalLogs);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -192,6 +204,18 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
|
||||
this.updateBatchById(lineList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateLineDataByList(List<String> list, String id, String setId) {
|
||||
LambdaUpdateWrapper<CsLinePO> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.in(CsLinePO::getDeviceId,list).set(CsLinePO::getDataModelId,id).set(CsLinePO::getDataSetId,setId);
|
||||
this.update(updateWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CsLinePO> getLineByName(String lineName) {
|
||||
return this.lambdaQuery().like(CsLinePO::getName,lineName).list();
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 1.平台端默认配置拓扑图模板,包含拓扑图信息(cs_topology_diagram_template)和拓扑图上监测点的点位信息(cs_line_topology_template)
|
||||
// *
|
||||
|
||||
@@ -0,0 +1,290 @@
|
||||
package com.njcn.csdevice.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.csdevice.mapper.CsTerminalLogsMapper;
|
||||
import com.njcn.csdevice.mapper.CsTerminalReplyMapper;
|
||||
import com.njcn.csdevice.pojo.po.*;
|
||||
import com.njcn.csdevice.service.CsEquipmentDeliveryService;
|
||||
import com.njcn.csdevice.service.CsLinePOService;
|
||||
import com.njcn.csdevice.service.ICsTerminalLogsService;
|
||||
import com.njcn.csdevice.service.INodeService;
|
||||
import com.njcn.mq.message.CldControlMessage;
|
||||
import com.njcn.mq.message.CldUpdateLedgerMessage;
|
||||
import com.njcn.mq.template.CldControlMessageTemplate;
|
||||
import com.njcn.mq.template.CldUpdateLedgerMessageTemplate;
|
||||
import com.njcn.redis.utils.RedisUtil;
|
||||
import com.njcn.system.api.DictTreeFeignClient;
|
||||
import com.njcn.web.utils.RequestUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2025-09-26
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class CsTerminalLogsServiceImpl extends ServiceImpl<CsTerminalLogsMapper, CsTerminalLogs> implements ICsTerminalLogsService {
|
||||
|
||||
private final CsEquipmentDeliveryService csEquipmentDeliveryService;
|
||||
private final CsLinePOService csLinePOService;
|
||||
private final DictTreeFeignClient dictTreeFeignClient;
|
||||
private final INodeService nodeService;
|
||||
private final CldUpdateLedgerMessageTemplate template;
|
||||
private final CldControlMessageTemplate controlMessageTemplate;
|
||||
private final RedisUtil redisUtil;
|
||||
private final CsTerminalReplyMapper csTerminalReplyMapper;
|
||||
|
||||
@Override
|
||||
public void updateLogs(String id, Integer code) {
|
||||
LambdaUpdateWrapper<CsTerminalLogs> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.set(CsTerminalLogs::getIsPush, 0)
|
||||
.eq(CsTerminalLogs::getDeviceId, id);
|
||||
this.update(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
public String pushCldInfo() {
|
||||
LambdaQueryWrapper<CsTerminalLogs> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(CsTerminalLogs::getIsPush, 0);
|
||||
List<CsTerminalLogs> list = this.list(wrapper);
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
//新增台账集合
|
||||
List<String> addList = new ArrayList<>();
|
||||
//修改台账集合
|
||||
List<String> updateList = new ArrayList<>();
|
||||
//删除台账集合
|
||||
List<String> deleteList = new ArrayList<>();
|
||||
|
||||
//根据设备分组,判断设备的操作,整合
|
||||
Map<String,List<CsTerminalLogs>> map = list.stream().collect(Collectors.groupingBy(CsTerminalLogs::getDeviceId));
|
||||
map.forEach((k,v)->{
|
||||
List<Integer> operateTypeList = v.stream().map(CsTerminalLogs::getOperateType).distinct().collect(Collectors.toList());
|
||||
|
||||
if (operateTypeList.size() == 3) {
|
||||
//啥也不用干
|
||||
//deleteList.add(k);
|
||||
} else if (operateTypeList.size() == 2 && operateTypeList.contains(0) && operateTypeList.contains(1)) {
|
||||
addList.add(k);
|
||||
} else if (operateTypeList.size() == 2 && operateTypeList.contains(0) && operateTypeList.contains(2)) {
|
||||
//啥也不用干
|
||||
} else if (operateTypeList.size() == 2 && operateTypeList.contains(1) && operateTypeList.contains(2)) {
|
||||
deleteList.add(k);
|
||||
} else if (operateTypeList.size() == 1 && operateTypeList.contains(0)) {
|
||||
addList.add(k);
|
||||
} else if (operateTypeList.size() == 1 && operateTypeList.contains(1)) {
|
||||
updateList.add(k);
|
||||
} else if (operateTypeList.size() == 1 && operateTypeList.contains(2)) {
|
||||
deleteList.add(k);
|
||||
}
|
||||
});
|
||||
//整合后 所有设备的id
|
||||
List<String> devList = Stream.of(addList, updateList, deleteList).flatMap(List::stream).collect(Collectors.toList());
|
||||
//获取设备集合
|
||||
List<CsEquipmentDeliveryPO> deviceList = csEquipmentDeliveryService.listByIds(devList);
|
||||
//按照前置机id分组
|
||||
Map<String,List<CsEquipmentDeliveryPO>> nodeMap = deviceList.stream().collect(Collectors.groupingBy(CsEquipmentDeliveryPO::getNodeId));
|
||||
nodeMap.forEach((k,v)->{
|
||||
int maxProcessNum = nodeService.getNodeById(k).getMaxProcessNum();
|
||||
//按照进程号分组
|
||||
Map<Integer,List<CsEquipmentDeliveryPO>> nodeProcessMap = v.stream().collect(Collectors.groupingBy(CsEquipmentDeliveryPO::getNodeProcess));
|
||||
nodeProcessMap.forEach((k1,v1)->{
|
||||
if (v1.size() > 10) {
|
||||
//一个进程下修改的设备数量超过10台,重启该进程号下的前置
|
||||
CldControlMessage cldControlMessage = new CldControlMessage();
|
||||
cldControlMessage.setGuid(IdUtil.simpleUUID());
|
||||
cldControlMessage.setCode("set_process");
|
||||
cldControlMessage.setProcessNo(k1);
|
||||
cldControlMessage.setFun("delete");
|
||||
cldControlMessage.setProcessNum(maxProcessNum);
|
||||
controlMessageTemplate.sendMember(cldControlMessage,k);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if (CollectionUtil.isNotEmpty(addList)) {
|
||||
sendMessage(addList, deviceList, "add_terminal");
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(updateList)) {
|
||||
sendMessage(updateList, deviceList, "ledger_modify");
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(deleteList)) {
|
||||
sendDeleteMessage(deleteList, list, "delete_terminal");
|
||||
}
|
||||
|
||||
//推送完将数据改成推送
|
||||
LambdaUpdateWrapper<CsTerminalLogs> wrapper2 = new LambdaUpdateWrapper<>();
|
||||
wrapper2.set(CsTerminalLogs::getIsPush, 1);
|
||||
this.update(wrapper2);
|
||||
} else {
|
||||
return "暂无需要推送的数据";
|
||||
}
|
||||
return "成功";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateLaterData(String id, String code) {
|
||||
int operateType;
|
||||
if (Objects.equals(code, "add_terminal")) {
|
||||
operateType = 0;
|
||||
} else if (Objects.equals(code, "ledger_modify")) {
|
||||
operateType = 1;
|
||||
} else if (Objects.equals(code, "delete_terminal")){
|
||||
operateType = 2;
|
||||
} else {
|
||||
operateType = 3;
|
||||
}
|
||||
//找出最新的数据,将状态改为未推送,下次可以再次推送
|
||||
this.lambdaUpdate()
|
||||
.eq(CsTerminalLogs::getDeviceId, id)
|
||||
.eq(CsTerminalLogs::getOperateType, operateType)
|
||||
.orderByDesc(CsTerminalLogs::getCreateTime)
|
||||
.last("LIMIT 1")
|
||||
.set(CsTerminalLogs::getIsPush, 0)
|
||||
.update();
|
||||
}
|
||||
|
||||
public void sendMessage(List<String> addList, List<CsEquipmentDeliveryPO> deviceList, String type) {
|
||||
List<CsEquipmentDeliveryPO> filteredList = deviceList.stream().filter(device -> addList.contains(device.getId())).collect(Collectors.toList());
|
||||
//获取监测点信息
|
||||
List<CsLinePO> lineList = csLinePOService.getLinesByDevList(addList);
|
||||
|
||||
Map<String,List<CsEquipmentDeliveryPO>> nodeMap1 = filteredList.stream().collect(Collectors.groupingBy(CsEquipmentDeliveryPO::getNodeId));
|
||||
nodeMap1.forEach((k,v)->{
|
||||
CldUpdateLedgerMessage message = new CldUpdateLedgerMessage();
|
||||
message.setCode(type);
|
||||
//按照进程号分组
|
||||
Map<Integer,List<CsEquipmentDeliveryPO>> nodeProcessMap1 = v.stream().collect(Collectors.groupingBy(CsEquipmentDeliveryPO::getNodeProcess));
|
||||
for (Map.Entry<Integer, List<CsEquipmentDeliveryPO>> entry : nodeProcessMap1.entrySet()) {
|
||||
Integer k1 = entry.getKey();
|
||||
List<CsEquipmentDeliveryPO> v1 = entry.getValue();
|
||||
String guid = IdUtil.simpleUUID();
|
||||
message.setGuid(guid);
|
||||
message.setProcessNo(k1);
|
||||
List<CldUpdateLedgerMessage.CldDeviceDto> list1 = new ArrayList<>();
|
||||
v1.forEach(item -> {
|
||||
CldUpdateLedgerMessage.CldDeviceDto deviceDto = new CldUpdateLedgerMessage.CldDeviceDto();
|
||||
deviceDto.setId(item.getId());
|
||||
deviceDto.setNode(item.getNodeProcess());
|
||||
deviceDto.setName(item.getName());
|
||||
deviceDto.setIp(item.getMac());
|
||||
deviceDto.setDevType(dictTreeFeignClient.queryById(item.getDevModel()).getData().getName());
|
||||
Node node = nodeService.getNodeById(item.getNodeId());
|
||||
if (node != null) {
|
||||
deviceDto.setMaxProcessNum(node.getMaxProcessNum());
|
||||
}
|
||||
|
||||
if (CollectionUtil.isNotEmpty(lineList)) {
|
||||
List<CldUpdateLedgerMessage.CldMonitorDto> list2 = new ArrayList<>();
|
||||
lineList.forEach(item2 -> {
|
||||
if (Objects.equals(item.getId(), item2.getDeviceId())) {
|
||||
CldUpdateLedgerMessage.CldMonitorDto cldLineDto = new CldUpdateLedgerMessage.CldMonitorDto();
|
||||
cldLineDto.setId(item2.getLineId());
|
||||
cldLineDto.setName(item.getName());
|
||||
cldLineDto.setLineNo(String.valueOf(item2.getLineNo()));
|
||||
cldLineDto.setVoltageLevel(item2.getVolGrade() + "kV");
|
||||
cldLineDto.setStatus(item.getRunStatus());
|
||||
cldLineDto.setPtType(String.valueOf(item2.getConType()));
|
||||
cldLineDto.setDeviceId(item2.getDeviceId());
|
||||
cldLineDto.setPt1(item2.getPtRatio());
|
||||
cldLineDto.setPt2(item2.getPt2Ratio());
|
||||
cldLineDto.setCt1(item2.getCtRatio());
|
||||
cldLineDto.setCt2(item2.getCt2Ratio());
|
||||
list2.add(cldLineDto);
|
||||
}
|
||||
});
|
||||
deviceDto.setMonitorData(list2);
|
||||
}
|
||||
list1.add(deviceDto);
|
||||
|
||||
//存储发送的数据记录,用于后面响应校验
|
||||
CsTerminalReply csFmTerminalReply = new CsTerminalReply();
|
||||
csFmTerminalReply.setReplyId(guid);
|
||||
csFmTerminalReply.setCode(type);
|
||||
csFmTerminalReply.setNodeId(k);
|
||||
csFmTerminalReply.setProcessNo(k1);
|
||||
csFmTerminalReply.setDeviceId(item.getId());
|
||||
csFmTerminalReply.setIsReceived(0);
|
||||
csTerminalReplyMapper.insert(csFmTerminalReply);
|
||||
});
|
||||
message.setData(list1);
|
||||
template.sendMember(message, k);
|
||||
|
||||
//缓存本次发送数据GUID的集合,用于查询数据
|
||||
Object object = redisUtil.getObjectByKey(RequestUtil.getUserIndex()+"reply");
|
||||
if (object != null) {
|
||||
String value = object + "," + guid;
|
||||
redisUtil.saveByKeyWithExpire(RequestUtil.getUserIndex()+"reply", value, 60L);
|
||||
} else {
|
||||
redisUtil.saveByKeyWithExpire(RequestUtil.getUserIndex()+"reply", guid, 60L);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void sendDeleteMessage(List<String> list, List<CsTerminalLogs> csTerminalLogs, String type) {
|
||||
List<CsTerminalLogs> filteredList = csTerminalLogs.stream().filter(device -> list.contains(device.getDeviceId()) && Objects.equals(device.getOperateType(),2)).collect(Collectors.toList());
|
||||
Map<String,List<CsTerminalLogs>> nodeMap1 = filteredList.stream().collect(Collectors.groupingBy(CsTerminalLogs::getNodeId));
|
||||
nodeMap1.forEach((k,v)->{
|
||||
CldUpdateLedgerMessage message = new CldUpdateLedgerMessage();
|
||||
message.setCode(type);
|
||||
//按照进程号分组
|
||||
Map<Integer,List<CsTerminalLogs>> nodeProcessMap1 = v.stream().collect(Collectors.groupingBy(CsTerminalLogs::getNodeProcess));
|
||||
nodeProcessMap1.forEach((k1,v1)->{
|
||||
String guid = IdUtil.simpleUUID();
|
||||
message.setGuid(guid);
|
||||
message.setProcessNo(k1);
|
||||
List<CldUpdateLedgerMessage.CldDeviceDto> list1 = new ArrayList<>();
|
||||
v1.forEach(item->{
|
||||
CldUpdateLedgerMessage.CldDeviceDto deviceDto = new CldUpdateLedgerMessage.CldDeviceDto();
|
||||
deviceDto.setId(item.getDeviceId());
|
||||
deviceDto.setNode(item.getNodeProcess());
|
||||
Node node = nodeService.getNodeById(item.getNodeId());
|
||||
if (node != null) {
|
||||
deviceDto.setMaxProcessNum(node.getMaxProcessNum());
|
||||
}
|
||||
list1.add(deviceDto);
|
||||
|
||||
//存储发送的数据记录,用于后面响应校验
|
||||
CsTerminalReply csFmTerminalReply = new CsTerminalReply();
|
||||
csFmTerminalReply.setReplyId(guid);
|
||||
csFmTerminalReply.setCode(type);
|
||||
csFmTerminalReply.setNodeId(k);
|
||||
csFmTerminalReply.setProcessNo(k1);
|
||||
csFmTerminalReply.setDeviceId(item.getDeviceId());
|
||||
csFmTerminalReply.setDeviceName(item.getDeviceName());
|
||||
csFmTerminalReply.setIsReceived(0);
|
||||
csTerminalReplyMapper.insert(csFmTerminalReply);
|
||||
});
|
||||
message.setData(list1);
|
||||
template.sendMember(message,k);
|
||||
|
||||
//缓存本次发送数据GUID的集合,用于查询数据
|
||||
Object object = redisUtil.getObjectByKey(RequestUtil.getUserIndex()+"reply");
|
||||
if (object != null) {
|
||||
String value = object + "," + guid;
|
||||
redisUtil.saveByKeyWithExpire(RequestUtil.getUserIndex()+"reply", value, 60L);
|
||||
} else {
|
||||
redisUtil.saveByKeyWithExpire(RequestUtil.getUserIndex()+"reply", guid, 60L);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,239 @@
|
||||
package com.njcn.csdevice.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.csdevice.api.CsLedgerFeignClient;
|
||||
import com.njcn.csdevice.mapper.CsTerminalReplyMapper;
|
||||
import com.njcn.csdevice.param.IcdBzReplyParam;
|
||||
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
|
||||
import com.njcn.csdevice.pojo.po.CsTerminalReply;
|
||||
import com.njcn.csdevice.pojo.vo.CldLogsVo;
|
||||
import com.njcn.csdevice.pojo.vo.CsLedgerVO;
|
||||
import com.njcn.csdevice.service.CsEquipmentDeliveryService;
|
||||
import com.njcn.csdevice.service.ICsTerminalLogsService;
|
||||
import com.njcn.csdevice.service.ICsTerminalReplyService;
|
||||
import com.njcn.csdevice.service.INodeService;
|
||||
import com.njcn.redis.utils.RedisUtil;
|
||||
import com.njcn.web.factory.PageFactory;
|
||||
import com.njcn.web.pojo.param.BaseParam;
|
||||
import com.njcn.web.utils.RequestUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2025-10-09
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class CsTerminalReplyServiceImpl extends ServiceImpl<CsTerminalReplyMapper, CsTerminalReply> implements ICsTerminalReplyService {
|
||||
|
||||
private final RedisUtil redisUtil;
|
||||
private final INodeService nodeService;
|
||||
private final CsEquipmentDeliveryService csEquipmentDeliveryService;
|
||||
private final ICsTerminalLogsService csTerminalLogsService;
|
||||
private final CsLedgerFeignClient csLedgerFeignClient;
|
||||
|
||||
@Override
|
||||
public List<String> queryReplyData() {
|
||||
List<String> result = new ArrayList<>();
|
||||
Object object = redisUtil.getObjectByKey(RequestUtil.getUserIndex()+"reply");
|
||||
if (object != null) {
|
||||
List<String> redisList = Stream.of(object.toString().split(",")).collect(Collectors.toList());
|
||||
List<CsTerminalReply> list = this.lambdaQuery().in(CsTerminalReply::getReplyId,redisList).orderByAsc(CsTerminalReply::getCreateTime).list();
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
Map<Integer,List<CsTerminalReply>> map = list.stream().collect(Collectors.groupingBy(CsTerminalReply::getIsReceived));
|
||||
List<CsTerminalReply> list1 = map.get(1);
|
||||
if (CollectionUtil.isEmpty(list1)) {
|
||||
String key = "更新失败,未收到前置应答,请查看应答报文是否发送";
|
||||
result.add(key);
|
||||
//将cs_terminal_logs数据置为未发送
|
||||
list.forEach(item->{
|
||||
csTerminalLogsService.updateLaterData(item.getDeviceId(),item.getCode());
|
||||
});
|
||||
} else {
|
||||
list.forEach(item->{
|
||||
String key;
|
||||
String code = "";
|
||||
if (Objects.equals(item.getCode(), "add_terminal")) {
|
||||
code = "新增";
|
||||
} else if (Objects.equals(item.getCode(), "ledger_modify")) {
|
||||
code = "修改";
|
||||
} else if (Objects.equals(item.getCode(), "delete_terminal")){
|
||||
code = "删除";
|
||||
}
|
||||
String nodeName = nodeService.getNodeById(item.getNodeId()).getName();
|
||||
List<CsEquipmentDeliveryPO> devList1 = csEquipmentDeliveryService.getAll();
|
||||
List<CsEquipmentDeliveryPO> devList2 = devList1.stream().filter(item1 -> Objects.equals(item1.getId(), item.getDeviceId())).collect(Collectors.toList());
|
||||
List<String> devNameList = devList2.stream().map(CsEquipmentDeliveryPO::getName).collect(Collectors.toList());
|
||||
String devNameListString;
|
||||
if (CollectionUtil.isNotEmpty(devNameList)) {
|
||||
devNameListString = devNameList.toString();
|
||||
} else {
|
||||
devNameListString = "[" + item.getDeviceName() + "]";
|
||||
}
|
||||
if (item.getIsReceived() == 0) {
|
||||
key = nodeName + item.getProcessNo() + "号进程下," + devNameListString + "设备" + code + "数据失败";
|
||||
//将cs_terminal_logs数据置为未发送
|
||||
csTerminalLogsService.updateLaterData(item.getDeviceId(),item.getCode());
|
||||
} else {
|
||||
key = nodeName + item.getProcessNo() + "号进程下," + devNameListString + "设备" + code + "数据成功";
|
||||
}
|
||||
result.add(key);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateReplyData(IcdBzReplyParam param) {
|
||||
LambdaUpdateWrapper<CsTerminalReply> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.set(CsTerminalReply::getIsReceived,param.getState())
|
||||
.set(CsTerminalReply::getReceivedCode,param.getCode())
|
||||
.set(CsTerminalReply::getReceivedMsg,param.getMsg())
|
||||
.eq(CsTerminalReply::getReplyId,param.getId())
|
||||
.eq(CsTerminalReply::getDeviceId,param.getDeviceId());
|
||||
this.update(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CsTerminalReply> getBzReplyData(String lineId) {
|
||||
LambdaQueryWrapper<CsTerminalReply> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(CsTerminalReply::getCode,Arrays.asList("allFile","allEvent","oneFile"))
|
||||
.orderByDesc(CsTerminalReply::getCreateTime);
|
||||
if (!Objects.isNull(lineId) && StringUtils.isNotBlank(lineId)) {
|
||||
wrapper.like(CsTerminalReply::getLineId,lineId);
|
||||
}
|
||||
return this.list(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<CldLogsVo> getBzLogs(BaseParam param) {
|
||||
Page<CldLogsVo> page = new Page<>(PageFactory.getPageNum(param), PageFactory.getPageSize(param));
|
||||
QueryWrapper<CsTerminalReply> queryWrapper = new QueryWrapper<>();
|
||||
if (StrUtil.isNotBlank(param.getSearchValue())) {
|
||||
queryWrapper.like("cs_terminal_reply.line_id", param.getSearchValue());
|
||||
// //获取监测点id
|
||||
// List<CsLinePO> list = csLinePOService.getLineByName(param.getSearchValue());
|
||||
// if (CollectionUtil.isEmpty(list)) {
|
||||
// return page;
|
||||
// } else {
|
||||
// queryWrapper.and(pr -> {
|
||||
// // 获取所有 lineId
|
||||
// List<String> lineIds = list.stream()
|
||||
// .map(CsLinePO::getLineId)
|
||||
// .collect(Collectors.toList());
|
||||
// // 使用 OR 条件连接多个 lineId
|
||||
// for (int i = 0; i < lineIds.size(); i++) {
|
||||
// if (i == 0) {
|
||||
// pr.like("cs_terminal_reply.line_id", lineIds.get(i));
|
||||
// } else {
|
||||
// pr.or().like("cs_terminal_reply.line_id", lineIds.get(i));
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
}
|
||||
//排序
|
||||
queryWrapper.orderBy(true, false, "cs_terminal_reply.create_time");
|
||||
queryWrapper.in("cs_terminal_reply.code", Arrays.asList("allFile", "allEvent", "oneFile"));
|
||||
Page<CsTerminalReply> csTerminalReplyPage = this.baseMapper.page(new Page<>(PageFactory.getPageNum(param), PageFactory.getPageSize(param)), queryWrapper);
|
||||
|
||||
List<CsTerminalReply> records = csTerminalReplyPage.getRecords();
|
||||
if (CollectionUtil.isNotEmpty(records)) {
|
||||
List<CsLedgerVO> data = csLedgerFeignClient.getAllLedger().getData();
|
||||
Map<String, CsLedgerVO> ledgerMap = data.stream().collect(Collectors.toMap(CsLedgerVO::getId, Function.identity()));
|
||||
List<CldLogsVo> cldLogsVos = new ArrayList<>();
|
||||
records.forEach(item->{
|
||||
String pids = ledgerMap.get(item.getDeviceId()).getPids();
|
||||
String[] split = pids.split(",");
|
||||
CldLogsVo cldLogsVo = new CldLogsVo();
|
||||
cldLogsVo.setEngineeringName(ledgerMap.get(split[1]).getName());
|
||||
cldLogsVo.setProjectName(ledgerMap.get(split[2]).getName());
|
||||
cldLogsVo.setDeviceName(ledgerMap.get(item.getDeviceId()).getName());
|
||||
// String lineId = item.getLineId();
|
||||
// String[] lineSplit = lineId.split(",");
|
||||
// String result;
|
||||
// if (lineSplit.length == 1) {
|
||||
// result = ledgerMap.get(lineSplit[0]).getName();
|
||||
// } else {
|
||||
// result = Arrays.stream(lineSplit)
|
||||
// .map(ledgerMap::get)
|
||||
// .filter(Objects::nonNull)
|
||||
// .map(CsLedgerVO::getName)
|
||||
// .collect(Collectors.joining(","));
|
||||
// }
|
||||
// cldLogsVo.setLineName(result);
|
||||
cldLogsVo.setLineName(ledgerMap.get(param.getSearchValue()).getName());
|
||||
cldLogsVo.setLog(getLogDescription(item.getCode()));
|
||||
cldLogsVo.setLogTime(item.getCreateTime());
|
||||
if (Objects.equals(item.getIsReceived(),0)) {
|
||||
cldLogsVo.setStatus("补召已下发");
|
||||
cldLogsVo.setResult("/");
|
||||
} else {
|
||||
if (item.getReceivedCode() == 200) {
|
||||
cldLogsVo.setStatus("补召成功");
|
||||
cldLogsVo.setResult(item.getReceivedMsg());
|
||||
} else {
|
||||
cldLogsVo.setStatus("补召失败");
|
||||
cldLogsVo.setResult(item.getReceivedMsg());
|
||||
}
|
||||
}
|
||||
cldLogsVos.add(cldLogsVo);
|
||||
});
|
||||
page.setRecords(cldLogsVos);
|
||||
}
|
||||
page.setTotal(csTerminalReplyPage.getTotal());
|
||||
page.setPages(csTerminalReplyPage.getPages());
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateBzData(IcdBzReplyParam param) {
|
||||
LambdaUpdateWrapper<CsTerminalReply> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.set(CsTerminalReply::getIsReceived,param.getState())
|
||||
.set(CsTerminalReply::getReceivedCode,param.getCode())
|
||||
.set(CsTerminalReply::getReceivedMsg,param.getMsg())
|
||||
.eq(CsTerminalReply::getReplyId,param.getId())
|
||||
.eq(CsTerminalReply::getDeviceId,param.getDeviceId());
|
||||
if (Objects.nonNull(param.getLineId()) && StringUtils.isNotBlank(param.getLineId())) {
|
||||
wrapper.eq(CsTerminalReply::getLineId,param.getLineId());
|
||||
}
|
||||
this.update(wrapper);
|
||||
}
|
||||
|
||||
public String getLogDescription(String code) {
|
||||
String result;
|
||||
switch (code) {
|
||||
case "allFile":
|
||||
result = "补召缺失波形文件";
|
||||
break;
|
||||
case "allEvent":
|
||||
result = "补召事件";
|
||||
break;
|
||||
case "oneFile":
|
||||
result = "补召单事件波形";
|
||||
break;
|
||||
default:
|
||||
result = "未知";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,17 @@
|
||||
package com.njcn.csdevice.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.csp.sentinel.util.StringUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.github.tocrhz.mqtt.publisher.MqttPublisher;
|
||||
import com.njcn.access.utils.ChannelObjectUtil;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.csdevice.param.IcdBzParam;
|
||||
import com.njcn.csdevice.param.IcdLedgerParam;
|
||||
import com.njcn.csdevice.param.IcdParam;
|
||||
import com.njcn.csdevice.pojo.param.AppProjectAddParm;
|
||||
@@ -16,6 +21,10 @@ import com.njcn.csdevice.pojo.po.*;
|
||||
import com.njcn.csdevice.pojo.vo.CldLedgerVo;
|
||||
import com.njcn.csdevice.pojo.vo.DeviceInfo;
|
||||
import com.njcn.csdevice.service.*;
|
||||
import com.njcn.csharmonic.api.EventFeignClient;
|
||||
import com.njcn.csharmonic.pojo.po.CsEventPO;
|
||||
import com.njcn.mq.message.BZEventMessage;
|
||||
import com.njcn.mq.template.BZEventMessageTemplate;
|
||||
import com.njcn.redis.pojo.enums.AppRedisKey;
|
||||
import com.njcn.redis.utils.RedisUtil;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
@@ -26,6 +35,8 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -43,7 +54,11 @@ class IcdServiceImpl implements IcdService {
|
||||
private final CsEquipmentDeliveryService csEquipmentDeliveryService;
|
||||
private final CsLinePOService csLinePOService;
|
||||
private final ICsLedgerService csLedgerService;
|
||||
private final MqttPublisher publisher;
|
||||
private final BZEventMessageTemplate bzEventMessageTemplate;
|
||||
private final EventFeignClient eventFeignClient;
|
||||
private final ICsTerminalLogsService csTerminalLogsService;
|
||||
private final ICsTerminalReplyService csTerminalReplyService;
|
||||
private final DateTimeFormatter microsecondFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
|
||||
|
||||
@Override
|
||||
public List<DeviceInfo> getLedgerInfo(IcdParam param) {
|
||||
@@ -59,7 +74,7 @@ class IcdServiceImpl implements IcdService {
|
||||
|
||||
List<DeviceInfo> result = new ArrayList<>();
|
||||
//根据ip获取前置机信息
|
||||
Node node = nodeService.getNodeByIp(param.getIp());
|
||||
Node node = nodeService.getNodeById(param.getId());
|
||||
if (ObjectUtil.isNotNull(node)) {
|
||||
//根据前置机ip获取装置信息
|
||||
List<CsEquipmentDeliveryPO> poList = csEquipmentDeliveryService.getCldDevByIp(node.getId(),param.getRunFlag());
|
||||
@@ -77,6 +92,7 @@ class IcdServiceImpl implements IcdService {
|
||||
detail.setIp(dev.getMac());
|
||||
detail.setDevType(Objects.isNull(finalSysDicTreeMap.get(dev.getDevModel())) ? "/":finalSysDicTreeMap.get(dev.getDevModel()).getCode());
|
||||
detail.setNode(dev.getNodeProcess());
|
||||
detail.setMaxProcessNum(node.getMaxProcessNum());
|
||||
|
||||
// 只获取当前设备的监测点数据
|
||||
List<CsLinePO> lines = lineMap.get(dev.getId());
|
||||
@@ -122,10 +138,8 @@ class IcdServiceImpl implements IcdService {
|
||||
handleFromProjectCreation(param);
|
||||
}
|
||||
// 第四种:从设备创建
|
||||
else if (CollectionUtil.isNotEmpty(param.getDevice())) {
|
||||
else if (ObjectUtil.isNotNull(param.getDevIndex())) {
|
||||
handleFromDeviceCreation(param);
|
||||
//todo 新增完监测点后,需要通知前置修改台账信息
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,6 +174,319 @@ class IcdServiceImpl implements IcdService {
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void bzFileByEventId(String eventId) {
|
||||
CsEventPO po = eventFeignClient.queryById(eventId).getData();
|
||||
if (ObjectUtil.isNull(po)) {
|
||||
throw new BusinessException("事件缺失");
|
||||
}
|
||||
//获取设备信息
|
||||
CsEquipmentDeliveryPO dev = csEquipmentDeliveryService.getDevByLineId(po.getLineId());
|
||||
BZEventMessage.Event file = new BZEventMessage.Event();
|
||||
file.setGuid(po.getId());
|
||||
file.setTerminalId(po.getDeviceId());
|
||||
file.setMonitorIdList(Collections.singletonList(po.getLineId()));
|
||||
file.setTimeInterval(Collections.singletonList(po.getStartTime().format(microsecondFormatter)));
|
||||
file.setDataType(2);
|
||||
//记录发送日志
|
||||
CsTerminalLogs csTerminalLogs = new CsTerminalLogs();
|
||||
csTerminalLogs.setId(po.getId());
|
||||
csTerminalLogs.setDeviceId(dev.getId());
|
||||
csTerminalLogs.setLineId(po.getLineId());
|
||||
csTerminalLogs.setOperateType(3);
|
||||
csTerminalLogs.setNodeId(dev.getNodeId());
|
||||
csTerminalLogs.setNodeProcess(dev.getNodeProcess());
|
||||
csTerminalLogs.setIsPush(1);
|
||||
csTerminalLogsService.saveOrUpdate(csTerminalLogs);
|
||||
//记录响应日志
|
||||
CsTerminalReply csTerminalReply = new CsTerminalReply();
|
||||
csTerminalReply.setId(IdUtil.simpleUUID());
|
||||
csTerminalReply.setReplyId(po.getId());
|
||||
csTerminalReply.setNodeId(dev.getNodeId());
|
||||
csTerminalReply.setProcessNo(dev.getNodeProcess());
|
||||
csTerminalReply.setDeviceId(dev.getId());
|
||||
csTerminalReply.setLineId(po.getLineId());
|
||||
csTerminalReply.setIsReceived(0);
|
||||
csTerminalReply.setCode("oneFile");
|
||||
csTerminalReplyService.saveOrUpdate(csTerminalReply);
|
||||
//发送消息
|
||||
bzEventMessageTemplate.sendMember(Collections.singletonList(file),dev.getNodeId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void bzEvent(IcdBzParam param) {
|
||||
// 参数校验
|
||||
if (StrUtil.isBlank(param.getStartTime()) || StrUtil.isBlank(param.getEndTime())) {
|
||||
throw new BusinessException("开始时间和结束时间不能为空");
|
||||
}
|
||||
LocalDateTime startLocalDate;
|
||||
LocalDateTime endLocalDate;
|
||||
try {
|
||||
startLocalDate = LocalDateTimeUtil.parse(param.getStartTime(), DatePattern.NORM_DATE_PATTERN);
|
||||
endLocalDate = LocalDateTimeUtil.parse(param.getEndTime(), DatePattern.NORM_DATE_PATTERN);
|
||||
} catch (Exception e) {
|
||||
throw new BusinessException("时间格式不正确,请使用 yyyy-MM-dd 格式");
|
||||
}
|
||||
String beginDay = LocalDateTimeUtil.format(
|
||||
LocalDateTimeUtil.beginOfDay(startLocalDate),
|
||||
DatePattern.NORM_DATETIME_PATTERN
|
||||
);
|
||||
String endDay = LocalDateTimeUtil.format(
|
||||
LocalDateTimeUtil.endOfDay(endLocalDate),
|
||||
DatePattern.NORM_DATETIME_PATTERN
|
||||
);
|
||||
if (CollectionUtil.isNotEmpty(param.getLineList())) {
|
||||
processWithLineIds(param.getLineList(), beginDay, endDay);
|
||||
} else {
|
||||
processWithoutLineIds(beginDay, endDay);
|
||||
}
|
||||
}
|
||||
|
||||
private void processWithLineIds(List<String> lineList, String beginDay, String endDay) {
|
||||
List<CsLinePO> csLineList = csLinePOService.listByIds(lineList);
|
||||
List<String> deviceIdList = csLineList.stream()
|
||||
.map(CsLinePO::getDeviceId)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<CsEquipmentDeliveryPO> equipmentList = csEquipmentDeliveryService.listByIds(deviceIdList);
|
||||
Map<String, List<CsEquipmentDeliveryPO>> devMap = equipmentList.stream()
|
||||
.collect(Collectors.groupingBy(CsEquipmentDeliveryPO::getNodeId));
|
||||
|
||||
handleEventsAndLogs(devMap, csLineList, beginDay, endDay);
|
||||
}
|
||||
|
||||
private void processWithoutLineIds(String beginDay, String endDay) {
|
||||
List<CsEquipmentDeliveryPO> devList = csEquipmentDeliveryService.getAllOnline();
|
||||
if (CollectionUtil.isEmpty(devList)) return;
|
||||
|
||||
List<String> deviceIds = devList.stream()
|
||||
.map(CsEquipmentDeliveryPO::getId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<CsLinePO> csLineList = csLinePOService.getLinesByDevList(deviceIds);
|
||||
Map<String, List<CsEquipmentDeliveryPO>> devMap = devList.stream()
|
||||
.collect(Collectors.groupingBy(CsEquipmentDeliveryPO::getNodeId));
|
||||
|
||||
handleEventsAndLogs(devMap, csLineList, beginDay, endDay);
|
||||
}
|
||||
|
||||
private void handleEventsAndLogs(
|
||||
Map<String, List<CsEquipmentDeliveryPO>> devMap,
|
||||
List<CsLinePO> csLineList,
|
||||
String beginDay,
|
||||
String endDay
|
||||
) {
|
||||
devMap.forEach((nodeId, devices) -> {
|
||||
List<BZEventMessage.Event> events = new ArrayList<>();
|
||||
List<CsTerminalLogs> logsToSave = new ArrayList<>();
|
||||
List<CsTerminalReply> repliesToSave = new ArrayList<>();
|
||||
|
||||
for (CsEquipmentDeliveryPO device : devices) {
|
||||
String uuid = IdUtil.simpleUUID();
|
||||
|
||||
BZEventMessage.Event event = buildEvent(uuid, device, csLineList, beginDay, endDay);
|
||||
events.add(event);
|
||||
|
||||
CsTerminalLogs log = buildTerminalLog(uuid, device, csLineList);
|
||||
logsToSave.add(log);
|
||||
|
||||
List<CsTerminalReply> reply = buildTerminalReply(uuid, device, csLineList);
|
||||
repliesToSave.addAll(reply);
|
||||
}
|
||||
csTerminalLogsService.saveBatch(logsToSave);
|
||||
csTerminalReplyService.saveBatch(repliesToSave);
|
||||
bzEventMessageTemplate.sendMember(events, nodeId);
|
||||
});
|
||||
}
|
||||
|
||||
private BZEventMessage.Event buildEvent(String guid, CsEquipmentDeliveryPO device,
|
||||
List<CsLinePO> csLineList, String beginDay, String endDay) {
|
||||
BZEventMessage.Event event = new BZEventMessage.Event();
|
||||
event.setGuid(guid);
|
||||
event.setTerminalId(device.getId());
|
||||
|
||||
List<String> monitorIds = csLineList.stream()
|
||||
.filter(line -> Objects.equals(line.getDeviceId(), device.getId()))
|
||||
.map(CsLinePO::getLineId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
event.setMonitorIdList(monitorIds);
|
||||
event.setDataType(1);
|
||||
event.setTimeInterval(Collections.singletonList(beginDay + "~" + endDay));
|
||||
return event;
|
||||
}
|
||||
|
||||
private CsTerminalLogs buildTerminalLog(String id, CsEquipmentDeliveryPO device,
|
||||
List<CsLinePO> csLineList) {
|
||||
List<String> lineIds = csLineList.stream()
|
||||
.filter(line -> Objects.equals(line.getDeviceId(), device.getId()))
|
||||
.map(CsLinePO::getLineId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
CsTerminalLogs log = new CsTerminalLogs();
|
||||
log.setId(id);
|
||||
log.setDeviceId(device.getId());
|
||||
log.setLineId(String.join(",", lineIds));
|
||||
log.setOperateType(3);
|
||||
log.setNodeId(device.getNodeId());
|
||||
log.setNodeProcess(device.getNodeProcess());
|
||||
log.setIsPush(1);
|
||||
return log;
|
||||
}
|
||||
|
||||
private List<CsTerminalReply> buildTerminalReply(String replyId, CsEquipmentDeliveryPO device,
|
||||
List<CsLinePO> csLineList) {
|
||||
List<CsTerminalReply> replies = new ArrayList<>();
|
||||
List<String> lineIds = csLineList.stream()
|
||||
.filter(line -> Objects.equals(line.getDeviceId(), device.getId()))
|
||||
.map(CsLinePO::getLineId)
|
||||
.collect(Collectors.toList());
|
||||
lineIds.forEach(lineId -> {
|
||||
CsTerminalReply reply = new CsTerminalReply();
|
||||
reply.setId(IdUtil.simpleUUID());
|
||||
reply.setReplyId(replyId);
|
||||
reply.setNodeId(device.getNodeId());
|
||||
reply.setProcessNo(device.getNodeProcess());
|
||||
reply.setDeviceId(device.getId());
|
||||
reply.setLineId(lineId);
|
||||
reply.setIsReceived(0);
|
||||
reply.setCode("allEvent");
|
||||
replies.add(reply);
|
||||
});
|
||||
return replies;
|
||||
}
|
||||
|
||||
// private CsTerminalReply buildTerminalReply(String replyId, CsEquipmentDeliveryPO device,
|
||||
// List<CsLinePO> csLineList) {
|
||||
// List<String> lineIds = csLineList.stream()
|
||||
// .filter(line -> Objects.equals(line.getDeviceId(), device.getId()))
|
||||
// .map(CsLinePO::getLineId)
|
||||
// .collect(Collectors.toList());
|
||||
//
|
||||
// CsTerminalReply reply = new CsTerminalReply();
|
||||
// reply.setId(IdUtil.simpleUUID());
|
||||
// reply.setReplyId(replyId);
|
||||
// reply.setNodeId(device.getNodeId());
|
||||
// reply.setProcessNo(device.getNodeProcess());
|
||||
// reply.setDeviceId(device.getId());
|
||||
// reply.setLineId(String.join(",", lineIds));
|
||||
// reply.setIsReceived(0);
|
||||
// reply.setCode("allEvent");
|
||||
// return reply;
|
||||
// }
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void bzFile(IcdBzParam param) {
|
||||
String beginDay = LocalDateTimeUtil.format(
|
||||
LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.parse(param.getStartTime(), DatePattern.NORM_DATE_PATTERN)),
|
||||
DatePattern.NORM_DATETIME_PATTERN
|
||||
);
|
||||
String endDay = LocalDateTimeUtil.format(
|
||||
LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.parse(param.getEndTime(), DatePattern.NORM_DATE_PATTERN)),
|
||||
DatePattern.NORM_DATETIME_PATTERN
|
||||
);
|
||||
|
||||
// 获取监测点没有波形的事件信息
|
||||
List<CsEventPO> eventList = eventFeignClient.getEventByTime(param.getLineList(), beginDay, endDay).getData();
|
||||
if (CollUtil.isEmpty(eventList)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取装置信息,用于区分不同服务器
|
||||
List<String> deviceIds = eventList.stream()
|
||||
.map(CsEventPO::getDeviceId)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (CollUtil.isEmpty(deviceIds)) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<CsEquipmentDeliveryPO> equipmentList = csEquipmentDeliveryService.listByIds(deviceIds);
|
||||
if (CollUtil.isEmpty(equipmentList)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<String, List<CsEquipmentDeliveryPO>> nodeToDeviceMap = equipmentList.stream()
|
||||
.collect(Collectors.groupingBy(CsEquipmentDeliveryPO::getNodeId));
|
||||
|
||||
// 构建 deviceId -> CsEventPO 映射,避免重复 filter
|
||||
Map<String, List<CsEventPO>> deviceToEventMap = eventList.stream()
|
||||
.filter(event -> event.getDeviceId() != null)
|
||||
.collect(Collectors.groupingBy(CsEventPO::getDeviceId));
|
||||
|
||||
nodeToDeviceMap.forEach((nodeId, deviceList) -> {
|
||||
List<BZEventMessage.Event> msgList = new ArrayList<>();
|
||||
List<CsTerminalLogs> logList = new ArrayList<>();
|
||||
List<CsTerminalReply> replyList = new ArrayList<>();
|
||||
|
||||
for (CsEquipmentDeliveryPO device : deviceList) {
|
||||
String deviceId = device.getId();
|
||||
List<CsEventPO> eventsForDevice = deviceToEventMap.getOrDefault(deviceId, Collections.emptyList());
|
||||
|
||||
Map<String, List<CsEventPO>> lineToEventMap = eventsForDevice.stream()
|
||||
.filter(event -> event.getLineId() != null)
|
||||
.collect(Collectors.groupingBy(CsEventPO::getLineId));
|
||||
|
||||
lineToEventMap.forEach((lineId, eventGroup) -> {
|
||||
BZEventMessage.Event event = new BZEventMessage.Event();
|
||||
String guid = IdUtil.simpleUUID();
|
||||
event.setGuid(guid);
|
||||
event.setTerminalId(deviceId);
|
||||
event.setMonitorIdList(Collections.singletonList(lineId));
|
||||
event.setDataType(2);
|
||||
|
||||
List<String> timeList = eventGroup.stream()
|
||||
.map(CsEventPO::getStartTime)
|
||||
.filter(Objects::nonNull)
|
||||
.map(dt -> dt.format(microsecondFormatter))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
event.setTimeInterval(timeList);
|
||||
msgList.add(event);
|
||||
|
||||
// 记录发送日志
|
||||
CsTerminalLogs log = new CsTerminalLogs();
|
||||
log.setId(guid);
|
||||
log.setDeviceId(deviceId);
|
||||
log.setLineId(lineId);
|
||||
log.setOperateType(3);
|
||||
log.setNodeId(device.getNodeId());
|
||||
log.setNodeProcess(device.getNodeProcess());
|
||||
log.setIsPush(1);
|
||||
logList.add(log);
|
||||
|
||||
// 记录响应日志
|
||||
CsTerminalReply reply = new CsTerminalReply();
|
||||
reply.setId(IdUtil.simpleUUID());
|
||||
reply.setReplyId(guid);
|
||||
reply.setNodeId(device.getNodeId());
|
||||
reply.setProcessNo(device.getNodeProcess());
|
||||
reply.setDeviceId(deviceId);
|
||||
reply.setLineId(lineId);
|
||||
reply.setIsReceived(0);
|
||||
reply.setCode("allFile");
|
||||
replyList.add(reply);
|
||||
});
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(logList)) {
|
||||
csTerminalLogsService.saveBatch(logList);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(replyList)) {
|
||||
csTerminalReplyService.saveBatch(replyList);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(msgList)) {
|
||||
bzEventMessageTemplate.sendMember(msgList, nodeId);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置工程信息
|
||||
*/
|
||||
@@ -202,7 +529,9 @@ class IcdServiceImpl implements IcdService {
|
||||
vo.setProjectInfoList(appProjectPOS);
|
||||
// 设置设备信息
|
||||
List<CsEquipmentDeliveryPO> devList = csEquipmentDeliveryService.getDevListByProjectId(id);
|
||||
vo.setDeviceInfoList(devList);
|
||||
if (CollectionUtil.isNotEmpty(devList)) {
|
||||
vo.setDeviceInfoList(devList);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -242,12 +571,6 @@ class IcdServiceImpl implements IcdService {
|
||||
// 设置线路信息
|
||||
List<CsLinePO> line = csLinePOService.listByIds(Collections.singletonList(id));
|
||||
vo.setLineInfoList(line);
|
||||
}
|
||||
|
||||
public void sendFrontLedger() {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private boolean isAllIndicesNull(IcdLedgerParam param) {
|
||||
@@ -291,18 +614,22 @@ class IcdServiceImpl implements IcdService {
|
||||
List<CsEquipmentDeliveryAddParm> devList = param.getDevice();
|
||||
if (CollectionUtil.isNotEmpty(devList)) {
|
||||
Map<String,String> devMacMap = new HashMap<>();
|
||||
Map<String, CsEquipmentDeliveryPO> devMap = new HashMap<>();
|
||||
for (CsEquipmentDeliveryAddParm dev : devList) {
|
||||
dev.setEngineeringId(param.getEngineeringIndex());
|
||||
dev.setProjectId(param.getProjectIndex());
|
||||
CsEquipmentDeliveryPO po3 = csEquipmentDeliveryService.saveCld(dev);
|
||||
devMacMap.put(dev.getMac(),po3.getId());
|
||||
devMap.put(dev.getMac(),po3);
|
||||
}
|
||||
param.setDevMacMap(devMacMap);
|
||||
param.setDevMap(devMap);
|
||||
}
|
||||
saveLines(param);
|
||||
}
|
||||
|
||||
private void saveLines(IcdLedgerParam param) {
|
||||
List<CsLinePO> list = new ArrayList<>();
|
||||
List<CsLineParam> lineList = param.getLine();
|
||||
if (CollectionUtil.isNotEmpty(lineList)) {
|
||||
boolean result = checkAndAlertDuplicates(lineList);
|
||||
@@ -323,8 +650,20 @@ class IcdServiceImpl implements IcdService {
|
||||
}
|
||||
line.setDevId(param.getDevIndex());
|
||||
}
|
||||
csLinePOService.addCldLine(line);
|
||||
CsLinePO po = csLinePOService.addCldLine(line);
|
||||
list.add(po);
|
||||
}
|
||||
|
||||
//新增台账日志
|
||||
CsTerminalLogs csTerminalLogs = new CsTerminalLogs();
|
||||
if (ObjectUtil.isNotNull(param.getDevIndex()) && StringUtil.isNotBlank(param.getDevIndex())) {
|
||||
csTerminalLogs.setDeviceId(param.getDevIndex());
|
||||
} else {
|
||||
csTerminalLogs.setDeviceId(param.getDevMacMap().get(lineList.get(0).getDevMac()));
|
||||
}
|
||||
csTerminalLogs.setOperateType(0);
|
||||
csTerminalLogs.setIsPush(0);
|
||||
csTerminalLogsService.save(csTerminalLogs);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.csdevice.service.impl;
|
||||
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
@@ -13,11 +14,16 @@ import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.csdevice.enums.AlgorithmResponseEnum;
|
||||
import com.njcn.csdevice.mapper.CsEquipmentDeliveryMapper;
|
||||
import com.njcn.csdevice.mapper.NodeMapper;
|
||||
import com.njcn.csdevice.param.IcdNodeParam;
|
||||
import com.njcn.csdevice.pojo.param.NodeParam;
|
||||
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
|
||||
import com.njcn.csdevice.pojo.po.Node;
|
||||
import com.njcn.csdevice.pojo.vo.NodeProcessDeviceVo;
|
||||
import com.njcn.csdevice.service.INodeService;
|
||||
import com.njcn.db.constant.DbConstant;
|
||||
import com.njcn.device.biz.enums.DeviceResponseEnum;
|
||||
import com.njcn.mq.message.CldControlMessage;
|
||||
import com.njcn.mq.template.CldControlMessageTemplate;
|
||||
import com.njcn.web.factory.PageFactory;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
@@ -25,8 +31,11 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -42,6 +51,7 @@ import java.util.Objects;
|
||||
public class NodeServiceImpl extends ServiceImpl<NodeMapper, Node> implements INodeService {
|
||||
|
||||
private final CsEquipmentDeliveryMapper csEquipmentDeliveryMapper;
|
||||
private final CldControlMessageTemplate controlMessageTemplate;
|
||||
|
||||
@Override
|
||||
public boolean addNode(NodeParam nodeParam) {
|
||||
@@ -143,6 +153,102 @@ public class NodeServiceImpl extends ServiceImpl<NodeMapper, Node> implements IN
|
||||
return this.baseMapper.selectOne(nodeLambdaQueryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NodeProcessDeviceVo getProcessNoAndDeviceById(String id) {
|
||||
NodeProcessDeviceVo nodeProcessDeviceVo = new NodeProcessDeviceVo();
|
||||
Node node = this.getById(id);
|
||||
nodeProcessDeviceVo.setNode(node);
|
||||
List<NodeProcessDeviceVo.ProcessDevice> processDeviceList = new ArrayList<>();
|
||||
List<CsEquipmentDeliveryPO> devList = csEquipmentDeliveryMapper.getDataByNodeIdAndProcessNo(id,null);
|
||||
for (int i = 1; i <= node.getMaxProcessNum(); i++) {
|
||||
int finalI = i;
|
||||
NodeProcessDeviceVo.ProcessDevice processDevice = new NodeProcessDeviceVo.ProcessDevice();
|
||||
processDevice.setProcessNo(i);
|
||||
processDevice.setDeviceInfoList(devList.stream().filter(dev -> Objects.equals(dev.getNodeProcess(), finalI)).collect(Collectors.toList()));
|
||||
processDeviceList.add(processDevice);
|
||||
}
|
||||
nodeProcessDeviceVo.setProcessDeviceList(processDeviceList);
|
||||
return nodeProcessDeviceVo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restartProcess(String nodeId, Integer processNo) {
|
||||
Node node = getNodeById(nodeId);
|
||||
CldControlMessage cldControlMessage = new CldControlMessage();
|
||||
cldControlMessage.setGuid(IdUtil.simpleUUID());
|
||||
cldControlMessage.setCode("set_process");
|
||||
cldControlMessage.setNodeId(nodeId);
|
||||
cldControlMessage.setProcessNo(processNo);
|
||||
cldControlMessage.setFun("delete");
|
||||
cldControlMessage.setProcessNum(node.getMaxProcessNum());
|
||||
controlMessageTemplate.sendMember(cldControlMessage,nodeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String updateDevProcessNo(String id, Integer processNo) {
|
||||
String result;
|
||||
LambdaQueryWrapper<CsEquipmentDeliveryPO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(CsEquipmentDeliveryPO::getId,id);
|
||||
CsEquipmentDeliveryPO po = csEquipmentDeliveryMapper.selectOne(wrapper);
|
||||
if (Objects.equals(po.getNodeProcess(),processNo)) {
|
||||
return "修改进程号前后一致,暂不调整";
|
||||
}
|
||||
int oldProcessNo = po.getNodeProcess();
|
||||
po.setNodeProcess(processNo);
|
||||
int count = csEquipmentDeliveryMapper.updateById(po);
|
||||
if (count > 0) {
|
||||
result = "修改成功";
|
||||
//重启前置机进程(两个)
|
||||
//原来的
|
||||
restartProcess(po.getNodeId(), oldProcessNo);
|
||||
//修改后的
|
||||
restartProcess(po.getNodeId(), processNo);
|
||||
} else {
|
||||
result = "修改失败";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String updateDevNode(IcdNodeParam param) {
|
||||
String result;
|
||||
LambdaQueryWrapper<CsEquipmentDeliveryPO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(CsEquipmentDeliveryPO::getId,param.getId());
|
||||
CsEquipmentDeliveryPO po = csEquipmentDeliveryMapper.selectOne(wrapper);
|
||||
if (Objects.equals(po.getNodeId(),param.getNodeId()) && Objects.equals(po.getNodeProcess(),param.getProcessNo())) {
|
||||
return "前置机修改前后一致,暂不调整";
|
||||
}
|
||||
Node node = getNodeById(param.getNodeId());
|
||||
List<CsEquipmentDeliveryPO> devList = getListByNodeId(param.getNodeId());
|
||||
if (ObjectUtil.isNotEmpty(devList) && devList.size() >= node.getNodeDevNum()) {
|
||||
throw new BusinessException (AlgorithmResponseEnum.OVER_MAX_DEV_COUNT);
|
||||
}
|
||||
|
||||
int oldProcessNo = po.getNodeProcess();
|
||||
po.setNodeId(param.getNodeId());
|
||||
po.setNodeProcess(param.getProcessNo());
|
||||
int count = csEquipmentDeliveryMapper.updateById(po);
|
||||
if (count > 0) {
|
||||
result = "修改成功";
|
||||
//重启前置机进程(两个)
|
||||
//原来的
|
||||
restartProcess(po.getNodeId(), oldProcessNo);
|
||||
//修改后的
|
||||
restartProcess(param.getNodeId(), param.getProcessNo());
|
||||
} else {
|
||||
result = "修改失败";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//根据前置机id获取装置数量
|
||||
public List<CsEquipmentDeliveryPO> getListByNodeId(String nodeId) {
|
||||
LambdaQueryWrapper<CsEquipmentDeliveryPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(CsEquipmentDeliveryPO::getNodeId,nodeId)
|
||||
.in(CsEquipmentDeliveryPO::getRunStatus, Arrays.asList(1,2));
|
||||
return csEquipmentDeliveryMapper.selectList(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验参数,检查是否存在相同编码的字典类型
|
||||
*/
|
||||
|
||||
@@ -6,11 +6,11 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||
import com.njcn.csdevice.mapper.RStatIntegrityDMapper;
|
||||
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
|
||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||
import com.njcn.csdevice.pojo.po.RStatIntegrityD;
|
||||
import com.njcn.csdevice.service.CsEquipmentDeliveryService;
|
||||
import com.njcn.csdevice.service.IRStatIntegrityDService;
|
||||
import com.njcn.csdevice.util.TimeUtil;
|
||||
import com.njcn.csharmonic.pojo.param.StatisticsDataParam;
|
||||
@@ -42,15 +42,21 @@ import java.util.stream.Collectors;
|
||||
@RequiredArgsConstructor
|
||||
public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMapper, RStatIntegrityD> implements IRStatIntegrityDService {
|
||||
|
||||
private final EquipmentFeignClient equipmentFeignClient;
|
||||
private final CsLineFeignClient csLineFeignClient;
|
||||
private final CommonService commonService;
|
||||
private final CsEquipmentDeliveryService csEquipmentDeliveryService;
|
||||
|
||||
@Override
|
||||
public void addData(StatisticsDataParam param) {
|
||||
List<RStatIntegrityD> result = new ArrayList<>();
|
||||
//获取库中正常的所有装置
|
||||
List<CsEquipmentDeliveryPO> devList = equipmentFeignClient.getAll().getData();
|
||||
List<CsEquipmentDeliveryPO> devList;
|
||||
//判断是否指定设备补招
|
||||
if (CollectionUtil.isNotEmpty(param.getIdList())) {
|
||||
devList = csEquipmentDeliveryService.getListByIds(param.getIdList());
|
||||
} else {
|
||||
//获取库中正常的所有装置
|
||||
devList = csEquipmentDeliveryService.getAll();
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(devList)) {
|
||||
Map<String, CsEquipmentDeliveryPO> devMap = devList.stream().collect(Collectors.toMap(CsEquipmentDeliveryPO::getId, Function.identity()));
|
||||
//获取所有监测点
|
||||
|
||||
@@ -6,16 +6,15 @@ import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||
import com.njcn.csdevice.mapper.RStatOnlineRateDMapper;
|
||||
import com.njcn.csdevice.param.LineCountEvaluateParam;
|
||||
import com.njcn.csdevice.pojo.dto.PqsCommunicateDto;
|
||||
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
|
||||
import com.njcn.csdevice.pojo.po.RStatOnlineRateD;
|
||||
import com.njcn.csdevice.service.CsEquipmentDeliveryService;
|
||||
import com.njcn.csdevice.service.ICsCommunicateService;
|
||||
import com.njcn.csdevice.service.IRStatOnlineRateDService;
|
||||
import com.njcn.csdevice.util.TimeUtil;
|
||||
import com.njcn.csharmonic.param.DataParam;
|
||||
import com.njcn.csharmonic.pojo.param.StatisticsDataParam;
|
||||
import com.njcn.influx.deprecated.InfluxDBPublicParam;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -25,7 +24,6 @@ import org.springframework.stereotype.Service;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
@@ -46,14 +44,24 @@ import java.util.List;
|
||||
public class RStatOnlineRateDServiceImpl extends MppServiceImpl<RStatOnlineRateDMapper, RStatOnlineRateD> implements IRStatOnlineRateDService {
|
||||
|
||||
private final Integer online = 1;
|
||||
private final EquipmentFeignClient equipmentFeignClient;
|
||||
private final ICsCommunicateService pqsCommunicateService;
|
||||
private final CsEquipmentDeliveryService csEquipmentDeliveryService;
|
||||
|
||||
@Override
|
||||
public void addData(StatisticsDataParam param) {
|
||||
List<RStatOnlineRateD> list = new ArrayList<>();
|
||||
//获取库中正常的所有装置
|
||||
List<CsEquipmentDeliveryPO> devList = equipmentFeignClient.getAll().getData();
|
||||
List<CsEquipmentDeliveryPO> devList;
|
||||
//判断是否指定设备补招
|
||||
if (CollectionUtil.isNotEmpty(param.getIdList())) {
|
||||
devList = csEquipmentDeliveryService.getListByIds(param.getIdList());
|
||||
} else {
|
||||
//获取库中正常的所有装置
|
||||
devList = csEquipmentDeliveryService.getAll();
|
||||
}
|
||||
if (CollectionUtil.isEmpty(devList)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (CollectionUtil.isNotEmpty(devList)) {
|
||||
//获取需要计算的时间
|
||||
List<String> dateRange = TimeUtil.getDateRangeAsString(param.getStartTime(), param.getEndTime());
|
||||
@@ -190,6 +198,8 @@ public class RStatOnlineRateDServiceImpl extends MppServiceImpl<RStatOnlineRateD
|
||||
} catch (ParseException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
} else {
|
||||
minute = InfluxDBPublicParam.DAY_MINUTE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
package com.njcn.csdevice.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.njcn.csdevice.mapper.*;
|
||||
import com.njcn.csdevice.pojo.po.*;
|
||||
import com.njcn.csdevice.pojo.vo.CsMarketDataVO;
|
||||
import com.njcn.csdevice.service.CsLinePOService;
|
||||
import com.njcn.csdevice.service.CsMarketDataService;
|
||||
import com.njcn.csdevice.service.RoleEngineerDevService;
|
||||
import com.njcn.user.enums.AppRoleEnum;
|
||||
import com.njcn.web.utils.RequestUtil;
|
||||
@@ -16,7 +12,6 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -99,7 +94,7 @@ public class RoleEngineerDevServiceImpl implements RoleEngineerDevService {
|
||||
List<CsTouristDataPO> csTouristDataPOS = csTouristDataPOMapper.selectList(null);
|
||||
collect = csTouristDataPOS.stream().map(CsTouristDataPO::getEnginerId).distinct().collect(Collectors.toList());
|
||||
|
||||
}else if(Objects.equals(role,AppRoleEnum.ROOT.getCode())||Objects.equals(role,AppRoleEnum.OPERATION_MANAGER.getCode())){
|
||||
}else if(Objects.equals(role,AppRoleEnum.ROOT.getCode())||Objects.equals(role,AppRoleEnum.OPERATION_MANAGER.getCode())||Objects.equals(role,"bxs_user")){
|
||||
List<CsEngineeringPO> csEngineeringPOS = csEngineeringMapper.selectList(null);
|
||||
collect =csEngineeringPOS.stream().filter(temp->Objects.equals(temp.getStatus(),"1")).map(CsEngineeringPO::getId).collect(Collectors.toList());
|
||||
}
|
||||
@@ -201,7 +196,7 @@ public class RoleEngineerDevServiceImpl implements RoleEngineerDevService {
|
||||
List<CsTouristDataPO> csTouristDataPOS = csTouristDataPOMapper.selectList(null);
|
||||
collect = csTouristDataPOS.stream().map(CsTouristDataPO::getDeviceId).distinct().collect(Collectors.toList());
|
||||
|
||||
}else if(Objects.equals(role,AppRoleEnum.ROOT.getCode())||Objects.equals(role,AppRoleEnum.OPERATION_MANAGER.getCode())){
|
||||
}else if(Objects.equals(role,AppRoleEnum.ROOT.getCode())||Objects.equals(role,AppRoleEnum.OPERATION_MANAGER.getCode())||Objects.equals(role,"bxs_user")){
|
||||
csLedgerQueryWrapper.clear();
|
||||
csLedgerQueryWrapper.eq("level",2).eq("state",1);
|
||||
List<CsLedger> csLedgers = csLedgerMapper.selectList(csLedgerQueryWrapper);
|
||||
|
||||
@@ -53,7 +53,7 @@ public class InfluxDbParamUtil {
|
||||
//如果是云前置设备,直接返回clDid
|
||||
boolean isCLdDevice = DicDataEnum.DEV_CLD.getCode().equals(dictTreeFeignClient.queryById(csEquipmentDeliveryDTOList.get(0).getDevType()).getData().getCode());
|
||||
if(isCLdDevice){
|
||||
return String.valueOf(finalCsLinePOList.get(0).getLineNo());
|
||||
// return String.valueOf(finalCsLinePOList.get(0).getLineNo());
|
||||
}
|
||||
//之后的逻辑还是按照原来的不变
|
||||
String position = csLineFeignClient.getPositionById(lineId).getData();
|
||||
|
||||
@@ -1,19 +1,24 @@
|
||||
package com.njcn.csharmonic.api;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.constant.ServerInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.csdevice.pojo.vo.DataGroupEventVO;
|
||||
import com.njcn.csharmonic.api.fallback.EventFeignClientFallbackFactory;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryPage;
|
||||
import com.njcn.csharmonic.pojo.po.CsEventPO;
|
||||
import com.njcn.csharmonic.pojo.vo.CsEventVO;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -30,5 +35,9 @@ public interface EventFeignClient {
|
||||
@PostMapping("/queryByIndex")
|
||||
HttpResult<CsEventPO> queryByIndex(@RequestBody CsEventPO csEventPO);
|
||||
|
||||
@PostMapping("/queryById")
|
||||
HttpResult<CsEventPO> queryById(@RequestParam("eventId") String eventId);
|
||||
|
||||
}
|
||||
@PostMapping("/getEventByTime")
|
||||
HttpResult<List<CsEventPO>> getEventByTime(@RequestParam(name = "lineList", required = false) List<String> lineList,@RequestParam("startTime") String startTime,@RequestParam("endTime") String endTime);
|
||||
}
|
||||
|
||||
@@ -8,13 +8,10 @@ import com.njcn.csdevice.pojo.vo.DataGroupEventVO;
|
||||
import com.njcn.csharmonic.api.EventFeignClient;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryPage;
|
||||
import com.njcn.csharmonic.pojo.po.CsEventPO;
|
||||
import com.njcn.csharmonic.pojo.vo.CsEventVO;
|
||||
import feign.hystrix.FallbackFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -49,6 +46,18 @@ public class EventFeignClientFallbackFactory implements FallbackFactory<EventFei
|
||||
log.error("{}异常,降级处理,异常为:{}","根据根据表唯一索引查询(用于校验是否存在该事件)s",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HttpResult<CsEventPO> queryById(String eventId) {
|
||||
log.error("{}异常,降级处理,异常为:{}","根据事件id查询数据",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HttpResult<List<CsEventPO>> getEventByTime(List<String> lineList, String startTime, String endTime) {
|
||||
log.error("{}异常,降级处理,异常为:{}","根据时间获取无波形的暂态事件",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,9 +11,15 @@ import java.io.Serializable;
|
||||
@Data
|
||||
public class CldEventParam implements Serializable {
|
||||
|
||||
@ApiModelProperty("设备id")
|
||||
private String devId;
|
||||
|
||||
@ApiModelProperty("监测点id")
|
||||
private String monitorId;
|
||||
|
||||
@ApiModelProperty("监测点序号")
|
||||
private Integer cpuNo;
|
||||
|
||||
@ApiModelProperty("暂降触发时间")
|
||||
private String startTime;
|
||||
|
||||
@@ -29,10 +35,7 @@ public class CldEventParam implements Serializable {
|
||||
@ApiModelProperty("相别")
|
||||
private String phase;
|
||||
|
||||
@ApiModelProperty("Cfg文件路径")
|
||||
private String wavePathCfg;
|
||||
|
||||
@ApiModelProperty("Dat文件路径")
|
||||
private String wavePathDat;
|
||||
@ApiModelProperty("文件路径")
|
||||
private String wavePath;
|
||||
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@ import java.util.List;
|
||||
@Data
|
||||
public class ZuTaiDTO {
|
||||
|
||||
@SerializedName("done_json")
|
||||
private List<Detail> doneJson;
|
||||
@SerializedName("json")
|
||||
private List<Detail> json;
|
||||
|
||||
@Data
|
||||
public static class Detail{
|
||||
@@ -37,12 +37,12 @@ public class ZuTaiDTO {
|
||||
private Boolean display;
|
||||
|
||||
@SerializedName("lineId")
|
||||
private List<String> lineId;
|
||||
private String lineId;
|
||||
|
||||
@SerializedName("UID")
|
||||
private List<String> uId;
|
||||
|
||||
@SerializedName("UName")
|
||||
@SerializedName("UIDName")
|
||||
private String target;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.njcn.csharmonic.pojo.vo;
|
||||
|
||||
import com.alibaba.nacos.shaded.com.google.gson.annotations.SerializedName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@@ -31,6 +33,7 @@ public class CsPageVO {
|
||||
private String pid;
|
||||
|
||||
@ApiModelProperty(value="前端使用")
|
||||
@JsonProperty("kId")
|
||||
private String kId;
|
||||
|
||||
@ApiModelProperty(value="组态项目名称")
|
||||
|
||||
@@ -27,6 +27,9 @@ public class CsRtDataVO {
|
||||
@ApiModelProperty("监测点id")
|
||||
private String lineId;
|
||||
|
||||
@ApiModelProperty("设备状态 1:离线 2:在线")
|
||||
private Integer devStatus;
|
||||
|
||||
@ApiModelProperty("相别")
|
||||
private String phaseType;
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.njcn.csharmonic.pojo.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Data
|
||||
public class FrontWarnVO implements Serializable {
|
||||
|
||||
@ApiModelProperty("前置id")
|
||||
private String frontId;
|
||||
|
||||
@ApiModelProperty("前置ip")
|
||||
private String frontIp;
|
||||
|
||||
@ApiModelProperty("前置进程号")
|
||||
private Integer processNo;
|
||||
|
||||
@ApiModelProperty("事件发生时间")
|
||||
private String startTime;
|
||||
|
||||
@ApiModelProperty("告警描述")
|
||||
private String tag;
|
||||
|
||||
@ApiModelProperty("告警码")
|
||||
private Integer code;
|
||||
|
||||
}
|
||||
@@ -19,6 +19,7 @@ import com.njcn.event.file.pojo.dto.WaveDataDTO;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -111,6 +112,16 @@ public class CsEventController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, po, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/queryById")
|
||||
@ApiOperation("根据事件id查询数据")
|
||||
public HttpResult<CsEventPO> queryById(String eventId) {
|
||||
String methodDescribe = getMethodDescribe("queryById");
|
||||
CsEventPO po = csEventPOService.lambdaQuery().eq(CsEventPO::getId,eventId).one();
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, po, methodDescribe);
|
||||
}
|
||||
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/queryByModelId")
|
||||
@ApiOperation("获取各模块事件")
|
||||
@@ -130,4 +141,18 @@ public class CsEventController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/getEventByTime")
|
||||
@ApiOperation("根据时间获取无波形的暂态事件")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "lineList", value = "监测点id"),
|
||||
@ApiImplicitParam(name = "startTime", value = "开始时间"),
|
||||
@ApiImplicitParam(name = "endTime", value = "结束时间")
|
||||
})
|
||||
public HttpResult<List<CsEventPO>> getEventByTime(@RequestParam(required = false) List<String> lineList,@RequestParam String startTime,@RequestParam String endTime) {
|
||||
String methodDescribe = getMethodDescribe("getEventByTime");
|
||||
List<CsEventPO> list = csEventPOService.getEventByTime(lineList,startTime,endTime);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,9 +8,11 @@ import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryPage;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryParam;
|
||||
import com.njcn.csharmonic.pojo.po.CsEventPO;
|
||||
import com.njcn.csharmonic.pojo.vo.EventDetailVO;
|
||||
import com.njcn.csharmonic.service.CsEventUserPOService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import com.njcn.web.pojo.param.BaseParam;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -76,6 +78,16 @@ public class EventUserController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/frontWarnInfo")
|
||||
@ApiOperation("前置告警信息")
|
||||
@ApiImplicitParam(name = "baseParam", value = "基础查询数据", required = true)
|
||||
public HttpResult<Page<CsEventPO>> frontWarnInfo(@RequestBody BaseParam baseParam) {
|
||||
String methodDescribe = getMethodDescribe("frontWarnInfo");
|
||||
Page<CsEventPO> list = csEventUserPOService.getFrontWarnInfo(baseParam);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/updateStatus")
|
||||
@ApiOperation("已读事件")
|
||||
@@ -86,5 +98,4 @@ public class EventUserController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -44,7 +44,6 @@ public class RealDataController extends BaseController {
|
||||
public HttpResult<Boolean> getRealData(@RequestParam("lineId") String lineId) {
|
||||
String methodDescribe = getMethodDescribe("getRealData");
|
||||
boolean result = realDataService.getBaseRealData(lineId);
|
||||
redisUtil.saveByKeyWithExpire("rtDataUserId:"+lineId, RequestUtil.getUserIndex(),600L);
|
||||
if (result) {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
} else {
|
||||
@@ -69,15 +68,4 @@ public class RealDataController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
|
||||
}
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/getCldBaseRealData")
|
||||
@ApiOperation("获取云前置基础实时数据")
|
||||
@ApiImplicitParam(name = "lineId", value = "监测点id")
|
||||
public HttpResult<String> getCldBaseRealData(@RequestParam("lineId") String lineId) {
|
||||
String methodDescribe = getMethodDescribe("getCldBaseRealData");
|
||||
realDataService.getCldBaseRealData(lineId);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "平台下发指令成功", methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.njcn.csharmonic.pojo.po.CsEventPO;
|
||||
import com.njcn.csharmonic.pojo.vo.CsEventVO;
|
||||
import com.njcn.csharmonic.pojo.vo.EventDetailVO;
|
||||
import com.njcn.event.file.pojo.dto.WaveDataDTO;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -59,4 +60,6 @@ public interface CsEventPOService extends IService<CsEventPO>{
|
||||
|
||||
void addCldEvent(CldEventParam param);
|
||||
|
||||
List<CsEventPO> getEventByTime(List<String> lineList, String startTime, String endTime);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package com.njcn.csharmonic.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryPage;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryParam;
|
||||
import com.njcn.csharmonic.pojo.po.CsEventPO;
|
||||
import com.njcn.csharmonic.pojo.po.CsEventUserPO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.csharmonic.pojo.vo.EventDetailVO;
|
||||
import com.njcn.web.pojo.param.BaseParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -29,4 +31,6 @@ public interface CsEventUserPOService extends IService<CsEventUserPO>{
|
||||
Page<EventDetailVO> queryEventpage(CsEventUserQueryPage csEventUserQueryPage);
|
||||
|
||||
Page<EventDetailVO> queryEventPageWeb(CsEventUserQueryPage csEventUserQueryPage);
|
||||
|
||||
Page<CsEventPO> getFrontWarnInfo(BaseParam baseParam);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,4 @@ public interface RealDataService {
|
||||
* @param lineId
|
||||
*/
|
||||
boolean getHarmRealData(String lineId,Integer target);
|
||||
|
||||
void getCldBaseRealData(String lineId);
|
||||
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.njcn.csdevice.enums.AlgorithmResponseEnum;
|
||||
import com.njcn.csdevice.pojo.dto.DevDetailDTO;
|
||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||
import com.njcn.csdevice.pojo.vo.DataGroupEventVO;
|
||||
import com.njcn.csharmonic.enums.CsHarmonicResponseEnum;
|
||||
import com.njcn.csharmonic.mapper.CsEventPOMapper;
|
||||
import com.njcn.csharmonic.param.CldEventParam;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryPage;
|
||||
@@ -41,6 +40,7 @@ import com.njcn.influx.pojo.dto.EventDataSetDTO;
|
||||
import com.njcn.influx.service.EvtDataService;
|
||||
import com.njcn.influx.utils.InfluxDbUtils;
|
||||
import com.njcn.minioss.config.MinIossProperties;
|
||||
import com.njcn.minioss.util.MinIoUtils;
|
||||
import com.njcn.oss.constant.GeneralConstant;
|
||||
import com.njcn.oss.utils.FileStorageUtil;
|
||||
import com.njcn.system.api.EleEvtFeignClient;
|
||||
@@ -95,6 +95,7 @@ public class CsEventPOServiceImpl extends ServiceImpl<CsEventPOMapper, CsEventPO
|
||||
private final WavePicComponent wavePicComponent;
|
||||
private final MinIossProperties minIossProperties;
|
||||
private final InfluxDbUtils influxDbUtils;
|
||||
private final MinIoUtils minIoUtils;
|
||||
|
||||
@Override
|
||||
public List<EventDetailVO> queryEventList(CsEventUserQueryParam csEventUserQueryParam) {
|
||||
@@ -291,23 +292,30 @@ public class CsEventPOServiceImpl extends ServiceImpl<CsEventPOMapper, CsEventPO
|
||||
influxDbUtils.batchInsert(influxDbUtils.getDbName(), "", InfluxDB.ConsistencyLevel.ALL, TimeUnit.MILLISECONDS, records);
|
||||
}
|
||||
} else {
|
||||
if (StrUtil.isNotBlank(param.getWavePathCfg()) && StrUtil.isNotBlank(param.getWavePathDat())) {
|
||||
if (StrUtil.isNotBlank(param.getWavePath())) {
|
||||
//更新文件信息
|
||||
//先校验两份文件的名称是否一致
|
||||
String cfgFileName = param.getWavePathCfg().split("\\.")[0];
|
||||
String datFileName = param.getWavePathDat().split("\\.")[0];
|
||||
if (!Objects.equals(cfgFileName, datFileName)) {
|
||||
throw new BusinessException(CsHarmonicResponseEnum.EVENT_FILE_NOT_SAME);
|
||||
}
|
||||
this.lambdaUpdate()
|
||||
.eq(CsEventPO::getLineId,param.getMonitorId())
|
||||
.eq(CsEventPO::getStartTime,param.getStartTime())
|
||||
.set(CsEventPO::getWavePath,cfgFileName)
|
||||
.set(CsEventPO::getWavePath,param.getWavePath())
|
||||
.update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CsEventPO> getEventByTime(List<String> lineList, String startTime, String endTime) {
|
||||
LambdaQueryWrapper<CsEventPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.between(CsEventPO::getStartTime,startTime,endTime)
|
||||
.eq(CsEventPO::getType,0)
|
||||
.isNull(CsEventPO::getWavePath);
|
||||
if (CollUtil.isNotEmpty(lineList)) {
|
||||
lambdaQueryWrapper.in(CsEventPO::getLineId,lineList);
|
||||
}
|
||||
return this.list(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
public String getTag(Integer type) {
|
||||
String tag;
|
||||
switch (type) {
|
||||
@@ -351,6 +359,16 @@ public class CsEventPOServiceImpl extends ServiceImpl<CsEventPOMapper, CsEventPO
|
||||
throw new BusinessException(WaveFileResponseEnum.ANALYSE_WAVE_NOT_FOUND);
|
||||
}
|
||||
String cfgPath = waveName.concat(GeneralConstant.CFG), datPath = waveName.concat(GeneralConstant.DAT);
|
||||
//不同设备,波形文件后缀大小写不一致,针对大小写判断文件是否存在
|
||||
boolean result1 = minIoUtils.checkFileIsExist(minIossProperties.getBucket(), cfgPath);
|
||||
if (!result1) {
|
||||
cfgPath = waveName.concat(GeneralConstant.CFG_LOWER);
|
||||
}
|
||||
boolean result2 = minIoUtils.checkFileIsExist(minIossProperties.getBucket(), datPath);
|
||||
if (!result2) {
|
||||
datPath = waveName.concat(GeneralConstant.DAT_LOWER);
|
||||
}
|
||||
|
||||
System.out.println("波形路径-------------------" + cfgPath);
|
||||
try (
|
||||
InputStream cfgStream = fileStorageUtil.getFileStream(cfgPath);
|
||||
|
||||
@@ -1,19 +1,26 @@
|
||||
package com.njcn.csharmonic.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.csp.sentinel.util.StringUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.common.pojo.constant.LogInfo;
|
||||
import com.njcn.csdevice.api.CsLedgerFeignClient;
|
||||
import com.njcn.csdevice.api.NodeFeignClient;
|
||||
import com.njcn.csdevice.constant.DataParam;
|
||||
import com.njcn.csdevice.pojo.dto.DevDetailDTO;
|
||||
import com.njcn.csdevice.pojo.po.Node;
|
||||
import com.njcn.csdevice.pojo.vo.CsLedgerVO;
|
||||
import com.njcn.csharmonic.mapper.CsEventPOMapper;
|
||||
import com.njcn.csharmonic.mapper.CsEventUserPOMapper;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryPage;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryParam;
|
||||
import com.njcn.csharmonic.pojo.po.CsEventPO;
|
||||
import com.njcn.csharmonic.pojo.po.CsEventUserPO;
|
||||
import com.njcn.csharmonic.pojo.vo.EventDetailVO;
|
||||
import com.njcn.csharmonic.service.CsEventUserPOService;
|
||||
@@ -25,6 +32,7 @@ import com.njcn.system.api.EpdFeignClient;
|
||||
import com.njcn.system.pojo.po.EleEpdPqd;
|
||||
import com.njcn.system.pojo.po.EleEvtParm;
|
||||
import com.njcn.user.enums.AppRoleEnum;
|
||||
import com.njcn.web.pojo.param.BaseParam;
|
||||
import com.njcn.web.utils.RequestUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
@@ -33,6 +41,7 @@ import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -53,6 +62,7 @@ public class CsEventUserPOServiceImpl extends ServiceImpl<CsEventUserPOMapper, C
|
||||
private final EpdFeignClient epdFeignClient;
|
||||
private final EleEvtFeignClient eleEvtFeignClient;
|
||||
private final CsEventPOMapper csEventPOMapper;
|
||||
private final NodeFeignClient nodeFeignClient;
|
||||
|
||||
@Override
|
||||
public Integer queryEventCount(CsEventUserQueryParam csEventUserQueryParam) {
|
||||
@@ -504,4 +514,36 @@ public class CsEventUserPOServiceImpl extends ServiceImpl<CsEventUserPOMapper, C
|
||||
return returnpage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<CsEventPO> getFrontWarnInfo(BaseParam baseParam) {
|
||||
Page<CsEventPO> page = new Page<>(baseParam.getPageNum(), baseParam.getPageSize());
|
||||
List<Node> nodeList = nodeFeignClient.nodeAllList().getData();
|
||||
Map<String, Node> nodeMap = nodeList.stream().collect(Collectors.toMap(Node::getId, Function.identity()));
|
||||
|
||||
if (CollectionUtil.isNotEmpty(nodeList)) {
|
||||
if (ObjectUtil.isNotNull(baseParam.getSearchValue()) || StringUtil.isNotBlank(baseParam.getSearchValue())) {
|
||||
nodeList = nodeList.stream().filter(item-> item.getName().contains(baseParam.getSearchValue()) || item.getIp().contains(baseParam.getSearchValue())).collect(Collectors.toList());
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(nodeList)) {
|
||||
List<String> nodeIds = nodeList.stream().map(Node::getId).collect(Collectors.toList());
|
||||
LambdaQueryWrapper<CsEventPO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.in(CsEventPO::getDeviceId, nodeIds)
|
||||
.between(CsEventPO::getStartTime,
|
||||
DateUtil.beginOfDay(DateUtil.parse(baseParam.getSearchBeginTime())).toString(),
|
||||
DateUtil.endOfDay(DateUtil.parse(baseParam.getSearchEndTime())).toString())
|
||||
.eq(CsEventPO::getType, 4)
|
||||
.orderByDesc(CsEventPO::getStartTime);
|
||||
page = csEventPOMapper.selectPage(page, queryWrapper);
|
||||
}
|
||||
}
|
||||
List<CsEventPO> records = page.getRecords();
|
||||
if (CollUtil.isNotEmpty(records)) {
|
||||
page.getRecords().forEach(item->{
|
||||
//这边将前置名称放进lineId字段;将前置IP放进wavePath字段;进程号使用clDid
|
||||
item.setLineId(nodeMap.get(item.getDeviceId()).getName());
|
||||
item.setWavePath(nodeMap.get(item.getDeviceId()).getIp());
|
||||
});
|
||||
}
|
||||
return page;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
package com.njcn.csharmonic.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
||||
import com.google.common.reflect.TypeToken;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.csdevice.api.*;
|
||||
import com.njcn.csdevice.enums.AlgorithmResponseEnum;
|
||||
import com.njcn.csdevice.pojo.po.CsDataArray;
|
||||
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
|
||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||
import com.njcn.csdevice.pojo.vo.DataArrayTreeVO;
|
||||
import com.njcn.csdevice.pojo.vo.LineTargetVO;
|
||||
@@ -22,6 +23,7 @@ import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.api.EpdFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
@@ -71,6 +73,8 @@ public class LineTargetServiceImpl implements ILineTargetService {
|
||||
|
||||
private final InfluxDbParamUtil influxDbParamUtil;
|
||||
|
||||
private final EquipmentFeignClient equipmentFeignClient;
|
||||
|
||||
@Override
|
||||
public List<DataArrayTreeVO> getLineTarget(String lineId) {
|
||||
List<String> setList = new ArrayList<>();
|
||||
@@ -109,20 +113,25 @@ public class LineTargetServiceImpl implements ILineTargetService {
|
||||
String path = csPagePOService.queryById(id).getPath();
|
||||
InputStream inputStream = fileStorageUtil.getFileStream(path);
|
||||
ZuTaiDTO zuTaiDto = analysisJson(inputStream);
|
||||
zuTaiDto.getDoneJson().forEach(item->{
|
||||
if (!Objects.isNull(item.getTarget())){
|
||||
zuTaiDto.getJson().forEach(item->{
|
||||
if (!Objects.isNull(item.getTarget()) && StringUtils.isNotBlank(item.getTarget())){
|
||||
String targetTag = item.getTarget().split("\\$")[0];
|
||||
String phasic = item.getTarget().split("\\$")[1];
|
||||
String dataType = item.getTarget().split("\\$")[2];
|
||||
if (CollectionUtils.isEmpty(item.getUId()) || CollectionUtils.isEmpty(item.getLineId())){
|
||||
if (CollectionUtils.isEmpty(item.getUId()) || ObjectUtil.isNull(item.getLineId())){
|
||||
throw new BusinessException(CsHarmonicResponseEnum.BIND_TARGET_ERROR);
|
||||
}
|
||||
CsDataArray dataArray = dataArrayFeignClient.getDataArrayById(item.getUId().get(0),targetTag).getData().get(0);
|
||||
String targetName = dataArray.getAnotherName();
|
||||
String dataId = dataArray.getDataId();
|
||||
String classId = epdFeignClient.selectById(dataId).getData().getClassId();
|
||||
String clDid = influxDbParamUtil.getClDidByLineId(item.getLineId().get(3));
|
||||
result.add(getLineRtData(item.getId(),item.getLineId().get(3),classId,targetTag,phasic,dataType,targetName,clDid));
|
||||
String clDid = influxDbParamUtil.getClDidByLineId(item.getLineId());
|
||||
//基础信息
|
||||
CsRtDataVO vo = getLineRtData(item.getId(),item.getLineId(),influxDbParamUtil.getTableNameByClassId(classId),targetTag,phasic,dataType,targetName,clDid);
|
||||
//设备状态信息
|
||||
CsEquipmentDeliveryPO po = equipmentFeignClient.getDevByLineId(item.getLineId()).getData();
|
||||
vo.setDevStatus(po.getRunStatus());
|
||||
result.add(vo);
|
||||
}
|
||||
});
|
||||
return result;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.njcn.csharmonic.service.impl;
|
||||
|
||||
import com.alibaba.cloud.commons.lang.StringUtils;
|
||||
import com.njcn.access.api.AskDeviceDataFeignClient;
|
||||
import com.njcn.access.utils.MqttUtil;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
@@ -10,7 +9,6 @@ import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||
import com.njcn.csdevice.pojo.po.CsDataSet;
|
||||
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
|
||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||
import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO;
|
||||
import com.njcn.csharmonic.service.RealDataService;
|
||||
import com.njcn.redis.utils.RedisUtil;
|
||||
import com.njcn.system.api.DictTreeFeignClient;
|
||||
@@ -50,36 +48,47 @@ public class RealDataServiceImpl implements RealDataService {
|
||||
//判断设备类型 治理无线设备需要判断mqtt、云前置设备直接判断设备运行状态
|
||||
CsEquipmentDeliveryPO dev = equipmentFeignClient.getDevByLineId(lineId).getData();
|
||||
String devModelCode = dictTreeFeignClient.queryById(dev.getDevType()).getData().getCode();
|
||||
// if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
// if (dev.getRunStatus() == 1) {
|
||||
// throw new BusinessException("装置离线");
|
||||
// }
|
||||
// } else {
|
||||
// String clientName = "NJCN-" + nDid.substring(nDid.length() - 6);
|
||||
// boolean mqttClient = mqttUtil.judgeClientOnline(clientName);
|
||||
// if (!mqttClient) {
|
||||
// throw new BusinessException("装置离线");
|
||||
// }
|
||||
// }
|
||||
if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
if (dev.getRunStatus() == 1) {
|
||||
throw new BusinessException("装置离线");
|
||||
}
|
||||
} else {
|
||||
String clientName = "NJCN-" + nDid.substring(nDid.length() - 6);
|
||||
boolean mqttClient = mqttUtil.judgeClientOnline(clientName);
|
||||
if (!mqttClient) {
|
||||
throw new BusinessException("装置离线");
|
||||
}
|
||||
}
|
||||
Integer clDid = Integer.parseInt(lineId.substring(lineId.length() - 1));
|
||||
//获取装置所用模板
|
||||
CsLinePO po = csLineFeignClient.getById(lineId).getData();
|
||||
String modelId = po.getDataModelId();
|
||||
CsDataSet csDataSet = dataSetFeignClient.getBaseDataSet(modelId,clDid).getData();
|
||||
if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
askDeviceDataFeignClient.askCldRealData(dev.getId(),lineId,dev.getNodeId());
|
||||
CsDataSet csDataSet = dataSetFeignClient.getBaseDataSet(modelId,1).getData();
|
||||
askDeviceDataFeignClient.askCldRealData(dev.getId(),lineId,dev.getNodeId(),csDataSet.getIdx());
|
||||
updateRedisUserSet("rtDataUserId:" + lineId, RequestUtil.getUserIndex(), 600L);
|
||||
updateRedisUserSet("cldRtDataOverTime:" + lineId, RequestUtil.getUserIndex(), 5L);
|
||||
} else {
|
||||
CsDataSet csDataSet = dataSetFeignClient.getBaseDataSet(modelId,clDid).getData();
|
||||
askDeviceDataFeignClient.askRealData(nDid,csDataSet.getIdx(),clDid);
|
||||
redisUtil.saveByKeyWithExpire("rtDataUserId:"+lineId, RequestUtil.getUserIndex(),600L);
|
||||
}
|
||||
//等待装置响应,获取询问结果
|
||||
Thread.sleep(2000);
|
||||
Object object = redisUtil.getObjectByKey("devResponse");
|
||||
Thread.sleep(5000);
|
||||
Object object;
|
||||
if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
object = redisUtil.getObjectByKey("devResponse:" + lineId);
|
||||
} else {
|
||||
object = redisUtil.getObjectByKey("devResponse");
|
||||
}
|
||||
if (Objects.isNull(object)) {
|
||||
result = false;
|
||||
//throw new BusinessException("数据获取失败,设备无响应");
|
||||
} else {
|
||||
int code = (Integer) object;
|
||||
if (code != 200) {
|
||||
result = false;
|
||||
//throw new BusinessException("数据获取失败,设备无响应");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@@ -93,21 +102,40 @@ public class RealDataServiceImpl implements RealDataService {
|
||||
boolean result = true;
|
||||
try {
|
||||
String nDid = lineId.substring(0, lineId.length() - 1);
|
||||
String clientName = "NJCN-" + nDid.substring(nDid.length() - 6);
|
||||
boolean mqttClient = mqttUtil.judgeClientOnline(clientName);
|
||||
if (!mqttClient) {
|
||||
throw new BusinessException("装置离线");
|
||||
//判断设备类型 治理无线设备需要判断mqtt、云前置设备直接判断设备运行状态
|
||||
CsEquipmentDeliveryPO dev = equipmentFeignClient.getDevByLineId(lineId).getData();
|
||||
String devModelCode = dictTreeFeignClient.queryById(dev.getDevType()).getData().getCode();
|
||||
if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
if (dev.getRunStatus() == 1) {
|
||||
throw new BusinessException("装置离线");
|
||||
}
|
||||
} else {
|
||||
String clientName = "NJCN-" + nDid.substring(nDid.length() - 6);
|
||||
boolean mqttClient = mqttUtil.judgeClientOnline(clientName);
|
||||
if (!mqttClient) {
|
||||
throw new BusinessException("装置离线");
|
||||
}
|
||||
}
|
||||
Integer clDid = Integer.parseInt(lineId.substring(lineId.length() - 1));
|
||||
//获取装置所用模板
|
||||
CsLinePO po = csLineFeignClient.getById(lineId).getData();
|
||||
String modelId = po.getDataModelId();
|
||||
//根据指标来获取不同的数据集
|
||||
CsDataSet csDataSet = dataSetFeignClient.getHarmonicDataSet(modelId,clDid,target).getData();
|
||||
askDeviceDataFeignClient.askRealData(nDid,csDataSet.getIdx(),clDid);
|
||||
if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
CsDataSet csDataSet = dataSetFeignClient.getHarmonicDataSet(modelId,1,target).getData();
|
||||
askDeviceDataFeignClient.askCldRealData(dev.getId(),lineId,dev.getNodeId(),csDataSet.getIdx());
|
||||
} else {
|
||||
CsDataSet csDataSet = dataSetFeignClient.getHarmonicDataSet(modelId,clDid,target).getData();
|
||||
askDeviceDataFeignClient.askRealData(nDid,csDataSet.getIdx(),clDid);
|
||||
}
|
||||
//等待装置响应,获取询问结果
|
||||
Thread.sleep(2000);
|
||||
Object object = redisUtil.getObjectByKey("devResponse");
|
||||
Object object;
|
||||
if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
object = redisUtil.getObjectByKey("devResponse:" + lineId);
|
||||
} else {
|
||||
object = redisUtil.getObjectByKey("devResponse");
|
||||
}
|
||||
if (Objects.isNull(object)) {
|
||||
result = false;
|
||||
} else {
|
||||
@@ -122,36 +150,6 @@ public class RealDataServiceImpl implements RealDataService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getCldBaseRealData(String lineId) {
|
||||
try {
|
||||
// 参数校验
|
||||
if (StringUtils.isBlank(lineId) || lineId.length() <= 1) {
|
||||
throw new BusinessException("线路ID格式错误");
|
||||
}
|
||||
String nDid = lineId.substring(0, lineId.length() - 1);
|
||||
CsEquipmentDeliveryVO csEquipmentDeliveryVO = equipmentFeignClient.queryEquipmentByndid(nDid).getData();
|
||||
if (Objects.isNull(csEquipmentDeliveryVO)) {
|
||||
log.warn("未找到对应的设备信息,nDid: {}", nDid);
|
||||
return;
|
||||
}
|
||||
// 检查设备运行状态
|
||||
if (csEquipmentDeliveryVO.getRunStatus() == 1) {
|
||||
throw new BusinessException("装置离线,无法获取实时数据");
|
||||
}
|
||||
// 请求设备数据
|
||||
askDeviceDataFeignClient.askCldRealData(csEquipmentDeliveryVO.getId(),lineId,csEquipmentDeliveryVO.getNodeId());
|
||||
// 更新Redis中的用户集合 - 使用工具方法消除重复代码
|
||||
updateRedisUserSet("rtDataUserId:" + lineId, RequestUtil.getUserIndex(), 600L);
|
||||
updateRedisUserSet("cldRtDataOverTime:" + lineId, RequestUtil.getUserIndex(), 5L);
|
||||
} catch (BusinessException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
log.error("获取CLD基础实时数据失败,lineId: {}", lineId, e);
|
||||
throw new BusinessException("获取实时数据失败,请稍后重试");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新Redis中的用户集合
|
||||
*/
|
||||
@@ -191,46 +189,4 @@ public class RealDataServiceImpl implements RealDataService {
|
||||
}
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void getCldBaseRealData(String lineId) {
|
||||
// String nDid = lineId.substring(0, lineId.length() - 1);
|
||||
// CsEquipmentDeliveryVO csEquipmentDeliveryVO = equipmentFeignClient.queryEquipmentByndid(nDid).getData();
|
||||
// if (Objects.nonNull(csEquipmentDeliveryVO)) {
|
||||
// if (csEquipmentDeliveryVO.getRunStatus() == 1) {
|
||||
// throw new BusinessException("装置离线");
|
||||
// }
|
||||
// askDeviceDataFeignClient.askCldRealData(csEquipmentDeliveryVO.getId(),lineId);
|
||||
//
|
||||
// Object object1 = redisUtil.getObjectByKey("rtDataUserId:"+lineId);
|
||||
// Set<String> users1;
|
||||
// if (Objects.isNull(object1)) {
|
||||
// users1 = new HashSet<>();
|
||||
// } else {
|
||||
// users1 = convertObjectToSet(object1);
|
||||
// }
|
||||
// users1.add(RequestUtil.getUserIndex());
|
||||
// redisUtil.saveByKeyWithExpire("rtDataUserId:"+lineId, users1,600L);
|
||||
//
|
||||
// Object object2 = redisUtil.getObjectByKey("cldRtDataOverTime:"+lineId);
|
||||
// Set<String> users2;
|
||||
// if (Objects.isNull(object2)) {
|
||||
// users2 = new HashSet<>();
|
||||
// } else {
|
||||
// users2 = convertObjectToSet(object2);
|
||||
// }
|
||||
// users2.add(RequestUtil.getUserIndex());
|
||||
// redisUtil.saveByKeyWithExpire("cldRtDataOverTime:"+lineId, users2,5L);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// public Set<String> convertObjectToSet(Object obj) {
|
||||
// if (obj instanceof Collection) {
|
||||
// return ((Collection<?>) obj).stream()
|
||||
// .filter(Objects::nonNull)
|
||||
// .map(Object::toString)
|
||||
// .collect(Collectors.toSet());
|
||||
// }
|
||||
// return Collections.emptySet();
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
|
||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||
import com.njcn.csdevice.pojo.po.RStatIntegrityD;
|
||||
import com.njcn.csdevice.pojo.po.RStatOnlineRateD;
|
||||
import com.njcn.csdevice.pojo.vo.CsLedgerVO;
|
||||
import com.njcn.csharmonic.pojo.param.StatisticsDataParam;
|
||||
import com.njcn.csharmonic.pojo.vo.DataVo;
|
||||
import com.njcn.csharmonic.pojo.vo.HalfMonthReportVO;
|
||||
@@ -91,6 +92,7 @@ public class StatisticsDataDataServiceImpl implements IStatisticsDataDataService
|
||||
//获取装置
|
||||
List<CsEquipmentDeliveryPO> equipmentDeliveryList = equipmentFeignClient.getAll().getData();
|
||||
if (CollectionUtil.isNotEmpty(equipmentDeliveryList)) {
|
||||
Map<String, CsEquipmentDeliveryPO> map = equipmentDeliveryList.stream().collect(Collectors.toMap(CsEquipmentDeliveryPO::getId, Function.identity()));
|
||||
List<CsEquipmentDeliveryPO> processList = Objects.isNull(param.getProcess())
|
||||
? equipmentDeliveryList
|
||||
: equipmentDeliveryList.stream()
|
||||
@@ -99,6 +101,9 @@ public class StatisticsDataDataServiceImpl implements IStatisticsDataDataService
|
||||
if (CollectionUtil.isNotEmpty(processList)) {
|
||||
//获取监测点集合
|
||||
List<String> devList = processList.stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList());
|
||||
if (CollectionUtil.isEmpty(devList)) {
|
||||
return result;
|
||||
}
|
||||
List<CsLinePO> csLineList = csLineFeignClient.getLinesByDevList(devList).getData();
|
||||
if (CollectionUtil.isNotEmpty(csLineList)) {
|
||||
Map<String,List<CsLinePO>> devMap = csLineList.stream().collect(Collectors.groupingBy(CsLinePO::getDeviceId));
|
||||
@@ -123,7 +128,11 @@ public class StatisticsDataDataServiceImpl implements IStatisticsDataDataService
|
||||
vo.setMac(dev.getMac());
|
||||
vo.setOperationalTime(dev.getCreateTime());
|
||||
vo.setOperationalStatus(dev.getUsageStatus() == 0 ? "停运" : "在运");
|
||||
vo.setLineName(line.getName());
|
||||
if (Objects.equals(line.getName(),"治理监测点")) {
|
||||
vo.setLineName(line.getName() + "(" + map.get(dev.getId()).getModuleNumber() + "模块)");
|
||||
} else {
|
||||
vo.setLineName(line.getName());
|
||||
}
|
||||
vo.setCommunicationStatus(dev.getRunStatus() == 1 ? "离线" : "在线");
|
||||
vo.setLatestTime(LocalDateTime.now());
|
||||
vo.setProcess(dev.getProcess());
|
||||
|
||||
36
pom.xml
36
pom.xml
@@ -19,17 +19,38 @@
|
||||
<description>治理项目</description>
|
||||
<packaging>pom</packaging>
|
||||
<properties>
|
||||
<middle.server.url>192.168.1.22</middle.server.url>
|
||||
<service.server.url>127.0.0.1</service.server.url>
|
||||
<docker.server.url>192.168.1.22</docker.server.url>
|
||||
|
||||
<!-- <middle.server.url>192.168.1.22</middle.server.url>-->
|
||||
<!-- <service.server.url>192.168.1.126</service.server.url>-->
|
||||
<!-- <docker.server.url>192.168.1.22</docker.server.url>-->
|
||||
<!-- <nacos.url>${middle.server.url}:18848</nacos.url>-->
|
||||
<!-- <nacos.namespace>b0b0dedf-baa9-407f-bef6-988b9e0a640d</nacos.namespace>-->
|
||||
|
||||
<middle.server.url>192.168.1.103</middle.server.url>
|
||||
<service.server.url>192.168.1.126</service.server.url>
|
||||
<docker.server.url>192.168.1.103</docker.server.url>
|
||||
<nacos.url>${middle.server.url}:18848</nacos.url>
|
||||
<nacos.namespace>415a1c87-33aa-47bd-8e25-13cc456c87ed</nacos.namespace>
|
||||
<nacos.namespace>72972c43-3c20-4452-a261-66624e17da97</nacos.namespace>
|
||||
|
||||
<!-- <middle.server.url>192.168.1.103</middle.server.url>-->
|
||||
<!-- <service.server.url>192.168.1.103</service.server.url>-->
|
||||
<!-- <docker.server.url>192.168.1.103</docker.server.url>-->
|
||||
<!-- <nacos.url>${middle.server.url}:18848</nacos.url>-->
|
||||
<!-- <nacos.namespace></nacos.namespace>-->
|
||||
|
||||
<!--102-->
|
||||
<!-- <middle.server.url>192.168.1.102</middle.server.url>-->
|
||||
<!-- <service.server.url>127.0.0.1</service.server.url>-->
|
||||
<!-- <docker.server.url>192.168.1.102</docker.server.url>-->
|
||||
<!-- <nacos.url>${middle.server.url}:18848</nacos.url>-->
|
||||
<!-- <nacos.namespace>d99572a5-415e-480b-bb92-30f05c2f6d93</nacos.namespace>-->
|
||||
|
||||
<!-- <middle.server.url>192.168.1.102</middle.server.url>-->
|
||||
<!-- <service.server.url>192.168.1.102</service.server.url>-->
|
||||
<!-- <docker.server.url>192.168.1.102</docker.server.url>-->
|
||||
<!-- <nacos.url>${middle.server.url}:18848</nacos.url>-->
|
||||
<!-- <nacos.namespace>c208a65e-1578-4372-b7c0-97fecd323fe6</nacos.namespace>-->
|
||||
|
||||
<!--27-->
|
||||
<!-- <middle.server.url>192.168.1.27</middle.server.url>-->
|
||||
<!-- <service.server.url>127.0.0.1</service.server.url>-->
|
||||
@@ -42,6 +63,13 @@
|
||||
<!-- <docker.server.url>192.168.1.22</docker.server.url>-->
|
||||
<!-- <nacos.url>${middle.server.url}:18848</nacos.url>-->
|
||||
<!-- <nacos.namespace></nacos.namespace>-->
|
||||
|
||||
<!-- <middle.server.url>192.168.4.151</middle.server.url>-->
|
||||
<!-- <service.server.url>192.168.4.151</service.server.url>-->
|
||||
<!-- <docker.server.url>192.168.4.151</docker.server.url>-->
|
||||
<!-- <nacos.url>${middle.server.url}:18848</nacos.url>-->
|
||||
<!-- <nacos.namespace>3b3dbb4a-bd15-4a01-a6ef-7f179583ddfc</nacos.namespace>-->
|
||||
|
||||
<!--sentinel:port-->
|
||||
<sentinel.url>${middle.server.url}:8080</sentinel.url>
|
||||
<!--网关地址,主要用于配置swagger中认证token-->
|
||||
|
||||
Reference in New Issue
Block a user