Subversion Repositories SmartDukaan

Rev

Rev 33991 | Rev 34002 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 33991 Rev 33997
Line 18... Line 18...
18
import java.time.LocalDate;
18
import java.time.LocalDate;
19
import java.time.LocalDateTime;
19
import java.time.LocalDateTime;
20
import java.time.LocalTime;
20
import java.time.LocalTime;
21
import java.util.ArrayList;
21
import java.util.ArrayList;
22
import java.util.List;
22
import java.util.List;
-
 
23
import java.util.Map;
-
 
24
import java.util.stream.Collectors;
23
 
25
 
24
@Component
26
@Component
25
public class RbmTargetServiceImpl implements RbmTargetService {
27
public class RbmTargetServiceImpl implements RbmTargetService {
26
    private static final Logger LOGGER = LogManager.getLogger(RbmTargetServiceImpl.class);
28
    private static final Logger LOGGER = LogManager.getLogger(RbmTargetServiceImpl.class);
27
 
29
 
Line 113... Line 115...
113
        LocalDate todayDate = LocalDate.now();
115
        LocalDate todayDate = LocalDate.now();
114
        return getRbmTodayArr(todayDate);
116
        return getRbmTodayArr(todayDate);
115
    }
117
    }
116
 
118
 
117
    @Override
119
    @Override
-
 
120
    public List<RbmTargetAndAchievementsModel> getRbmTargetsAndAchievemnts(LocalDate startDate, LocalDate endDate) {
-
 
121
 
-
 
122
        List<RbmTargets> rbmTargetsList = rbmTargetsRepository.selectTargetsByDates(startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
-
 
123
 
-
 
124
        LOGGER.info("rbmTargetsList {}", rbmTargetsList);
-
 
125
        // Group Targtes by RBM and Warehouse
-
 
126
        Map<String, RbmTargets> targetsMap = rbmTargetsList.stream()
-
 
127
                .collect(Collectors.toMap(
-
 
128
                        a -> a.getRbmAuthId() + "-" + a.getWarehouseId(),
-
 
129
                        a -> a,
-
 
130
                        (a1, a2) -> mergeTargets(a1, a2) // Handle duplicates by merging
-
 
131
                ));
-
 
132
 
-
 
133
 
-
 
134
        List<RbmAchievements> rbmAchievements = rbmAchievementsRepository.selectAchievementsByDates(startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
-
 
135
        LOGGER.info("rbmTargetsList {}", rbmAchievements);
-
 
136
        // Group achievements by RBM and Warehouse
-
 
137
        Map<String, RbmAchievements> achievementMap = rbmAchievements.stream()
-
 
138
                .collect(Collectors.toMap(
-
 
139
                        a -> a.getRbmAuthId() + "-" + a.getWarehouseId(),
-
 
140
                        a -> a,
-
 
141
                        (a1, a2) -> mergeAchievements(a1, a2) // Handle duplicates by merging
-
 
142
                ));
-
 
143
 
-
 
144
        return targetsMap.keySet().stream()
-
 
145
                .map(key -> {
-
 
146
                    String[] parts = key.split("-");
-
 
147
                    int rbmAuthId = Integer.parseInt(parts[0]);
-
 
148
                    int warehouseId = Integer.parseInt(parts[1]);
-
 
149
 
-
 
150
                    RbmTargets target = targetsMap.get(key);
-
 
151
                    RbmAchievements achievement = achievementMap.getOrDefault(key, new RbmAchievements());
-
 
152
 
-
 
153
                    RbmTargetAndAchievementsModel model = new RbmTargetAndAchievementsModel();
-
 
154
                    model.setAuthId(rbmAuthId);
-
 
155
                    model.setRbmName(target.getRbmName());
-
 
156
                    model.setWarehouseName(ProfitMandiConstants.WAREHOUSE_MAP.getOrDefault(warehouseId, "Unknown"));
-
 
157
 
-
 
158
                    // Set target values
-
 
159
                    model.setHidTarget(target.getHidTarget().longValue());
-
 
160
                    model.setEolTarget(target.getEolTarget().longValue());
-
 
161
                    model.setFastMovingTarget(target.getFastMovingTarget().longValue());
-
 
162
                    model.setSlowMovingTarget(target.getSlowMovingTarget().longValue());
-
 
163
                    model.setOtherMovingTarget(target.getOtherTarget().longValue());
-
 
164
 
-
 
165
                    // Set achievement values
-
 
166
                    model.setAchievedHid(achievement.getAchievedHidTarget().longValue());
-
 
167
                    model.setAchievedEol(achievement.getAchievedEolTarget().longValue());
-
 
168
                    model.setAchievedFastMoving(achievement.getAchievedFastMovingTarget().longValue());
-
 
169
                    model.setAchievedSlowMoving(achievement.getAchievedSlowMovingTarget().longValue());
-
 
170
                    model.setAchievedOtherMoving(achievement.getAchievedOtherTarget().longValue());
-
 
171
 
-
 
172
                    model.setTotalTarget(
-
 
173
                            target.getHidTarget().longValue() +
-
 
174
                                    target.getEolTarget().longValue() +
-
 
175
                                    target.getFastMovingTarget().longValue() +
-
 
176
                                    target.getSlowMovingTarget().longValue() +
-
 
177
                                    target.getOtherTarget().longValue()
-
 
178
                    );
-
 
179
                    model.setTotalAchievemnt(
-
 
180
                            achievement.getAchievedHidTarget().longValue() +
-
 
181
                                    achievement.getAchievedEolTarget().longValue() +
-
 
182
                                    achievement.getAchievedFastMovingTarget().longValue() +
-
 
183
                                    achievement.getAchievedSlowMovingTarget().longValue() +
-
 
184
                                    achievement.getAchievedOtherTarget().longValue()
-
 
185
                    );
-
 
186
 
-
 
187
                    return model;
-
 
188
                })
-
 
189
                .collect(Collectors.toList());
-
 
190
 
-
 
191
    }
-
 
192
 
-
 
193
    private RbmTargets mergeTargets(RbmTargets a1, RbmTargets a2) {
-
 
194
 
-
 
195
        // Merge logic for achievements (aggregate the target and achieved values)
-
 
196
        a1.setHidTarget((a1.getHidTarget() != null ? a1.getHidTarget() : 0L) +
-
 
197
                (a2.getHidTarget() != null ? a2.getHidTarget() : 0L));
-
 
198
 
-
 
199
        a1.setFastMovingTarget((a1.getFastMovingTarget() != null ? a1.getFastMovingTarget() : 0L) +
-
 
200
                (a2.getFastMovingTarget() != null ? a2.getFastMovingTarget() : 0L));
-
 
201
 
-
 
202
        a1.setSlowMovingTarget((a1.getSlowMovingTarget() != null ? a1.getSlowMovingTarget() : 0L) +
-
 
203
                (a2.getSlowMovingTarget() != null ? a2.getSlowMovingTarget() : 0L));
-
 
204
 
-
 
205
        a1.setEolTarget((a1.getEolTarget() != null ? a1.getEolTarget() : 0L) +
-
 
206
                (a2.getEolTarget() != null ? a2.getEolTarget() : 0L));
-
 
207
 
-
 
208
        a1.setOtherTarget((a1.getOtherTarget() != null ? a1.getOtherTarget() : 0L) +
-
 
209
                (a2.getOtherTarget() != null ? a2.getOtherTarget() : 0L));
-
 
210
        return a1;
-
 
211
    }
-
 
212
 
-
 
213
    private RbmAchievements mergeAchievements(RbmAchievements a1, RbmAchievements a2) {
-
 
214
        // Merge logic for achievements (aggregate the target and achieved values)
-
 
215
        a1.setAchievedHidTarget((a1.getAchievedHidTarget() != null ? a1.getAchievedHidTarget() : 0L) +
-
 
216
                (a2.getAchievedHidTarget() != null ? a2.getAchievedHidTarget() : 0L));
-
 
217
 
-
 
218
        a1.setAchievedEolTarget((a1.getAchievedEolTarget() != null ? a1.getAchievedEolTarget() : 0L) +
-
 
219
                (a2.getAchievedEolTarget() != null ? a2.getAchievedEolTarget() : 0L));
-
 
220
 
-
 
221
        a1.setAchievedFastMovingTarget((a1.getAchievedFastMovingTarget() != null ? a1.getAchievedFastMovingTarget() : 0L) +
-
 
222
                (a2.getAchievedFastMovingTarget() != null ? a2.getAchievedFastMovingTarget() : 0L));
-
 
223
 
-
 
224
        a1.setAchievedSlowMovingTarget((a1.getAchievedSlowMovingTarget() != null ? a1.getAchievedSlowMovingTarget() : 0L) +
-
 
225
                (a2.getAchievedSlowMovingTarget() != null ? a2.getAchievedSlowMovingTarget() : 0L));
-
 
226
 
-
 
227
        a1.setAchievedOtherTarget((a1.getAchievedOtherTarget() != null ? a1.getAchievedOtherTarget() : 0L) +
-
 
228
                (a2.getAchievedOtherTarget() != null ? a2.getAchievedOtherTarget() : 0L));
-
 
229
 
-
 
230
        return a1;
-
 
231
    }
-
 
232
    @Override
118
    public List<RbmArrViewModel> getRbmTodayArr(LocalDate todayDate) throws Exception {
233
    public List<RbmArrViewModel> getRbmTodayArr(LocalDate todayDate) throws Exception {
119
 
234
 
120
        LocalDate startDateOfMonthDay1 = LocalDate.now().withDayOfMonth(1);
235
        LocalDate startDateOfMonthDay1 = LocalDate.now().withDayOfMonth(1);
121
 
236
 
122
        List<WarehouseRbmTargetModel> warehouseRbmTargetModels = this.getWarehouseWiseRbmMonthlyTarget();
237
        List<WarehouseRbmTargetModel> warehouseRbmTargetModels = this.getWarehouseWiseRbmMonthlyTarget();