ICrmQuoteService.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package org.dromara.crm.service;
  2. import org.dromara.common.mybatis.core.page.PageQuery;
  3. import org.dromara.common.mybatis.core.page.TableDataInfo;
  4. import org.dromara.crm.domain.bo.CrmQuoteBo;
  5. import org.dromara.crm.domain.vo.CrmQuoteVo;
  6. import java.time.LocalDate;
  7. import java.util.Collection;
  8. import java.util.List;
  9. /**
  10. * 报价单Service接口
  11. *
  12. * @author 系统管理员
  13. * @date 2025-01-03
  14. */
  15. public interface ICrmQuoteService {
  16. /**
  17. * 查询报价单列表(分页)
  18. */
  19. TableDataInfo<CrmQuoteVo> queryPageList(CrmQuoteBo bo, PageQuery pageQuery);
  20. /**
  21. * 查询报价单列表
  22. */
  23. List<CrmQuoteVo> queryList(CrmQuoteBo bo);
  24. /**
  25. * 查询报价单详情
  26. */
  27. CrmQuoteVo queryById(Long id);
  28. /**
  29. * 新增报价单
  30. */
  31. Boolean insertByBo(CrmQuoteBo bo);
  32. /**
  33. * 修改报价单
  34. */
  35. Boolean updateByBo(CrmQuoteBo bo);
  36. /**
  37. * 校验并批量删除报价单
  38. */
  39. Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
  40. /**
  41. * 提交报价单
  42. */
  43. Boolean submitQuote(Long id, List<Long> approverIds, String remark);
  44. /**
  45. * 保存报价单模板内容
  46. *
  47. * @param id 报价单ID
  48. * @param templateContent 模板内容(富文本HTML)
  49. * @return 是否成功
  50. */
  51. Boolean saveTemplate(Long id, String templateContent);
  52. /**
  53. * 获取报价单模板内容
  54. *
  55. * @param id 报价单ID
  56. * @return 模板内容(富文本HTML)
  57. */
  58. String getTemplate(Long id);
  59. /**
  60. * 生成PDF
  61. */
  62. String generatePdf(Long id);
  63. /**
  64. * 生成分享链接
  65. *
  66. * @param id 报价单ID
  67. * @param validityDays 有效期天数
  68. * @param password 分享密码(可选)
  69. * @return 分享链接
  70. */
  71. String generateShare(Long id, Integer validityDays, String password);
  72. /**
  73. * 通过分享码查看报价单
  74. *
  75. * @param shareCode 分享码
  76. * @param password 密码(如果有密码保护)
  77. * @param ipAddress IP地址
  78. * @param userAgent 用户代理
  79. * @return 报价单信息
  80. */
  81. CrmQuoteVo viewByShareCode(String shareCode, String password, String ipAddress, String userAgent);
  82. /**
  83. * 接受报价单
  84. */
  85. Boolean acceptQuote(Long id, String remark);
  86. /**
  87. * 拒绝报价单
  88. */
  89. Boolean rejectQuote(Long id, String rejectReason, String remark);
  90. /**
  91. * 转为合同
  92. *
  93. * @param id 报价单ID
  94. * @param contractNo 合同编号
  95. * @param contractTitle 合同标题
  96. * @param signDate 签订日期(可选)
  97. * @param startDate 开始日期(可选)
  98. * @param endDate 结束日期(可选)
  99. * @return 合同ID
  100. */
  101. Long toContract(Long id, String contractNo, String contractTitle, LocalDate signDate, LocalDate startDate,
  102. LocalDate endDate);
  103. /**
  104. * 创建新版本
  105. */
  106. Long createNewVersion(Long id, String version, String remark);
  107. /**
  108. * 查询版本历史
  109. */
  110. List<CrmQuoteVo> queryVersions(String quoteNo);
  111. /**
  112. * 报价单统计概览
  113. */
  114. java.util.Map<String, Object> statisticsOverview(Long ownerUserId, String beginTime, String endTime);
  115. /**
  116. * 报价单状态分布
  117. */
  118. List<java.util.Map<String, Object>> statisticsStatus();
  119. /**
  120. * 报价单趋势分析
  121. */
  122. List<java.util.Map<String, Object>> statisticsTrend(String type, String beginTime, String endTime);
  123. /**
  124. * 撤回审批
  125. *
  126. * @param id 报价单ID
  127. * @param remark 撤回原因
  128. * @return 是否成功
  129. */
  130. Boolean withdrawApproval(Long id, String remark);
  131. /**
  132. * 作废报价单
  133. *
  134. * @param id 报价单ID
  135. * @param remark 作废原因
  136. * @return 是否成功
  137. */
  138. Boolean invalidQuote(Long id, String remark);
  139. }