Subversion Repositories SmartDukaan

Rev

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

Rev 32020 Rev 32048
Line 1... Line 1...
1
package com.smartdukaan.cron.scheduled;
1
package com.smartdukaan.cron.scheduled;
2
 
2
 
-
 
3
import static java.util.stream.Collectors.groupingBy;
-
 
4
import static java.util.stream.Collectors.mapping;
-
 
5
 
-
 
6
import java.io.FileOutputStream;
-
 
7
import java.io.IOException;
-
 
8
import java.io.ObjectOutputStream;
-
 
9
import java.io.Serializable;
-
 
10
import java.io.UnsupportedEncodingException;
-
 
11
import java.math.BigDecimal;
-
 
12
import java.math.RoundingMode;
-
 
13
import java.nio.file.Files;
-
 
14
import java.nio.file.Paths;
-
 
15
import java.sql.Timestamp;
-
 
16
import java.text.DecimalFormat;
-
 
17
import java.time.Duration;
-
 
18
import java.time.LocalDate;
-
 
19
import java.time.LocalDateTime;
-
 
20
import java.time.LocalTime;
-
 
21
import java.time.Month;
-
 
22
import java.time.YearMonth;
-
 
23
import java.time.format.DateTimeFormatter;
-
 
24
import java.time.temporal.ChronoField;
-
 
25
import java.time.temporal.ChronoUnit;
-
 
26
import java.util.ArrayList;
-
 
27
import java.util.Arrays;
-
 
28
import java.util.Base64;
-
 
29
import java.util.Collections;
-
 
30
import java.util.Comparator;
-
 
31
import java.util.HashMap;
-
 
32
import java.util.HashSet;
-
 
33
import java.util.LinkedHashMap;
-
 
34
import java.util.List;
-
 
35
import java.util.Map;
-
 
36
import java.util.Map.Entry;
-
 
37
import java.util.Objects;
-
 
38
import java.util.Optional;
-
 
39
import java.util.Set;
-
 
40
import java.util.stream.Collectors;
-
 
41
import java.util.stream.Stream;
-
 
42
 
-
 
43
import javax.mail.MessagingException;
-
 
44
import javax.mail.internet.InternetAddress;
-
 
45
import javax.mail.internet.MimeMessage;
-
 
46
 
-
 
47
import org.apache.commons.io.output.ByteArrayOutputStream;
-
 
48
import org.apache.commons.lang.StringUtils;
-
 
49
import org.apache.http.client.methods.CloseableHttpResponse;
-
 
50
import org.apache.http.client.methods.HttpPost;
-
 
51
import org.apache.http.conn.HttpHostConnectException;
-
 
52
import org.apache.http.entity.StringEntity;
-
 
53
import org.apache.http.impl.client.CloseableHttpClient;
-
 
54
import org.apache.http.impl.client.HttpClients;
-
 
55
import org.apache.logging.log4j.LogManager;
-
 
56
import org.apache.logging.log4j.Logger;
-
 
57
import org.json.JSONArray;
-
 
58
import org.json.JSONObject;
-
 
59
import org.json.XML;
-
 
60
import org.springframework.beans.factory.annotation.Autowired;
-
 
61
import org.springframework.beans.factory.annotation.Qualifier;
-
 
62
import org.springframework.beans.factory.annotation.Value;
-
 
63
import org.springframework.core.io.ByteArrayResource;
-
 
64
import org.springframework.core.io.InputStreamSource;
-
 
65
import org.springframework.mail.javamail.JavaMailSender;
-
 
66
import org.springframework.mail.javamail.MimeMessageHelper;
-
 
67
import org.springframework.stereotype.Component;
-
 
68
import org.springframework.transaction.annotation.Transactional;
-
 
69
 
3
import com.google.common.collect.Lists;
70
import com.google.common.collect.Lists;
4
import com.google.gson.Gson;
71
import com.google.gson.Gson;
5
import com.razorpay.Payment;
72
import com.razorpay.Payment;
6
import com.smartdukaan.cron.itelImeiActivation.ItelImeiActivationService;
73
import com.smartdukaan.cron.itelImeiActivation.ItelImeiActivationService;
7
import com.smartdukaan.cron.itelImeiActivation.TecnoImeiActivation;
74
import com.smartdukaan.cron.itelImeiActivation.TecnoImeiActivation;
-
 
75
import com.spice.profitmandi.common.enumuration.ActivationType;
8
import com.spice.profitmandi.common.enumuration.*;
76
import com.spice.profitmandi.common.enumuration.MessageType;
-
 
77
import com.spice.profitmandi.common.enumuration.RechargeStatus;
-
 
78
import com.spice.profitmandi.common.enumuration.ReporticoProject;
9
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
79
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
-
 
80
import com.spice.profitmandi.common.model.CustomRetailer;
-
 
81
import com.spice.profitmandi.common.model.FocusedModelShortageModel;
10
import com.spice.profitmandi.common.model.*;
82
import com.spice.profitmandi.common.model.GstRate;
-
 
83
import com.spice.profitmandi.common.model.InvoicePdfModel;
-
 
84
import com.spice.profitmandi.common.model.ProfitMandiConstants;
-
 
85
import com.spice.profitmandi.common.model.RechargeCredential;
-
 
86
import com.spice.profitmandi.common.model.SendNotificationModel;
11
import com.spice.profitmandi.common.services.ReporticoService;
87
import com.spice.profitmandi.common.services.ReporticoService;
12
import com.spice.profitmandi.common.services.mandii.AccountStatusResponseOut;
88
import com.spice.profitmandi.common.services.mandii.AccountStatusResponseOut;
13
import com.spice.profitmandi.common.services.mandii.EligibilityStatusEnum;
89
import com.spice.profitmandi.common.services.mandii.EligibilityStatusEnum;
14
import com.spice.profitmandi.common.services.mandii.MandiiService;
90
import com.spice.profitmandi.common.services.mandii.MandiiService;
15
import com.spice.profitmandi.common.util.FileUtil;
91
import com.spice.profitmandi.common.util.FileUtil;
Line 25... Line 101...
25
import com.spice.profitmandi.dao.entity.catalog.Item;
101
import com.spice.profitmandi.dao.entity.catalog.Item;
26
import com.spice.profitmandi.dao.entity.catalog.Scheme;
102
import com.spice.profitmandi.dao.entity.catalog.Scheme;
27
import com.spice.profitmandi.dao.entity.catalog.TagListing;
103
import com.spice.profitmandi.dao.entity.catalog.TagListing;
28
import com.spice.profitmandi.dao.entity.cs.Position;
104
import com.spice.profitmandi.dao.entity.cs.Position;
29
import com.spice.profitmandi.dao.entity.cs.Ticket;
105
import com.spice.profitmandi.dao.entity.cs.Ticket;
-
 
106
import com.spice.profitmandi.dao.entity.dtr.CreditAccount;
-
 
107
import com.spice.profitmandi.dao.entity.dtr.CreditStatus;
-
 
108
import com.spice.profitmandi.dao.entity.dtr.DailyRecharge;
-
 
109
import com.spice.profitmandi.dao.entity.dtr.EmployeeAttendance;
-
 
110
import com.spice.profitmandi.dao.entity.dtr.InsurancePolicy;
-
 
111
import com.spice.profitmandi.dao.entity.dtr.NotificationCampaign;
-
 
112
import com.spice.profitmandi.dao.entity.dtr.PushNotifications;
-
 
113
import com.spice.profitmandi.dao.entity.dtr.RechargeProvider;
-
 
114
import com.spice.profitmandi.dao.entity.dtr.RechargeProviderCreditWalletHistory;
-
 
115
import com.spice.profitmandi.dao.entity.dtr.RechargeTransaction;
-
 
116
import com.spice.profitmandi.dao.entity.dtr.RetailerBlockBrands;
30
import com.spice.profitmandi.dao.entity.dtr.User;
117
import com.spice.profitmandi.dao.entity.dtr.User;
-
 
118
import com.spice.profitmandi.dao.entity.fofo.ActivityType;
-
 
119
import com.spice.profitmandi.dao.entity.fofo.CurrentPartnerDailyInvestment;
31
import com.spice.profitmandi.dao.entity.dtr.*;
120
import com.spice.profitmandi.dao.entity.fofo.Customer;
-
 
121
import com.spice.profitmandi.dao.entity.fofo.CustomerAddress;
-
 
122
import com.spice.profitmandi.dao.entity.fofo.FofoLineItem;
-
 
123
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
-
 
124
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
-
 
125
import com.spice.profitmandi.dao.entity.fofo.FofoPayment;
-
 
126
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
-
 
127
import com.spice.profitmandi.dao.entity.fofo.HygieneData;
-
 
128
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
-
 
129
import com.spice.profitmandi.dao.entity.fofo.MonthlyTarget;
-
 
130
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
-
 
131
import com.spice.profitmandi.dao.entity.fofo.PartnerProblem;
-
 
132
import com.spice.profitmandi.dao.entity.fofo.PartnerType;
-
 
133
import com.spice.profitmandi.dao.entity.fofo.PendingOrder;
-
 
134
import com.spice.profitmandi.dao.entity.fofo.PendingOrderItem;
32
import com.spice.profitmandi.dao.entity.fofo.*;
135
import com.spice.profitmandi.dao.entity.fofo.Purchase;
-
 
136
import com.spice.profitmandi.dao.entity.fofo.RazorPay;
-
 
137
import com.spice.profitmandi.dao.entity.fofo.ScanRecord;
-
 
138
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
33
import com.spice.profitmandi.dao.entity.inventory.PartnerAgeingModel;
139
import com.spice.profitmandi.dao.entity.inventory.PartnerAgeingModel;
34
import com.spice.profitmandi.dao.entity.inventory.ReporticoCacheTable;
140
import com.spice.profitmandi.dao.entity.inventory.ReporticoCacheTable;
35
import com.spice.profitmandi.dao.entity.inventory.SaholicCIS;
141
import com.spice.profitmandi.dao.entity.inventory.SaholicCIS;
36
import com.spice.profitmandi.dao.entity.inventory.SaholicPOItem;
142
import com.spice.profitmandi.dao.entity.inventory.SaholicPOItem;
37
import com.spice.profitmandi.dao.entity.transaction.*;
143
import com.spice.profitmandi.dao.entity.transaction.Loan;
-
 
144
import com.spice.profitmandi.dao.entity.transaction.LoanStatement;
-
 
145
import com.spice.profitmandi.dao.entity.transaction.Order;
-
 
146
import com.spice.profitmandi.dao.entity.transaction.PriceDrop;
-
 
147
import com.spice.profitmandi.dao.entity.transaction.PriceDropIMEI;
-
 
148
import com.spice.profitmandi.dao.entity.transaction.SDCreditRequirement;
-
 
149
import com.spice.profitmandi.dao.entity.transaction.SanctionRequest;
-
 
150
import com.spice.profitmandi.dao.entity.transaction.UserWallet;
-
 
151
import com.spice.profitmandi.dao.entity.transaction.UserWalletHistory;
-
 
152
import com.spice.profitmandi.dao.entity.user.Address;
-
 
153
import com.spice.profitmandi.dao.entity.user.Device;
-
 
154
import com.spice.profitmandi.dao.entity.user.FranchiseeVisit;
38
import com.spice.profitmandi.dao.entity.user.*;
155
import com.spice.profitmandi.dao.entity.user.Lead;
39
import com.spice.profitmandi.dao.entity.warehouse.BrandRegionMapping;
156
import com.spice.profitmandi.dao.entity.user.Refferal;
40
import com.spice.profitmandi.dao.enumuration.auth.CollectionRemark;
157
import com.spice.profitmandi.dao.enumuration.auth.CollectionRemark;
41
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
158
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
42
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
159
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
43
import com.spice.profitmandi.dao.enumuration.dtr.RefferalStatus;
160
import com.spice.profitmandi.dao.enumuration.dtr.RefferalStatus;
44
import com.spice.profitmandi.dao.enumuration.fofo.Gateway;
161
import com.spice.profitmandi.dao.enumuration.fofo.Gateway;
Line 46... Line 163...
46
import com.spice.profitmandi.dao.enumuration.fofo.ScanType;
163
import com.spice.profitmandi.dao.enumuration.fofo.ScanType;
47
import com.spice.profitmandi.dao.enumuration.transaction.CreditRisk;
164
import com.spice.profitmandi.dao.enumuration.transaction.CreditRisk;
48
import com.spice.profitmandi.dao.enumuration.transaction.LoanReferenceType;
165
import com.spice.profitmandi.dao.enumuration.transaction.LoanReferenceType;
49
import com.spice.profitmandi.dao.enumuration.transaction.PriceDropImeiStatus;
166
import com.spice.profitmandi.dao.enumuration.transaction.PriceDropImeiStatus;
50
import com.spice.profitmandi.dao.model.PartnerDetailModel;
167
import com.spice.profitmandi.dao.model.PartnerDetailModel;
-
 
168
import com.spice.profitmandi.dao.model.RetailerFilterModel;
-
 
169
import com.spice.profitmandi.dao.model.RetailerPeformanceFilterModel;
51
import com.spice.profitmandi.dao.model.SimpleCampaign;
170
import com.spice.profitmandi.dao.model.SimpleCampaign;
52
import com.spice.profitmandi.dao.model.SimpleCampaignParams;
171
import com.spice.profitmandi.dao.model.SimpleCampaignParams;
53
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
172
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
54
import com.spice.profitmandi.dao.repository.auth.PartnerCollectionRemarkRepository;
173
import com.spice.profitmandi.dao.repository.auth.PartnerCollectionRemarkRepository;
-
 
174
import com.spice.profitmandi.dao.repository.catalog.CustomerOfferItemRepository;
-
 
175
import com.spice.profitmandi.dao.repository.catalog.CustomerOfferRepository;
-
 
176
import com.spice.profitmandi.dao.repository.catalog.DeviceRepository;
-
 
177
import com.spice.profitmandi.dao.repository.catalog.FocusedModelRepository;
55
import com.spice.profitmandi.dao.repository.catalog.*;
178
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
-
 
179
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
-
 
180
import com.spice.profitmandi.dao.repository.catalog.StateGstRateRepository;
-
 
181
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
56
import com.spice.profitmandi.dao.repository.cs.*;
182
import com.spice.profitmandi.dao.repository.cs.CsService;
-
 
183
import com.spice.profitmandi.dao.repository.cs.PartnerRegionRepository;
-
 
184
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
-
 
185
import com.spice.profitmandi.dao.repository.cs.RegionRepository;
-
 
186
import com.spice.profitmandi.dao.repository.cs.TicketRepository;
-
 
187
import com.spice.profitmandi.dao.repository.dtr.CreditAccountRepository;
-
 
188
import com.spice.profitmandi.dao.repository.dtr.DailyRechargeRepository;
-
 
189
import com.spice.profitmandi.dao.repository.dtr.EmployeeAttendanceRepository;
-
 
190
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
-
 
191
import com.spice.profitmandi.dao.repository.dtr.FranchiseeActivityRepository;
-
 
192
import com.spice.profitmandi.dao.repository.dtr.FranchiseeVisitRepository;
-
 
193
import com.spice.profitmandi.dao.repository.dtr.InsurancePolicyRepository;
-
 
194
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
57
import com.spice.profitmandi.dao.repository.dtr.*;
195
import com.spice.profitmandi.dao.repository.dtr.Mongo;
-
 
196
import com.spice.profitmandi.dao.repository.dtr.NotificationCampaignRepository;
-
 
197
import com.spice.profitmandi.dao.repository.dtr.PartnerProblemRepository;
-
 
198
import com.spice.profitmandi.dao.repository.dtr.PushNotificationRepository;
-
 
199
import com.spice.profitmandi.dao.repository.dtr.RechargeProviderCreditWalletHistoryRepository;
-
 
200
import com.spice.profitmandi.dao.repository.dtr.RechargeProviderRepository;
-
 
201
import com.spice.profitmandi.dao.repository.dtr.RechargeTransactionRepository;
-
 
202
import com.spice.profitmandi.dao.repository.dtr.RefferalRepository;
-
 
203
import com.spice.profitmandi.dao.repository.dtr.RetailerBlockBrandsRepository;
-
 
204
import com.spice.profitmandi.dao.repository.dtr.RetailerFilterRepository;
-
 
205
import com.spice.profitmandi.dao.repository.dtr.RetailerRegisteredAddressRepository;
-
 
206
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
-
 
207
import com.spice.profitmandi.dao.repository.dtr.UserCampaignRepository;
-
 
208
import com.spice.profitmandi.dao.repository.fofo.ActivatedImeiRepository;
-
 
209
import com.spice.profitmandi.dao.repository.fofo.CurrentInventorySnapshotRepository;
-
 
210
import com.spice.profitmandi.dao.repository.fofo.CurrentPartnerDailyInvestmentRepository;
-
 
211
import com.spice.profitmandi.dao.repository.fofo.CustomerAddressRepository;
-
 
212
import com.spice.profitmandi.dao.repository.fofo.CustomerRepository;
-
 
213
import com.spice.profitmandi.dao.repository.fofo.FofoLineItemRepository;
-
 
214
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
-
 
215
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
-
 
216
import com.spice.profitmandi.dao.repository.fofo.FofoPaymentRepository;
-
 
217
import com.spice.profitmandi.dao.repository.fofo.HygieneDataRepository;
-
 
218
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
-
 
219
import com.spice.profitmandi.dao.repository.fofo.MonthlyTargetRepository;
-
 
220
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
-
 
221
import com.spice.profitmandi.dao.repository.fofo.PartnerTargetRepository;
-
 
222
import com.spice.profitmandi.dao.repository.fofo.PartnerTypeChangeRepository;
-
 
223
import com.spice.profitmandi.dao.repository.fofo.PartnerTypeChangeService;
-
 
224
import com.spice.profitmandi.dao.repository.fofo.PendingOrderItemRepository;
-
 
225
import com.spice.profitmandi.dao.repository.fofo.PendingOrderRepository;
-
 
226
import com.spice.profitmandi.dao.repository.fofo.PendingOrderService;
-
 
227
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
-
 
228
import com.spice.profitmandi.dao.repository.fofo.PurchaseReturnItemRepository;
58
import com.spice.profitmandi.dao.repository.fofo.*;
229
import com.spice.profitmandi.dao.repository.fofo.RazorPayRepository;
-
 
230
import com.spice.profitmandi.dao.repository.fofo.ScanRecordRepository;
-
 
231
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
-
 
232
import com.spice.profitmandi.dao.repository.fofo.SchemeItemRepository;
-
 
233
import com.spice.profitmandi.dao.repository.fofo.ServiceConfigRepository;
59
import com.spice.profitmandi.dao.repository.inventory.BrandAgeingLimitRepository;
234
import com.spice.profitmandi.dao.repository.inventory.BrandAgeingLimitRepository;
60
import com.spice.profitmandi.dao.repository.inventory.ReporticoCacheTableRepository;
235
import com.spice.profitmandi.dao.repository.inventory.ReporticoCacheTableRepository;
61
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
236
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
62
import com.spice.profitmandi.dao.repository.inventory.WarehouseRepository;
237
import com.spice.profitmandi.dao.repository.inventory.WarehouseRepository;
-
 
238
import com.spice.profitmandi.dao.repository.transaction.HdfcPaymentRepository;
-
 
239
import com.spice.profitmandi.dao.repository.transaction.LineItemRepository;
63
import com.spice.profitmandi.dao.repository.transaction.*;
240
import com.spice.profitmandi.dao.repository.transaction.LoanRepository;
-
 
241
import com.spice.profitmandi.dao.repository.transaction.LoanStatementRepository;
-
 
242
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
-
 
243
import com.spice.profitmandi.dao.repository.transaction.PriceDropIMEIRepository;
-
 
244
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
-
 
245
import com.spice.profitmandi.dao.repository.transaction.SDCreditRequirementRepository;
-
 
246
import com.spice.profitmandi.dao.repository.transaction.SanctionRequestRepository;
-
 
247
import com.spice.profitmandi.dao.repository.transaction.TransactionRepository;
-
 
248
import com.spice.profitmandi.dao.repository.transaction.UserWalletHistoryRepository;
-
 
249
import com.spice.profitmandi.dao.repository.transaction.UserWalletRepository;
64
import com.spice.profitmandi.dao.repository.user.AddressRepository;
250
import com.spice.profitmandi.dao.repository.user.AddressRepository;
65
import com.spice.profitmandi.dao.repository.user.UserRepository;
251
import com.spice.profitmandi.dao.repository.user.UserRepository;
66
import com.spice.profitmandi.dao.repository.warehouse.BilledImeiModel;
252
import com.spice.profitmandi.dao.repository.warehouse.BilledImeiModel;
67
import com.spice.profitmandi.dao.repository.warehouse.BrandRegionMappingRepository;
253
import com.spice.profitmandi.dao.repository.warehouse.BrandRegionMappingRepository;
68
import com.spice.profitmandi.dao.repository.warehouse.WarehouseInventoryItemRepository;
254
import com.spice.profitmandi.dao.repository.warehouse.WarehouseInventoryItemRepository;
69
import com.spice.profitmandi.dao.service.solr.FofoSolr;
255
import com.spice.profitmandi.dao.service.solr.FofoSolr;
70
import com.spice.profitmandi.service.NotificationService;
256
import com.spice.profitmandi.service.NotificationService;
71
import com.spice.profitmandi.service.PartnerInvestmentService;
257
import com.spice.profitmandi.service.PartnerInvestmentService;
72
import com.spice.profitmandi.service.PartnerStatsService;
258
import com.spice.profitmandi.service.PartnerStatsService;
-
 
259
import com.spice.profitmandi.service.PerformanceService;
73
import com.spice.profitmandi.service.integrations.CCAvenuePaymentService;
260
import com.spice.profitmandi.service.integrations.CCAvenuePaymentService;
74
import com.spice.profitmandi.service.integrations.RazorpayPaymentService;
261
import com.spice.profitmandi.service.integrations.RazorpayPaymentService;
75
import com.spice.profitmandi.service.integrations.bharti.model.BAGInsuranceModel;
262
import com.spice.profitmandi.service.integrations.bharti.model.BAGInsuranceModel;
76
import com.spice.profitmandi.service.integrations.toffee.ToffeeService;
263
import com.spice.profitmandi.service.integrations.toffee.ToffeeService;
77
import com.spice.profitmandi.service.inventory.AgeingModel;
264
import com.spice.profitmandi.service.inventory.AgeingModel;
Line 88... Line 275...
88
import com.spice.profitmandi.service.transaction.CreditNoteService;
275
import com.spice.profitmandi.service.transaction.CreditNoteService;
89
import com.spice.profitmandi.service.transaction.SDCreditService;
276
import com.spice.profitmandi.service.transaction.SDCreditService;
90
import com.spice.profitmandi.service.transaction.TransactionService;
277
import com.spice.profitmandi.service.transaction.TransactionService;
91
import com.spice.profitmandi.service.user.RetailerService;
278
import com.spice.profitmandi.service.user.RetailerService;
92
import com.spice.profitmandi.service.wallet.WalletService;
279
import com.spice.profitmandi.service.wallet.WalletService;
-
 
280
 
93
import in.shop2020.model.v1.order.OrderStatus;
281
import in.shop2020.model.v1.order.OrderStatus;
94
import in.shop2020.model.v1.order.WalletReferenceType;
282
import in.shop2020.model.v1.order.WalletReferenceType;
95
import okhttp3.OkHttpClient;
283
import okhttp3.OkHttpClient;
96
import okhttp3.Request;
284
import okhttp3.Request;
97
import okhttp3.Response;
285
import okhttp3.Response;
98
import org.apache.commons.io.output.ByteArrayOutputStream;
-
 
99
import org.apache.commons.lang.StringUtils;
-
 
100
import org.apache.http.client.methods.CloseableHttpResponse;
-
 
101
import org.apache.http.client.methods.HttpPost;
-
 
102
import org.apache.http.conn.HttpHostConnectException;
-
 
103
import org.apache.http.entity.StringEntity;
-
 
104
import org.apache.http.impl.client.CloseableHttpClient;
-
 
105
import org.apache.http.impl.client.HttpClients;
-
 
106
import org.apache.logging.log4j.LogManager;
-
 
107
import org.apache.logging.log4j.Logger;
-
 
108
import org.json.JSONArray;
-
 
109
import org.json.JSONObject;
-
 
110
import org.json.XML;
-
 
111
import org.springframework.beans.factory.annotation.Autowired;
-
 
112
import org.springframework.beans.factory.annotation.Qualifier;
-
 
113
import org.springframework.beans.factory.annotation.Value;
-
 
114
import org.springframework.core.io.ByteArrayResource;
-
 
115
import org.springframework.core.io.InputStreamSource;
-
 
116
import org.springframework.mail.javamail.JavaMailSender;
-
 
117
import org.springframework.mail.javamail.MimeMessageHelper;
-
 
118
import org.springframework.stereotype.Component;
-
 
119
import org.springframework.transaction.annotation.Transactional;
-
 
120
 
-
 
121
import javax.mail.MessagingException;
-
 
122
import javax.mail.internet.InternetAddress;
-
 
123
import javax.mail.internet.MimeMessage;
-
 
124
import java.io.*;
-
 
125
import java.math.BigDecimal;
-
 
126
import java.math.RoundingMode;
-
 
127
import java.nio.file.Files;
-
 
128
import java.nio.file.Paths;
-
 
129
import java.sql.Timestamp;
-
 
130
import java.text.DecimalFormat;
-
 
131
import java.time.*;
-
 
132
import java.time.format.DateTimeFormatter;
-
 
133
import java.time.temporal.ChronoField;
-
 
134
import java.time.temporal.ChronoUnit;
-
 
135
import java.util.*;
-
 
136
import java.util.Map.Entry;
-
 
137
import java.util.stream.Collector;
-
 
138
import java.util.stream.Collectors;
-
 
139
import java.util.stream.Stream;
-
 
140
 
-
 
141
import static java.util.stream.Collectors.groupingBy;
-
 
142
import static java.util.stream.Collectors.mapping;
-
 
143
 
286
 
144
@Component
287
@Component
145
@Transactional(rollbackFor = Throwable.class)
288
@Transactional(rollbackFor = Throwable.class)
146
public class ScheduledTasks {
289
public class ScheduledTasks {
147
 
290
 
Line 259... Line 402...
259
    private SchemeService schemeService;
402
    private SchemeService schemeService;
260
 
403
 
261
    @Autowired
404
    @Autowired
262
    private ServiceConfigRepository serviceConfigRepository;
405
    private ServiceConfigRepository serviceConfigRepository;
263
 
406
 
-
 
407
    @Autowired
-
 
408
    private RetailerBlockBrandsRepository retailerBlockBrandsRepository;
-
 
409
 
264
    @Value("${delhivery.tracking.token}")
410
    @Value("${delhivery.tracking.token}")
265
    private String token;
411
    private String token;
266
 
412
 
267
    private static final String[] STOCK_AGEING_MAIL_LIST = new String[]{"uday.singh@smartudkaan.com", "mohinder.mutreja@smartdukaan.com", "ankit.bhatia@smartdukaan.com", "tarun.verma@smartdukaan.com", "kuldeep.kumar@smartdukaan.com", "manish.gupta@smartdukaan.com"};
413
    private static final String[] STOCK_AGEING_MAIL_LIST = new String[]{"uday.singh@smartudkaan.com", "mohinder.mutreja@smartdukaan.com", "ankit.bhatia@smartdukaan.com", "tarun.verma@smartdukaan.com", "kuldeep.kumar@smartdukaan.com", "manish.gupta@smartdukaan.com"};
268
 
414
 
Line 857... Line 1003...
857
 
1003
 
858
        System.out.println(ageingModelMap.size());
1004
        System.out.println(ageingModelMap.size());
859
        List<PartnerAgeingModel> partnerAgeingModels = ageingService.getAllAgeingForTertiary();
1005
        List<PartnerAgeingModel> partnerAgeingModels = ageingService.getAllAgeingForTertiary();
860
 
1006
 
861
 
1007
 
862
        org.apache.commons.io.output.ByteArrayOutputStream byteArrayOutputStream = FileUtil.getCSVByteStream(Arrays.asList("InventoryItemId", "Serial Number", "Item Id", "Brand", "Model Name", "ModelNumber",
1008
        org.apache.commons.io.output.ByteArrayOutputStream byteArrayOutputStream = FileUtil.getCSVByteStream(Arrays.asList("InventoryItemId", "Serial Number", "Item Id", "Brand", "Model Name", "ModelNumber", "Color", "Exceed Days", "Last ScanType", "Supplier Name", "Current Warehouse", "First Warehouse", "Invoice Number", "Invoice Date"), ageingModelMap.values().stream().map(x -> Arrays.asList(x.getInventoryItemId(), x.getSerialNumber(), x.getItemId(), x.getBrand(), x.getModelName(), x.getModelNumber(), x.getColor(), x.getExceedDays(), x.getLastScanType(), x.getSupplierName(), x.getCurrentWarehouse(), x.getFirstWarehouse(), x.getInvoiceNumber(), FormattingUtils.formatDate(x.getInvoiceDate()))).collect(Collectors.toList()));
863
                        "Color", "Exceed Days", "Last ScanType", "Supplier Name", "Current Warehouse", "First Warehouse", "Invoice Number", "Invoice Date"),
-
 
864
                ageingModelMap.values().stream().map(x -> Arrays.asList(x.getInventoryItemId(), x.getSerialNumber(), x.getItemId(), x.getBrand(), x.getModelName(), x.getModelNumber(), x.getColor(),
-
 
865
                                x.getExceedDays(), x.getLastScanType(), x.getSupplierName(), x.getCurrentWarehouse(), x.getFirstWarehouse(), x.getInvoiceNumber(), FormattingUtils.formatDate(x.getInvoiceDate())))
-
 
866
                        .collect(Collectors.toList()));
-
 
867
 
1009
 
868
        org.apache.commons.io.output.ByteArrayOutputStream byteArrayOutputStream2 = FileUtil.getCSVByteStream(Arrays.asList("InventoryItemId", "Serial Number", "Item Id", "Brand", "Model Name", "ModelNumber",
1010
        org.apache.commons.io.output.ByteArrayOutputStream byteArrayOutputStream2 = FileUtil.getCSVByteStream(Arrays.asList("InventoryItemId", "Serial Number", "Item Id", "Brand", "Model Name", "ModelNumber", "Color", "Partner Id", "Partner Code", "Partner Name", "Activation Type", "City", "State", "Billing Date", "Exceed Days", "Max Ageing", "Activation Date"), partnerAgeingModels.stream().map(x -> Arrays.asList(x.getInventoryItemId(), x.getSerialNumber(), x.getItemId(), x.getBrand(), x.getModelName(), x.getModelNumber(), x.getColor(), x.getFofoId(), x.getFofoCode(), x.getFofoName(), x.getActivationType(), x.getFofoCity(), x.getFofoState(), FormattingUtils.formatDate(x.getBillingDate()), x.getExceedDays(), x.getMaxAgeingDays(), x.getActivationDate())).collect(Collectors.toList()));
869
                "Color", "Partner Id", "Partner Code", "Partner Name", "Activation Type", "City", "State", "Billing Date", "Exceed Days", "Max Ageing", "Activation Date"),
-
 
870
                partnerAgeingModels.stream().map(x -> Arrays.asList(x.getInventoryItemId(), x.getSerialNumber(), x.getItemId(), x.getBrand(), x.getModelName(), x.getModelNumber(), x.getColor(),
-
 
871
                                x.getFofoId(), x.getFofoCode(), x.getFofoName(), x.getActivationType(), x.getFofoCity(), x.getFofoState(), FormattingUtils.formatDate(x.getBillingDate()), x.getExceedDays(), x.getMaxAgeingDays(), x.getActivationDate()))
-
 
872
                        .collect(Collectors.toList()));
-
 
873
        Utils.Attachment attachment1 = new Utils.Attachment("secondary-alert.csv", new ByteArrayResource(byteArrayOutputStream.toByteArray()));
1011
        Utils.Attachment attachment1 = new Utils.Attachment("secondary-alert.csv", new ByteArrayResource(byteArrayOutputStream.toByteArray()));
874
        Utils.Attachment attachment2 = new Utils.Attachment("tertiary-alert.csv", new ByteArrayResource(byteArrayOutputStream2.toByteArray()));
1012
        Utils.Attachment attachment2 = new Utils.Attachment("tertiary-alert.csv", new ByteArrayResource(byteArrayOutputStream2.toByteArray()));
875
 
1013
 
876
        String mailSubject = "Stock ageing Alert";
1014
        String mailSubject = "Stock ageing Alert";
877
        Utils.sendMailWithAttachments(mailSender, new String[]{"deena.nath@smartdukaan.com"}, null, mailSubject, "PFA", attachment1, attachment2);
1015
        Utils.sendMailWithAttachments(mailSender, new String[]{"deena.nath@smartdukaan.com"}, null, mailSubject, "PFA", attachment1, attachment2);
Line 990... Line 1128...
990
    BrandRegionMappingRepository brandRegionMappingRepository;
1128
    BrandRegionMappingRepository brandRegionMappingRepository;
991
 
1129
 
992
    public void test() throws Exception {
1130
    public void test() throws Exception {
993
        System.out.println("Starting test");
1131
        System.out.println("Starting test");
994
        //processScheme(LocalDate.of(2023,05, 02).atStartOfDay(), LocalDate.of(2023, 05, 6).atStartOfDay(), false);
1132
        //processScheme(LocalDate.of(2023,05, 02).atStartOfDay(), LocalDate.of(2023, 05, 6).atStartOfDay(), false);
995
        partnerTypeChangeService.getTypeOnDate(175139287, LocalDate.of(2023,01, 01));
1133
        partnerTypeChangeService.getTypeOnDate(175139287, LocalDate.of(2023, 01, 01));
996
        partnerTypeChangeService.getTypeOnDate(175139287, LocalDate.of(2023,02, 01));
1134
        partnerTypeChangeService.getTypeOnDate(175139287, LocalDate.of(2023, 02, 01));
997
        partnerTypeChangeService.getTypeOnDate(175139287, LocalDate.of(2023,03, 01));
1135
        partnerTypeChangeService.getTypeOnDate(175139287, LocalDate.of(2023, 03, 01));
998
        FofoStore fs = fofoStoreRepository.selectByRetailerId(175139287);
1136
        FofoStore fs = fofoStoreRepository.selectByRetailerId(175139287);
999
        this.rolloutMarginForStoreOnMonth(fs, LocalDate.of(2023, 2, 1));
1137
        this.rolloutMarginForStoreOnMonth(fs, LocalDate.of(2023, 2, 1));
1000
 
1138
 
1001
        //this.sendMailForSamsungRebilling();
1139
        //this.sendMailForSamsungRebilling();
1002
        /*List<PurchaseReturnItem> purchaseReturnItems = purchaseReturnItemRepository.selectPurchaseReturnByStatuses(Arrays.asList(PurchaseReturnStatus.DEBIT_NOTE_CREATED));
1140
        /*List<PurchaseReturnItem> purchaseReturnItems = purchaseReturnItemRepository.selectPurchaseReturnByStatuses(Arrays.asList(PurchaseReturnStatus.DEBIT_NOTE_CREATED));
Line 1008... Line 1146...
1008
        //this.sendMailForAgeingAlert();
1146
        //this.sendMailForAgeingAlert();
1009
        //this.sendMailForAgeingAlert();
1147
        //this.sendMailForAgeingAlert();
1010
        //System.out.println(brandRegionMappingRepository.getAvailabilityToVendorWarehouse(Arrays.asList(33353), 7720));
1148
        //System.out.println(brandRegionMappingRepository.getAvailabilityToVendorWarehouse(Arrays.asList(33353), 7720));
1011
 
1149
 
1012
    }
1150
    }
-
 
1151
 
1013
    public void test1() throws Exception {
1152
    public void test1() throws Exception {
1014
        System.out.println("Starting test");
1153
        System.out.println("Starting test");
1015
        processScheme(LocalDate.of(2023,05, 06).atStartOfDay(), LocalDate.of(2023, 05, 9).atStartOfDay(), false);
1154
        processScheme(LocalDate.of(2023, 05, 06).atStartOfDay(), LocalDate.of(2023, 05, 9).atStartOfDay(), false);
1016
        /*partnerTypeChangeService.getTypeOnDate(175139287, LocalDate.of(2023,02, 01));
1155
        /*partnerTypeChangeService.getTypeOnDate(175139287, LocalDate.of(2023,02, 01));
1017
        partnerTypeChangeService.getTypeOnDate(175139287, LocalDate.of(2023,03, 01));
1156
        partnerTypeChangeService.getTypeOnDate(175139287, LocalDate.of(2023,03, 01));
1018
        partnerTypeChangeService.getTypeOnDate(175139287, LocalDate.of(2023,04, 01));
1157
        partnerTypeChangeService.getTypeOnDate(175139287, LocalDate.of(2023,04, 01));
1019
        FofoStore fs = fofoStoreRepository.selectByRetailerId(175139287);
1158
        FofoStore fs = fofoStoreRepository.selectByRetailerId(175139287);
1020
        this.rolloutMarginForStoreOnMonth(fs, LocalDate.of(2023, 2, 1));
1159
        this.rolloutMarginForStoreOnMonth(fs, LocalDate.of(2023, 2, 1));
Line 2307... Line 2446...
2307
                continue;
2446
                continue;
2308
            }
2447
            }
2309
            Map<Integer, Optional<Integer>> focusedCatalogIdAndQtyMap = focusedModelRepository.selectAllByRegionIds(regionIds).stream().collect(groupingBy(FocusedModel::getCatalogId, mapping(FocusedModel::getObsMinimumQty, Collectors.maxBy(Integer::compareTo))));
2448
            Map<Integer, Optional<Integer>> focusedCatalogIdAndQtyMap = focusedModelRepository.selectAllByRegionIds(regionIds).stream().collect(groupingBy(FocusedModel::getCatalogId, mapping(FocusedModel::getObsMinimumQty, Collectors.maxBy(Integer::compareTo))));
2310
 
2449
 
2311
            LOGGER.info("focusedCatalogIdAndQtyMap" + focusedCatalogIdAndQtyMap);
2450
            LOGGER.info("focusedCatalogIdAndQtyMap" + focusedCatalogIdAndQtyMap);
-
 
2451
            Map<String, RetailerBlockBrands> retailerBlockBrands = retailerBlockBrandsRepository.selectAllByRetailer(fofoId).stream().collect(Collectors.toMap(x -> x.getBlockBrands(), x -> x));
-
 
2452
 
2312
 
2453
 
2313
            for (Map.Entry<Integer, Optional<Integer>> entry : focusedCatalogIdAndQtyMap.entrySet()) {
2454
            for (Map.Entry<Integer, Optional<Integer>> entry : focusedCatalogIdAndQtyMap.entrySet()) {
2314
                int minQty = entry.getValue().get();
2455
                int minQty = entry.getValue().get();
2315
                int inStockQty = 0;
2456
                int inStockQty = 0;
2316
                int processingQty = 0;
2457
                int processingQty = 0;
Line 4260... Line 4401...
4260
 
4401
 
4261
        }
4402
        }
4262
 
4403
 
4263
    }
4404
    }
4264
 
4405
 
-
 
4406
    @Autowired
-
 
4407
    private RetailerFilterRepository retailerFilterRepository;
-
 
4408
 
-
 
4409
    @Autowired
-
 
4410
    private PerformanceService performanceService;
-
 
4411
 
-
 
4412
 
-
 
4413
    public void sendFilteredRetailerPerformance() throws Exception {
-
 
4414
        RetailerFilterModel retailerFilterModel = performanceService.getRetailerFilterModel();
-
 
4415
 
-
 
4416
        Map<Integer, CustomRetailer> customRetailers = retailerService.getAllFofoRetailers();
-
 
4417
 
-
 
4418
 
-
 
4419
        List<RetailerPeformanceFilterModel> partnersPerformance = performanceService.getPerformance(retailerFilterModel, customRetailers);
-
 
4420
 
-
 
4421
        Map<Integer, RetailerPeformanceFilterModel> partnersPerformanceMap = new HashMap<>();
-
 
4422
 
-
 
4423
        if (!partnersPerformance.isEmpty()) {
-
 
4424
            partnersPerformanceMap = partnersPerformance.stream().collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
-
 
4425
            performanceService.sendPartnerPerformanceEmail(partnersPerformanceMap, retailerFilterModel, customRetailers);
-
 
4426
 
-
 
4427
        }
-
 
4428
 
-
 
4429
 
-
 
4430
    }
-
 
4431
 
-
 
4432
 
4265
}
4433
}
4266
// 2284'
4434
// 2284'
4267
4435