Subversion Repositories SmartDukaan

Rev

Rev 34285 | Rev 34288 | 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));
34282 ranu 242
        LOGGER.info("todayAchievedMovementModels {}", todayAchievedMovementModels);
33917 ranu 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
 
34286 ranu 271
                LOGGER.info("models {}", todayAchievedMovementModels.stream().filter(x -> x.getAuthId() == rbmTarget.getAuthId() && x.getWarehouseId() == rbmTarget.getWarehouseId()));
34284 ranu 272
 
34285 ranu 273
                TodayAchievedMovementModel todayAchievedMovementModel = todayAchievedMovementModels.stream()
274
                        .filter(x -> x.getAuthId() == rbmTarget.getAuthId() && x.getWarehouseId() == rbmTarget.getWarehouseId())
275
                        .findFirst()
276
                        .orElse(null);
34283 ranu 277
 
34285 ranu 278
 
34034 ranu 279
                Optional<RbmTargets> optionalTodayRbmTargets = todayRbmTargetsList.stream()
280
                        .filter(x -> x.getRbmAuthId() == rbmTarget.getAuthId() && x.getWarehouseId() == rbmTarget.getWarehouseId())
281
                        .findFirst();
33917 ranu 282
 
34034 ranu 283
                if (optionalTodayRbmTargets.isPresent()) {
284
                    RbmTargets todayRbmTargets = optionalTodayRbmTargets.get();
285
                    LOGGER.info("todayRbmTargets {}", todayRbmTargets);
286
                    RbmArrViewModel viewModel = new RbmArrViewModel();
33917 ranu 287
 
34034 ranu 288
                    viewModel.setAuthId(rbmTarget.getAuthId());
289
                    viewModel.setRbmName(rbmTarget.getRbmName());
290
                    viewModel.setWarehouseName(warehouseName);
291
                    viewModel.setTodayTarget(Math.round(todayTarget));
292
                    viewModel.setMonthlyTarget(Math.round(monthlyTarget));
293
                    viewModel.setMtdAchievedTarget(Math.round(achievedSoFar));
33926 ranu 294
 
34034 ranu 295
                    viewModel.setTodayHidTarget(Math.round((todayRbmTargets.getHidTarget())));
296
                    viewModel.setTodayFastMovingTarget(Math.round(todayRbmTargets.getFastMovingTarget()));
34098 ranu 297
                    viewModel.setTodaySlowMovingTarget(Math.round(todayRbmTargets.getSlowMovingtarget()));
298
                    viewModel.setTodayRunningTarget(Math.round(todayRbmTargets.getRunningtarget()));
34034 ranu 299
                    viewModel.setTodayOtherMovingTarget(Math.round(todayRbmTargets.getOtherTarget()));
33926 ranu 300
 
34283 ranu 301
                    if (todayAchievedMovementModel != null) {
302
                        viewModel.setTodayAchievedHidTarget(Math.round(todayAchievedMovementModel.getHidBilled()));
303
                        viewModel.setTodayAchievedFastMovingTarget(Math.round(todayAchievedMovementModel.getFastMovingBilled()));
304
                        viewModel.setTodayAchievedSlowMovingTarget(Math.round(todayAchievedMovementModel.getSlowMovinBilled()));
305
                        viewModel.setTodayAchievedRunningTarget(Math.round(todayAchievedMovementModel.getRunningBilled()));
306
                        viewModel.setTodayAchievedOtherMovingTarget(Math.round(todayAchievedMovementModel.getOtherBilled()));
307
                        viewModel.setTotalAchievedTarget(Math.round(todayAchievedMovementModel.getHidBilled() + todayAchievedMovementModel.getFastMovingBilled() + todayAchievedMovementModel.getSlowMovinBilled() + todayAchievedMovementModel.getRunningBilled() + todayAchievedMovementModel.getOtherBilled()));
308
                    } else {
309
                        viewModel.setTodayAchievedHidTarget(0);
310
                        viewModel.setTodayAchievedFastMovingTarget(0);
311
                        viewModel.setTodayAchievedSlowMovingTarget(0);
312
                        viewModel.setTodayAchievedRunningTarget(0);
313
                        viewModel.setTodayAchievedOtherMovingTarget(0);
314
                        viewModel.setTotalAchievedTarget(0);
315
                    }
34034 ranu 316
                    rbmArrViewModels.add(viewModel);
317
                } else {
318
                    LOGGER.info("No matching RbmTargets found for AuthId: {} and rbmname {} and WarehouseId: {}", rbmTarget.getAuthId(), rbmTarget.getRbmName(), rbmTarget.getWarehouseId());
319
                }
33917 ranu 320
 
34034 ranu 321
 
322
 
34028 ranu 323
            }
33917 ranu 324
        }
325
 
326
        LOGGER.info("rbmArrViewModels {}", rbmArrViewModels);
327
        return rbmArrViewModels;
328
    }
329
 
33926 ranu 330
    @Override
331
    public void setMovementWiseRbmTargets() {
332
        LocalDate todayDate = LocalDate.now();
33917 ranu 333
 
33926 ranu 334
        LocalDate startDateOfMonthDay1 = LocalDate.now().withDayOfMonth(1);
335
 
336
        List<WarehouseRbmTargetModel> warehouseRbmTargetModels = this.getWarehouseWiseRbmMonthlyTarget();
337
 
338
        List<MTDAchievedTargetModel> mtdAchievedTargetModels = getDateWiseAchievedTargetOfRbm(startDateOfMonthDay1, todayDate);
339
 
340
 
341
        int remainingWorkingDaysCount = getWorkingDaysCount(todayDate);
342
 
343
        List<WarehouseMobileStockByMovementModel> warehouseMobileStockByMovementModels = getWarehouseMobileStockByMovement();
344
 
345
        for (WarehouseRbmTargetModel rbmTarget : warehouseRbmTargetModels) {
346
 
347
            float monthlyTarget = rbmTarget.getMonthlyTarget();
348
            float achievedSoFar = (float) mtdAchievedTargetModels.stream()
349
                    .filter(x -> x.getAuthId() == rbmTarget.getAuthId() && x.getWarehouseId() == rbmTarget.getWarehouseId())
350
                    .mapToDouble(MTDAchievedTargetModel::getAcheivedMonthlyTarget)
351
                    .sum();
352
 
353
 
354
            float remainingTarget = monthlyTarget - achievedSoFar;
33953 ranu 355
            LOGGER.info("remainingTarget {}", remainingTarget);
33926 ranu 356
 
33953 ranu 357
            float todayTarget = (remainingWorkingDaysCount > 0 && remainingTarget > 0) ? remainingTarget / remainingWorkingDaysCount : 0;
358
            LOGGER.info("todayTarget {}", todayTarget);
359
 
33926 ranu 360
            // Get the warehouse stock data
361
            WarehouseMobileStockByMovementModel warehouseMobileStockByMovementModel = warehouseMobileStockByMovementModels.stream()
362
                    .filter(x -> x.getWarehouseId() == rbmTarget.getWarehouseId()).findFirst().orElse(null);
363
 
364
 
365
            if (warehouseMobileStockByMovementModel != null) {
366
 
367
                // Total stock value for this warehouse
368
                float totalStockValue = warehouseMobileStockByMovementModel.getTotalAvailabilityPrice();
369
 
370
                // Calculate target allocation based on stock value proportion
371
                float hidTarget = (warehouseMobileStockByMovementModel.getTotalHidCatalogPrice() / totalStockValue) * todayTarget;
372
                float fastMovingTarget = (warehouseMobileStockByMovementModel.getTotalFastMovingCatalogPrice() / totalStockValue) * todayTarget;
373
                float slowMovingTarget = (warehouseMobileStockByMovementModel.getTotalSlowMovingCatalogPrice() / totalStockValue) * todayTarget;
34098 ranu 374
                float runningTarget = (warehouseMobileStockByMovementModel.getTotalRunningCatalogPrice() / totalStockValue) * todayTarget;
33926 ranu 375
                float otherTarget = (warehouseMobileStockByMovementModel.getTotalOtherCategoryCatalogPrice() / totalStockValue) * todayTarget;
376
 
377
                RbmTargets rbmTargets = new RbmTargets();
378
                rbmTargets.setWarehouseId(rbmTarget.getWarehouseId());
379
                rbmTargets.setRbmAuthId(rbmTarget.getAuthId());
380
                rbmTargets.setRbmName(rbmTarget.getRbmName());
34098 ranu 381
                rbmTargets.setRunningtarget(runningTarget);
33926 ranu 382
                rbmTargets.setHidTarget(hidTarget);
383
                rbmTargets.setFastMovingTarget(fastMovingTarget);
34098 ranu 384
                rbmTargets.setSlowMovingtarget(slowMovingTarget);
33926 ranu 385
                rbmTargets.setOtherTarget(otherTarget);
386
                rbmTargets.setCreateTimestamp(LocalDateTime.now());
387
 
388
                rbmTargetsRepository.persist(rbmTargets);
389
 
390
            }
391
        }
392
 
393
    }
394
 
395
 
33985 ranu 396
    @Override
397
    public void setMovementWiseRbmAchievement() {
398
        LocalDate todayDate = LocalDate.now();
399
 
34055 ranu 400
        List<TodayAchievedMovementModel> todayAchievedMovementModels = getMovementWiseAchievementByDate(todayDate, todayDate.plusDays(1));
33985 ranu 401
 
402
 
403
        for (TodayAchievedMovementModel achievement : todayAchievedMovementModels) {
404
 
405
            RbmAchievements rbmAchievements = new RbmAchievements();
406
 
407
            rbmAchievements.setRbmAuthId(achievement.getAuthId());
408
            rbmAchievements.setRbmName(achievement.getRbmName());
409
            rbmAchievements.setWarehouseId(achievement.getWarehouseId());
410
            rbmAchievements.setAchievedHidTarget(achievement.getHidBilled());
411
            rbmAchievements.setAchievedFastMovingTarget(achievement.getFastMovingBilled());
34098 ranu 412
            rbmAchievements.setAchievedSlowMovingTarget(achievement.getSlowMovinBilled());
413
            rbmAchievements.setAchievedRunningTarget(achievement.getRunningBilled());
34012 ranu 414
            rbmAchievements.setAchievedOtherTarget(achievement.getOtherBilled());
33985 ranu 415
            rbmAchievements.setCreateTimestamp(LocalDateTime.now());
416
 
417
            rbmAchievementsRepository.persist(rbmAchievements);
418
 
419
        }
420
 
421
    }
422
 
34055 ranu 423
    @Override
424
    public List<Sold15daysOldAgingModel> getAgingSale(LocalDate startDate, LocalDate endDate) {
425
        Session session = sessionFactory.getCurrentSession();
426
        final TypedQuery<Sold15daysOldAgingModel> typedQuerySimilar = session.createNamedQuery("Aging.SoldAgingModel", Sold15daysOldAgingModel.class);
34056 ranu 427
        typedQuerySimilar.setParameter("startDate", startDate);
428
        typedQuerySimilar.setParameter("endDate", endDate);
34055 ranu 429
        return typedQuerySimilar.getResultList();
33985 ranu 430
 
34055 ranu 431
    }
432
 
34103 ranu 433
    @Override
434
    public List<RbmBilledFofoIdsModel> getDateWiseBilledFofoIdByRbm(LocalDate startDate, LocalDate endDate) {
435
        Session session = sessionFactory.getCurrentSession();
436
        final TypedQuery<RbmBilledFofoIdsModel> typedQuerySimilar = session.createNamedQuery("RBM.RbmBilledFofoId", RbmBilledFofoIdsModel.class);
437
        typedQuerySimilar.setParameter("startDate", startDate);
438
        typedQuerySimilar.setParameter("endDate", endDate);
439
        return typedQuerySimilar.getResultList();
440
 
441
    }
442
 
34055 ranu 443
    public List<Our15DaysOldAgingStock> our15DaysAgingStock() {
444
        Session session = sessionFactory.getCurrentSession();
445
        final TypedQuery<Our15DaysOldAgingStock> typedQuerySimilar = session.createNamedQuery("Aging.15DaysOurStock", Our15DaysOldAgingStock.class);
446
        return typedQuerySimilar.getResultList();
447
 
448
    }
449
 
450
 
33917 ranu 451
}