crm_export_columns.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. """CRM 模块 Excel 导出列定义(字段与字典类型对齐 Java *Vo @ExcelDictFormat)。"""
  2. from __future__ import annotations
  3. from app.utils.excel_export import ExportColumn
  4. def _yes_no(value) -> str:
  5. if value in (True, 1, "1", "true", "True"):
  6. return "是"
  7. if value in (None, "", False, 0, "0"):
  8. return ""
  9. return "否"
  10. def _join_brand_names(value) -> str:
  11. if not value:
  12. return ""
  13. if isinstance(value, list):
  14. names = [str(x.get("brandName", "")) for x in value if isinstance(x, dict)]
  15. return "、".join(n for n in names if n)
  16. return str(value)
  17. def _join_alias_names(value) -> str:
  18. if not value:
  19. return ""
  20. if isinstance(value, list):
  21. names = [str(x.get("aliasName", "")) for x in value if isinstance(x, dict)]
  22. return "、".join(n for n in names if n)
  23. return str(value)
  24. CLUE_EXPORT_COLUMNS = (
  25. ExportColumn("线索姓名", "clueName"),
  26. ExportColumn("手机号", "mobile"),
  27. ExportColumn("公司名称", "company"),
  28. ExportColumn("客户类型", "customerType", dict_type="crm_customer_type"),
  29. ExportColumn("线索来源", "source", dict_type="crm_clue_source"),
  30. ExportColumn("线索等级", "level", dict_type="crm_clue_level"),
  31. ExportColumn("线索状态", "status", dict_type="crm_clue_status"),
  32. ExportColumn("所属行业", "industry", dict_type="crm_customer_industry"),
  33. ExportColumn("所在园区", "parkArea", dict_type="crm_customer_park"),
  34. ExportColumn("负责人", "ownerUserName"),
  35. ExportColumn("跟进次数", "followCount"),
  36. ExportColumn("最后跟进时间", "lastTime"),
  37. ExportColumn("下次联系时间", "nextTime"),
  38. ExportColumn("创建时间", "createTime"),
  39. ExportColumn("备注", "remark"),
  40. )
  41. CUSTOMER_EXPORT_COLUMNS = (
  42. ExportColumn("客户编号", "customerNo"),
  43. ExportColumn("客户名称", "customerName"),
  44. ExportColumn("客户类型", "customerType", dict_type="crm_customer_type"),
  45. ExportColumn("级别", "level", dict_type="crm_customer_level"),
  46. ExportColumn("来源", "source", dict_type="crm_clue_source"),
  47. ExportColumn("行业", "industry", dict_type="crm_customer_industry"),
  48. ExportColumn("手机号", "mobile"),
  49. ExportColumn("电话", "phone"),
  50. ExportColumn("邮箱", "email"),
  51. ExportColumn("地址", "address"),
  52. ExportColumn("负责人", "ownerUserName"),
  53. ExportColumn("成交状态", "dealStatus", dict_type="crm_deal_status"),
  54. ExportColumn("跟进状态", "followStatus"),
  55. ExportColumn("创建时间", "createTime"),
  56. ExportColumn("备注", "remark"),
  57. )
  58. POOL_CUSTOMER_EXPORT_COLUMNS = (
  59. ExportColumn("客户编号", "customerNo"),
  60. ExportColumn("客户名称", "customerName"),
  61. ExportColumn("客户简称", "shortName"),
  62. ExportColumn("客户类型", "customerType", dict_type="crm_customer_type"),
  63. ExportColumn("级别", "level", dict_type="crm_customer_level"),
  64. ExportColumn("来源", "source", dict_type="crm_clue_source"),
  65. ExportColumn("行业", "industry", dict_type="crm_customer_industry"),
  66. ExportColumn("所在园区", "parkArea", dict_type="crm_customer_park"),
  67. ExportColumn("手机号", "mobile"),
  68. ExportColumn("电话", "telephone"),
  69. ExportColumn("邮箱", "email"),
  70. ExportColumn("地址", "address"),
  71. ExportColumn("成交状态", "dealStatus", dict_type="crm_deal_status"),
  72. ExportColumn("原负责人", "ownerUserName"),
  73. ExportColumn("跟进次数", "followCount"),
  74. ExportColumn("最后跟进时间", "lastTime"),
  75. ExportColumn("进入公海时间", "intoPoolTime"),
  76. ExportColumn("创建时间", "createTime"),
  77. ExportColumn("备注", "remark"),
  78. )
  79. POOL_RULE_EXPORT_COLUMNS = (
  80. ExportColumn("规则名称", "poolName"),
  81. ExportColumn("规则类型", "ruleType"),
  82. ExportColumn("超时天数", "timeoutDays"),
  83. ExportColumn("保护天数", "protectDays"),
  84. ExportColumn("状态", "status"),
  85. ExportColumn("排序", "sort"),
  86. ExportColumn("创建时间", "createTime"),
  87. ExportColumn("备注", "remark"),
  88. )
  89. PRODUCT_EXPORT_COLUMNS = (
  90. ExportColumn("产品编号", "productNo"),
  91. ExportColumn("产品名称", "productName"),
  92. ExportColumn("分类名称", "categoryName"),
  93. ExportColumn("品牌", "brands", formatter=_join_brand_names),
  94. ExportColumn("别名", "aliases", formatter=_join_alias_names),
  95. ExportColumn("规格型号", "model"),
  96. ExportColumn("单位", "unit"),
  97. ExportColumn("标准单价", "price"),
  98. ExportColumn("成本价", "costPrice"),
  99. ExportColumn("状态", "status", dict_type="crm_product_status"),
  100. ExportColumn("备注", "remark"),
  101. )
  102. CONTACT_EXPORT_COLUMNS = (
  103. ExportColumn("联系人姓名", "contactName"),
  104. ExportColumn("客户名称", "customerName"),
  105. ExportColumn("职位", "position"),
  106. ExportColumn("手机号", "mobile"),
  107. ExportColumn("电话", "phone"),
  108. ExportColumn("邮箱", "email"),
  109. ExportColumn("是否主要联系人", "isPrimary", formatter=_yes_no),
  110. ExportColumn("是否决策人", "isDecision", formatter=_yes_no),
  111. ExportColumn("备注", "remark"),
  112. )
  113. CUSTOMER_FOLLOW_EXPORT_COLUMNS = (
  114. ExportColumn("客户名称", "customerName"),
  115. ExportColumn("跟进方式", "followType", dict_type="crm_follow_type"),
  116. ExportColumn("跟进内容", "content"),
  117. ExportColumn("跟进人", "followUserName"),
  118. ExportColumn("跟进时间", "followTime"),
  119. ExportColumn("备注", "remark"),
  120. )
  121. OPPORTUNITY_EXPORT_COLUMNS = (
  122. ExportColumn("商机编号", "opportunityNo"),
  123. ExportColumn("商机名称", "opportunityName"),
  124. ExportColumn("客户名称", "customerName"),
  125. ExportColumn("阶段", "stage", dict_type="crm_opportunity_stage"),
  126. ExportColumn("状态", "status", dict_type="crm_opportunity_status"),
  127. ExportColumn("金额", "amount"),
  128. ExportColumn("预计成交日期", "expectDealDate"),
  129. ExportColumn("负责人", "ownerUserName"),
  130. ExportColumn("跟进次数", "followCount"),
  131. ExportColumn("最后跟进时间", "lastTime"),
  132. ExportColumn("创建时间", "createTime"),
  133. ExportColumn("备注", "remark"),
  134. )
  135. SUPPLIER_INFO_EXPORT_COLUMNS = (
  136. ExportColumn("供方名称", "supplierName"),
  137. ExportColumn("供方简称", "shortName"),
  138. ExportColumn("供方编码", "supplierCode"),
  139. ExportColumn("单位地址", "supplierAddress"),
  140. ExportColumn("法定代表人", "legalPerson"),
  141. ExportColumn("代理人", "agent"),
  142. ExportColumn("电话/传真", "phoneFax"),
  143. ExportColumn("开户银行", "bankName"),
  144. ExportColumn("账号", "bankAccount"),
  145. ExportColumn("状态", "status", dict_type="sys_normal_disable"),
  146. ExportColumn("备注", "remark"),
  147. ExportColumn("创建时间", "createTime"),
  148. ExportColumn("更新时间", "updateTime"),
  149. )
  150. QUOTE_EXPORT_COLUMNS = (
  151. ExportColumn("报价单编号", "quoteNo"),
  152. ExportColumn("报价单标题", "quoteTitle"),
  153. ExportColumn("报价单类型", "quoteType"),
  154. ExportColumn("客户名称", "customerName"),
  155. ExportColumn("商机名称", "opportunityName"),
  156. ExportColumn("联系人", "contactName"),
  157. ExportColumn("版本号", "version"),
  158. ExportColumn("总金额", "totalAmount"),
  159. ExportColumn("折扣率", "discountRate"),
  160. ExportColumn("折扣金额", "discountAmount"),
  161. ExportColumn("最终金额", "finalAmount"),
  162. ExportColumn("有效期(天)", "validityDays"),
  163. ExportColumn("报价日期", "quoteDate"),
  164. ExportColumn("到期日期", "expireDate"),
  165. ExportColumn("状态", "status", dict_type="crm_quote_status"),
  166. ExportColumn("查看次数", "viewCount"),
  167. ExportColumn("负责人", "ownerUserName"),
  168. ExportColumn("报价主体", "supplierName"),
  169. ExportColumn("备注", "remark"),
  170. ExportColumn("创建时间", "createTime"),
  171. )
  172. CONTRACT_EXPORT_COLUMNS = (
  173. ExportColumn("合同编号", "contractNo"),
  174. ExportColumn("合同名称", "contractName"),
  175. ExportColumn("客户名称", "customerName"),
  176. ExportColumn("续签次数", "renewalCount"),
  177. ExportColumn("合同模版", "contractTemplate", dict_type="crm_contract_template"),
  178. ExportColumn("联系人", "contactName"),
  179. ExportColumn("合同类型", "contractType", dict_type="crm_contract_type"),
  180. ExportColumn("合同性质", "contractNature", dict_type="crm_contract_nature"),
  181. ExportColumn("合同金额", "amount"),
  182. ExportColumn("币种", "currency", dict_type="crm_currency"),
  183. ExportColumn("税率(%)", "taxRate"),
  184. ExportColumn("含税金额", "amountWithTax"),
  185. ExportColumn("签订日期", "signDate"),
  186. ExportColumn("实际签订日期", "actualSignDate"),
  187. ExportColumn("开始日期", "startDate"),
  188. ExportColumn("结束日期", "endDate"),
  189. ExportColumn("合同期限(月)", "contractPeriod"),
  190. ExportColumn("合同状态", "status", dict_type="crm_contract_status"),
  191. ExportColumn("履约状态", "performanceStatus", dict_type="crm_performance_status"),
  192. ExportColumn("履约完成度(%)", "performanceRate"),
  193. ExportColumn("客户满意度", "customerSatisfaction"),
  194. ExportColumn("审批状态", "approvalStatus", dict_type="crm_contract_approval_status"),
  195. ExportColumn("负责人", "ownerUserName"),
  196. ExportColumn("已回款金额", "receivedAmount"),
  197. ExportColumn("未回款金额", "unreceivedAmount"),
  198. ExportColumn("已开票金额", "invoiceAmount"),
  199. ExportColumn("未开票金额", "uninvoiceAmount"),
  200. ExportColumn("甲方", "partyA"),
  201. ExportColumn("乙方", "partyB"),
  202. ExportColumn("乙方法定代表人", "partyBLegalPerson"),
  203. ExportColumn("乙方代理人", "partyBAgent"),
  204. ExportColumn("乙方电话/传真", "partyBPhoneFax"),
  205. ExportColumn("乙方开户银行", "partyBBank"),
  206. ExportColumn("乙方银行账号", "partyBAccount"),
  207. ExportColumn("创建时间", "createTime"),
  208. ExportColumn("更新时间", "updateTime"),
  209. ExportColumn("备注", "remark"),
  210. )
  211. CONTRACT_CHANGE_EXPORT_COLUMNS = (
  212. ExportColumn("合同编号", "contractNo"),
  213. ExportColumn("合同名称", "contractName"),
  214. ExportColumn("变更类型", "changeType", dict_type="crm_contract_change_type"),
  215. ExportColumn("变更原因", "changeReason"),
  216. ExportColumn("变更内容", "changeContent"),
  217. ExportColumn("变更金额", "changeAmount"),
  218. ExportColumn("审批状态", "approvalStatus", dict_type="crm_approval_status"),
  219. ExportColumn("审批人", "approverName"),
  220. ExportColumn("审批时间", "approvalTime"),
  221. ExportColumn("创建时间", "createTime"),
  222. ExportColumn("备注", "remark"),
  223. )
  224. CONTRACT_TEMPLATE_EXPORT_COLUMNS = (
  225. ExportColumn("模板编号", "templateNo"),
  226. ExportColumn("模板名称", "templateName"),
  227. ExportColumn("合同类型", "contractType", dict_type="crm_contract_type"),
  228. ExportColumn("乙方", "partyB"),
  229. ExportColumn("默认币种", "defaultCurrency"),
  230. ExportColumn("默认税率(%)", "defaultTaxRate"),
  231. ExportColumn("默认期限(月)", "defaultPeriod"),
  232. ExportColumn("是否启用", "isActive", formatter=_yes_no),
  233. ExportColumn("使用次数", "usageCount"),
  234. ExportColumn("创建时间", "createTime"),
  235. ExportColumn("备注", "remark"),
  236. )
  237. CONTRACT_APPROVAL_EXPORT_COLUMNS = (
  238. ExportColumn("合同ID", "contractId"),
  239. ExportColumn("审批步骤", "step"),
  240. ExportColumn("步骤名称", "stepName"),
  241. ExportColumn("审批人", "approverName"),
  242. ExportColumn("审批结果", "approvalResult", dict_type="crm_approval_status"),
  243. ExportColumn("审批意见", "approvalOpinion"),
  244. ExportColumn("审批时间", "approvalTime"),
  245. ExportColumn("创建时间", "createTime"),
  246. ExportColumn("备注", "remark"),
  247. )