1.治理App版本信息添加
2.准实时数据接口调整 3.设备登记调整 4.设备接入调整
This commit is contained in:
@@ -5,6 +5,7 @@ import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.csdevice.api.fallback.WlRecordClientFallbackFactory;
|
||||
import com.njcn.csdevice.pojo.param.WlRecordParam;
|
||||
import com.njcn.csdevice.pojo.po.WlRecord;
|
||||
import com.njcn.csdevice.pojo.vo.RecordVo;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@@ -50,4 +51,7 @@ public interface WlRecordFeignClient {
|
||||
|
||||
@GetMapping("/getWlAssByWlId")
|
||||
HttpResult<List<WlRecord>> getWlAssByWlId(@RequestParam("wlId")String wlId);
|
||||
|
||||
@PostMapping("/findDevBaseDataByLineId")
|
||||
HttpResult<List<RecordVo>> findDevBaseDataByLineId(@RequestBody @Validated WlRecordParam.lineRecord param);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.csdevice.api.WlRecordFeignClient;
|
||||
import com.njcn.csdevice.pojo.param.WlRecordParam;
|
||||
import com.njcn.csdevice.pojo.po.WlRecord;
|
||||
import com.njcn.csdevice.pojo.vo.RecordVo;
|
||||
import feign.hystrix.FallbackFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -63,6 +64,12 @@ public class WlRecordClientFallbackFactory implements FallbackFactory<WlRecordFe
|
||||
log.error("{}异常,降级处理,异常为:{}","根据测试项id获取测试项详细条目",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HttpResult<List<RecordVo>> findDevBaseDataByLineId(WlRecordParam.lineRecord param) {
|
||||
log.error("{}异常,降级处理,异常为:{}","根据监测点id查询装置基础数据",cause.toString());
|
||||
throw new BusinessException(finalExceptionEnum);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
package com.njcn.csdevice.pojo.param;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -60,51 +58,12 @@ public class CsEquipmentDeliveryAuditParm {
|
||||
@ApiModelProperty(value="装置接入方式")
|
||||
private String devAccessMethod;
|
||||
|
||||
// /**
|
||||
// * 装置程序版本
|
||||
// */
|
||||
// @ApiModelProperty(value="装置程序版本")
|
||||
// private String programVersion;
|
||||
|
||||
// /**
|
||||
// * 调试人员
|
||||
// */
|
||||
// @ApiModelProperty(value="调试人员")
|
||||
// private String debugPerson;
|
||||
//
|
||||
// /**
|
||||
// * 出厂日期
|
||||
// */
|
||||
// @ApiModelProperty(value="出厂日期")
|
||||
// @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
|
||||
// private Date producteTime;
|
||||
//
|
||||
// /**
|
||||
// * 检修日期
|
||||
// */
|
||||
// @ApiModelProperty(value="检修日期")
|
||||
// @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
|
||||
// private Date checkTime;
|
||||
//
|
||||
// /**
|
||||
// * 调试日期
|
||||
// */
|
||||
// @ApiModelProperty(value="调试日期")
|
||||
// @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
|
||||
// private Date debugTime;
|
||||
|
||||
/**
|
||||
* 合同号
|
||||
*/
|
||||
@ApiModelProperty(value="合同号")
|
||||
private String cntractNo;
|
||||
|
||||
// /**
|
||||
// * 营销经理
|
||||
// */
|
||||
// @ApiModelProperty(value="营销经理")
|
||||
// private String salesManager;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@@ -128,4 +87,7 @@ public class CsEquipmentDeliveryAuditParm {
|
||||
*/
|
||||
@ApiModelProperty(value="模块个数")
|
||||
private Integer modelNumber;
|
||||
|
||||
@ApiModelProperty(value="装置使用状态(0:停用 1:启用)")
|
||||
private Integer usageStatus;
|
||||
}
|
||||
@@ -99,4 +99,19 @@ public class WlRecordParam {
|
||||
private String id;
|
||||
}
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public static class lineRecord extends WlRecordParam {
|
||||
|
||||
@ApiModelProperty("监测点id")
|
||||
private String lineId;
|
||||
|
||||
@ApiModelProperty("测试项起始时间")
|
||||
private String itemStartTime;
|
||||
|
||||
@ApiModelProperty("测试项结束时间")
|
||||
private String itemEndTime;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -108,4 +108,10 @@ public class CsEquipmentDeliveryPO extends BaseEntity {
|
||||
@TableField(value = "process")
|
||||
private Integer process;
|
||||
|
||||
/**
|
||||
* 装置使用状态(0:停用 1:启用)
|
||||
*/
|
||||
@TableField(value = "usage_status")
|
||||
private Integer usageStatus;
|
||||
|
||||
}
|
||||
@@ -83,4 +83,7 @@ public class CsEquipmentDeliveryVO extends BaseEntity {
|
||||
@ApiModelProperty(value="设备当前流程状态")
|
||||
private Integer process ;
|
||||
|
||||
@ApiModelProperty(value="装置使用状态(0:停用 1:启用)")
|
||||
private Integer usageStatus ;
|
||||
|
||||
}
|
||||
@@ -48,6 +48,9 @@ public class CsLedgerVO implements Serializable {
|
||||
@ApiModelProperty(name = "type",value = "类型 项目 工程 装置 监测点")
|
||||
private String type;
|
||||
|
||||
@ApiModelProperty(name = "lineType",value = "监测点类型 0:治理监测点 1:电能质量监测点")
|
||||
private Integer lineType;
|
||||
|
||||
@ApiModelProperty(name = "children",value = "子节点")
|
||||
private List<CsLedgerVO> children = new ArrayList<>();
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ import springfox.documentation.annotations.ApiIgnore;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@@ -66,10 +67,10 @@ public class EquipmentDeliveryController extends BaseController {
|
||||
@ApiOperation("新增出厂设备")
|
||||
@ApiImplicitParam(name = "csEquipmentDeliveryAddParm", value = "新增项目参数", required = true)
|
||||
@DeviceLog(operateType = DeviceOperate.ADD)
|
||||
public HttpResult<Boolean> addEquipmentDelivery(@RequestBody @Validated CsEquipmentDeliveryAddParm csEquipmentDeliveryAddParm){
|
||||
public HttpResult<CsEquipmentDeliveryPO> addEquipmentDelivery(@RequestBody @Validated CsEquipmentDeliveryAddParm csEquipmentDeliveryAddParm){
|
||||
String methodDescribe = getMethodDescribe("addEquipmentDelivery");
|
||||
Boolean flag = csEquipmentDeliveryService.save(csEquipmentDeliveryAddParm);
|
||||
if (flag){
|
||||
CsEquipmentDeliveryPO po = csEquipmentDeliveryService.save(csEquipmentDeliveryAddParm);
|
||||
if (Objects.nonNull(po)){
|
||||
//查询mqtt用户名和密码是否存在
|
||||
boolean result = mqttUserService.findMqttUser(csEquipmentDeliveryAddParm.getNdid());
|
||||
if (result){
|
||||
@@ -77,7 +78,7 @@ public class EquipmentDeliveryController extends BaseController {
|
||||
mqttUserService.insertMqttUser(csEquipmentDeliveryAddParm.getNdid());
|
||||
}
|
||||
}
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, po, methodDescribe);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -168,6 +168,20 @@ public class WlRecordController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除装置测试项
|
||||
*/
|
||||
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.UPDATE)
|
||||
@PostMapping("/deleteItem")
|
||||
@ApiOperation("删除装置测试项")
|
||||
@ApiImplicitParam(name = "id", value = "装置测试项Id", required = true)
|
||||
public HttpResult<Boolean> deleteItem(@RequestParam @Validated String id) {
|
||||
String methodDescribe = getMethodDescribe("deleteItem");
|
||||
LogUtil.njcnDebug(log, "{},装置测试项Id为:{}", methodDescribe, id);
|
||||
wlRecordService.deleteItem(id);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询测试项时间段实时数据
|
||||
*/
|
||||
@@ -195,6 +209,19 @@ public class WlRecordController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, record, methodDescribe);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据监测点id查询装置基础数据
|
||||
*/
|
||||
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.QUERY)
|
||||
@PostMapping("/findDevBaseDataByLineId")
|
||||
@ApiOperation("根据监测点id查询装置基础数据")
|
||||
@ApiImplicitParam(name = "param", value = "查询条件", required = true)
|
||||
public HttpResult<List<RecordVo>> findDevBaseDataByLineId(@RequestBody @Validated WlRecordParam.lineRecord param) {
|
||||
String methodDescribe = getMethodDescribe("findDevBaseDataByLineId");
|
||||
LogUtil.njcnDebug(log, "{},查询对象为:{}", methodDescribe, param);
|
||||
List<RecordVo> record = wlRecordService.findDevBaseDataByLineId(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, record, methodDescribe);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -39,7 +39,7 @@ public interface CsEquipmentDeliveryService extends IService<CsEquipmentDelivery
|
||||
* @Author: clam
|
||||
* @Date: 2023/3/31
|
||||
*/
|
||||
Boolean save(CsEquipmentDeliveryAddParm csEquipmentDeliveryAddParm);
|
||||
CsEquipmentDeliveryPO save(CsEquipmentDeliveryAddParm csEquipmentDeliveryAddParm);
|
||||
/**
|
||||
* @Description: AuditEquipmentDelivery
|
||||
* @Param: [id]
|
||||
|
||||
@@ -102,6 +102,7 @@ public interface IWlRecordService extends IService<WlRecord> {
|
||||
*/
|
||||
WlRecord findDevBaseData(WlRecordParam.Record param);
|
||||
|
||||
List<RecordVo> findDevBaseDataByLineId(WlRecordParam.lineRecord param);
|
||||
|
||||
/**
|
||||
* 每日处理没有结束时间的测试基础数据
|
||||
@@ -110,4 +111,5 @@ public interface IWlRecordService extends IService<WlRecord> {
|
||||
|
||||
List<WlRecord> getWlAssByWlId(String wlId);
|
||||
|
||||
void deleteItem(String id);
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.api.DictTreeFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import com.njcn.system.enums.DicTreeEnum;
|
||||
import com.njcn.system.pojo.po.SysDicTreePO;
|
||||
import com.njcn.system.pojo.vo.DictTreeVO;
|
||||
import com.njcn.web.factory.PageFactory;
|
||||
import com.njcn.web.utils.RequestUtil;
|
||||
@@ -101,7 +102,7 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
public Boolean save(CsEquipmentDeliveryAddParm csEquipmentDeliveryAddParm) {
|
||||
public CsEquipmentDeliveryPO save(CsEquipmentDeliveryAddParm csEquipmentDeliveryAddParm) {
|
||||
boolean result;
|
||||
CsEquipmentDeliveryPO po = this.queryEquipmentPOByndid (csEquipmentDeliveryAddParm.getNdid());
|
||||
if(!Objects.isNull (po)){
|
||||
@@ -111,6 +112,7 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
BeanUtils.copyProperties (csEquipmentDeliveryAddParm,csEquipmentDeliveryPo);
|
||||
csEquipmentDeliveryPo.setStatus (1);
|
||||
csEquipmentDeliveryPo.setRunStatus(1);
|
||||
csEquipmentDeliveryPo.setUsageStatus(1);
|
||||
String code = dictTreeFeignClient.queryById(csEquipmentDeliveryAddParm.getDevType()).getData().getCode();
|
||||
if (Objects.equals(DicDataEnum.PORTABLE.getCode(),code)) {
|
||||
csEquipmentDeliveryPo.setProcess(4);
|
||||
@@ -135,7 +137,7 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
if (result) {
|
||||
refreshDeviceDataCache();
|
||||
}
|
||||
return result;
|
||||
return csEquipmentDeliveryPo;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -370,6 +372,7 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
BeanUtils.copyProperties(csEquipmentDeliveryPo, deviceManagerVo);
|
||||
if (CollUtil.isNotEmpty(dataSet)) {
|
||||
for (CsDataSet item : dataSet) {
|
||||
//准实时数据
|
||||
DeviceManagerVO.DataSetVO dataSetVO = new DeviceManagerVO.DataSetVO();
|
||||
dataSetVO.setId(item.getId());
|
||||
dataSetVO.setName("history".equals(type) ? "准实时数据":item.getAnotherName());
|
||||
@@ -384,14 +387,14 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
dataSetVo2.setType("history");
|
||||
dataSetList.add(dataSetVo2);
|
||||
deviceManagerVo.setDataLevel(item.getDataLevel());
|
||||
//趋势数据tab
|
||||
DeviceManagerVO.DataSetVO dataSetVo3 = new DeviceManagerVO.DataSetVO();
|
||||
dataSetVo3.setId(item.getId());
|
||||
dataSetVo3.setName("历史趋势");
|
||||
dataSetVo3.setType("trenddata");
|
||||
dataSetList.add(dataSetVo3);
|
||||
//下面这些tab仅仅只限于设备监控的便携式设备才会有
|
||||
if(DataParam.portableDevType.equals(csEquipmentDeliveryPo.getDevType())){
|
||||
//趋势数据tab
|
||||
DeviceManagerVO.DataSetVO dataSetVo3 = new DeviceManagerVO.DataSetVO();
|
||||
dataSetVo3.setId(item.getId());
|
||||
dataSetVo3.setName("历史趋势");
|
||||
dataSetVo3.setType("trenddata");
|
||||
dataSetList.add(dataSetVo3);
|
||||
//实时数据tab
|
||||
DeviceManagerVO.DataSetVO dataSetVo4 = new DeviceManagerVO.DataSetVO();
|
||||
dataSetVo4.setId(item.getId());
|
||||
@@ -404,6 +407,12 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
dataSetVo5.setName("暂态事件");
|
||||
dataSetVo5.setType("event");
|
||||
dataSetList.add(dataSetVo5);
|
||||
//测试项tab
|
||||
DeviceManagerVO.DataSetVO dataSetVo6 = new DeviceManagerVO.DataSetVO();
|
||||
dataSetVo6.setId(item.getId());
|
||||
dataSetVo6.setName("测试项记录");
|
||||
dataSetVo6.setType("items");
|
||||
dataSetList.add(dataSetVo6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +90,17 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
|
||||
List<CsLedgerVO> finalLineList = allList.stream()
|
||||
.filter(item -> item.getLevel().equals(LineBaseEnum.LINE_LEVEL.getCode()))
|
||||
.sorted(Comparator.comparing(CsLedgerVO::getSort))
|
||||
.peek(item -> item.setType("line"))
|
||||
.peek(
|
||||
item -> {
|
||||
item.setType("line");
|
||||
String index = item.getId().substring(item.getId().length()-1);
|
||||
if (Objects.equals(index,"0")) {
|
||||
item.setLineType(0);
|
||||
} else {
|
||||
item.setLineType(1);
|
||||
}
|
||||
}
|
||||
)
|
||||
.collect(Collectors.toList());
|
||||
checkDevSetData(deviceList);
|
||||
deviceList.forEach(dev -> dev.setChildren(getChildren(dev, finalLineList)));
|
||||
|
||||
@@ -522,6 +522,25 @@ public class WlRecordServiceImpl extends ServiceImpl<WlRecordMapper, WlRecord> i
|
||||
return this.getOne(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RecordVo> findDevBaseDataByLineId(WlRecordParam.lineRecord param) {
|
||||
List<RecordVo> result = new ArrayList<>();
|
||||
LambdaQueryWrapper<WlRecord> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(WlRecord::getLineId,param.getLineId())
|
||||
.between(WlRecord::getStartTime,param.getItemStartTime(),param.getItemEndTime())
|
||||
.eq(WlRecord::getType,1)
|
||||
.eq(WlRecord::getState,1).orderByDesc(WlRecord::getStartTime);
|
||||
List<WlRecord> list = this.list(lambdaQueryWrapper);
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
list.forEach(item->{
|
||||
RecordVo vo = new RecordVo();
|
||||
BeanUtils.copyProperties(item,vo);
|
||||
result.add(vo);
|
||||
});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void dayDealNoEndTimeEvent(String date) {
|
||||
@@ -620,6 +639,13 @@ public class WlRecordServiceImpl extends ServiceImpl<WlRecordMapper, WlRecord> i
|
||||
return this.baseMapper.getDataRecordByTestId(wlId,0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteItem(String id) {
|
||||
LambdaUpdateWrapper<WlRecord> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.eq(WlRecord::getId,id).set(WlRecord::getState,0);
|
||||
this.update(lambdaUpdateWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据项内的时间进行覆盖:解决多个数据项的startTime及endTime之间存在时间冲突
|
||||
* @param data 数据项
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.njcn.csharmonic.param;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Data
|
||||
public class DataParam implements Serializable {
|
||||
|
||||
@ApiModelProperty("起始时间")
|
||||
private String startTime;
|
||||
|
||||
@ApiModelProperty("结束时间")
|
||||
private String endTime;
|
||||
|
||||
@ApiModelProperty("监测点id")
|
||||
private String lineId;
|
||||
|
||||
@ApiModelProperty("指标统计类型")
|
||||
private String targetType;
|
||||
|
||||
@ApiModelProperty("数据标志")
|
||||
private String dataLevel;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.njcn.csharmonic.pojo.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.njcn.influx.utils.InstantDateSerializer;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.Instant;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Data
|
||||
public class RealTimeDataVo implements Serializable {
|
||||
|
||||
@ApiModelProperty("数据时间")
|
||||
@JsonSerialize(using = InstantDateSerializer.class)
|
||||
private Instant time;
|
||||
|
||||
@ApiModelProperty("指标id")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("指标名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("指标别名")
|
||||
private String otherName;
|
||||
|
||||
@ApiModelProperty("相别")
|
||||
private String phase;
|
||||
|
||||
@ApiModelProperty("单位")
|
||||
private String unit;
|
||||
|
||||
@ApiModelProperty("排序")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty("平均值")
|
||||
private Double avgValue;
|
||||
|
||||
@ApiModelProperty("A相值")
|
||||
private Double valueA;
|
||||
|
||||
@ApiModelProperty("B相值")
|
||||
private Double valueB;
|
||||
|
||||
@ApiModelProperty("C相值")
|
||||
private Double valueC;
|
||||
|
||||
@ApiModelProperty("无相值")
|
||||
private Double valueM;
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.njcn.csharmonic.controller;
|
||||
|
||||
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.pojo.vo.RecordVo;
|
||||
import com.njcn.csharmonic.param.DataParam;
|
||||
import com.njcn.csharmonic.pojo.vo.RealTimeDataVo;
|
||||
import com.njcn.csharmonic.service.IDataService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
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.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/data")
|
||||
@Api(tags = "装置数据")
|
||||
@AllArgsConstructor
|
||||
public class DataController extends BaseController {
|
||||
|
||||
private final IDataService dataService;
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/realTimeData")
|
||||
@ApiOperation("设备监控-》准实时数据")
|
||||
@ApiImplicitParam(name = "param", value = "参数", required = true)
|
||||
public HttpResult<List<RealTimeDataVo>> realTimeData(@RequestBody DataParam param) {
|
||||
String methodDescribe = getMethodDescribe("realTimeData");
|
||||
List<RealTimeDataVo> list = dataService.getRealTimeData(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/getTestData")
|
||||
@ApiOperation("设备监控-》测试项数据")
|
||||
@ApiImplicitParam(name = "param", value = "参数", required = true)
|
||||
public HttpResult<List<RecordVo>> getTestData(@RequestBody DataParam param) {
|
||||
String methodDescribe = getMethodDescribe("getTestData");
|
||||
List<RecordVo> list = dataService.getTestData(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.csharmonic.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.csdevice.pojo.po.CsDataSet;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 数据集表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author xuyang
|
||||
* @since 2023-05-31
|
||||
*/
|
||||
public interface CsDataSetMapper extends BaseMapper<CsDataSet> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.njcn.csharmonic.service;
|
||||
|
||||
import com.njcn.csdevice.pojo.vo.RecordVo;
|
||||
import com.njcn.csharmonic.param.DataParam;
|
||||
import com.njcn.csharmonic.pojo.vo.RealTimeDataVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xuyang
|
||||
*/
|
||||
public interface IDataService {
|
||||
|
||||
/**
|
||||
* 获取设备准实时数据
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
List<RealTimeDataVo> getRealTimeData(DataParam param);
|
||||
|
||||
/**
|
||||
* 获取监测点测试项信息
|
||||
*/
|
||||
List<RecordVo> getTestData(DataParam param);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,223 @@
|
||||
package com.njcn.csharmonic.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||
import com.njcn.csdevice.api.WlRecordFeignClient;
|
||||
import com.njcn.csdevice.pojo.param.WlRecordParam;
|
||||
import com.njcn.csdevice.pojo.po.CsDataSet;
|
||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||
import com.njcn.csdevice.pojo.vo.RecordVo;
|
||||
import com.njcn.csdevice.utils.DataChangeUtil;
|
||||
import com.njcn.csharmonic.constant.HarmonicConstant;
|
||||
import com.njcn.csharmonic.mapper.CsDataSetMapper;
|
||||
import com.njcn.csharmonic.param.DataParam;
|
||||
import com.njcn.csharmonic.pojo.vo.RealTimeDataVo;
|
||||
import com.njcn.csharmonic.service.IDataService;
|
||||
import com.njcn.csharmonic.util.InfluxDbParamUtil;
|
||||
import com.njcn.influx.pojo.dto.StatisticalDataDTO;
|
||||
import com.njcn.influx.service.CommonService;
|
||||
import com.njcn.system.api.CsStatisticalSetFeignClient;
|
||||
import com.njcn.system.api.DictTreeFeignClient;
|
||||
import com.njcn.system.pojo.po.EleEpdPqd;
|
||||
import com.njcn.system.pojo.vo.DictTreeVO;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 类的介绍:
|
||||
*
|
||||
* @author xuyang
|
||||
* @version 1.0.0
|
||||
* @createTime 2023/6/1 10:11
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class DataServiceImpl implements IDataService {
|
||||
|
||||
private final CommonService commonService;
|
||||
private final CsStatisticalSetFeignClient csStatisticalSetFeignClient;
|
||||
private final DictTreeFeignClient dictTreeFeignClient;
|
||||
private final InfluxDbParamUtil influxDbParamUtil;
|
||||
private final CsLineFeignClient csLineFeignClient;
|
||||
private final CsDataSetMapper csDataSetMapper;
|
||||
private final WlRecordFeignClient wlRecordFeignClient;
|
||||
private final DecimalFormat df = new DecimalFormat("#0.00");
|
||||
|
||||
@Override
|
||||
public List<RealTimeDataVo> getRealTimeData(DataParam param) {
|
||||
List<RealTimeDataVo> result = new ArrayList<>();
|
||||
//获取监测点使用的数据集
|
||||
List<CsLinePO> finalCsLinePOList = csLineFeignClient.queryLineById(Arrays.asList(param.getLineId())).getData();
|
||||
CsDataSet csDataSet = csDataSetMapper.selectOne(new LambdaQueryWrapper<CsDataSet>().eq(CsDataSet::getId,finalCsLinePOList.get(0).getDataSetId()));
|
||||
Double ct = finalCsLinePOList.get(0).getCtRatio();
|
||||
Double pt = finalCsLinePOList.get(0).getPtRatio();
|
||||
//根据类型id获取指标分组
|
||||
List<DictTreeVO> dictTreeVOList = dictTreeFeignClient.query(param.getTargetType()).getData();
|
||||
if (CollUtil.isNotEmpty(dictTreeVOList)) {
|
||||
dictTreeVOList = dictTreeVOList.stream().sorted(Comparator.comparing(DictTreeVO::getSort)).collect(Collectors.toList());
|
||||
//根据分组获取对应指标
|
||||
List<RealTimeDataVo> finalResult = result;
|
||||
dictTreeVOList.forEach(item->{
|
||||
List<EleEpdPqd> epdPqdList = csStatisticalSetFeignClient.queryStatisticalSelect(item.getId()).getData();
|
||||
epdPqdList.forEach(item2->{
|
||||
if (Objects.isNull(item2.getHarmStart())) {
|
||||
RealTimeDataVo vo = getBaseData(item2,param.getLineId(),param.getDataLevel(),csDataSet.getDataLevel(),pt,ct);
|
||||
if (Objects.nonNull(vo)) {
|
||||
finalResult.add(vo);
|
||||
}
|
||||
} else if (Objects.equals(item2.getHarmStart(),2)) {
|
||||
List<RealTimeDataVo> harmList = getHarmData(item2,param.getLineId());
|
||||
finalResult.addAll(harmList);
|
||||
} else if (Objects.equals(item2.getHarmStart(),1)) {
|
||||
List<RealTimeDataVo> inuharmList = getInuHarmData(item2,param.getLineId());
|
||||
finalResult.addAll(inuharmList);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
if (CollUtil.isNotEmpty(result)) {
|
||||
result = channelData(result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RecordVo> getTestData(DataParam param) {
|
||||
WlRecordParam.lineRecord record = new WlRecordParam.lineRecord();
|
||||
record.setLineId(param.getLineId());
|
||||
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);
|
||||
record.setItemStartTime(beginDay);
|
||||
record.setItemEndTime(endDay);
|
||||
return wlRecordFeignClient.findDevBaseDataByLineId(record).getData();
|
||||
}
|
||||
|
||||
//基础数据
|
||||
public RealTimeDataVo getBaseData(EleEpdPqd item2, String lineId, String dataLevel, String csDataSetLevel,Double pt, Double ct) {
|
||||
RealTimeDataVo vo = new RealTimeDataVo();
|
||||
String unit;
|
||||
double re;
|
||||
vo.setId(item2.getId());
|
||||
vo.setName(item2.getName());
|
||||
StatisticalDataDTO statisticalDataDTO = commonService.getLineRtData(lineId,influxDbParamUtil.getTableNameByClassId(item2.getClassId()),item2.getName(),item2.getPhase(),"avg",influxDbParamUtil.getClDidByLineId(lineId));
|
||||
if (Objects.isNull(statisticalDataDTO)) {
|
||||
return null;
|
||||
}
|
||||
vo.setTime(statisticalDataDTO.getTime());
|
||||
vo.setAvgValue(statisticalDataDTO.getValue());
|
||||
vo.setPhase(item2.getPhase());
|
||||
vo.setOtherName(item2.getShowName());
|
||||
vo.setSort(item2.getSort());
|
||||
if (Objects.equals("Primary",dataLevel)) {
|
||||
if (Objects.equals("Primary",csDataSetLevel)) {
|
||||
vo.setAvgValue(Double.valueOf(df.format(statisticalDataDTO.getValue())));
|
||||
unit = item2.getUnit();
|
||||
} else {
|
||||
if (HarmonicConstant.POWER_LIST.contains(item2.getShowName())) {
|
||||
re = DataChangeUtil.secondaryToPrimary(item2.getPrimaryFormula(), statisticalDataDTO.getValue(), pt, ct) / 1000;
|
||||
vo.setAvgValue(Double.valueOf(df.format(re)));
|
||||
unit = "k" + item2.getUnit();
|
||||
} else {
|
||||
vo.setAvgValue(Double.valueOf(df.format(statisticalDataDTO.getValue())));
|
||||
unit = item2.getUnit();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (Objects.equals("Primary",csDataSetLevel)) {
|
||||
if (HarmonicConstant.POWER_LIST.contains(item2.getShowName())) {
|
||||
re = DataChangeUtil.primaryToSecondary(item2.getPrimaryFormula(), statisticalDataDTO.getValue(), pt, ct);
|
||||
vo.setAvgValue(Double.valueOf(df.format(re)));
|
||||
} else {
|
||||
vo.setAvgValue(Double.valueOf(df.format(statisticalDataDTO.getValue())));
|
||||
}
|
||||
} else {
|
||||
vo.setAvgValue(Double.valueOf(df.format(statisticalDataDTO.getValue())));
|
||||
}
|
||||
unit = item2.getUnit();
|
||||
}
|
||||
vo.setUnit(unit);
|
||||
if (Objects.nonNull(unit)) {
|
||||
vo.setOtherName(item2.getShowName() + "(" + unit + ")");
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
|
||||
//谐波数据
|
||||
public List<RealTimeDataVo> getHarmData(EleEpdPqd item2, String lineId) {
|
||||
List<RealTimeDataVo> list = new ArrayList<>();
|
||||
for (int i = item2.getHarmStart(); i <= item2.getHarmEnd(); i++) {
|
||||
RealTimeDataVo vo = new RealTimeDataVo();
|
||||
vo.setId(item2.getId());
|
||||
vo.setName(item2.getName().concat("_").concat(Integer.toString(i)));
|
||||
StatisticalDataDTO statisticalDataDTO = commonService.getLineRtData(lineId,influxDbParamUtil.getTableNameByClassId(item2.getClassId()),item2.getName().concat("_").concat(Integer.toString(i)),item2.getPhase(),"avg",influxDbParamUtil.getClDidByLineId(lineId));
|
||||
vo.setTime(statisticalDataDTO.getTime());
|
||||
vo.setAvgValue(Double.valueOf(df.format(statisticalDataDTO.getValue())));
|
||||
vo.setPhase(item2.getPhase());
|
||||
vo.setOtherName(i + "次" + "(" + item2.getUnit() + ")");
|
||||
vo.setSort(item2.getSort());
|
||||
vo.setUnit(item2.getUnit());
|
||||
list.add(vo);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
//间谐波数据
|
||||
public List<RealTimeDataVo> getInuHarmData(EleEpdPqd item2, String lineId) {
|
||||
List<RealTimeDataVo> list = new ArrayList<>();
|
||||
for (int i = item2.getHarmStart(); i <= item2.getHarmEnd(); i++) {
|
||||
RealTimeDataVo vo = new RealTimeDataVo();
|
||||
vo.setId(item2.getId());
|
||||
vo.setName(item2.getName().concat("_").concat(Integer.toString(i)));
|
||||
StatisticalDataDTO statisticalDataDTO = commonService.getLineRtData(lineId,influxDbParamUtil.getTableNameByClassId(item2.getClassId()),item2.getName().concat("_").concat(Integer.toString(i)),item2.getPhase(),"avg",influxDbParamUtil.getClDidByLineId(lineId));
|
||||
vo.setTime(statisticalDataDTO.getTime());
|
||||
vo.setAvgValue(Double.valueOf(df.format(statisticalDataDTO.getValue())));
|
||||
vo.setPhase(item2.getPhase());
|
||||
vo.setOtherName((i-0.5) + "次" + "(" + item2.getUnit() + ")");
|
||||
vo.setSort(item2.getSort());
|
||||
vo.setUnit(item2.getUnit());
|
||||
list.add(vo);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
//数据格式处理
|
||||
public List<RealTimeDataVo> channelData(List<RealTimeDataVo> list) {
|
||||
List<RealTimeDataVo> result = new ArrayList<>();
|
||||
//将list 排序,并按照排序后的结果进行有序分组
|
||||
LinkedHashMap<String, List<RealTimeDataVo>> map = list.stream().sorted(Comparator.comparing(RealTimeDataVo::getSort)).collect(Collectors.groupingBy(RealTimeDataVo::getName, LinkedHashMap::new, Collectors.toList()));
|
||||
map.forEach((k,v)->{
|
||||
RealTimeDataVo vo = new RealTimeDataVo();
|
||||
RealTimeDataVo vo1 = v.get(0);
|
||||
BeanUtils.copyProperties(vo1,vo);
|
||||
RealTimeDataVo phaseA = v.stream().filter(s->Objects.equals(s.getPhase(),"A") || Objects.equals(s.getPhase(),"AB")).findFirst().orElse(null);
|
||||
if (Objects.nonNull(phaseA)) {
|
||||
vo.setValueA(phaseA.getAvgValue());
|
||||
}
|
||||
RealTimeDataVo phaseB = v.stream().filter(s->Objects.equals(s.getPhase(),"B") || Objects.equals(s.getPhase(),"BC")).findFirst().orElse(null);
|
||||
if (Objects.nonNull(phaseB)) {
|
||||
vo.setValueB(phaseB.getAvgValue());
|
||||
}
|
||||
RealTimeDataVo phaseC = v.stream().filter(s->Objects.equals(s.getPhase(),"C") || Objects.equals(s.getPhase(),"CA")).findFirst().orElse(null);
|
||||
if (Objects.nonNull(phaseC)) {
|
||||
vo.setValueC(phaseC.getAvgValue());
|
||||
}
|
||||
RealTimeDataVo phaseM = v.stream().filter(s->Objects.equals(s.getPhase(),"M")).findFirst().orElse(null);
|
||||
if (Objects.nonNull(phaseM)) {
|
||||
vo.setValueM(phaseM.getAvgValue());
|
||||
}
|
||||
vo.setPhase("/");
|
||||
vo.setAvgValue(null);
|
||||
result.add(vo);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.njcn.cssystem.pojo.param;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Data
|
||||
public class AppVersionParam implements Serializable {
|
||||
|
||||
@ApiModelProperty("app版本信息")
|
||||
@NotBlank(message = "app版本信息不能为空")
|
||||
private String appVersion;
|
||||
|
||||
@ApiModelProperty("严重度(0:优化 1:bug调整)")
|
||||
@NotNull(message = "更新严重度不能为空")
|
||||
private Integer sev;
|
||||
|
||||
@ApiModelProperty("整改内容")
|
||||
private String content;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.njcn.cssystem.pojo.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.njcn.db.bo.BaseEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2024-11-21
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("app_version")
|
||||
public class AppVersion extends BaseEntity implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* app版本名称
|
||||
*/
|
||||
private String versionName;
|
||||
|
||||
/**
|
||||
* 版本发布时间
|
||||
*/
|
||||
private LocalDateTime publishTime;
|
||||
|
||||
/**
|
||||
* 严重度(0:优化 1:bug调整)
|
||||
*/
|
||||
private Integer sev;
|
||||
|
||||
/**
|
||||
* 修改内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.njcn.cssystem.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 AppVersionVo implements Serializable {
|
||||
|
||||
@ApiModelProperty("app版本名称")
|
||||
private String versionName;
|
||||
|
||||
@ApiModelProperty("版本发布时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime publishTime;
|
||||
|
||||
@ApiModelProperty("严重度(0:优化 1:bug调整)")
|
||||
private Integer sev;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.njcn.cssystem.controller.baseinfo;
|
||||
|
||||
|
||||
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.cssystem.pojo.param.AppVersionParam;
|
||||
import com.njcn.cssystem.pojo.vo.AppVersionVo;
|
||||
import com.njcn.cssystem.service.IAppVersionService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
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.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2024-11-21
|
||||
*/
|
||||
@RestController
|
||||
@Slf4j
|
||||
@RequestMapping("/appVersion")
|
||||
@Api(tags = "app版本信息")
|
||||
@AllArgsConstructor
|
||||
public class AppVersionController extends BaseController {
|
||||
|
||||
private final IAppVersionService appVersionService;
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/add")
|
||||
@ApiOperation("新增app版本信息")
|
||||
@ApiImplicitParam(name = "param", value = "app版本信息", required = true)
|
||||
public HttpResult<String> add(@RequestBody @Validated AppVersionParam param){
|
||||
String methodDescribe = getMethodDescribe("add");
|
||||
boolean result = appVersionService.add(param);
|
||||
if (result) {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "新增成功", methodDescribe);
|
||||
} else {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, "新增失败", methodDescribe);
|
||||
}
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/getLastData")
|
||||
@ApiOperation("查询app最新版本信息")
|
||||
public HttpResult<AppVersionVo> getLastData(){
|
||||
String methodDescribe = getMethodDescribe("getLastData");
|
||||
AppVersionVo vo = appVersionService.getLastData();
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, vo, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.cssystem.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.cssystem.pojo.po.AppVersion;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2024-11-21
|
||||
*/
|
||||
public interface AppVersionMapper extends BaseMapper<AppVersion> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.njcn.cssystem.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.cssystem.pojo.param.AppVersionParam;
|
||||
import com.njcn.cssystem.pojo.po.AppVersion;
|
||||
import com.njcn.cssystem.pojo.vo.AppVersionVo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2024-11-21
|
||||
*/
|
||||
public interface IAppVersionService extends IService<AppVersion> {
|
||||
|
||||
boolean add(AppVersionParam param);
|
||||
|
||||
AppVersionVo getLastData();
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.njcn.cssystem.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.cssystem.mapper.AppVersionMapper;
|
||||
import com.njcn.cssystem.pojo.param.AppVersionParam;
|
||||
import com.njcn.cssystem.pojo.po.AppVersion;
|
||||
import com.njcn.cssystem.pojo.vo.AppVersionVo;
|
||||
import com.njcn.cssystem.service.IAppVersionService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author xy
|
||||
* @since 2024-11-21
|
||||
*/
|
||||
@Service
|
||||
public class AppVersionServiceImpl extends ServiceImpl<AppVersionMapper, AppVersion> implements IAppVersionService {
|
||||
|
||||
@Override
|
||||
public boolean add(AppVersionParam param) {
|
||||
AppVersion appVersion = new AppVersion();
|
||||
appVersion.setVersionName(param.getAppVersion());
|
||||
appVersion.setPublishTime(LocalDateTime.now());
|
||||
appVersion.setSev(param.getSev());
|
||||
appVersion.setContent(param.getContent());
|
||||
return this.save(appVersion);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AppVersionVo getLastData() {
|
||||
AppVersionVo vo = new AppVersionVo();
|
||||
LambdaQueryWrapper<AppVersion> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.orderByDesc(AppVersion::getPublishTime).last("limit 1");
|
||||
AppVersion appVersion = this.getOne(queryWrapper);
|
||||
if (Objects.nonNull(appVersion)) {
|
||||
BeanUtils.copyProperties(appVersion, vo);
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user