From d4920f7a0b3146a2218a210d3f93b655ff010eb3 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 01 二月 2024 17:14:13 +0800
Subject: [PATCH] 开发业务接口

---
 server/service/src/main/java/com/doumee/core/utils/Constants.java |  228 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 200 insertions(+), 28 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/core/utils/Constants.java b/server/service/src/main/java/com/doumee/core/utils/Constants.java
index 4fdef25..14fe22d 100644
--- a/server/service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -3,16 +3,20 @@
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.dao.business.model.Solutions;
+import com.doumee.dao.business.vo.CountCyclePriceVO;
+import io.swagger.models.auth.In;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
+import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
 import org.apache.commons.lang3.StringUtils;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
+import javax.servlet.ServletOutputStream;
+import java.io.*;
 import java.math.BigDecimal;
 import java.net.URL;
 import java.net.URLDecoder;
+import java.time.LocalDate;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.Date;
 import java.util.regex.Matcher;
@@ -76,6 +80,8 @@
     public static final String TAXES_FILE = "TAXES_FILE";
     public static final String APPLY_FILE ="APPLY_FILE" ;
     public static final String SETTLE_FILE ="SETTLE_FILE" ;
+    public static final String DU_FILE ="DU_FILE" ;
+    public static final String SIGN_DONE_NOTIFY_URL = "SIGN_DONE_NOTIFY_URL";
 
     /**
      * 浼佷笟鏁版嵁鏉ユ簮 0骞冲彴娉ㄥ唽 1鍚庡彴瀵煎叆
@@ -144,6 +150,52 @@
         }
         return d.intValue();
     }
+
+    public static long getAgeByIdCard(String idCard){
+        int birthYear = Integer.parseInt(idCard.substring(6, 10));
+        int birthMonth = Integer.parseInt(idCard.substring(10, 12));
+        int birthDay = Integer.parseInt(idCard.substring(12, 14));
+
+        LocalDate birthDate = LocalDate.of(birthYear, birthMonth, birthDay);
+        LocalDate currentDate = LocalDate.now();
+        long age = ChronoUnit.YEARS.between(birthDate, currentDate);
+        return age;
+    }
+
+
+    public static CountCyclePriceVO countPriceVO(Date startDate, Solutions solutions){
+        CountCyclePriceVO countCyclePriceVO = new CountCyclePriceVO();
+        if(solutions.getInsureCycleUnit().equals(Constants.ZERO)){
+            countCyclePriceVO.setEndDate(DateUtil.afterDateByType(startDate,0,solutions.getInsureCycle()));
+        }else if(solutions.getInsureCycleUnit().equals(Constants.TWO)){
+            Integer monthDays = DateUtil.monthDays(startDate);
+            Date afterDate = DateUtil.afterDateByType(startDate,0,monthDays);
+            countCyclePriceVO.setEndDate(DateUtil.afterDateByType(afterDate,0,-1));
+        }else if(solutions.getInsureCycleUnit().equals(Constants.THREE)){
+            Date afterDate = DateUtil.afterDateByType(startDate,2,solutions.getInsureCycle());
+            countCyclePriceVO.setEndDate(DateUtil.afterDateByType(afterDate,0,-1));
+        }
+        countCyclePriceVO.setCyclePrice(Constants.countDetailFee(solutions,countCyclePriceVO.getEndDate(),startDate));
+        return countCyclePriceVO;
+    }
+
+    public static Integer getSexByIdCard(String idCard){
+        Pattern pattern = Pattern.compile("\\d{17}[\\d|x]"); // 瀹氫箟韬唤璇佸彿鐮佹牸寮忕殑姝e垯琛ㄨ揪寮�
+        Matcher matcher = pattern.matcher(idCard);
+        Integer sex = 1;
+        if (matcher.matches()) {
+            int genderCode = Integer.parseInt(idCard.substring(16, 17)); // 浠庣17浣嶅紑濮嬫彁鍙栨�у埆缂栫爜锛堝鏁颁负鐢锋�э紝鍋舵暟涓哄コ鎬э級
+            if ((genderCode % 2 == 1) ) {
+                sex = 1;
+            } else {
+                sex = 2;
+            }
+        } else {
+           sex = -1;
+        }
+        return sex;
+    }
+
     /**
      * 鐘舵�� 0宸蹭繚瀛樸��1寰呭鏍搞��2瀹℃牳閫氳繃銆�3閫�鍥炰慨鏀广��4瀹℃牳椹冲洖銆�5寰呮湇鍔℃満鏋勭‘璁ゃ��6鏈嶅姟鏈烘瀯鎷掔粷銆�7宸插垎閰嶆湇鍔℃満鏋勩��8璇婃柇涓�
      * 锛堟垚鍔熶笂浼犵涓�浠芥湇鍔¤祫鏂欙級銆�9鏈嶅姟瀹屾垚銆�10宸插垎閰嶈瘎鍒嗕笓瀹躲��11宸插畬鎴愶紙涓撳涓婁紶璇勫垎锛� 12閫�鍥炰慨鏀逛腑 13 宸插畬鎴愰��鍥炰慨鏀�
@@ -372,8 +424,9 @@
         BD_SIGNED_PDF(9, "绛剧讲鍚庝繚鍗曠敵璇疯〃PDF", "绛剧讲鍚庝繚鍗曠敵璇疯〃PDF"),
         COM_SING_IMG(10, "浼佷笟鍗扮珷", "浼佷笟鍗扮珷"),
         BD_DONE_PDF(11, "鏈�缁堟姤鍗�", "鏈�缁堟姤鍗�"),
-
         CA_PD_PDF(12, "鏈�缁堟姤鍗�", "鏈�缁堟姤鍗�"),
+        CA_APPLY_JIAJIAN_SIGN(13, "鍔犲噺淇濈敵璇风绔犳枃浠�", "鍔犲噺淇濈敵璇风绔犳枃浠�"),
+        CA_APPLY_CHANGEUNIT_SIGN(14, "鎹㈠巶鐢宠绛剧珷鏂囦欢", "鎹㈠巶鐢宠绛剧珷鏂囦欢"),
 
 
         ;
@@ -624,6 +677,55 @@
 
     }
 
+    public  enum ApplyCollectStatus {
+        DSP(0, "寰呭鎵�"),
+        DCD(1, "寰呭嚭鍗�"),
+        BZZ(2, "淇濋殰涓�"),
+        YGQ(3, "宸茶繃鏈�"),
+        YTH(4, "宸查��鍥�"),
+        THSQZ(5, "鐢宠閫�鍥�"),
+        YGB(6, "宸插叧闂�"),
+        DQYQZ(7, "寰呯缃�"),
+        ;
+        // 鎴愬憳鍙橀噺
+        private String name;
+        private int key;
+
+        // 鏋勯�犳柟娉�
+        ApplyCollectStatus(int key, String name) {
+            this.name = name;
+            this.key = key;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getName(int index) {
+            for (ApplyCollectStatus c : ApplyCollectStatus.values()) {
+                if (c.getKey() == index) {
+                    return c.name;
+                }
+            }
+            return null;
+        }
+
+        // get set 鏂规硶
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+    }
+
 
     public  enum ApplyLogType {
         UPLOAD(0, "鎻愪氦鎶曚繚","鎻愪氦鎰忚锛�${param}"),
@@ -649,6 +751,9 @@
         CA_PALTFORM_REFUSE_APPLY(20, "椹冲洖閫�鍥炵敵璇�",""),
         CA_PALTFORM_EDIT_PIDAN(21, "淇敼鎵瑰崟","淇敼鍘熷洜锛�${param}"),
         PALTFORM_EDIT_BD(22, "淇敼淇濆崟","淇敼鍘熷洜锛�${param}"),
+        CA_JIAJIAN_APPLY_SIGN(23, "鍔犲噺淇濈敵璇蜂紒涓氱绔�",""),
+
+        CA_CHANGUNIT_APPLY_SIGN(24, "鎹㈡垚鐢宠浼佷笟绛剧珷",""),
         ;
         // 鎴愬憳鍙橀噺
         private String name;
@@ -707,28 +812,31 @@
     }
 
     public  enum InsuranceApplyStatus {
-        UPLOAD(0, "鎻愪氦鎶曚繚",""),
-        PLATFORM_RETURN(1, "瀹℃牳涓嶉�氳繃","鎻愪氦鎰忚锛�${param}"),
-        WAIT_SIGNATURE(2, "宸蹭笂浼犱唬绛剧敵璇疯〃寰呬紒涓氱绔�",""),
-        SIGNATURE(3, "宸茬绔犲緟涓婁紶淇濋櫓鍗�",""),
-        FAIL_RETURN(4, "淇濆崟鍑哄叿澶辫触閫�鍥�",""),
-        UPLOAD_INSURANCE(5, "淇濆崟瀹屾垚","淇濋櫓鐢熸晥璧锋湡锛�${param}鍙樻洿涓�${param1}"),
-        COMPANY_BACK_APPLY_UPLOAD(6, "浼佷笟鐢宠閫�鍥�(鎻愪氦鎶曚繚)","鎻愪氦鎰忚锛�${param}"),
-        COMPANY_BACK_APPLY_WAIT_SIGNATURE(7, "浼佷笟鐢宠閫�鍥�(寰呯绔�)","鎻愪氦鎰忚锛�${param}"),
-        COMPANY_BACK_APPLY_SIGNATURE(8, "浼佷笟鐢宠閫�鍥�(宸茬绔�)","鎻愪氦鎰忚锛�${param}"),
-        CLOSE(9, "璁㈠崟鍏抽棴",""),
-        PLATFORM_CHECK_PASS(10,"骞冲彴鎶曚繚瀹℃牳閫氳繃",""),
+        UPLOAD(0, "鎻愪氦鎶曚繚","",0),
+        PLATFORM_RETURN(1, "瀹℃牳涓嶉�氳繃","鎻愪氦鎰忚锛�${param}",4),
+        WAIT_SIGNATURE(2, "宸蹭笂浼犱唬绛剧敵璇疯〃寰呬紒涓氱绔�","",7),
+        SIGNATURE(3, "宸茬绔犲緟涓婁紶淇濋櫓鍗�","",1),
+        FAIL_RETURN(4, "淇濆崟鍑哄叿澶辫触閫�鍥�","",4),
+        UPLOAD_INSURANCE(5, "淇濆崟瀹屾垚","淇濋櫓鐢熸晥璧锋湡锛�${param}鍙樻洿涓�${param1}",2),
+        COMPANY_BACK_APPLY_UPLOAD(6, "浼佷笟鐢宠閫�鍥�(鎻愪氦鎶曚繚)","鎻愪氦鎰忚锛�${param}",5),
+        COMPANY_BACK_APPLY_WAIT_SIGNATURE(7, "浼佷笟鐢宠閫�鍥�(寰呯绔�)","鎻愪氦鎰忚锛�${param}",5),
+        COMPANY_BACK_APPLY_SIGNATURE(8, "浼佷笟鐢宠閫�鍥�(宸茬绔�)","鎻愪氦鎰忚锛�${param}",5),
+        CLOSE(9, "璁㈠崟鍏抽棴","",6),
+        PLATFORM_CHECK_PASS(10,"骞冲彴鎶曚繚瀹℃牳閫氳繃","鎻愪氦鎰忚锛�${param}",1),
         ;
         // 鎴愬憳鍙橀噺
         private String name;
         private String info;
         private int key;
+        private int collectStatus;
+
 
         // 鏋勯�犳柟娉�
-        InsuranceApplyStatus(int key, String name,String info) {
+        InsuranceApplyStatus(int key, String name,String info,int collectStatus) {
             this.name = name;
             this.key = key;
             this.info = info;
+            this.collectStatus = collectStatus;
         }
 
         // 鏅�氭柟娉�
@@ -736,6 +844,25 @@
             for (InsuranceApplyStatus c : InsuranceApplyStatus.values()) {
                 if (c.getKey() == index) {
                     return c.name;
+                }
+            }
+            return null;
+        }
+        public static List<Integer> getKesByStatus(Integer collectStatus) {
+            List<Integer>  list = new ArrayList<>();
+            if(collectStatus!=null){
+                for (InsuranceApplyStatus c : InsuranceApplyStatus.values()) {
+                    if (Constants.equalsInteger(c.getCollectStatus() ,collectStatus)) {
+                        list.add(c.getKey());
+                    }
+                }
+            }
+            return list;
+        }
+        public static Integer getCollectStatus(Integer index) {
+            for (InsuranceApplyStatus c : InsuranceApplyStatus.values()) {
+                if (Constants.equalsInteger(c.getKey() , index)) {
+                    return c.collectStatus;
                 }
             }
             return null;
@@ -773,6 +900,14 @@
         public void setInfo(String info) {
             this.info = info;
         }
+
+        public int getCollectStatus() {
+            return collectStatus;
+        }
+
+        public void setCollectStatus(int collectStatus) {
+            this.collectStatus = collectStatus;
+        }
     }
 
     public static BigDecimal countDetailFee(Solutions solutions,Date startDate, Date endDate){
@@ -783,6 +918,7 @@
         }
         return solutions.getPrice().multiply(new BigDecimal(cycle));
     }
+
     public static BigDecimal countDetailFee(int timeUnit ,BigDecimal price,Date startDate, Date endDate){
         //鏌ヨ淇濋櫓瀹為檯鍛ㄦ湡
         Integer cycle = DateUtil.calculateBetween(endDate,startDate,timeUnit);
@@ -894,12 +1030,12 @@
         UPLOAD(0, "鎻愪氦鎶ユ","鎻愪氦鎰忚锛�${param}"),
         PLATFORM_RETURN(1, "骞冲彴閫�鍥�","鎻愪氦鎰忚锛�${param}"),
         PLATFORM_CONFIRM_INFORMATION(2, "骞冲彴纭璧勬枡",""),
-        PLATFORM_FINISH(3, "骞冲彴瀹屾垚鍙楃悊","鎻愪氦鎰忚锛�${param}"),
+        PLATFORM_FINISH(3, "缁撴鎻愪氦","鎻愪氦鎰忚锛�${param}"),
         UPDATE_DATA(4, "淇敼淇℃伅","鎻愪氦鎰忚锛�${param}"),
         SUPPLEMENT(5, "琛ュ厖璇存槑","鎻愪氦鎰忚锛�${param}"),
         PLATFORM_LP_DEAL(6, "骞冲彴鐞嗚禂澶勭悊","鎻愪氦鎰忚锛�${param}"),
-        PLATFORM_REMARK(7, "骞冲彴澶囨敞鏍囩",""),
-        PLATFORM_ADDCODE(8, "骞冲彴娣诲姞鎶ユ鍙�",""),
+        PLATFORM_REMARK(7, "骞冲彴澶囨敞鏍囩","${param}"),
+        PLATFORM_ADDCODE(8, "骞冲彴娣诲姞鎶ユ鍙�","澶囨鍙凤細${param}"),
         PLATFORM_UN_AGREE_BACK(9, "浼佷笟涓嬭浇璧勬枡",""),
         PLATFORM_DOWNLOAD(10, "骞冲彴涓嬭浇璧勬枡",""),
         PLATFORM_CHECK_PASS(11, "骞冲彴涓婁紶璧勬枡",""),
@@ -964,27 +1100,37 @@
 
 
     public  enum ApplyChangeLogStatus {
-        UPLOAD(0, "鍙戣捣鐢宠"),
-        RETURN_APPLY(3, "鍙戣捣閫�鍥炵敵璇�"),
-        PLATFORM_AGREE(4, "骞冲彴瀹℃壒閫氳繃"),
-        PLATFORM_UN_AGREE(0, "瀹℃壒椹冲洖"),
-        CLOSE(5, "鍏抽棴"),
+        UPLOAD(0, "鍙戣捣鐢宠",""),
+        RETURN_APPLY(3, "鍙戣捣閫�鍥炵敵璇�","鎻愪氦鎰忚锛�${param}"),
+        PLATFORM_AGREE(4, "骞冲彴瀹℃壒閫氳繃" ,"鎻愪氦鎰忚锛�${param}"),
+        PLATFORM_UN_AGREE(0, "瀹℃壒椹冲洖","鎻愪氦鎰忚锛�${param}"),
+        CLOSE(5, "鍏抽棴",""),
         ;
         // 鎴愬憳鍙橀噺
         private String name;
+        private String info;
         private int key;
 
         // 鏋勯�犳柟娉�
-        ApplyChangeLogStatus(int key, String name) {
+        ApplyChangeLogStatus(int key, String name,String info) {
             this.name = name;
+            this.info = info;
             this.key = key;
         }
 
         // 鏅�氭柟娉�
         public static String getName(int index) {
-            for (ApplyLogType c : ApplyLogType.values()) {
+            for (ApplyChangeLogStatus c : ApplyChangeLogStatus.values()) {
                 if (c.getKey() == index) {
                     return c.name;
+                }
+            }
+            return null;
+        }
+        public static String getInfo(int index) {
+            for (ApplyChangeLogStatus c : ApplyChangeLogStatus.values()) {
+                if (c.getKey() == index) {
+                    return c.info;
                 }
             }
             return null;
@@ -1005,6 +1151,14 @@
 
         public void setKey(int key) {
             this.key = key;
+        }
+
+        public String getInfo() {
+            return info;
+        }
+
+        public void setInfo(String info) {
+            this.info = info;
         }
 
     }
@@ -1222,7 +1376,8 @@
             InputStream inStream = null;
             OutputStream os = null;
             try {
-                file = File.createTempFile("", fileName);
+                String tempDir = System.getProperty("java.io.tmpdir")+fileName;
+                file = new File(tempDir);
                 //涓嬭浇
                 urlfile = new URL(url);
                 inStream = urlfile.openStream();
@@ -1252,4 +1407,21 @@
 
         return file;
     }
+    public static void packFilesToZip(List<File> files,    ServletOutputStream os) throws IOException {
+        try (ZipArchiveOutputStream zipOutputStream = new ZipArchiveOutputStream(os)) {
+            for (File file : files) {
+                ZipArchiveEntry entry = new ZipArchiveEntry(file.getName());
+                zipOutputStream.putArchiveEntry(entry);
+                try (FileInputStream fileInputStream = new FileInputStream(file)) {
+                    byte[] buffer = new byte[1024];
+                    int length;
+                    while ((length = fileInputStream.read(buffer)) > 0) {
+                        zipOutputStream.write(buffer, 0, length);
+                    }
+                }
+                zipOutputStream.closeArchiveEntry();
+                file.delete();
+            }
+        }
+    }
 }

--
Gitblit v1.9.3