CrmContractVo.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  1. package org.dromara.crm.domain.vo;
  2. import cn.idev.excel.annotation.ExcelProperty;
  3. import io.github.linpeilie.annotations.AutoMapper;
  4. import lombok.Data;
  5. import org.dromara.common.excel.annotation.ExcelDictFormat;
  6. import org.dromara.common.excel.convert.ExcelDictConvert;
  7. import org.dromara.common.translation.annotation.Translation;
  8. import org.dromara.common.translation.constant.TransConstant;
  9. import org.dromara.crm.domain.CrmContract;
  10. import com.fasterxml.jackson.annotation.JsonFormat;
  11. import java.io.Serial;
  12. import java.io.Serializable;
  13. import java.math.BigDecimal;
  14. import java.time.LocalDate;
  15. import java.time.LocalDateTime;
  16. import java.util.Date;
  17. import java.util.List;
  18. /**
  19. * CRM合同视图对象 crm_contract
  20. *
  21. * @author AI Assistant
  22. * @date 2025-10-04
  23. */
  24. @Data
  25. @AutoMapper(target = CrmContract.class)
  26. public class CrmContractVo implements Serializable {
  27. @Serial
  28. private static final long serialVersionUID = 1L;
  29. /**
  30. * 主键ID
  31. */
  32. @ExcelProperty(value = "ID")
  33. private Long id;
  34. /**
  35. * 合同编号
  36. */
  37. @ExcelProperty(value = "合同编号")
  38. private String contractNo;
  39. /**
  40. * 合同名称
  41. */
  42. @ExcelProperty(value = "合同名称")
  43. private String contractName;
  44. /**
  45. * 客户ID
  46. */
  47. private Long customerId;
  48. /**
  49. * 客户名称
  50. */
  51. @ExcelProperty(value = "客户名称")
  52. private String customerName;
  53. /**
  54. * 商机ID
  55. */
  56. private Long opportunityId;
  57. /**
  58. * 报价单ID
  59. */
  60. private Long quoteId;
  61. /**
  62. * 原合同ID(续签时关联)
  63. */
  64. private Long parentContractId;
  65. /**
  66. * 续签次数
  67. */
  68. @ExcelProperty(value = "续签次数")
  69. private Integer renewalCount;
  70. /**
  71. * 合同模板ID
  72. */
  73. private Long templateId;
  74. /**
  75. * 合同模版
  76. */
  77. @ExcelProperty(value = "合同模版", converter = ExcelDictConvert.class)
  78. @ExcelDictFormat(dictType = "crm_contract_template")
  79. private String contractTemplate;
  80. /**
  81. * 联系人ID
  82. */
  83. private Long contactId;
  84. /**
  85. * 联系人姓名
  86. */
  87. @ExcelProperty(value = "联系人")
  88. private String contactName;
  89. /**
  90. * 联系人手机
  91. */
  92. private String contactMobile;
  93. /**
  94. * 合同类型
  95. */
  96. @ExcelProperty(value = "合同类型", converter = ExcelDictConvert.class)
  97. @ExcelDictFormat(dictType = "crm_contract_type")
  98. private String contractType;
  99. /**
  100. * 合同性质
  101. */
  102. @ExcelProperty(value = "合同性质", converter = ExcelDictConvert.class)
  103. @ExcelDictFormat(dictType = "crm_contract_nature")
  104. private String contractNature;
  105. /**
  106. * 合同金额
  107. */
  108. @ExcelProperty(value = "合同金额")
  109. private BigDecimal amount;
  110. /**
  111. * 币种
  112. */
  113. @ExcelProperty(value = "币种", converter = ExcelDictConvert.class)
  114. @ExcelDictFormat(dictType = "crm_currency")
  115. private String currency;
  116. /**
  117. * 税率(%)
  118. */
  119. @ExcelProperty(value = "税率(%)")
  120. private BigDecimal taxRate;
  121. /**
  122. * 含税金额
  123. */
  124. @ExcelProperty(value = "含税金额")
  125. private BigDecimal amountWithTax;
  126. /**
  127. * 签订日期
  128. */
  129. @ExcelProperty(value = "签订日期")
  130. private LocalDate signDate;
  131. /**
  132. * 实际签订日期
  133. */
  134. @ExcelProperty(value = "实际签订日期")
  135. private LocalDate actualSignDate;
  136. /**
  137. * 开始日期
  138. */
  139. @ExcelProperty(value = "开始日期")
  140. private LocalDate startDate;
  141. /**
  142. * 结束日期
  143. */
  144. @ExcelProperty(value = "结束日期")
  145. private LocalDate endDate;
  146. /**
  147. * 合同期限(月)
  148. */
  149. @ExcelProperty(value = "合同期限(月)")
  150. private Integer contractPeriod;
  151. /**
  152. * 合同状态
  153. */
  154. @ExcelProperty(value = "合同状态", converter = ExcelDictConvert.class)
  155. @ExcelDictFormat(dictType = "crm_contract_status")
  156. private String status;
  157. /**
  158. * 履约状态
  159. */
  160. @ExcelProperty(value = "履约状态", converter = ExcelDictConvert.class)
  161. @ExcelDictFormat(dictType = "crm_performance_status")
  162. private String performanceStatus;
  163. /**
  164. * 履约完成度(%)
  165. */
  166. @ExcelProperty(value = "履约完成度(%)")
  167. private BigDecimal performanceRate;
  168. /**
  169. * 客户满意度(1-5星)
  170. */
  171. @ExcelProperty(value = "客户满意度")
  172. private Integer customerSatisfaction;
  173. /**
  174. * 审批状态
  175. */
  176. @ExcelProperty(value = "审批状态", converter = ExcelDictConvert.class)
  177. @ExcelDictFormat(dictType = "crm_contract_approval_status")
  178. private String approvalStatus;
  179. /**
  180. * 审批流程ID
  181. */
  182. private Long approvalFlowId;
  183. /**
  184. * 合同文件路径
  185. */
  186. private String contractFile;
  187. /**
  188. * 附件文件
  189. */
  190. private String attachmentFiles;
  191. /**
  192. * 负责人ID
  193. */
  194. private Long ownerUserId;
  195. /**
  196. * 负责人姓名
  197. */
  198. @ExcelProperty(value = "负责人")
  199. private String ownerUserName;
  200. /**
  201. * 已回款金额
  202. */
  203. @ExcelProperty(value = "已回款金额")
  204. private BigDecimal receivedAmount;
  205. /**
  206. * 未回款金额
  207. */
  208. @ExcelProperty(value = "未回款金额")
  209. private BigDecimal unreceivedAmount;
  210. /**
  211. * 已开票金额
  212. */
  213. @ExcelProperty(value = "已开票金额")
  214. private BigDecimal invoiceAmount;
  215. /**
  216. * 未开票金额
  217. */
  218. @ExcelProperty(value = "未开票金额")
  219. private BigDecimal uninvoiceAmount;
  220. /**
  221. * 甲方
  222. */
  223. @ExcelProperty(value = "甲方")
  224. private String partyA;
  225. /**
  226. * 甲方地址
  227. */
  228. private String partyAAddress;
  229. /**
  230. * 甲方联系人
  231. */
  232. private String partyAContact;
  233. /**
  234. * 甲方联系电话
  235. */
  236. private String partyAMobile;
  237. /**
  238. * 甲方法定代表人
  239. */
  240. private String partyALegalPerson;
  241. /**
  242. * 甲方代理人
  243. */
  244. private String partyAAgent;
  245. /**
  246. * 甲方电话/传真
  247. */
  248. private String partyAPhoneFax;
  249. /**
  250. * 甲方开户银行
  251. */
  252. private String partyABank;
  253. /**
  254. * 甲方银行账号
  255. */
  256. private String partyAAccount;
  257. /**
  258. * 供方主体ID(关联crm_supplier_info表)
  259. */
  260. private Long supplierId;
  261. /**
  262. * 供方主体名称(冗余字段,用于显示)
  263. */
  264. private String supplierName;
  265. /**
  266. * 结算方式(arrive_payment-货到付款/advance_payment-款到发货)
  267. */
  268. private String settlementMethod;
  269. /**
  270. * 乙方
  271. */
  272. @ExcelProperty(value = "乙方")
  273. private String partyB;
  274. /**
  275. * 乙方地址
  276. */
  277. private String partyBAddress;
  278. /**
  279. * 乙方联系人
  280. */
  281. private String partyBContact;
  282. /**
  283. * 乙方联系电话
  284. */
  285. private String partyBMobile;
  286. /**
  287. * 乙方法定代表人
  288. */
  289. @ExcelProperty(value = "乙方法定代表人")
  290. private String partyBLegalPerson;
  291. /**
  292. * 乙方代理人
  293. */
  294. @ExcelProperty(value = "乙方代理人")
  295. private String partyBAgent;
  296. /**
  297. * 乙方电话/传真
  298. */
  299. @ExcelProperty(value = "乙方电话/传真")
  300. private String partyBPhoneFax;
  301. /**
  302. * 乙方开户银行
  303. */
  304. @ExcelProperty(value = "乙方开户银行")
  305. private String partyBBank;
  306. /**
  307. * 乙方银行账号
  308. */
  309. @ExcelProperty(value = "乙方银行账号")
  310. private String partyBAccount;
  311. /**
  312. * 付款条款
  313. */
  314. private String paymentTerms;
  315. /**
  316. * 交付条款
  317. */
  318. private String deliveryTerms;
  319. /**
  320. * 合同条款
  321. */
  322. private String contractTerms;
  323. /**
  324. * 作废原因
  325. */
  326. private String invalidReason;
  327. /**
  328. * 作废时间
  329. */
  330. private LocalDateTime invalidTime;
  331. /**
  332. * 创建部门
  333. */
  334. private Long createDept;
  335. /**
  336. * 创建部门名称
  337. */
  338. @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "createDept")
  339. @ExcelProperty(value = "创建部门")
  340. private String createDeptName;
  341. /**
  342. * 创建者
  343. */
  344. private Long createBy;
  345. /**
  346. * 创建者昵称
  347. */
  348. @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy")
  349. @ExcelProperty(value = "创建人")
  350. private String createByName;
  351. /**
  352. * 创建时间
  353. */
  354. @ExcelProperty(value = "创建时间")
  355. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
  356. private Date createTime;
  357. /**
  358. * 更新者
  359. */
  360. private Long updateBy;
  361. /**
  362. * 更新者昵称
  363. */
  364. @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "updateBy")
  365. @ExcelProperty(value = "更新人")
  366. private String updateByName;
  367. /**
  368. * 更新时间
  369. */
  370. @ExcelProperty(value = "更新时间")
  371. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
  372. private Date updateTime;
  373. /**
  374. * 合同模板内容(富文本HTML)
  375. */
  376. private String templateContent;
  377. /**
  378. * 第五条结算方式草稿(按结算方式区分的JSON)
  379. */
  380. private String settlementClauseDrafts;
  381. /**
  382. * 备注
  383. */
  384. @ExcelProperty(value = "备注")
  385. private String remark;
  386. /**
  387. * 当前用户是否可以审批(前端使用,非数据库字段)
  388. */
  389. private Boolean canApprove;
  390. /**
  391. * 合同产品明细列表(非数据库字段,查询时关联)
  392. */
  393. private List<CrmContractProductVo> products;
  394. public List<CrmContractProductVo> getProducts() {
  395. return products;
  396. }
  397. public void setProducts(List<CrmContractProductVo> products) {
  398. this.products = products;
  399. }
  400. }