========== 测试严格验证逻辑 ========== 修改后的逻辑: ✅ 营业执照原件文件未找到 → 直接报错,停止执行 ✅ 营业执照文件URL为空 → 直接报错,停止执行 ✅ 营业执照下载失败 → 直接报错,停止执行 ✅ 身份证正面文件未找到 → 直接报错,停止执行 ✅ 身份证正面URL为空 → 直接报错,停止执行 ✅ 身份证正面处理失败 → 直接报错,停止执行 ✅ 身份证反面文件未找到 → 直接报错,停止执行 ✅ 身份证反面URL为空 → 直接报错,停止执行 ✅ 身份证反面处理失败 → 直接报错,停止执行 测试场景: 1. 正常情况测试(需要实际的免海牙记录ID) 请使用实际ID替换下面的测试ID 开始生成文档... ❌ 文档生成失败: SQL执行失败: SQLSTATE[42S22]: [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]Invalid column name 'AR'. SQL: SELECT TOP 1 fes.AR AS AR1, vg.AR AS AR2, gt.AR AS AR3, vg.Attachment, vg.BusinessLicenseDirection, fes.BusinessLicenseDirection AS BusinessLicenseDirection1, gt.BusinessLicenseDirection AS BusinessLicenseDirection2, gt.Attachment AS Attachment1, fes.Attachment AS Attachment2, bc.NameEng, bc.NameCN, bc.LegalPersonEmail, bc.RegNumber, bc.LegalPersonFullNamePinYin, bc.LegalPersonName, bc.RegisteredCapital, bc.RegisteredCapitalCurrency, bc.EstablishmentDate, bc.CityEngName, bc.RegAddressEng, bc.BusinessLicensePic, bc.LegalPersonIdNumberFrontPic, bc.LegalPersonIdNumberBackPic, bc.LegalPersonGender, bc.Nationality, bc.LegalPersonIdNumber, bc.LegalPersonIdStartDate, bc.LegalPersonIdEndDate, bc.LegalPersonCityEngName, bc.LegalPersonIDCardAddressEng, bc.LegalPersonBirthDate, bc.LegalSignedFile, bc.NameCN, vb.BusinessCode, vb.Code, vb.ID, vri.id AS VATRegInfoId, vb.PushTaxBureauStatus, vb.PushTaxBureauErrorMsg, ps.SpecsName, bc.LegalPersonIDCardType, bc.LegalPersonCountry, bc.LegalPersonAddressProvinceEn, bc.CompanyAddressLine1En, bc.CompanyAddressLine2En, bc.CompanyAddressPostcode, bc.CompanyAddressProvinceEn, bc.Country AS CompanyCountry, bu.F_Mobile as LinkedSalesContactPhone, vg.HagueType, fes.HagueType AS HagueType1, gt.HagueType AS HagueType2, bc.BusinessCRFile FROM VATRegInfo vri LEFT JOIN VATBusinessRecord vb ON vri.VATBusinessRecordID = vb.ID LEFT JOIN Base_Customer_Company bc ON bc.ID = vb.CompanyID LEFT JOIN ESVAT_Register vg ON vg.ID = vb.ID LEFT JOIN GeneralTemplateVAT gt ON gt.ID = vb.ID LEFT JOIN ESVAT_SubAgent fes ON fes.ID = vb.ID LEFT JOIN MS_OrderDetails mo ON vb.MSOrderDetailsID = mo.ID LEFT JOIN ProductSpecs ps ON ps.ID=mo.SKUSpecificationID LEFT JOIN Base_User bu ON bu.F_UserId = vb.BusinessCounselorId WHERE vb.Country = 'ES' AND vri.id = :id 2. 错误处理验证 现在系统会在以下情况直接报错: - 数据库中没有营业执照文件ID - 数据库中没有身份证正面文件ID - 数据库中没有身份证反面文件ID - 文件URL为空或无效 - 文件下载失败 - 文件处理失败(OCR识别失败等) 3. 优势 ✅ 避免生成不完整的文档 ✅ 提前发现数据问题 ✅ 明确的错误信息,便于排查 ✅ 不会浪费资源处理无效数据 4. 数据库字段检查 系统会按以下优先级查找文件: 营业执照: 1. business_license_file (从VATDataService查询) 2. BusinessLicenseFile (备用字段) 3. attachments中匹配'营业执照|BusinessLicense|license'的文件 身份证正面: 1. id_card_front_file (从VATDataService查询) 2. IdCardFrontFile (备用字段) 3. attachments中匹配'身份证.*正面|idcard.*front'的文件 身份证反面: 1. id_card_back_file (从VATDataService查询) 2. IdCardBackFile (备用字段) 3. attachments中匹配'身份证.*反面|idcard.*back'的文件 5. 建议的数据检查步骤 在使用生成功能前,请确保: 1. 数据库中BusinessLicensePic字段不为空 2. 数据库中LegalPersonIdNumberFrontPic字段不为空 3. 数据库中LegalPersonIdNumberBackPic字段不为空 4. 对应的Base_AnnexesFile表中文件记录存在 5. 文件服务器上的文件可以正常访问 ========== 测试完成 ========== 如果需要测试具体的错误情况,可以: 1. 使用不存在的ID测试 2. 使用缺少文件配置的记录测试 3. 检查日志文件获取详细错误信息