“lqy před 2 týdny
rodič
revize
c396de677b

+ 4 - 2
mjava-huagao/src/main/java/com/malk/huagao/controller/KdYdCustomerController.java

@@ -80,7 +80,8 @@ public class KdYdCustomerController {
 //        McException.assertParamException_Null(param, "msgParam", "msgKey", "openConversationId", "robotCode", "coolAppCode");
 //        Map map = ddClientExtension.sendGroupMessages(ddClient.getAccessToken(), param.getJSONObject("msgParam"), param.getString("msgKey"), param.getString("openConversationId")
 //                , param.getString("robotCode"), param.getString("coolAppCode"));
-        kdHuaGaoService.syncPendingProducts();
+//        kdHuaGaoService.syncPendingProducts();
+//        ydHuaGaoService.synckdlrgh();
         return McR.success();
     }
     @PostMapping("/test35")
@@ -310,7 +311,8 @@ public class KdYdCustomerController {
         final int maxRetry = 3;
         final long retryInterval = 2000L;
         final String formUuid = "FORM-F79B680547674A6BBD11C0D511E3C14B28FY";
-        final String noticeUrl = "https://crycnl.aliwork.com/APP_VQDMMWS6OR1VHL8VMFD3/submission/FORM-9F03E175B6A44A1A961E00D2A1FFED05ON7C";
+//        final String noticeUrl = "https://crycnl.aliwork.com/APP_VQDMMWS6OR1VHL8VMFD3/submission/FORM-9F03E175B6A44A1A961E00D2A1FFED05ON7C";
+        final String noticeUrl = "https://crycnl.aliwork.com/APP_VQDMMWS6OR1VHL8VMFD3/workbench/FORM-CA495799393B4E1BAA634C7B964FA352ZS5J";
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         Date date = sdf.parse("2026-08-01");
         List<Map> list = null;

+ 4 - 4
mjava-huagao/src/main/java/com/malk/huagao/controller/QccController.java

@@ -37,7 +37,7 @@ public class QccController {
         return McR.success(qccService.searchInternalCustomer(keyword, currentFormInstanceId));
     }
 
-    @GetMapping("/qcc/fuzzy-search")
+    @GetMapping("/qccFuzzySearch")
     public McR fuzzySearch(@RequestParam String searchKey,
                            @RequestParam(required = false, defaultValue = "1") Integer pageIndex
 //                           @RequestHeader(value = "X-Internal-Token", required = false) String internalToken
@@ -55,9 +55,9 @@ public class QccController {
         return McR.success(qccService.creditCodeQuery(requiredKeyword(searchKey)));
     }
 
-    @GetMapping("/qcc/enterprise-verify")
-    public McR enterpriseVerify(@RequestParam String searchKey,
-                                @RequestHeader(value = "X-Internal-Token", required = false) String internalToken) {
+    @GetMapping("/qccEnterpriseVerify")
+    public McR enterpriseVerify(@RequestParam String searchKey)
+    {
 //        authorize(internalToken);
         return McR.success(qccService.verifyEnterprise(requiredKeyword(searchKey)));
     }

+ 1 - 0
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdOutboundServiceImpl.java

@@ -213,6 +213,7 @@ public class KdYdOutboundServiceImpl extends ServiceImpl<KdYdOutboundMapper, KdY
                                         xlhMap.put("textField_mjqst61l", String.valueOf(item1.get("wlbm")));
                                         xlhMap.put("textField_mjqst61m", String.valueOf(item1.get("ggxh")));
                                         xlhMap.put("textField_mt2qky5r", String.valueOf(item1.get("ddbh")));
+                                        xlhMap.put("textField_mtie4w96", String.valueOf(item1.get("ddbh") + item));
                                         return xlhMap;
                                     })
                                     .collect(Collectors.toList());

+ 1 - 0
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdTransferServiceImpl.java

@@ -278,6 +278,7 @@ public class KdYdTransferServiceImpl extends ServiceImpl<KdYdTransferMapper, KdY
                     for (Map<String, Object> detailItem : tableListData) {
                         HashMap<String, String> tablemap = new HashMap<>();
                         tablemap.put("textField_mhubzsav", String.valueOf(detailItem.get("wlbm")));
+                        tablemap.put("textField_mtjti3ks", String.valueOf(detailItem.get("ssxl")));
                         tablemap.put("textField_mhubzsaw", String.valueOf(detailItem.get("wlmc")));
                         tablemap.put("textField_mqudgs70", String.valueOf(detailItem.get("jx")));
                         tablemap.put("textField_mhubzsax", String.valueOf(detailItem.get("ggxh")));

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 70 - 223
mjava-huagao/src/main/java/com/malk/huagao/service/impl/QccServiceImpl.java


+ 40 - 4
mjava-huagao/src/main/java/com/malk/huagao/service/impl/YdHuaGaoServiceImpl.java

@@ -1699,6 +1699,11 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
                                 "RadioField",
                                 YDSearch.Type.RADIO_FIELD,
                                 YDSearch.Operator.EQ),
+                        new YDSearch("radioField_mtjtp91k",
+                                "否",
+                                "RadioField",
+                                YDSearch.Type.RADIO_FIELD,
+                                YDSearch.Operator.EQ),
                         new YDSearch("selectField_mewmhnwj",
                                 "已逾期",
                                 "SelectField",
@@ -1763,6 +1768,7 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
             );
             Map formData =new HashMap<>();
             formData.put("selectField_mewmhnwj", "已申请逾期扣款");
+            formData.put("radioField_mtjtp91k", "是");
             retryOperateData(YDParam.builder()
                     .formInstId(formInstanceId)
                     .updateFormDataJson(JSON.toJSONString(formData))
@@ -1774,7 +1780,8 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
     public McR synckdlrgh() {
         MDC.put("MDC_KEY_PID", "1003");
 
-        String formUuid = "FORM-F79B680547674A6BBD11C0D511E3C14B28FY";
+        final String formUuid = "FORM-F79B680547674A6BBD11C0D511E3C14B28FY";
+        final String noticeUrl = "https://crycnl.aliwork.com/APP_VQDMMWS6OR1VHL8VMFD3/workbench/FORM-CA495799393B4E1BAA634C7B964FA352ZS5J";
         long now = System.currentTimeMillis();
         long dayMillis = 24L * 60 * 60 * 1000;
 
@@ -1795,8 +1802,8 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
                                         new YDSearch("dateField_mjm9k35l", Arrays.asList(startTime, endTime),
                                                 "DateField", YDSearch.Type.DATE_FIELD, YDSearch.Operator.BETWEEN),
 //                                        // 如果需要过滤 textField_mjm9k35n = "666",保留;否则删除
-//                                        new YDSearch("textField_mjm9k35n", "666",
-//                                                "TextField", YDSearch.Type.TEXT_FIELD, YDSearch.Operator.EQ),
+                                        new YDSearch("textField_mjm9k35n", "666",
+                                                "TextField", YDSearch.Type.TEXT_FIELD, YDSearch.Operator.EQ),
                                         new YDSearch("radioField_mru0o7u6", "是",
                                                 "RadioField", YDSearch.Type.RADIO_FIELD, YDSearch.Operator.EQ)
                                 )))
@@ -1891,7 +1898,8 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
 
             if (msg != null) {
                 try {
-                    sendDdMsg(accessToken, agentId, sqr, msg);
+//                    sendDdMsg(accessToken, agentId, sqr, msg);
+                    sendDdLinkMsg(accessToken, agentId, sqr,"流入公海预警", msg, noticeUrl);
                 } catch (Exception e) {
                     log.warn("发送钉钉提醒失败,formInstanceId={},原因:{}", formInstanceId, e.getMessage());
                 }
@@ -2214,4 +2222,32 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
             UtilHttp.doPost("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2", null, param2, body3);
         }
     }
+    private void sendDdLinkMsg(String accessToken, Number agentId, String userId,
+                               String title, String text, String messageUrl) {
+        Map<String, Object> query = new HashMap<>();
+        query.put("access_token", accessToken);
+
+        Map<String, Object> link = new HashMap<>();
+        link.put("messageUrl", messageUrl);
+        link.put("picUrl", "1");
+        link.put("title", title);
+        link.put("text", text);
+
+        Map<String, Object> msg = new HashMap<>();
+        msg.put("msgtype", "link");
+        msg.put("link", link);
+
+        Map<String, Object> body = new HashMap<>();
+        body.put("agent_id", agentId);
+        body.put("userid_list", userId);
+        body.put("msg", msg);
+
+        String response = UtilHttp.doPost(
+                "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2",
+                null, query, body);
+        JSONObject result = JSON.parseObject(response);
+        if (result == null || result.getIntValue("errcode") != 0) {
+            throw new IllegalStateException("钉钉接口返回失败:" + response);
+        }
+    }
 }

+ 1 - 1
mjava-huagao/src/main/resources/application-dev.yml

@@ -79,7 +79,7 @@ kd:
 qcc:
 #  app-key: dcc6bcfcb0044118a4dbc4cceeea5c3f
 #  secret-key: 360728C4193C9D1C3C6E124A9EFE21EC
-  app-key: 35066921c79446428b8e92b91253ed3c
+  app-key: 35066921c79446428b8e92b91253ed3c  #华高
   secret-key: 06680586605BCCADDE0C831704E199E9
   internal-token: 2bc819d8290f478b8ea4d22460c63fe5
 

+ 4 - 2
mjava-huagao/src/main/resources/application-prod.yml

@@ -76,6 +76,8 @@ kd:
   host: http://172.16.24.173:70
 
 qcc:
-  app-key: dcc6bcfcb0044118a4dbc4cceeea5c3f
-  secret-key: 360728C4193C9D1C3C6E124A9EFE21EC
+#  app-key: dcc6bcfcb0044118a4dbc4cceeea5c3f
+#  secret-key: 360728C4193C9D1C3C6E124A9EFE21EC
+  app-key: 35066921c79446428b8e92b91253ed3c  #华高
+  secret-key: 06680586605BCCADDE0C831704E199E9
   internal-token: 2bc819d8290f478b8ea4d22460c63fe5

+ 1 - 1
mjava-qiwang/src/main/java/com/malk/qiwang/Controller/QiWangController.java

@@ -76,7 +76,7 @@ public class QiWangController {
     private static final String bdurl = "D://qiwang//files//";
     private static final String url = "http://47.103.203.2:9092/qiwang/";
 //    private static final String bdurl = "C:\\Users\\EDY\\Desktop\\项目\\琦王\\files\\";
-//private static final String url = "http://410a09c5.r39.cpolar.top/qiwang/";
+//private static final String url = "http://4784d4b1.r39.cpolar.top/qiwang/";
     @PostMapping("/test")
 
     public McR test(@RequestBody Map map) {

+ 37 - 20
mjava-qiwang/src/main/java/com/malk/qiwang/Service/impl/InvoiceLibraryServiceImpl.java

@@ -363,7 +363,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                 parsedInvoiceDataList.add(parsedData);
 
                                                 // ========== 校验1:抬头校验 ==========
-                                                if (StringUtils.isNotBlank(buyerName)) {
+                                                if (!isTitleValidationExempt(invoice.getString("name")) && StringUtils.isNotBlank(buyerName)) {
                                                     CompanyTitle existingTitle = companyTitleMapper.selectByTaxId(buyerName);
                                                     if (existingTitle == null) {
                                                         String errorInfo = String.format("发票: %s, 购买方名称: %s, 税号: %s",
@@ -371,7 +371,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                         invalidBuyerTaxIds.add(errorInfo);
                                                         log.warn("抬头校验失败: 税号={} 不存在于抬头库, 文件名={}", buyerTaxId, fileName);
                                                     }
-                                                } else {
+                                                } else if (!isTitleValidationExempt(invoice.getString("name"))) {
                                                     String errorInfo = String.format("发票: %s, 购买方税号为空", fileName);
                                                     invalidBuyerTaxIds.add(errorInfo);
                                                     log.warn("抬头校验失败: 购买方税号为空, 文件名={}", fileName);
@@ -456,7 +456,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                 parsedInvoiceDataList.add(parsedData);
 
                                                 // 抬头校验
-                                                if (StringUtils.isNotBlank(buyerName)) {
+                                                if (!isTitleValidationExempt(invoice.getString("name")) && StringUtils.isNotBlank(buyerName)) {
                                                     CompanyTitle existingTitle = companyTitleMapper.selectByTaxId(buyerName);
                                                     if (existingTitle == null) {
                                                         String errorInfo = String.format("发票: %s, 购买方名称: %s, 税号: %s",
@@ -464,7 +464,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                         invalidBuyerTaxIds.add(errorInfo);
                                                         log.warn("抬头校验失败: 税号={} 不存在于抬头库, 文件名={}", buyerTaxId, fileName);
                                                     }
-                                                } else {
+                                                } else if (!isTitleValidationExempt(invoice.getString("name"))) {
                                                     String errorInfo = String.format("发票: %s, 购买方税号为空", fileName);
                                                     invalidBuyerTaxIds.add(errorInfo);
                                                     log.warn("抬头校验失败: 购买方税号为空, 文件名={}", fileName);
@@ -1348,7 +1348,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                 parsedInvoiceDataList.add(parsedData);
 
                                                 // ========== 校验1:抬头校验 ==========
-                                                if (StringUtils.isNotBlank(buyerName)) {
+                                                if (!isTitleValidationExempt(invoice.getString("name")) && StringUtils.isNotBlank(buyerName)) {
                                                     CompanyTitle existingTitle = companyTitleMapper.selectByTaxId(buyerName);
                                                     if (existingTitle == null) {
                                                         String errorInfo = String.format("发票: %s, 购买方名称: %s, 税号: %s",
@@ -1356,7 +1356,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                         invalidBuyerTaxIds.add(errorInfo);
                                                         log.warn("抬头校验失败: 税号={} 不存在于抬头库, 文件名={}", buyerTaxId, fileName);
                                                     }
-                                                } else {
+                                                } else if (!isTitleValidationExempt(invoice.getString("name"))) {
                                                     String errorInfo = String.format("发票: %s, 购买方税号为空", fileName);
                                                     invalidBuyerTaxIds.add(errorInfo);
                                                     log.warn("抬头校验失败: 购买方税号为空, 文件名={}", fileName);
@@ -1441,7 +1441,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                 parsedInvoiceDataList.add(parsedData);
 
                                                 // 抬头校验
-                                                if (StringUtils.isNotBlank(buyerName)) {
+                                                if (!isTitleValidationExempt(invoice.getString("name")) && StringUtils.isNotBlank(buyerName)) {
                                                     CompanyTitle existingTitle = companyTitleMapper.selectByTaxId(buyerName);
                                                     if (existingTitle == null) {
                                                         String errorInfo = String.format("发票: %s, 购买方名称: %s, 税号: %s",
@@ -1449,7 +1449,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                         invalidBuyerTaxIds.add(errorInfo);
                                                         log.warn("抬头校验失败: 税号={} 不存在于抬头库, 文件名={}", buyerTaxId, fileName);
                                                     }
-                                                } else {
+                                                } else if (!isTitleValidationExempt(invoice.getString("name"))) {
                                                     String errorInfo = String.format("发票: %s, 购买方税号为空", fileName);
                                                     invalidBuyerTaxIds.add(errorInfo);
                                                     log.warn("抬头校验失败: 购买方税号为空, 文件名={}", fileName);
@@ -1976,7 +1976,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                 parsedInvoiceDataList.add(parsedData);
 
                                                 // ========== 校验1:抬头校验 ==========
-                                                if (StringUtils.isNotBlank(buyerName)) {
+                                                if (!isTitleValidationExempt(invoice.getString("name")) && StringUtils.isNotBlank(buyerName)) {
                                                     CompanyTitle existingTitle = companyTitleMapper.selectByTaxId(buyerName);
                                                     if (existingTitle == null) {
                                                         String errorInfo = String.format("发票: %s, 购买方名称: %s, 税号: %s",
@@ -1984,7 +1984,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                         invalidBuyerTaxIds.add(errorInfo);
                                                         log.warn("抬头校验失败: 税号={} 不存在于抬头库, 文件名={}", buyerTaxId, fileName);
                                                     }
-                                                } else {
+                                                } else if (!isTitleValidationExempt(invoice.getString("name"))) {
                                                     String errorInfo = String.format("发票: %s, 购买方税号为空", fileName);
                                                     invalidBuyerTaxIds.add(errorInfo);
                                                     log.warn("抬头校验失败: 购买方税号为空, 文件名={}", fileName);
@@ -2069,7 +2069,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                 parsedInvoiceDataList.add(parsedData);
 
                                                 // 抬头校验
-                                                if (StringUtils.isNotBlank(buyerName)) {
+                                                if (!isTitleValidationExempt(invoice.getString("name")) && StringUtils.isNotBlank(buyerName)) {
                                                     CompanyTitle existingTitle = companyTitleMapper.selectByTaxId(buyerName);
                                                     if (existingTitle == null) {
                                                         String errorInfo = String.format("发票: %s, 购买方名称: %s, 税号: %s",
@@ -2077,7 +2077,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                         invalidBuyerTaxIds.add(errorInfo);
                                                         log.warn("抬头校验失败: 税号={} 不存在于抬头库, 文件名={}", buyerTaxId, fileName);
                                                     }
-                                                } else {
+                                                } else if (!isTitleValidationExempt(invoice.getString("name"))) {
                                                     String errorInfo = String.format("发票: %s, 购买方税号为空", fileName);
                                                     invalidBuyerTaxIds.add(errorInfo);
                                                     log.warn("抬头校验失败: 购买方税号为空, 文件名={}", fileName);
@@ -2604,7 +2604,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                 parsedInvoiceDataList.add(parsedData);
 
                                                 // ========== 校验1:抬头校验 ==========
-                                                if (StringUtils.isNotBlank(buyerName)) {
+                                                if (!isTitleValidationExempt(invoice.getString("name")) && StringUtils.isNotBlank(buyerName)) {
                                                     CompanyTitle existingTitle = companyTitleMapper.selectByTaxId(buyerName);
                                                     if (existingTitle == null) {
                                                         String errorInfo = String.format("发票: %s, 购买方名称: %s, 税号: %s",
@@ -2612,7 +2612,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                         invalidBuyerTaxIds.add(errorInfo);
                                                         log.warn("抬头校验失败: 税号={} 不存在于抬头库, 文件名={}", buyerTaxId, fileName);
                                                     }
-                                                } else {
+                                                } else if (!isTitleValidationExempt(invoice.getString("name"))) {
                                                     String errorInfo = String.format("发票: %s, 购买方税号为空", fileName);
                                                     invalidBuyerTaxIds.add(errorInfo);
                                                     log.warn("抬头校验失败: 购买方税号为空, 文件名={}", fileName);
@@ -2697,7 +2697,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                 parsedInvoiceDataList.add(parsedData);
 
                                                 // 抬头校验
-                                                if (StringUtils.isNotBlank(buyerName)) {
+                                                if (!isTitleValidationExempt(invoice.getString("name")) && StringUtils.isNotBlank(buyerName)) {
                                                     CompanyTitle existingTitle = companyTitleMapper.selectByTaxId(buyerName);
                                                     if (existingTitle == null) {
                                                         String errorInfo = String.format("发票: %s, 购买方名称: %s, 税号: %s",
@@ -2705,7 +2705,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                         invalidBuyerTaxIds.add(errorInfo);
                                                         log.warn("抬头校验失败: 税号={} 不存在于抬头库, 文件名={}", buyerTaxId, fileName);
                                                     }
-                                                } else {
+                                                } else if (!isTitleValidationExempt(invoice.getString("name"))) {
                                                     String errorInfo = String.format("发票: %s, 购买方税号为空", fileName);
                                                     invalidBuyerTaxIds.add(errorInfo);
                                                     log.warn("抬头校验失败: 购买方税号为空, 文件名={}", fileName);
@@ -3233,7 +3233,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                 parsedInvoiceDataList.add(parsedData);
 
                                                 // ========== 校验1:抬头校验 ==========
-                                                if (StringUtils.isNotBlank(buyerName)) {
+                                                if (!isTitleValidationExempt(invoice.getString("name")) && StringUtils.isNotBlank(buyerName)) {
                                                     CompanyTitle existingTitle = companyTitleMapper.selectByTaxId(buyerName);
                                                     if (existingTitle == null) {
                                                         String errorInfo = String.format("发票: %s, 购买方名称: %s, 税号: %s",
@@ -3241,7 +3241,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                         invalidBuyerTaxIds.add(errorInfo);
                                                         log.warn("抬头校验失败: 税号={} 不存在于抬头库, 文件名={}", buyerTaxId, fileName);
                                                     }
-                                                } else {
+                                                } else if (!isTitleValidationExempt(invoice.getString("name"))) {
                                                     String errorInfo = String.format("发票: %s, 购买方税号为空", fileName);
                                                     invalidBuyerTaxIds.add(errorInfo);
                                                     log.warn("抬头校验失败: 购买方税号为空, 文件名={}", fileName);
@@ -3326,7 +3326,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                 parsedInvoiceDataList.add(parsedData);
 
                                                 // 抬头校验
-                                                if (StringUtils.isNotBlank(buyerName)) {
+                                                if (!isTitleValidationExempt(invoice.getString("name")) && StringUtils.isNotBlank(buyerName)) {
                                                     CompanyTitle existingTitle = companyTitleMapper.selectByTaxId(buyerName);
                                                     if (existingTitle == null) {
                                                         String errorInfo = String.format("发票: %s, 购买方名称: %s, 税号: %s",
@@ -3334,7 +3334,7 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                         invalidBuyerTaxIds.add(errorInfo);
                                                         log.warn("抬头校验失败: 税号={} 不存在于抬头库, 文件名={}", buyerTaxId, fileName);
                                                     }
-                                                } else {
+                                                } else if (!isTitleValidationExempt(invoice.getString("name"))) {
                                                     String errorInfo = String.format("发票: %s, 购买方税号为空", fileName);
                                                     invalidBuyerTaxIds.add(errorInfo);
                                                     log.warn("抬头校验失败: 购买方税号为空, 文件名={}", fileName);
@@ -4200,6 +4200,10 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                 }
             }
 
+            if (isTitleValidationExempt(invoiceName)) {
+                kind = "普通发票";
+            }
+
             McInvoiceDto invoiceDto = McInvoiceDto.builder()
                     .name(UtilMap.getString(item, "SubTypeDescription"))
                     .kindName(kind)
@@ -4251,6 +4255,19 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
         return McR.success(McInvoiceDto.formatResponse(result));
     }
 
+    private boolean isTitleValidationExempt(String invoiceName) {
+        return Arrays.asList(
+                "出租车发票",
+                "汽车票",
+                "通用机打发票",
+                "定额发票",
+                "轮船票",
+                "医疗门诊收费票据(电子)",
+                "医疗住院收费票据(电子)",
+                "过路过桥费发票"
+        ).contains(invoiceName);
+    }
+
     private static String guyuanNameRepalce(String name) {
         name = name.replaceAll(" ", "");
         if (name.contains("谷元")) {