From 9b487cecb40edec17e1ca14279854ed12cdca81e Mon Sep 17 00:00:00 2001 From: liao Date: Mon, 25 Sep 2023 14:40:59 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=B3=95=E8=A7=84=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=A4=84=E7=90=86=E3=80=81=E6=A0=87=E5=87=86?= =?UTF-8?q?=E6=8B=86=E5=88=86=E6=9F=A5=E8=AF=A2=E8=A1=A8=E5=8D=95=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../laws/common/mapper/LawsCommonMapper.java | 3 +- .../common/mapper/xml/LawsCommonMapper.xml | 24 +- .../common/service/ILawsCommonService.java | 2 +- .../service/impl/LawsCommonServiceImpl.java | 236 +++++++++++++----- .../impl/LawsNodeRelationServiceImpl.java | 2 +- .../controller/ClauseSplitController.java | 5 +- 6 files changed, 199 insertions(+), 73 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/mapper/LawsCommonMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/common/mapper/LawsCommonMapper.java index 6a2ea578..8445813a 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/mapper/LawsCommonMapper.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/mapper/LawsCommonMapper.java @@ -90,5 +90,6 @@ public interface LawsCommonMapper { * @Date: 2023/9/18 17:14 * @Description: 根据标准编号查询简单标准 **/ - ManyStandardSelectionBox getSingleStandard(@Param("standardNumber") String standardNumber); + ManyStandardSelectionBox getSingleStandard(@Param("standardNumber") String standardNumber, + @Param("id") String id); } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/mapper/xml/LawsCommonMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/common/mapper/xml/LawsCommonMapper.xml index 8fc67e74..de6e8907 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/mapper/xml/LawsCommonMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/mapper/xml/LawsCommonMapper.xml @@ -63,19 +63,37 @@ \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/service/ILawsCommonService.java b/laws-modules/src/main/java/com/jero/modules/laws/common/service/ILawsCommonService.java index e1a7e46a..5fab6295 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/service/ILawsCommonService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/service/ILawsCommonService.java @@ -122,7 +122,7 @@ public interface ILawsCommonService { * @Date: 2023/9/18 17:02 * @Description: 根据标准编号查询简单标准 **/ - ManyStandardSelectionBox getSingleStandard(String standardNumber); + ManyStandardSelectionBox getSingleStandard(String standardNumber, String id); /** * 三标通用导出 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 58224f6c..a1c06d88 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 @@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.constant.enums.LanguageEnum; @@ -281,7 +282,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService { // 对返回的字段值做处理 processResultFieldValue(key, value, fieldList, resultMap, dictItemList); } - processSpecificFieldValue(resultMap, key, id, standardNumber); + processSpecificFieldValue(resultMap, key, id, standardNumber, fieldList); } return resultMap; } @@ -292,9 +293,15 @@ public class LawsCommonServiceImpl implements ILawsCommonService { * @Description: 查询返回特殊值处理 **/ private void processSpecificFieldValue(Map resultMap, String key, - String id, String standardNumber) { - // 如果是标准体系(单独处理) + String id, String standardNumber, List fieldList) { + List lawsTagList = fieldList.stream().filter(lawsTag -> + key.equals(lawsTag.getDbFieldName())).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(lawsTagList)) { + return; + } + LawsTag lawsTag = lawsTagList.get(0); if (FieldCommon.STANDARD_SYSTEM.equals(key)) { + // 如果是标准体系(单独处理) List nodeRelationList = lawsNodeRelationService.getListByStandardId(id); if (CollectionUtils.isNotEmpty(nodeRelationList)) { List nodeIdList = nodeRelationList.stream() @@ -304,22 +311,33 @@ public class LawsCommonServiceImpl implements ILawsCommonService { resultMap.put(key, StringUtils.join(nodeIdList, ",")); resultMap.put(key + FieldCommon._DICT_TEXT, StringUtils.join(nodeNameList, ",")); } - } - // 如果是代替标准(单独处理) - if (FieldCommon.REPLACED_STANDARD.equals(key)) { + } else if (FieldCommon.REPLACED_STANDARD.equals(key)) { + // 如果是代替标准(单独处理) resultMap.put(key, lawsReplacedStandardService.getReplaced(standardNumber, 1)); - } - // 如果是被代替标准(单独处理) - if (FieldCommon.REPLACED_BY_STANDARD.equals(key)) { + } else if (FieldCommon.REPLACED_BY_STANDARD.equals(key)) { + // 如果是被代替标准(单独处理) resultMap.put(key, lawsReplacedStandardService.getReplacedBy(standardNumber, 1)); - } - // 如果是引用标准(单独处理) - if (FieldCommon.REFERENCE_STANDARD.equals(key)) { + } else if (FieldCommon.REFERENCE_STANDARD.equals(key)) { + // 如果是引用标准(单独处理) resultMap.put(key, lawsReplacedStandardService.getReplaced(standardNumber, 2)); - } - // 如果是被引用标准(单独处理) - if (FieldCommon.REFERENCED_STANDARD.equals(key)) { + } else if (FieldCommon.REFERENCED_STANDARD.equals(key)) { + // 如果是被引用标准(单独处理) resultMap.put(key, lawsReplacedStandardService.getReplacedBy(standardNumber, 2)); + } else if (LawsFieldTypeEnum.FILE_UP.getValue().equals(lawsTag.getFieldShowType())) { + // 如果是文件类型 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OSSFile::getStandardId, id); + queryWrapper.eq(OSSFile::getStandardFileType, key); + List fileList = ossFileService.list(queryWrapper); + if (CollectionUtils.isEmpty(fileList)) { + resultMap.put(key, ""); + resultMap.put(key + FieldCommon._DICT_TEXT, ""); + } else { + resultMap.put(key, StringUtils.join(fileList.stream() + .map(OSSFile::getId).collect(Collectors.toList()), "")); + resultMap.put(key + FieldCommon._DICT_TEXT, StringUtils.join(fileList.stream() + .map(OSSFile::getFileName).collect(Collectors.toList()), "")); + } } } @@ -334,6 +352,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService { List> resultMapList = new ArrayList<>(); for (Map map : records) { Map resultMap = new LinkedHashMap<>(); + String id = (String) map.get("id"); + String standardNumber = (String) map.get(FieldCommon.STANDARD_NUMBER); for (Map.Entry entryMap : map.entrySet()) { String key = entryMap.getKey(); String value = ""; @@ -347,6 +367,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService { // 对返回的字段值做处理 processResultFieldValue(key, value, fieldList, resultMap, dictItemList); } + processSpecificFieldValue(resultMap, key, id, standardNumber, fieldList); } resultMapList.add(resultMap); } @@ -402,13 +423,6 @@ public class LawsCommonServiceImpl implements ILawsCommonService { List departList = sysDepartService.list(sysDepartLambdaQueryWrapper); List nameList = departList.stream().map(SysDepart::getDepartName).collect(Collectors.toList()); resultMap.put(key + FieldCommon._DICT_TEXT, StringUtils.join(nameList, ",")); - } else if (LawsFieldTypeEnum.FILE_UP.getValue().equals(lawsTag.getFieldShowType())) { - // 如果是文件上传(详情页展示,如果列表展示则重写一下) - LambdaQueryWrapper ossFileLambdaQueryWrapper = new LambdaQueryWrapper<>(); - ossFileLambdaQueryWrapper.in(OSSFile::getId, valueList); - List fileList = ossFileService.list(ossFileLambdaQueryWrapper); - List nameList = fileList.stream().map(OSSFile::getFileName).collect(Collectors.toList()); - resultMap.put(key + FieldCommon._DICT_TEXT, StringUtils.join(nameList, ",")); } else if (FieldCommon.TYPE_DICT.contains(lawsTag.getFieldShowType())) { // 如果是字典翻译 List nameList = dictItemList.stream().filter(dictItem -> @@ -461,7 +475,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService { if (StringUtils.isBlank(standardNumber)) { throw new JeroBootException(ResultCommon.EMPTY_STANDARD_NUMBER); } - ManyStandardSelectionBox singleStandard = getSingleStandard(standardNumber); + ManyStandardSelectionBox singleStandard = getSingleStandard(standardNumber, null); if (!Objects.isNull(singleStandard)) { throw new JeroBootException(ResultCommon.EXIST_STANDARD_NUMBER); } @@ -499,11 +513,11 @@ public class LawsCommonServiceImpl implements ILawsCommonService { String key = entryMap.getKey(); String value = ""; if (!Objects.isNull(entryMap.getValue())) { - value = entryMap.getValue().toString(); + value = (String) entryMap.getValue(); } // 如果value不为null和"",则拼接查询条件 if (StringUtils.isNotBlank(value)) { - jointInsertFieldAndValue(fieldList, fieldsBuilder, valuesBuilder, key, value); + jointInsertFieldAndValue(fieldList, fieldsBuilder, valuesBuilder, key, value, id, standardNumber); } } // 操作数据库进行新增数据 @@ -560,11 +574,6 @@ public class LawsCommonServiceImpl implements ILawsCommonService { @Override @Transactional public String commonEdit(Map parameterMap) { - // 法规编号不能为空 - String standardNumber = (String) parameterMap.get(FieldCommon.STANDARD_NUMBER); - if (StringUtils.isBlank(standardNumber)) { - throw new JeroBootException(ResultCommon.EMPTY_STANDARD_NUMBER, ""); - } // 标准名称不能为空 String standardName = (String) parameterMap.get(FieldCommon.STANDARD_NAME); if (StringUtils.isBlank(standardName)) { @@ -575,18 +584,19 @@ public class LawsCommonServiceImpl implements ILawsCommonService { if (StringUtils.isBlank(standardSystem)) { throw new JeroBootException(ResultCommon.EMPTY_COMMON, FieldCommon.STANDARD_SYSTEM); } - // 将更新数据库的标准体系字段设置为空 - parameterMap.put(FieldCommon.STANDARD_SYSTEM, ""); - - // 处理新增和编辑时的代替标准、引用标准 - processReplaced(parameterMap, standardNumber); - // 获取操作模块 String module = parameterMap.get(FieldCommon.MODULE).toString(); parameterMap.remove(FieldCommon.MODULE); // 获取id String id = (String) parameterMap.get(FieldCommon.ID); parameterMap.remove(FieldCommon.ID); + + ManyStandardSelectionBox singleStandard = getSingleStandard(null, id); + String standardNumber = singleStandard.getStandardNumber(); + + // 处理新增和编辑时的代替标准、引用标准 + processReplaced(parameterMap, standardNumber); + // 获取数据库里没修改的数据 Map oldDataMap = getByIdAndModule(id, module, "2", standardNumber); @@ -618,13 +628,15 @@ public class LawsCommonServiceImpl implements ILawsCommonService { String key = entryMap.getKey(); String value = ""; if (!Objects.isNull(entryMap.getValue())) { - value = entryMap.getValue().toString(); + value = (String) entryMap.getValue(); } + // 添加更新记录 addUpdateRecord(fieldList, oldDataMap, recordBuffer, key, value); + // 如果value不为null和"",则拼接sql语句 if (StringUtils.isNotBlank(value)) { - jointUpdateFieldAndValue(fieldList, updateBuilder, key, value); + jointUpdateFieldAndValue(fieldList, updateBuilder, key, value, id, standardNumber); } } // 操作数据库进行更新数据 @@ -655,8 +667,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService { if (StringUtils.isNotBlank(replacedStandard)) { // 再添加新的关联 lawsReplacedStandardService.addRelation(replacedStandard, standardNumber, 1); - parameterMap.put(FieldCommon.REPLACED_STANDARD, ""); - parameterMap.put(FieldCommon.REPLACED_BY_STANDARD, ""); + /*parameterMap.put(FieldCommon.REPLACED_STANDARD, ""); + parameterMap.put(FieldCommon.REPLACED_BY_STANDARD, "");*/ } // 引用标准 String referenceStandard = (String) parameterMap.get(FieldCommon.REFERENCE_STANDARD); @@ -665,8 +677,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService { if (StringUtils.isNotBlank(referenceStandard)) { // 再添加新的关联 lawsReplacedStandardService.addRelation(referenceStandard, standardNumber, 2); - parameterMap.put(FieldCommon.REFERENCE_STANDARD, ""); - parameterMap.put(FieldCommon.REFERENCED_STANDARD, ""); + /*parameterMap.put(FieldCommon.REFERENCE_STANDARD, ""); + parameterMap.put(FieldCommon.REFERENCED_STANDARD, "");*/ } } @@ -677,20 +689,33 @@ public class LawsCommonServiceImpl implements ILawsCommonService { **/ private void addUpdateRecord(List fieldList, Map oldDataMap, StringBuilder recordBuffer, String key, String value) { - if (FieldCommon.SPECIFIC_UPDATE_FIELD.contains(key)) { - // 特殊更新字段处理 + String oldValue = ""; + if (!Objects.isNull(oldDataMap.get(key))) oldValue = (String) oldDataMap.get(key); + + List lawsTagList = fieldList.stream().filter(lawsTag -> + key.equals(lawsTag.getDbFieldName())).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(lawsTagList)) { return; } - String oldValue = ""; - if (!Objects.isNull(oldDataMap.get(key))) oldValue = oldDataMap.get(key).toString(); + LawsTag lawsTag = lawsTagList.get(0); + + // 对特殊值做处理(新旧值) + if (LawsFieldTypeEnum.FILE_UP.getValue().equals(lawsTag.getFieldShowType())) { + // 文件处理 + + } else if (FieldCommon.STANDARD_SYSTEM.equals(key)) { + // 标准体系 + } else if (FieldCommon.REPLACED_STANDARD.equals(key)) { + // 代替标准号 + } else if (FieldCommon.REFERENCE_STANDARD.equals(key)) { + // 引用标准 + } else if (FieldCommon.TYPE_DICT.contains(lawsTag.getFieldShowType())) { + // 字典翻译 + } + // 如果新旧值不一样 if (!oldValue.equals(value)) { - List nameList = fieldList.stream().filter(lawsTag -> key.equals(lawsTag.getDbFieldName())) - .map(LawsTag::getDbFieldTxt).collect(Collectors.toList()); - if (CollectionUtils.isEmpty(nameList)) { - return; - } - recordBuffer.append(FieldCommon.QUOTE + nameList.get(0) + FieldCommon.QUOTE + "由"); + recordBuffer.append(FieldCommon.QUOTE + lawsTag.getDbFieldTxt() + FieldCommon.QUOTE + "由"); recordBuffer.append(FieldCommon.QUOTE + oldValue + FieldCommon.QUOTE + "改为"); recordBuffer.append(FieldCommon.QUOTE + value + FieldCommon.QUOTE + ";"); } @@ -744,16 +769,31 @@ public class LawsCommonServiceImpl implements ILawsCommonService { } // 获取区域管理 + List areaList = new ArrayList<>(); LawsArea lawsArea = new LawsArea(); lawsArea.setIsModel(module); - List areaList = lawsAreaService.queryList(lawsArea); + if (TableNameEnum.DOCUMENT_SPLIT.getValue().equals(module)) { + // 条款拆分没有关联区域,手动赋值一个 + lawsArea.setShowArea(module); + lawsArea.setEnName(module); + areaList.add(lawsArea); + } else { + areaList = lawsAreaService.queryList(lawsArea); + } // 用于返回的区域集合 Map areaMap = new LinkedHashMap<>(); // 遍历每个区域做处理 for (LawsArea area : areaList) { // 获取该区域的所有字段 - List areaFieldList = fieldList.stream().filter(lawsTag -> area.getId() - .equals(lawsTag.getShowArea())).collect(Collectors.toList()); + List areaFieldList; + if ("4".equals(module)) { + // 条款拆分没有关联区域,直接是全部字段 + areaFieldList = fieldList; + } else { + // 筛选该显示区域字段 + areaFieldList = fieldList.stream().filter(lawsTag -> area.getId() + .equals(lawsTag.getShowArea())).collect(Collectors.toList()); + } // 获取展示区域名称 String areaName = area.getShowArea(); if (LanguageEnum.EN.equals(language)) { @@ -880,8 +920,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService { * @Description: 根据标准编号查询简单标准 **/ @Override - public ManyStandardSelectionBox getSingleStandard(String standardNumber) { - return lawsCommonMapper.getSingleStandard(standardNumber); + public ManyStandardSelectionBox getSingleStandard(String standardNumber, String id) { + return lawsCommonMapper.getSingleStandard(standardNumber, id); } @Override @@ -1092,15 +1132,14 @@ public class LawsCommonServiceImpl implements ILawsCommonService { * @Description: 拼接添加字段和数据值 **/ private void jointInsertFieldAndValue(List fieldList, StringBuilder fieldsBuilder, - StringBuilder valuesBuilder, String key, String value) { + StringBuilder valuesBuilder, String key, String value, + String id, String standardNumber) { for (LawsTag lawsTag : fieldList) { if (key.equals(lawsTag.getDbFieldName())) { - // 拼接新增字段 - fieldsBuilder.append("," + key); - // 对数据值做格式处理 - valuesBuilder.append("," + setValue(lawsTag.getFieldShowType(), value)); + jointInsertFieldSetValue(lawsTag, fieldsBuilder, valuesBuilder, key, value, id, standardNumber); } } + // 如果是标准编号 if (FieldCommon.STANDARD_NUMBER.equals(key)) { List standardNumberList = fieldList.stream().filter(lawsTag -> FieldCommon.STANDARD_NUMBER.equals(lawsTag.getDbFieldName())).collect(Collectors.toList()); @@ -1114,6 +1153,54 @@ public class LawsCommonServiceImpl implements ILawsCommonService { } } + /** + * @Author: liao + * @Date: 2023/9/25 9:49 + * @Description: 新增字段设置value + **/ + private void jointInsertFieldSetValue(LawsTag lawsTag, StringBuilder fieldsBuilder, + StringBuilder valuesBuilder, String key, String value, + String id, String standardNumber) { + if (LawsFieldTypeEnum.FILE_UP.getValue().equals(lawsTag.getFieldShowType())) { + updateOSSFile(key, value, id, standardNumber); + } else { + // 拼接新增字段 + fieldsBuilder.append("," + key); + // 对数据值做格式处理 + valuesBuilder.append("," + setValue(lawsTag.getFieldShowType(), value)); + } + } + + /** + * @Author: liao + * @Date: 2023/9/25 10:27 + * @Description: 更新文件表 + **/ + private void updateOSSFile(String key, String value, String id, String standardNumber) { + List fileIdList = Arrays.asList(value.split(",")); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(OSSFile::getId, fileIdList); + updateWrapper.set(OSSFile::getStandardId, id); + updateWrapper.set(OSSFile::getStandardNo, standardNumber); + updateWrapper.set(OSSFile::getStandardFileType, key); + ossFileService.update(updateWrapper); + } + + /** + * @Author: liao + * @Date: 2023/9/25 10:38 + * @Description: 删除文件表 + **/ + private void removeOSSFile(String key, String id) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(OSSFile::getStandardId, id); + updateWrapper.eq(OSSFile::getStandardFileType, key); + updateWrapper.set(OSSFile::getStandardId, ""); + updateWrapper.set(OSSFile::getStandardNo, ""); + updateWrapper.set(OSSFile::getStandardFileType, ""); + ossFileService.update(updateWrapper); + } + /** * @Author: liao * @Date: 2023/8/25 11:22 @@ -1151,15 +1238,34 @@ public class LawsCommonServiceImpl implements ILawsCommonService { * @Description: 拼接更新语句字段和数据值 **/ private void jointUpdateFieldAndValue(List fieldList, StringBuilder updateBuilder, - String key, String value) { + String key, String value, String id, String standardNumber) { + if (FieldCommon.SPECIFIC_UPDATE_FIELD.contains(key)) { + // 特殊字段不做更新sql + return; + } for (LawsTag lawsTag : fieldList) { if (key.equals(lawsTag.getDbFieldName())) { - // 做格式处理 - updateBuilder.append("," + key + " = " + setValue(lawsTag.getFieldShowType(), value)); + jointUpdateFieldSetValue(lawsTag, updateBuilder, key, value, id, standardNumber); } } } + /** + * @Author: liao + * @Date: 2023/9/25 10:32 + * @Description: 设置更新语句value + **/ + private void jointUpdateFieldSetValue(LawsTag lawsTag, StringBuilder updateBuilder, + String key, String value, String id, String standardNumber) { + if (LawsFieldTypeEnum.FILE_UP.getValue().equals(lawsTag.getFieldShowType())) { + removeOSSFile(key, id); + updateOSSFile(key, value, id, standardNumber); + } else { + // 做格式处理 + updateBuilder.append("," + key + " = " + setValue(lawsTag.getFieldShowType(), value)); + } + } + /** * @Author: liao * @Date: 2023/8/24 14:43 diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsNodeRelationServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsNodeRelationServiceImpl.java index 50c69202..e8680637 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsNodeRelationServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsNodeRelationServiceImpl.java @@ -92,7 +92,7 @@ public class LawsNodeRelationServiceImpl extends ServiceImpl> getFormModel(@RequestParam(name="type") String type) { - return Result.OK(lawsCommonService.getFormModel(MODULE_VALUE, type)); + public Result getFormModel(@RequestParam(name="type") String type) { + Map formModel = lawsCommonService.getFormModel(MODULE_VALUE, type); + return Result.OK(formModel.get(MODULE_VALUE)); } }