| | |
| | | IFNULL(receivable.price, 0) AS receivable_price |
| | | FROM crm_customer AS customer |
| | | INNER JOIN crm_contract AS contract ON customer.id = contract.customer_id |
| | | LEFT JOIN crm_receivable AS receivable ON contract.id = receivable.contract_id |
| | | WHERE customer.deleted = 0 AND contract.deleted = 0 AND receivable.deleted = 0 |
| | | <!-- receivable.deleted = 0 必须写在 ON 里:写到 WHERE 里会让 LEFT JOIN 退化成 INNER JOIN, |
| | | 没有回款记录的合同会被整行丢掉(成交 6 个客户、转化表只出现 4 个) --> |
| | | LEFT JOIN crm_receivable AS receivable ON contract.id = receivable.contract_id AND receivable.deleted = 0 |
| | | WHERE customer.deleted = 0 AND contract.deleted = 0 |
| | | AND contract.audit_status = ${@cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum@APPROVE.status} |
| | | AND customer.owner_user_id IN |
| | | <foreach collection="userIds" item="userId" open="(" close=")" separator=","> |
| | |
| | | FROM crm_customer AS customer |
| | | LEFT JOIN crm_contract AS contract ON customer.id = contract.customer_id |
| | | LEFT JOIN crm_contract_product AS contract_product ON contract_product.contract_id = contract.id |
| | | LEFT JOIN crm_product AS product ON contract_product.product_id = product.id |
| | | LEFT JOIN mdm_item AS product ON contract_product.item_id = product.id |
| | | WHERE customer.deleted = 0 |
| | | AND contract.deleted = 0 |
| | | AND contract_product.deleted = 0 |
| | |
| | | #{userId} |
| | | </foreach> |
| | | AND customer.create_time BETWEEN #{times[0],javaType=java.time.LocalDateTime} AND #{times[1],javaType=java.time.LocalDateTime} |
| | | GROUP BY product.id |
| | | GROUP BY product.id, product.name |
| | | </select> |
| | | |
| | | </mapper> |