Subversion Repositories SmartDukaan

Rev

Rev 34103 | Rev 34282 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
33917 ranu 1
package com.spice.profitmandi.service;
2
 
3
import com.spice.profitmandi.common.model.ProfitMandiConstants;
33985 ranu 4
import com.spice.profitmandi.dao.entity.inventory.RbmAchievements;
33926 ranu 5
import com.spice.profitmandi.dao.entity.inventory.RbmTargets;
33917 ranu 6
import com.spice.profitmandi.dao.model.*;
33985 ranu 7
import com.spice.profitmandi.dao.repository.catalog.RbmAchievementsRepository;
33926 ranu 8
import com.spice.profitmandi.dao.repository.catalog.RbmTargetsRepository;
33917 ranu 9
import org.apache.logging.log4j.LogManager;
10
import org.apache.logging.log4j.Logger;
11
import org.hibernate.Session;
12
import org.hibernate.SessionFactory;
13
import org.hibernate.query.NativeQuery;
14
import org.springframework.beans.factory.annotation.Autowired;
15
import org.springframework.stereotype.Component;
16
 
17
import javax.persistence.TypedQuery;
18
import java.time.LocalDate;
33926 ranu 19
import java.time.LocalDateTime;
20
import java.time.LocalTime;
33917 ranu 21
import java.util.ArrayList;
22
import java.util.List;
33997 ranu 23
import java.util.Map;
34034 ranu 24
import java.util.Optional;
33997 ranu 25
import java.util.stream.Collectors;
33917 ranu 26
 
27
@Component
28
public class RbmTargetServiceImpl implements RbmTargetService {
29
    private static final Logger LOGGER = LogManager.getLogger(RbmTargetServiceImpl.class);
30
 
31
    @Autowired
32
    SessionFactory sessionFactory;
33
 
33926 ranu 34
    @Autowired
35
    RbmTargetsRepository rbmTargetsRepository;
33917 ranu 36
 
33985 ranu 37
    @Autowired
38
    RbmAchievementsRepository rbmAchievementsRepository;
39
 
33917 ranu 40
    @Override
41
    public List<WarehouseRbmTargetModel> getWarehouseWiseRbmMonthlyTarget() {
42
        Session session = sessionFactory.getCurrentSession();
43
        final TypedQuery<WarehouseRbmTargetModel> typedQuerySimilar = session.createNamedQuery("RbmTarget.getWarehouseWiseMonthlyTarget", WarehouseRbmTargetModel.class);
44
 
45
        return typedQuerySimilar.getResultList();
46
 
47
    }
48
 
49
    @Override
50
    public List<MTDAchievedTargetModel> getDateWiseAchievedTargetOfRbm(LocalDate startDate, LocalDate endDate) {
51
        Session session = sessionFactory.getCurrentSession();
52
        final TypedQuery<MTDAchievedTargetModel> typedQuerySimilar = session.createNamedQuery("RbmTarget.getRbmAchievedMonthlyTarget", MTDAchievedTargetModel.class);
53
        typedQuerySimilar.setParameter("startDate", startDate);
54
        typedQuerySimilar.setParameter("endDate", endDate);
55
        return typedQuerySimilar.getResultList();
56
 
57
    }
58
 
59
    @Override
34055 ranu 60
    public List<TodayAchievedMovementModel> getMovementWiseAchievementByDate(LocalDate startDate, LocalDate endDate) {
33917 ranu 61
        LOGGER.info("start date {}, end date {}", startDate, endDate);
62
        Session session = sessionFactory.getCurrentSession();
34055 ranu 63
        final TypedQuery<TodayAchievedMovementModel> typedQuerySimilar = session.createNamedQuery("RBMTarget.TodayAchivementByMovement", TodayAchievedMovementModel.class);
33917 ranu 64
        typedQuerySimilar.setParameter("startDate", startDate);
65
        typedQuerySimilar.setParameter("endDate", endDate);
66
        return typedQuerySimilar.getResultList();
67
 
68
    }
69
 
70
    @Override
71
    public List<WarehouseMobileStockByMovementModel> getWarehouseMobileStockByMovement() {
72
        Session session = sessionFactory.getCurrentSession();
73
        final TypedQuery<WarehouseMobileStockByMovementModel> typedQuerySimilar = session.createNamedQuery("WarehouseStock.MovementWiseMobileStock", WarehouseMobileStockByMovementModel.class);
74
 
75
        return typedQuerySimilar.getResultList();
76
 
77
    }
78
 
33991 ranu 79
    @Override
80
    public List<SoldCatalogsReportModel> getCatalogSoldReport(LocalDate startDate, LocalDate endDate) {
81
        Session session = sessionFactory.getCurrentSession();
82
        final TypedQuery<SoldCatalogsReportModel> typedQuerySimilar = session.createNamedQuery("CatalogsReport.SoldCatalogsReport", SoldCatalogsReportModel.class);
83
        typedQuerySimilar.setParameter("startDate", startDate);
84
        typedQuerySimilar.setParameter("endDate", endDate);
85
        return typedQuerySimilar.getResultList();
33917 ranu 86
 
33991 ranu 87
    }
88
 
89
 
33917 ranu 90
    public int getWorkingDaysCount(LocalDate startDate) {
91
        Session session = sessionFactory.getCurrentSession();
92
 
93
        // Convert the LocalDate to a format MySQL can interpret
94
        String startDateString = startDate.toString();
95
 
96
        final NativeQuery<?> nativeQuery = session.createNativeQuery(
97
                "SELECT (DATEDIFF(LAST_DAY(:startDate), :startDate) + 1) " +
98
                        " - (FLOOR((DATEDIFF(LAST_DAY(:startDate), :startDate) + (WEEKDAY(:startDate) + 1)) / 7)) " +
99
                        " - (CASE WHEN WEEKDAY(:startDate) = 6 THEN 1 ELSE 0 END) " +
100
                        " - (SELECT COUNT(*) " +
101
                        " FROM logistics.publicholidays " +
102
                        " WHERE date BETWEEN :startDate AND LAST_DAY(:startDate) " +
103
                        " AND WEEKDAY(date) != 6) AS working_days"
104
        );
105
 
106
        // Set the start date parameter for each placeholder
107
        nativeQuery.setParameter("startDate", startDateString);
108
 
109
        Object result = nativeQuery.getSingleResult();
110
        return result != null ? ((Number) result).intValue() : 0;
111
    }
112
 
113
 
114
    @Override
115
    public List<RbmArrViewModel> getRbmTodayArr() throws Exception {
116
        LocalDate todayDate = LocalDate.now();
117
        return getRbmTodayArr(todayDate);
118
    }
119
 
120
    @Override
33997 ranu 121
    public List<RbmTargetAndAchievementsModel> getRbmTargetsAndAchievemnts(LocalDate startDate, LocalDate endDate) {
122
 
34002 ranu 123
        List<RbmTargetsModel> rbmTargetsList = rbmTargetsRepository.selectTargetsModelListByDates(startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
33997 ranu 124
 
125
        LOGGER.info("rbmTargetsList {}", rbmTargetsList);
126
        // Group Targtes by RBM and Warehouse
34002 ranu 127
        Map<String, RbmTargetsModel> targetsMap = rbmTargetsList.stream()
33997 ranu 128
                .collect(Collectors.toMap(
129
                        a -> a.getRbmAuthId() + "-" + a.getWarehouseId(),
130
                        a -> a,
131
                        (a1, a2) -> mergeTargets(a1, a2) // Handle duplicates by merging
132
                ));
133
 
134
 
34002 ranu 135
        List<RbmAchievementsModel> rbmAchievements = rbmAchievementsRepository.selectAchievementsModelListByDates(startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
33997 ranu 136
        LOGGER.info("rbmTargetsList {}", rbmAchievements);
137
        // Group achievements by RBM and Warehouse
34002 ranu 138
        Map<String, RbmAchievementsModel> achievementMap = rbmAchievements.stream()
33997 ranu 139
                .collect(Collectors.toMap(
140
                        a -> a.getRbmAuthId() + "-" + a.getWarehouseId(),
141
                        a -> a,
142
                        (a1, a2) -> mergeAchievements(a1, a2) // Handle duplicates by merging
143
                ));
144
 
145
        return targetsMap.keySet().stream()
146
                .map(key -> {
147
                    String[] parts = key.split("-");
148
                    int rbmAuthId = Integer.parseInt(parts[0]);
149
                    int warehouseId = Integer.parseInt(parts[1]);
150
 
34002 ranu 151
                    RbmTargetsModel target = targetsMap.get(key);
152
                    RbmAchievementsModel achievement = achievementMap.getOrDefault(key, new RbmAchievementsModel());
33997 ranu 153
 
154
                    RbmTargetAndAchievementsModel model = new RbmTargetAndAchievementsModel();
155
                    model.setAuthId(rbmAuthId);
156
                    model.setRbmName(target.getRbmName());
157
                    model.setWarehouseName(ProfitMandiConstants.WAREHOUSE_MAP.getOrDefault(warehouseId, "Unknown"));
158
 
159
                    // Set target values
34006 ranu 160
                    model.setHidTarget((long) target.getHidTarget());
34098 ranu 161
                    model.setRunningTarget((long) target.getRunningTarget());
34006 ranu 162
                    model.setFastMovingTarget((long) target.getFastMovingTarget());
163
                    model.setSlowMovingTarget((long) target.getSlowMovingTarget());
164
                    model.setOtherMovingTarget((long) target.getOtherTarget());
33997 ranu 165
 
166
                    // Set achievement values
34006 ranu 167
                    model.setAchievedHid((long) achievement.getAchievedHidTarget());
34098 ranu 168
                    model.setAchievedRunning((long) achievement.getAchievedRunningTarget());
34006 ranu 169
                    model.setAchievedFastMoving((long) achievement.getAchievedFastMovingTarget());
170
                    model.setAchievedSlowMoving((long) achievement.getAchievedSlowMovingTarget());
171
                    model.setAchievedOtherMoving((long) achievement.getAchievedOtherTarget());
33997 ranu 172
 
173
                    model.setTotalTarget(
34006 ranu 174
                            (long) target.getHidTarget() +
34098 ranu 175
                                    (long) target.getRunningTarget() +
34006 ranu 176
                                    (long) target.getFastMovingTarget() +
177
                                    (long) target.getSlowMovingTarget() +
178
                                    (long) target.getOtherTarget()
33997 ranu 179
                    );
180
                    model.setTotalAchievemnt(
34006 ranu 181
                            (long) achievement.getAchievedHidTarget() +
34098 ranu 182
                                    (long) achievement.getAchievedRunningTarget() +
34006 ranu 183
                                    (long) achievement.getAchievedFastMovingTarget() +
184
                                    (long) achievement.getAchievedSlowMovingTarget() +
185
                                    (long) achievement.getAchievedOtherTarget()
33997 ranu 186
                    );
187
 
188
                    return model;
189
                })
190
                .collect(Collectors.toList());
191
 
192
    }
193
 
34002 ranu 194
    private RbmTargetsModel mergeTargets(RbmTargetsModel a1, RbmTargetsModel a2) {
33997 ranu 195
 
196
        // Merge logic for achievements (aggregate the target and achieved values)
34006 ranu 197
        a1.setHidTarget((a1.getHidTarget()) +
198
                (a2.getHidTarget()));
33997 ranu 199
 
34006 ranu 200
        a1.setFastMovingTarget((a1.getFastMovingTarget()) +
201
                (a2.getFastMovingTarget()));
33997 ranu 202
 
34006 ranu 203
        a1.setSlowMovingTarget((a1.getSlowMovingTarget()) +
204
                (a2.getSlowMovingTarget()));
33997 ranu 205
 
34098 ranu 206
        a1.setRunningTarget((a1.getRunningTarget()) +
207
                (a2.getRunningTarget()));
33997 ranu 208
 
34006 ranu 209
        a1.setOtherTarget((a1.getOtherTarget()) +
210
                (a2.getOtherTarget()));
33997 ranu 211
        return a1;
212
    }
213
 
34002 ranu 214
    private RbmAchievementsModel mergeAchievements(RbmAchievementsModel a1, RbmAchievementsModel a2) {
33997 ranu 215
        // Merge logic for achievements (aggregate the target and achieved values)
34006 ranu 216
        a1.setAchievedHidTarget((a1.getAchievedHidTarget()) +
217
                (a2.getAchievedHidTarget()));
33997 ranu 218
 
34098 ranu 219
        a1.setAchievedRunningTarget((a1.getAchievedRunningTarget()) +
220
                (a2.getAchievedRunningTarget()));
33997 ranu 221
 
34006 ranu 222
        a1.setAchievedFastMovingTarget((a1.getAchievedFastMovingTarget()) +
223
                (a2.getAchievedFastMovingTarget()));
33997 ranu 224
 
34006 ranu 225
        a1.setAchievedSlowMovingTarget((a1.getAchievedSlowMovingTarget()) +
226
                (a2.getAchievedSlowMovingTarget()));
33997 ranu 227
 
34006 ranu 228
        a1.setAchievedOtherTarget((a1.getAchievedOtherTarget()) +
229
                (a2.getAchievedOtherTarget()));
33997 ranu 230
 
231
        return a1;
232
    }
34002 ranu 233
 
33997 ranu 234
    @Override
33917 ranu 235
    public List<RbmArrViewModel> getRbmTodayArr(LocalDate todayDate) throws Exception {
236
 
237
        LocalDate startDateOfMonthDay1 = LocalDate.now().withDayOfMonth(1);
238
 
239
        List<WarehouseRbmTargetModel> warehouseRbmTargetModels = this.getWarehouseWiseRbmMonthlyTarget();
240
 
34055 ranu 241
        List<TodayAchievedMovementModel> todayAchievedMovementModels = getMovementWiseAchievementByDate(todayDate, todayDate.plusDays(1));
33917 ranu 242
 
243
        List<MTDAchievedTargetModel> mtdAchievedTargetModels = getDateWiseAchievedTargetOfRbm(startDateOfMonthDay1, todayDate);
244
 
245
        int remainingWorkingDaysCount = getWorkingDaysCount(todayDate);
246
 
33926 ranu 247
        List<RbmTargets> todayRbmTargetsList = rbmTargetsRepository.selectTargetsByDates(todayDate.atStartOfDay(), todayDate.atTime(LocalTime.MAX));
33917 ranu 248
 
33926 ranu 249
        LOGGER.info("todayRbmTargetsList {}", todayRbmTargetsList);
33917 ranu 250
 
251
        List<RbmArrViewModel> rbmArrViewModels = new ArrayList<>();
252
 
34028 ranu 253
        if (!todayRbmTargetsList.isEmpty()) {
33917 ranu 254
 
34028 ranu 255
            for (WarehouseRbmTargetModel rbmTarget : warehouseRbmTargetModels) {
33917 ranu 256
 
34028 ranu 257
                float monthlyTarget = rbmTarget.getMonthlyTarget();
258
                float achievedSoFar = (float) mtdAchievedTargetModels.stream()
259
                        .filter(x -> x.getAuthId() == rbmTarget.getAuthId() && x.getWarehouseId() == rbmTarget.getWarehouseId())
260
                        .mapToDouble(MTDAchievedTargetModel::getAcheivedMonthlyTarget)
261
                        .sum();
33917 ranu 262
 
34028 ranu 263
                float remainingTarget = monthlyTarget - achievedSoFar;
33953 ranu 264
 
34028 ranu 265
                float todayTarget = (remainingWorkingDaysCount > 0 && remainingTarget > 0) ? remainingTarget / remainingWorkingDaysCount : 0;
266
 
33926 ranu 267
                String warehouseName = ProfitMandiConstants.WAREHOUSE_MAP.getOrDefault(rbmTarget.getWarehouseId(), "Unknown");
33917 ranu 268
 
34281 ranu 269
                LOGGER.info("rbmTarget {}", rbmTarget);
270
 
33926 ranu 271
                TodayAchievedMovementModel todayAchievedMovementModel = todayAchievedMovementModels.stream().filter(x -> x.getAuthId() == rbmTarget.getAuthId() && x.getWarehouseId() == rbmTarget.getWarehouseId()).findFirst().get();
33917 ranu 272
 
34034 ranu 273
                Optional<RbmTargets> optionalTodayRbmTargets = todayRbmTargetsList.stream()
274
                        .filter(x -> x.getRbmAuthId() == rbmTarget.getAuthId() && x.getWarehouseId() == rbmTarget.getWarehouseId())
275
                        .findFirst();
33917 ranu 276
 
34034 ranu 277
                if (optionalTodayRbmTargets.isPresent()) {
278
                    RbmTargets todayRbmTargets = optionalTodayRbmTargets.get();
279
                    LOGGER.info("todayRbmTargets {}", todayRbmTargets);
280
                    RbmArrViewModel viewModel = new RbmArrViewModel();
33917 ranu 281
 
34034 ranu 282
                    viewModel.setAuthId(rbmTarget.getAuthId());
283
                    viewModel.setRbmName(rbmTarget.getRbmName());
284
                    viewModel.setWarehouseName(warehouseName);
285
                    viewModel.setTodayTarget(Math.round(todayTarget));
286
                    viewModel.setMonthlyTarget(Math.round(monthlyTarget));
287
                    viewModel.setMtdAchievedTarget(Math.round(achievedSoFar));
33926 ranu 288
 
34034 ranu 289
                    viewModel.setTodayHidTarget(Math.round((todayRbmTargets.getHidTarget())));
290
                    viewModel.setTodayFastMovingTarget(Math.round(todayRbmTargets.getFastMovingTarget()));
34098 ranu 291
                    viewModel.setTodaySlowMovingTarget(Math.round(todayRbmTargets.getSlowMovingtarget()));
292
                    viewModel.setTodayRunningTarget(Math.round(todayRbmTargets.getRunningtarget()));
34034 ranu 293
                    viewModel.setTodayOtherMovingTarget(Math.round(todayRbmTargets.getOtherTarget()));
33926 ranu 294
 
34034 ranu 295
                    viewModel.setTodayAchievedHidTarget(Math.round(todayAchievedMovementModel.getHidBilled()));
296
                    viewModel.setTodayAchievedFastMovingTarget(Math.round(todayAchievedMovementModel.getFastMovingBilled()));
34098 ranu 297
                    viewModel.setTodayAchievedSlowMovingTarget(Math.round(todayAchievedMovementModel.getSlowMovinBilled()));
298
                    viewModel.setTodayAchievedRunningTarget(Math.round(todayAchievedMovementModel.getRunningBilled()));
34034 ranu 299
                    viewModel.setTodayAchievedOtherMovingTarget(Math.round(todayAchievedMovementModel.getOtherBilled()));
34098 ranu 300
                    viewModel.setTotalAchievedTarget(Math.round(todayAchievedMovementModel.getHidBilled() + todayAchievedMovementModel.getFastMovingBilled() + todayAchievedMovementModel.getSlowMovinBilled() + todayAchievedMovementModel.getRunningBilled() + todayAchievedMovementModel.getOtherBilled()));
33917 ranu 301
 
34034 ranu 302
                    rbmArrViewModels.add(viewModel);
303
                } else {
304
                    LOGGER.info("No matching RbmTargets found for AuthId: {} and rbmname {} and WarehouseId: {}", rbmTarget.getAuthId(), rbmTarget.getRbmName(), rbmTarget.getWarehouseId());
305
                }
33917 ranu 306
 
34034 ranu 307
 
308
 
34028 ranu 309
            }
33917 ranu 310
        }
311
 
312
        LOGGER.info("rbmArrViewModels {}", rbmArrViewModels);
313
        return rbmArrViewModels;
314
    }
315
 
33926 ranu 316
    @Override
317
    public void setMovementWiseRbmTargets() {
318
        LocalDate todayDate = LocalDate.now();
33917 ranu 319
 
33926 ranu 320
        LocalDate startDateOfMonthDay1 = LocalDate.now().withDayOfMonth(1);
321
 
322
        List<WarehouseRbmTargetModel> warehouseRbmTargetModels = this.getWarehouseWiseRbmMonthlyTarget();
323
 
324
        List<MTDAchievedTargetModel> mtdAchievedTargetModels = getDateWiseAchievedTargetOfRbm(startDateOfMonthDay1, todayDate);
325
 
326
 
327
        int remainingWorkingDaysCount = getWorkingDaysCount(todayDate);
328
 
329
        List<WarehouseMobileStockByMovementModel> warehouseMobileStockByMovementModels = getWarehouseMobileStockByMovement();
330
 
331
        for (WarehouseRbmTargetModel rbmTarget : warehouseRbmTargetModels) {
332
 
333
            float monthlyTarget = rbmTarget.getMonthlyTarget();
334
            float achievedSoFar = (float) mtdAchievedTargetModels.stream()
335
                    .filter(x -> x.getAuthId() == rbmTarget.getAuthId() && x.getWarehouseId() == rbmTarget.getWarehouseId())
336
                    .mapToDouble(MTDAchievedTargetModel::getAcheivedMonthlyTarget)
337
                    .sum();
338
 
339
 
340
            float remainingTarget = monthlyTarget - achievedSoFar;
33953 ranu 341
            LOGGER.info("remainingTarget {}", remainingTarget);
33926 ranu 342
 
33953 ranu 343
            float todayTarget = (remainingWorkingDaysCount > 0 && remainingTarget > 0) ? remainingTarget / remainingWorkingDaysCount : 0;
344
            LOGGER.info("todayTarget {}", todayTarget);
345
 
33926 ranu 346
            // Get the warehouse stock data
347
            WarehouseMobileStockByMovementModel warehouseMobileStockByMovementModel = warehouseMobileStockByMovementModels.stream()
348
                    .filter(x -> x.getWarehouseId() == rbmTarget.getWarehouseId()).findFirst().orElse(null);
349
 
350
 
351
            if (warehouseMobileStockByMovementModel != null) {
352
 
353
                // Total stock value for this warehouse
354
                float totalStockValue = warehouseMobileStockByMovementModel.getTotalAvailabilityPrice();
355
 
356
                // Calculate target allocation based on stock value proportion
357
                float hidTarget = (warehouseMobileStockByMovementModel.getTotalHidCatalogPrice() / totalStockValue) * todayTarget;
358
                float fastMovingTarget = (warehouseMobileStockByMovementModel.getTotalFastMovingCatalogPrice() / totalStockValue) * todayTarget;
359
                float slowMovingTarget = (warehouseMobileStockByMovementModel.getTotalSlowMovingCatalogPrice() / totalStockValue) * todayTarget;
34098 ranu 360
                float runningTarget = (warehouseMobileStockByMovementModel.getTotalRunningCatalogPrice() / totalStockValue) * todayTarget;
33926 ranu 361
                float otherTarget = (warehouseMobileStockByMovementModel.getTotalOtherCategoryCatalogPrice() / totalStockValue) * todayTarget;
362
 
363
                RbmTargets rbmTargets = new RbmTargets();
364
                rbmTargets.setWarehouseId(rbmTarget.getWarehouseId());
365
                rbmTargets.setRbmAuthId(rbmTarget.getAuthId());
366
                rbmTargets.setRbmName(rbmTarget.getRbmName());
34098 ranu 367
                rbmTargets.setRunningtarget(runningTarget);
33926 ranu 368
                rbmTargets.setHidTarget(hidTarget);
369
                rbmTargets.setFastMovingTarget(fastMovingTarget);
34098 ranu 370
                rbmTargets.setSlowMovingtarget(slowMovingTarget);
33926 ranu 371
                rbmTargets.setOtherTarget(otherTarget);
372
                rbmTargets.setCreateTimestamp(LocalDateTime.now());
373
 
374
                rbmTargetsRepository.persist(rbmTargets);
375
 
376
            }
377
        }
378
 
379
    }
380
 
381
 
33985 ranu 382
    @Override
383
    public void setMovementWiseRbmAchievement() {
384
        LocalDate todayDate = LocalDate.now();
385
 
34055 ranu 386
        List<TodayAchievedMovementModel> todayAchievedMovementModels = getMovementWiseAchievementByDate(todayDate, todayDate.plusDays(1));
33985 ranu 387
 
388
 
389
        for (TodayAchievedMovementModel achievement : todayAchievedMovementModels) {
390
 
391
            RbmAchievements rbmAchievements = new RbmAchievements();
392
 
393
            rbmAchievements.setRbmAuthId(achievement.getAuthId());
394
            rbmAchievements.setRbmName(achievement.getRbmName());
395
            rbmAchievements.setWarehouseId(achievement.getWarehouseId());
396
            rbmAchievements.setAchievedHidTarget(achievement.getHidBilled());
397
            rbmAchievements.setAchievedFastMovingTarget(achievement.getFastMovingBilled());
34098 ranu 398
            rbmAchievements.setAchievedSlowMovingTarget(achievement.getSlowMovinBilled());
399
            rbmAchievements.setAchievedRunningTarget(achievement.getRunningBilled());
34012 ranu 400
            rbmAchievements.setAchievedOtherTarget(achievement.getOtherBilled());
33985 ranu 401
            rbmAchievements.setCreateTimestamp(LocalDateTime.now());
402
 
403
            rbmAchievementsRepository.persist(rbmAchievements);
404
 
405
        }
406
 
407
    }
408
 
34055 ranu 409
    @Override
410
    public List<Sold15daysOldAgingModel> getAgingSale(LocalDate startDate, LocalDate endDate) {
411
        Session session = sessionFactory.getCurrentSession();
412
        final TypedQuery<Sold15daysOldAgingModel> typedQuerySimilar = session.createNamedQuery("Aging.SoldAgingModel", Sold15daysOldAgingModel.class);
34056 ranu 413
        typedQuerySimilar.setParameter("startDate", startDate);
414
        typedQuerySimilar.setParameter("endDate", endDate);
34055 ranu 415
        return typedQuerySimilar.getResultList();
33985 ranu 416
 
34055 ranu 417
    }
418
 
34103 ranu 419
    @Override
420
    public List<RbmBilledFofoIdsModel> getDateWiseBilledFofoIdByRbm(LocalDate startDate, LocalDate endDate) {
421
        Session session = sessionFactory.getCurrentSession();
422
        final TypedQuery<RbmBilledFofoIdsModel> typedQuerySimilar = session.createNamedQuery("RBM.RbmBilledFofoId", RbmBilledFofoIdsModel.class);
423
        typedQuerySimilar.setParameter("startDate", startDate);
424
        typedQuerySimilar.setParameter("endDate", endDate);
425
        return typedQuerySimilar.getResultList();
426
 
427
    }
428
 
34055 ranu 429
    public List<Our15DaysOldAgingStock> our15DaysAgingStock() {
430
        Session session = sessionFactory.getCurrentSession();
431
        final TypedQuery<Our15DaysOldAgingStock> typedQuerySimilar = session.createNamedQuery("Aging.15DaysOurStock", Our15DaysOldAgingStock.class);
432
        return typedQuerySimilar.getResultList();
433
 
434
    }
435
 
436
 
33917 ranu 437
}