|
|
@@ -963,7 +963,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
private List<InsPlyIncomeDto> queryFollowIncomeData(SettlementReportQueryVo queryVo) {
|
|
|
QueryFollowIncomeVo incomeVo = new QueryFollowIncomeVo(
|
|
|
null, null, baseController.getSystemCode(), null,
|
|
|
- queryVo.getCompanyId(), queryVo.getStartTime(), queryVo.getEndTime()
|
|
|
+ queryVo.getCompanyId(), queryVo.getStartTime(), queryVo.getEndTime(),
|
|
|
+ queryVo.getSigningStartTime(), queryVo.getSigningEndTime()
|
|
|
);
|
|
|
return baseMapper.queryFollowIncome(incomeVo);
|
|
|
}
|
|
|
@@ -1011,6 +1012,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
if (invoiceTimeCond) {
|
|
|
invoiceWrapper.between(InsPlyIncomeInvoice::getInvoiceTime, toStartDateTime(invoiceStartTime), toEndDateTime(invoiceEndTime));
|
|
|
}
|
|
|
+ invoiceWrapper.eq(InsPlyIncomeInvoice::getInvoiceType, queryVo.getInvoiceType());
|
|
|
List<InsPlyIncomeInvoice> invoiceList = insPlyIncomeInvoiceMapper.selectList(invoiceWrapper);
|
|
|
if ((StrUtil.isNotBlank(status) || invoiceTimeCond) && CollUtil.isEmpty(invoiceList)) {
|
|
|
return new ArrayList<>(0);
|
|
|
@@ -1199,6 +1201,95 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
return platformCompanyFeeVos;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 为私有协议跟单费列表设置disableFlag
|
|
|
+ * 根据签单时间的年月、companyId、partnerCompanyId查询ins_fee_follow_order表,有数据则disableFlag为1
|
|
|
+ * 如果没有数据再根据年月、partnerCompanyId查询ins_fee_follow_order_reconciliation表,有数据则disableFlag为1
|
|
|
+ * 否则disableFlag为0
|
|
|
+ * @param records 应收数据列表
|
|
|
+ * @param systemCode 租户代码
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void setDisableFlagForOtherReceivable(List<InsPlyIncome> records, String systemCode) {
|
|
|
+ if (CollUtil.isEmpty(records)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 第一步:批量查询 ptl_agreement 表,补全 partner_company_id
|
|
|
+ Set<String> agreementIds = records.stream()
|
|
|
+ .filter(r -> StrUtil.isNotBlank(r.getAgreementId()))
|
|
|
+ .map(InsPlyIncome::getAgreementId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ Map<String, String> agreementPartnerCompanyMap = new HashMap<>();
|
|
|
+ if (CollUtil.isNotEmpty(agreementIds)) {
|
|
|
+ LambdaQueryWrapper<PtlAgreement> agreementWrapper = new LambdaQueryWrapper<>();
|
|
|
+ agreementWrapper.in(PtlAgreement::getId, agreementIds);
|
|
|
+ List<PtlAgreement> agreements = ptlAgreementMapper.selectList(agreementWrapper);
|
|
|
+ for (PtlAgreement agreement : agreements) {
|
|
|
+ agreementPartnerCompanyMap.put(agreement.getId(), agreement.getPartnerCompanyId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将 partner_company_id 设置到对应的 ins_ply_income 对象中
|
|
|
+ for (InsPlyIncome record : records) {
|
|
|
+ if (StrUtil.isNotBlank(record.getAgreementId())) {
|
|
|
+ record.setPartnerCompanyId(agreementPartnerCompanyMap.get(record.getAgreementId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 第二步:构建查询条件的唯一标识:year_month_companyId_partnerCompanyId
|
|
|
+ Map<String, InsPlyIncome> keyMap = new HashMap<>();
|
|
|
+ Set<Integer> years = new HashSet<>();
|
|
|
+ Set<Integer> months = new HashSet<>();
|
|
|
+ Set<String> companyIds = new HashSet<>();
|
|
|
+ Set<String> partnerCompanyIds = new HashSet<>();
|
|
|
+
|
|
|
+ for (InsPlyIncome record : records) {
|
|
|
+ if (record.getSigningTime() == null || StrUtil.isBlank(record.getCompanyId()) || StrUtil.isBlank(record.getPartnerCompanyId())) {
|
|
|
+ record.setDisableFlag("0");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ int year = record.getSigningTime().getYear();
|
|
|
+ int month = record.getSigningTime().getMonthValue();
|
|
|
+ String key = year + "_" + month + "_" + record.getCompanyId() + "_" + record.getPartnerCompanyId();
|
|
|
+ keyMap.put(key, record);
|
|
|
+
|
|
|
+ years.add(year);
|
|
|
+ months.add(month);
|
|
|
+ companyIds.add(record.getCompanyId());
|
|
|
+ partnerCompanyIds.add(record.getPartnerCompanyId());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (keyMap.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Set<String> matchedKeys = new HashSet<>();
|
|
|
+
|
|
|
+ // 第一步:查询 ins_fee_follow_order 表(@TableLogic 自动处理 is_delete=0)
|
|
|
+ LambdaQueryWrapper<InsFeeFollowOrder> followOrderWrapper = new LambdaQueryWrapper<>();
|
|
|
+ followOrderWrapper.eq(InsFeeFollowOrder::getSystemCode, systemCode);
|
|
|
+ followOrderWrapper.in(InsFeeFollowOrder::getYear, years);
|
|
|
+ followOrderWrapper.in(InsFeeFollowOrder::getMonth, months);
|
|
|
+ followOrderWrapper.in(InsFeeFollowOrder::getCompanyId, companyIds);
|
|
|
+ followOrderWrapper.in(InsFeeFollowOrder::getPartnerCompanyId, partnerCompanyIds);
|
|
|
+
|
|
|
+ List<InsFeeFollowOrder> followOrders = insFeeFollowOrderMapper.selectList(followOrderWrapper);
|
|
|
+
|
|
|
+ for (InsFeeFollowOrder order : followOrders) {
|
|
|
+ String key = order.getYear() + "_" + order.getMonth() + "_" + order.getCompanyId() + "_" + order.getPartnerCompanyId();
|
|
|
+ if (keyMap.containsKey(key)) {
|
|
|
+ matchedKeys.add(key);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置 disableFlag
|
|
|
+ for (Map.Entry<String, InsPlyIncome> entry : keyMap.entrySet()) {
|
|
|
+ entry.getValue().setDisableFlag(matchedKeys.contains(entry.getKey()) ? "1" : "0");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 填充应收订单的必要字段信息
|
|
|
@@ -4148,7 +4239,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
String systemCode = baseController.getUserSystemCode();
|
|
|
|
|
|
// 查询该年份下的所有跟进收入数据,并按合作方公司ID进行分组
|
|
|
- QueryFollowIncomeVo queryFollowIncomeVo = new QueryFollowIncomeVo(startYear, endYear, systemCode, null, null, null, null);
|
|
|
+ QueryFollowIncomeVo queryFollowIncomeVo = new QueryFollowIncomeVo(startYear, endYear, systemCode, null, null, null, null, null, null);
|
|
|
List<InsPlyIncomeDto> incomes = baseMapper.queryFollowIncome(queryFollowIncomeVo);
|
|
|
|
|
|
// ====================== 增加动态条件过滤 ======================
|