| 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();
|