H.X
2 years ago
11 changed files with 493 additions and 1 deletions
@ -0,0 +1,39 @@
|
||||
package com.hnac.hzims.fdp.request; |
||||
|
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Builder; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
import lombok.NonNull; |
||||
|
||||
import javax.validation.constraints.NotNull; |
||||
import java.io.Serializable; |
||||
|
||||
/** |
||||
* @author hx |
||||
* @version 1.0 |
||||
* @date 2023/3/6 10:03 |
||||
*/ |
||||
@Data |
||||
@EqualsAndHashCode |
||||
@ApiModel("FDP站点信息请求") |
||||
@Builder |
||||
public class StationInfoReq implements Serializable { |
||||
|
||||
@ApiModelProperty(value = "站点类型",required = true) |
||||
@NotNull(message = "站点类型不能为空") |
||||
private Integer type; |
||||
|
||||
@ApiModelProperty("站点ID") |
||||
@NotNull(message = "站点ID不能为空") |
||||
private String stationId; |
||||
|
||||
@ApiModelProperty("站点名称") |
||||
@NotNull(message = "站点名称不能为空") |
||||
private String stationName; |
||||
|
||||
@ApiModelProperty("站点描述") |
||||
private String stationDesc; |
||||
|
||||
} |
@ -0,0 +1,60 @@
|
||||
package com.hnac.hzims.fdp.controller; |
||||
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||
import com.hnac.hzims.fdp.request.SubmitAnswerReq; |
||||
import com.hnac.hzims.fdp.response.DevsetQuestionResp; |
||||
import com.hnac.hzims.fdp.service.IFdpQuestionService; |
||||
import io.swagger.annotations.Api; |
||||
import io.swagger.annotations.ApiOperation; |
||||
import io.swagger.annotations.ApiParam; |
||||
import lombok.AllArgsConstructor; |
||||
import org.springblade.core.boot.ctrl.BladeController; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springframework.validation.annotation.Validated; |
||||
import org.springframework.web.bind.annotation.*; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @author hx |
||||
* @version 1.0 |
||||
* @date 2023/3/6 11:52 |
||||
*/ |
||||
@RestController |
||||
@RequestMapping("/fdp/question") |
||||
@AllArgsConstructor |
||||
@Api(value = "智能诊断接站问答",tags = "智能诊断接站问答") |
||||
public class FdpQuestionController extends BladeController { |
||||
|
||||
private final IFdpQuestionService fdpQuestionService; |
||||
|
||||
@GetMapping("/submitStationInfo") |
||||
@ApiOperation("提交站点信息") |
||||
@ApiOperationSupport(order = 1) |
||||
public R<Boolean> submitStationInfo(@RequestParam @ApiParam(value = "站点编码",required = true) String stationCode, @RequestParam(required = false) @ApiParam(value = "描述") String stationDesc) { |
||||
return R.status(fdpQuestionService.submitStationInfo(stationCode,stationDesc)); |
||||
} |
||||
|
||||
@DeleteMapping("/deleteStationInfo/{stationCode}") |
||||
@ApiOperation("删除站点信息") |
||||
@ApiOperationSupport(order = 2) |
||||
public R<Boolean> deleteStationInfo(@PathVariable @ApiParam(value = "站点编码",required = true) String stationCode) { |
||||
return R.status(fdpQuestionService.deleteStationInfo(stationCode)); |
||||
} |
||||
|
||||
@GetMapping("/getDevsetQuestion") |
||||
@ApiOperation("获取设备推送Fdp问题") |
||||
@ApiOperationSupport(order = 3) |
||||
public R<List<DevsetQuestionResp>> getDevsetQuestion(@RequestParam @ApiParam(value = "设备类型,1:公用;2:机组",required = true) String deviceType, |
||||
@RequestParam @ApiParam(value = "站点类型",required = true) Integer stationType) { |
||||
return R.data(fdpQuestionService.getDevsetQuestion(deviceType,stationType)); |
||||
} |
||||
|
||||
@PostMapping("/submitDeviceAnswer") |
||||
@ApiOperation("提交设备问题答案") |
||||
@ApiOperationSupport(order = 4) |
||||
public R<Boolean> submitDeviceAnswer(@RequestBody @Validated SubmitAnswerReq submitAnswerReq) { |
||||
return R.data(fdpQuestionService.submitDeviceAnswer(submitAnswerReq)); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,31 @@
|
||||
package com.hnac.hzims.fdp.request; |
||||
|
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
|
||||
import javax.validation.constraints.NotNull; |
||||
import java.io.Serializable; |
||||
|
||||
/** |
||||
* @author hx |
||||
* @version 1.0 |
||||
* @date 2023/3/6 16:12 |
||||
*/ |
||||
@Data |
||||
@ApiModel("提交答案格式") |
||||
@EqualsAndHashCode |
||||
public class AnswerFormatReq implements Serializable { |
||||
|
||||
@ApiModelProperty(value = "问题ID",required = true) |
||||
@NotNull |
||||
private String questionId; |
||||
|
||||
@ApiModelProperty(value = "答案ID,选择题需要传多选题答案ID用逗号分隔") |
||||
private String answerId; |
||||
|
||||
@ApiModelProperty("答案内容,填空题需要传") |
||||
private String inputValue; |
||||
|
||||
} |
@ -0,0 +1,42 @@
|
||||
package com.hnac.hzims.fdp.request; |
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField; |
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
|
||||
import javax.validation.constraints.NotNull; |
||||
import javax.xml.soap.Name; |
||||
import java.io.Serializable; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @author hx |
||||
* @version 1.0 |
||||
* @date 2023/3/6 16:19 |
||||
*/ |
||||
@ApiModel("提交答案") |
||||
@Data |
||||
@EqualsAndHashCode |
||||
public class SubmitAnswerReq implements Serializable { |
||||
|
||||
@ApiModelProperty(value = "站点类型",required = true) |
||||
@NotNull |
||||
private Integer stationType; |
||||
|
||||
private Integer type; |
||||
|
||||
@ApiModelProperty(value = "站点ID",required = true) |
||||
@NotNull |
||||
private String stationId; |
||||
|
||||
@ApiModelProperty(value = "设备类型",required = true) |
||||
@NotNull |
||||
private String deviceType; |
||||
|
||||
@ApiModelProperty(value = "站点问题数据",required = true) |
||||
@JSONField(name = "data") |
||||
private List<AnswerFormatReq> answerFormatList; |
||||
|
||||
} |
@ -0,0 +1,38 @@
|
||||
package com.hnac.hzims.fdp.response; |
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField; |
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
|
||||
import java.io.Serializable; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @author hx |
||||
* @version 1.0 |
||||
* @date 2023/3/6 14:40 |
||||
*/ |
||||
@Data |
||||
@EqualsAndHashCode |
||||
@ApiModel("机组问题答案") |
||||
public class DevsetAnswerResp implements Serializable { |
||||
|
||||
@ApiModelProperty("答案ID") |
||||
@JSONField(name = "AID") |
||||
private String aId; |
||||
|
||||
@ApiModelProperty("答案名称") |
||||
@JSONField(name = "ANAME") |
||||
private String aName; |
||||
|
||||
@ApiModelProperty("是否默认选中。0为不选中,1为选中") |
||||
@JSONField(name = "ADEFAULT") |
||||
private Integer aDefault; |
||||
|
||||
@ApiModelProperty("选中该答案需要继续回答的问题数组") |
||||
@JSONField(name = "QUESTION") |
||||
private List<DevsetQuestionResp> question; |
||||
|
||||
} |
@ -0,0 +1,43 @@
|
||||
package com.hnac.hzims.fdp.response; |
||||
|
||||
/** |
||||
* @author hx |
||||
* @version 1.0 |
||||
* @date 2023/3/6 14:35 |
||||
*/ |
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField; |
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
|
||||
import java.io.Serializable; |
||||
import java.util.List; |
||||
|
||||
@Data |
||||
@EqualsAndHashCode |
||||
@ApiModel("机组问题") |
||||
public class DevsetQuestionResp implements Serializable { |
||||
|
||||
@ApiModelProperty("问题ID") |
||||
@JSONField(name = "ID") |
||||
private String id; |
||||
|
||||
@ApiModelProperty("问题名称") |
||||
@JSONField(name = "NAME") |
||||
private String name; |
||||
|
||||
@ApiModelProperty("问题类型。当前有“单选”、“多选”、“参数填空”、“数量填空”") |
||||
@JSONField(name = "QTYPE") |
||||
private String qType; |
||||
|
||||
@ApiModelProperty("问题的父答案ID") |
||||
@JSONField(name = "FAID") |
||||
private String parentId; |
||||
|
||||
@ApiModelProperty("问题的答案列表") |
||||
@JSONField(name = "ANSWER") |
||||
private List<DevsetAnswerResp> answer; |
||||
|
||||
} |
@ -0,0 +1,48 @@
|
||||
package com.hnac.hzims.fdp.service; |
||||
|
||||
import com.hnac.hzims.fdp.request.SubmitAnswerReq; |
||||
import com.hnac.hzims.fdp.response.DevsetQuestionResp; |
||||
import io.swagger.annotations.ApiParam; |
||||
import org.springframework.web.bind.annotation.RequestBody; |
||||
import org.springframework.web.bind.annotation.RequestParam; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @author hx |
||||
* @version 1.0 |
||||
* @date 2023/3/6 10:18 |
||||
*/ |
||||
public interface IFdpQuestionService { |
||||
|
||||
/** |
||||
* 提交站点信息 |
||||
* @param stationCode 站点编码 |
||||
* @param stationDesc 站点描述 |
||||
* @return |
||||
*/ |
||||
boolean submitStationInfo(String stationCode,String stationDesc); |
||||
|
||||
/** |
||||
* 删除站点信息 |
||||
* @param stationId 站点编码 |
||||
* @return |
||||
*/ |
||||
boolean deleteStationInfo(String stationId); |
||||
|
||||
/** |
||||
* 获取设备推送Fdp问题 |
||||
* @param deviceType 设备类型 |
||||
* @param stationType 站点类型 |
||||
* @return |
||||
*/ |
||||
List<DevsetQuestionResp> getDevsetQuestion(String deviceType, Integer stationType); |
||||
|
||||
/** |
||||
* 提交设备问题答案 |
||||
* @param submitAnswerReq 提交答案 |
||||
* @return |
||||
*/ |
||||
boolean submitDeviceAnswer(@RequestBody SubmitAnswerReq submitAnswerReq); |
||||
|
||||
} |
@ -0,0 +1,156 @@
|
||||
package com.hnac.hzims.fdp.service.impl; |
||||
|
||||
import cn.hutool.http.HttpRequest; |
||||
import cn.hutool.http.HttpResponse; |
||||
import com.alibaba.fastjson.JSON; |
||||
import com.alibaba.fastjson.JSONArray; |
||||
import com.alibaba.fastjson.JSONObject; |
||||
import com.google.common.collect.Lists; |
||||
import com.hnac.hzims.fdp.config.FdpUrlConfiguration; |
||||
import com.hnac.hzims.fdp.constants.FdpConstant; |
||||
import com.hnac.hzims.fdp.request.StationInfoReq; |
||||
import com.hnac.hzims.fdp.request.SubmitAnswerReq; |
||||
import com.hnac.hzims.fdp.response.DevsetQuestionResp; |
||||
import com.hnac.hzims.fdp.service.IFdpQuestionService; |
||||
import com.hnac.hzims.operational.station.StationConstants; |
||||
import com.hnac.hzims.operational.station.entity.StationEntity; |
||||
import com.hnac.hzims.operational.station.enume.StationEnumConstants; |
||||
import com.hnac.hzims.operational.station.feign.IStationClient; |
||||
import lombok.AllArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springblade.core.log.exception.ServiceException; |
||||
import org.springblade.core.log.logger.BladeLogger; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springblade.core.tool.utils.Func; |
||||
import org.springblade.core.tool.utils.StringUtil; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import javax.servlet.http.HttpServletResponse; |
||||
import java.util.HashMap; |
||||
import java.util.List; |
||||
import java.util.Optional; |
||||
|
||||
/** |
||||
* @author hx |
||||
* @version 1.0 |
||||
* @date 2023/3/6 10:18 |
||||
*/ |
||||
@Service |
||||
@AllArgsConstructor |
||||
@Slf4j |
||||
public class FdpQuestionServiceImpl implements IFdpQuestionService { |
||||
|
||||
private final IStationClient stationClient; |
||||
private final FdpUrlConfiguration fdpUrlConfiguration; |
||||
private final BladeLogger logger; |
||||
|
||||
@Override |
||||
public boolean submitStationInfo(String stationCode, String stationDesc) { |
||||
R<StationEntity> stationResult = stationClient.getStationByCode(stationCode); |
||||
if(stationResult.isSuccess()) { |
||||
StationEntity stationEntity = stationResult.getData(); |
||||
StationInfoReq infoReq = StationInfoReq.builder() |
||||
.stationId(stationCode) |
||||
.stationName(stationEntity.getName()) |
||||
.type(this.getStationType(stationEntity.getType())) |
||||
.stationDesc(Optional.ofNullable(stationDesc).orElse("")) |
||||
.build(); |
||||
if(Func.isNotEmpty(infoReq.getType())) { |
||||
HttpResponse httpResponse = HttpRequest.post(fdpUrlConfiguration.getSubmitStationInfo()) |
||||
.body(JSON.toJSONString(infoReq)) |
||||
.execute(); |
||||
if(httpResponse.getStatus() == HttpServletResponse.SC_OK && |
||||
"1".equals(JSONObject.parseObject(httpResponse.body()).getString("success"))) { |
||||
return true; |
||||
} |
||||
else { |
||||
throw new ServiceException("Fdp信息站点信息失败!"); |
||||
} |
||||
} |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
@Override |
||||
public boolean deleteStationInfo(String stationId) { |
||||
HttpResponse response = HttpRequest.post(fdpUrlConfiguration.getDeleteStationInfo()).body(JSON.toJSONString( |
||||
new HashMap<String, String>(1) {{ |
||||
put("stationId", stationId); |
||||
}} |
||||
)).execute(); |
||||
if(response.getStatus() == HttpServletResponse.SC_OK && |
||||
"1".equals(JSONObject.parseObject(response.body()).getString("success"))) { |
||||
return true; |
||||
} |
||||
else { |
||||
throw new ServiceException("Fdp删除站点信息失败!"); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public List<DevsetQuestionResp> getDevsetQuestion(String deviceType, Integer stationType) { |
||||
List<DevsetQuestionResp> result = Lists.newArrayList(); |
||||
String getQuestionUrl = ""; |
||||
switch(deviceType) { |
||||
case FdpConstant.COMMON_DEVICE_TYPE: |
||||
getQuestionUrl = fdpUrlConfiguration.getGetStationQuestion(); |
||||
break; |
||||
case FdpConstant.SET_DEVICE_TYPE: |
||||
getQuestionUrl = fdpUrlConfiguration.getGetDevsetQuestion(); |
||||
break; |
||||
default: |
||||
break; |
||||
} |
||||
if(StringUtil.isNotBlank(getQuestionUrl)) { |
||||
HttpResponse response = HttpRequest.post(getQuestionUrl).body(JSON.toJSONString( |
||||
new HashMap<String, Integer>(1) {{ |
||||
put("type", getStationType(stationType)); |
||||
}} |
||||
)).execute(); |
||||
if(response.getStatus() == HttpServletResponse.SC_OK && |
||||
"1".equals(JSONObject.parseObject(response.body()).getString("success"))) { |
||||
JSONObject responseJSON = JSONObject.parseObject(response.body()); |
||||
result = JSONArray.parseArray(responseJSON.getString("data"), DevsetQuestionResp.class); |
||||
} |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
@Override |
||||
public boolean submitDeviceAnswer(SubmitAnswerReq submitAnswerReq) { |
||||
logger.info("hzims:equipment:submitDeviceAnswer",JSON.toJSONString(submitAnswerReq)); |
||||
String submitAnswerUrl = ""; |
||||
switch(submitAnswerReq.getDeviceType()) { |
||||
case FdpConstant.COMMON_DEVICE_TYPE: |
||||
submitAnswerUrl = fdpUrlConfiguration.getSubmitStationAnswer(); |
||||
break; |
||||
case FdpConstant.SET_DEVICE_TYPE: |
||||
submitAnswerUrl = fdpUrlConfiguration.getSubmitDevsetAnswer(); |
||||
break; |
||||
default: |
||||
break; |
||||
} |
||||
if(StringUtil.isNotBlank(submitAnswerUrl)) { |
||||
submitAnswerReq.setType(this.getStationType(submitAnswerReq.getStationType())); |
||||
HttpResponse response = HttpRequest.post(submitAnswerUrl).body(JSON.toJSONString(submitAnswerReq)).execute(); |
||||
return response.getStatus() == HttpServletResponse.SC_OK && |
||||
"1".equals(JSONObject.parseObject(response.body()).getString("success")); |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* 根据站点类型获取Fdp的站点类型 |
||||
* @param stationType 站点管理站点类型 |
||||
* @return Fdp站点类型 |
||||
*/ |
||||
private Integer getStationType(Integer stationType) { |
||||
if(StationEnumConstants.StationTypeEnum.STATION_TYPE_0.getStatus() == stationType) { |
||||
return FdpConstant.HYDROELECTRIC_STATION; |
||||
} |
||||
else if(StationEnumConstants.StationTypeEnum.STATION_TYPE_8.getStatus() == stationType) { |
||||
return FdpConstant.PUMP_STATION; |
||||
} |
||||
return null; |
||||
} |
||||
} |
Loading…
Reference in new issue