瀏覽代碼

Merge branch 'master' of https://mc.cloudpure.cn/mjava/cont

wzy 5 天之前
父節點
當前提交
d968fafc43

+ 35 - 14
mjava-hengyilong/src/main/java/com/malk/hengyilong/service/impl/EqbHylServiceImpl.java

@@ -49,7 +49,8 @@ public class EqbHylServiceImpl implements EqbHylService {
     @Value("${server.host}")
     private String serverHost;
 
-    private static String bjd_docTemplateId ="1d2f50e82f514144b72313b1dddcb552";
+    private static String bjdHYL_docTemplateId ="1d2f50e82f514144b72313b1dddcb552";
+    private static String bjdSH_docTemplateId ="e7440c3f38724b239d7e9dcf7329804a";
 
     private static String ht_docTemplateId ="d481b2222879447f84d992bac20784d0";
 
@@ -78,6 +79,7 @@ public class EqbHylServiceImpl implements EqbHylService {
                 case "quotation":
                     fileName = UtilMap.getString(formData, "textField_mn5mis1m");
                     getQuotation(formData, components, reqBodyObj, fileName);
+                    shouldExecutePost = true;
                     break;
                 case "contract":
                     String signStatus = UtilMap.getString(formData, "radioField_mkcbpvh8");
@@ -96,7 +98,7 @@ public class EqbHylServiceImpl implements EqbHylService {
             }
             Map fileResult = eqbPost("/v3/files/create-by-doc-template", reqBodyObj);
             String fileId = UtilMap.getString(fileResult,"fileId");
-            //文档转换pdf需时间--否则文档未成功转换成pdf
+//            文档转换pdf需时间--否则文档未成功转换成pdf
             try {
                 Thread.sleep(3000);
             } catch (InterruptedException e) {
@@ -244,16 +246,26 @@ public class EqbHylServiceImpl implements EqbHylService {
         List<Map> productDetail = new ArrayList<>();
         productDetail.add(getRowMap(false));
         for (int i = 0; i < productTable.size(); i++) {
-            String productName = productTable.get(i).containsKey("textField_mn5wpqov")?UtilMap.getString(productTable.get(i), "textField_mn5wpqov"):"";//产品名称
-            String productModel = productTable.get(i).containsKey("textField_mogxdk7x")?UtilMap.getString(productTable.get(i), "textField_mogxdk7x"):"";//产品型号
-            String productUnit = productTable.get(i).containsKey("textField_mogxdk7y")?UtilMap.getString(productTable.get(i), "textField_mogxdk7y"):"";//产品规格
+            String productType = productTable.get(i).containsKey("selectField_mq6g5d7h")?UtilMap.getString(productTable.get(i), "selectField_mq6g5d7h"):"";//产品类型
+            String productName = productTable.get(i).containsKey("textField_mq505rze")?UtilMap.getString(productTable.get(i), "textField_mq505rze"):"";//产品名称
+//            String productModel = productTable.get(i).containsKey("textField_mogxdk7x")?UtilMap.getString(productTable.get(i), "textField_mogxdk7x"):"";//产品型号--舍弃
+            String productSize = productTable.get(i).containsKey("textField_mogxdk7y")?UtilMap.getString(productTable.get(i), "textField_mogxdk7y"):"";//产品规格
             String productNum = productTable.get(i).containsKey("numberField_mkdl67qd")?UtilMap.getString(productTable.get(i), "numberField_mkdl67qd"):"";//数量
+            String productUnit = productTable.get(i).containsKey("numberField_mkdl67qd")?UtilMap.getString(productTable.get(i), "numberField_mkdl67qd"):"";//单位
             double productPrice = productTable.get(i).containsKey("numberField_mkdl67qe")?UtilMap.getDouble(productTable.get(i), "numberField_mkdl67qe"):0;//单价
-            String note = productTable.get(i).containsKey("textField_mjb71qaq")?UtilMap.getString(productTable.get(i), "textField_mjb71qaq"):"";//备注
-            if (i == 0){
-                productDetail.add(getRowMap(false,productName,productModel,productUnit,productNum,productPrice,note));
-            }else {
-                productDetail.add(getRowMap(true,productName,productModel,productUnit,productNum,productPrice,note));
+            String note = productTable.get(i).containsKey("textField_mkdl67qg")?UtilMap.getString(productTable.get(i), "textField_mkdl67qg"):"";//备注
+            if ("恒益隆贸易(上海)有限公司".equals(UtilMap.getString(formData, "selectField_mjmlcp4y"))) {
+                if (i == 0){
+                    productDetail.add(getRowMap(false,productType,productName,productSize,productNum,productUnit,productPrice,note));
+                }else {
+                    productDetail.add(getRowMap(true,productType,productName,productSize,productNum,productUnit,productPrice,note));
+                }
+            }else  if ("上海绍贺贸易有限公司".equals(UtilMap.getString(formData, "selectField_mjmlcp4y"))){
+                if (i == 0){
+                    productDetail.add(getRowMap(false,productName,productSize,productNum,productUnit,productPrice,note));
+                }else {
+                    productDetail.add(getRowMap(true,productName,productSize,productNum,productUnit,productPrice,note));
+                }
             }
         }
         Map productDetailMap = new HashMap();
@@ -274,7 +286,11 @@ public class EqbHylServiceImpl implements EqbHylService {
         components.add(company);
         components.add(companyEng);
         components.add(companySeal);
-        reqBodyObj.put("docTemplateId", bjd_docTemplateId);
+        if ("恒益隆贸易(上海)有限公司".equals(UtilMap.getString(formData, "selectField_mjmlcp4y"))) {
+            reqBodyObj.put("docTemplateId", bjdHYL_docTemplateId);
+        }else  if ("上海绍贺贸易有限公司".equals(UtilMap.getString(formData, "selectField_mjmlcp4y"))){
+            reqBodyObj.put("docTemplateId", bjdSH_docTemplateId);
+        }
         reqBodyObj.put("fileName", fileName+".pdf");
         reqBodyObj.put("components", components);
         }catch (Exception e){
@@ -304,6 +320,10 @@ public class EqbHylServiceImpl implements EqbHylService {
             Map supplier = new HashMap();
             supplier.put("componentKey", "supplier");
             supplier.put("componentValue", formData.containsKey("selectField_mjmlcp4y")?UtilMap.getString(formData, "selectField_mjmlcp4y"):"");
+            //送货地址
+            Map productAddress = new HashMap();
+            productAddress.put("componentKey", "productAddress");
+            productAddress.put("componentValue", formData.containsKey("textareaField_ml3g7xro")?UtilMap.getString(formData, "textareaField_ml3g7xro"):"");
 
             //需方
             Map buyer = new HashMap();
@@ -389,13 +409,13 @@ public class EqbHylServiceImpl implements EqbHylService {
             List<Map> productDetail = new ArrayList<>();
             productDetail.add(getRowMap(false));
             for (int i = 0; i < productTable.size(); i++) {
-                String productName = productTable.get(i).containsKey("textField_mkdlflks")?UtilMap.getString(productTable.get(i), "textField_mkdlflks"):"";//产品名称
+                String productName = productTable.get(i).containsKey("textField_mq505rze")?UtilMap.getString(productTable.get(i), "textField_mq505rze"):"";//产品名称
                 String productModel = productTable.get(i).containsKey("textField_mp5c1fkt")?UtilMap.getString(productTable.get(i), "textField_mp5c1fkt"):"";//规格型号
                 String productUnit = productTable.get(i).containsKey("textField_mp5c1fku")?UtilMap.getString(productTable.get(i), "textField_mp5c1fku"):"";//产品单位
                 String productNum = productTable.get(i).containsKey("numberField_mkdlflkt")?UtilMap.getString(productTable.get(i), "numberField_mkdlflkt"):"";//数量
                 double productPrice = productTable.get(i).containsKey("numberField_mkdlflku")?UtilMap.getDouble(productTable.get(i), "numberField_mkdlflku"):0;//单价
                 double productSum = productTable.get(i).containsKey("numberField_mkdlflkv")?UtilMap.getDouble(productTable.get(i), "numberField_mkdlflkv"):0;//金额小计
-                String note = productTable.get(i).containsKey("textField_mjb71qaq")?UtilMap.getString(productTable.get(i), "textField_mjb71qaq"):"";//备注
+                String note = productTable.get(i).containsKey("textField_mkdlflkw")?UtilMap.getString(productTable.get(i), "textField_mkdlflkw"):"";//备注
                 if (i == 0){
                     productDetail.add(getRowMap(false,productName,productModel,productUnit,productNum,productPrice,productSum,note));
                 }else{
@@ -403,7 +423,7 @@ public class EqbHylServiceImpl implements EqbHylService {
                 }
             }
             if (!productTable.isEmpty()) {
-                productDetail.add(getRowMap(true, "金额合计", "大写金额(人民币):",  UtilMap.getDouble(formData, "textField_mpandaox"), "", "", "小写(RMB):", UtilMap.getDouble(formData, "numberfield_WAUnrcAf")));
+                productDetail.add(getRowMap(true, "金额合计", "大写金额(人民币):",UtilMap.getString(formData, "textField_mpandaox"), "", "", "小写(RMB):", UtilMap.getDouble(formData, "numberfield_WAUnrcAf")));
             }
             Map productDetailMap = new HashMap();
             productDetailMap.put("componentKey", "productDetail");
@@ -412,6 +432,7 @@ public class EqbHylServiceImpl implements EqbHylService {
             components.add(companyTitle);
             components.add(companyEng);
             components.add(supplier);
+            components.add(productAddress);
             components.add(buyer);
             components.add(contractNo);
             components.add(signDate);

+ 1 - 1
mjava-hengyilong/src/test/java/com/malk/hengyilong/mjavahengyilong/MjavaHengyilongApplicationTests.java

@@ -32,7 +32,7 @@ class MjavaHengyilongApplicationTests {
 
     @Test
     void quotationToEqb(){
-//        McR mcR = eqbHylService.quotationToEqb(UtilMap.map("formInstance, type","65b19c02-6b53-455f-937e-73e9135c561d, contract"));
+//        McR mcR = eqbHylService.quotationToEqb(UtilMap.map("formInstance, type","5f1b8f91-2056-4fa4-a4de-2f1d9501c3c2, contract"));
     }
 
 }

+ 91 - 15
mjava-hengyilong/src/test/java/com/malk/hengyilong/mjavahengyilong/ToEqbTest.java

@@ -46,22 +46,24 @@ public class ToEqbTest {
         String appKey = "7e464621b3aa4a0e39a6557009b38214";
         // e签宝接口调用域名(正式环境)
         String host = "https://openapi.esign.cn";
-        //   报价单模板文件     fileId
-//        String fileId ="cacddedc33ff45cea8acd4e8a8f81ac4";
-        //     报价单模板文件   docTemplateId
-//        String docTemplateId ="1d2f50e82f514144b72313b1dddcb552";
-        //     报价单模板文件   filecontentMd5
-//        String filecontentMd5 ="nJsZC4SzKUudj0awHel4oQ==";
+//           报价单模板文件     fileId
+        String fileId ="cacddedc33ff45cea8acd4e8a8f81ac4";
+//             报价单模板文件   docTemplateId
+//        String docTemplateId ="1d2f50e82f514144b72313b1dddcb552";//恒益隆模板id
+        String docTemplateId ="e7440c3f38724b239d7e9dcf7329804a";//绍贺模板id
+
+//             报价单模板文件   filecontentMd5
+        String filecontentMd5 ="nJsZC4SzKUudj0awHel4oQ==";
 
        //   购销合同模板文件     fileId
-        String fileId ="c39361f5ca74466a81287f90e94f06c3";
-        //        购销合同模板文件docTemplateId
-//        0064564bea704fc587a249680064b98c
-//        0cc8c51361444dc7bd39385898893812
-//        0064564bea704fc587a249680064b98c
-        String docTemplateId ="d481b2222879447f84d992bac20784d0";
-        //     购销合同模板文件   filecontentMd5
-        String filecontentMd5 ="kPALmlC0o3nU8O6U1HuaxQ==";
+//        String fileId ="c39361f5ca74466a81287f90e94f06c3";
+//        //        购销合同模板文件docTemplateId
+////        0064564bea704fc587a249680064b98c
+////        0cc8c51361444dc7bd39385898893812
+////        0064564bea704fc587a249680064b98c
+//        String docTemplateId ="d481b2222879447f84d992bac20784d0";
+//        //     购销合同模板文件   filecontentMd5
+//        String filecontentMd5 ="kPALmlC0o3nU8O6U1HuaxQ==";
 
         //步骤1:上传本地文件并转成HTML格式
         //1.1获取文件上传地址
@@ -80,6 +82,8 @@ public class ToEqbTest {
 //        getDocTemplateEditUrl(appId,appKey,host,docTemplateId);
 //
 //
+//        复制合同模板
+//        copyDocTemplate(appId,appKey,host,docTemplateId,"报价单-绍贺");
 //        //获取 HTML 模板中控件ID和控件Key
 //        getDocTemplateInfo(appId,appKey,host,docTemplateId);
 //
@@ -87,7 +91,9 @@ public class ToEqbTest {
         //6.1填写模板生成文件
 //        createByDocTemplate(appId,appKey,host,docTemplateId);
 //        //6.2开发者使用【查询文件上传状态】接口获取填充后文件链接,通过此链接可查看填充后文件效果
-//        getFileInfo(appId,appKey,host,"a271121e3434431996e8a67fb1d8e61c");
+//        253a487cfc1c464190006e7b8532479f
+//b97b73a033a341129bf788281a064f43
+//        getFileInfo(appId,appKey,host,"be504ec0e51a4d61885a0339bc216561");
 
 
         //基于文件发起签署
@@ -474,6 +480,76 @@ public class ToEqbTest {
         }
     }
 
+    /***
+     * 复制合同模板页面
+     */
+    public static void copyDocTemplate(String appId, String appKey, String host,String docTemplateId,String renameDocTemplate) {
+        // 计算签名拼接的url
+        String postUrl = "/v3/doc-templates/" + docTemplateId + "/copy";
+        // 完整的请求地址
+        String postAllUrl = host + postUrl;
+
+
+        try {
+            // 构建请求Body体
+            JSONObject reqBodyObj = new JSONObject();
+            reqBodyObj.put("renameDocTemplate", renameDocTemplate);
+
+            // 请求Body体数据
+            String reqBodyData = reqBodyObj.toString();
+            // 对请求Body体内的数据计算ContentMD5
+            String contentMD5 = doContentMD5(reqBodyData);
+            System.out.println("请求body数据:"+reqBodyData);
+            System.out.println("body的md5值:"+ contentMD5);
+
+            // 构建待签名字符串
+            String method = "POST";
+            String accept = "*/*";
+            String contentType = "application/json";
+            String url = postUrl;
+            String date = "";
+            String headers = "";
+
+            StringBuffer sb = new StringBuffer();
+            sb.append(method).append("\n").append(accept).append("\n").append(contentMD5).append("\n")
+                    .append(contentType).append("\n").append(date).append("\n");
+            if ("".equals(headers)) {
+                sb.append(headers).append(url);
+            } else {
+                sb.append(headers).append("\n").append(url);
+            }
+
+            // 构建参与请求签名计算的明文
+            String plaintext = sb.toString();
+            // 计算请求签名值
+            String reqSignature = doSignatureBase64(plaintext, appKey);
+            System.out.println("计算请求签名值:"+reqSignature);
+
+            // 获取时间戳(精确到毫秒)
+            long timeStamp = timeStamp();
+
+            // 构建请求头
+            LinkedHashMap<String, String> header = new LinkedHashMap<String, String>();
+            header.put("X-Tsign-Open-App-Id", appId);
+            header.put("X-Tsign-Open-Auth-Mode", "Signature");
+            header.put("X-Tsign-Open-Ca-Timestamp", String.valueOf(timeStamp));
+            header.put("Accept", accept);
+            header.put("Content-Type", contentType);
+            header.put("X-Tsign-Open-Ca-Signature", reqSignature);
+            header.put("Content-MD5", contentMD5);
+
+            // 发送POST请求
+            String result = HTTPHelper.sendPOST(postAllUrl, reqBodyData, header, "UTF-8");
+            JSONObject resultObj = JSONObject.parseObject(result);
+            System.out.println("请求返回信息: " + resultObj.toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+            String msg = MessageFormat.format("请求签名鉴权方式调用接口出现异常: {0}", e.getMessage());
+            System.out.println(msg);
+        }
+    }
+
+
     /**
      * 查询合同模板中控件详情
      */

+ 6 - 0
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdDeliveryServiceImpl.java

@@ -115,6 +115,7 @@ public class KdYdDeliveryServiceImpl extends ServiceImpl<KdYdDeliveryMapper, KdY
             String xslx = UtilMap.getString(formData, "selectField_mgrn6p2d");
             String bzfs = UtilMap.getString(formData, "selectField_mf6a0h5y");
             String bz = UtilMap.getString(formData, "textareaField_mejnamfb");
+            String ckddh = UtilMap.getString(formData, "textField_mqg2b2g5");
 //            LocalDateTime hhsj = parseTimestamp(UtilMap.getString(formData, "dateField_mf6a0h67"));
             LocalDateTime hhsj = Optional.ofNullable(
                             parseTimestamp(UtilMap.getString(formData, "dateField_mf6a0h67"))
@@ -155,11 +156,15 @@ public class KdYdDeliveryServiceImpl extends ServiceImpl<KdYdDeliveryMapper, KdY
                     String zbq = safeGetString(item, "numberField_mf6a0h6v");
                     String kddh = safeGetString(item, "textField_mf6a0h6w");
                     String mdh = safeGetString(item, "textField_mf6a0h6y");
+                    String sku = safeGetString(item, "textField_mqg2b2g6");
+                    String skuh = safeGetString(item, "textField_mqg2p1zi");
                     LocalDateTime yhrq = parseTimestamp(safeGetString(item, "dateField_mejnamfo"));
 
                     table1Map.put("wlbm", wlbm);
                     table1Map.put("detailId", detailId);
                     table1Map.put("wlmc", wlmc);
+                    table1Map.put("sku", sku);
+                    table1Map.put("skuh", skuh);
                     table1Map.put("ggxh", ggxh);
                     table1Map.put("xsdw", xsdw);
                     table1Map.put("jjsl", jjsl);
@@ -187,6 +192,7 @@ public class KdYdDeliveryServiceImpl extends ServiceImpl<KdYdDeliveryMapper, KdY
             deliveryData.put("djlx", djlx);
             deliveryData.put("orderId", orderId);
             deliveryData.put("rq", rq);
+            deliveryData.put("ckddh", ckddh);
             deliveryData.put("kh", kh);
             deliveryData.put("jsbb", jsbb);
             deliveryData.put("djbh", djbh);

+ 2 - 0
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdMaterialServiceImpl.java

@@ -210,6 +210,7 @@ public class KdYdMaterialServiceImpl extends ServiceImpl<KdYdMaterialMapper, KdY
                     String jbdw = safeGetStringValue(kdYdMaterial, "jbdw");
                     String ssxl = safeGetStringValue(kdYdMaterial, "ssxl");
                     String jx = safeGetStringValue(kdYdMaterial, "jx");
+                    String sku = safeGetStringValue(kdYdMaterial, "sku");
 
                     // 修复:安全处理sd字段
                     Object sdObj = kdYdMaterial.get("sd");
@@ -272,6 +273,7 @@ public class KdYdMaterialServiceImpl extends ServiceImpl<KdYdMaterialMapper, KdY
                     updateFormData.put("dateField_ml4ikfa0", kssj);
                     updateFormData.put("dateField_ml4ikfa1", jzsj);
                     updateFormData.put("textField_mfxbtce6", sjzt);
+                    updateFormData.put("textField_mqg2328v", sku);
 
                     if (sd != null) {
                         updateFormData.put("numberField_mfxbtceb", sd);

+ 8 - 1
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdOrderServiceImpl.java

@@ -159,7 +159,10 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
             String djbh = null;
             if ("edit".equals(type)) {
 //                djbh = UtilMap.getString(formData, "textField_mjs6fuwo");
-                djbh = UtilMap.getString(formData, "textField_miwvnkep");
+//                djbh = UtilMap.getString(formData, "textField_miwvnkep");
+                 djbh = StringUtils.isNotBlank(UtilMap.getString(formData, "textField_mjs6fuwo"))
+                        ? UtilMap.getString(formData, "textField_mjs6fuwo")
+                        : UtilMap.getString(formData, "textField_miwvnkep");
                 actionType = "edit";
             } else {
                 actionType = "add";
@@ -186,6 +189,7 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
             String jshjstr = UtilMap.getString(formData, "numberField_mewfgzkv");
             BigDecimal jshj = toBigDecimal(jshjstr);
             String sfhs = UtilMap.getString(formData, "radioField_mfxv2vg4");
+            String ckddh = UtilMap.getString(formData, "textField_mqg2b2g5");
             String jws = UtilMap.getString(formData, "radioField_mfxv2vgm");
             List<Map> tableField = (List<Map>) formData.get("tableField_mfbx1pqi");
             List<Map> tableFieldPayment = (List<Map>) formData.get("tableField_mhiui6v5");
@@ -201,6 +205,7 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
                     String wlbm = safeGetString(item, "textField_mfbx1pqt");
 //                    String wlbm = "010101010003";
                     String wlmc = safeGetString(item, "textField_mfbx1pqs");
+                    String sku = safeGetString(item, "textField_mqg2b2g6");
                     String tcfpfs = safeGetString(item, "textField_mpqmsz2q");
                     String yjfpfs = safeGetString(item, "textField_mpqmsz2r");
                     String fpxsy = safeGetString(item, "textField_mpqmsz2s");
@@ -228,6 +233,7 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
                     // 设置明细字段
                     table1Map.put("detailId", detailId);
                     table1Map.put("wlbm", wlbm);
+                    table1Map.put("sku", sku);
                     table1Map.put("wlmc", wlmc);
                     table1Map.put("ggxh", ggxh);
                     table1Map.put("xsdw", xsdw);
@@ -293,6 +299,7 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
             // 示例映射,实际需要根据数据库表结构调整
             orderData.put("djlx", djlx);                    // 单据类型
             orderData.put("djbh", djbh);                    // 单据编号
+            orderData.put("ckddh", ckddh);                    // 单据编号
             orderData.put("khmc", khmc);                    // 客户名称
             orderData.put("rq", rq);                        // 日期
             orderData.put("khxypj", khxypj);                // 客户信用评级

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

@@ -53,7 +53,7 @@ public class InvoiceLibraryController {
     private InvoiceLibraryMapper baseMapper;
     private static final String url = "http://47.103.203.2:9092/qiwang/";
             //员工报销
-//private static final String url = "http://24120b4f.r39.cpolar.top/qiwang/";
+//private static final String url = "http://5862d6b4.r39.cpolar.top/qiwang/";
     @PostMapping("/invoiceLibrary")
     public McR test(@RequestBody Map map)  {
         log.info("map:{}", map);

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

@@ -71,7 +71,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://24120b4f.r39.cpolar.top/qiwang/";
+//private static final String url = "http://5862d6b4.r39.cpolar.top/qiwang/";
     @PostMapping("/test")
 
     public McR test(@RequestBody Map map) {

+ 23 - 3
mjava-qiwang/src/main/java/com/malk/qiwang/Service/impl/InvoiceLibraryServiceImpl.java

@@ -312,8 +312,6 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                                                     // 获取税率,供共享发票使用
                                                     Object taxRateObj = invoice.get("taxRate");
                                                     Object kind = invoice.getString("kindName");
-                                                    System.out.println("qqq"+taxRateObj);
-                                                    System.out.println("qqq"+kind);
 
                                                     if (taxRateObj != null) {
                                                         String taxRateStr = String.valueOf(taxRateObj);
@@ -3388,8 +3386,30 @@ public class InvoiceLibraryServiceImpl extends ServiceImpl<InvoiceLibraryMapper,
                     UtilMap.getList(prop, "VatInvoiceItemInfos") != null && !UtilMap.getList(prop, "VatInvoiceItemInfos").isEmpty()
                             ? UtilMap.getList(prop, "VatInvoiceItemInfos")
                             : UtilMap.getList(prop, "VatElectronicItems");
+//            if (!vatInvoiceItemInfos.isEmpty()) {
+//                 taxRate = UtilMap.getString(vatInvoiceItemInfos.get(0), "TaxRate");
+//            }
             if (!vatInvoiceItemInfos.isEmpty()) {
-                 taxRate = UtilMap.getString(vatInvoiceItemInfos.get(0), "TaxRate");
+                String originalTaxRate = UtilMap.getString(vatInvoiceItemInfos.get(0), "TaxRate");
+
+                // 判断是否为有效数字(包括带%号的格式,如"9%")
+                if (StringUtils.isNotBlank(originalTaxRate)) {
+                    // 移除百分号并尝试解析为数字
+                    String cleanedTaxRate = originalTaxRate.replace("%", "").trim();
+                    try {
+                        // 尝试转换为数字
+                        new BigDecimal(cleanedTaxRate);
+                        taxRate = originalTaxRate; // 保持原值(可能带%)
+                    } catch (NumberFormatException e) {
+                        // 如果不是数字(如"不征税"、"免税"等),赋值为"0"
+                        taxRate = "0";
+                        log.debug("税率格式异常,原始值: {}, 已设置为0", originalTaxRate);
+                    }
+                } else {
+                    taxRate = "0";
+                }
+            } else {
+                taxRate = "0";
             }
             String no = UtilMap.getString(prop, "Number");
             if (nos.contains(no)) {