From 4d8ed146761d1d0f25b3ee82945170e3cd97be37 Mon Sep 17 00:00:00 2001 From: liao Date: Tue, 19 Sep 2023 14:12:52 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E4=BB=A3=E6=9B=BF=E6=A0=87=E5=87=86?= =?UTF-8?q?=E5=8F=B7=E3=80=81=E8=A2=AB=E4=BB=A3=E6=9B=BF=E6=A0=87=E5=87=86?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/20230905标准法规库.sql | 11 ++ .../laws/common/constant/FieldCommon.java | 12 +- .../service/impl/LawsCommonServiceImpl.java | 88 +++++++++++++-- .../controller/LawsDomesticController.java | 3 - .../standard/entity/LawsReplacedStandard.java | 45 ++++++++ .../mapper/LawsReplacedStandardMapper.java | 14 +++ .../mapper/xml/LawsReplacedStandardMapper.xml | 10 ++ .../service/ILawsReplacedStandardService.java | 42 +++++++ .../impl/LawsReplacedStandardServiceImpl.java | 104 ++++++++++++++++++ 9 files changed, 312 insertions(+), 17 deletions(-) create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/standard/entity/LawsReplacedStandard.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/standard/mapper/LawsReplacedStandardMapper.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/standard/mapper/xml/LawsReplacedStandardMapper.xml create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/standard/service/ILawsReplacedStandardService.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsReplacedStandardServiceImpl.java diff --git a/db/20230905标准法规库.sql b/db/20230905标准法规库.sql index 2c985785..d716584a 100644 --- a/db/20230905标准法规库.sql +++ b/db/20230905标准法规库.sql @@ -187,4 +187,15 @@ CREATE TABLE `laws_update_record` alter table laws_update_record comment '更新记录'; +DROP TABLE IF EXISTS `laws_replaced_standard`; +CREATE TABLE `laws_replaced_standard` +( + `id` varchar(36) NOT NULL PRIMARY KEY COMMENT '主键ID', + `replaced` varchar(50) COMMENT '代替标准', + `replaced_by` varchar(50) COMMENT '被代替标准', + `type` int(1) COMMENT '类型(1-代替、2-引用)' +) COMMENT = '代替标准'; +alter table laws_replaced_standard + comment '代替标准'; + diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java index 45f4c5dd..9983fb7f 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java @@ -60,12 +60,20 @@ public class FieldCommon { public static final String STANDARD_SYSTEM = "standard_system"; // 标准类别 public static final String STANDARD_CLASS = "standard_class"; + + // 代替标准号 + public static final String REPLACED_STANDARD = "substitute_standard_number"; + // 被代替标准号 + public static final String REPLACED_BY_STANDARD = "replaced_by_standard_number"; + // 引用标准 + public static final String REFERENCE_STANDARD = "reference_standard"; + // 被引用标准 + public static final String REFERENCED_STANDARD = "referenced_standard"; + // 字典值统一后缀 public static final String _DICT_TEXT = "_dictText"; // 树节点编码 public static final String NODE_CODE = "nodeCode"; - // 分隔符 - public static final String SEPARATOR = ","; // 中文双引号 public static final String QUOTE = "“"; diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java index 3a4f31cb..5fd4a396 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java @@ -16,6 +16,7 @@ import com.jero.modules.laws.common.vo.ManyStandardSelectionBox; import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO; import com.jero.modules.laws.standard.entity.LawsNodeRelation; import com.jero.modules.laws.standard.service.ILawsNodeRelationService; +import com.jero.modules.laws.standard.service.ILawsReplacedStandardService; import com.jero.modules.laws.standard.service.ILawsUpdateRecordService; import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.service.IOSSFileService; @@ -70,6 +71,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService { private ISysDictItemService sysDictItemService; @Autowired private ILawsNodeRelationService lawsNodeRelationService; + @Autowired + private ILawsReplacedStandardService lawsReplacedStandardService; /** * @Author: liao @@ -152,6 +155,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService { List dictItemList = getDictItemList(fieldList); Map resultMap = new LinkedHashMap<>(); String id = (String) initMap.get("id"); + String standardNumber = (String) initMap.get(FieldCommon.STANDARD_NUMBER); for (Map.Entry entryMap : initMap.entrySet()) { String key = entryMap.getKey(); String value = ""; @@ -165,22 +169,47 @@ public class LawsCommonServiceImpl implements ILawsCommonService { // 对返回的字段值做处理 processResultFieldValue(key, value, fieldList, resultMap, dictItemList); } - // 如果是标准体系(单独处理) - if (FieldCommon.STANDARD_SYSTEM.equals(key)) { - List nodeRelationList = lawsNodeRelationService.getListByStandardId(id); - if (CollectionUtils.isNotEmpty(nodeRelationList)) { - List nodeIdList = nodeRelationList.stream() - .map(LawsNodeRelation::getNodeId).collect(Collectors.toList()); - List nodeNameList = nodeRelationList.stream() - .map(LawsNodeRelation::getNodeName).collect(Collectors.toList()); - resultMap.put(key, StringUtils.join(nodeIdList, ",")); - resultMap.put(key + FieldCommon._DICT_TEXT, StringUtils.join(nodeNameList, ",")); - } - } + processSpecificFieldValue(resultMap, key, id, standardNumber); } return resultMap; } + /** + * @Author: liao + * @Date: 2023/9/19 13:43 + * @Description: 查询返回特殊值处理 + **/ + private void processSpecificFieldValue(Map resultMap, String key, + String id, String standardNumber) { + // 如果是标准体系(单独处理) + if (FieldCommon.STANDARD_SYSTEM.equals(key)) { + List nodeRelationList = lawsNodeRelationService.getListByStandardId(id); + if (CollectionUtils.isNotEmpty(nodeRelationList)) { + List nodeIdList = nodeRelationList.stream() + .map(LawsNodeRelation::getNodeId).collect(Collectors.toList()); + List nodeNameList = nodeRelationList.stream() + .map(LawsNodeRelation::getNodeName).collect(Collectors.toList()); + resultMap.put(key, StringUtils.join(nodeIdList, ",")); + resultMap.put(key + FieldCommon._DICT_TEXT, StringUtils.join(nodeNameList, ",")); + } + } + // 如果是代替标准(单独处理) + if (FieldCommon.REPLACED_STANDARD.equals(key)) { + resultMap.put(key, lawsReplacedStandardService.getReplaced(standardNumber, 1)); + } + // 如果是被代替标准(单独处理) + if (FieldCommon.REPLACED_BY_STANDARD.equals(key)) { + resultMap.put(key, lawsReplacedStandardService.getReplacedBy(standardNumber, 1)); + } + // 如果是引用标准(单独处理) + if (FieldCommon.REFERENCE_STANDARD.equals(key)) { + resultMap.put(key, lawsReplacedStandardService.getReplaced(standardNumber, 2)); + } + // 如果是被引用标准(单独处理) + if (FieldCommon.REFERENCED_STANDARD.equals(key)) { + resultMap.put(key, lawsReplacedStandardService.getReplacedBy(standardNumber, 2)); + } + } /** @@ -327,6 +356,9 @@ public class LawsCommonServiceImpl implements ILawsCommonService { // 将更新数据库的标准体系字段设置为空 parameterMap.put(FieldCommon.STANDARD_SYSTEM, ""); + // 处理新增和编辑时的代替标准、引用标准 + processReplaced(parameterMap, standardNumber); + // 获取操作模块 String module = (String) parameterMap.get(FieldCommon.MODULE); @@ -397,6 +429,10 @@ public class LawsCommonServiceImpl implements ILawsCommonService { } // 将更新数据库的标准体系字段设置为空 parameterMap.put(FieldCommon.STANDARD_SYSTEM, ""); + + // 处理新增和编辑时的代替标准、引用标准 + processReplaced(parameterMap, standardNumber); + // 获取操作模块 String module = parameterMap.get(FieldCommon.MODULE).toString(); parameterMap.remove(FieldCommon.MODULE); @@ -458,6 +494,34 @@ public class LawsCommonServiceImpl implements ILawsCommonService { return MessageUtils.getMessage(ResultCommon.OK); } + /** + * @Author: liao + * @Date: 2023/9/19 11:53 + * @Description: 处理新增和编辑时的代替标准、引用标准 + **/ + private void processReplaced(Map parameterMap, String standardNumber) { + // 代替标准 + String replacedStandard = (String) parameterMap.get(FieldCommon.REPLACED_STANDARD); + // 先删除已经存储的关联 + lawsReplacedStandardService.removeRelation(standardNumber, 1); + if (StringUtils.isNotBlank(replacedStandard)) { + // 再添加新的关联 + lawsReplacedStandardService.addRelation(replacedStandard, standardNumber, 1); + parameterMap.put(FieldCommon.REPLACED_STANDARD, ""); + parameterMap.put(FieldCommon.REPLACED_BY_STANDARD, ""); + } + // 引用标准 + String referenceStandard = (String) parameterMap.get(FieldCommon.REFERENCE_STANDARD); + // 先删除已经存储的关联 + lawsReplacedStandardService.removeRelation(standardNumber, 2); + if (StringUtils.isNotBlank(referenceStandard)) { + // 再添加新的关联 + lawsReplacedStandardService.addRelation(referenceStandard, standardNumber, 2); + parameterMap.put(FieldCommon.REFERENCE_STANDARD, ""); + parameterMap.put(FieldCommon.REFERENCED_STANDARD, ""); + } + } + /** * @Author: liao * @Date: 2023/9/12 15:40 diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/controller/LawsDomesticController.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/controller/LawsDomesticController.java index 5416859d..950528c6 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/standard/controller/LawsDomesticController.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/controller/LawsDomesticController.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.jero.common.api.vo.Result; import com.jero.common.aspect.annotation.AutoLog; -import com.jero.common.exception.JeroBootException; import com.jero.common.util.MessageUtils; import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.common.constant.ResultCommon; @@ -18,13 +17,11 @@ import com.jero.modules.tag.entity.LawsTag; import com.jero.modules.tag.enums.TableNameEnum; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; -import java.util.Objects; /** * @Author: liao diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/entity/LawsReplacedStandard.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/entity/LawsReplacedStandard.java new file mode 100644 index 00000000..dceef07f --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/entity/LawsReplacedStandard.java @@ -0,0 +1,45 @@ +package com.jero.modules.laws.standard.entity; + +import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + + +/** + * @Description: 代替标准 + * @Author: jero-boot + * @Date: 2023-09-19 + * @Version: V1.0 + */ +@Data +@TableName("laws_replaced_standard") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="laws_replaced_standard对象", description="代替标准") +public class LawsReplacedStandard implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键ID*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键ID") + private java.lang.String id; + /**代替标准*/ + @Excel(name = "代替标准", width = 15) + @ApiModelProperty(value = "代替标准") + private java.lang.String replaced; + /**被代替标准*/ + @Excel(name = "被代替标准", width = 15) + @ApiModelProperty(value = "被代替标准") + private java.lang.String replacedBy; + /**类型(1-代替、2-引用)*/ + @Excel(name = "类型(1-代替、2-引用)", width = 15) + @ApiModelProperty(value = "类型(1-代替、2-引用)") + private java.lang.Integer type; +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/mapper/LawsReplacedStandardMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/mapper/LawsReplacedStandardMapper.java new file mode 100644 index 00000000..ed024716 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/mapper/LawsReplacedStandardMapper.java @@ -0,0 +1,14 @@ +package com.jero.modules.laws.standard.mapper; + +import com.jero.modules.laws.standard.entity.LawsReplacedStandard; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 代替标准 + * @Author: jero-boot + * @Date: 2023-09-19 + * @Version: V1.0 + */ +public interface LawsReplacedStandardMapper extends BaseMapper { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/mapper/xml/LawsReplacedStandardMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/standard/mapper/xml/LawsReplacedStandardMapper.xml new file mode 100644 index 00000000..1b5d09a3 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/mapper/xml/LawsReplacedStandardMapper.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/ILawsReplacedStandardService.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/ILawsReplacedStandardService.java new file mode 100644 index 00000000..463ccb6e --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/ILawsReplacedStandardService.java @@ -0,0 +1,42 @@ +package com.jero.modules.laws.standard.service; + +import com.jero.modules.laws.standard.entity.LawsReplacedStandard; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 代替标准 + * @Author: jero-boot + * @Date: 2023-09-19 + * @Version: V1.0 + */ +public interface ILawsReplacedStandardService extends IService { + + /** + * @Author: liao + * @Date: 2023/9/19 11:03 + * @Description: 添加代替标准关联 + **/ + void addRelation(String replaced, String replacedBy, Integer type); + + /** + * @Author: liao + * @Date: 2023/9/19 11:07 + * @Description: 删除代替标准关联 + **/ + void removeRelation(String replacedBy, Integer type); + + /** + * @Author: liao + * @Date: 2023/9/19 11:31 + * @Description: 获取代替标准 + **/ + String getReplaced(String standardNumber, Integer type); + + /** + * @Author: liao + * @Date: 2023/9/19 11:31 + * @Description: 获取被代替标准 + **/ + String getReplacedBy(String standardNumber, Integer type); + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsReplacedStandardServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsReplacedStandardServiceImpl.java new file mode 100644 index 00000000..c212d076 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsReplacedStandardServiceImpl.java @@ -0,0 +1,104 @@ +package com.jero.modules.laws.standard.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.jero.modules.laws.standard.entity.LawsReplacedStandard; +import com.jero.modules.laws.standard.mapper.LawsReplacedStandardMapper; +import com.jero.modules.laws.standard.service.ILawsReplacedStandardService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.jero.common.exception.JeroBootException; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + + +/** + * @Description: 代替标准 + * @Author: jero-boot + * @Date: 2023-09-19 + * @Version: V1.0 + */ +@Service +@Transactional(rollbackFor = JeroBootException.class) +public class LawsReplacedStandardServiceImpl extends ServiceImpl implements ILawsReplacedStandardService { + + /** + * @Author: liao + * @Date: 2023/9/19 11:06 + * @Description: 添加代替标准关联 + **/ + @Override + public void addRelation(String replaced, String replacedBy, Integer type) { + // 如果代替的标准为空 + if (StringUtils.isBlank(replaced)) { + return; + } + // 添加新的关联 + List replacedList = Arrays.asList(replaced.split(",")); + List replacedStandardList = new ArrayList<>(); + replacedList.forEach(e -> { + LawsReplacedStandard replacedStandard = new LawsReplacedStandard(); + replacedStandard.setReplaced(e); + replacedStandard.setReplacedBy(replacedBy); + replacedStandard.setType(type); + replacedStandardList.add(replacedStandard); + }); + saveBatch(replacedStandardList); + } + + /** + * @Author: liao + * @Date: 2023/9/19 11:08 + * @Description: 删除代替标准关联 + **/ + @Override + public void removeRelation(String replacedBy, Integer type) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(LawsReplacedStandard::getReplacedBy, replacedBy); + queryWrapper.eq(LawsReplacedStandard::getType, type); + remove(queryWrapper); + } + + /** + * @Author: liao + * @Date: 2023/9/19 11:32 + * @Description: 获取代替标准 + **/ + @Override + public String getReplaced(String standardNumber, Integer type) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(LawsReplacedStandard::getReplacedBy, standardNumber); + queryWrapper.eq(LawsReplacedStandard::getType, type); + List replacedStandardList = list(queryWrapper); + if (CollectionUtils.isEmpty(replacedStandardList)) { + return ""; + } + List replacedList = replacedStandardList.stream() + .map(LawsReplacedStandard::getReplaced).collect(Collectors.toList()); + return StringUtils.join(replacedList, ","); + } + + /** + * @Author: liao + * @Date: 2023/9/19 11:32 + * @Description: 获取被代替标准 + **/ + @Override + public String getReplacedBy(String standardNumber, Integer type) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(LawsReplacedStandard::getReplaced, standardNumber); + queryWrapper.eq(LawsReplacedStandard::getType, type); + List replacedStandardList = list(queryWrapper); + if (CollectionUtils.isEmpty(replacedStandardList)) { + return ""; + } + List replacedByList = replacedStandardList.stream() + .map(LawsReplacedStandard::getReplacedBy).collect(Collectors.toList()); + return StringUtils.join(replacedByList, ","); + } +}