Subversion Repositories SmartDukaan

Rev

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

Rev 31123 Rev 31169
Line 1831... Line 1831...
1831
 
1831
 
1832
		Map<Integer, FofoReportingModel> partnerSalesHeadersMap = this.getPartnerIdSalesHeaders();
1832
		Map<Integer, FofoReportingModel> partnerSalesHeadersMap = this.getPartnerIdSalesHeaders();
1833
		for (Integer fofoId : fofoIds) {
1833
		for (Integer fofoId : fofoIds) {
1834
			SaleTargetReportModel model = saleTargetReportModelMap.get(fofoId);
1834
			SaleTargetReportModel model = saleTargetReportModelMap.get(fofoId);
1835
 
1835
 
1836
			com.spice.profitmandi.dao.entity.user.User user = userUserRepository.selectById(fofoId);
1836
			// com.spice.profitmandi.dao.entity.user.User user =
-
 
1837
			// userUserRepository.selectById(fofoId);
1837
 
1838
 
1838
			Address address = addressRepository.selectById(user.getAddressId());
1839
			// Address address = addressRepository.selectById(user.getAddressId());
1839
 
1840
 
1840
			String title = "Sale Update";
1841
			String title = "Sale Update";
1841
			String messageTemplate = String.format("Smartphones Rs.%.0f, Insurance Rs.%.0f, Total Rs.%.0f till %s.",
1842
			String messageTemplate = String.format("Smartphones Rs.%.0f, Insurance Rs.%.0f, Total Rs.%.0f till %s.",
1842
					model.getSmartphoneSale(), model.getInsuranceSale(), model.getTotalSale(),
1843
					model.getSmartphoneSale(), model.getInsuranceSale(), model.getTotalSale(),
1843
					String.format(timeString, now.format(timeFormatter)));
1844
					String.format(timeString, now.format(timeFormatter)));
Line 1854... Line 1855...
1854
			notificationService.sendNotification(sendNotificationModel);
1855
			notificationService.sendNotification(sendNotificationModel);
1855
			String whatsappMessageTemplate = String.format(
1856
			String whatsappMessageTemplate = String.format(
1856
					"Dear Partner, Your sale update is Smartphones Rs.%.0f, Insurance Rs.%.0f, Total Rs.%.0f till %s.",
1857
					"Dear Partner, Your sale update is Smartphones Rs.%.0f, Insurance Rs.%.0f, Total Rs.%.0f till %s.",
1857
					model.getSmartphoneSale(), model.getInsuranceSale(), model.getTotalSale(),
1858
					model.getSmartphoneSale(), model.getInsuranceSale(), model.getTotalSale(),
1858
					String.format(timeString, now.format(timeFormatter)));
1859
					String.format(timeString, now.format(timeFormatter)));
1859
			notificationService.sendWhatsappMessage(whatsappMessageTemplate, title, address.getPhoneNumber());
1860
			// notificationService.sendWhatsappMessage(whatsappMessageTemplate, title,
-
 
1861
			// address.getPhoneNumber());
1860
 
1862
 
1861
		}
1863
		}
1862
		// String saleReport = this.getDailySalesReportHtml(partnerSalesHeadersMap,
1864
		// String saleReport = this.getDailySalesReportHtml(partnerSalesHeadersMap,
1863
		// saleTargetReportModelMap);
1865
		// saleTargetReportModelMap);
1864
		String statewiseSaleReport = this.getStateWiseSales(saleTargetReportModelMap, partnerSalesHeadersMap);
1866
		this.getStateWiseSales(saleTargetReportModelMap, partnerSalesHeadersMap);
-
 
1867
		/*
-
 
1868
		 * String cc[] = { "tarun.verma@smartdukaan.com",
1865
		String cc[] = { "tarun.verma@smartdukaan.com", "kamini.sharma@smartdukaan.com", "niranjan.kala@smartdukaan.com",
1869
		 * "kamini.sharma@smartdukaan.com", "niranjan.kala@smartdukaan.com",
1866
				"sm@smartdukaan.com" };
1870
		 * "sm@smartdukaan.com" };
1867
 
1871
		 *
1868
		String subject = String.format("Sale till %s", String.format(timeString, now.format(timeFormatter)));
1872
		 * String subject = String.format("Sale till %s", String.format(timeString,
-
 
1873
		 * now.format(timeFormatter))); //
1869
		// this.sendMailOfHtmlFomat("amit.gupta@smartukaan.com", saleReport, cc,
1874
		 * this.sendMailOfHtmlFomat("amit.gupta@smartukaan.com", saleReport, cc, //
1870
		// subject);
1875
		 * subject); this.sendMailOfHtmlFormat("amit.gupta@smartdukaan.com",
1871
		this.sendMailOfHtmlFormat("amit.gupta@smartdukaan.com", statewiseSaleReport, cc, "Statewise" + subject);
1876
		 * statewiseSaleReport, cc, "Statewise" + subject);
-
 
1877
		 */
1872
	}
1878
	}
1873
 
1879
 
1874
	public void checkRazorPayPaymentStatus() throws Exception {
1880
	public void checkRazorPayPaymentStatus() throws Exception {
1875
		List<PendingOrder> pendingOrder = pendingOrderRepository
1881
		List<PendingOrder> pendingOrder = pendingOrderRepository
1876
				.selectAllByStatus(com.spice.profitmandi.dao.enumuration.transaction.OrderStatus.PENDING);
1882
				.selectAllByStatus(com.spice.profitmandi.dao.enumuration.transaction.OrderStatus.PENDING);
Line 2064... Line 2070...
2064
					+ smartphoneQty + ", insuranceSale=" + insuranceSale + ", insruanceQty=" + insruanceQty + "]";
2070
					+ smartphoneQty + ", insuranceSale=" + insuranceSale + ", insruanceQty=" + insruanceQty + "]";
2065
		}
2071
		}
2066
 
2072
 
2067
	}
2073
	}
2068
 
2074
 
2069
	private String getStateWiseSales(Map<Integer, SaleTargetReportModel> saleTargetReportModelMap,
2075
	private void getStateWiseSales(Map<Integer, SaleTargetReportModel> saleTargetReportModelMap,
2070
			Map<Integer, FofoReportingModel> partnerSalesHeadersMap) throws Exception {
2076
			Map<Integer, FofoReportingModel> partnerSalesHeadersMap) throws Exception {
2071
		List<FofoStore> stores = fofoStoreRepository.selectActiveStores();
-
 
2072
		Map<String, List<Integer>> stateMap = stores.stream().collect(Collectors
-
 
2073
				.groupingBy(x -> x.getCode().substring(0, 2), Collectors.mapping(x -> x.getId(), Collectors.toList())));
-
 
2074
		List<List<Serializable>> stateWiseSales = new ArrayList<>();
-
 
2075
		for (Map.Entry<String, List<Integer>> stateMapEntry : stateMap.entrySet()) {
-
 
2076
			long totalQty = stateMapEntry.getValue().stream()
-
 
2077
					.collect(Collectors.summingLong(x -> saleTargetReportModelMap.get(x).getTotalQty()));
-
 
2078
			double totalSale = stateMapEntry.getValue().stream()
-
 
2079
					.collect(Collectors.summingDouble(x -> saleTargetReportModelMap.get(x).getTotalSale()));
-
 
2080
			long smartPhoneQty = stateMapEntry.getValue().stream()
-
 
2081
					.collect(Collectors.summingLong(x -> saleTargetReportModelMap.get(x).getSmartphoneQty()));
-
 
2082
			double smartPhoneSale = stateMapEntry.getValue().stream()
-
 
2083
					.collect(Collectors.summingDouble(x -> saleTargetReportModelMap.get(x).getSmartphoneSale()));
-
 
2084
			stateWiseSales
-
 
2085
					.add(Arrays.asList(stateMapEntry.getKey(), smartPhoneQty, smartPhoneSale, totalQty, totalSale));
-
 
2086
		}
-
 
2087
		StringBuilder sb = new StringBuilder();
2077
		String timeString = "Today %s";
2088
		sb.append("<html><body>");
-
 
2089
		sb.append("<p>Statewise Sale Report:</p><br/><table style='border:1px solid black';cellspacing=0>");
-
 
2090
		sb.append("<tbody>\n" + "	    <tr>"
-
 
2091
				+ "	    					<th style='border:1px solid black;padding: 5px'>State</th>"
-
 
2092
				+ "	    					<th style='border:1px solid black;padding: 5px'>SmartPhone Qty</th>"
-
 
2093
				+ "	    					<th style='border:1px solid black;padding: 5px'>SmartPhone Value</th>"
-
 
2094
				+ "	    					<th style='border:1px solid black;padding: 5px'>Total Qty</th>"
-
 
2095
				+ "	    					<th style='border:1px solid black;padding: 5px'>Total Value</th>"
-
 
2096
				+ "	    				</tr>");
-
 
2097
		for (List<Serializable> stateSale : stateWiseSales) {
2078
		LocalDateTime now = LocalDateTime.now();
2098
			sb.append("<tr>");
-
 
2099
			sb.append("<td style='border:1px solid black;padding: 5px'>" + stateSale.get(0) + "</td>");
-
 
2100
			sb.append("<td style='border:1px solid black;padding: 5px'>" + stateSale.get(1) + "</td>");
-
 
2101
			sb.append("<td style='border:1px solid black;padding: 5px'>" + stateSale.get(2) + "</td>");
-
 
2102
			sb.append("<td style='border:1px solid black;padding: 5px'>" + stateSale.get(3) + "</td>");
-
 
2103
			sb.append("<td style='border:1px solid black;padding: 5px'>" + stateSale.get(4) + "</td>");
-
 
2104
			sb.append("</tr>");
-
 
2105
		}
-
 
2106
		sb.append("</tbody></table><br><br>");
-
 
2107
 
-
 
2108
		sb.append("<p>Sale Report:</p><br/><table style='border:1px solid black';cellspacing=0>");
-
 
2109
		sb.append("<tbody>\n" + "	    				<tr>\n"
-
 
2110
				+ "	    					<th style='border:1px solid black;padding: 5px'>Code</th>"
-
 
2111
				+ "	    					<th style='border:1px solid black;padding: 5px'>Business Name</th>"
-
 
2112
				+ "	    					<th style='border:1px solid black;padding: 5px'>Regional Manager</th>"
-
 
2113
				+ "	    					<th style='border:1px solid black;padding: 5px'>Territory Manager</th>"
-
 
2114
				+ "	    					<th style='border:1px solid black;padding: 5px'>Sale</th>"
-
 
2115
				+ "	    					<th style='border:1px solid black;padding: 5px'>Smartphone Sale</th>"
-
 
2116
				+ "	    					<th style='border:1px solid black;padding: 5px'>SmartPhone Qty</th>"
-
 
2117
				+ "	    				</tr>");
-
 
2118
 
2079
 
-
 
2080
		DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("h:m a");
-
 
2081
		List<Integer> categoryIds = Arrays.asList(ProfitMandiConstants.TICKET_CATEGORY_LOGISTICS,
-
 
2082
				ProfitMandiConstants.TICKET_CATEGORY_FINANCIAL_SERVICES, ProfitMandiConstants.TICKET_CATEGORY_CATEGORY,
-
 
2083
				ProfitMandiConstants.TICKET_CATEGORY_RBM, ProfitMandiConstants.TICKET_CATEGORY_SALES,
-
 
2084
				ProfitMandiConstants.TICKET_CATEGORY_MARKETING, ProfitMandiConstants.TICKET_CATEGORY_ACCOUNTS,
-
 
2085
				ProfitMandiConstants.TICKET_CATEGORY_BUSINESSINTELLIGENT,
-
 
2086
				ProfitMandiConstants.TICKET_CATEGORY_TECHNOLOGY);
2119
		/*
2087
 
-
 
2088
		Map<String, Set<Integer>> storeGuyMap = csService.getAuthUserPartnerIdMappingByCategoryIds(categoryIds);
-
 
2089
 
-
 
2090
		for (Entry<String, Set<Integer>> storeGuyEntry : storeGuyMap.entrySet()) {
-
 
2091
			String email = storeGuyEntry.getKey();
2120
		 * List<Integer> sortedPartnerSalesHeaders =
2092
			Set<Integer> fofoIds = storeGuyEntry.getValue();
-
 
2093
			LOGGER.info("fofoIds {}", fofoIds);
-
 
2094
 
-
 
2095
			if (!fofoIds.isEmpty()) {
-
 
2096
				List<FofoStore> stores = fofoStoreRepository
-
 
2097
						.selectActivePartnersByRetailerIds(new ArrayList<>(fofoIds));
-
 
2098
 
-
 
2099
				Map<String, List<Integer>> stateMap = stores.stream().collect(Collectors.groupingBy(
-
 
2100
						x -> x.getCode().substring(0, 2), Collectors.mapping(x -> x.getId(), Collectors.toList())));
-
 
2101
				List<List<Serializable>> stateWiseSales = new ArrayList<>();
-
 
2102
				for (Map.Entry<String, List<Integer>> stateMapEntry : stateMap.entrySet()) {
2121
		 * partnerSalesHeadersMap.values().stream()
2103
					long totalQty = stateMapEntry.getValue().stream()
2122
		 * .sorted(Comparator.comparing(FofoReportingModel::getCode)
2104
							.collect(Collectors.summingLong(x -> saleTargetReportModelMap.get(x).getTotalQty()));
-
 
2105
					double totalSale = stateMapEntry.getValue().stream()
2123
		 * .thenComparing(FofoReportingModel::getRegionalManager)
2106
							.collect(Collectors.summingDouble(x -> saleTargetReportModelMap.get(x).getTotalSale()));
2124
		 * .thenComparing(FofoReportingModel::getTerritoryManager))
2107
					long smartPhoneQty = stateMapEntry.getValue().stream()
2125
		 * .map(FofoReportingModel::getFofoId).collect(Collectors.toList());
2108
							.collect(Collectors.summingLong(x -> saleTargetReportModelMap.get(x).getSmartphoneQty()));
-
 
2109
					double smartPhoneSale = stateMapEntry.getValue().stream().collect(
-
 
2110
							Collectors.summingDouble(x -> saleTargetReportModelMap.get(x).getSmartphoneSale()));
-
 
2111
					stateWiseSales.add(
-
 
2112
							Arrays.asList(stateMapEntry.getKey(), smartPhoneQty, smartPhoneSale, totalQty, totalSale));
-
 
2113
				}
-
 
2114
				StringBuilder sb = new StringBuilder();
-
 
2115
				sb.append("<html><body>");
-
 
2116
				sb.append("<p>Statewise Sale Report:</p><br/><table style='border:1px solid black';cellspacing=0>");
-
 
2117
				sb.append("<tbody>\n" + "	    <tr>"
-
 
2118
						+ "	    					<th style='border:1px solid black;padding: 5px'>State</th>"
-
 
2119
						+ "	    					<th style='border:1px solid black;padding: 5px'>SmartPhone Qty</th>"
-
 
2120
						+ "	    					<th style='border:1px solid black;padding: 5px'>SmartPhone Value</th>"
-
 
2121
						+ "	    					<th style='border:1px solid black;padding: 5px'>Total Qty</th>"
-
 
2122
						+ "	    					<th style='border:1px solid black;padding: 5px'>Total Value</th>"
-
 
2123
						+ "	    				</tr>");
-
 
2124
				for (List<Serializable> stateSale : stateWiseSales) {
-
 
2125
					sb.append("<tr>");
-
 
2126
					sb.append("<td style='border:1px solid black;padding: 5px'>" + stateSale.get(0) + "</td>");
-
 
2127
					sb.append("<td style='border:1px solid black;padding: 5px'>" + stateSale.get(1) + "</td>");
-
 
2128
					sb.append("<td style='border:1px solid black;padding: 5px'>" + stateSale.get(2) + "</td>");
-
 
2129
					sb.append("<td style='border:1px solid black;padding: 5px'>" + stateSale.get(3) + "</td>");
-
 
2130
					sb.append("<td style='border:1px solid black;padding: 5px'>" + stateSale.get(4) + "</td>");
-
 
2131
					sb.append("</tr>");
2126
		 */
2132
				}
-
 
2133
				sb.append("</tbody></table><br><br>");
2127
 
2134
 
-
 
2135
				sb.append("<p>Sale Report:</p><br/><table style='border:1px solid black';cellspacing=0>");
-
 
2136
				sb.append("<tbody>\n" + "	    				<tr>\n"
-
 
2137
						+ "	    					<th style='border:1px solid black;padding: 5px'>Code</th>"
-
 
2138
						+ "	    					<th style='border:1px solid black;padding: 5px'>Business Name</th>"
-
 
2139
						+ "	    					<th style='border:1px solid black;padding: 5px'>Regional Manager</th>"
-
 
2140
						+ "	    					<th style='border:1px solid black;padding: 5px'>Territory Manager</th>"
-
 
2141
						+ "	    					<th style='border:1px solid black;padding: 5px'>Sale</th>"
-
 
2142
						+ "	    					<th style='border:1px solid black;padding: 5px'>Smartphone Sale</th>"
-
 
2143
						+ "	    					<th style='border:1px solid black;padding: 5px'>SmartPhone Qty</th>"
-
 
2144
						+ "	    				</tr>");
-
 
2145
 
-
 
2146
				/*
-
 
2147
				 * List<Integer> sortedPartnerSalesHeaders =
-
 
2148
				 * partnerSalesHeadersMap.values().stream()
-
 
2149
				 * .sorted(Comparator.comparing(FofoReportingModel::getCode)
-
 
2150
				 * .thenComparing(FofoReportingModel::getRegionalManager)
-
 
2151
				 * .thenComparing(FofoReportingModel::getTerritoryManager))
-
 
2152
				 * .map(FofoReportingModel::getFofoId).collect(Collectors.toList());
-
 
2153
				 */
-
 
2154
 
2128
		List<Integer> sortedSaleTargetReport = saleTargetReportModelMap.values().stream()
2155
				List<Integer> sortedSaleTargetReport = saleTargetReportModelMap.values().stream()
-
 
2156
						.filter(x -> fofoIds.contains(x.getFofoId()))
2129
				.sorted(Comparator.comparing(SaleTargetReportModel::getTotalSale)).map(SaleTargetReportModel::getFofoId)
2157
						.sorted(Comparator.comparing(SaleTargetReportModel::getTotalSale))
2130
				.collect(Collectors.toList());
2158
						.map(SaleTargetReportModel::getFofoId).collect(Collectors.toList());
2131
		for (Integer fofoId : sortedSaleTargetReport) {
2159
				for (Integer fofoId : sortedSaleTargetReport) {
2132
			if (saleTargetReportModelMap.get(fofoId).getPast3daysSale() == 0) {
2160
					if (saleTargetReportModelMap.get(fofoId).getPast3daysSale() == 0) {
2133
				sb.append("<tr style='background-color:red'>");
2161
						sb.append("<tr style='background-color:red'>");
2134
			} else {
2162
					} else {
2135
				sb.append("<tr>");
2163
						sb.append("<tr>");
2136
			}
2164
					}
2137
			sb.append("<td style='border:1px solid black;padding: 5px'>" + partnerSalesHeadersMap.get(fofoId).getCode()
2165
					sb.append("<td style='border:1px solid black;padding: 5px'>"
2138
					+ "</td>");
2166
							+ partnerSalesHeadersMap.get(fofoId).getCode() + "</td>");
2139
			sb.append("<td style='border:1px solid black;padding: 5px'>"
2167
					sb.append("<td style='border:1px solid black;padding: 5px'>"
2140
					+ partnerSalesHeadersMap.get(fofoId).getBusinessName() + "</td>");
2168
							+ partnerSalesHeadersMap.get(fofoId).getBusinessName() + "</td>");
2141
			sb.append("<td style='border:1px solid black;padding: 5px'>"
2169
					sb.append("<td style='border:1px solid black;padding: 5px'>"
2142
					+ partnerSalesHeadersMap.get(fofoId).getRegionalManager() + "</td>");
2170
							+ partnerSalesHeadersMap.get(fofoId).getRegionalManager() + "</td>");
2143
			sb.append("<td style='border:1px solid black;padding: 5px'>"
2171
					sb.append("<td style='border:1px solid black;padding: 5px'>"
2144
					+ partnerSalesHeadersMap.get(fofoId).getTerritoryManager() + "</td>");
2172
							+ partnerSalesHeadersMap.get(fofoId).getTerritoryManager() + "</td>");
2145
			sb.append("<td style='border:1px solid black;padding: 5px'>"
2173
					sb.append("<td style='border:1px solid black;padding: 5px'>"
2146
					+ saleTargetReportModelMap.get(fofoId).getTotalSale() + "</td>");
2174
							+ saleTargetReportModelMap.get(fofoId).getTotalSale() + "</td>");
2147
			sb.append("<td style='border:1px solid black;padding: 5px'>"
2175
					sb.append("<td style='border:1px solid black;padding: 5px'>"
2148
					+ saleTargetReportModelMap.get(fofoId).getSmartphoneSale() + "</td>");
2176
							+ saleTargetReportModelMap.get(fofoId).getSmartphoneSale() + "</td>");
2149
			sb.append("<td style='border:1px solid black;padding: 5px'>"
2177
					sb.append("<td style='border:1px solid black;padding: 5px'>"
2150
					+ saleTargetReportModelMap.get(fofoId).getSmartphoneQty() + "</td>");
2178
							+ saleTargetReportModelMap.get(fofoId).getSmartphoneQty() + "</td>");
2151
			sb.append("</tr>");
2179
					sb.append("</tr>");
2152
		}
2180
				}
2153
 
2181
 
2154
		sb.append("</tr>");
2182
				sb.append("</tr>");
2155
 
2183
 
2156
		sb.append("</body></html>");
2184
				sb.append("</body></html>");
2157
 
2185
 
2158
		return sb.toString();
2186
				String statewiseSaleReport = sb.toString();
-
 
2187
 
-
 
2188
				String subject = String.format("Sale till %s", String.format(timeString, now.format(timeFormatter)));
-
 
2189
				// this.sendMailOfHtmlFomat("amit.gupta@smartukaan.com", saleReport, cc,
-
 
2190
				// subject);
-
 
2191
				this.sendMailOfHtmlFormat(email, statewiseSaleReport, null, "Statewise" + subject);
-
 
2192
			}
-
 
2193
		}
2159
	}
2194
	}
2160
 
2195
 
2161
	private void sendMailOfHtmlFormat(String email, String body, String cc[], String subject)
2196
	private void sendMailOfHtmlFormat(String email, String body, String cc[], String subject)
2162
			throws MessagingException, ProfitMandiBusinessException, IOException {
2197
			throws MessagingException, ProfitMandiBusinessException, IOException {
2163
		MimeMessage message = mailSender.createMimeMessage();
2198
		MimeMessage message = mailSender.createMimeMessage();