Browse Source

1解析xlsx表为Json数据、2格式化Json数据,3,maven子工程依赖关系调整

wucl 9 months ago
parent
commit
35da705a5f

+ 5 - 0
biz-base/pom.xml

@@ -45,6 +45,11 @@
             <artifactId>aspose-words</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.aspose</groupId>
+            <artifactId>aspose-cells</artifactId>
+        </dependency>
+
 
     </dependencies>
     <dependencyManagement>

File diff suppressed because it is too large
+ 33 - 6
biz-base/src/test/java/com/dayou/FreeMarkTest.java


+ 0 - 2
biz-base/src/test/java/com/dayou/WordSimpleTests.java

@@ -14,9 +14,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 
 /**

+ 10 - 6
common/pom.xml

@@ -23,16 +23,15 @@
 
     <dependencies>
         <dependency>
+            <groupId>com.dayou</groupId>
+            <artifactId>domain</artifactId>
+            <version>0.0.1-PRODUCTIVITY-PLATFORM</version>
+        </dependency>
+        <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
             <scope>compile</scope>
         </dependency>
-
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-boot-starter</artifactId>
-        </dependency>
-
         <!--模板代码生成-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -90,6 +89,11 @@
             <artifactId>freemarker</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+
     </dependencies>
     <dependencyManagement>
         <dependencies>

+ 36 - 0
common/src/main/java/com/dayou/exception/BusinessException.java

@@ -0,0 +1,36 @@
+package com.dayou.exception;
+
+/**
+ * 业务异常
+ */
+public class BusinessException extends RuntimeException {
+    private static final long serialVersionUID = 1L;
+
+    protected final String message;
+
+    protected Integer code;
+
+
+    public BusinessException(String message) {
+        this.message = message;
+    }
+
+    public BusinessException(String message, String code) {
+        this.message = message;
+        this.code = Integer.valueOf(code);
+    }
+
+    public BusinessException(String message, Throwable e) {
+        super(message, e);
+        this.message = message;
+    }
+
+    @Override
+    public String getMessage() {
+        return message;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+}

+ 86 - 0
common/src/main/java/com/dayou/exception/ErrorCode.java

@@ -0,0 +1,86 @@
+package com.dayou.exception;
+
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.util.Objects;
+
+/**
+ * Define the error id.
+ */
+public class ErrorCode {
+    public static final ErrorCode CUSTOM_ERROR = ErrorCode("10010", "{0}");
+    public static final ErrorCode DEFAULTERROR = ErrorCode("10001", "系统繁忙");
+    public static final ErrorCode DATA_NOT_EXISTS = ErrorCode("004", "数据不存在");
+
+
+    private String code;
+    private String errorMsg;
+
+    public static ErrorCode ErrorCode(String code, String errorMsg) {
+        return new ErrorCode(code, errorMsg);
+    }
+
+    private ErrorCode() {
+    }
+
+
+    public ErrorCode(String code, String errorMsg) {
+        this.code = code;
+        this.errorMsg = errorMsg;
+    }
+
+    public static void throwBusinessException(ErrorCode errorCode, Object... values) {
+        throw buildBusinessException(errorCode, values);
+    }
+
+    public static BusinessException buildBusinessException(ErrorCode errorCode, Object... values) {
+        String message = errorCode.errorMsg;
+        if (ArrayUtils.isNotEmpty(values)) {
+            for (int i = 0; i < values.length; i++) {
+                if (message.contains("{") && message.contains("}")) {
+                    message = message.replaceFirst("\\{" + i + "\\}", values[i].toString());
+                } else {
+                    message += " " + values[i].toString() + " ";
+                }
+            }
+        }
+
+        return new BusinessException(message, errorCode.code);
+    }
+
+    public static void throwBusinessException(String msg, String code) {
+        throw new BusinessException(msg, code == null ? DEFAULTERROR.getCode() : code);
+    }
+
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getErrorMsg() {
+        return errorMsg;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this)
+                .append("id", code)
+                .append("errorMsg", errorMsg)
+                .toString();
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public void setErrorMsg(String errorMsg) {
+        this.errorMsg = errorMsg;
+    }
+
+    public static void throwExceptionIfNull(Object o){
+        if(Objects.isNull(o)){
+            throwBusinessException(DATA_NOT_EXISTS);
+        }
+    }
+}

+ 3 - 1
common/src/main/java/com/dayou/result/Status.java

@@ -8,7 +8,7 @@ public enum Status {
     REQUEST_ERROR(502,"请求异常"),
     NOT_LOGIN(701,"用户未登录"),
     NOT_ROLE(702,"用户无角色"),
-    NOT_PERMISSION(703,"用户无权限")
+    NOT_PERMISSION(703,"用户无权限"),
     ;
     //状态码
     private Integer code;
@@ -31,5 +31,7 @@ public enum Status {
     public String toString() {
         return code+":"+message;
     }
+
+
 }
 

+ 0 - 2
common/src/main/java/com/dayou/utils/AsposeWordUtil.java

@@ -1,7 +1,6 @@
 package com.dayou.utils;
 
 import com.aspose.words.*;
-import com.aspose.words.Font;
 import com.aspose.words.net.System.Data.DataRow;
 import com.aspose.words.net.System.Data.DataTable;
 import com.dayou.annotation.WordTableColumn;
@@ -17,7 +16,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;

+ 44 - 0
common/src/main/java/com/dayou/utils/HouseDocumentUtil.java

@@ -0,0 +1,44 @@
+package com.dayou.utils;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.dayou.enums.HouseTargetTableColumn;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 房地产报告相关工具类
+ */
+public class HouseDocumentUtil {
+
+    /**
+     * 格式化原始估价对象一览表json数据,筛出非估价对象行,填充合并单元格的属性值
+     * @param jsonArray
+     * @return
+     */
+    public static JSONArray houseTargetsFormat(JSONArray jsonArray){
+        JSONArray targets = new JSONArray();
+        if (jsonArray.size()>1){
+            JSONObject jsonObject = (JSONObject) jsonArray.get(0);
+            @SuppressWarnings("unchecked")
+            Set<String> columns = jsonObject.keySet();
+            for (int i = 0; i < jsonArray.size(); i++){
+                JSONObject item  = (JSONObject) jsonArray.get(i);
+                if (item.get(HouseTargetTableColumn.LOCATION.getZhName())!=null
+                    && item.get(HouseTargetTableColumn.CERTIFICATE_NO.getZhName())!=null){
+                    for (String key : columns){
+                        if (item.get(key)==null || item.get(key)==""){
+                            JSONObject lastItem  = (JSONObject) jsonArray.get(i-1);
+                            item.set(key, lastItem.get(key));
+                        }
+                    }
+                    targets.add(item);
+                }
+            }
+        }
+        return targets;
+    }
+}

+ 39 - 0
common/src/main/java/com/dayou/utils/JsonUtil.java

@@ -0,0 +1,39 @@
+package com.dayou.utils;
+
+import cn.hutool.json.JSONArray;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+/**
+ * JSON工具类
+ */
+public class JsonUtil {
+
+    /**
+     * 从JSON文件读取json数组
+     * @param filePath
+     * @return
+     * @throws IOException
+     */
+    public static JSONArray file2JsonArray(String filePath) throws IOException {
+        return new JSONArray(
+                new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8));
+
+    }
+
+    /**
+     * 将JSON数组数据输出到文件
+     * @param jsonArray
+     * @param filePath
+     * @throws IOException
+     */
+    public static void jsonArray2File(JSONArray jsonArray, String filePath) throws IOException {
+        FileOutputStream fos = new FileOutputStream(filePath);
+        fos.write(jsonArray.toString().getBytes());
+        fos.close();
+    }
+}

+ 9 - 3
domain/pom.xml

@@ -23,10 +23,16 @@
 
     <dependencies>
         <dependency>
-            <groupId>com.dayou</groupId>
-            <artifactId>common</artifactId>
-            <version>0.0.1-PRODUCTIVITY-PLATFORM</version>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>compile</scope>
         </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+        </dependency>
+
     </dependencies>
     <dependencyManagement>
         <dependencies>

+ 42 - 0
domain/src/main/java/com/dayou/enums/HouseTargetTableColumn.java

@@ -0,0 +1,42 @@
+package com.dayou.enums;
+
+/**
+ * 房地产报告估价对象一览表
+ * 表头字段
+ */
+public enum HouseTargetTableColumn {
+
+    ID("ID","估价对象"),
+    NO("NO","序号"),
+    CERTIFICATE_NO("CERTIFICATE_NO","权属证书号"),
+    OWE_SHIP_USER("OWE_SHIP_USER","权利人"),
+    LOCATION("LOCATION","坐落"),
+    AT_FLOOR("AT_FLOOR","所在楼层"),
+    STRUCTURE("STRUCTURE","结构"),
+    USE_TO("USE_TO","用途"),
+    OUTER_ACREAGE("OUTER_ACREAGE","分摊或占用土地使用权面积(㎡)"),
+    ACREAGE("ACREAGE","建筑面积(㎡)"),
+    PRICE("PRICE","单价(元/㎡)"),
+    AMOUNT("AMOUNT","总价(万元)"),
+    LAND_CERTIFICATE_NO("LAND_CERTIFICATE_NO","国有土地使用证号"),
+    LAND_TYPE("LAND_TYPE","地类(用途)"),
+
+    ;
+
+    HouseTargetTableColumn(String code, String zhName) {
+        this.code = code;
+        this.zhName = zhName;
+    }
+
+    private String code;
+
+    private String zhName;
+
+    public String getZhName() {
+        return zhName;
+    }
+
+    public String getCode() {
+        return code;
+    }
+}

+ 14 - 0
pom.xml

@@ -39,6 +39,8 @@
         <aspose-words.version>20.12</aspose-words.version>
         <jsoup.version>1.11.3</jsoup.version>
         <freemarker.version>2.3.29</freemarker.version>
+        <aspose-cells.version>21.11</aspose-cells.version>
+        <commons-lang3.version>3.7</commons-lang3.version>
     </properties>
 
     <dependencyManagement>
@@ -147,6 +149,12 @@
             </dependency>
 
             <dependency>
+                <groupId>com.aspose</groupId>
+                <artifactId>aspose-cells</artifactId>
+                <version>${aspose-cells.version}</version>
+            </dependency>
+
+            <dependency>
                 <!-- jsoup HTML parser library @ https://jsoup.org/ -->
                 <groupId>org.jsoup</groupId>
                 <artifactId>jsoup</artifactId>
@@ -158,6 +166,12 @@
                 <artifactId>freemarker</artifactId>
                 <version>${freemarker.version}</version>
             </dependency>
+
+            <dependency>
+                <groupId>org.apache.commons</groupId>
+                <artifactId>commons-lang3</artifactId>
+                <version>${commons-lang3.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 

+ 5 - 0
service/pom.xml

@@ -24,6 +24,11 @@
     <dependencies>
         <dependency>
             <groupId>com.dayou</groupId>
+            <artifactId>common</artifactId>
+            <version>0.0.1-PRODUCTIVITY-PLATFORM</version>
+        </dependency>
+        <dependency>
+            <groupId>com.dayou</groupId>
             <artifactId>dao</artifactId>
             <version>0.0.1-PRODUCTIVITY-PLATFORM</version>
         </dependency>