Skip to content

Commit a638821

Browse files
Merge pull request #110 from motech-implementations/cumulative-beneficiary-fix
Cumulative beneficiary fix
2 parents b326876 + 052c358 commit a638821

File tree

6 files changed

+24
-14
lines changed

6 files changed

+24
-14
lines changed

NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/controller/UserController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1436,6 +1436,7 @@ public ResponseEntity<Long> getCumulativeBeneficiaries(){
14361436

14371437

14381438
Long cumulativeJoinedSubscription = kilkariCallReportDao.getCumulativeJoinedSubscription(locationId, locationType, toDate);
1439+
LOGGER.info("cumulativecount:{},date:{},locationType:{},locationId:{}",cumulativeJoinedSubscription,toDate,locationType,locationId);
14391440
return ResponseEntity.ok(cumulativeJoinedSubscription);
14401441
// Long ashaStarted = 0L;
14411442
// Long ashaCompleted = 0L;

NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/dao/impl/BeneficiaryWithRegistrationDateBlockDaoImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public List<KilkariSubscriberRegistrationDateDto> allCountOffReports(Integer dis
5454
"COUNT(Case when s.subscription_status = 'COMPLETED' THEN s.subscription_id END) AS subscriptions_completed, " +
5555
"0 AS subscriptions_rejected , "+
5656
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 1 AND DATEDIFF(registrationDate, s.start_date) BETWEEN -90 AND 168 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Received_for_PW , "+
57-
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 2 OR DATEDIFF(registrationDate, s.start_date) BETWEEN 169 AND 504 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Received_for_Child , "+
57+
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 2 OR DATEDIFF(registrationDate, s.start_date) >= 169 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Received_for_Child , "+
5858
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 1 AND DATEDIFF(registrationDate, s.start_date) < -90 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Ineligible "+
5959
"FROM Beneficiary b " +
6060
" INNER JOIN subscriptions s ON b.id = s.beneficiary_id AND s.subscription_id = (SELECT MAX(subscription_id) FROM subscriptions WHERE beneficiary_id = b.id) " +

NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/dao/impl/BeneficiaryWithRegistrationDateDistrictDaoImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public List<KilkariSubscriberRegistrationDateDto> allCountOffReports(Integer sta
5656
"COUNT(CASE WHEN s.subscription_status = 'COMPLETED' THEN s.subscription_id END) AS subscriptions_completed , " +
5757
"0 AS subscriptions_rejected , "+
5858
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 1 AND DATEDIFF(registrationDate, s.start_date) BETWEEN -90 AND 168 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Received_for_PW , "+
59-
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 2 OR DATEDIFF(registrationDate, s.start_date) BETWEEN 169 AND 504 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Received_for_Child , "+
59+
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 2 OR DATEDIFF(registrationDate, s.start_date) >= 169 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Received_for_Child , "+
6060
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 1 AND DATEDIFF(registrationDate, s.start_date) < -90 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Ineligible "+
6161
"FROM Beneficiary b " +
6262
" INNER JOIN subscriptions s ON b.id = s.beneficiary_id AND s.subscription_id = (SELECT MAX(subscription_id) FROM subscriptions WHERE beneficiary_id = b.id) " +

NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/dao/impl/BeneficiaryWithRegistrationDateStateDaoImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public List<KilkariSubscriberRegistrationDateDto> allCountOffReports(Date fromDa
5454
"COUNT(CASE WHEN s.subscription_status = 'COMPLETED' THEN s.subscription_id END) AS subscriptions_completed ," +
5555
"0 AS subscriptions_rejected , "+
5656
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 1 AND DATEDIFF(registrationDate, s.start_date) BETWEEN -90 AND 168 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Received_for_PW , "+
57-
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 2 OR DATEDIFF(registrationDate, s.start_date) BETWEEN 169 AND 504 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Received_for_Child, "+
57+
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 2 OR DATEDIFF(registrationDate, s.start_date) >= 169 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Received_for_Child, "+
5858
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 1 AND DATEDIFF(registrationDate, s.start_date) < -90 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Ineligible "+
5959
"FROM Beneficiary b " +
6060
" INNER JOIN subscriptions s ON b.id = s.beneficiary_id AND s.subscription_id = (SELECT MAX(subscription_id) FROM subscriptions WHERE beneficiary_id = b.id) " +

NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/dao/impl/BeneficiaryWithRegistrationDateSubCentreDaoImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public List<KilkariSubscriberRegistrationDateDto> allCountOffReports(Integer blo
5656
"COUNT(CASE WHEN s.subscription_status = 'COMPLETED' THEN s.subscription_id END) AS subscriptions_completed , " +
5757
"0 AS subscriptions_rejected , "+
5858
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 1 AND DATEDIFF(registrationDate, s.start_date) BETWEEN -90 AND 168 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Received_for_PW , "+
59-
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 2 OR DATEDIFF(registrationDate, s.start_date) BETWEEN 169 AND 504 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Received_for_Child , "+
59+
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 2 OR DATEDIFF(registrationDate, s.start_date) >= 169 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Received_for_Child , "+
6060
"COUNT(DISTINCT CASE WHEN s.subscriptionPack_id = 1 AND DATEDIFF(registrationDate, s.start_date) < -90 THEN s.subscription_id ELSE NULL END) AS Subscriptions_Ineligible "+
6161
"FROM Beneficiary b " +
6262
" INNER JOIN subscriptions s ON b.id = s.beneficiary_id AND s.subscription_id = (SELECT MAX(subscription_id) FROM subscriptions WHERE beneficiary_id = b.id) "+

NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/dao/impl/KilkariCallReportDaoImpl.java

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import com.beehyv.nmsreporting.dao.KilkariCallReportDao;
55
import com.beehyv.nmsreporting.model.KilkariCalls;
66
import org.hibernate.Criteria;
7+
import org.hibernate.Query;
78
import org.hibernate.criterion.Order;
8-
import org.hibernate.criterion.Projections;
99
import org.hibernate.criterion.Restrictions;
1010
import org.springframework.stereotype.Repository;
1111

@@ -51,20 +51,29 @@ public KilkariCalls getKilkariCallreport(Integer locationId, String locationTyp
5151

5252
@Override
5353
public Long getCumulativeJoinedSubscription(Long locationId, String locationType, Date toDate) {
54-
Criteria criteria = createEntityCriteria();
54+
String hql;
5555

5656
if (locationId == 0 && "State".equalsIgnoreCase(locationType)) {
57-
criteria.add(Restrictions.eq("locationType", locationType));
57+
String sql = "SELECT COALESCE(SUM(CAST(total_beneficiaries AS SIGNED)), 0) " +
58+
"FROM agg_kilkari_call_report " +
59+
"WHERE location_type = :locationType AND date = (SELECT date FROM agg_kilkari_call_report ORDER BY date DESC LIMIT 1)";
60+
Query query = getSession().createSQLQuery(sql);
61+
query.setParameter("locationType", locationType);
62+
// query.setParameter("toDate", toDate);
63+
Long result = ((Number) query.uniqueResult()).longValue();
64+
return result != null ? result : 0L;
5865
} else {
59-
criteria.add(Restrictions.eq("locationId", locationId));
60-
criteria.add(Restrictions.eq("locationType", locationType));
66+
String sql = "SELECT COALESCE(SUM(CAST(total_beneficiaries AS SIGNED)), 0) " +
67+
"FROM agg_kilkari_call_report " +
68+
"WHERE location_id = :locationId AND location_type = :locationType AND date = (SELECT date FROM agg_kilkari_call_report ORDER BY date DESC LIMIT 1)";
69+
Query query = getSession().createSQLQuery(sql);
70+
query.setParameter("locationId", locationId);
71+
query.setParameter("locationType", locationType);
72+
// query.setParameter("toDate", toDate);
73+
Long result = ((Number) query.uniqueResult()).longValue();
74+
return result != null ? result : 0L;
6175
}
62-
criteria.add(Restrictions.eq("date", toDate));
6376

64-
criteria.setProjection(Projections.sum("uniqueBeneficiaries"));
65-
66-
Long result = (Long) criteria.uniqueResult();
67-
return result != null ? result : 0L;
6877
}
6978
}
7079

0 commit comments

Comments
 (0)