From abcb45858c3653e6408b1c5238acbb270f208904 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Tue, 9 Jan 2024 14:34:01 +0800 Subject: [PATCH 01/31] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=E5=92=8C=E6=9F=A5=E8=AF=A2=E7=BB=91=E5=AE=9A=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cac/controller/ParamBindController.java | 15 +++ .../java/com/xydl/cac/model/BindDetail.java | 21 ++++ .../java/com/xydl/cac/model/BindingModel.java | 2 +- .../xydl/cac/repository/ModevRepository.java | 6 +- .../xydl/cac/service/ParamBindService.java | 5 + .../service/impl/ParamBindServiceImpl.java | 99 +++++++++++++++++-- 6 files changed, 139 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/xydl/cac/model/BindDetail.java diff --git a/src/main/java/com/xydl/cac/controller/ParamBindController.java b/src/main/java/com/xydl/cac/controller/ParamBindController.java index 387b098..be82afa 100644 --- a/src/main/java/com/xydl/cac/controller/ParamBindController.java +++ b/src/main/java/com/xydl/cac/controller/ParamBindController.java @@ -3,6 +3,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.Bdz; import com.xydl.cac.entity.IcdConfigTypeInst; import com.xydl.cac.entity.Rptparamindex; +import com.xydl.cac.model.BindDetail; import com.xydl.cac.model.BindingModel; import com.xydl.cac.model.Response; import com.xydl.cac.service.ParamBindService; @@ -47,4 +48,18 @@ public class ParamBindController extends BasicController { return Response.success(result); } + @PostMapping("bind") + @ApiOperation("绑定") + public Response bind(@Validated @RequestBody BindingModel item) throws Exception { + bindService.bind(item); + return Response.success("OK"); + } + + @GetMapping("getBind") + @ApiOperation("查询绑定信息") + public Response getBind(@Validated @NotNull(message = "eqmid不能为空!") @Param("eqmid") Integer eqmid) throws Exception { + BindDetail result = bindService.getBind(eqmid); + return Response.success(result); + } + } diff --git a/src/main/java/com/xydl/cac/model/BindDetail.java b/src/main/java/com/xydl/cac/model/BindDetail.java new file mode 100644 index 0000000..1b8197d --- /dev/null +++ b/src/main/java/com/xydl/cac/model/BindDetail.java @@ -0,0 +1,21 @@ +package com.xydl.cac.model; + +import com.xydl.cac.entity.Rptparamindex; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.List; + +@Data +public class BindDetail { + @ApiModelProperty("eqmid") + Integer eqmid; + @ApiModelProperty("逻辑设备实例的Id") + Integer icdid; + @ApiModelProperty("表字段名") + List columnList; + @ApiModelProperty("绑定关系") + List rptList; +} diff --git a/src/main/java/com/xydl/cac/model/BindingModel.java b/src/main/java/com/xydl/cac/model/BindingModel.java index b8b06ae..f04a9f1 100644 --- a/src/main/java/com/xydl/cac/model/BindingModel.java +++ b/src/main/java/com/xydl/cac/model/BindingModel.java @@ -12,5 +12,5 @@ public class BindingModel { Integer eqmid; @NotNull(message = "逻辑设备实例的Id不能为空") @ApiModelProperty("逻辑设备实例的Id") - Integer bindingId; + Integer icdid; } diff --git a/src/main/java/com/xydl/cac/repository/ModevRepository.java b/src/main/java/com/xydl/cac/repository/ModevRepository.java index b75b912..13afcb6 100644 --- a/src/main/java/com/xydl/cac/repository/ModevRepository.java +++ b/src/main/java/com/xydl/cac/repository/ModevRepository.java @@ -10,6 +10,10 @@ import java.util.List; @Repository public interface ModevRepository extends JpaRepository, JpaSpecificationExecutor { + List findByZsbid(Integer zsbid); - List findByZsbidAndName(Integer zsbid,String name); + + List findByZsbidAndName(Integer zsbid, String name); + + List findByIcdidAndIdIsNot(Integer icdid, Integer id); } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/service/ParamBindService.java b/src/main/java/com/xydl/cac/service/ParamBindService.java index f04fa20..1c3d419 100644 --- a/src/main/java/com/xydl/cac/service/ParamBindService.java +++ b/src/main/java/com/xydl/cac/service/ParamBindService.java @@ -3,6 +3,7 @@ package com.xydl.cac.service; import com.xydl.cac.entity.Bdz; import com.xydl.cac.entity.IcdConfigTypeInst; import com.xydl.cac.entity.Rptparamindex; +import com.xydl.cac.model.BindDetail; import com.xydl.cac.model.BindingModel; import java.util.List; @@ -14,4 +15,8 @@ public interface ParamBindService { List instList(String iedName); List preview(BindingModel item) throws Exception; + + void bind(BindingModel item) throws Exception; + + BindDetail getBind(Integer eqmid) throws Exception; } diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index 1b6e3ba..c873528 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -1,10 +1,14 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.*; +import com.xydl.cac.model.BindDetail; import com.xydl.cac.model.BindingModel; +import com.xydl.cac.model.ColumnModel; import com.xydl.cac.repository.*; +import com.xydl.cac.service.DataService; import com.xydl.cac.service.ParamBindService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -28,6 +32,8 @@ public class ParamBindServiceImpl implements ParamBindService { @Resource ModevRepository modevRepository; @Resource + ModevTypeRepository modevTypeRepository; + @Resource IcdConfigTypeRepository typeRepository; @Resource IcdConfigTypeInstRepository instRepository; @@ -35,6 +41,8 @@ public class ParamBindServiceImpl implements ParamBindService { IcdConfigTypeAttRepository attRepository; @Resource RptparamindexRepository rptparamindexRepository; + @Resource + DataService dataService; @Override public List getTree() throws Exception { @@ -75,14 +83,14 @@ public class ParamBindServiceImpl implements ParamBindService { @Override public List preview(BindingModel item) throws Exception { - Optional optionalInst = instRepository.findById(item.getBindingId()); + Optional optionalInst = instRepository.findById(item.getIcdid()); if (!optionalInst.isPresent()) { - throw new Exception("未找到该ICD配置类型实例, eqmid=" + item.getEqmid() + ", bindingId=" + item.getBindingId()); + throw new Exception("未找到该ICD配置类型实例, eqmid=" + item.getEqmid() + ", icdid=" + item.getIcdid()); } IcdConfigTypeInst inst = optionalInst.get(); Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); if (!optionalType.isPresent()) { - throw new Exception("未找到该实例对应的ICD配置类型, bindingId=" + item.getBindingId()); + throw new Exception("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdid()); } IcdConfigType type = optionalType.get(); @@ -105,15 +113,92 @@ public class ParamBindServiceImpl implements ParamBindService { return result; } - private void bindOne(Integer eqmid, Integer bindingId) throws Exception { - Optional optionalInst = instRepository.findById(bindingId); + @Override + public void bind(BindingModel item) throws Exception { + Optional optionalInst = instRepository.findById(item.getIcdid()); + if (!optionalInst.isPresent()) { + throw new Exception("未找到该ICD逻辑设备实例, icdid=" + item.getIcdid()); + } + IcdConfigTypeInst inst = optionalInst.get(); + Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); + if (!optionalType.isPresent()) { + throw new Exception("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdid()); + } + IcdConfigType type = optionalType.get(); + + List list = modevRepository.findByIcdidAndIdIsNot(item.getIcdid(), item.getEqmid()); + if (!CollectionUtils.isEmpty(list)) { + throw new Exception("该逻辑设备实例已被" + list.get(0).getName() + "绑定"); + } + Optional optionalModev = modevRepository.findById(item.getEqmid()); + if (!optionalModev.isPresent()) { + throw new Exception("未找到该监测装置"); + } + Modev modev = optionalModev.get(); + modev.setIcdid(item.getIcdid()); + modevRepository.save(modev); + } + + @Override + public BindDetail getBind(Integer eqmid) throws Exception { + Optional optionalModev = modevRepository.findById(eqmid); + if (!optionalModev.isPresent()) { + throw new Exception("未找到该监测装置"); + } + Modev modev = optionalModev.get(); + + BindDetail result = new BindDetail(); + result.setEqmid(eqmid); + result.setIcdid(optionalModev.get().getIcdid()); + Optional optionalModevType = modevTypeRepository.findById(modev.getModevtid()); + if (optionalModevType.isPresent()) { + ModevType modevType = optionalModevType.get(); + if (StringUtils.isNotBlank(modevType.getTablename())) { + List columnList = dataService.getDataTableColumns(modevType.getTablename()); + result.setColumnList(columnList); + } + } + if (modev.getIcdid() != null) { + Optional optionalInst = instRepository.findById(modev.getIcdid()); + if (optionalInst.isPresent()) { + IcdConfigTypeInst inst = optionalInst.get(); + Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); + if (optionalType.isPresent()) { + IcdConfigType type = optionalType.get(); + String param = type.getIedName() + type.getLdeviceInst() + "/" + type.getLnClass() + + inst.getInst(); + List rptList = new ArrayList<>(); + List attList = attRepository.findByIcdConfigTypeId(type.getId()); + for (IcdConfigTypeAtt att : attList) { + String paramindex = param + "$" + att.getLastName(); + Rptparamindex rpt = new Rptparamindex(); + Optional optionalRpt = rptparamindexRepository.findById(paramindex); + if (optionalRpt.isPresent()) { + rpt = optionalRpt.get(); + } else { + rpt.setParamindex(paramindex); + } + rpt.setTablename(type.getTableName()); + rpt.setColname(att.getColName()); + rpt.setEqmid(eqmid); + rptList.add(rpt); + } + result.setRptList(rptList); + } + } + } + return result; + } + + private void bindOne(Integer eqmid, Integer icdid) throws Exception { + Optional optionalInst = instRepository.findById(icdid); if (!optionalInst.isPresent()) { - throw new Exception("未找到该ICD配置类型实例, eqmid=" + eqmid + ", bindingId=" + bindingId); + throw new Exception("未找到该ICD逻辑设备实例, eqmid=" + eqmid + ", icdid=" + icdid); } IcdConfigTypeInst inst = optionalInst.get(); Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); if (!optionalType.isPresent()) { - throw new Exception("未找到该实例对应的ICD配置类型, bindingId=" + bindingId); + throw new Exception("未找到该实例对应的ICD配置类型, icdid=" + icdid); } IcdConfigType type = optionalType.get(); String param = type.getIedName() + type.getLdeviceInst() + "/" + type.getLnClass() From 369ffc450cdce43ba1a28465e9efdc2f0ac1368e Mon Sep 17 00:00:00 2001 From: huangfeng Date: Tue, 9 Jan 2024 15:06:08 +0800 Subject: [PATCH 02/31] =?UTF-8?q?pert:=20=E4=BC=98=E5=8C=96=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cac/controller/ParamBindController.java | 5 +-- .../java/com/xydl/cac/model/BindDetail.java | 2 + .../xydl/cac/service/ParamBindService.java | 4 +- .../service/impl/ParamBindServiceImpl.java | 39 ++++++++++++++----- 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/xydl/cac/controller/ParamBindController.java b/src/main/java/com/xydl/cac/controller/ParamBindController.java index be82afa..caffa82 100644 --- a/src/main/java/com/xydl/cac/controller/ParamBindController.java +++ b/src/main/java/com/xydl/cac/controller/ParamBindController.java @@ -43,9 +43,8 @@ public class ParamBindController extends BasicController { @PostMapping("preview") @ApiOperation("预览") - public Response> preview(@Validated @RequestBody BindingModel item) throws Exception { - List result = bindService.preview(item); - return Response.success(result); + public Response preview(@Validated @RequestBody BindingModel item) throws Exception { + return bindService.preview(item); } @PostMapping("bind") diff --git a/src/main/java/com/xydl/cac/model/BindDetail.java b/src/main/java/com/xydl/cac/model/BindDetail.java index 1b8197d..c416bde 100644 --- a/src/main/java/com/xydl/cac/model/BindDetail.java +++ b/src/main/java/com/xydl/cac/model/BindDetail.java @@ -14,6 +14,8 @@ public class BindDetail { Integer eqmid; @ApiModelProperty("逻辑设备实例的Id") Integer icdid; + @ApiModelProperty("iedName") + String iedName; @ApiModelProperty("表字段名") List columnList; @ApiModelProperty("绑定关系") diff --git a/src/main/java/com/xydl/cac/service/ParamBindService.java b/src/main/java/com/xydl/cac/service/ParamBindService.java index 1c3d419..90edd34 100644 --- a/src/main/java/com/xydl/cac/service/ParamBindService.java +++ b/src/main/java/com/xydl/cac/service/ParamBindService.java @@ -2,9 +2,9 @@ package com.xydl.cac.service; import com.xydl.cac.entity.Bdz; import com.xydl.cac.entity.IcdConfigTypeInst; -import com.xydl.cac.entity.Rptparamindex; import com.xydl.cac.model.BindDetail; import com.xydl.cac.model.BindingModel; +import com.xydl.cac.model.Response; import java.util.List; @@ -14,7 +14,7 @@ public interface ParamBindService { List instList(String iedName); - List preview(BindingModel item) throws Exception; + Response preview(BindingModel item) throws Exception; void bind(BindingModel item) throws Exception; diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index c873528..ebec30f 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -4,6 +4,7 @@ import com.xydl.cac.entity.*; import com.xydl.cac.model.BindDetail; import com.xydl.cac.model.BindingModel; import com.xydl.cac.model.ColumnModel; +import com.xydl.cac.model.Response; import com.xydl.cac.repository.*; import com.xydl.cac.service.DataService; import com.xydl.cac.service.ParamBindService; @@ -82,10 +83,20 @@ public class ParamBindServiceImpl implements ParamBindService { } @Override - public List preview(BindingModel item) throws Exception { + public Response preview(BindingModel item) throws Exception { + Optional optionalModev = modevRepository.findById(item.getEqmid()); + if (!optionalModev.isPresent()) { + throw new Exception("未找到该监测装置, eqmid=" + item.getEqmid()); + } + Modev modev = optionalModev.get(); + Optional optionalModevType = modevTypeRepository.findById(modev.getModevtid()); + if (!optionalModevType.isPresent()) { + throw new Exception("该监测装置类型不正确, 请先修正"); + } + ModevType modevType = optionalModevType.get(); Optional optionalInst = instRepository.findById(item.getIcdid()); if (!optionalInst.isPresent()) { - throw new Exception("未找到该ICD配置类型实例, eqmid=" + item.getEqmid() + ", icdid=" + item.getIcdid()); + throw new Exception("未找到该ICD逻辑设备实例, icdid=" + item.getIcdid()); } IcdConfigTypeInst inst = optionalInst.get(); Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); @@ -110,11 +121,24 @@ public class ParamBindServiceImpl implements ParamBindService { rpt.setEqmid(item.getEqmid()); result.add(rpt); } - return result; + + Response resp = Response.success(result); + if (StringUtils.isBlank(type.getTableName())) { + resp.setErrorMsg("该ICD配置类型还未设置对应的tableName"); + } else if (!type.getTableName().equals(modevType.getTablename())) { + resp.setErrorMsg("该ICD配置类型的tableName和该监测装置类型的tableName不一致"); + } + return resp; } @Override public void bind(BindingModel item) throws Exception { + Optional optionalModev = modevRepository.findById(item.getEqmid()); + if (!optionalModev.isPresent()) { + throw new Exception("未找到该监测装置, eqmid=" + item.getEqmid()); + } + Modev modev = optionalModev.get(); + Optional optionalInst = instRepository.findById(item.getIcdid()); if (!optionalInst.isPresent()) { throw new Exception("未找到该ICD逻辑设备实例, icdid=" + item.getIcdid()); @@ -130,11 +154,7 @@ public class ParamBindServiceImpl implements ParamBindService { if (!CollectionUtils.isEmpty(list)) { throw new Exception("该逻辑设备实例已被" + list.get(0).getName() + "绑定"); } - Optional optionalModev = modevRepository.findById(item.getEqmid()); - if (!optionalModev.isPresent()) { - throw new Exception("未找到该监测装置"); - } - Modev modev = optionalModev.get(); + modev.setIcdid(item.getIcdid()); modevRepository.save(modev); } @@ -149,7 +169,6 @@ public class ParamBindServiceImpl implements ParamBindService { BindDetail result = new BindDetail(); result.setEqmid(eqmid); - result.setIcdid(optionalModev.get().getIcdid()); Optional optionalModevType = modevTypeRepository.findById(modev.getModevtid()); if (optionalModevType.isPresent()) { ModevType modevType = optionalModevType.get(); @@ -159,12 +178,14 @@ public class ParamBindServiceImpl implements ParamBindService { } } if (modev.getIcdid() != null) { + result.setIcdid(modev.getIcdid()); Optional optionalInst = instRepository.findById(modev.getIcdid()); if (optionalInst.isPresent()) { IcdConfigTypeInst inst = optionalInst.get(); Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); if (optionalType.isPresent()) { IcdConfigType type = optionalType.get(); + result.setIedName(type.getIedName()); String param = type.getIedName() + type.getLdeviceInst() + "/" + type.getLnClass() + inst.getInst(); List rptList = new ArrayList<>(); From 0737b186788b961368cad3f923395ac8960ef9a5 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Tue, 9 Jan 2024 17:27:06 +0800 Subject: [PATCH 03/31] =?UTF-8?q?fix:=20=E8=B0=83=E6=95=B4scd=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/util/IcdXmlUtil.java | 118 ++++++++++++++++-- 1 file changed, 105 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java index 7487eb5..de8197c 100644 --- a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java +++ b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import com.xydl.cac.entity.IcdConfigType; import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; import java.util.*; @@ -22,25 +23,33 @@ public class IcdXmlUtil { private static LinkedHashMap processTypeRoot(JsonNode root) { LinkedHashMap result = new LinkedHashMap<>(); + Map mapLNodeType = buildLNodeTypeMap(root); + Map mapDOType = buildDOTypeMap(root); + Map mapDAType = buildDATypeMap(root); + List iedList = findNodes(root, "IED"); for (JsonNode iedNode : iedList) { - processIEDNode(iedNode, result); + processIEDNode(result, iedNode, + mapLNodeType, mapDOType, mapDAType); } return result; } - private static void processIEDNode(JsonNode iedNode, LinkedHashMap result) { + private static void processIEDNode(LinkedHashMap result, JsonNode iedNode, + Map mapLNodeType, Map mapDOType, Map mapDAType) { String iedName = iedNode.get("name").asText(); List devList = findNodes(iedNode, "LDevice"); for (JsonNode dev : devList) { - processTypeDeviceNode(dev, iedName, result); + processTypeDeviceNode(result, iedName, dev, + mapLNodeType, mapDOType, mapDAType); } } - private static void processTypeDeviceNode(JsonNode deviceNode, String iedName, LinkedHashMap result) { + private static void processTypeDeviceNode(LinkedHashMap result, String iedName, JsonNode deviceNode, + Map mapLNodeType, Map mapDOType, Map mapDAType) { String ldeviceInst = deviceNode.get("inst").asText(); - Map lnMap = buildLNMap(deviceNode); + Map mapLN = buildLNMap(deviceNode); List fcdaList = findNodes(deviceNode, "FCDA"); for (JsonNode fcdaNode : fcdaList) { @@ -49,11 +58,14 @@ public class IcdXmlUtil { String doName = fcdaNode.get("doName").asText(); String fc = fcdaNode.get("fc").asText(); - JsonNode lnNode = lnMap.get(lnClass + lnInst); - String dai = findLN_DOI_DAI(lnNode, doName); + JsonNode lnNode = mapLN.get(lnClass + lnInst); + String lnType = lnNode.get("lnType").asText(); + JsonNode nodeLNodeType = mapLNodeType.get(lnType); + String doType = findLNodeType_DO_Type(nodeLNodeType, doName); + JsonNode nodeDOType = mapDOType.get(doType); + String lastname = findLastname(nodeDOType, fc, mapDAType); String key = iedName + ldeviceInst + "/" + lnClass; - String param = fc + "$" + doName + "$" + dai; if ("MX".equals(fc)) { IcdConfigType config = result.get(key); if (config == null) { @@ -64,6 +76,20 @@ public class IcdXmlUtil { .build(); result.put(key, config); } + String param = fc + "$" + doName + "$" + lastname; + config.addInst(lnInst); + config.addAtt(doName, param); + } else if ("ST".equals(fc)) { + IcdConfigType config = result.get(key); + if (config == null) { + config = IcdConfigType.builder() + .iedName(iedName) + .ldeviceInst(ldeviceInst) + .lnClass(lnClass) + .build(); + result.put(key, config); + } + String param = fc + "$" + doName + "$" + lastname; config.addInst(lnInst); config.addAtt(doName, param); } @@ -72,15 +98,81 @@ public class IcdXmlUtil { private static Map buildLNMap(JsonNode deviceNode) { Map map = new LinkedHashMap<>(); - List lnList = findNodes(deviceNode, "LN"); - for (JsonNode lnNode : lnList) { - String lnClass = lnNode.get("lnClass").asText(); - String inst = lnNode.get("inst").asText(); - map.put(lnClass + inst, lnNode); + List list = findNodes(deviceNode, "LN"); + for (JsonNode node : list) { + String lnClass = node.get("lnClass").asText(); + String inst = node.get("inst").asText(); + map.put(lnClass + inst, node); + } + return map; + } + + private static Map buildDOTypeMap(JsonNode root) { + Map map = new LinkedHashMap<>(); + List list = findNodes(root, "DOType"); + for (JsonNode node : list) { + String id = node.get("id").asText(); + map.put(id, node); + } + return map; + } + + private static Map buildDATypeMap(JsonNode root) { + Map map = new LinkedHashMap<>(); + List list = findNodes(root, "DAType"); + for (JsonNode node : list) { + String id = node.get("id").asText(); + map.put(id, node); } return map; } + private static Map buildLNodeTypeMap(JsonNode root) { + Map map = new LinkedHashMap<>(); + List listLNodeType = findNodes(root, "LNodeType"); + for (JsonNode node : listLNodeType) { + String id = node.get("id").asText(); + map.put(id, node); + } + return map; + } + + private static String findLNodeType_DO_Type(JsonNode lnNode, String doName) { + String result = ""; + List doiList = findNodes(lnNode, "DO"); + for (JsonNode doiNode : doiList) { + String doiName = doiNode.get("name").asText(); + if (doiName.equals(doName)) { + result = doiNode.get("type").asText(); + break; + } + } + return result; + } + + private static String findLastname(JsonNode node, String fcname, Map mapDAType) { + String result = ""; + List daList = findNodes(node, "DA"); + for (JsonNode daNode : daList) { + JsonNode dchgNode = daNode.get("dchg"); + String fc = daNode.get("fc").asText(); + if (dchgNode != null && dchgNode.asText().equals("true") && fc.equals(fcname)) { + result = daNode.get("name").asText(); + JsonNode typeNode = daNode.get("type"); + if (typeNode != null && StringUtils.isNotBlank(typeNode.asText())) { + JsonNode nodeDAType = mapDAType.get(typeNode.asText()); + List bdaList = findNodes(nodeDAType, "BDA"); + if (!CollectionUtils.isEmpty(bdaList)) { + String name = bdaList.get(0).get("name").asText(); + result = result + "$" + name; + } + } + break; + } + } + return result; + } + private static String findLN_DOI_DAI(JsonNode lnNode, String doName) { String result = ""; List doiList = findNodes(lnNode, "DOI"); From 45a02a999332a12f20dadd5a02949308e3d1f688 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Wed, 10 Jan 2024 09:20:35 +0800 Subject: [PATCH 04/31] =?UTF-8?q?pert:=20=E8=B0=83=E6=95=B4=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E7=9A=84=E6=95=B0=E6=8D=AE=E5=92=8C=E8=AD=A6=E5=91=8A?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/model/BindDetail.java | 6 +-- .../service/impl/ParamBindServiceImpl.java | 38 +++++++------------ 2 files changed, 15 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/xydl/cac/model/BindDetail.java b/src/main/java/com/xydl/cac/model/BindDetail.java index c416bde..8d207e1 100644 --- a/src/main/java/com/xydl/cac/model/BindDetail.java +++ b/src/main/java/com/xydl/cac/model/BindDetail.java @@ -1,11 +1,9 @@ package com.xydl.cac.model; -import com.xydl.cac.entity.Rptparamindex; +import com.xydl.cac.entity.IcdConfigTypeAtt; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.validation.constraints.NotNull; -import java.util.ArrayList; import java.util.List; @Data @@ -19,5 +17,5 @@ public class BindDetail { @ApiModelProperty("表字段名") List columnList; @ApiModelProperty("绑定关系") - List rptList; + List attList; } diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index ebec30f..de5a5ad 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -18,6 +18,7 @@ import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; @Service @Slf4j @@ -105,28 +106,30 @@ public class ParamBindServiceImpl implements ParamBindService { } IcdConfigType type = optionalType.get(); - List result = new ArrayList<>(); String param = type.getIedName() + type.getLdeviceInst() + "/" + type.getLnClass() + inst.getInst(); List attList = attRepository.findByIcdConfigTypeId(type.getId()); + List msgList = new ArrayList<>(); for (IcdConfigTypeAtt att : attList) { + if (StringUtils.isBlank(att.getColName())) { + msgList.add(att.getDoName() + "该属性还未配置绑定字段"); + } String paramindex = param + "$" + att.getLastName(); Optional optionalRpt = rptparamindexRepository.findById(paramindex); if (!optionalRpt.isPresent()) { throw new Exception("未找到该Rptparamindex,对象参引=" + paramindex); } - Rptparamindex rpt = optionalRpt.get(); - rpt.setTablename(type.getTableName()); - rpt.setColname(att.getColName()); - rpt.setEqmid(item.getEqmid()); - result.add(rpt); } - Response resp = Response.success(result); + Response resp = Response.success(attList); if (StringUtils.isBlank(type.getTableName())) { - resp.setErrorMsg("该ICD配置类型还未设置对应的tableName"); + msgList.add("该ICD配置类型还未设置对应的tableName"); } else if (!type.getTableName().equals(modevType.getTablename())) { - resp.setErrorMsg("该ICD配置类型的tableName和该监测装置类型的tableName不一致"); + msgList.add("该ICD配置类型的tableName和该监测装置类型的tableName不一致"); + } + if (msgList.size() > 0) { + String message = msgList.stream().collect(Collectors.joining(",")); + resp.setErrorMsg(message); } return resp; } @@ -188,23 +191,8 @@ public class ParamBindServiceImpl implements ParamBindService { result.setIedName(type.getIedName()); String param = type.getIedName() + type.getLdeviceInst() + "/" + type.getLnClass() + inst.getInst(); - List rptList = new ArrayList<>(); List attList = attRepository.findByIcdConfigTypeId(type.getId()); - for (IcdConfigTypeAtt att : attList) { - String paramindex = param + "$" + att.getLastName(); - Rptparamindex rpt = new Rptparamindex(); - Optional optionalRpt = rptparamindexRepository.findById(paramindex); - if (optionalRpt.isPresent()) { - rpt = optionalRpt.get(); - } else { - rpt.setParamindex(paramindex); - } - rpt.setTablename(type.getTableName()); - rpt.setColname(att.getColName()); - rpt.setEqmid(eqmid); - rptList.add(rpt); - } - result.setRptList(rptList); + result.setAttList(attList); } } } From 4a8d3025a71a4080130cdbe2c91fbd926fa059de Mon Sep 17 00:00:00 2001 From: huangfeng Date: Wed, 10 Jan 2024 11:21:06 +0800 Subject: [PATCH 05/31] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/model/Response.java | 1 + .../service/impl/ParamBindServiceImpl.java | 17 ++++++------- .../java/com/xydl/cac/util/IcdXmlUtil.java | 24 +++++++++---------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/xydl/cac/model/Response.java b/src/main/java/com/xydl/cac/model/Response.java index e17ba9c..ac57bfa 100644 --- a/src/main/java/com/xydl/cac/model/Response.java +++ b/src/main/java/com/xydl/cac/model/Response.java @@ -10,6 +10,7 @@ import java.io.Serializable; public class Response implements Serializable { private boolean success; private String errorMsg; + private String warnMsg; private T data; public Response(T data) { diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index de5a5ad..bb551e4 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -113,11 +113,12 @@ public class ParamBindServiceImpl implements ParamBindService { for (IcdConfigTypeAtt att : attList) { if (StringUtils.isBlank(att.getColName())) { msgList.add(att.getDoName() + "该属性还未配置绑定字段"); - } - String paramindex = param + "$" + att.getLastName(); - Optional optionalRpt = rptparamindexRepository.findById(paramindex); - if (!optionalRpt.isPresent()) { - throw new Exception("未找到该Rptparamindex,对象参引=" + paramindex); + } else { + String paramindex = param + "$" + att.getLastName(); + Optional optionalRpt = rptparamindexRepository.findById(paramindex); + if (!optionalRpt.isPresent()) { + throw new Exception("未找到该Rptparamindex,对象参引=" + paramindex); + } } } @@ -125,11 +126,11 @@ public class ParamBindServiceImpl implements ParamBindService { if (StringUtils.isBlank(type.getTableName())) { msgList.add("该ICD配置类型还未设置对应的tableName"); } else if (!type.getTableName().equals(modevType.getTablename())) { - msgList.add("该ICD配置类型的tableName和该监测装置类型的tableName不一致"); + msgList.add("该ICD配置类型的tableName(" + type.getTableName() + ")和该监测装置类型的tableName(" + modevType.getTablename() + ")不一致"); } if (msgList.size() > 0) { - String message = msgList.stream().collect(Collectors.joining(",")); - resp.setErrorMsg(message); + String message = msgList.stream().collect(Collectors.joining("\n\r")); + resp.setWarnMsg(message); } return resp; } diff --git a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java index de8197c..72a6b31 100644 --- a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java +++ b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java @@ -80,18 +80,18 @@ public class IcdXmlUtil { config.addInst(lnInst); config.addAtt(doName, param); } else if ("ST".equals(fc)) { - IcdConfigType config = result.get(key); - if (config == null) { - config = IcdConfigType.builder() - .iedName(iedName) - .ldeviceInst(ldeviceInst) - .lnClass(lnClass) - .build(); - result.put(key, config); - } - String param = fc + "$" + doName + "$" + lastname; - config.addInst(lnInst); - config.addAtt(doName, param); +// IcdConfigType config = result.get(key); +// if (config == null) { +// config = IcdConfigType.builder() +// .iedName(iedName) +// .ldeviceInst(ldeviceInst) +// .lnClass(lnClass) +// .build(); +// result.put(key, config); +// } +// String param = fc + "$" + doName + "$" + lastname; +// config.addInst(lnInst); +// config.addAtt(doName, param); } } } From c2d74595b2fee01578f73d88a317efe143b43ce3 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Wed, 10 Jan 2024 13:15:44 +0800 Subject: [PATCH 06/31] =?UTF-8?q?feat:=20=E7=94=9F=E6=88=90rptparamindex?= =?UTF-8?q?=E8=A1=A8=E7=9A=84=E7=9B=B8=E5=85=B3=E7=BB=91=E5=AE=9A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xydl/cac/controller/ParamBindController.java | 7 +++++++ .../com/xydl/cac/repository/ModevRepository.java | 2 ++ .../java/com/xydl/cac/service/ParamBindService.java | 2 ++ .../xydl/cac/service/impl/ParamBindServiceImpl.java | 12 +++++++++++- 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/xydl/cac/controller/ParamBindController.java b/src/main/java/com/xydl/cac/controller/ParamBindController.java index caffa82..b23b3f3 100644 --- a/src/main/java/com/xydl/cac/controller/ParamBindController.java +++ b/src/main/java/com/xydl/cac/controller/ParamBindController.java @@ -61,4 +61,11 @@ public class ParamBindController extends BasicController { return Response.success(result); } + @PostMapping("generateParamindex") + @ApiOperation("生成rptparamindex表的相关绑定数据") + public Response generateParamindex() throws Exception { + bindService.generateParamindex(); + return Response.success("OK"); + } + } diff --git a/src/main/java/com/xydl/cac/repository/ModevRepository.java b/src/main/java/com/xydl/cac/repository/ModevRepository.java index 13afcb6..94cd182 100644 --- a/src/main/java/com/xydl/cac/repository/ModevRepository.java +++ b/src/main/java/com/xydl/cac/repository/ModevRepository.java @@ -16,4 +16,6 @@ public interface ModevRepository extends JpaRepository, JpaSpeci List findByZsbidAndName(Integer zsbid, String name); List findByIcdidAndIdIsNot(Integer icdid, Integer id); + + List findByIcdidIsNotNull(); } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/service/ParamBindService.java b/src/main/java/com/xydl/cac/service/ParamBindService.java index 90edd34..1d73061 100644 --- a/src/main/java/com/xydl/cac/service/ParamBindService.java +++ b/src/main/java/com/xydl/cac/service/ParamBindService.java @@ -19,4 +19,6 @@ public interface ParamBindService { void bind(BindingModel item) throws Exception; BindDetail getBind(Integer eqmid) throws Exception; + + void generateParamindex() throws Exception; } diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index bb551e4..45dda10 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -200,7 +200,17 @@ public class ParamBindServiceImpl implements ParamBindService { return result; } - private void bindOne(Integer eqmid, Integer icdid) throws Exception { + @Override + public void generateParamindex() throws Exception { + List modevList = modevRepository.findByIcdidIsNotNull(); + if (!CollectionUtils.isEmpty(modevList)) { + for (Modev item : modevList) { + generateOne(item.getId(), item.getIcdid()); + } + } + } + + private void generateOne(Integer eqmid, Integer icdid) throws Exception { Optional optionalInst = instRepository.findById(icdid); if (!optionalInst.isPresent()) { throw new Exception("未找到该ICD逻辑设备实例, eqmid=" + eqmid + ", icdid=" + icdid); From 4a9d4df27c3eb32041c545c16f129d22782b116e Mon Sep 17 00:00:00 2001 From: huangfeng Date: Wed, 10 Jan 2024 16:05:47 +0800 Subject: [PATCH 07/31] =?UTF-8?q?feat:=20SCD=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E8=A6=86=E7=9B=96=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/IcdFileConfigServiceImpl.java | 28 +++++++++++-------- .../java/com/xydl/cac/util/IcdXmlUtil.java | 14 ++++++---- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java index c91a944..c836f28 100644 --- a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java @@ -40,22 +40,26 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { config.getIedName(), config.getLdeviceInst(), config.getLnClass()); if (CollectionUtils.isEmpty(list)) { repository.save(config); + } else { + config.setId(list.get(0).getId()); + } - if (config.getAttMap() != null) { - Collection attList = config.getAttMap().values(); - for (IcdConfigTypeAtt item : attList) { - item.setIcdConfigTypeId(config.getId()); - } - attRepository.saveAll(attList); + attRepository.deleteByIcdConfigTypeId(config.getId()); + if (config.getAttMap() != null) { + Collection attList = config.getAttMap().values(); + for (IcdConfigTypeAtt item : attList) { + item.setIcdConfigTypeId(config.getId()); } + attRepository.saveAll(attList); + } - if (config.getInstMap() != null) { - Collection instList = config.getInstMap().values(); - for (IcdConfigTypeInst item : instList) { - item.setIcdConfigTypeId(config.getId()); - } - instRepository.saveAll(instList); + instRepository.deleteByIcdConfigTypeId(config.getId()); + if (config.getInstMap() != null) { + Collection instList = config.getInstMap().values(); + for (IcdConfigTypeInst item : instList) { + item.setIcdConfigTypeId(config.getId()); } + instRepository.saveAll(instList); } } } diff --git a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java index 72a6b31..25fa5dc 100644 --- a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java +++ b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java @@ -154,17 +154,19 @@ public class IcdXmlUtil { String result = ""; List daList = findNodes(node, "DA"); for (JsonNode daNode : daList) { - JsonNode dchgNode = daNode.get("dchg"); String fc = daNode.get("fc").asText(); - if (dchgNode != null && dchgNode.asText().equals("true") && fc.equals(fcname)) { + String bType = daNode.get("bType").asText(); + if (bType.equals("Struct") && fc.equals(fcname)) { result = daNode.get("name").asText(); JsonNode typeNode = daNode.get("type"); if (typeNode != null && StringUtils.isNotBlank(typeNode.asText())) { JsonNode nodeDAType = mapDAType.get(typeNode.asText()); - List bdaList = findNodes(nodeDAType, "BDA"); - if (!CollectionUtils.isEmpty(bdaList)) { - String name = bdaList.get(0).get("name").asText(); - result = result + "$" + name; + if (nodeDAType != null) { + List bdaList = findNodes(nodeDAType, "BDA"); + if (!CollectionUtils.isEmpty(bdaList)) { + String name = bdaList.get(0).get("name").asText(); + result = result + "$" + name; + } } } break; From fed269b70a44db8b6852221b0e89a9054c931471 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Wed, 10 Jan 2024 16:47:22 +0800 Subject: [PATCH 08/31] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E7=94=9F?= =?UTF-8?q?=E6=88=90rptparamindex=E7=9A=84=E6=8A=A5=E9=94=99=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ParamBindServiceImpl.java | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index 45dda10..9211d35 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -205,36 +205,39 @@ public class ParamBindServiceImpl implements ParamBindService { List modevList = modevRepository.findByIcdidIsNotNull(); if (!CollectionUtils.isEmpty(modevList)) { for (Modev item : modevList) { - generateOne(item.getId(), item.getIcdid()); + generateOne(item); } } } - private void generateOne(Integer eqmid, Integer icdid) throws Exception { - Optional optionalInst = instRepository.findById(icdid); + private void generateOne(Modev item) throws Exception { + Optional optionalInst = instRepository.findById(item.getIcdid()); if (!optionalInst.isPresent()) { - throw new Exception("未找到该ICD逻辑设备实例, eqmid=" + eqmid + ", icdid=" + icdid); + throw new Exception("未找到该ICD逻辑设备实例, eqmid=" + item.getId() + ", icdid=" + item.getIcdid()); } IcdConfigTypeInst inst = optionalInst.get(); Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); if (!optionalType.isPresent()) { - throw new Exception("未找到该实例对应的ICD配置类型, icdid=" + icdid); + throw new Exception("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdid()); } IcdConfigType type = optionalType.get(); String param = type.getIedName() + type.getLdeviceInst() + "/" + type.getLnClass() + inst.getInst(); List attList = attRepository.findByIcdConfigTypeId(type.getId()); for (IcdConfigTypeAtt att : attList) { - String paramindex = param + "$" + att.getLastName(); - Optional optionalRpt = rptparamindexRepository.findById(paramindex); - if (!optionalRpt.isPresent()) { - throw new Exception("未找到该Rptparamindex,对象参引=" + paramindex); + if (StringUtils.isNotBlank(att.getColName())) { + String paramindex = param + "$" + att.getLastName(); + Optional optionalRpt = rptparamindexRepository.findById(paramindex); + if (!optionalRpt.isPresent()) { + throw new Exception(item.getName() + "的字段" + att.getColName() + "对应的属性" + + att.getDoName() + ",未找到该Rptparamindex,对象参引=" + paramindex); + } + Rptparamindex rpt = optionalRpt.get(); + rpt.setTablename(type.getTableName()); + rpt.setColname(att.getColName()); + rpt.setEqmid(item.getId()); + rptparamindexRepository.save(rpt); } - Rptparamindex rpt = optionalRpt.get(); - rpt.setTablename(type.getTableName()); - rpt.setColname(att.getColName()); - rpt.setEqmid(eqmid); - rptparamindexRepository.save(rpt); } } } From 0cb208c2801d96701980c4c79dd21e61546cb9f1 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Wed, 10 Jan 2024 16:50:41 +0800 Subject: [PATCH 09/31] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/controller/IcdConfigController.java | 7 +++++++ .../java/com/xydl/cac/service/IcdFileConfigService.java | 2 ++ .../xydl/cac/service/impl/IcdFileConfigServiceImpl.java | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/src/main/java/com/xydl/cac/controller/IcdConfigController.java b/src/main/java/com/xydl/cac/controller/IcdConfigController.java index 8b7e2da..82188a5 100644 --- a/src/main/java/com/xydl/cac/controller/IcdConfigController.java +++ b/src/main/java/com/xydl/cac/controller/IcdConfigController.java @@ -77,6 +77,13 @@ public class IcdConfigController extends BasicController { return Response.success("OK"); } + @PostMapping("deleteAtt") + @ApiOperation("删除ICD类型属性配置") + public Response deleteAtt(@Validated @NotNull(message = "attid不能为空!") Integer attid) { + configService.deleteAtt(attid); + return Response.success("OK"); + } + @GetMapping("tableList") @ApiOperation("查询data表名") public Response> tableList() throws Exception { diff --git a/src/main/java/com/xydl/cac/service/IcdFileConfigService.java b/src/main/java/com/xydl/cac/service/IcdFileConfigService.java index 220fd3d..421b975 100644 --- a/src/main/java/com/xydl/cac/service/IcdFileConfigService.java +++ b/src/main/java/com/xydl/cac/service/IcdFileConfigService.java @@ -18,4 +18,6 @@ public interface IcdFileConfigService { void updateAtt(IcdConfigTypeAtt item) throws Exception; void delete(Integer id); + + void deleteAtt(Integer attid); } diff --git a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java index c836f28..96c0694 100644 --- a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java @@ -122,4 +122,9 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { repository.deleteById(id); } + @Override + public void deleteAtt(Integer attid) { + attRepository.deleteById(attid); + } + } From 978f91ba215fb5e86fba0b5b0585d874d6ad625d Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 11 Jan 2024 09:31:46 +0800 Subject: [PATCH 10/31] =?UTF-8?q?fix:=20=E8=B0=83=E6=95=B4=E8=A1=A8?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=92=8C=E5=A4=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/init.sql | 37 ++++++++++--------- .../com/xydl/cac/entity/IcdConfigType.java | 12 +++--- .../com/xydl/cac/entity/IcdConfigTypeAtt.java | 10 ++--- .../xydl/cac/entity/IcdConfigTypeInst.java | 4 +- .../service/impl/ParamBindServiceImpl.java | 4 +- 5 files changed, 35 insertions(+), 32 deletions(-) diff --git a/sql/init.sql b/sql/init.sql index a78989d..4d9c055 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -1,20 +1,23 @@ -CREATE TABLE `icd_file_config` ( +CREATE TABLE `icd_config_type` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `ied_name` varchar(45) NOT NULL, - `ldevice_inst` varchar(45) NOT NULL, - `ln_class` varchar(45) NOT NULL, - `do_name` varchar(45) NOT NULL, - `last_name` varchar(45) DEFAULT NULL, - `table_name` varchar(45) DEFAULT NULL, - `col_name` varchar(45) DEFAULT NULL, + `ied_name` varchar(45) NOT NULL COMMENT 'IED名称', + `ldevice_inst` varchar(45) NOT NULL COMMENT '设备类型', + `ln_class` varchar(45) NOT NULL COMMENT 'LN类型', + `table_name` varchar(45) DEFAULT NULL COMMENT '表名', PRIMARY KEY (`id`), - KEY `idxKey` (`ied_name`,`ldevice_inst`,`ln_class`,`do_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -CREATE TABLE `icd_file_config_inst` ( + KEY `idxKey` (`ied_name`,`ldevice_inst`,`ln_class`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ICD配置类型表'; +CREATE TABLE `icd_config_type_att` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `config_id` int(11) NOT NULL, - `inst` varchar(45) DEFAULT NULL, - `paramindex` varchar(200) DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `idxConfigid` (`config_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + `icd_config_type_id` int(11) NOT NULL COMMENT '配置类型表id', + `do_name` varchar(45) NOT NULL COMMENT '属性', + `param` varchar(200) DEFAULT NULL COMMENT '参数', + `col_name` varchar(45) DEFAULT NULL COMMENT '字段名', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ICD配置类型属性表'; +CREATE TABLE `icd_config_type_inst` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `icd_config_type_id` int(11) NOT NULL COMMENT '配置类型表id', + `inst` varchar(45) NOT NULL COMMENT '实例', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ICD配置类型实例表'; diff --git a/src/main/java/com/xydl/cac/entity/IcdConfigType.java b/src/main/java/com/xydl/cac/entity/IcdConfigType.java index b2bc03c..9b32f1c 100644 --- a/src/main/java/com/xydl/cac/entity/IcdConfigType.java +++ b/src/main/java/com/xydl/cac/entity/IcdConfigType.java @@ -24,16 +24,16 @@ public class IcdConfigType { @Column(name = "id") private Integer id; - @Column(name = "ied_name") + @Column(name = "IED名称") private String iedName; - @Column(name = "ldevice_inst") + @Column(name = "设备类型") private String ldeviceInst; - @Column(name = "ln_class") + @Column(name = "LN类型") private String lnClass; - @Column(name = "table_name") + @Column(name = "表名") private String tableName; @Transient @@ -46,14 +46,14 @@ public class IcdConfigType { @Transient private List instList; - public void addAtt(String doName, String lastname) { + public void addAtt(String doName, String param) { if (attMap == null) { attMap = new LinkedHashMap<>(); } if (!attMap.containsKey(doName)) { IcdConfigTypeAtt item = IcdConfigTypeAtt.builder() .doName(doName) - .lastName(lastname) + .param(param) .build(); attMap.put(doName, item); } diff --git a/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java b/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java index 58fef02..12a3576 100644 --- a/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java +++ b/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java @@ -24,16 +24,16 @@ public class IcdConfigTypeAtt { @Column(name = "id") private Integer id; - @Column(name = "icd_config_type_id") + @Column(name = "配置类型表id") private Integer icdConfigTypeId; - @Column(name = "do_name") + @Column(name = "属性") private String doName; - @Column(name = "last_name") - private String lastName; + @Column(name = "参数") + private String param; - @Column(name = "col_name") + @Column(name = "字段名") private String colName; } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/entity/IcdConfigTypeInst.java b/src/main/java/com/xydl/cac/entity/IcdConfigTypeInst.java index 2b983f1..0636162 100644 --- a/src/main/java/com/xydl/cac/entity/IcdConfigTypeInst.java +++ b/src/main/java/com/xydl/cac/entity/IcdConfigTypeInst.java @@ -22,10 +22,10 @@ public class IcdConfigTypeInst { @Column(name = "id") private Integer id; - @Column(name = "icd_config_type_id") + @Column(name = "配置类型表id") private Integer icdConfigTypeId; - @Column(name = "inst") + @Column(name = "实例") private String inst; @Transient diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index 9211d35..b8c0904 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -114,7 +114,7 @@ public class ParamBindServiceImpl implements ParamBindService { if (StringUtils.isBlank(att.getColName())) { msgList.add(att.getDoName() + "该属性还未配置绑定字段"); } else { - String paramindex = param + "$" + att.getLastName(); + String paramindex = param + "$" + att.getParam(); Optional optionalRpt = rptparamindexRepository.findById(paramindex); if (!optionalRpt.isPresent()) { throw new Exception("未找到该Rptparamindex,对象参引=" + paramindex); @@ -226,7 +226,7 @@ public class ParamBindServiceImpl implements ParamBindService { List attList = attRepository.findByIcdConfigTypeId(type.getId()); for (IcdConfigTypeAtt att : attList) { if (StringUtils.isNotBlank(att.getColName())) { - String paramindex = param + "$" + att.getLastName(); + String paramindex = param + "$" + att.getParam(); Optional optionalRpt = rptparamindexRepository.findById(paramindex); if (!optionalRpt.isPresent()) { throw new Exception(item.getName() + "的字段" + att.getColName() + "对应的属性" From 9413f6d5e3694979539d71123f831946c5e1f524 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 11 Jan 2024 14:05:13 +0800 Subject: [PATCH 11/31] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=A4=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/entity/IcdConfigType.java | 13 +++++++++---- .../java/com/xydl/cac/entity/IcdConfigTypeAtt.java | 13 +++++++++---- .../java/com/xydl/cac/entity/IcdConfigTypeInst.java | 7 +++++-- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/xydl/cac/entity/IcdConfigType.java b/src/main/java/com/xydl/cac/entity/IcdConfigType.java index 9b32f1c..f37cfe9 100644 --- a/src/main/java/com/xydl/cac/entity/IcdConfigType.java +++ b/src/main/java/com/xydl/cac/entity/IcdConfigType.java @@ -1,6 +1,7 @@ package com.xydl.cac.entity; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -24,16 +25,20 @@ public class IcdConfigType { @Column(name = "id") private Integer id; - @Column(name = "IED名称") + @ApiModelProperty(name = "IED名称") + @Column(name = "ied_name") private String iedName; - @Column(name = "设备类型") + @ApiModelProperty(name = "设备类型") + @Column(name = "ldevice_inst") private String ldeviceInst; - @Column(name = "LN类型") + @ApiModelProperty(name = "LN类型") + @Column(name = "ln_class") private String lnClass; - @Column(name = "表名") + @ApiModelProperty(name = "表名") + @Column(name = "table_name") private String tableName; @Transient diff --git a/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java b/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java index 12a3576..8de6939 100644 --- a/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java +++ b/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java @@ -1,6 +1,7 @@ package com.xydl.cac.entity; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -24,16 +25,20 @@ public class IcdConfigTypeAtt { @Column(name = "id") private Integer id; - @Column(name = "配置类型表id") + @ApiModelProperty(name = "配置类型表id") + @Column(name = "icd_config_type_id") private Integer icdConfigTypeId; - @Column(name = "属性") + @ApiModelProperty(name = "属性") + @Column(name = "do_name") private String doName; - @Column(name = "参数") + @ApiModelProperty(name = "参数") + @Column(name = "param") private String param; - @Column(name = "字段名") + @ApiModelProperty(name = "字段名") + @Column(name = "col_name") private String colName; } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/entity/IcdConfigTypeInst.java b/src/main/java/com/xydl/cac/entity/IcdConfigTypeInst.java index 0636162..85ba695 100644 --- a/src/main/java/com/xydl/cac/entity/IcdConfigTypeInst.java +++ b/src/main/java/com/xydl/cac/entity/IcdConfigTypeInst.java @@ -1,6 +1,7 @@ package com.xydl.cac.entity; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -22,10 +23,12 @@ public class IcdConfigTypeInst { @Column(name = "id") private Integer id; - @Column(name = "配置类型表id") + @ApiModelProperty(name = "配置类型表id") + @Column(name = "icd_config_type_id") private Integer icdConfigTypeId; - @Column(name = "实例") + @ApiModelProperty(name = "实例") + @Column(name = "inst") private String inst; @Transient From 1e1dcec5ea1c41c7cfa15c5c7f1e4165903c3e15 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 11 Jan 2024 16:13:11 +0800 Subject: [PATCH 12/31] =?UTF-8?q?pert:=20=E5=A2=9E=E5=8A=A0=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/init.sql | 2 + .../com/xydl/cac/entity/IcdConfigType.java | 7 +- .../com/xydl/cac/entity/IcdConfigTypeAtt.java | 4 ++ .../java/com/xydl/cac/util/IcdXmlUtil.java | 14 ++-- .../java/com/xydl/cac/util/SqlEscapeUtil.java | 66 +++++++++++++++++++ 5 files changed, 87 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/xydl/cac/util/SqlEscapeUtil.java diff --git a/sql/init.sql b/sql/init.sql index 4d9c055..6f644c7 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -3,6 +3,7 @@ CREATE TABLE `icd_config_type` ( `ied_name` varchar(45) NOT NULL COMMENT 'IED名称', `ldevice_inst` varchar(45) NOT NULL COMMENT '设备类型', `ln_class` varchar(45) NOT NULL COMMENT 'LN类型', + `ln_desc` varchar(200) DEFAULT NULL, `table_name` varchar(45) DEFAULT NULL COMMENT '表名', PRIMARY KEY (`id`), KEY `idxKey` (`ied_name`,`ldevice_inst`,`ln_class`) @@ -12,6 +13,7 @@ CREATE TABLE `icd_config_type_att` ( `icd_config_type_id` int(11) NOT NULL COMMENT '配置类型表id', `do_name` varchar(45) NOT NULL COMMENT '属性', `param` varchar(200) DEFAULT NULL COMMENT '参数', + `description` varchar(200) DEFAULT NULL COMMENT '备注', `col_name` varchar(45) DEFAULT NULL COMMENT '字段名', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ICD配置类型属性表'; diff --git a/src/main/java/com/xydl/cac/entity/IcdConfigType.java b/src/main/java/com/xydl/cac/entity/IcdConfigType.java index f37cfe9..d8ef1f0 100644 --- a/src/main/java/com/xydl/cac/entity/IcdConfigType.java +++ b/src/main/java/com/xydl/cac/entity/IcdConfigType.java @@ -37,6 +37,10 @@ public class IcdConfigType { @Column(name = "ln_class") private String lnClass; + @ApiModelProperty(name = "LN类型备注") + @Column(name = "ln_desc") + private String lnDesc; + @ApiModelProperty(name = "表名") @Column(name = "table_name") private String tableName; @@ -51,13 +55,14 @@ public class IcdConfigType { @Transient private List instList; - public void addAtt(String doName, String param) { + public void addAtt(String doName, String desc, String param) { if (attMap == null) { attMap = new LinkedHashMap<>(); } if (!attMap.containsKey(doName)) { IcdConfigTypeAtt item = IcdConfigTypeAtt.builder() .doName(doName) + .description(desc) .param(param) .build(); attMap.put(doName, item); diff --git a/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java b/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java index 8de6939..36f79f3 100644 --- a/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java +++ b/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java @@ -37,6 +37,10 @@ public class IcdConfigTypeAtt { @Column(name = "param") private String param; + @ApiModelProperty(name = "备注") + @Column(name = "description") + private String description; + @ApiModelProperty(name = "字段名") @Column(name = "col_name") private String colName; diff --git a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java index 25fa5dc..4e71312 100644 --- a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java +++ b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java @@ -60,8 +60,11 @@ public class IcdXmlUtil { JsonNode lnNode = mapLN.get(lnClass + lnInst); String lnType = lnNode.get("lnType").asText(); + String lnDesc = lnNode.get("desc").asText(); JsonNode nodeLNodeType = mapLNodeType.get(lnType); - String doType = findLNodeType_DO_Type(nodeLNodeType, doName); + JsonNode nodeDO = findLNodeType_DO_Node(nodeLNodeType, doName); + String doType = nodeDO.get("type").asText(); + String doDesc = nodeDO.get("desc").asText(); JsonNode nodeDOType = mapDOType.get(doType); String lastname = findLastname(nodeDOType, fc, mapDAType); @@ -73,12 +76,13 @@ public class IcdXmlUtil { .iedName(iedName) .ldeviceInst(ldeviceInst) .lnClass(lnClass) + .lnDesc(lnDesc) .build(); result.put(key, config); } String param = fc + "$" + doName + "$" + lastname; config.addInst(lnInst); - config.addAtt(doName, param); + config.addAtt(doName, doDesc, param); } else if ("ST".equals(fc)) { // IcdConfigType config = result.get(key); // if (config == null) { @@ -137,13 +141,13 @@ public class IcdXmlUtil { return map; } - private static String findLNodeType_DO_Type(JsonNode lnNode, String doName) { - String result = ""; + private static JsonNode findLNodeType_DO_Node(JsonNode lnNode, String doName) { + JsonNode result = null; List doiList = findNodes(lnNode, "DO"); for (JsonNode doiNode : doiList) { String doiName = doiNode.get("name").asText(); if (doiName.equals(doName)) { - result = doiNode.get("type").asText(); + result = doiNode; break; } } diff --git a/src/main/java/com/xydl/cac/util/SqlEscapeUtil.java b/src/main/java/com/xydl/cac/util/SqlEscapeUtil.java new file mode 100644 index 0000000..8cde45a --- /dev/null +++ b/src/main/java/com/xydl/cac/util/SqlEscapeUtil.java @@ -0,0 +1,66 @@ +package com.xydl.cac.util; + +import com.querydsl.core.types.dsl.BooleanExpression; +import com.querydsl.core.types.dsl.StringPath; +import org.apache.commons.lang3.StringUtils; + + +public class SqlEscapeUtil { + /** + * 转义字符 + **/ + public static final char ESCAPE = '!'; + + /** + * 转义方法 + * + * @param param 待转义字符串 + * @return String + */ + public static String escape(String param) { + if (StringUtils.isNotEmpty(param)) { + String temp = param.replaceAll("/", ESCAPE + "/"); + temp = temp.replaceAll("%", ESCAPE + "%"); + temp = temp.replaceAll("_", ESCAPE + "_"); + temp = temp.replaceAll("'", "''"); + return temp.trim(); + } + return ""; + } + + /** + * 转义方法 + * + * @param param 待转义字符串 + * @return String + */ + public static BooleanExpression escape(StringPath path, String param) { + if (StringUtils.isNotEmpty(param)) { + String temp = param.replaceAll("!", ESCAPE + "!"); + temp = temp.replaceAll("%", ESCAPE + "%"); + temp = temp.replaceAll("_", ESCAPE + "_"); + temp = temp.replaceAll("'", "\\'"); + return path.like("%"+ temp.trim() +"%", ESCAPE); + } + return null; + } + + + public static boolean sqlValidate(String str) { + if (StringUtils.isBlank(str)) { + return false; + } + str = str.toLowerCase();// 统一转为小写 + String badStr = "'|exec|and|or|execute|insert|select|delete|update|drop|%|master|truncate|" + + "declare|sitename|net user|xp_cmdshell|like'|exec|execute|insert|create|drop|" + + "table|grant|use|group_concat|column_name|information_schema.columns|table_schema|" + + "select|delete|update|master|truncate|declare|-- |like|//|%";// 过滤掉的sql关键字,可以手动添加 + String[] badStrs = badStr.split("\\|"); + for (String s : badStrs) { + if (str.contains(s)) { + return true; + } + } + return false; + } +} From d72e74394bf6ade5acb7196ec939ff2edfb124bf Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 11 Jan 2024 16:33:50 +0800 Subject: [PATCH 13/31] =?UTF-8?q?perf:=20=E8=BF=94=E5=9B=9E=E8=A1=A8?= =?UTF-8?q?=E5=90=8D=E5=8A=A0=E4=B8=AD=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cac/controller/IcdConfigController.java | 4 ++-- .../com/xydl/cac/service/DataService.java | 2 +- .../cac/service/impl/DataServiceImpl.java | 23 +++++++++++++++---- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/xydl/cac/controller/IcdConfigController.java b/src/main/java/com/xydl/cac/controller/IcdConfigController.java index 82188a5..854ab34 100644 --- a/src/main/java/com/xydl/cac/controller/IcdConfigController.java +++ b/src/main/java/com/xydl/cac/controller/IcdConfigController.java @@ -86,8 +86,8 @@ public class IcdConfigController extends BasicController { @GetMapping("tableList") @ApiOperation("查询data表名") - public Response> tableList() throws Exception { - List result = dataService.getDataTables(); + public Response> tableList() throws Exception { + List result = dataService.getDataTables(); return Response.success(result); } diff --git a/src/main/java/com/xydl/cac/service/DataService.java b/src/main/java/com/xydl/cac/service/DataService.java index ed289d4..0b60daf 100644 --- a/src/main/java/com/xydl/cac/service/DataService.java +++ b/src/main/java/com/xydl/cac/service/DataService.java @@ -9,7 +9,7 @@ import java.util.Map; public interface DataService { - List getDataTables() throws Exception; + List getDataTables() throws Exception; List getDataTableColumns(String tableName) throws Exception; diff --git a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java index 1749eef..bb8a0c9 100644 --- a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java @@ -1,10 +1,12 @@ package com.xydl.cac.service.impl; +import com.xydl.cac.entity.ModevType; import com.xydl.cac.entity.NiecPoint; import com.xydl.cac.entity.NiecSensor; import com.xydl.cac.model.ColumnModel; import com.xydl.cac.model.ConditionModel; import com.xydl.cac.model.OnePage; +import com.xydl.cac.repository.ModevTypeRepository; import com.xydl.cac.service.DataService; import com.xydl.cac.util.DateUtil; import lombok.extern.slf4j.Slf4j; @@ -28,15 +30,26 @@ public class DataServiceImpl implements DataService { @Resource private JdbcTemplate jdbcTemplate; + @Resource + ModevTypeRepository modevTypeRepository; @Override - public List getDataTables() throws Exception { - List tables = new ArrayList<>(); + public List getDataTables() throws Exception { + List typeList = modevTypeRepository.findAll(); + List tables = new ArrayList<>(); String sql = "SHOW TABLES"; List list = jdbcTemplate.queryForList(sql, String.class); - for (String table : list) { - if (table.startsWith("data_")) { - tables.add(table); + for (String name : list) { + if (name.startsWith("data_")) { + ColumnModel item = new ColumnModel(); + item.setName(name); + for (ModevType type : typeList) { + if (name.equals(type.getTablename())) { + item.setComment(type.getMc()); + break; + } + } + tables.add(item); } } return tables; From fbb4bb4d105e0ace8941f833543d7b8155be9903 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Fri, 12 Jan 2024 10:56:26 +0800 Subject: [PATCH 14/31] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/xydl/cac/util/IcdXmlUtil.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java index 4e71312..b675ca0 100644 --- a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java +++ b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java @@ -15,7 +15,12 @@ public class IcdXmlUtil { public static LinkedHashMap loadIcdType(String xml) throws Exception { XmlMapper xmlMapper = XmlMapper.builder() .build(); - JsonNode root = xmlMapper.readTree(xml); + JsonNode root; + try { + root = xmlMapper.readTree(xml); + } catch (Exception ex) { + throw new Exception("ICD文件解析失败,请上传正确的xml类型文件"); + } LinkedHashMap result = processTypeRoot(root); return result; } From 6726a910a34ef77f66fdd0a01f78f88f0ed7b771 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Fri, 12 Jan 2024 11:17:18 +0800 Subject: [PATCH 15/31] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=A7=A3?= =?UTF-8?q?=E7=BB=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xydl/cac/controller/ParamBindController.java | 7 +++++++ .../java/com/xydl/cac/service/ParamBindService.java | 2 ++ .../xydl/cac/service/impl/ParamBindServiceImpl.java | 11 +++++++++++ 3 files changed, 20 insertions(+) diff --git a/src/main/java/com/xydl/cac/controller/ParamBindController.java b/src/main/java/com/xydl/cac/controller/ParamBindController.java index b23b3f3..5c246bd 100644 --- a/src/main/java/com/xydl/cac/controller/ParamBindController.java +++ b/src/main/java/com/xydl/cac/controller/ParamBindController.java @@ -54,6 +54,13 @@ public class ParamBindController extends BasicController { return Response.success("OK"); } + @PostMapping("unbind") + @ApiOperation("解绑") + public Response unbind(@Validated @NotNull(message = "eqmid不能为空!") @Param("eqmid") Integer eqmid) throws Exception { + bindService.unbind(eqmid); + return Response.success("OK"); + } + @GetMapping("getBind") @ApiOperation("查询绑定信息") public Response getBind(@Validated @NotNull(message = "eqmid不能为空!") @Param("eqmid") Integer eqmid) throws Exception { diff --git a/src/main/java/com/xydl/cac/service/ParamBindService.java b/src/main/java/com/xydl/cac/service/ParamBindService.java index 1d73061..dc972c2 100644 --- a/src/main/java/com/xydl/cac/service/ParamBindService.java +++ b/src/main/java/com/xydl/cac/service/ParamBindService.java @@ -18,6 +18,8 @@ public interface ParamBindService { void bind(BindingModel item) throws Exception; + void unbind(Integer eqmid) throws Exception; + BindDetail getBind(Integer eqmid) throws Exception; void generateParamindex() throws Exception; diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index b8c0904..f2c258a 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -163,6 +163,17 @@ public class ParamBindServiceImpl implements ParamBindService { modevRepository.save(modev); } + @Override + public void unbind(Integer eqmid) throws Exception { + Optional optionalModev = modevRepository.findById(eqmid); + if (!optionalModev.isPresent()) { + throw new Exception("未找到该监测装置, eqmid=" + eqmid); + } + Modev modev = optionalModev.get(); + modev.setIcdid(null); + modevRepository.save(modev); + } + @Override public BindDetail getBind(Integer eqmid) throws Exception { Optional optionalModev = modevRepository.findById(eqmid); From 9aa334a4955a3a5d5b0044f7ba8d826fb31c6603 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Fri, 12 Jan 2024 11:33:13 +0800 Subject: [PATCH 16/31] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=E8=A1=A8=E5=90=8E=E6=B8=85=E7=A9=BA=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E7=BB=91=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xydl/cac/service/impl/IcdFileConfigServiceImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java index 96c0694..ca186a0 100644 --- a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java @@ -100,6 +100,13 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { throw new Exception("未找到该项"); } IcdConfigType r = optional.get(); + if (r.getTableName() != null && !r.getTableName().equals(item.getTableName())) { + List attList = attRepository.findByIcdConfigTypeId(r.getId()); + for (IcdConfigTypeAtt att : attList) { + att.setColName(null); + } + attRepository.saveAll(attList); + } r.setTableName(item.getTableName()); repository.save(r); } From ead518375b18d6b56a539b4fbd1b96020358b05f Mon Sep 17 00:00:00 2001 From: huangfeng Date: Fri, 12 Jan 2024 11:58:11 +0800 Subject: [PATCH 17/31] =?UTF-8?q?perf:=20=E5=A2=9E=E5=8A=A0=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E5=80=99=E7=9A=84=E5=AD=97=E6=AE=B5=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ParamBindServiceImpl.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index f2c258a..3b5bdcf 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -159,6 +159,30 @@ public class ParamBindServiceImpl implements ParamBindService { throw new Exception("该逻辑设备实例已被" + list.get(0).getName() + "绑定"); } + List attList = attRepository.findByIcdConfigTypeId(type.getId()); + Optional optionalModevType = modevTypeRepository.findById(modev.getModevtid()); + if (optionalModevType.isPresent()) { + ModevType modevType = optionalModevType.get(); + if (StringUtils.isNotBlank(modevType.getTablename())) { + List columnList = dataService.getDataTableColumns(modevType.getTablename()); + for (IcdConfigTypeAtt att : attList) { + if (StringUtils.isNotBlank(att.getColName())) { + boolean found = false; + for (ColumnModel col : columnList) { + if (col.getName().equals(att.getColName())) { + found = true; + break; + } + } + if (!found) { + throw new Exception("当前监控设备对应的表" + modevType.getTablename() + "里不存在配置属性" + + att.getDoName() + "绑定的字段" + att.getColName()); + } + } + } + } + } + modev.setIcdid(item.getIcdid()); modevRepository.save(modev); } From 9b2d1ad92179f138bfb257d5ce1abb930dca0f3e Mon Sep 17 00:00:00 2001 From: huangfeng Date: Fri, 12 Jan 2024 14:12:50 +0800 Subject: [PATCH 18/31] =?UTF-8?q?fix:=20=E8=B0=83=E6=95=B4=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=EF=BC=8C=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xydl/cac/service/impl/DataServiceImpl.java | 2 +- .../xydl/cac/service/impl/ParamBindServiceImpl.java | 10 +++++----- src/main/java/com/xydl/cac/util/IcdXmlUtil.java | 12 ++++++++++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java index bb8a0c9..c628c15 100644 --- a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java @@ -63,7 +63,7 @@ public class DataServiceImpl implements DataService { List result = new ArrayList<>(); String sql = "SELECT COLUMN_NAME name, COLUMN_COMMENT comment FROM information_schema.columns WHERE TABLE_NAME='" - + tableName + "' AND TABLE_SCHEMA='" + schema + "'"; + + tableName + "' AND TABLE_SCHEMA='" + schema + "' ORDER BY comment,name"; List list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ColumnModel.class)); for (ColumnModel item : list) { String col = item.getName(); diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index 3b5bdcf..4417fa7 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -114,11 +114,11 @@ public class ParamBindServiceImpl implements ParamBindService { if (StringUtils.isBlank(att.getColName())) { msgList.add(att.getDoName() + "该属性还未配置绑定字段"); } else { - String paramindex = param + "$" + att.getParam(); - Optional optionalRpt = rptparamindexRepository.findById(paramindex); - if (!optionalRpt.isPresent()) { - throw new Exception("未找到该Rptparamindex,对象参引=" + paramindex); - } +// String paramindex = param + "$" + att.getParam(); +// Optional optionalRpt = rptparamindexRepository.findById(paramindex); +// if (!optionalRpt.isPresent()) { +// throw new Exception("未找到该Rptparamindex,对象参引=" + paramindex); +// } } } diff --git a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java index b675ca0..7eaa1e0 100644 --- a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java +++ b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java @@ -65,11 +65,19 @@ public class IcdXmlUtil { JsonNode lnNode = mapLN.get(lnClass + lnInst); String lnType = lnNode.get("lnType").asText(); - String lnDesc = lnNode.get("desc").asText(); + JsonNode nodeLnDesc = lnNode.get("desc"); + String lnDesc = null; + if (nodeLnDesc != null) { + lnDesc = nodeLnDesc.asText(); + } JsonNode nodeLNodeType = mapLNodeType.get(lnType); JsonNode nodeDO = findLNodeType_DO_Node(nodeLNodeType, doName); String doType = nodeDO.get("type").asText(); - String doDesc = nodeDO.get("desc").asText(); + JsonNode nodeDoDesc = nodeDO.get("desc"); + String doDesc = null; + if (nodeDoDesc != null) { + doDesc = nodeDoDesc.asText(); + } JsonNode nodeDOType = mapDOType.get(doType); String lastname = findLastname(nodeDOType, fc, mapDAType); From d79d4816faa48a45790d2060618fdee62dd16007 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Mon, 15 Jan 2024 10:31:14 +0800 Subject: [PATCH 19/31] =?UTF-8?q?feat:=20=E8=B0=83=E6=95=B4=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E9=85=8D=E7=BD=AE=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=AF=8F?= =?UTF-8?q?=E4=B8=AA=E6=8E=A5=E5=8F=A3=E8=B0=83=E7=94=A8=E7=9A=84=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xydl/cac/config/InterceptorConfig.java | 17 +++++++ .../cac/interceptor/GateWayInterceptor.java | 25 +++++++++ src/main/resources/application-dev.yml | 16 +----- src/main/resources/application-prod.yml | 15 +----- src/main/resources/logback.xml | 51 +++++++++++++++++++ 5 files changed, 95 insertions(+), 29 deletions(-) create mode 100644 src/main/java/com/xydl/cac/config/InterceptorConfig.java create mode 100644 src/main/java/com/xydl/cac/interceptor/GateWayInterceptor.java create mode 100644 src/main/resources/logback.xml diff --git a/src/main/java/com/xydl/cac/config/InterceptorConfig.java b/src/main/java/com/xydl/cac/config/InterceptorConfig.java new file mode 100644 index 0000000..46e29b6 --- /dev/null +++ b/src/main/java/com/xydl/cac/config/InterceptorConfig.java @@ -0,0 +1,17 @@ +package com.xydl.cac.config; + +import com.xydl.cac.interceptor.GateWayInterceptor; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class InterceptorConfig implements WebMvcConfigurer { + /** + * 注册自定义拦截器 + */ + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(new GateWayInterceptor()).addPathPatterns("/**"); + } +} diff --git a/src/main/java/com/xydl/cac/interceptor/GateWayInterceptor.java b/src/main/java/com/xydl/cac/interceptor/GateWayInterceptor.java new file mode 100644 index 0000000..3d7d25b --- /dev/null +++ b/src/main/java/com/xydl/cac/interceptor/GateWayInterceptor.java @@ -0,0 +1,25 @@ +package com.xydl.cac.interceptor; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Enumeration; + +@Slf4j +public class GateWayInterceptor extends HandlerInterceptorAdapter { + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + StringBuilder str = new StringBuilder(request.getRequestURI() + " called"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String paramName = params.nextElement(); + str.append(", ").append(paramName).append("=").append(request.getParameter(paramName)); + } + log.info(str.toString()); + return super.preHandle(request, response, handler); + } + +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index f414ca4..9168668 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -13,7 +13,7 @@ spring: username: root password: 123456 jpa: - show-sql: true + show-sql: false open-in-view: false mvc: format: @@ -24,17 +24,3 @@ spring: multipart: max-file-size: 100MB max-request-size: 100MB - -logging: - level: - root: info - com: - xydl: debug - file: - name: /home/xydl/ncac/logs/ncac.log - - - - - - diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 7ab9bf0..7053936 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -13,7 +13,7 @@ spring: username: iec password: Iec@1043 jpa: - show-sql: true + show-sql: false open-in-view: false mvc: format: @@ -24,16 +24,3 @@ spring: multipart: max-file-size: 100MB max-request-size: 100MB - -logging: - level: - root: info - com: - xydl: debug - file: - name: /home/xydl/ncac/logs/ncac.log - - - - - diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000..376a6dc --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %c:%L-->%m%n + + + + + + %d{HH:mm:ss.SSS} %-5level %logger{36} [%line] - %msg%n + + + logs/ncac.%d{yyyy-MM-dd}.log + + 60 + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 7ade5c3c8887289f376c4f8ac918bd0fe60fcf21 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Mon, 15 Jan 2024 11:01:37 +0800 Subject: [PATCH 20/31] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/interceptor/GateWayInterceptor.java | 6 +++--- .../java/com/xydl/cac/service/impl/DataServiceImpl.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/xydl/cac/interceptor/GateWayInterceptor.java b/src/main/java/com/xydl/cac/interceptor/GateWayInterceptor.java index 3d7d25b..ae4f59a 100644 --- a/src/main/java/com/xydl/cac/interceptor/GateWayInterceptor.java +++ b/src/main/java/com/xydl/cac/interceptor/GateWayInterceptor.java @@ -1,14 +1,14 @@ package com.xydl.cac.interceptor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; +import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Enumeration; @Slf4j -public class GateWayInterceptor extends HandlerInterceptorAdapter { +public class GateWayInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { @@ -19,7 +19,7 @@ public class GateWayInterceptor extends HandlerInterceptorAdapter { str.append(", ").append(paramName).append("=").append(request.getParameter(paramName)); } log.info(str.toString()); - return super.preHandle(request, response, handler); + return true; } } diff --git a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java index c628c15..5da59e4 100644 --- a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java @@ -63,7 +63,7 @@ public class DataServiceImpl implements DataService { List result = new ArrayList<>(); String sql = "SELECT COLUMN_NAME name, COLUMN_COMMENT comment FROM information_schema.columns WHERE TABLE_NAME='" - + tableName + "' AND TABLE_SCHEMA='" + schema + "' ORDER BY comment,name"; + + tableName + "' AND TABLE_SCHEMA='" + schema + "' ORDER BY name,comment"; List list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ColumnModel.class)); for (ColumnModel item : list) { String col = item.getName(); From 5caf48f195912b2737c07e4b7a3f6f85fb90967f Mon Sep 17 00:00:00 2001 From: huangfeng Date: Mon, 15 Jan 2024 16:16:37 +0800 Subject: [PATCH 21/31] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E9=9D=9E?= =?UTF-8?q?=E7=A9=BA=E5=92=8C=E9=95=BF=E5=BA=A6=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/xydl/cac/entity/Bdz.java | 6 ++++-- src/main/java/com/xydl/cac/entity/Jg.java | 6 ++++-- src/main/java/com/xydl/cac/entity/Lx.java | 6 ++++-- src/main/java/com/xydl/cac/entity/Modev.java | 6 ++++-- src/main/java/com/xydl/cac/entity/ModevType.java | 8 +++++--- src/main/java/com/xydl/cac/entity/Zsb.java | 6 ++++-- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/xydl/cac/entity/Bdz.java b/src/main/java/com/xydl/cac/entity/Bdz.java index 6e47ce8..bdc8f04 100644 --- a/src/main/java/com/xydl/cac/entity/Bdz.java +++ b/src/main/java/com/xydl/cac/entity/Bdz.java @@ -8,7 +8,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; -import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; import java.math.BigDecimal; import java.util.List; @@ -26,7 +27,8 @@ public class Bdz { @Column(name = "id") private Integer id; - @NotEmpty(message = "名称不能为空") + @NotBlank(message = "名称不能为空") + @Size(max = 50, message = "名称长度不能超过50个字符") @ApiModelProperty("名称") @Column(name = "mc") private String mc; diff --git a/src/main/java/com/xydl/cac/entity/Jg.java b/src/main/java/com/xydl/cac/entity/Jg.java index c50912f..d5c0de2 100644 --- a/src/main/java/com/xydl/cac/entity/Jg.java +++ b/src/main/java/com/xydl/cac/entity/Jg.java @@ -8,8 +8,9 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; -import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import java.math.BigDecimal; import java.util.List; @@ -27,7 +28,8 @@ public class Jg { @Column(name = "id") private Integer id; - @NotEmpty(message = "名称不能为空") + @NotBlank(message = "名称不能为空") + @Size(max = 50, message = "名称长度不能超过50个字符") @ApiModelProperty("名称") @Column(name = "mc") private String mc; diff --git a/src/main/java/com/xydl/cac/entity/Lx.java b/src/main/java/com/xydl/cac/entity/Lx.java index 32ab6e4..5edaec0 100644 --- a/src/main/java/com/xydl/cac/entity/Lx.java +++ b/src/main/java/com/xydl/cac/entity/Lx.java @@ -8,7 +8,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; -import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; import java.math.BigDecimal; @Data @@ -25,7 +26,8 @@ public class Lx { @Column(name = "id") private Integer id; - @NotEmpty(message = "名称不能为空") + @NotBlank(message = "名称不能为空") + @Size(max = 50, message = "名称长度不能超过50个字符") @ApiModelProperty("名称") @Column(name = "mc") private String mc; diff --git a/src/main/java/com/xydl/cac/entity/Modev.java b/src/main/java/com/xydl/cac/entity/Modev.java index 07704f3..bbdb522 100644 --- a/src/main/java/com/xydl/cac/entity/Modev.java +++ b/src/main/java/com/xydl/cac/entity/Modev.java @@ -8,8 +8,9 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; -import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import java.util.Date; @Data @@ -26,7 +27,8 @@ public class Modev { @Column(name = "id") private Integer id; - @NotEmpty(message = "名称不能为空") + @NotBlank(message = "名称不能为空") + @Size(max = 50, message = "名称长度不能超过50个字符") @Column(name = "name") @ApiModelProperty("监测设备名称") private String name; diff --git a/src/main/java/com/xydl/cac/entity/ModevType.java b/src/main/java/com/xydl/cac/entity/ModevType.java index 874b25b..d555847 100644 --- a/src/main/java/com/xydl/cac/entity/ModevType.java +++ b/src/main/java/com/xydl/cac/entity/ModevType.java @@ -7,7 +7,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; -import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; @Data @Builder @@ -23,11 +24,12 @@ public class ModevType { @Column(name = "id") private Integer id; - @NotEmpty(message = "名称不能为空") + @NotBlank(message = "名称不能为空") + @Size(max = 50, message = "名称长度不能超过50个字符") @Column(name = "mc") private String mc; - @NotEmpty(message = "表名不能为空") + @NotBlank(message = "表名不能为空") @Column(name = "tablename") private String tablename; diff --git a/src/main/java/com/xydl/cac/entity/Zsb.java b/src/main/java/com/xydl/cac/entity/Zsb.java index c493ccb..e0192c8 100644 --- a/src/main/java/com/xydl/cac/entity/Zsb.java +++ b/src/main/java/com/xydl/cac/entity/Zsb.java @@ -8,8 +8,9 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; -import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import java.math.BigDecimal; import java.util.List; @@ -27,7 +28,8 @@ public class Zsb { @Column(name = "id") private Integer id; - @NotEmpty(message = "名称不能为空") + @NotBlank(message = "名称不能为空") + @Size(max = 50, message = "名称长度不能超过50个字符") @ApiModelProperty("名称") @Column(name = "mc") private String mc; From c830d1ab5fd44a1bead4899c5ff74c0926e0afa1 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Mon, 15 Jan 2024 16:32:14 +0800 Subject: [PATCH 22/31] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xydl/cac/exception/GlobalExceptionHandler.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java b/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java index 5bd73ed..1fa89b3 100644 --- a/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java @@ -2,6 +2,8 @@ package com.xydl.cac.exception; import com.xydl.cac.model.Response; import lombok.extern.slf4j.Slf4j; +import org.springframework.core.NestedExceptionUtils; +import org.springframework.http.converter.HttpMessageConversionException; import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; @@ -21,10 +23,16 @@ public class GlobalExceptionHandler { return Response.fail(message); } + @ExceptionHandler(HttpMessageConversionException.class) + public Response handleValidationExceptions(HttpMessageConversionException ex) { + String message = "类型转换异常:" + ex.getRootCause().getLocalizedMessage(); + return Response.fail(message); + } + @ExceptionHandler(Exception.class) public Response handleException(Exception ex) { log.error("", ex); - String message = ex.getMessage(); + String message = NestedExceptionUtils.getRootCause(ex).getLocalizedMessage(); return Response.fail(message); } } \ No newline at end of file From 8247fa16f46161a76f34309cb22137fe2504ecd6 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Tue, 16 Jan 2024 15:52:24 +0800 Subject: [PATCH 23/31] =?UTF-8?q?feat:=20=E6=94=B9=E7=94=A8filter=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- .../xydl/cac/config/InterceptorConfig.java | 17 ------- .../cac/exception/GlobalExceptionHandler.java | 2 +- .../java/com/xydl/cac/filter/UrlFilter.java | 47 +++++++++++++++++++ .../cac/interceptor/GateWayInterceptor.java | 25 ---------- 5 files changed, 51 insertions(+), 44 deletions(-) delete mode 100644 src/main/java/com/xydl/cac/config/InterceptorConfig.java create mode 100644 src/main/java/com/xydl/cac/filter/UrlFilter.java delete mode 100644 src/main/java/com/xydl/cac/interceptor/GateWayInterceptor.java diff --git a/.gitignore b/.gitignore index 882303e..21ce137 100644 --- a/.gitignore +++ b/.gitignore @@ -46,4 +46,6 @@ packages/ /test/plugin/dist /test/plugin/workspace /test/jacoco/classes -/test/jacoco/*.exec \ No newline at end of file +/test/jacoco/*.exec + +src/main/resources/static diff --git a/src/main/java/com/xydl/cac/config/InterceptorConfig.java b/src/main/java/com/xydl/cac/config/InterceptorConfig.java deleted file mode 100644 index 46e29b6..0000000 --- a/src/main/java/com/xydl/cac/config/InterceptorConfig.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.xydl.cac.config; - -import com.xydl.cac.interceptor.GateWayInterceptor; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@Configuration -public class InterceptorConfig implements WebMvcConfigurer { - /** - * 注册自定义拦截器 - */ - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(new GateWayInterceptor()).addPathPatterns("/**"); - } -} diff --git a/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java b/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java index 1fa89b3..a7c0d99 100644 --- a/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java @@ -32,7 +32,7 @@ public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public Response handleException(Exception ex) { log.error("", ex); - String message = NestedExceptionUtils.getRootCause(ex).getLocalizedMessage(); + String message = ex.getMessage(); return Response.fail(message); } } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/filter/UrlFilter.java b/src/main/java/com/xydl/cac/filter/UrlFilter.java new file mode 100644 index 0000000..b42b59f --- /dev/null +++ b/src/main/java/com/xydl/cac/filter/UrlFilter.java @@ -0,0 +1,47 @@ +package com.xydl.cac.filter; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; +import org.springframework.stereotype.Component; +import org.springframework.util.AntPathMatcher; +import org.springframework.util.PathMatcher; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Enumeration; +import java.util.List; + +@Component +@Slf4j +public class UrlFilter extends OncePerRequestFilter { + + PathMatcher pathMatcher = new AntPathMatcher(); + private List urlWhiteList = Arrays.asList("/swagger**", "/webjars/**", "/v3/api-docs/**", "/swagger-resources/**", + "/static**"); + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + String path = request.getRequestURI(); + for (String white : urlWhiteList) { + if (pathMatcher.match(white, path)) { + filterChain.doFilter(request, response); + return; + } + } + + StringBuilder str = new StringBuilder(path + " called"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String paramName = params.nextElement(); + str.append(", ").append(paramName).append("=").append(request.getParameter(paramName)); + } + log.info(str.toString()); + filterChain.doFilter(request, response); + } +} diff --git a/src/main/java/com/xydl/cac/interceptor/GateWayInterceptor.java b/src/main/java/com/xydl/cac/interceptor/GateWayInterceptor.java deleted file mode 100644 index ae4f59a..0000000 --- a/src/main/java/com/xydl/cac/interceptor/GateWayInterceptor.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.xydl.cac.interceptor; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.servlet.HandlerInterceptor; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Enumeration; - -@Slf4j -public class GateWayInterceptor implements HandlerInterceptor { - - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - StringBuilder str = new StringBuilder(request.getRequestURI() + " called"); - Enumeration params = request.getParameterNames(); - while (params.hasMoreElements()) { - String paramName = params.nextElement(); - str.append(", ").append(paramName).append("=").append(request.getParameter(paramName)); - } - log.info(str.toString()); - return true; - } - -} From 73f383321c6b9c3da717dbc3134b04c65ec1c2fb Mon Sep 17 00:00:00 2001 From: huangfeng Date: Tue, 16 Jan 2024 16:40:25 +0800 Subject: [PATCH 24/31] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=86=85=E9=83=A8=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/xydl/cac/filter/UrlFilter.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/xydl/cac/filter/UrlFilter.java b/src/main/java/com/xydl/cac/filter/UrlFilter.java index b42b59f..8a27a33 100644 --- a/src/main/java/com/xydl/cac/filter/UrlFilter.java +++ b/src/main/java/com/xydl/cac/filter/UrlFilter.java @@ -1,7 +1,6 @@ package com.xydl.cac.filter; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.compress.utils.Lists; import org.springframework.stereotype.Component; import org.springframework.util.AntPathMatcher; import org.springframework.util.PathMatcher; @@ -12,7 +11,6 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.ArrayList; import java.util.Arrays; import java.util.Enumeration; import java.util.List; @@ -22,8 +20,8 @@ import java.util.List; public class UrlFilter extends OncePerRequestFilter { PathMatcher pathMatcher = new AntPathMatcher(); - private List urlWhiteList = Arrays.asList("/swagger**", "/webjars/**", "/v3/api-docs/**", "/swagger-resources/**", - "/static**"); + private List urlWhiteList = Arrays.asList("/swagger-ui/**", "/swagger-resources/**", "/v3/api-docs/**", + "/static/**"); @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { @@ -35,13 +33,21 @@ public class UrlFilter extends OncePerRequestFilter { } } - StringBuilder str = new StringBuilder(path + " called"); + String method = request.getMethod(); + StringBuilder str = new StringBuilder(method + " " + path + " called"); Enumeration params = request.getParameterNames(); while (params.hasMoreElements()) { String paramName = params.nextElement(); str.append(", ").append(paramName).append("=").append(request.getParameter(paramName)); } log.info(str.toString()); + + if (path.startsWith("/cac-api/")) { + path = path.replace("/cac-api/", "/"); + request.getRequestDispatcher(path).forward(request, response); + return; + } + filterChain.doFilter(request, response); } } From 6d736fe38934b4320e892244425cdb1010151efd Mon Sep 17 00:00:00 2001 From: huangfeng Date: Wed, 17 Jan 2024 10:24:13 +0800 Subject: [PATCH 25/31] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0prod-api?= =?UTF-8?q?=E5=AF=B9=E5=A4=96=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 +++ .../config/SolrProxyServletConfiguration.java | 36 +++++++++++++++++++ src/main/resources/application-dev.yml | 5 +++ src/main/resources/application-prod.yml | 5 +++ 4 files changed, 51 insertions(+) create mode 100644 src/main/java/com/xydl/cac/config/SolrProxyServletConfiguration.java diff --git a/pom.xml b/pom.xml index 5f8836f..3a36075 100644 --- a/pom.xml +++ b/pom.xml @@ -142,6 +142,11 @@ querydsl-apt ${querydsl.version} + + org.mitre.dsmiley.httpproxy + smiley-http-proxy-servlet + 1.12.1 + diff --git a/src/main/java/com/xydl/cac/config/SolrProxyServletConfiguration.java b/src/main/java/com/xydl/cac/config/SolrProxyServletConfiguration.java new file mode 100644 index 0000000..d108b19 --- /dev/null +++ b/src/main/java/com/xydl/cac/config/SolrProxyServletConfiguration.java @@ -0,0 +1,36 @@ +package com.xydl.cac.config; + +import org.mitre.dsmiley.httpproxy.ProxyServlet; +import org.springframework.boot.context.properties.bind.BindResult; +import org.springframework.boot.context.properties.bind.Binder; +import org.springframework.boot.context.properties.source.ConfigurationPropertySources; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.EnvironmentAware; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; + +import java.util.Properties; + +@Configuration +public class SolrProxyServletConfiguration implements EnvironmentAware { + + @Bean + public ServletRegistrationBean servletRegistrationBean() { + Properties properties = (Properties) bindResult.get(); + ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), properties.getProperty("servlet_url")); + servletRegistrationBean.addInitParameter(ProxyServlet.P_TARGET_URI, properties.getProperty("target_url")); + servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, properties.getProperty("logging_enabled", "false")); + return servletRegistrationBean; + } + + private BindResult bindResult; + + @Override + public void setEnvironment(Environment environment) { + Iterable sources = ConfigurationPropertySources.get(environment); + Binder binder = new Binder(sources); + BindResult bindResult = binder.bind("proxy.solr", Properties.class); + this.bindResult = bindResult; + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 9168668..3d58c6a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -24,3 +24,8 @@ spring: multipart: max-file-size: 100MB max-request-size: 100MB + +proxy: + solr: + servlet_url: /prod-api/* + target_url: http://127.0.0.1:8082/ diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 7053936..788ac02 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -24,3 +24,8 @@ spring: multipart: max-file-size: 100MB max-request-size: 100MB + +proxy: + solr: + servlet_url: /prod-api/* + target_url: http://127.0.0.1:8082/ From 831f86158b6353fb134fece7cc9ba4c1a14b066b Mon Sep 17 00:00:00 2001 From: huangfeng Date: Wed, 17 Jan 2024 11:27:31 +0800 Subject: [PATCH 26/31] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/xydl/cac/filter/UrlFilter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/xydl/cac/filter/UrlFilter.java b/src/main/java/com/xydl/cac/filter/UrlFilter.java index 8a27a33..1c8afe1 100644 --- a/src/main/java/com/xydl/cac/filter/UrlFilter.java +++ b/src/main/java/com/xydl/cac/filter/UrlFilter.java @@ -21,7 +21,7 @@ public class UrlFilter extends OncePerRequestFilter { PathMatcher pathMatcher = new AntPathMatcher(); private List urlWhiteList = Arrays.asList("/swagger-ui/**", "/swagger-resources/**", "/v3/api-docs/**", - "/static/**"); + "/static/**", "/newcac/**"); @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { From 7138f5a1a27f59b524797ec191bf052a3c886662 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Wed, 17 Jan 2024 15:05:54 +0800 Subject: [PATCH 27/31] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E4=B8=BB?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=88=A0=E9=99=A4=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/service/impl/ZsbServiceImpl.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java index 58bd4d8..d8555a4 100644 --- a/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java @@ -2,8 +2,10 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.Jg; import com.xydl.cac.entity.Lx; +import com.xydl.cac.entity.Modev; import com.xydl.cac.entity.Zsb; import com.xydl.cac.repository.LxRepository; +import com.xydl.cac.repository.ModevRepository; import com.xydl.cac.repository.ZsbRepository; import com.xydl.cac.service.JgService; import com.xydl.cac.service.ZsbService; @@ -27,6 +29,8 @@ public class ZsbServiceImpl implements ZsbService { JgService jgService; @Resource LxRepository lxRepository; + @Resource + ModevRepository modevRepository; @Override public List listAll(Integer jgid) throws Exception { @@ -111,6 +115,10 @@ public class ZsbServiceImpl implements ZsbService { @Override public void delete(Integer id) throws Exception { + List modevList = modevRepository.findByZsbid(id); + if (!CollectionUtils.isEmpty(modevList)) { + throw new Exception("已被监测装置使用不能删除"); + } repository.deleteById(id); } From 220608341ab0552f49f53588789ea018a583dded Mon Sep 17 00:00:00 2001 From: huangfeng Date: Wed, 17 Jan 2024 15:40:07 +0800 Subject: [PATCH 28/31] =?UTF-8?q?perf:=20=E5=BD=92=E7=B1=BB=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xydl/cac/controller/BdzController.java | 3 +- .../com/xydl/cac/controller/JgController.java | 3 +- .../com/xydl/cac/controller/LxController.java | 3 +- .../xydl/cac/controller/ModevController.java | 3 +- .../cac/controller/ModevTypeController.java | 3 +- .../xydl/cac/controller/ZsbController.java | 3 +- .../xydl/cac/exception/BusinessException.java | 8 +++++ .../cac/exception/GlobalExceptionHandler.java | 9 +++++- .../xydl/cac/service/impl/BdzServiceImpl.java | 7 +++-- .../impl/IcdFileConfigServiceImpl.java | 5 +-- .../xydl/cac/service/impl/JgServiceImpl.java | 13 ++++---- .../xydl/cac/service/impl/LxServiceImpl.java | 5 +-- .../cac/service/impl/ModevServiceImpl.java | 9 +++--- .../service/impl/ModevTypeServiceImpl.java | 7 +++-- .../service/impl/NiecSensorServiceImpl.java | 13 ++++---- .../service/impl/ParamBindServiceImpl.java | 31 ++++++++++--------- .../xydl/cac/service/impl/ZsbServiceImpl.java | 13 ++++---- .../java/com/xydl/cac/util/IcdXmlUtil.java | 3 +- 18 files changed, 86 insertions(+), 55 deletions(-) create mode 100644 src/main/java/com/xydl/cac/exception/BusinessException.java diff --git a/src/main/java/com/xydl/cac/controller/BdzController.java b/src/main/java/com/xydl/cac/controller/BdzController.java index 991f2e4..85eab39 100644 --- a/src/main/java/com/xydl/cac/controller/BdzController.java +++ b/src/main/java/com/xydl/cac/controller/BdzController.java @@ -1,6 +1,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.Bdz; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.Response; import com.xydl.cac.service.BdzService; import io.swagger.annotations.Api; @@ -40,7 +41,7 @@ public class BdzController extends BasicController { @ApiOperation("更新") public Response update(@Validated @RequestBody Bdz item) throws Exception { if (item.getId() == null) { - throw new Exception("ID不能为空!"); + throw new BusinessException("ID不能为空!"); } service.update(item); return Response.success("OK"); diff --git a/src/main/java/com/xydl/cac/controller/JgController.java b/src/main/java/com/xydl/cac/controller/JgController.java index b262c40..3b09309 100644 --- a/src/main/java/com/xydl/cac/controller/JgController.java +++ b/src/main/java/com/xydl/cac/controller/JgController.java @@ -1,6 +1,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.Jg; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.Response; import com.xydl.cac.service.JgService; import io.swagger.annotations.Api; @@ -40,7 +41,7 @@ public class JgController extends BasicController { @ApiOperation("更新") public Response update(@Validated @RequestBody Jg item) throws Exception { if (item.getId() == null) { - throw new Exception("ID不能为空!"); + throw new BusinessException("ID不能为空!"); } service.update(item); return Response.success("OK"); diff --git a/src/main/java/com/xydl/cac/controller/LxController.java b/src/main/java/com/xydl/cac/controller/LxController.java index 4be5b10..b281184 100644 --- a/src/main/java/com/xydl/cac/controller/LxController.java +++ b/src/main/java/com/xydl/cac/controller/LxController.java @@ -1,6 +1,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.Lx; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.Response; import com.xydl.cac.service.LxService; import io.swagger.annotations.Api; @@ -40,7 +41,7 @@ public class LxController extends BasicController { @ApiOperation("更新") public Response update(@Validated @RequestBody Lx item) throws Exception { if (item.getId() == null) { - throw new Exception("ID不能为空!"); + throw new BusinessException("ID不能为空!"); } service.update(item); return Response.success("OK"); diff --git a/src/main/java/com/xydl/cac/controller/ModevController.java b/src/main/java/com/xydl/cac/controller/ModevController.java index 655a3e1..8d97447 100644 --- a/src/main/java/com/xydl/cac/controller/ModevController.java +++ b/src/main/java/com/xydl/cac/controller/ModevController.java @@ -2,6 +2,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.Modev; import com.xydl.cac.entity.ModevType; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.Response; import com.xydl.cac.service.ModevService; import com.xydl.cac.service.ModevTypeService; @@ -43,7 +44,7 @@ public class ModevController extends BasicController { @ApiOperation("更新") public Response update(@Validated @RequestBody Modev item) throws Exception { if (item.getId() == null) { - throw new Exception("ID不能为空!"); + throw new BusinessException("ID不能为空!"); } service.update(item); return Response.success("OK"); diff --git a/src/main/java/com/xydl/cac/controller/ModevTypeController.java b/src/main/java/com/xydl/cac/controller/ModevTypeController.java index 8e3226f..0eb86d2 100644 --- a/src/main/java/com/xydl/cac/controller/ModevTypeController.java +++ b/src/main/java/com/xydl/cac/controller/ModevTypeController.java @@ -1,6 +1,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.ModevType; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.Response; import com.xydl.cac.service.ModevTypeService; import io.swagger.annotations.Api; @@ -40,7 +41,7 @@ public class ModevTypeController extends BasicController { @ApiOperation("更新") public Response update(@Validated @RequestBody ModevType item) throws Exception { if (item.getId() == null) { - throw new Exception("ID不能为空!"); + throw new BusinessException("ID不能为空!"); } service.update(item); return Response.success("OK"); diff --git a/src/main/java/com/xydl/cac/controller/ZsbController.java b/src/main/java/com/xydl/cac/controller/ZsbController.java index 8a23896..83ff7a7 100644 --- a/src/main/java/com/xydl/cac/controller/ZsbController.java +++ b/src/main/java/com/xydl/cac/controller/ZsbController.java @@ -1,6 +1,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.Zsb; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.Response; import com.xydl.cac.service.ZsbService; import io.swagger.annotations.Api; @@ -40,7 +41,7 @@ public class ZsbController extends BasicController { @ApiOperation("更新") public Response update(@Validated @RequestBody Zsb item) throws Exception { if (item.getId() == null) { - throw new Exception("ID不能为空!"); + throw new BusinessException("ID不能为空!"); } service.update(item); return Response.success("OK"); diff --git a/src/main/java/com/xydl/cac/exception/BusinessException.java b/src/main/java/com/xydl/cac/exception/BusinessException.java new file mode 100644 index 0000000..a5e9710 --- /dev/null +++ b/src/main/java/com/xydl/cac/exception/BusinessException.java @@ -0,0 +1,8 @@ +package com.xydl.cac.exception; + +public class BusinessException extends Exception { + + public BusinessException(String message) { + super(message); + } +} diff --git a/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java b/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java index a7c0d99..7bf68f5 100644 --- a/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java @@ -24,11 +24,18 @@ public class GlobalExceptionHandler { } @ExceptionHandler(HttpMessageConversionException.class) - public Response handleValidationExceptions(HttpMessageConversionException ex) { + public Response handleHttpMessageConversionException(HttpMessageConversionException ex) { String message = "类型转换异常:" + ex.getRootCause().getLocalizedMessage(); return Response.fail(message); } + @ExceptionHandler(Exception.class) + public Response handleBusinessException(BusinessException ex) { + String message = ex.getMessage(); + log.error(message); + return Response.fail(message); + } + @ExceptionHandler(Exception.class) public Response handleException(Exception ex) { log.error("", ex); diff --git a/src/main/java/com/xydl/cac/service/impl/BdzServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/BdzServiceImpl.java index 49acb74..7e1e138 100644 --- a/src/main/java/com/xydl/cac/service/impl/BdzServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/BdzServiceImpl.java @@ -2,6 +2,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.Bdz; import com.xydl.cac.entity.Jg; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.BdzRepository; import com.xydl.cac.repository.JgRepository; import com.xydl.cac.service.BdzService; @@ -33,7 +34,7 @@ public class BdzServiceImpl implements BdzService { item.setId(null); List list = repository.findByMc(item.getMc()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } return repository.save(item); } @@ -42,7 +43,7 @@ public class BdzServiceImpl implements BdzService { public void update(Bdz item) throws Exception { List list = repository.findByMcAndIdIsNot(item.getMc(), item.getId()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } repository.save(item); } @@ -51,7 +52,7 @@ public class BdzServiceImpl implements BdzService { public void delete(Integer id) throws Exception { List jgList = jgRepository.findByBdzid(id); if (!CollectionUtils.isEmpty(jgList)) { - throw new Exception("已被区域使用不能删除"); + throw new BusinessException("已被区域使用不能删除"); } repository.deleteById(id); } diff --git a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java index ca186a0..5d46c60 100644 --- a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java @@ -1,6 +1,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.*; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.*; import com.xydl.cac.service.IcdFileConfigService; import com.xydl.cac.util.IcdXmlUtil; @@ -97,7 +98,7 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { public void update(IcdConfigType item) throws Exception { Optional optional = repository.findById(item.getId()); if (!optional.isPresent()) { - throw new Exception("未找到该项"); + throw new BusinessException("未找到该项"); } IcdConfigType r = optional.get(); if (r.getTableName() != null && !r.getTableName().equals(item.getTableName())) { @@ -115,7 +116,7 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { public void updateAtt(IcdConfigTypeAtt item) throws Exception { Optional optional = attRepository.findById(item.getId()); if (!optional.isPresent()) { - throw new Exception("未找到该项"); + throw new BusinessException("未找到该项"); } IcdConfigTypeAtt r = optional.get(); r.setColName(item.getColName()); diff --git a/src/main/java/com/xydl/cac/service/impl/JgServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/JgServiceImpl.java index 23e9272..b0be02c 100644 --- a/src/main/java/com/xydl/cac/service/impl/JgServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/JgServiceImpl.java @@ -3,6 +3,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.Bdz; import com.xydl.cac.entity.Jg; import com.xydl.cac.entity.Zsb; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.BdzRepository; import com.xydl.cac.repository.JgRepository; import com.xydl.cac.repository.ZsbRepository; @@ -65,11 +66,11 @@ public class JgServiceImpl implements JgService { item.setId(null); Optional optionalBdz = bdzRepository.findById(item.getBdzid()); if (!optionalBdz.isPresent()) { - throw new Exception("未找到该变电站"); + throw new BusinessException("未找到该变电站"); } List list = repository.findByBdzidAndMc(item.getBdzid(), item.getMc()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } return repository.save(item); } @@ -78,11 +79,11 @@ public class JgServiceImpl implements JgService { public void update(Jg item) throws Exception { Optional optionalBdz = bdzRepository.findById(item.getBdzid()); if (!optionalBdz.isPresent()) { - throw new Exception("未找到该变电站"); + throw new BusinessException("未找到该变电站"); } List list = repository.findByBdzidAndMcAndIdIsNot(item.getBdzid(), item.getMc(), item.getId()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } repository.save(item); } @@ -91,7 +92,7 @@ public class JgServiceImpl implements JgService { public void delete(Integer id) throws Exception { List zsbList = zsbRepository.findByJgid(id); if (!CollectionUtils.isEmpty(zsbList)) { - throw new Exception("已被主设备使用不能删除"); + throw new BusinessException("已被主设备使用不能删除"); } repository.deleteById(id); } @@ -100,7 +101,7 @@ public class JgServiceImpl implements JgService { public Jg detail(Integer id) throws Exception { Optional optional = repository.findById(id); if (!optional.isPresent()) { - throw new Exception("未找到该区域"); + throw new BusinessException("未找到该区域"); } Jg jg = optional.get(); Optional optionalBdz = bdzRepository.findById(jg.getBdzid()); diff --git a/src/main/java/com/xydl/cac/service/impl/LxServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/LxServiceImpl.java index c355042..c195a8d 100644 --- a/src/main/java/com/xydl/cac/service/impl/LxServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/LxServiceImpl.java @@ -1,6 +1,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.Lx; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.LxRepository; import com.xydl.cac.service.LxService; import lombok.extern.slf4j.Slf4j; @@ -29,7 +30,7 @@ public class LxServiceImpl implements LxService { item.setId(null); List list = repository.findByMc(item.getMc()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } return repository.save(item); } @@ -38,7 +39,7 @@ public class LxServiceImpl implements LxService { public void update(Lx item) throws Exception { List list = repository.findByMcAndIdIsNot(item.getMc(), item.getId()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } repository.save(item); } diff --git a/src/main/java/com/xydl/cac/service/impl/ModevServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ModevServiceImpl.java index d0cfa1e..3877dfd 100644 --- a/src/main/java/com/xydl/cac/service/impl/ModevServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ModevServiceImpl.java @@ -3,6 +3,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.Modev; import com.xydl.cac.entity.ModevType; import com.xydl.cac.entity.Zsb; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.ModevRepository; import com.xydl.cac.repository.ModevTypeRepository; import com.xydl.cac.repository.ZsbRepository; @@ -52,7 +53,7 @@ public class ModevServiceImpl implements ModevService { item.setId(null); List byZsbidAndName = repository.findByZsbidAndName(item.getZsbid(), item.getName()); if (!CollectionUtils.isEmpty(byZsbidAndName)) { - throw new Exception("该监测装置已存在"); + throw new BusinessException("该监测装置已存在"); } return repository.save(item); } @@ -63,7 +64,7 @@ public class ModevServiceImpl implements ModevService { if (!CollectionUtils.isEmpty(byMc)) { for (Modev it : byMc) { if (it.getId().intValue() != item.getId().intValue()) { - throw new Exception("该监测装置类型已存在"); + throw new BusinessException("该监测装置类型已存在"); } } } @@ -79,7 +80,7 @@ public class ModevServiceImpl implements ModevService { public Modev detail(Integer id) throws Exception { Optional optional = repository.findById(id); if (!optional.isPresent()) { - throw new Exception("未找到该类型"); + throw new BusinessException("未找到该类型"); } return optional.get(); } @@ -92,7 +93,7 @@ public class ModevServiceImpl implements ModevService { entity.setIcdid(icdid); repository.save(entity); } else { - throw new Exception("未找到对应的检测装置"); + throw new BusinessException("未找到对应的检测装置"); } } } diff --git a/src/main/java/com/xydl/cac/service/impl/ModevTypeServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ModevTypeServiceImpl.java index 8bf4cb2..cc1fd36 100644 --- a/src/main/java/com/xydl/cac/service/impl/ModevTypeServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ModevTypeServiceImpl.java @@ -1,6 +1,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.ModevType; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.ModevTypeRepository; import com.xydl.cac.service.ModevTypeService; import lombok.extern.slf4j.Slf4j; @@ -30,7 +31,7 @@ public class ModevTypeServiceImpl implements ModevTypeService { item.setId(null); List byMc = repository.findByMc(item.getMc()); if (!CollectionUtils.isEmpty(byMc)) { - throw new Exception("该监测装置类型已存在"); + throw new BusinessException("该监测装置类型已存在"); } return repository.save(item); } @@ -41,7 +42,7 @@ public class ModevTypeServiceImpl implements ModevTypeService { if (!CollectionUtils.isEmpty(byMc)) { for (ModevType it : byMc) { if (it.getId().intValue() != item.getId().intValue()) { - throw new Exception("该监测装置类型已存在"); + throw new BusinessException("该监测装置类型已存在"); } } } @@ -57,7 +58,7 @@ public class ModevTypeServiceImpl implements ModevTypeService { public ModevType detail(Integer id) throws Exception { Optional optional = repository.findById(id); if (!optional.isPresent()) { - throw new Exception("未找到该类型"); + throw new BusinessException("未找到该类型"); } return optional.get(); } diff --git a/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java index 059e875..ee75c85 100644 --- a/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java @@ -2,6 +2,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.NiecPoint; import com.xydl.cac.entity.NiecSensor; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.ConditionModel; import com.xydl.cac.model.OnePage; import com.xydl.cac.model.SensorDetail; @@ -73,24 +74,24 @@ public class NiecSensorServiceImpl implements NiecSensorService { public SensorDetail> getDetail(ConditionModel model) throws Exception { Optional optional = repository.findById(model.getId()); if (!optional.isPresent()) { - throw new Exception("未找到该装置"); + throw new BusinessException("未找到该装置"); } NiecSensor sensor = optional.get(); if (StringUtils.isBlank(sensor.getDtimeFieldName())) { - throw new Exception("该装置缺少采样时间字段名信息"); + throw new BusinessException("该装置缺少采样时间字段名信息"); } if (StringUtils.isBlank(sensor.getTableName())) { - throw new Exception("该装置缺少table_name信息"); + throw new BusinessException("该装置缺少table_name信息"); } if (StringUtils.isBlank(sensor.getDevidFieldName())) { - throw new Exception("该装置缺少sensor_id的字段名信息"); + throw new BusinessException("该装置缺少sensor_id的字段名信息"); } if (sensor.getDevId() == null) { - throw new Exception("该装置缺少dev_id信息"); + throw new BusinessException("该装置缺少dev_id信息"); } List points = pointService.getList(sensor.getId(), 2); if (CollectionUtils.isEmpty(points)) { - throw new Exception("该装置缺少业务点表配置信息"); + throw new BusinessException("该装置缺少业务点表配置信息"); } SensorDetail> result = this.getData(sensor, points, model); diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index 4417fa7..70977eb 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -1,6 +1,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.*; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.BindDetail; import com.xydl.cac.model.BindingModel; import com.xydl.cac.model.ColumnModel; @@ -87,22 +88,22 @@ public class ParamBindServiceImpl implements ParamBindService { public Response preview(BindingModel item) throws Exception { Optional optionalModev = modevRepository.findById(item.getEqmid()); if (!optionalModev.isPresent()) { - throw new Exception("未找到该监测装置, eqmid=" + item.getEqmid()); + throw new BusinessException("未找到该监测装置, eqmid=" + item.getEqmid()); } Modev modev = optionalModev.get(); Optional optionalModevType = modevTypeRepository.findById(modev.getModevtid()); if (!optionalModevType.isPresent()) { - throw new Exception("该监测装置类型不正确, 请先修正"); + throw new BusinessException("该监测装置类型不正确, 请先修正"); } ModevType modevType = optionalModevType.get(); Optional optionalInst = instRepository.findById(item.getIcdid()); if (!optionalInst.isPresent()) { - throw new Exception("未找到该ICD逻辑设备实例, icdid=" + item.getIcdid()); + throw new BusinessException("未找到该ICD逻辑设备实例, icdid=" + item.getIcdid()); } IcdConfigTypeInst inst = optionalInst.get(); Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); if (!optionalType.isPresent()) { - throw new Exception("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdid()); + throw new BusinessException("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdid()); } IcdConfigType type = optionalType.get(); @@ -117,7 +118,7 @@ public class ParamBindServiceImpl implements ParamBindService { // String paramindex = param + "$" + att.getParam(); // Optional optionalRpt = rptparamindexRepository.findById(paramindex); // if (!optionalRpt.isPresent()) { -// throw new Exception("未找到该Rptparamindex,对象参引=" + paramindex); +// throw new BusinessException("未找到该Rptparamindex,对象参引=" + paramindex); // } } } @@ -139,24 +140,24 @@ public class ParamBindServiceImpl implements ParamBindService { public void bind(BindingModel item) throws Exception { Optional optionalModev = modevRepository.findById(item.getEqmid()); if (!optionalModev.isPresent()) { - throw new Exception("未找到该监测装置, eqmid=" + item.getEqmid()); + throw new BusinessException("未找到该监测装置, eqmid=" + item.getEqmid()); } Modev modev = optionalModev.get(); Optional optionalInst = instRepository.findById(item.getIcdid()); if (!optionalInst.isPresent()) { - throw new Exception("未找到该ICD逻辑设备实例, icdid=" + item.getIcdid()); + throw new BusinessException("未找到该ICD逻辑设备实例, icdid=" + item.getIcdid()); } IcdConfigTypeInst inst = optionalInst.get(); Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); if (!optionalType.isPresent()) { - throw new Exception("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdid()); + throw new BusinessException("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdid()); } IcdConfigType type = optionalType.get(); List list = modevRepository.findByIcdidAndIdIsNot(item.getIcdid(), item.getEqmid()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该逻辑设备实例已被" + list.get(0).getName() + "绑定"); + throw new BusinessException("该逻辑设备实例已被" + list.get(0).getName() + "绑定"); } List attList = attRepository.findByIcdConfigTypeId(type.getId()); @@ -175,7 +176,7 @@ public class ParamBindServiceImpl implements ParamBindService { } } if (!found) { - throw new Exception("当前监控设备对应的表" + modevType.getTablename() + "里不存在配置属性" + throw new BusinessException("当前监控设备对应的表" + modevType.getTablename() + "里不存在配置属性" + att.getDoName() + "绑定的字段" + att.getColName()); } } @@ -191,7 +192,7 @@ public class ParamBindServiceImpl implements ParamBindService { public void unbind(Integer eqmid) throws Exception { Optional optionalModev = modevRepository.findById(eqmid); if (!optionalModev.isPresent()) { - throw new Exception("未找到该监测装置, eqmid=" + eqmid); + throw new BusinessException("未找到该监测装置, eqmid=" + eqmid); } Modev modev = optionalModev.get(); modev.setIcdid(null); @@ -202,7 +203,7 @@ public class ParamBindServiceImpl implements ParamBindService { public BindDetail getBind(Integer eqmid) throws Exception { Optional optionalModev = modevRepository.findById(eqmid); if (!optionalModev.isPresent()) { - throw new Exception("未找到该监测装置"); + throw new BusinessException("未找到该监测装置"); } Modev modev = optionalModev.get(); @@ -248,12 +249,12 @@ public class ParamBindServiceImpl implements ParamBindService { private void generateOne(Modev item) throws Exception { Optional optionalInst = instRepository.findById(item.getIcdid()); if (!optionalInst.isPresent()) { - throw new Exception("未找到该ICD逻辑设备实例, eqmid=" + item.getId() + ", icdid=" + item.getIcdid()); + throw new BusinessException("未找到该ICD逻辑设备实例, eqmid=" + item.getId() + ", icdid=" + item.getIcdid()); } IcdConfigTypeInst inst = optionalInst.get(); Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); if (!optionalType.isPresent()) { - throw new Exception("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdid()); + throw new BusinessException("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdid()); } IcdConfigType type = optionalType.get(); String param = type.getIedName() + type.getLdeviceInst() + "/" + type.getLnClass() @@ -264,7 +265,7 @@ public class ParamBindServiceImpl implements ParamBindService { String paramindex = param + "$" + att.getParam(); Optional optionalRpt = rptparamindexRepository.findById(paramindex); if (!optionalRpt.isPresent()) { - throw new Exception(item.getName() + "的字段" + att.getColName() + "对应的属性" + throw new BusinessException(item.getName() + "的字段" + att.getColName() + "对应的属性" + att.getDoName() + ",未找到该Rptparamindex,对象参引=" + paramindex); } Rptparamindex rpt = optionalRpt.get(); diff --git a/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java index d8555a4..9457251 100644 --- a/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java @@ -4,6 +4,7 @@ import com.xydl.cac.entity.Jg; import com.xydl.cac.entity.Lx; import com.xydl.cac.entity.Modev; import com.xydl.cac.entity.Zsb; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.LxRepository; import com.xydl.cac.repository.ModevRepository; import com.xydl.cac.repository.ZsbRepository; @@ -89,11 +90,11 @@ public class ZsbServiceImpl implements ZsbService { item.setBdzid(jg.getBdzid()); Optional optionalLx = lxRepository.findById(item.getLxid()); if (!optionalLx.isPresent()) { - throw new Exception("未找到该设备类型"); + throw new BusinessException("未找到该设备类型"); } List list = repository.findByJgidAndMc(item.getJgid(), item.getMc()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } return repository.save(item); } @@ -104,11 +105,11 @@ public class ZsbServiceImpl implements ZsbService { item.setBdzid(jg.getBdzid()); Optional optionalLx = lxRepository.findById(item.getLxid()); if (!optionalLx.isPresent()) { - throw new Exception("未找到该设备类型"); + throw new BusinessException("未找到该设备类型"); } List list = repository.findByJgidAndMcAndIdIsNot(item.getJgid(), item.getMc(), item.getId()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } repository.save(item); } @@ -117,7 +118,7 @@ public class ZsbServiceImpl implements ZsbService { public void delete(Integer id) throws Exception { List modevList = modevRepository.findByZsbid(id); if (!CollectionUtils.isEmpty(modevList)) { - throw new Exception("已被监测装置使用不能删除"); + throw new BusinessException("已被监测装置使用不能删除"); } repository.deleteById(id); } @@ -126,7 +127,7 @@ public class ZsbServiceImpl implements ZsbService { public Zsb detail(Integer id) throws Exception { Optional optional = repository.findById(id); if (!optional.isPresent()) { - throw new Exception("未找到该主设备"); + throw new BusinessException("未找到该主设备"); } Zsb zsb = optional.get(); Jg jg = jgService.detail(zsb.getJgid()); diff --git a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java index 7eaa1e0..ae1412d 100644 --- a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java +++ b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import com.xydl.cac.entity.IcdConfigType; +import com.xydl.cac.exception.BusinessException; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; @@ -19,7 +20,7 @@ public class IcdXmlUtil { try { root = xmlMapper.readTree(xml); } catch (Exception ex) { - throw new Exception("ICD文件解析失败,请上传正确的xml类型文件"); + throw new BusinessException("ICD文件解析失败,请上传正确的xml类型文件"); } LinkedHashMap result = processTypeRoot(root); return result; From 76291ecf07662b4be6413cdac163971f4057d096 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 18 Jan 2024 09:10:17 +0800 Subject: [PATCH 29/31] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=B8=85?= =?UTF-8?q?=E7=A9=BA=E6=89=80=E6=9C=89=E7=BB=91=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/controller/ParamBindController.java | 7 +++++++ src/main/java/com/xydl/cac/service/DataService.java | 2 ++ src/main/java/com/xydl/cac/service/ParamBindService.java | 2 ++ .../java/com/xydl/cac/service/impl/DataServiceImpl.java | 6 ++++++ .../com/xydl/cac/service/impl/ParamBindServiceImpl.java | 6 ++++++ 5 files changed, 23 insertions(+) diff --git a/src/main/java/com/xydl/cac/controller/ParamBindController.java b/src/main/java/com/xydl/cac/controller/ParamBindController.java index 5c246bd..0ea1e93 100644 --- a/src/main/java/com/xydl/cac/controller/ParamBindController.java +++ b/src/main/java/com/xydl/cac/controller/ParamBindController.java @@ -75,4 +75,11 @@ public class ParamBindController extends BasicController { return Response.success("OK"); } + @PostMapping("clearAll") + @ApiOperation("清空所有绑定") + public Response clearAll() throws Exception { + bindService.clearAll(); + return Response.success("OK"); + } + } diff --git a/src/main/java/com/xydl/cac/service/DataService.java b/src/main/java/com/xydl/cac/service/DataService.java index 0b60daf..d6899d6 100644 --- a/src/main/java/com/xydl/cac/service/DataService.java +++ b/src/main/java/com/xydl/cac/service/DataService.java @@ -14,4 +14,6 @@ public interface DataService { List getDataTableColumns(String tableName) throws Exception; OnePage> getDate(NiecSensor sensor, List points, ConditionModel model); + + void clearAllBind(); } diff --git a/src/main/java/com/xydl/cac/service/ParamBindService.java b/src/main/java/com/xydl/cac/service/ParamBindService.java index dc972c2..9d19c57 100644 --- a/src/main/java/com/xydl/cac/service/ParamBindService.java +++ b/src/main/java/com/xydl/cac/service/ParamBindService.java @@ -23,4 +23,6 @@ public interface ParamBindService { BindDetail getBind(Integer eqmid) throws Exception; void generateParamindex() throws Exception; + + void clearAll(); } diff --git a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java index 5da59e4..c7609cc 100644 --- a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java @@ -121,4 +121,10 @@ public class DataServiceImpl implements DataService { result.setContent(content); return result; } + + @Override + public void clearAllBind() { + String sql = "UPDATE modev SET icdid=null"; + jdbcTemplate.execute(sql); + } } diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index 70977eb..9f03ea8 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -276,4 +276,10 @@ public class ParamBindServiceImpl implements ParamBindService { } } } + + @Override + public void clearAll() { + dataService.clearAllBind(); + } + } From 4d6cf728e068c7208d068f6114a950476dfad3e1 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 18 Jan 2024 09:22:57 +0800 Subject: [PATCH 30/31] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=B8=85?= =?UTF-8?q?=E7=A9=BA=E6=89=80=E6=9C=89icd=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/controller/IcdConfigController.java | 7 +++++++ .../com/xydl/cac/exception/GlobalExceptionHandler.java | 2 +- .../java/com/xydl/cac/service/IcdFileConfigService.java | 2 ++ .../xydl/cac/service/impl/IcdFileConfigServiceImpl.java | 7 +++++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/xydl/cac/controller/IcdConfigController.java b/src/main/java/com/xydl/cac/controller/IcdConfigController.java index 854ab34..e4251d4 100644 --- a/src/main/java/com/xydl/cac/controller/IcdConfigController.java +++ b/src/main/java/com/xydl/cac/controller/IcdConfigController.java @@ -98,4 +98,11 @@ public class IcdConfigController extends BasicController { return Response.success(result); } + @PostMapping("clearAll") + @ApiOperation("清空所有配置") + public Response clearAll() throws Exception { + configService.clearAll(); + return Response.success("OK"); + } + } diff --git a/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java b/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java index 7bf68f5..799db64 100644 --- a/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java @@ -29,7 +29,7 @@ public class GlobalExceptionHandler { return Response.fail(message); } - @ExceptionHandler(Exception.class) + @ExceptionHandler(BusinessException.class) public Response handleBusinessException(BusinessException ex) { String message = ex.getMessage(); log.error(message); diff --git a/src/main/java/com/xydl/cac/service/IcdFileConfigService.java b/src/main/java/com/xydl/cac/service/IcdFileConfigService.java index 421b975..86e4027 100644 --- a/src/main/java/com/xydl/cac/service/IcdFileConfigService.java +++ b/src/main/java/com/xydl/cac/service/IcdFileConfigService.java @@ -20,4 +20,6 @@ public interface IcdFileConfigService { void delete(Integer id); void deleteAtt(Integer attid); + + void clearAll(); } diff --git a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java index 5d46c60..75a119d 100644 --- a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java @@ -135,4 +135,11 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { attRepository.deleteById(attid); } + @Override + public void clearAll() { + instRepository.deleteAll(); + attRepository.deleteAll(); + repository.deleteAll(); + } + } From 5487bdb333f785bb7a3f96fb05a34146518e43ea Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 18 Jan 2024 14:51:14 +0800 Subject: [PATCH 31/31] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=94=9F?= =?UTF-8?q?=E6=88=90rptparamindex=E7=9A=84=E6=AD=A3=E7=A1=AE=E5=92=8C?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/controller/ParamBindController.java | 4 ++-- src/main/java/com/xydl/cac/service/ParamBindService.java | 2 +- .../java/com/xydl/cac/service/impl/ParamBindServiceImpl.java | 5 ++++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/xydl/cac/controller/ParamBindController.java b/src/main/java/com/xydl/cac/controller/ParamBindController.java index 0ea1e93..f3bf421 100644 --- a/src/main/java/com/xydl/cac/controller/ParamBindController.java +++ b/src/main/java/com/xydl/cac/controller/ParamBindController.java @@ -71,8 +71,8 @@ public class ParamBindController extends BasicController { @PostMapping("generateParamindex") @ApiOperation("生成rptparamindex表的相关绑定数据") public Response generateParamindex() throws Exception { - bindService.generateParamindex(); - return Response.success("OK"); + String msg = bindService.generateParamindex(); + return Response.success(msg); } @PostMapping("clearAll") diff --git a/src/main/java/com/xydl/cac/service/ParamBindService.java b/src/main/java/com/xydl/cac/service/ParamBindService.java index 9d19c57..a0dc234 100644 --- a/src/main/java/com/xydl/cac/service/ParamBindService.java +++ b/src/main/java/com/xydl/cac/service/ParamBindService.java @@ -22,7 +22,7 @@ public interface ParamBindService { BindDetail getBind(Integer eqmid) throws Exception; - void generateParamindex() throws Exception; + String generateParamindex() throws Exception; void clearAll(); } diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index 9f03ea8..da8d110 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -237,12 +237,15 @@ public class ParamBindServiceImpl implements ParamBindService { } @Override - public void generateParamindex() throws Exception { + public String generateParamindex() throws Exception { List modevList = modevRepository.findByIcdidIsNotNull(); if (!CollectionUtils.isEmpty(modevList)) { for (Modev item : modevList) { generateOne(item); } + return "已对" + modevList.size() + "条绑定数据生成对应的61850参引数据"; + } else { + throw new BusinessException("无任何绑定数据"); } }