|
@@ -25,8 +25,10 @@ import com.jeeplus.finance.invoice.thread.ApprovalThread;
|
|
|
import com.jeeplus.finance.invoice.thread.RedApprovalThread;
|
|
import com.jeeplus.finance.invoice.thread.RedApprovalThread;
|
|
|
import com.jeeplus.finance.invoice.util.DingTalkUtil;
|
|
import com.jeeplus.finance.invoice.util.DingTalkUtil;
|
|
|
import com.jeeplus.finance.invoice.util.OMS.FileHandlingUtil;
|
|
import com.jeeplus.finance.invoice.util.OMS.FileHandlingUtil;
|
|
|
|
|
+import com.jeeplus.finance.projectRecords.domain.CwProjectRecords;
|
|
|
import com.jeeplus.finance.projectRecords.mapper.CwProjectRecordsMapper;
|
|
import com.jeeplus.finance.projectRecords.mapper.CwProjectRecordsMapper;
|
|
|
import com.jeeplus.finance.projectRecords.service.dto.CwProjectRecordsDTO;
|
|
import com.jeeplus.finance.projectRecords.service.dto.CwProjectRecordsDTO;
|
|
|
|
|
+import com.jeeplus.finance.projectReport.domain.CwProjectReport;
|
|
|
import com.jeeplus.finance.projectReport.domain.CwProjectReportData;
|
|
import com.jeeplus.finance.projectReport.domain.CwProjectReportData;
|
|
|
import com.jeeplus.finance.projectReport.mapper.CwProjectReportMapper;
|
|
import com.jeeplus.finance.projectReport.mapper.CwProjectReportMapper;
|
|
|
import com.jeeplus.finance.workClientInfo.domain.CwWorkClientBase;
|
|
import com.jeeplus.finance.workClientInfo.domain.CwWorkClientBase;
|
|
@@ -1314,7 +1316,26 @@ public class CwFinanceInvoiceService extends ServiceImpl<CwFinanceInvoiceMapper,
|
|
|
|
|
|
|
|
public List<CwFinanceInvoiceDTO> getByContractId(String contractId, CwFinanceInvoiceDTO cwFinanceInvoiceDTO) throws Exception {
|
|
public List<CwFinanceInvoiceDTO> getByContractId(String contractId, CwFinanceInvoiceDTO cwFinanceInvoiceDTO) throws Exception {
|
|
|
if (StringUtils.isNotBlank(contractId)) {
|
|
if (StringUtils.isNotBlank(contractId)) {
|
|
|
- List<String> idByContractId = cwFinanceInvoiceMapper.getIdByContractId(contractId);
|
|
|
|
|
|
|
+ // 第1步:轻量查询,收集合同下所有项目 ID 和报告 ID
|
|
|
|
|
+ List<String> projectIds = cwProjectRecordsMapper.selectList(
|
|
|
|
|
+ new LambdaQueryWrapper<CwProjectRecords>()
|
|
|
|
|
+ .select(CwProjectRecords::getId)
|
|
|
|
|
+ .eq(CwProjectRecords::getContractId, contractId)
|
|
|
|
|
+ .eq(CwProjectRecords::getDelFlag, "0")
|
|
|
|
|
+ ).stream().map(CwProjectRecords::getId).collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+ List<String> reportIds = new ArrayList<>();
|
|
|
|
|
+ if (CollectionUtil.isNotEmpty(projectIds)) {
|
|
|
|
|
+ reportIds = cwProjectReportMapper.selectList(
|
|
|
|
|
+ new LambdaQueryWrapper<CwProjectReport>()
|
|
|
|
|
+ .select(CwProjectReport::getId)
|
|
|
|
|
+ .in(CwProjectReport::getProjectId, projectIds)
|
|
|
|
|
+ .eq(CwProjectReport::getDelFlag, "0")
|
|
|
|
|
+ ).stream().map(CwProjectReport::getId).collect(Collectors.toList());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 第2步:用收集到的 ID 列表一条 SQL 查发票(只扫一次 cw_finance_invoice_base)
|
|
|
|
|
+ List<String> idByContractId = cwFinanceInvoiceMapper.getIdByContractId(contractId, projectIds, reportIds);
|
|
|
if (CollectionUtil.isNotEmpty(idByContractId)) {
|
|
if (CollectionUtil.isNotEmpty(idByContractId)) {
|
|
|
QueryWrapper<CwFinanceInvoice> queryWrapper = QueryWrapperGenerator.buildQueryCondition(CwFinanceInvoiceWrapper.INSTANCE.toEntity(cwFinanceInvoiceDTO), CwFinanceInvoice.class);
|
|
QueryWrapper<CwFinanceInvoice> queryWrapper = QueryWrapperGenerator.buildQueryCondition(CwFinanceInvoiceWrapper.INSTANCE.toEntity(cwFinanceInvoiceDTO), CwFinanceInvoice.class);
|
|
|
queryWrapper.in("fi.id", idByContractId);
|
|
queryWrapper.in("fi.id", idByContractId);
|