diff --git a/ServiceSite/facade/src/main/java/com/seasky/seaskyocr/api/IInvoiceSettingController.java b/ServiceSite/facade/src/main/java/com/seasky/seaskyocr/api/IInvoiceSettingController.java
index bfe7e07327b006942962ba19450856227af0c8b7..df9076f56a763320f039dd753c95868f98bf9a4a 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/seaskyocr/api/IInvoiceSettingController.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/seaskyocr/api/IInvoiceSettingController.java
@@ -27,6 +27,24 @@ public interface IInvoiceSettingController {
     @PostMapping(path = "createInvoiceSetting")
     Result<Long> createInvoiceSetting(@RequestBody InvoiceSettingCmd cmd);
 
+//    @PostMapping("pc/v1/importInvoiceSetting")
+//    Result<Object> importInvoiceSetting(HttpServletRequest request, HttpServletResponse response, @RequestBody MultipartFile file) throws Exception;
+
+//    @PostMapping("pc/v1/exportInvoiceSetting")
+//    Result<Object> exportInvoiceSetting(HttpServletRequest request, HttpServletResponse response,@RequestBody InvoiceSettingPageQry qry);
+
+//    @GetMapping("pc/v1/downloadInvoiceSettingTemplate")
+//    Result<Object> downloadInvoiceSettingTemplate(HttpServletRequest request, HttpServletResponse response);
+
+//    @PostMapping("pc/v1/importInvoicePropertySetting")
+//    Result<Object> importInvoicePropertySetting(HttpServletRequest request, HttpServletResponse response, @RequestBody MultipartFile file) throws Exception;
+
+//    @PostMapping("pc/v1/exportInvoicePropertySetting")
+//    Result<Object> exportInvoicePropertySetting(HttpServletRequest request, HttpServletResponse response,@RequestBody InvoicePropertyPageQry qry);
+
+//    @GetMapping("pc/v1/downloadInvoicePropertySettingTemplate")
+//    Result<Object> downloadInvoicePropertySettingTemplate(HttpServletRequest request, HttpServletResponse response);
+
     @PostMapping(path = "modifyInvoiceSetting")
     Result<Long> modifyInvoiceSetting(@RequestBody InvoiceSettingCmd cmd);
 
diff --git a/ServiceSite/src/main/java/com/seasky/seaskyocr/application/command/claimAudit/ClaimAuditCmdServiceImpl.java b/ServiceSite/src/main/java/com/seasky/seaskyocr/application/command/claimAudit/ClaimAuditCmdServiceImpl.java
index 6f4b21cdffcbd98687ca6d71b155ec95baa488fb..c7e2f250d220216188f3635ce3ec21a3c1f3c32d 100644
--- a/ServiceSite/src/main/java/com/seasky/seaskyocr/application/command/claimAudit/ClaimAuditCmdServiceImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/seaskyocr/application/command/claimAudit/ClaimAuditCmdServiceImpl.java
@@ -47,6 +47,8 @@ import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.multipart.MultipartFile;
@@ -145,7 +147,7 @@ public class ClaimAuditCmdServiceImpl implements ClaimAuditCmdService {
                 for (int i = 0; i < jsonArray.size(); i++) {
                     String rule = jsonArray.get(i).toString();
                     String jsonValue = ClaimAuditUtil.getJsonValue(ocrResult, rule);
-                    log.info("--->rule:"+rule+"|| value:"+jsonValue);
+                   // log.info("--->rule:"+rule+"|| value:"+jsonValue);
                     if (!Objects.isNull(propertyMap.get(entry.getKey()))){
                         ClaimAuditOcrOut build = ClaimAuditOcrOut.builder()
                                 .key(entry.getKey())
@@ -301,16 +303,7 @@ public class ClaimAuditCmdServiceImpl implements ClaimAuditCmdService {
             }
             log.info("--->>>浠呰瘑鍒皟鐢ㄥ悎鍚堟帴鍙�");
             //todo 璋冪敤鍚堝悎鎺ュ彛
-            List<Map<String, Object>> maps = transactionService.ClaimAuditInvoice(file, invoiceCmd);
-            //todo 澶囨敞鎽╂槑鎺ュ彛璇嗗埆鍑虹幇寮傚父鐨勫彂绁�
-            String hashId = null;
-            try {
-                hashId = String.valueOf(Base64.encodeBase64String(file.getBytes()).hashCode());
-            } catch (IOException f) {
-                throw ExceptionUtil.getException(null,"hsahId鑾峰彇澶辫触锛�");
-            }
-            invoiceRepository.saveRemark(hashId);
-            return maps;
+            return transactionService.ClaimAuditInvoice(file, invoiceCmd);
         }
     }
 
@@ -642,7 +635,7 @@ public class ClaimAuditCmdServiceImpl implements ClaimAuditCmdService {
                     for (int i = 0; i < jsonArray.size(); i++) {
                         String rule = jsonArray.get(i).toString();
                         String jsonValue = ClaimAuditUtil.getJsonValue(ocrResult, rule);
-                        log.info("--->rule:"+rule+"|| value:"+jsonValue);
+                        //log.info("--->rule:"+rule+"|| value:"+jsonValue);
                         if (!Objects.isNull(propertyMap.get(entry.getKey()))){
                             ClaimAuditOcrOut build = ClaimAuditOcrOut.builder()
                                     .key(entry.getKey())
@@ -817,7 +810,7 @@ public class ClaimAuditCmdServiceImpl implements ClaimAuditCmdService {
                     for (int i = 0; i < jsonArray.size(); i++) {
                         String rule = jsonArray.get(i).toString();
                         String jsonValue = ClaimAuditUtil.getJsonValueForMoMing(ocrResult, rule);
-                        log.info("--->rule:"+rule+"|| value:"+jsonValue);
+                        //log.info("--->rule:"+rule+"|| value:"+jsonValue);
                         if (!Objects.isNull(propertyMap.get(entry.getKey()))){
                             ClaimAuditOcrOut build = ClaimAuditOcrOut.builder()
                                     .key(entry.getKey())
@@ -1211,6 +1204,7 @@ public class ClaimAuditCmdServiceImpl implements ClaimAuditCmdService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED )
     public Long createInvoiceSetting(InvoiceSettingCmd cmd) {
         InvoiceSettingAggregate agg = InvoiceSettingAssembler.ToAgg(cmd);
         Long check = invoiceSettingRepository.check(agg);
@@ -1263,6 +1257,7 @@ public class ClaimAuditCmdServiceImpl implements ClaimAuditCmdService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED )
     public Long createInvoicePropertitySetting(InvoicePropertySettingCmd cmd) {
         InvoicePropertySettingAggregate agg = InvoiceSettingAssembler.ToPropertyAgg(cmd);
         Long check = invoicePropertySettingRepository.check(agg);
diff --git a/ServiceSite/src/main/java/com/seasky/seaskyocr/application/command/claimAudit/TransactionalService.java b/ServiceSite/src/main/java/com/seasky/seaskyocr/application/command/claimAudit/TransactionalService.java
index d20b10b535facc8724c6681a62b428c01f6348ca..2bf8e6c7b95621573a7c25381c2c1734ba2fd86c 100644
--- a/ServiceSite/src/main/java/com/seasky/seaskyocr/application/command/claimAudit/TransactionalService.java
+++ b/ServiceSite/src/main/java/com/seasky/seaskyocr/application/command/claimAudit/TransactionalService.java
@@ -1,6 +1,8 @@
 package com.seasky.seaskyocr.application.command.claimAudit;
 
 import com.seasky.seaskyocr.dto.invoice.InvoiceCmd;
+import com.seasky.seaskyocr.interfaces.controller.excel.InvoicePropertySettingTemplate;
+import com.seasky.seaskyocr.interfaces.controller.excel.InvoiceSettingTemplate;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
@@ -12,9 +14,14 @@ import java.util.Map;
  * @Date 2022/7/25 16:35
  * @Author 鐜嬪畻淇�
  */
+@Valid
 public interface TransactionalService {
 
     List<Map<String, Object>> ClaimAuditInvoiceForMoMing(MultipartFile file,@Valid InvoiceCmd invoiceCmd, String fileName);
 
     List<Map<String, Object>> ClaimAuditInvoice(MultipartFile file, @Valid InvoiceCmd invoiceCmd);
+
+    Map<Integer, String> createInvoiceSetting( List<InvoiceSettingTemplate> list);
+
+    Map<Integer, String> createInvoicePropertySetting( List<InvoicePropertySettingTemplate> list);
 }
diff --git a/ServiceSite/src/main/java/com/seasky/seaskyocr/application/command/claimAudit/TransactionalServiceImpl.java b/ServiceSite/src/main/java/com/seasky/seaskyocr/application/command/claimAudit/TransactionalServiceImpl.java
index b887dfa3e0bbb1fb7b78988d14e9776286093b47..27cd377b2f76facd5b4a56ad45cf5071a053bddc 100644
--- a/ServiceSite/src/main/java/com/seasky/seaskyocr/application/command/claimAudit/TransactionalServiceImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/seaskyocr/application/command/claimAudit/TransactionalServiceImpl.java
@@ -1,14 +1,22 @@
 package com.seasky.seaskyocr.application.command.claimAudit;
 
+import com.seasky.core.util.ExceptionUtil;
+import com.seasky.seaskyocr.dto.claimAudit.InvoicePropertySettingCmd;
+import com.seasky.seaskyocr.dto.claimAudit.InvoiceSettingCmd;
 import com.seasky.seaskyocr.dto.invoice.InvoiceCmd;
+import com.seasky.seaskyocr.interfaces.controller.excel.InvoicePropertySettingTemplate;
+import com.seasky.seaskyocr.interfaces.controller.excel.InvoiceSettingTemplate;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * @Description TODO
@@ -34,4 +42,44 @@ public class TransactionalServiceImpl implements TransactionalService{
     public List<Map<String, Object>> ClaimAuditInvoice(MultipartFile file, InvoiceCmd invoiceCmd) {
         return claimAuditCmdService.ClaimAuditInvoice( file,  invoiceCmd);
     }
+
+    @Override
+    public  Map<Integer, String> createInvoiceSetting( List<InvoiceSettingTemplate> list) {
+        Map<Integer, String> checkMap =new HashMap<>();
+        for (int i = 0; i < list.size(); i++) {
+            InvoiceSettingTemplate t = list.get(i);
+            try {
+                try {
+                    Integer.parseInt(t.getSort());
+                } catch (NumberFormatException e) {
+                    throw ExceptionUtil.getException(null,"鎺掑簭蹇呴』鏄暟瀛�");
+                }
+                InvoiceSettingCmd cmd = new InvoiceSettingCmd(null, t.getInvoiceNo(), t.getInvoiceType(), t.getInvoiceName(), t.getBusinessType(), StringUtils.isEmpty(t.getSort()) ? null : Integer.parseInt(t.getSort()), Objects.isNull(t.getIsAvailable()) ? null : t.getIsAvailable().equals("鏄�"));
+                claimAuditCmdService.createInvoiceSetting(cmd);
+            } catch (Exception e) {
+                checkMap.put(i,","+e.getMessage());
+            }
+        }
+        return checkMap;
+    }
+
+    @Override
+    public Map<Integer, String> createInvoicePropertySetting(List<InvoicePropertySettingTemplate> list) {
+        Map<Integer, String> checkMap =new HashMap<>();
+        for (int i = 0; i < list.size(); i++) {
+            InvoicePropertySettingTemplate t = list.get(i);
+           try {
+                try {
+                    Integer.parseInt(t.getSort());
+                } catch (NumberFormatException e) {
+                    throw ExceptionUtil.getException(null,"鎺掑簭蹇呴』鏄暟瀛�");
+                }
+               InvoicePropertySettingCmd cmd = new InvoicePropertySettingCmd(null, t.getPropertyNo(), t.getPropertyCode(), t.getPropertyName(), t.getPropertyType(),  t.getPropertyContent(),StringUtils.isEmpty(t.getSort()) ? null : Integer.parseInt(t.getSort()), Objects.isNull(t.getIsAvailable()) ? null : t.getIsAvailable().equals("鏄�"));
+               claimAuditCmdService.createInvoicePropertitySetting(cmd);
+            } catch (Exception e) {
+                checkMap.put(i,","+e.getMessage());
+            }
+        }
+        return checkMap;
+    }
 }
diff --git a/ServiceSite/src/main/java/com/seasky/seaskyocr/infrastructure/reader/claimAudit/ClaimAuditQueryServiceImpl.java b/ServiceSite/src/main/java/com/seasky/seaskyocr/infrastructure/reader/claimAudit/ClaimAuditQueryServiceImpl.java
index 58fe8a43d06bb27d81fe2e2598db1a5c2c57720b..0ffd0166e35f3f568fadb77aa1eccab2e82775a9 100644
--- a/ServiceSite/src/main/java/com/seasky/seaskyocr/infrastructure/reader/claimAudit/ClaimAuditQueryServiceImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/seaskyocr/infrastructure/reader/claimAudit/ClaimAuditQueryServiceImpl.java
@@ -110,6 +110,7 @@ public class ClaimAuditQueryServiceImpl  implements ClaimAuditQueryService {
         }
         heHeInvoiceParam.setApp_secret(ocrAgg.getSecret());
         String jsonData = ClaimAuditUtil.sendPost(ocrAgg.getUrl(), JSON.toJSONString(heHeInvoiceParam), header);
+        log.info("鍚堝悎楠岀湡缁撴灉杩斿洖锛�"+jsonData);
         //String jsonData ="{\"message\":\"success\",\"result\":{\"code\":\"106\",\"msg\":\"鏌ラ獙寮傚父\"},\"cost_time\":3006,\"code\":200,\"source\":0}";
         JSONObject jsonObject = JSON.parseObject(jsonData);//楠岀湡缁撴灉json瀵硅薄
         //todo 鏄惁璋冪敤鎴愬姛 config琛ㄧ殑 code 涓巗uccess_code姣旇緝  ,璋冪敤鎴愬姛 鐢� verifyMap 鍒ゆ柇
@@ -125,10 +126,10 @@ public class ClaimAuditQueryServiceImpl  implements ClaimAuditQueryService {
             JSONObject resultJsonObj = jsonObject.getJSONObject(ocrConfigPO.getResult());
             boolean verifyFlag = resultJsonObj.getString(verifyMapJson.getString("verify")).equals(verifyMapJson.getString("success"));//楠岀湡缁撴灉flag
             if (!verifyFlag){
-                throw ExceptionUtil.getException(null,"楠岀湡澶辫触锛�"+resultJsonObj.getString(verifyMapJson.getString("message")));
+                throw ExceptionUtil.getException(null,"鍚堝悎楠岀湡鎺ュ彛澶辫触锛�"+resultJsonObj.getString(verifyMapJson.getString("message"))+" || 鍘熷悎鍚堥獙鐪熸帴鍙h繑鍥炵殑鏁版嵁锛�"+jsonData);
             }
         }else {
-            throw ExceptionUtil.getException(null,"楠岀湡鎺ュ彛璋冪敤澶辫触锛�"+jsonObject.getString(ocrConfigPO.getMessage()));
+            throw ExceptionUtil.getException(null,"鍚堝悎楠岀湡鎺ュ彛璋冪敤澶辫触锛�"+jsonObject.getString(ocrConfigPO.getMessage()));
         }
         return true;
     }
diff --git a/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/ClaimAuditController.java b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/ClaimAuditController.java
index 0b0c68d793844ec3a8c702673c9dad2fca3e087b..2a991ecc40d223c76d66478415f23081d0bfe3b4 100644
--- a/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/ClaimAuditController.java
+++ b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/ClaimAuditController.java
@@ -50,6 +50,9 @@ public class ClaimAuditController implements IClaimAuditController {
     @ApiOperation("1.绋芥牳鍙戠エOCR璇嗗埆骞跺鐞�")
     @Override
     public Result<Map<String, Object>> claimAuditInvoice(ClaimAuditInvoiceCmd cmd) {
+        if (cmd.getFile().length>=1024*1024*10){
+            throw ExceptionUtil.getException(null,"璇疯瘑鍒皬浜�10MB鐨勬枃浠�!");
+        }
         List<Map<String, Object>> maps = new ArrayList<>();
         try {
             ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(cmd.getFile());
diff --git a/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/InvoiceSettingController.java b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/InvoiceSettingController.java
index ca641503d852e0fa65548ce4a72cd24f4ebab24a..f968ef835e86c3488b2903a689906d39e8bd09ba 100644
--- a/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/InvoiceSettingController.java
+++ b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/InvoiceSettingController.java
@@ -1,17 +1,34 @@
 package com.seasky.seaskyocr.interfaces.controller;
 
+import com.seasky.core.common.Pagination;
+import com.seasky.core.common.Response;
 import com.seasky.core.common.ResponseCode;
 import com.seasky.core.common.Result;
+import com.seasky.core.ddd.utils.MapperUtils;
+import com.seasky.core.util.EasyExcelUtil;
+import com.seasky.core.util.ExceptionUtil;
 import com.seasky.seaskyocr.api.IInvoiceSettingController;
 import com.seasky.seaskyocr.application.command.claimAudit.ClaimAuditCmdService;
+import com.seasky.seaskyocr.application.command.claimAudit.TransactionalService;
 import com.seasky.seaskyocr.application.query.claimAudit.ClaimAuditQueryService;
 import com.seasky.seaskyocr.dto.claimAudit.*;
+import com.seasky.seaskyocr.interfaces.controller.excel.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 import static com.seasky.core.common.Response.ok;
 
@@ -25,6 +42,9 @@ public class InvoiceSettingController implements IInvoiceSettingController {
     @Autowired
     ClaimAuditQueryService qryService;
 
+    @Autowired
+    TransactionalService transactionalService;
+
     /**
      * listBillType 鑾峰彇鎵€鏈夊凡鍚敤鐨勭エ绉嶏紝
      * 鍙傛暟锛氭棤
@@ -56,6 +76,104 @@ public class InvoiceSettingController implements IInvoiceSettingController {
         return ok(ResponseCode.SUCCESS,cmdService.createInvoiceSetting(cmd));
     }
 
+    @PostMapping("pc/v1/importInvoiceSetting")
+    @ApiOperation("--->瀵煎叆绁ㄧ璁剧疆")
+    //@Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result<Object> importInvoiceSetting(HttpServletRequest request, HttpServletResponse response, MultipartFile file) throws Exception {
+        if (Objects.isNull(file)){
+            throw ExceptionUtil.getException(null,"璇蜂笂浼犻檮浠�!");
+        }
+        //todo 鏍¢獙瀛︽牎瀹炰緥id
+        if (!file.getOriginalFilename().contains(".xls")){
+            throw ExceptionUtil.getException(null,"鍙厑璁镐笂浼犲悗缂€鏄痚xcel鐨勯檮浠�!");
+        }
+        List<InvoiceSettingTemplate> list = EasyExcelUtil.getList(InvoiceSettingTemplate.class, file.getInputStream(), 0);
+        //todo 浜嬪姟
+        Map<Integer, String> checkMap = transactionalService.createInvoiceSetting(list);
+        //todo 濡傛灉鏈夐敊璇俊鎭�  鍥炲啓excel
+        if (checkMap.size() > 0){
+            List<InvoiceSettingFailTemplate> exportList = new ArrayList<>();
+            for (int i = 0; i < list.size(); i++) {
+                String errMsg = checkMap.get(i);
+                InvoiceSettingFailTemplate failTemplate = MapperUtils.INSTANCE.map(InvoiceSettingFailTemplate.class, list.get(i));
+                failTemplate.setErrMsg(StringUtils.isEmpty(errMsg)?"":errMsg.substring(1));
+                exportList.add(failTemplate);
+            }
+            EasyExcelHelper.downExcel(response, exportList,InvoiceSettingFailTemplate.class,"绁ㄧ璁剧疆","绁ㄧ璁剧疆");
+        }
+        return Response.success();
+    }
+
+    //@Override
+    @PostMapping("pc/v1/exportInvoiceSetting")
+    @ApiOperation("--->瀵煎嚭绁ㄧ璁剧疆excel")
+    public Result<Object> exportInvoiceSetting(HttpServletRequest request, HttpServletResponse response,InvoiceSettingPageQry qry) {
+        qry.setPageSize(999);
+        Pagination<BillTypeOut> billTypeOutPagination = qryService.pageInvoiceSetting(qry);
+        List<BillTypeOut> records = billTypeOutPagination.getRecords();
+        List<InvoiceSettingTemplate> exportList = ExcelConvert.toInvoiceSettingTemplateList(records);
+        EasyExcelHelper.downExcel(response, exportList,InvoiceSettingTemplate.class,"绁ㄧ璁剧疆","绁ㄧ璁剧疆");
+        return Response.success();
+    }
+
+   // @Override
+    @GetMapping("pc/v1/downloadInvoiceSettingTemplate")
+    @ApiOperation("--->涓嬭浇瀵煎叆妯℃澘 - 绁ㄧ璁剧疆")
+    public Result<Object> downloadInvoiceSettingTemplate(HttpServletRequest request, HttpServletResponse response) {
+        EasyExcelHelper.downExcel(response, new ArrayList<>(),InvoiceSettingTemplate.class,"绁ㄧ璁剧疆","绁ㄧ璁剧疆");
+        return Response.success();
+    }
+
+    @PostMapping("pc/v1/importInvoicePropertySetting")
+    //@Override
+    @ApiOperation("--->瀵煎叆绁ㄧ灞炴€ц缃�")
+    @Transactional(rollbackFor = Exception.class)
+    public Result<Object> importInvoicePropertySetting(HttpServletRequest request, HttpServletResponse response, MultipartFile file) throws Exception {
+        if (Objects.isNull(file)){
+            throw ExceptionUtil.getException(null,"璇蜂笂浼犻檮浠�!");
+        }
+        //todo 鏍¢獙瀛︽牎瀹炰緥id
+        if (!file.getOriginalFilename().contains(".xls")){
+            throw ExceptionUtil.getException(null,"鍙厑璁镐笂浼犲悗缂€鏄痚xcel鐨勯檮浠�!");
+        }
+        List<InvoicePropertySettingTemplate> list = EasyExcelUtil.getList(InvoicePropertySettingTemplate.class, file.getInputStream(), 0);
+        //todo 浜嬪姟
+        Map<Integer, String> checkMap = transactionalService.createInvoicePropertySetting(list);
+        //todo 濡傛灉鏈夐敊璇俊鎭�  鍥炲啓excel
+        if (checkMap.size() > 0){
+            List<InvoicePropertySettingFailTemplate> exportList = new ArrayList<>();
+            for (int i = 0; i < list.size(); i++) {
+                String errMsg = checkMap.get(i);
+                InvoicePropertySettingFailTemplate failTemplate = MapperUtils.INSTANCE.map(InvoicePropertySettingFailTemplate.class, list.get(i));
+                failTemplate.setErrMsg(StringUtils.isEmpty(errMsg)?"":errMsg.substring(1));
+                exportList.add(failTemplate);
+            }
+            EasyExcelHelper.downExcel(response, exportList,InvoicePropertySettingFailTemplate.class,"绁ㄧ灞炴€ц缃�","绁ㄧ灞炴€ц缃�");
+        }
+        return Response.success();
+    }
+
+   // @Override
+    @PostMapping("pc/v1/exportInvoicePropertySetting")
+    @ApiOperation("--->瀵煎嚭绁ㄧ灞炴€ц缃甧xcel")
+    public Result<Object> exportInvoicePropertySetting(HttpServletRequest request, HttpServletResponse response, InvoicePropertyPageQry qry) {
+        qry.setPageSize(999);
+        Pagination<PropertyOut> propertyOutPagination = qryService.pageInvoiceProperty(qry);
+        List<PropertyOut> records = propertyOutPagination.getRecords();
+        List<InvoicePropertySettingTemplate> exportList = ExcelConvert.toInvoicePropertySettingTemplateList(records);
+        EasyExcelHelper.downExcel(response, exportList, InvoicePropertySettingTemplate.class,"绁ㄧ灞炴€ц缃�","绁ㄧ灞炴€ц缃�");
+        return Response.success();
+    }
+
+   // @Override
+    @GetMapping("pc/v1/downloadInvoicePropertySettingTemplate")
+    @ApiOperation("--->涓嬭浇瀵煎叆妯℃澘 - 绁ㄧ灞炴€ц缃�")
+    public Result<Object> downloadInvoicePropertySettingTemplate(HttpServletRequest request, HttpServletResponse response) {
+        EasyExcelHelper.downExcel(response, new ArrayList<>(), InvoicePropertySettingTemplate.class,"绁ㄧ灞炴€ц缃�","绁ㄧ灞炴€ц缃�");
+        return Response.success();
+    }
+
     @ApiOperation("2.淇敼绁ㄧ璁剧疆")
     @Override
     public Result<Long> modifyInvoiceSetting(InvoiceSettingCmd cmd) {
diff --git a/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/EasyExcelHelper.java b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/EasyExcelHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..1864d6b8d4bee5d785c96cda699e9ad979b06bbe
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/EasyExcelHelper.java
@@ -0,0 +1,50 @@
+package com.seasky.seaskyocr.interfaces.controller.excel;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.seasky.core.util.ExceptionUtil;
+
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
+import java.util.List;
+
+/**
+ * @Description TODO
+ * @Date 2022/5/16 12:50
+ * @Author 鐜嬪畻淇�
+ */
+public class EasyExcelHelper {
+
+    /**
+     * @param response
+     * @param exportList    瑕佸鍑虹殑闆嗗悎
+     * @param templateClass 闆嗗悎鐨勬硾鍨媍lass
+     * @param excelName     瀵煎嚭鏂囦欢鐨勫悕绉�
+     * @param sheetName     瀵煎嚭鏂囦欢sheet椤电殑鍚嶇О
+     */
+    public static void downExcel(HttpServletResponse response, List<?> exportList, Class<?> templateClass, String excelName, String sheetName) {
+        response.reset();
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("application/x-download");
+        try {
+            String fileName = URLEncoder.encode(excelName, "UTF-8");
+            response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx");
+            EasyExcel.write(response.getOutputStream(), templateClass).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet(sheetName).doWrite(exportList);
+        } catch (Exception e) {
+            throw ExceptionUtil.getException(null, "瀵煎嚭寮傚父锛�");
+        }
+    }
+
+    public static void downExcelXls(HttpServletResponse response, List<?> exportList, Class<?> templateClass, String excelName, String sheetName) {
+        response.reset();
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("application/vnd.ms-excel");
+        try {
+            String fileName = URLEncoder.encode(excelName, "UTF-8");
+            response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xls");
+            EasyExcel.write(response.getOutputStream(), templateClass).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet(sheetName).doWrite(exportList);
+        } catch (Exception e) {
+            throw ExceptionUtil.getException(null, "瀵煎嚭寮傚父锛�");
+        }
+    }
+}
diff --git a/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/ExcelConvert.java b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/ExcelConvert.java
new file mode 100644
index 0000000000000000000000000000000000000000..fc2dfb854e517c7a2d17482f69e4272fec81c111
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/ExcelConvert.java
@@ -0,0 +1,49 @@
+package com.seasky.seaskyocr.interfaces.controller.excel;
+
+import com.seasky.seaskyocr.dto.claimAudit.BillTypeOut;
+import com.seasky.seaskyocr.dto.claimAudit.PropertyOut;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @Description TODO
+ * @Date 2022/5/16 12:50
+ * @Author 鐜嬪畻淇�
+ */
+public class ExcelConvert {
+
+    public static List<InvoiceSettingTemplate> toInvoiceSettingTemplateList(List<BillTypeOut> outs) {
+        List<InvoiceSettingTemplate> exportList = new ArrayList<>();
+        for (BillTypeOut po:outs) {
+            InvoiceSettingTemplate build = InvoiceSettingTemplate.builder()
+                    .invoiceNo(po.getInvoiceNo())
+                    .invoiceType(po.getInvoiceType())
+                    .invoiceName(po.getInvoiceName())
+                    .businessType(po.getBusinessType())
+                    .sort(Objects.isNull(po.getSort())?"":po.getSort().toString())
+                    .isAvailable(po.getIsAvailable()?"鏄�":"鍚�")
+                    .build();
+            exportList.add(build);
+        }
+        return exportList;
+    }
+
+    public static List<InvoicePropertySettingTemplate> toInvoicePropertySettingTemplateList(List<PropertyOut> outs) {
+        List<InvoicePropertySettingTemplate> exportList = new ArrayList<>();
+        for (PropertyOut po:outs) {
+            InvoicePropertySettingTemplate build = InvoicePropertySettingTemplate.builder()
+                    .propertyNo(po.getPropertyNo())
+                    .propertyCode(po.getPropertyCode())
+                    .propertyName(po.getPropertyName())
+                    .propertyType(po.getPropertyType())
+                    .propertyContent(po.getPropertyContent())
+                    .sort(Objects.isNull(po.getSort())?"":po.getSort().toString())
+                    .isAvailable(po.getIsAvailable()?"鏄�":"鍚�")
+                    .build();
+            exportList.add(build);
+        }
+        return exportList;
+    }
+}
diff --git a/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/InvoicePropertySettingFailTemplate.java b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/InvoicePropertySettingFailTemplate.java
new file mode 100644
index 0000000000000000000000000000000000000000..3e0fed1083ea822cf34e6d4cd276a28723fc706a
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/InvoicePropertySettingFailTemplate.java
@@ -0,0 +1,49 @@
+package com.seasky.seaskyocr.interfaces.controller.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author 鐜嬪畻淇�
+ * @version V1.0
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ContentRowHeight(18)
+@HeadRowHeight(20)
+@ColumnWidth(30)
+@Builder
+public class InvoicePropertySettingFailTemplate {
+
+    @ExcelProperty("灞炴€х紪鍙�")
+    private String propertyNo;
+
+    @ExcelProperty("灞炴€х紪鐮�")
+    private String propertyCode;
+
+    @ExcelProperty("灞炴€у悕绉�")
+    private String propertyName;
+
+    @ExcelProperty("灞炴€у綊绫�")
+    private String propertyType;
+
+    @ExcelProperty("灞炴€ц鏄�")
+    private String propertyContent;
+
+    @ExcelProperty("鎺掑簭")
+    private String sort;
+
+    @ExcelProperty("鏄惁鍚敤")
+    private String isAvailable;
+
+    @ExcelProperty("閿欒淇℃伅")
+    @ColumnWidth(50)
+    private String errMsg;
+}
diff --git a/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/InvoicePropertySettingTemplate.java b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/InvoicePropertySettingTemplate.java
new file mode 100644
index 0000000000000000000000000000000000000000..9a7760a03369a0bad2e047b47eed35fd53da3315
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/InvoicePropertySettingTemplate.java
@@ -0,0 +1,45 @@
+package com.seasky.seaskyocr.interfaces.controller.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author 鐜嬪畻淇�
+ * @version V1.0
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ContentRowHeight(18)
+@HeadRowHeight(20)
+@ColumnWidth(30)
+@Builder
+public class InvoicePropertySettingTemplate {
+
+    @ExcelProperty("灞炴€х紪鍙�")
+    private String propertyNo;
+
+    @ExcelProperty("灞炴€х紪鐮�")
+    private String propertyCode;
+
+    @ExcelProperty("灞炴€у悕绉�")
+    private String propertyName;
+
+    @ExcelProperty("灞炴€у綊绫�")
+    private String propertyType;
+
+    @ExcelProperty("灞炴€ц鏄�")
+    private String propertyContent;
+
+    @ExcelProperty("鎺掑簭")
+    private String sort;
+
+    @ExcelProperty("鏄惁鍚敤")
+    private String isAvailable;
+}
diff --git a/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/InvoiceSettingFailTemplate.java b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/InvoiceSettingFailTemplate.java
new file mode 100644
index 0000000000000000000000000000000000000000..b1820727a408f1a12518f74e3ed8582d11b07f80
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/InvoiceSettingFailTemplate.java
@@ -0,0 +1,46 @@
+package com.seasky.seaskyocr.interfaces.controller.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author 鐜嬪畻淇�
+ * @version V1.0
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ContentRowHeight(18)
+@HeadRowHeight(20)
+@ColumnWidth(30)
+@Builder
+public class InvoiceSettingFailTemplate {
+
+    @ExcelProperty("绫诲瀷缂栧彿")
+    private String invoiceNo;
+
+    @ExcelProperty("绁ㄧ澶х被")
+    private String invoiceType;
+
+    @ExcelProperty("绁ㄧ鍚嶇О")
+    private String invoiceName;
+
+    @ExcelProperty("涓氬姟绫诲瀷")
+    private String businessType;
+
+    @ExcelProperty("鎺掑簭")
+    private String sort;
+
+    @ExcelProperty("鏄惁鍚敤")
+    private String isAvailable;
+
+    @ExcelProperty("閿欒淇℃伅")
+    @ColumnWidth(50)
+    private String errMsg;
+}
diff --git a/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/InvoiceSettingTemplate.java b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/InvoiceSettingTemplate.java
new file mode 100644
index 0000000000000000000000000000000000000000..534de87b8dae3e7043f5b53fab59e361e3437f1c
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/seaskyocr/interfaces/controller/excel/InvoiceSettingTemplate.java
@@ -0,0 +1,42 @@
+package com.seasky.seaskyocr.interfaces.controller.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author 鐜嬪畻淇�
+ * @version V1.0
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ContentRowHeight(18)
+@HeadRowHeight(20)
+@ColumnWidth(30)
+@Builder
+public class InvoiceSettingTemplate {
+
+    @ExcelProperty("绫诲瀷缂栧彿")
+    private String invoiceNo;
+
+    @ExcelProperty("绁ㄧ澶х被")
+    private String invoiceType;
+
+    @ExcelProperty("绁ㄧ鍚嶇О")
+    private String invoiceName;
+
+    @ExcelProperty("涓氬姟绫诲瀷")
+    private String businessType;
+
+    @ExcelProperty("鎺掑簭")
+    private String sort;
+
+    @ExcelProperty("鏄惁鍚敤")
+    private String isAvailable;
+}