"""CRM 模块 Excel 导出列定义(字段与字典类型对齐 Java *Vo @ExcelDictFormat)。""" from __future__ import annotations from app.utils.excel_export import ExportColumn def _yes_no(value) -> str: if value in (True, 1, "1", "true", "True"): return "是" if value in (None, "", False, 0, "0"): return "" return "否" def _join_brand_names(value) -> str: if not value: return "" if isinstance(value, list): names = [str(x.get("brandName", "")) for x in value if isinstance(x, dict)] return "、".join(n for n in names if n) return str(value) def _join_alias_names(value) -> str: if not value: return "" if isinstance(value, list): names = [str(x.get("aliasName", "")) for x in value if isinstance(x, dict)] return "、".join(n for n in names if n) return str(value) CLUE_EXPORT_COLUMNS = ( ExportColumn("线索姓名", "clueName"), ExportColumn("手机号", "mobile"), ExportColumn("公司名称", "company"), ExportColumn("客户类型", "customerType", dict_type="crm_customer_type"), ExportColumn("线索来源", "source", dict_type="crm_clue_source"), ExportColumn("线索等级", "level", dict_type="crm_clue_level"), ExportColumn("线索状态", "status", dict_type="crm_clue_status"), ExportColumn("所属行业", "industry", dict_type="crm_customer_industry"), ExportColumn("所在园区", "parkArea", dict_type="crm_customer_park"), ExportColumn("负责人", "ownerUserName"), ExportColumn("跟进次数", "followCount"), ExportColumn("最后跟进时间", "lastTime"), ExportColumn("下次联系时间", "nextTime"), ExportColumn("创建时间", "createTime"), ExportColumn("备注", "remark"), ) CUSTOMER_EXPORT_COLUMNS = ( ExportColumn("客户编号", "customerNo"), ExportColumn("客户名称", "customerName"), ExportColumn("客户类型", "customerType", dict_type="crm_customer_type"), ExportColumn("级别", "level", dict_type="crm_customer_level"), ExportColumn("来源", "source", dict_type="crm_clue_source"), ExportColumn("行业", "industry", dict_type="crm_customer_industry"), ExportColumn("手机号", "mobile"), ExportColumn("电话", "phone"), ExportColumn("邮箱", "email"), ExportColumn("地址", "address"), ExportColumn("负责人", "ownerUserName"), ExportColumn("成交状态", "dealStatus", dict_type="crm_deal_status"), ExportColumn("跟进状态", "followStatus"), ExportColumn("创建时间", "createTime"), ExportColumn("备注", "remark"), ) POOL_CUSTOMER_EXPORT_COLUMNS = ( ExportColumn("客户编号", "customerNo"), ExportColumn("客户名称", "customerName"), ExportColumn("客户简称", "shortName"), ExportColumn("客户类型", "customerType", dict_type="crm_customer_type"), ExportColumn("级别", "level", dict_type="crm_customer_level"), ExportColumn("来源", "source", dict_type="crm_clue_source"), ExportColumn("行业", "industry", dict_type="crm_customer_industry"), ExportColumn("所在园区", "parkArea", dict_type="crm_customer_park"), ExportColumn("手机号", "mobile"), ExportColumn("电话", "telephone"), ExportColumn("邮箱", "email"), ExportColumn("地址", "address"), ExportColumn("成交状态", "dealStatus", dict_type="crm_deal_status"), ExportColumn("原负责人", "ownerUserName"), ExportColumn("跟进次数", "followCount"), ExportColumn("最后跟进时间", "lastTime"), ExportColumn("进入公海时间", "intoPoolTime"), ExportColumn("创建时间", "createTime"), ExportColumn("备注", "remark"), ) POOL_RULE_EXPORT_COLUMNS = ( ExportColumn("规则名称", "poolName"), ExportColumn("规则类型", "ruleType"), ExportColumn("超时天数", "timeoutDays"), ExportColumn("保护天数", "protectDays"), ExportColumn("状态", "status"), ExportColumn("排序", "sort"), ExportColumn("创建时间", "createTime"), ExportColumn("备注", "remark"), ) PRODUCT_EXPORT_COLUMNS = ( ExportColumn("产品编号", "productNo"), ExportColumn("产品名称", "productName"), ExportColumn("分类名称", "categoryName"), ExportColumn("品牌", "brands", formatter=_join_brand_names), ExportColumn("别名", "aliases", formatter=_join_alias_names), ExportColumn("规格型号", "model"), ExportColumn("单位", "unit"), ExportColumn("标准单价", "price"), ExportColumn("成本价", "costPrice"), ExportColumn("状态", "status", dict_type="crm_product_status"), ExportColumn("备注", "remark"), ) CONTACT_EXPORT_COLUMNS = ( ExportColumn("联系人姓名", "contactName"), ExportColumn("客户名称", "customerName"), ExportColumn("职位", "position"), ExportColumn("手机号", "mobile"), ExportColumn("电话", "phone"), ExportColumn("邮箱", "email"), ExportColumn("是否主要联系人", "isPrimary", formatter=_yes_no), ExportColumn("是否决策人", "isDecision", formatter=_yes_no), ExportColumn("备注", "remark"), ) CUSTOMER_FOLLOW_EXPORT_COLUMNS = ( ExportColumn("客户名称", "customerName"), ExportColumn("跟进方式", "followType", dict_type="crm_follow_type"), ExportColumn("跟进内容", "content"), ExportColumn("跟进人", "followUserName"), ExportColumn("跟进时间", "followTime"), ExportColumn("备注", "remark"), ) OPPORTUNITY_EXPORT_COLUMNS = ( ExportColumn("商机编号", "opportunityNo"), ExportColumn("商机名称", "opportunityName"), ExportColumn("客户名称", "customerName"), ExportColumn("阶段", "stage", dict_type="crm_opportunity_stage"), ExportColumn("状态", "status", dict_type="crm_opportunity_status"), ExportColumn("金额", "amount"), ExportColumn("预计成交日期", "expectDealDate"), ExportColumn("负责人", "ownerUserName"), ExportColumn("跟进次数", "followCount"), ExportColumn("最后跟进时间", "lastTime"), ExportColumn("创建时间", "createTime"), ExportColumn("备注", "remark"), ) SUPPLIER_INFO_EXPORT_COLUMNS = ( ExportColumn("供方名称", "supplierName"), ExportColumn("供方简称", "shortName"), ExportColumn("供方编码", "supplierCode"), ExportColumn("单位地址", "supplierAddress"), ExportColumn("法定代表人", "legalPerson"), ExportColumn("代理人", "agent"), ExportColumn("电话/传真", "phoneFax"), ExportColumn("开户银行", "bankName"), ExportColumn("账号", "bankAccount"), ExportColumn("状态", "status", dict_type="sys_normal_disable"), ExportColumn("备注", "remark"), ExportColumn("创建时间", "createTime"), ExportColumn("更新时间", "updateTime"), ) QUOTE_EXPORT_COLUMNS = ( ExportColumn("报价单编号", "quoteNo"), ExportColumn("报价单标题", "quoteTitle"), ExportColumn("报价单类型", "quoteType"), ExportColumn("客户名称", "customerName"), ExportColumn("商机名称", "opportunityName"), ExportColumn("联系人", "contactName"), ExportColumn("版本号", "version"), ExportColumn("总金额", "totalAmount"), ExportColumn("折扣率", "discountRate"), ExportColumn("折扣金额", "discountAmount"), ExportColumn("最终金额", "finalAmount"), ExportColumn("有效期(天)", "validityDays"), ExportColumn("报价日期", "quoteDate"), ExportColumn("到期日期", "expireDate"), ExportColumn("状态", "status", dict_type="crm_quote_status"), ExportColumn("查看次数", "viewCount"), ExportColumn("负责人", "ownerUserName"), ExportColumn("报价主体", "supplierName"), ExportColumn("备注", "remark"), ExportColumn("创建时间", "createTime"), ) CONTRACT_EXPORT_COLUMNS = ( ExportColumn("合同编号", "contractNo"), ExportColumn("合同名称", "contractName"), ExportColumn("客户名称", "customerName"), ExportColumn("续签次数", "renewalCount"), ExportColumn("合同模版", "contractTemplate", dict_type="crm_contract_template"), ExportColumn("联系人", "contactName"), ExportColumn("合同类型", "contractType", dict_type="crm_contract_type"), ExportColumn("合同性质", "contractNature", dict_type="crm_contract_nature"), ExportColumn("合同金额", "amount"), ExportColumn("币种", "currency", dict_type="crm_currency"), ExportColumn("税率(%)", "taxRate"), ExportColumn("含税金额", "amountWithTax"), ExportColumn("签订日期", "signDate"), ExportColumn("实际签订日期", "actualSignDate"), ExportColumn("开始日期", "startDate"), ExportColumn("结束日期", "endDate"), ExportColumn("合同期限(月)", "contractPeriod"), ExportColumn("合同状态", "status", dict_type="crm_contract_status"), ExportColumn("履约状态", "performanceStatus", dict_type="crm_performance_status"), ExportColumn("履约完成度(%)", "performanceRate"), ExportColumn("客户满意度", "customerSatisfaction"), ExportColumn("审批状态", "approvalStatus", dict_type="crm_contract_approval_status"), ExportColumn("负责人", "ownerUserName"), ExportColumn("已回款金额", "receivedAmount"), ExportColumn("未回款金额", "unreceivedAmount"), ExportColumn("已开票金额", "invoiceAmount"), ExportColumn("未开票金额", "uninvoiceAmount"), ExportColumn("甲方", "partyA"), ExportColumn("乙方", "partyB"), ExportColumn("乙方法定代表人", "partyBLegalPerson"), ExportColumn("乙方代理人", "partyBAgent"), ExportColumn("乙方电话/传真", "partyBPhoneFax"), ExportColumn("乙方开户银行", "partyBBank"), ExportColumn("乙方银行账号", "partyBAccount"), ExportColumn("创建时间", "createTime"), ExportColumn("更新时间", "updateTime"), ExportColumn("备注", "remark"), ) CONTRACT_CHANGE_EXPORT_COLUMNS = ( ExportColumn("合同编号", "contractNo"), ExportColumn("合同名称", "contractName"), ExportColumn("变更类型", "changeType", dict_type="crm_contract_change_type"), ExportColumn("变更原因", "changeReason"), ExportColumn("变更内容", "changeContent"), ExportColumn("变更金额", "changeAmount"), ExportColumn("审批状态", "approvalStatus", dict_type="crm_approval_status"), ExportColumn("审批人", "approverName"), ExportColumn("审批时间", "approvalTime"), ExportColumn("创建时间", "createTime"), ExportColumn("备注", "remark"), ) CONTRACT_TEMPLATE_EXPORT_COLUMNS = ( ExportColumn("模板编号", "templateNo"), ExportColumn("模板名称", "templateName"), ExportColumn("合同类型", "contractType", dict_type="crm_contract_type"), ExportColumn("乙方", "partyB"), ExportColumn("默认币种", "defaultCurrency"), ExportColumn("默认税率(%)", "defaultTaxRate"), ExportColumn("默认期限(月)", "defaultPeriod"), ExportColumn("是否启用", "isActive", formatter=_yes_no), ExportColumn("使用次数", "usageCount"), ExportColumn("创建时间", "createTime"), ExportColumn("备注", "remark"), ) CONTRACT_APPROVAL_EXPORT_COLUMNS = ( ExportColumn("合同ID", "contractId"), ExportColumn("审批步骤", "step"), ExportColumn("步骤名称", "stepName"), ExportColumn("审批人", "approverName"), ExportColumn("审批结果", "approvalResult", dict_type="crm_approval_status"), ExportColumn("审批意见", "approvalOpinion"), ExportColumn("审批时间", "approvalTime"), ExportColumn("创建时间", "createTime"), ExportColumn("备注", "remark"), )