Explorar o código

fix:
文件导入导出BUG修复

18339543638 %!s(int64=2) %!d(string=hai) anos
pai
achega
5fa439979a

+ 12 - 0
tr-modules-api/tr-module-export-api/src/main/java/cn/tr/module/export/converter/DictSelectConverter.java

@@ -2,6 +2,7 @@ package cn.tr.module.export.converter;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.lang.Pair;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import cn.tr.module.export.handler.AbstractSelectConverter;
 import cn.tr.module.api.sys.dict.SysDictApi;
@@ -31,6 +32,17 @@ public class DictSelectConverter extends AbstractSelectConverter<String> {
         return CollectionUtil.isNotEmpty(result)?result:new ArrayList<>();
     }
 
+    @Override
+    public String extractUniqueCode(String content, Collection<String> params) {
+        List<Pair<String, String>> pairs = doComboList(params);
+        for (Pair<String, String> pair : pairs) {
+            if (ObjectUtil.equals(content, pair.getKey())) {
+                return pair.getValue();
+            }
+        }
+        return null;
+    }
+
     @Override
     public Class<String> doSupportJavaTypeKey() {
         return String.class;

+ 6 - 4
tr-modules-api/tr-module-export-api/src/main/java/cn/tr/module/export/handler/AbstractSelectConverter.java

@@ -39,7 +39,7 @@ public abstract class AbstractSelectConverter<T> implements Converter<T> {
         ExcelPropertySupport excelPropertySupport = contentProperty.getField().getAnnotation(ExcelPropertySupport.class);
         String content = cellData.getStringValue();
         //校验是否存在
-        T uniqueCode = extractUniqueCode(content);
+        T uniqueCode = extractUniqueCode(content,getParams(excelPropertySupport));
         boolean result = existUniqueCode(uniqueCode, getParams(excelPropertySupport));
         if(!result){
             ExcelProperty excelProperty = contentProperty.getField().getAnnotation(ExcelProperty.class);
@@ -88,8 +88,9 @@ public abstract class AbstractSelectConverter<T> implements Converter<T> {
      * @param content 内容
      * @return
      */
-    public T extractUniqueCode(String content){
-        return (T) CollectionUtil.getFirst(ReUtil.findAllGroup1(PATTERN_PARAMS,content));
+    public T extractUniqueCode(String content,Collection<String> params){
+//        return (T) CollectionUtil.getFirst(ReUtil.findAllGroup1(PATTERN_PARAMS,content));
+        return (T) content;
     }
 
     /**
@@ -132,7 +133,8 @@ public abstract class AbstractSelectConverter<T> implements Converter<T> {
      * @return
      */
     private String buildContent(String desc,T uniqueCode){
-        return desc+"("+uniqueCode+")";
+//        return desc+"("+uniqueCode+")";
+        return String.valueOf(uniqueCode);
     }
 
     /**

+ 9 - 2
tr-modules/tr-module-export/src/main/java/cn/tr/module/excel/core/handler/write/CustomCellWriteHandler.java

@@ -3,6 +3,7 @@ package cn.tr.module.excel.core.handler.write;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ClassUtil;
 import cn.hutool.core.util.ReflectUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.tr.module.export.annotation.ExcelSelect;
 import cn.tr.module.export.annotation.ExcelPropertySupport;
 import cn.tr.module.export.handler.AbstractSelectConverter;
@@ -114,6 +115,9 @@ public class CustomCellWriteHandler implements CellWriteHandler {
         }
         AbstractSelectConverter<?> converter = ReflectUtil.newInstance(converterClass);
         List<String> values = converter.comboList(Arrays.asList(select.param()));
+        if(CollectionUtil.isEmpty(values)){
+            return;
+        }
         NotNull notNull = field.getAnnotation(NotNull.class);
         String[] valueList = values.toArray(new String[CollectionUtil.size(values)]);
         DataValidationConstraint explicitListConstraint = cell.getSheet().getDataValidationHelper().createExplicitListConstraint(valueList);
@@ -133,9 +137,12 @@ public class CustomCellWriteHandler implements CellWriteHandler {
      */
     private void markNotNull(Field field,Cell cell){
         NotNull notNull = field.getAnnotation(NotNull.class);
-        if(notNull!=null){
-            setComment(cell,cell.getColumnIndex(),"",false);
+        ExcelPropertySupport annotation = field.getAnnotation(ExcelPropertySupport.class);
+        String msg="";
+        if(annotation!=null){
+            msg=annotation.comment();
         }
+        setComment(cell,cell.getColumnIndex(),msg,notNull==null);
     }
 
 

+ 6 - 0
tr-modules/tr-module-export/src/main/java/cn/tr/module/excel/sheet/service/impl/SysExportSheetServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.ObjUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
 import cn.hutool.poi.excel.cell.CellUtil;
@@ -70,6 +71,11 @@ public class SysExportSheetServiceImpl implements ISysExportSheetService {
                 result.setFailCount(excelSheetManage.getFailCount(id));
             }
         }
+        if (SheetImportStatus.parsingSuccess.getValue().equals(result.getStatus()) &&
+                (ObjectUtil.equals(result.getTotalCount(), result.getSuccessCount() * result.getFailCount()))) {
+            result.setStatus(SheetImportStatus.importSuccess.getValue());
+            baseRepository.updateById(SysExportSheetMapper.INSTANCE.convertPO(result));
+        }
         return result;
     }
 

+ 1 - 1
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/dict/provider/SysDictProvider.java

@@ -36,7 +36,7 @@ public class SysDictProvider implements SysDictApi {
         List<SysDictSmallDTO> dicts =dictService.selectChildrenDictsByDictCode(dictCode);
         if(CollectionUtil.isNotEmpty(dicts)){
             return dicts.stream()
-                    .map(item-> Pair.of(item.getValue(),item.getLabel()))
+                    .map(item-> Pair.of(item.getLabel(),item.getValue()))
                     .collect(Collectors.toList());
         }
         return null;