修改bug
This commit is contained in:
@@ -86,4 +86,6 @@ public class CsEquipmentDeliveryVO extends BaseEntity {
|
||||
@ApiModelProperty(value="装置使用状态(0:停用 1:启用)")
|
||||
private Integer usageStatus ;
|
||||
|
||||
private Integer sort;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.njcn.csdevice.utils;
|
||||
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2024/12/17 14:29【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public class StringUtil {
|
||||
public static void containsSpecialCharacters(String str) {
|
||||
// 定义包含特殊字符的正则表达式
|
||||
String specialChars = "[<>%'%;()&+/\\\\-\\\\\\\\_|@*?#$!,.]|html";
|
||||
// 创建Pattern对象
|
||||
Pattern pattern = Pattern.compile(specialChars);
|
||||
// 使用Pattern对象的matcher方法检查字符串
|
||||
if(pattern.matcher(str).find()){
|
||||
throw new BusinessException("存在特殊字符[<>\"'%;()&+//\\-———|@*_?#$!,.html]");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
StringUtil.containsSpecialCharacters("*");
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,11 @@ import com.njcn.csdevice.service.IMqttUserService;
|
||||
import com.njcn.csdevice.utils.ExcelStyleUtil;
|
||||
import com.njcn.poi.excel.ExcelUtil;
|
||||
import com.njcn.poi.util.PoiUtil;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.api.DictTreeFeignClient;
|
||||
import com.njcn.system.enums.DicDataTypeEnum;
|
||||
import com.njcn.system.pojo.po.SysDicTreePO;
|
||||
import com.njcn.system.pojo.vo.DictTreeVO;
|
||||
import com.njcn.web.advice.DeviceLog;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.*;
|
||||
@@ -30,6 +35,7 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@@ -37,6 +43,7 @@ import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -62,6 +69,8 @@ public class EquipmentDeliveryController extends BaseController {
|
||||
private final IMqttUserService mqttUserService;
|
||||
private final CsDevModelRelationService csDevModelRelationService;
|
||||
|
||||
private final DictTreeFeignClient dictTreeFeignClient;
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/addEquipmentDelivery")
|
||||
@ApiOperation("新增出厂设备")
|
||||
@@ -221,7 +230,13 @@ public class EquipmentDeliveryController extends BaseController {
|
||||
ExportParams exportParams = new ExportParams("批量导入模板(请严格按照模板标准填入数据)", "终端入网检测录入信息");
|
||||
exportParams.setStyle(ExcelStyleUtil.class);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, DeviceExcelTemplete.class, new ArrayList<DeviceExcelTemplete>());
|
||||
ExcelUtil.selectList(workbook, 2, 2, Stream.of("直连设备","网关设备").collect(Collectors.toList()).toArray(new String[]{}));
|
||||
List<SysDicTreePO> deviceType = dictTreeFeignClient.queryByCodeList(DicDataTypeEnum.DEVICE_TYPE.getCode()).getData();
|
||||
if(!CollectionUtils.isEmpty(deviceType)){
|
||||
List<String> collect = deviceType.get(0).getChildren().stream().map(SysDicTreePO::getName).collect(Collectors.toList());
|
||||
ExcelUtil.selectList(workbook, 2, 2, collect.toArray(new String[]{}));
|
||||
List<String> collect2 = deviceType.get(0).getChildren().stream().map(SysDicTreePO::getChildren).flatMap(Collection::stream).map(SysDicTreePO::getName).collect(Collectors.toList());
|
||||
ExcelUtil.selectList(workbook, 3, 3, collect2.toArray(new String[]{}));
|
||||
}
|
||||
ExcelUtil.selectList(workbook, 4, 4, Stream.of("MQTT","CLD").collect(Collectors.toList()).toArray(new String[]{}));
|
||||
String fileName = "设备模板.xlsx";
|
||||
ExportParams exportExcel = new ExportParams("设备模板", "设备模板");
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
</if>
|
||||
exists
|
||||
(select 1 from wl_record_test_data wd where wd.test_item_id = #{wlRecordPageParam.id} and wd.data_id = a.id)
|
||||
order by a.start_time asc
|
||||
order by a.start_time desc
|
||||
</select>
|
||||
|
||||
<select id="getAll" resultType="com.njcn.csdevice.pojo.vo.CsLedgerVO">
|
||||
|
||||
@@ -39,6 +39,7 @@ import com.njcn.redis.utils.RedisUtil;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.api.DictTreeFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import com.njcn.system.enums.DicDataTypeEnum;
|
||||
import com.njcn.system.enums.DicTreeEnum;
|
||||
import com.njcn.system.pojo.po.SysDicTreePO;
|
||||
import com.njcn.system.pojo.vo.DictTreeVO;
|
||||
@@ -104,6 +105,10 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
public CsEquipmentDeliveryPO save(CsEquipmentDeliveryAddParm csEquipmentDeliveryAddParm) {
|
||||
boolean result;
|
||||
CsEquipmentDeliveryPO one = this.lambdaQuery().eq(CsEquipmentDeliveryPO::getName, csEquipmentDeliveryAddParm.getName()).ne(CsEquipmentDeliveryPO::getRunStatus, 0).one();
|
||||
if(Objects.nonNull (one)){
|
||||
throw new BusinessException ("设备名称不能重复");
|
||||
}
|
||||
CsEquipmentDeliveryPO po = this.queryEquipmentPOByndid (csEquipmentDeliveryAddParm.getNdid());
|
||||
if(!Objects.isNull (po)){
|
||||
throw new BusinessException (AlgorithmResponseEnum.NDID_ERROR);
|
||||
@@ -451,39 +456,47 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
falseCollect.add(idlegalityDeviceException);
|
||||
continue;
|
||||
}
|
||||
if(Objects.equals(deviceExcelTemplete.getDevType(),DicDataEnum.GATEWAY_DEV.getName())){
|
||||
DictTreeVO data = dictTreeFeignClient.queryByCode(DicDataEnum.GATEWAY_DEV.getCode()).getData();
|
||||
deviceExcelTemplete.setDevType(data.getId());
|
||||
List<DictTreeVO> data1 = dictTreeFeignClient.query(data.getId()).getData();
|
||||
Map<String, DictTreeVO> collect = data1.stream().collect(Collectors.toMap(DictTreeVO::getCode, dictTreeVO -> dictTreeVO));
|
||||
if(collect.containsKey(deviceExcelTemplete.getDevModel())){
|
||||
deviceExcelTemplete.setDevModel(collect.get(deviceExcelTemplete.getDevModel()).getId());
|
||||
trueCollect.add(deviceExcelTemplete);
|
||||
}else {
|
||||
DeviceExcelTemplete.IllegalityDeviceExcelTemplete idlegalityDeviceException = new DeviceExcelTemplete.IllegalityDeviceExcelTemplete();
|
||||
BeanUtils.copyProperties(deviceExcelTemplete,idlegalityDeviceException);
|
||||
idlegalityDeviceException.setMsg("装置型号不正确");
|
||||
falseCollect.add(idlegalityDeviceException);
|
||||
}
|
||||
} else if (Objects.equals(deviceExcelTemplete.getDevType(),DicDataEnum.CONNECT_DEV.getName())) {
|
||||
DictTreeVO data = dictTreeFeignClient.queryByCode(DicDataEnum.CONNECT_DEV.getCode()).getData();
|
||||
deviceExcelTemplete.setDevType(data.getId());
|
||||
List<DictTreeVO> data1 = dictTreeFeignClient.query(data.getId()).getData();
|
||||
Map<String, DictTreeVO> collect = data1.stream().collect(Collectors.toMap(DictTreeVO::getCode, dictTreeVO -> dictTreeVO));
|
||||
if(collect.containsKey(deviceExcelTemplete.getDevModel())){
|
||||
deviceExcelTemplete.setDevModel(collect.get(deviceExcelTemplete.getDevModel()).getId());
|
||||
trueCollect.add(deviceExcelTemplete);
|
||||
}else {
|
||||
DeviceExcelTemplete.IllegalityDeviceExcelTemplete idlegalityDeviceException = new DeviceExcelTemplete.IllegalityDeviceExcelTemplete();
|
||||
BeanUtils.copyProperties(deviceExcelTemplete,idlegalityDeviceException);
|
||||
idlegalityDeviceException.setMsg("装置型号不正确");
|
||||
falseCollect.add(idlegalityDeviceException);
|
||||
}
|
||||
}else {
|
||||
CsEquipmentDeliveryPO one = this.lambdaQuery().eq(CsEquipmentDeliveryPO::getName, deviceExcelTemplete.getName()).ne(CsEquipmentDeliveryPO::getRunStatus, 0).one();
|
||||
if(Objects.nonNull (one)){
|
||||
DeviceExcelTemplete.IllegalityDeviceExcelTemplete idlegalityDeviceException = new DeviceExcelTemplete.IllegalityDeviceExcelTemplete();
|
||||
BeanUtils.copyProperties(deviceExcelTemplete,idlegalityDeviceException);
|
||||
idlegalityDeviceException.setMsg("装置类型不正确");
|
||||
idlegalityDeviceException.setMsg("NDID重复");
|
||||
falseCollect.add(idlegalityDeviceException);
|
||||
continue;
|
||||
}
|
||||
List<SysDicTreePO> deviceType = dictTreeFeignClient.queryByCodeList(DicDataTypeEnum.DEVICE_TYPE.getCode()).getData();
|
||||
//设备类型
|
||||
List<SysDicTreePO> children = deviceType.get(0).getChildren();
|
||||
Map<String, SysDicTreePO> map = children.stream().collect(Collectors.toMap(SysDicTreePO::getName, dictTreeVO -> dictTreeVO));
|
||||
|
||||
List<SysDicTreePO> collect = children.stream().filter(temp -> Objects.equals(temp.getName(), deviceExcelTemplete.getDevType())).collect(Collectors.toList());
|
||||
SysDicTreePO sysDicTreePO = map.get(deviceExcelTemplete.getDevType());
|
||||
if(CollectionUtils.isEmpty(collect)){
|
||||
DeviceExcelTemplete.IllegalityDeviceExcelTemplete idlegalityDeviceException = new DeviceExcelTemplete.IllegalityDeviceExcelTemplete();
|
||||
BeanUtils.copyProperties(deviceExcelTemplete,idlegalityDeviceException);
|
||||
idlegalityDeviceException.setMsg("设备类型不正确");
|
||||
falseCollect.add(idlegalityDeviceException);
|
||||
continue;
|
||||
}else {
|
||||
deviceExcelTemplete.setDevType(map.get(deviceExcelTemplete.getDevType()).getId());
|
||||
|
||||
}
|
||||
|
||||
//设备型号
|
||||
List<SysDicTreePO> children1 = sysDicTreePO.getChildren();
|
||||
Map<String, SysDicTreePO> map2 = children1.stream().collect(Collectors.toMap(SysDicTreePO::getName, dictTreeVO -> dictTreeVO));
|
||||
|
||||
List<SysDicTreePO> collect2 = children1.stream().filter(temp -> Objects.equals(temp.getName(), deviceExcelTemplete.getDevModel())).collect(Collectors.toList());
|
||||
|
||||
if(CollectionUtils.isEmpty(collect2)){
|
||||
DeviceExcelTemplete.IllegalityDeviceExcelTemplete idlegalityDeviceException = new DeviceExcelTemplete.IllegalityDeviceExcelTemplete();
|
||||
BeanUtils.copyProperties(deviceExcelTemplete,idlegalityDeviceException);
|
||||
idlegalityDeviceException.setMsg("设备类型与设备型号不匹配");
|
||||
falseCollect.add(idlegalityDeviceException);
|
||||
continue;
|
||||
}else {
|
||||
deviceExcelTemplete.setDevModel(map2.get(deviceExcelTemplete.getDevModel()).getId());
|
||||
trueCollect.add(deviceExcelTemplete);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ import com.njcn.csdevice.pojo.vo.RecordVo;
|
||||
import com.njcn.csdevice.service.IWlRecordService;
|
||||
import com.njcn.csdevice.util.InfluxDbParamUtil;
|
||||
import com.njcn.csdevice.utils.DataChangeUtil;
|
||||
import com.njcn.csdevice.utils.StringUtil;
|
||||
import com.njcn.csharmonic.constant.HarmonicConstant;
|
||||
import com.njcn.csharmonic.param.CommonStatisticalQueryParam;
|
||||
import com.njcn.csharmonic.pojo.vo.ThdDataVO;
|
||||
@@ -103,6 +104,7 @@ public class WlRecordServiceImpl extends ServiceImpl<WlRecordMapper, WlRecord> i
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
public void addRecord(WlRecordParam.AddRecord records) {
|
||||
checkRecord(records);
|
||||
//整理的方案下测试项集合(可能添加多个测试项)
|
||||
List<WlRecord> insertList = new ArrayList<>();
|
||||
//校验方案ID是否存在
|
||||
@@ -143,6 +145,34 @@ public class WlRecordServiceImpl extends ServiceImpl<WlRecordMapper, WlRecord> i
|
||||
this.saveBatch(insertList);
|
||||
}
|
||||
|
||||
private void checkRecord(WlRecordParam record) {
|
||||
if (record instanceof WlRecordParam.AddRecord) {
|
||||
WlRecordParam.AddRecord temp =( WlRecordParam.AddRecord) record;
|
||||
String itemName = temp.getRecords().get(0).getItemName();
|
||||
StringUtil.containsSpecialCharacters(itemName);
|
||||
if(StrUtil.isBlank(itemName)){
|
||||
throw new BusinessException("测试项名称不能为空或空格");
|
||||
}
|
||||
List<WlRecord> list = this.lambdaQuery().eq(WlRecord::getPId, temp.getId()).eq(WlRecord::getState, 1).eq(WlRecord::getItemName, itemName).list();
|
||||
if(!CollectionUtils.isEmpty(list)){
|
||||
throw new BusinessException("数据列表中存在同名测试项");
|
||||
}
|
||||
}else if (record instanceof WlRecordParam.UpdateRecord) {
|
||||
WlRecordParam.UpdateRecord temp =( WlRecordParam.UpdateRecord) record;
|
||||
String itemName = temp.getItemName();
|
||||
StringUtil.containsSpecialCharacters(itemName);
|
||||
if(StrUtil.isBlank(itemName)){
|
||||
throw new BusinessException("测试项名称不能为空或空格");
|
||||
}
|
||||
WlRecord one = this.lambdaQuery().eq(WlRecord::getId, temp.getId()).one();
|
||||
List<WlRecord> list = this.lambdaQuery().eq(WlRecord::getPId, one.getPId()).ne(WlRecord::getId, temp.getId()).eq(WlRecord::getState, 1).eq(WlRecord::getItemName, itemName).list();
|
||||
if(!CollectionUtils.isEmpty(list)){
|
||||
throw new BusinessException("数据列表中存在同名测试项");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBaseData(WlRecord wlRecord) {
|
||||
this.save(wlRecord);
|
||||
@@ -156,6 +186,7 @@ public class WlRecordServiceImpl extends ServiceImpl<WlRecordMapper, WlRecord> i
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
public void updateTestRecord(WlRecordParam.UpdateRecord record) {
|
||||
checkRecord(record);
|
||||
WlRecord wlRecord = new WlRecord();
|
||||
BeanUtils.copyProperties(record, wlRecord);
|
||||
wlRecord.setStartTime(record.getProStartTime());
|
||||
@@ -178,8 +209,16 @@ public class WlRecordServiceImpl extends ServiceImpl<WlRecordMapper, WlRecord> i
|
||||
@Override
|
||||
public void updateSchemeRecord(WlRecordParam.UpdateRecord record) {
|
||||
WlRecord wlRecord = new WlRecord();
|
||||
checkString(record.getItemName());
|
||||
if(record.getId()!=null){
|
||||
BeanUtils.copyProperties(record, wlRecord);
|
||||
LambdaQueryWrapper<WlRecord> qw = new LambdaQueryWrapper();
|
||||
qw.eq(WlRecord::getItemName,record.getItemName()).eq(WlRecord::getType,0).eq(WlRecord::getState,1).ne(WlRecord::getId,record.getId());
|
||||
List<WlRecord> wlRecordList = this.baseMapper.selectList(qw);
|
||||
//方案名称重复校验
|
||||
if(!wlRecordList.isEmpty()){
|
||||
throw new BusinessException(LineBaseEnum.EXISTWLRECORD_FAIL.getMessage());
|
||||
}
|
||||
this.updateById(wlRecord);
|
||||
}else{
|
||||
LambdaQueryWrapper<WlRecord> qw = new LambdaQueryWrapper();
|
||||
@@ -197,6 +236,13 @@ public class WlRecordServiceImpl extends ServiceImpl<WlRecordMapper, WlRecord> i
|
||||
}
|
||||
}
|
||||
|
||||
private void checkString(String itemName) {
|
||||
StringUtil.containsSpecialCharacters(itemName);
|
||||
if(StrUtil.isBlank(itemName)){
|
||||
throw new BusinessException("测试项名称不能为空或空格");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecordVo.RecordItemVo getTestRecordById(String testRecordId) {
|
||||
RecordVo.RecordItemVo recordItemVo = new RecordVo.RecordItemVo();
|
||||
|
||||
Reference in New Issue
Block a user