设备出厂调试记录功能

This commit is contained in:
2023-09-14 11:08:30 +08:00
parent de66504255
commit bcd1b6e56b
13 changed files with 159 additions and 59 deletions

View File

@@ -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.ProcessFeignClientFallbackFactory;
import com.njcn.csdevice.pojo.po.CsEquipmentProcessPO;
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 = "/process", fallbackFactory = ProcessFeignClientFallbackFactory.class,contextId = "process")
public interface ProcessFeignClient {
@PostMapping("/add")
@ApiOperation("新增记录")
HttpResult<String> add(@RequestBody @Validated CsEquipmentProcessPO csEquipmentProcess);
}

View File

@@ -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.ProcessFeignClient;
import com.njcn.csdevice.pojo.po.CsEquipmentProcessPO;
import com.njcn.csdevice.utils.CsDeviceEnumUtil;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/4/10 20:09
*/
@Slf4j
@Component
public class ProcessFeignClientFallbackFactory implements FallbackFactory<ProcessFeignClient> {
@Override
public ProcessFeignClient create(Throwable cause) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (cause.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) cause.getCause();
exceptionEnum = CsDeviceEnumUtil.getExceptionEnum(businessException.getResult());
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new ProcessFeignClient() {
@Override
public HttpResult<String> add(CsEquipmentProcessPO csEquipmentProcess) {
log.error("{}异常,降级处理,异常为:{}","新增记录",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -4,12 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/** /**
* *
* Description: * Description:
@@ -41,13 +40,13 @@ public class CsEquipmentProcessPO {
* 起始时间 * 起始时间
*/ */
@TableField(value = "start_time") @TableField(value = "start_time")
private Date startTime; private LocalDateTime startTime;
/** /**
* 结束时间 * 结束时间
*/ */
@TableField(value = "end_time") @TableField(value = "end_time")
private Date endTime; private LocalDateTime endTime;
/** /**
@@ -55,4 +54,11 @@ public class CsEquipmentProcessPO {
*/ */
@TableField(value = "`process`") @TableField(value = "`process`")
private Integer process; private Integer process;
/**
* 流程状态 0:取消 1:成功
*/
@TableField(value = "status")
private Integer status;
} }

View File

@@ -0,0 +1,52 @@
package com.njcn.csdevice.controller.equipment;
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.po.CsEquipmentProcessPO;
import com.njcn.csdevice.service.CsEquipmentProcessPOService;
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;
/**
* 类的介绍:设备调试日志记录
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/9/14 10:01
*/
@Slf4j
@RestController
@RequestMapping("/process")
@Api(tags = "设备调试日志")
@AllArgsConstructor
public class CsEquipmentProcessController extends BaseController {
private final CsEquipmentProcessPOService csEquipmentProcessPOService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/add")
@ApiOperation("新增记录")
@ApiImplicitParam(name = "clDev", value = "逻辑子设备标识", required = true)
public HttpResult<String> add(@RequestBody @Validated CsEquipmentProcessPO csEquipmentProcess){
String methodDescribe = getMethodDescribe("add");
boolean result = csEquipmentProcessPOService.save(csEquipmentProcess);
if (result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "success", methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, "fail", methodDescribe);
}
}

View File

@@ -1,36 +1,27 @@
package com.njcn.csdevice.controller.equipment; package com.njcn.csdevice.controller.equipment;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType; import com.njcn.common.pojo.constant.OperateType;
import com.njcn.common.pojo.dto.DeviceLogDTO; import com.njcn.common.pojo.dto.DeviceLogDTO;
import com.njcn.common.pojo.dto.LogInfoDTO;
import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.pojo.param.CsMarketDataParam;
import com.njcn.csdevice.pojo.po.CsLogsPO; import com.njcn.csdevice.pojo.po.CsLogsPO;
import com.njcn.csdevice.service.impl.CsLogsPOService; import com.njcn.csdevice.service.CsLogsPOService;
import com.njcn.user.enums.AppRoleEnum;
import com.njcn.web.controller.BaseController; import com.njcn.web.controller.BaseController;
import com.njcn.web.pojo.param.BaseParam; import com.njcn.web.pojo.param.BaseParam;
import com.njcn.web.utils.RequestUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/** /**
* Description: * Description:
* Date: 2023/8/7 14:21【需求编号】 * Date: 2023/8/7 14:21【需求编号】

View File

@@ -224,12 +224,10 @@ public class EquipmentDeliveryController extends BaseController {
@ResponseBody @ResponseBody
@ApiOperation("联调完成") @ApiOperation("联调完成")
@PostMapping(value = "testcompletion") @PostMapping(value = "testcompletion")
public HttpResult<String> testCompletion(@RequestParam("deviceId") String deviceId){ public HttpResult<String> testCompletion(@RequestParam("deviceId") String deviceId,@RequestParam("type") String type){
String methodDescribe = getMethodDescribe("testCompletion"); String methodDescribe = getMethodDescribe("testCompletion");
csEquipmentDeliveryService.testCompletion(deviceId); csEquipmentDeliveryService.testCompletion(deviceId,type);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }

View File

@@ -4,25 +4,16 @@ package com.njcn.csdevice.handler;
import com.github.tocrhz.mqtt.annotation.MqttSubscribe; import com.github.tocrhz.mqtt.annotation.MqttSubscribe;
import com.github.tocrhz.mqtt.annotation.Payload; import com.github.tocrhz.mqtt.annotation.Payload;
import com.github.tocrhz.mqtt.publisher.MqttPublisher;
import com.njcn.common.pojo.dto.DeviceLogDTO; import com.njcn.common.pojo.dto.DeviceLogDTO;
import com.njcn.common.utils.PubUtils; import com.njcn.common.utils.PubUtils;
import com.njcn.csdevice.service.impl.CsLogsPOService; import com.njcn.csdevice.service.CsLogsPOService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttMessage; import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.text.DecimalFormat;
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;
/** /**
* @author xuyang * @author xuyang

View File

@@ -97,5 +97,5 @@ public interface CsEquipmentDeliveryService extends IService<CsEquipmentDelivery
void delete(String devId); void delete(String devId);
void testCompletion(String deviceId); void testCompletion(String deviceId,String type);
} }

View File

@@ -1,4 +1,4 @@
package com.njcn.csdevice.service.impl; package com.njcn.csdevice.service;
import com.njcn.csdevice.pojo.po.CsEquipmentProcessPO; import com.njcn.csdevice.pojo.po.CsEquipmentProcessPO;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;

View File

@@ -1,4 +1,4 @@
package com.njcn.csdevice.service.impl; package com.njcn.csdevice.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.njcn.common.pojo.dto.DeviceLogDTO; import com.njcn.common.pojo.dto.DeviceLogDTO;

View File

@@ -31,7 +31,6 @@ import com.njcn.csdevice.utils.ExcelStyleUtil;
import com.njcn.db.constant.DbConstant; import com.njcn.db.constant.DbConstant;
import com.njcn.oss.constant.OssPath; import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil; import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.poi.util.PoiUtil;
import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.api.DictTreeFeignClient; import com.njcn.system.api.DictTreeFeignClient;
import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataEnum;
@@ -53,6 +52,7 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -104,11 +104,16 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
csEquipmentDeliveryPo.setStatus ("1"); csEquipmentDeliveryPo.setStatus ("1");
csEquipmentDeliveryPo.setRunStatus(1); csEquipmentDeliveryPo.setRunStatus(1);
csEquipmentDeliveryPo.setProcess(1); csEquipmentDeliveryPo.setProcess(1);
//生成二维码文件 //生成二维码文件
String qr = this.createQr(csEquipmentDeliveryAddParm.getNdid()); String qr = this.createQr(csEquipmentDeliveryAddParm.getNdid());
csEquipmentDeliveryPo.setQrPath(qr); csEquipmentDeliveryPo.setQrPath(qr);
//记录设备调试日志表
CsEquipmentProcessPO csEquipmentProcess = new CsEquipmentProcessPO();
csEquipmentProcess.setDevId(csEquipmentDeliveryAddParm.getNdid());
csEquipmentProcess.setOperator(RequestUtil.getUserIndex());
csEquipmentProcess.setStartTime(LocalDateTime.now());
csEquipmentProcess.setProcess(1);
csEquipmentProcessPOService.save(csEquipmentProcess);
return this.save (csEquipmentDeliveryPo); return this.save (csEquipmentDeliveryPo);
} }
@@ -421,6 +426,7 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
* 6.删除cs_device_user * 6.删除cs_device_user
* */ * */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void delete(String devId) { public void delete(String devId) {
QueryWrapper<CsLedger> csLedgerQueryWrapper = new QueryWrapper<>(); QueryWrapper<CsLedger> csLedgerQueryWrapper = new QueryWrapper<>();
/** /**
@@ -442,7 +448,6 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
csDeviceUserPOQueryWrapper.clear(); csDeviceUserPOQueryWrapper.clear();
csDeviceUserPOQueryWrapper.eq("device_id",devId); csDeviceUserPOQueryWrapper.eq("device_id",devId);
csDeviceUserPOService.remove(csDeviceUserPOQueryWrapper); csDeviceUserPOService.remove(csDeviceUserPOQueryWrapper);
if (!CollectionUtils.isEmpty(collect)) { if (!CollectionUtils.isEmpty(collect)) {
QueryWrapper<CsLinePO> csLinePOQueryWrapper = new QueryWrapper<>(); QueryWrapper<CsLinePO> csLinePOQueryWrapper = new QueryWrapper<>();
csLinePOQueryWrapper.clear(); csLinePOQueryWrapper.clear();
@@ -453,25 +458,21 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
csLinePOQueryWrapper.in("line_id",collect); csLinePOQueryWrapper.in("line_id",collect);
appLineTopologyDiagramService.remove(appLineTopologyDiagramPOQueryWrapper); appLineTopologyDiagramService.remove(appLineTopologyDiagramPOQueryWrapper);
} }
} }
@Override @Override
public void testCompletion(String deviceId) { @Transactional(rollbackFor = Exception.class)
CsEquipmentDeliveryPO byId = this.getById(deviceId); public void testCompletion(String deviceId,String type) {
this.lambdaUpdate().eq(CsEquipmentDeliveryPO::getId,deviceId). this.lambdaUpdate().eq(CsEquipmentDeliveryPO::getId,deviceId).
set(CsEquipmentDeliveryPO::getStatus,0). set(CsEquipmentDeliveryPO::getStatus,0).
set(CsEquipmentDeliveryPO::getRunStatus,1). set(CsEquipmentDeliveryPO::getRunStatus,1).
set(CsEquipmentDeliveryPO::getProcess,byId.getProcess()+1).update(); set(CsEquipmentDeliveryPO::getProcess,type+1).update();
this.delete(deviceId); this.delete(deviceId);
csEquipmentProcessPOService.lambdaUpdate().eq(CsEquipmentProcessPO::getDevId,deviceId). csEquipmentProcessPOService.lambdaUpdate().eq(CsEquipmentProcessPO::getDevId,deviceId).
eq(CsEquipmentProcessPO::getProcess,byId.getProcess()). eq(CsEquipmentProcessPO::getProcess,type).
set(CsEquipmentProcessPO::getEndTime,new Date()). eq(CsEquipmentProcessPO::getStatus,1).
set(CsEquipmentProcessPO::getEndTime,LocalDateTime.now()).
update(); update();
} }
/** /**

View File

@@ -1,12 +1,10 @@
package com.njcn.csdevice.service; package com.njcn.csdevice.service.impl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.csdevice.mapper.CsEquipmentProcessPOMapper; import com.njcn.csdevice.mapper.CsEquipmentProcessPOMapper;
import com.njcn.csdevice.pojo.po.CsEquipmentProcessPO; import com.njcn.csdevice.pojo.po.CsEquipmentProcessPO;
import com.njcn.csdevice.service.impl.CsEquipmentProcessPOService; import com.njcn.csdevice.service.CsEquipmentProcessPOService;
/** /**
* *
* Description: * Description:

View File

@@ -1,24 +1,22 @@
package com.njcn.csdevice.service; package com.njcn.csdevice.service.impl;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.dto.DeviceLogDTO; import com.njcn.common.pojo.dto.DeviceLogDTO;
import com.njcn.csdevice.pojo.vo.AppProjectVO; import com.njcn.csdevice.mapper.CsLogsPOMapper;
import com.njcn.csdevice.pojo.po.CsLogsPO;
import com.njcn.csdevice.service.CsLogsPOService;
import com.njcn.user.enums.AppRoleEnum; import com.njcn.user.enums.AppRoleEnum;
import com.njcn.web.pojo.param.BaseParam; import com.njcn.web.pojo.param.BaseParam;
import com.njcn.web.utils.RequestUtil; import com.njcn.web.utils.RequestUtil;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.csdevice.mapper.CsLogsPOMapper;
import com.njcn.csdevice.pojo.po.CsLogsPO;
import com.njcn.csdevice.service.impl.CsLogsPOService;
import org.springframework.transaction.annotation.Transactional;
/** /**
* *
@@ -29,7 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
* @version V1.0.0 * @version V1.0.0
*/ */
@Service @Service
public class CsLogsPOServiceImpl extends ServiceImpl<CsLogsPOMapper, CsLogsPO> implements CsLogsPOService{ public class CsLogsPOServiceImpl extends ServiceImpl<CsLogsPOMapper, CsLogsPO> implements CsLogsPOService {
@Override @Override
// @Transactional(rollbackFor = {Exception.class}) // @Transactional(rollbackFor = {Exception.class})