Browse Source

Merge remote-tracking branch 'origin/develop' into test

wangzaijun 7 months ago
parent
commit
ad6a9945f5
17 changed files with 168 additions and 69 deletions
  1. 4 2
      service-base/src/main/java/com/simuwang/base/common/support/command/BaseIdCmd.java
  2. 2 2
      service-base/src/main/java/com/simuwang/base/common/support/service/IService.java
  3. 3 0
      service-base/src/main/java/com/simuwang/base/common/util/TreeUtil.java
  4. 0 23
      service-base/src/main/java/com/simuwang/base/pojo/dto/DeleteByIdCmd.java
  5. 27 0
      service-base/src/main/java/com/simuwang/base/pojo/dto/DeleteByIdsCmd.java
  6. 11 8
      service-daq/src/main/java/com/simuwang/daq/components/AbstractReportParser.java
  7. 32 15
      service-daq/src/main/java/com/simuwang/daq/components/PDMonthlyReportParser.java
  8. 43 0
      service-daq/src/main/java/com/simuwang/daq/dto/MonthlyReportNavInfo.java
  9. 13 0
      service-daq/src/main/java/com/simuwang/daq/dto/ReportExtInfo.java
  10. 8 0
      service-daq/src/main/java/com/simuwang/daq/service/ReportParseService.java
  11. 2 2
      service-manage/src/main/java/com/simuwang/manage/api/system/SysMenuController.java
  12. 2 2
      service-manage/src/main/java/com/simuwang/manage/api/system/SysRoleController.java
  13. 2 2
      service-manage/src/main/java/com/simuwang/manage/api/system/SysUserController.java
  14. 3 1
      service-manage/src/main/java/com/simuwang/manage/service/LoginService.java
  15. 4 4
      service-manage/src/main/java/com/simuwang/manage/service/impl/system/SysMenuServiceImpl.java
  16. 6 4
      service-manage/src/main/java/com/simuwang/manage/service/impl/system/SysRoleServiceImpl.java
  17. 6 4
      service-manage/src/main/java/com/simuwang/manage/service/impl/system/SysUserServiceImpl.java

+ 4 - 2
service-base/src/main/java/com/simuwang/base/common/support/command/BaseIdCmd.java

@@ -3,6 +3,8 @@ package com.simuwang.base.common.support.command;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * @author wangzaijun
  * @date 2024/9/13 15:06
@@ -10,11 +12,11 @@ import lombok.Setter;
  */
 @Setter
 @Getter
-public abstract class BaseIdCmd extends BaseCmd {
+public abstract class BaseIdsCmd extends BaseCmd {
     /**
      * 提供给子类实现的获取唯一标识的方法
      *
      * @return /
      */
-    public abstract Integer getId();
+    public abstract List<Integer> getIds();
 }

+ 2 - 2
service-base/src/main/java/com/simuwang/base/common/support/service/IService.java

@@ -9,7 +9,7 @@ import com.simuwang.base.common.support.dos.BaseEntity;
 import com.simuwang.base.common.support.MybatisPage;
 import com.simuwang.base.common.support.command.BaseAddCmd;
 import com.simuwang.base.common.support.command.BaseEditCmd;
-import com.simuwang.base.common.support.command.BaseIdCmd;
+import com.simuwang.base.common.support.command.BaseIdsCmd;
 import com.simuwang.base.common.support.command.BaseIdStatusCmd;
 import com.simuwang.base.common.support.query.PageQuery;
 import com.simuwang.base.common.support.vo.BaseVO;
@@ -127,7 +127,7 @@ public interface IService<VO extends BaseVO, T extends BaseEntity<VO>> {
      *
      * @param command /
      */
-    default <C extends BaseIdCmd> void delete(C command) {
+    default <C extends BaseIdsCmd> void delete(C command) {
         throw new APIException("方法delete未实现");
     }
 }

+ 3 - 0
service-base/src/main/java/com/simuwang/base/common/util/TreeUtil.java

@@ -78,6 +78,9 @@ public class TreeUtil {
                 }
             }
         }
+        if (getOrder != null && treeList.size() > 1) {
+            treeList = getSortList(treeList, getOrder);
+        }
         return treeList;
     }
 

+ 0 - 23
service-base/src/main/java/com/simuwang/base/pojo/dto/DeleteByIdCmd.java

@@ -1,23 +0,0 @@
-package com.simuwang.base.pojo.dto;
-
-import com.simuwang.base.common.support.command.BaseIdCmd;
-import jakarta.validation.constraints.NotNull;
-
-/**
- * @author wangzaijun
- * @date 2024/9/13 15:33
- * @description 根据id删除对象的请求参数
- */
-public class DeleteByIdCmd extends BaseIdCmd {
-    @NotNull(message = "id不能为空")
-    private Integer id;
-
-    @Override
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-}

+ 27 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/DeleteByIdsCmd.java

@@ -0,0 +1,27 @@
+package com.simuwang.base.pojo.dto;
+
+import com.simuwang.base.common.support.command.BaseIdsCmd;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+
+import java.util.List;
+
+/**
+ * @author wangzaijun
+ * @date 2024/9/13 15:33
+ * @description 根据id删除对象的请求参数
+ */
+public class DeleteByIdsCmd extends BaseIdsCmd {
+    @NotNull(message = "ids不能为空")
+    @Size(min = 1, message = "必须选择至少一条数据")
+    private List<Integer> ids;
+
+    @Override
+    public List<Integer> getIds() {
+        return ids;
+    }
+
+    public void setIds(List<Integer> ids) {
+        this.ids = ids;
+    }
+}

+ 11 - 8
service-daq/src/main/java/com/simuwang/daq/components/AbstractReportParser.java

@@ -3,6 +3,7 @@ package com.simuwang.daq.components;
 import cn.hutool.core.exceptions.ExceptionUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
+import com.simuwang.daq.dto.ReportExtInfo;
 import com.simuwang.daq.dto.ReportFundInfo;
 import com.simuwang.daq.dto.ReportInfo;
 import org.slf4j.Logger;
@@ -15,7 +16,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-public abstract class AbstractReportParser implements ReportParser {
+public abstract class AbstractReportParser<EXT extends ReportExtInfo> implements ReportParser {
     protected final Logger logger = LoggerFactory.getLogger(this.getClass());
     protected String filepath;
     protected Map<String, List<String>> watermarkListMap;
@@ -29,31 +30,33 @@ public abstract class AbstractReportParser implements ReportParser {
         }
         this.filepath = filepath;
         this.watermarkListMap = this.generateWatermarkMap(watermarkName);
+        ReportInfo reportInfo = null;
+        ReportFundInfo reportFundInfo = null;
+        List<EXT> exts = null;
         try {
             this.initParse();
-            ReportInfo reportInfo = this.parseReportInfo(fileId);
-            ReportFundInfo reportFundInfo = this.parseBaseInfo();
-            this.parseExtInfo();
+            reportInfo = this.parseReportInfo(fileId);
+            reportFundInfo = this.parseBaseInfo();
+            exts = this.parseExtInfo();
         } catch (Exception e) {
             this.logger.error("报告{} 解析错误\n{}", filepath, ExceptionUtil.stacktraceToString(e));
         }
-        this.saveResult();
+        this.saveResult(reportInfo, reportFundInfo, exts);
         watch.stop();
         if (this.logger.isInfoEnabled()) {
             this.logger.info("报告{} 解析结束!耗时:{}s", filepath, watch.getTotalTime(TimeUnit.SECONDS));
         }
     }
 
-
     protected abstract void initParse() throws IOException;
 
     protected abstract ReportInfo parseReportInfo(Integer fileId);
 
     protected abstract ReportFundInfo parseBaseInfo();
 
-    protected abstract void parseExtInfo();
+    protected abstract List<EXT> parseExtInfo();
 
-    protected abstract void saveResult();
+    protected abstract void saveResult(ReportInfo reportInfo, ReportFundInfo reportFundInfo, List<EXT> exts);
 
     private Map<String, List<String>> generateWatermarkMap(String watermarkName) {
         Map<String, List<String>> result = MapUtil.newHashMap(32);

+ 32 - 15
service-daq/src/main/java/com/simuwang/daq/components/PDMonthlyReportParser.java

@@ -8,6 +8,7 @@ import cn.hutool.core.util.StrUtil;
 import com.simuwang.base.common.exception.APIException;
 import com.simuwang.base.mapper.EmailFieldMappingMapper;
 import com.simuwang.base.pojo.dos.EmailFieldMappingDO;
+import com.simuwang.daq.dto.MonthlyReportNavInfo;
 import com.simuwang.daq.dto.ReportFundInfo;
 import com.simuwang.daq.dto.ReportInfo;
 import com.smppw.common.pojo.ValueLabelVO;
@@ -19,7 +20,6 @@ import technology.tabula.*;
 import technology.tabula.extractors.SpreadsheetExtractionAlgorithm;
 
 import java.io.IOException;
-import java.sql.Struct;
 import java.util.Calendar;
 import java.util.List;
 import java.util.Map;
@@ -33,11 +33,11 @@ import java.util.stream.Collectors;
  * @description pdf格式的月报解析
  */
 @Component("monthly-report:pdf")
-public class PDMonthlyReportParser extends AbstractReportParser {
+public class PDMonthlyReportParser extends AbstractReportParser<MonthlyReportNavInfo> {
     private final EmailFieldMappingMapper fieldMappingMapper;
+    private final List<Table> extNavTables = ListUtil.list(true);
     private String reportName = null;
     private Table baseInfoTable = null;
-    private List<Table> extNavTables = ListUtil.list(true);
     private List<ValueLabelVO> fieldMapper = null;
 
     public PDMonthlyReportParser(EmailFieldMappingMapper fieldMappingMapper) {
@@ -108,9 +108,32 @@ public class PDMonthlyReportParser extends AbstractReportParser {
         }
         // 匹配字段清洗字段
         ReportFundInfo reportFundInfo = new ReportFundInfo();
-        baseInfoMap.forEach((k, v) -> {
+        this.buildInfo(baseInfoMap, reportFundInfo);
+        return reportFundInfo;
+    }
+
+    @Override
+    protected List<MonthlyReportNavInfo> parseExtInfo() {
+        List<MonthlyReportNavInfo> exts = ListUtil.list(false);
+        List<Table> extNavTables = this.extNavTables;
+        for (Table extNavTable : extNavTables) {
+            Map<String, Object> extInfoMap = MapUtil.newHashMap(16);
+            for (int i = 0; i < extNavTable.getColCount(); i++) {
+                String key = extNavTable.getCell(0, i).getText();
+                String value = extNavTable.getCell(1, i).getText();
+                extInfoMap.put(key, value);
+            }
+            MonthlyReportNavInfo navInfo = new MonthlyReportNavInfo();
+            buildInfo(extInfoMap, navInfo);
+            exts.add(navInfo);
+        }
+        return exts;
+    }
+
+    private void buildInfo(Map<String, Object> extInfoMap, Object info) {
+        extInfoMap.forEach((k, v) -> {
             String fieldValue = StrUtil.toStringOrNull(v);
-            if (fieldValue.contains("-")) {
+            if (fieldValue.startsWith("-") || fieldValue.endsWith("-")) {
                 fieldValue = null;
             }
             if (fieldValue != null) {
@@ -120,28 +143,22 @@ public class PDMonthlyReportParser extends AbstractReportParser {
                 String fieldName = vo.getValue();
                 List<String> labels = StrUtil.split(vo.getLabel(), ",");
                 if (labels.contains(k)) {
-                    ReflectUtil.setFieldValue(reportFundInfo, fieldName, fieldValue);
+                    ReflectUtil.setFieldValue(info, fieldName, fieldValue);
                     break;
                 }
                 for (String label : labels) {
                     if (k.contains(label)) {
-                        ReflectUtil.setFieldValue(reportFundInfo, fieldName, fieldValue);
+                        ReflectUtil.setFieldValue(info, fieldName, fieldValue);
                         break;
                     }
                 }
             }
         });
-        return reportFundInfo;
     }
 
     @Override
-    protected void parseExtInfo() {
-
-    }
-
-    @Override
-    protected void saveResult() {
-
+    protected void saveResult(ReportInfo reportInfo, ReportFundInfo reportFundInfo, List<MonthlyReportNavInfo> exts) {
+        System.out.println("保存数据!");
     }
 
     /**

+ 43 - 0
service-daq/src/main/java/com/simuwang/daq/dto/MonthlyReportNavInfo.java

@@ -0,0 +1,43 @@
+package com.simuwang.daq.dto;
+
+public class MonthlyReportNavInfo extends ReportExtInfo {
+    private String valuationDate;
+
+    private String nav;
+
+    private String endTotalShares;
+
+    private String fundAssetSize;
+
+    public String getValuationDate() {
+        return valuationDate;
+    }
+
+    public void setValuationDate(String valuationDate) {
+        this.valuationDate = valuationDate;
+    }
+
+    public String getNav() {
+        return nav;
+    }
+
+    public void setNav(String nav) {
+        this.nav = nav;
+    }
+
+    public String getEndTotalShares() {
+        return endTotalShares;
+    }
+
+    public void setEndTotalShares(String endTotalShares) {
+        this.endTotalShares = endTotalShares;
+    }
+
+    public String getFundAssetSize() {
+        return fundAssetSize;
+    }
+
+    public void setFundAssetSize(String fundAssetSize) {
+        this.fundAssetSize = fundAssetSize;
+    }
+}

+ 13 - 0
service-daq/src/main/java/com/simuwang/daq/dto/ReportExtInfo.java

@@ -0,0 +1,13 @@
+package com.simuwang.daq.dto;
+
+public class ReportExtInfo {
+    private Integer fileId;
+
+    public Integer getFileId() {
+        return fileId;
+    }
+
+    public void setFileId(Integer fileId) {
+        this.fileId = fileId;
+    }
+}

+ 8 - 0
service-daq/src/main/java/com/simuwang/daq/service/ReportParseService.java

@@ -0,0 +1,8 @@
+package com.simuwang.daq.service;
+
+import org.springframework.stereotype.Service;
+
+@Service
+public class ReportParseService {
+//    private
+}

+ 2 - 2
service-manage/src/main/java/com/simuwang/manage/api/system/SysMenuController.java

@@ -1,7 +1,7 @@
 package com.simuwang.manage.api.system;
 
 import com.simuwang.base.common.support.MybatisPage;
-import com.simuwang.base.pojo.dto.DeleteByIdCmd;
+import com.simuwang.base.pojo.dto.DeleteByIdsCmd;
 import com.simuwang.base.pojo.dto.UpdateStatusCmd;
 import com.simuwang.base.pojo.dto.sys.MenuAddCmd;
 import com.simuwang.base.pojo.dto.sys.MenuEditCmd;
@@ -98,7 +98,7 @@ public class SysMenuController {
      */
     @SystemLog(value = "删除", type = SystemLog.Type.DELETE)
     @PostMapping("del")
-    public boolean deleteById(@Valid @RequestBody DeleteByIdCmd command) {
+    public boolean deleteById(@Valid @RequestBody DeleteByIdsCmd command) {
         this.service.delete(command);
         return true;
     }

+ 2 - 2
service-manage/src/main/java/com/simuwang/manage/api/system/SysRoleController.java

@@ -2,7 +2,7 @@ package com.simuwang.manage.api.system;
 
 import com.simuwang.base.common.support.MybatisPage;
 import com.simuwang.base.common.support.vo.OnlyIdNameVO;
-import com.simuwang.base.pojo.dto.DeleteByIdCmd;
+import com.simuwang.base.pojo.dto.DeleteByIdsCmd;
 import com.simuwang.base.pojo.dto.GetByIdQuery;
 import com.simuwang.base.pojo.dto.UpdateStatusCmd;
 import com.simuwang.base.pojo.dto.sys.RoleAddCmd;
@@ -85,7 +85,7 @@ public class SysRoleController {
      */
     @SystemLog(value = "删除", type = SystemLog.Type.DELETE)
     @PostMapping("del")
-    public boolean deleteById(@Valid @RequestBody DeleteByIdCmd command) {
+    public boolean deleteById(@Valid @RequestBody DeleteByIdsCmd command) {
         this.service.delete(command);
         return true;
     }

+ 2 - 2
service-manage/src/main/java/com/simuwang/manage/api/system/SysUserController.java

@@ -2,7 +2,7 @@ package com.simuwang.manage.api.system;
 
 import com.simuwang.base.common.support.MybatisPage;
 import com.simuwang.base.common.support.vo.OnlyIdNameVO;
-import com.simuwang.base.pojo.dto.DeleteByIdCmd;
+import com.simuwang.base.pojo.dto.DeleteByIdsCmd;
 import com.simuwang.base.pojo.dto.GetByIdQuery;
 import com.simuwang.base.pojo.dto.UpdateStatusCmd;
 import com.simuwang.base.pojo.dto.sys.*;
@@ -94,7 +94,7 @@ public class SysUserController {
      */
     @SystemLog(value = "删除", type = SystemLog.Type.DELETE)
     @PostMapping("del")
-    public boolean deleteById(@Valid @RequestBody DeleteByIdCmd command) {
+    public boolean deleteById(@Valid @RequestBody DeleteByIdsCmd command) {
         this.service.delete(command);
         return true;
     }

+ 3 - 1
service-manage/src/main/java/com/simuwang/manage/service/LoginService.java

@@ -63,7 +63,9 @@ public class LoginService {
                 .distinct().collect(Collectors.toList());
         // 用户权限处理
         List<SysMenuDO> menuList = this.userAuthService.listUserMenuByUserId(userId);
-        List<MenuTreeDTO> tempList = menuList.stream().map(MenuTreeDTO::new).collect(Collectors.toList());
+        // 过滤按钮
+        List<MenuTreeDTO> tempList = menuList.stream().filter(e -> !Objects.equals("F", e.getMenuType()))
+                .map(MenuTreeDTO::new).collect(Collectors.toList());
         // 菜单列表转树结构
         List<MenuTreeDTO> trees = TreeUtil.list2Tree(tempList, MenuTreeDTO::getId, MenuTreeDTO::getPid,
                 MenuTreeDTO::getChildren, MenuTreeDTO::setChildren, 0, MenuTreeDTO::getSort);

+ 4 - 4
service-manage/src/main/java/com/simuwang/manage/service/impl/system/SysMenuServiceImpl.java

@@ -9,8 +9,8 @@ import com.simuwang.base.common.exception.APIException;
 import com.simuwang.base.common.support.MybatisPage;
 import com.simuwang.base.common.support.command.BaseAddCmd;
 import com.simuwang.base.common.support.command.BaseEditCmd;
-import com.simuwang.base.common.support.command.BaseIdCmd;
 import com.simuwang.base.common.support.command.BaseIdStatusCmd;
+import com.simuwang.base.common.support.command.BaseIdsCmd;
 import com.simuwang.base.common.util.TreeUtil;
 import com.simuwang.base.components.UserAuthService;
 import com.simuwang.base.mapper.system.SysMenuMapper;
@@ -67,9 +67,9 @@ public class SysMenuServiceImpl implements SysMenuService {
     }
 
     @Override
-    public <C extends BaseIdCmd> void delete(C command) {
-        Integer id = command.getId();
-        this.mapper.deleteById(id);
+    public <C extends BaseIdsCmd> void delete(C command) {
+        List<Integer> ids = command.getIds();
+        this.mapper.deleteByIds(ids);
     }
 
     @Override

+ 6 - 4
service-manage/src/main/java/com/simuwang/manage/service/impl/system/SysRoleServiceImpl.java

@@ -7,8 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.simuwang.base.common.support.MybatisPage;
 import com.simuwang.base.common.support.command.BaseAddCmd;
 import com.simuwang.base.common.support.command.BaseEditCmd;
-import com.simuwang.base.common.support.command.BaseIdCmd;
 import com.simuwang.base.common.support.command.BaseIdStatusCmd;
+import com.simuwang.base.common.support.command.BaseIdsCmd;
 import com.simuwang.base.common.support.dos.OnlyIdNameDO;
 import com.simuwang.base.common.support.query.PageQuery;
 import com.simuwang.base.common.support.service.IService;
@@ -48,6 +48,8 @@ public class SysRoleServiceImpl implements SysRoleService {
 
     @Override
     public <Q extends PageQuery> void wrapQuery(QueryWrapper<SysRoleDO> wrapper, Q query) {
+        // 排除超级管理员
+        wrapper.ne("role_id", 1).notIn("role_key", "SYSTEM", "ADMIN");
         RoleQuery params = (RoleQuery) query;
         String keyword = params.getKeyword();
         if (StrUtil.isNotBlank(keyword)) {
@@ -87,9 +89,9 @@ public class SysRoleServiceImpl implements SysRoleService {
     }
 
     @Override
-    public <C extends BaseIdCmd> void delete(C command) {
-        Integer id = command.getId();
-        this.mapper.deleteById(id);
+    public <C extends BaseIdsCmd> void delete(C command) {
+        List<Integer> ids = command.getIds();
+        this.mapper.deleteByIds(ids);
     }
 
     @Override

+ 6 - 4
service-manage/src/main/java/com/simuwang/manage/service/impl/system/SysUserServiceImpl.java

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.simuwang.base.common.support.MybatisPage;
 import com.simuwang.base.common.support.command.BaseAddCmd;
 import com.simuwang.base.common.support.command.BaseEditCmd;
-import com.simuwang.base.common.support.command.BaseIdCmd;
+import com.simuwang.base.common.support.command.BaseIdsCmd;
 import com.simuwang.base.common.support.command.BaseIdStatusCmd;
 import com.simuwang.base.common.support.dos.OnlyIdNameDO;
 import com.simuwang.base.common.support.query.PageQuery;
@@ -55,6 +55,8 @@ public class SysUserServiceImpl implements SysUserService {
 
     @Override
     public <Q extends PageQuery> void wrapQuery(QueryWrapper<SysUserDO> wrapper, Q query) {
+        // 排除超级管理员
+        wrapper.notIn("user_id", 0, 1);
         UserQuery params = (UserQuery) query;
         String keyword = params.getKeyword();
         if (StrUtil.isNotBlank(keyword)) {
@@ -120,9 +122,9 @@ public class SysUserServiceImpl implements SysUserService {
     }
 
     @Override
-    public <C extends BaseIdCmd> void delete(C command) {
-        Integer id = command.getId();
-        this.mapper.deleteById(id);
+    public <C extends BaseIdsCmd> void delete(C command) {
+        List<Integer> ids = command.getIds();
+        this.mapper.deleteByIds(ids);
     }
 
     @Override