Subversion Repositories SmartDukaan

Rev

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

Rev 29164 Rev 29578
Line 16... Line 16...
16
import java.util.HashMap;
16
import java.util.HashMap;
17
import java.util.HashSet;
17
import java.util.HashSet;
18
import java.util.LinkedHashMap;
18
import java.util.LinkedHashMap;
19
import java.util.List;
19
import java.util.List;
20
import java.util.Map;
20
import java.util.Map;
21
import java.util.Map.Entry;
21
import java.util.NoSuchElementException;
22
import java.util.Optional;
22
import java.util.Optional;
23
import java.util.Set;
23
import java.util.Set;
24
import java.util.TreeMap;
24
import java.util.TreeMap;
25
import java.util.stream.Collectors;
25
import java.util.stream.Collectors;
26
 
26
 
Line 49... Line 49...
49
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
49
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
50
import com.spice.profitmandi.common.model.ActivateItemModel;
50
import com.spice.profitmandi.common.model.ActivateItemModel;
51
import com.spice.profitmandi.common.model.ChartInvestmentModel;
51
import com.spice.profitmandi.common.model.ChartInvestmentModel;
52
import com.spice.profitmandi.common.model.ChartModel;
52
import com.spice.profitmandi.common.model.ChartModel;
53
import com.spice.profitmandi.common.model.CustomRetailer;
53
import com.spice.profitmandi.common.model.CustomRetailer;
54
import com.spice.profitmandi.common.model.Data;
-
 
55
import com.spice.profitmandi.common.model.DataInvestmentModel;
-
 
56
import com.spice.profitmandi.common.model.Legend;
-
 
57
import com.spice.profitmandi.common.model.Notification;
54
import com.spice.profitmandi.common.model.Notification;
58
import com.spice.profitmandi.common.model.OnlineDeliveredOrderSum;
55
import com.spice.profitmandi.common.model.OnlineDeliveredOrderSum;
59
import com.spice.profitmandi.common.model.OptionModel;
-
 
60
import com.spice.profitmandi.common.model.PieLables;
-
 
61
import com.spice.profitmandi.common.model.ProfitMandiConstants;
56
import com.spice.profitmandi.common.model.ProfitMandiConstants;
62
 
-
 
63
import com.spice.profitmandi.common.web.util.ResponseSender;
57
import com.spice.profitmandi.common.web.util.ResponseSender;
64
import com.spice.profitmandi.dao.entity.auth.AuthUser;
58
import com.spice.profitmandi.dao.entity.auth.AuthUser;
65
import com.spice.profitmandi.dao.entity.catalog.Item;
59
import com.spice.profitmandi.dao.entity.catalog.Item;
66
import com.spice.profitmandi.dao.entity.catalog.TagListing;
60
import com.spice.profitmandi.dao.entity.catalog.TagListing;
67
import com.spice.profitmandi.dao.entity.cs.Position;
61
import com.spice.profitmandi.dao.entity.cs.Position;
68
import com.spice.profitmandi.dao.entity.cs.TicketAssigned;
62
import com.spice.profitmandi.dao.entity.cs.TicketAssigned;
69
import com.spice.profitmandi.dao.entity.dtr.Document;
63
import com.spice.profitmandi.dao.entity.dtr.Document;
70
import com.spice.profitmandi.dao.entity.dtr.NotificationCampaign;
64
import com.spice.profitmandi.dao.entity.dtr.NotificationCampaign;
-
 
65
import com.spice.profitmandi.dao.entity.fofo.FofoLineItem;
-
 
66
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
-
 
67
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
71
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
68
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
72
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
69
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
73
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
-
 
74
import com.spice.profitmandi.dao.entity.fofo.PartnerType;
70
import com.spice.profitmandi.dao.entity.fofo.PartnerType;
75
import com.spice.profitmandi.dao.entity.inventory.ReporticoCacheTable;
71
import com.spice.profitmandi.dao.entity.inventory.ReporticoCacheTable;
76
import com.spice.profitmandi.dao.entity.transaction.Order;
72
import com.spice.profitmandi.dao.entity.transaction.Order;
77
import com.spice.profitmandi.dao.enumuration.transaction.OrderStatus;
73
import com.spice.profitmandi.dao.enumuration.transaction.OrderStatus;
-
 
74
import com.spice.profitmandi.dao.model.ActivationBrandModel;
78
import com.spice.profitmandi.dao.model.ActivationImeiUpdationModel;
75
import com.spice.profitmandi.dao.model.ActivationImeiUpdationModel;
-
 
76
import com.spice.profitmandi.dao.model.ActivationItemDetailModel;
-
 
77
import com.spice.profitmandi.dao.model.ActivationYearMonthModel;
79
import com.spice.profitmandi.dao.model.BrandWiseActivatedModel;
78
import com.spice.profitmandi.dao.model.BrandWiseActivatedModel;
80
import com.spice.profitmandi.dao.model.BrandWisePartnerSaleModel;
79
import com.spice.profitmandi.dao.model.BrandWisePartnerSaleModel;
81
import com.spice.profitmandi.dao.model.BrandWiseUnbilledActivateStockModel;
80
import com.spice.profitmandi.dao.model.BrandWiseUnbilledActivateStockModel;
82
import com.spice.profitmandi.dao.model.CreateOfferRequest;
81
import com.spice.profitmandi.dao.model.CreateOfferRequest;
83
import com.spice.profitmandi.dao.model.InStockBrandItemModel;
82
import com.spice.profitmandi.dao.model.InStockBrandItemModel;
Line 109... Line 108...
109
import com.spice.profitmandi.dao.repository.dtr.Mongo;
108
import com.spice.profitmandi.dao.repository.dtr.Mongo;
110
import com.spice.profitmandi.dao.repository.dtr.NotificationCampaignRepository;
109
import com.spice.profitmandi.dao.repository.dtr.NotificationCampaignRepository;
111
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
110
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
112
import com.spice.profitmandi.dao.repository.fofo.ActivatedImeiRepository;
111
import com.spice.profitmandi.dao.repository.fofo.ActivatedImeiRepository;
113
import com.spice.profitmandi.dao.repository.fofo.CurrentInventorySnapshotRepository;
112
import com.spice.profitmandi.dao.repository.fofo.CurrentInventorySnapshotRepository;
-
 
113
import com.spice.profitmandi.dao.repository.fofo.FofoLineItemRepository;
114
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
114
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
115
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
115
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
116
import com.spice.profitmandi.dao.repository.fofo.HygieneDataRepository;
116
import com.spice.profitmandi.dao.repository.fofo.HygieneDataRepository;
117
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
117
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
118
import com.spice.profitmandi.dao.repository.fofo.PartnerTypeChangeService;
118
import com.spice.profitmandi.dao.repository.fofo.PartnerTypeChangeService;
119
import com.spice.profitmandi.dao.repository.fofo.PendingOrderItemRepository;
119
import com.spice.profitmandi.dao.repository.fofo.PendingOrderItemRepository;
120
import com.spice.profitmandi.dao.repository.fofo.PendingOrderRepository;
120
import com.spice.profitmandi.dao.repository.fofo.PendingOrderRepository;
-
 
121
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
121
import com.spice.profitmandi.dao.repository.inventory.ReporticoCacheTableRepository;
122
import com.spice.profitmandi.dao.repository.inventory.ReporticoCacheTableRepository;
122
import com.spice.profitmandi.dao.repository.inventory.SaholicInventoryCISRepository;
123
import com.spice.profitmandi.dao.repository.inventory.SaholicInventoryCISRepository;
123
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
124
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
124
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
125
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
125
import com.spice.profitmandi.service.AdminUser;
126
import com.spice.profitmandi.service.AdminUser;
Line 265... Line 266...
265
 
266
 
266
	@Autowired
267
	@Autowired
267
	private Mongo mongoClient;
268
	private Mongo mongoClient;
268
 
269
 
269
	@Autowired
270
	@Autowired
-
 
271
	private SchemeInOutRepository schemeInOutRepository;
-
 
272
 
-
 
273
	@Autowired
-
 
274
	private FofoLineItemRepository fofoLineItemRepository;
-
 
275
 
-
 
276
	@Autowired
270
	private PositionRepository positionRepository;
277
	private PositionRepository positionRepository;
271
	private static final Logger LOGGER = LogManager.getLogger(DashboardController.class);
278
	private static final Logger LOGGER = LogManager.getLogger(DashboardController.class);
272
 
279
 
273
	@RequestMapping(value = "/12dashboard34", method = RequestMethod.GET)
280
	@RequestMapping(value = "/12dashboard34", method = RequestMethod.GET)
274
	public String dashboard1(HttpServletRequest request, Model model, @RequestParam int fofoId) throws Exception {
281
	public String dashboard1(HttpServletRequest request, Model model, @RequestParam int fofoId) throws Exception {
Line 665... Line 672...
665
		brands.add("Realme");
672
		brands.add("Realme");
666
		brands.add("MI");
673
		brands.add("MI");
667
		brands.add("Tecno");
674
		brands.add("Tecno");
668
		brands.add("Itel");
675
		brands.add("Itel");
669
		brands.add("Nokia");
676
		brands.add("Nokia");
-
 
677
 
670
		Map<String, List<Double>> sortedBrandValue = new LinkedHashMap<>();
678
		Map<String, List<Double>> sortedBrandValue = new LinkedHashMap<>();
671
 
679
 
672
		model.addAttribute("brands", brands);
680
		model.addAttribute("brands", brands);
673
 
681
 
674
		for (String brand : brands) {
682
		for (String brand : brands) {
Line 694... Line 702...
694
 
702
 
695
			sortedBrandValue.put(brand, sortedMonthBrandValue.values().stream().collect(Collectors.toList()));
703
			sortedBrandValue.put(brand, sortedMonthBrandValue.values().stream().collect(Collectors.toList()));
696
 
704
 
697
		}
705
		}
698
 
706
 
699
		Map<String, List<Double>> brandValues = new LinkedHashMap<>();
707
		LOGGER.info("sortedBrandValue" + sortedBrandValue);
-
 
708
		model.addAttribute("fofoId", fofoId);
-
 
709
 
-
 
710
		model.addAttribute("sortedBrandValue", sortedBrandValue);
-
 
711
 
-
 
712
		return "price-drop-tabular";
-
 
713
	}
-
 
714
 
-
 
715
	@RequestMapping(value = "/getMonthlyActivation", method = RequestMethod.GET)
-
 
716
	public String getMonthlyActivation(HttpServletRequest request, Model model) throws Exception {
-
 
717
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
718
		int fofoId = loginDetails.getFofoId();
-
 
719
 
-
 
720
		LocalDateTime curDate = LocalDate.now().atStartOfDay();
-
 
721
		LocalDateTime startOfMonth = curDate.withDayOfMonth(1).minusMonths(6);
-
 
722
 
-
 
723
		List<YearMonth> yms = new ArrayList<YearMonth>();
-
 
724
 
-
 
725
		for (int i = 1; i <= 6; i++) {
-
 
726
			yms.add(YearMonth.from(curDate.withDayOfMonth(1).minusMonths(i)));
-
 
727
		}
-
 
728
		Collections.reverse(yms);
-
 
729
		model.addAttribute("yms", yms);
-
 
730
		LOGGER.info("ym" + yms);
-
 
731
 
-
 
732
		List<ActivationYearMonthModel> pendingActivationModels = schemeInOutRepository
-
 
733
				.selectPendingActivationGroupByBrandYearMonth(fofoId, startOfMonth);
-
 
734
 
-
 
735
		List<ActivationBrandModel> pendingActivationBeforeSixMonth = schemeInOutRepository
-
 
736
				.selectByYearMonthActivationGroupByBrand(fofoId, startOfMonth);
700
 
737
 
-
 
738
		Map<String, Double> pendingActivationBeforeSixMonthMap = pendingActivationBeforeSixMonth.stream()
701
		for (Entry<String, List<Double>> vv : sortedBrandValue.entrySet()) {
739
				.collect(Collectors.toMap(x -> x.getBrand(), x -> (double) x.getAmount()));
702
 
740
 
703
			Double total = vv.getValue().stream().mapToDouble(x -> x.doubleValue()).sum();
741
		model.addAttribute("pendingActivationBeforeSixMonthMap", pendingActivationBeforeSixMonthMap);
704
 
742
 
-
 
743
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("MM-yyyy");
-
 
744
 
-
 
745
		Map<String, Map<YearMonth, Double>> activationBrandMonthMap = new HashMap<>();
-
 
746
 
-
 
747
		for (ActivationYearMonthModel pam : pendingActivationModels) {
-
 
748
			Map<YearMonth, Double> brandValue = new HashMap<>();
-
 
749
 
-
 
750
			if (activationBrandMonthMap.containsKey(pam.getBrand())) {
-
 
751
				brandValue = activationBrandMonthMap.get(pam.getBrand());
-
 
752
				brandValue.put(YearMonth.parse(pam.getYearMonth(), dateTimeFormatter), (double) pam.getAmount());
705
			if (total != 0.0) {
753
			} else {
-
 
754
 
706
				brandValues.put(vv.getKey(), vv.getValue());
755
				brandValue.put(YearMonth.parse(pam.getYearMonth(), dateTimeFormatter), (double) pam.getAmount());
707
 
756
 
708
			}
757
			}
-
 
758
			activationBrandMonthMap.put(pam.getBrand(), brandValue);
-
 
759
		}
-
 
760
 
-
 
761
		List<String> brands = new ArrayList<>();
-
 
762
		brands.add("Oppo");
-
 
763
		brands.add("Vivo");
-
 
764
		brands.add("Samsung");
-
 
765
		brands.add("Realme");
-
 
766
		brands.add("MI");
-
 
767
		brands.add("Tecno");
-
 
768
		brands.add("Itel");
-
 
769
		brands.add("Nokia");
-
 
770
		brands.add("Lava");
-
 
771
		Map<String, List<Double>> sortedBrandValue = new LinkedHashMap<>();
-
 
772
 
-
 
773
		model.addAttribute("brands", brands);
709
 
774
 
-
 
775
		for (String brand : brands) {
-
 
776
			Map<YearMonth, Double> yearMonthValue = activationBrandMonthMap.get(brand);
-
 
777
			for (int i = 6; i >= 1; i--) {
-
 
778
				LocalDateTime startMonth = curDate.withDayOfMonth(1).minusMonths(i);
710
			LOGGER.info("total" + total);
779
				if (yearMonthValue != null) {
-
 
780
					if (yearMonthValue.get(YearMonth.from(startMonth)) == null) {
-
 
781
						yearMonthValue.put(YearMonth.from(startMonth), 0.0);
-
 
782
					}
-
 
783
 
-
 
784
				} else {
-
 
785
					yearMonthValue = new HashMap<>();
-
 
786
					yearMonthValue.put(YearMonth.from(startMonth), 0.0);
-
 
787
				}
-
 
788
			}
-
 
789
			Map<YearMonth, Double> sortedMonthBrandValue = new TreeMap<>(yearMonthValue);
-
 
790
			activationBrandMonthMap.put(brand, sortedMonthBrandValue);
-
 
791
			sortedBrandValue.put(brand, sortedMonthBrandValue.values().stream().collect(Collectors.toList()));
711
		}
792
		}
712
 
793
 
713
		LOGGER.info("sortedBrandValue" + brandValues);
794
		model.addAttribute("sortedBrandValue", sortedBrandValue);
714
		model.addAttribute("fofoId", fofoId);
795
		model.addAttribute("fofoId", fofoId);
-
 
796
		return "activation-tabular";
-
 
797
	}
715
 
798
 
-
 
799
	@RequestMapping(value = "/getMonthlyActivationItemDetail", method = RequestMethod.GET)
-
 
800
	public String getMonthlyActivationItemDetail(HttpServletRequest request,
-
 
801
			@RequestParam(name = "fofoId", required = true, defaultValue = "0") int fofoId,
716
		model.addAttribute("sortedBrandValue", brandValues);
802
			@RequestParam(name = "brand", required = true, defaultValue = "0") String brand,
-
 
803
			@RequestParam(name = "yearMonth", required = false, defaultValue = "0") String yearMonth, Model model)
-
 
804
			throws Exception {
717
 
805
 
-
 
806
		LOGGER.info("params" + fofoId + brand + yearMonth);
-
 
807
 
-
 
808
		List<ActivationItemDetailModel> activationItemDetails = schemeInOutRepository
-
 
809
				.selectBrandPendingActivationItemDetails(fofoId, brand, yearMonth);
-
 
810
 
-
 
811
		for (ActivationItemDetailModel activationItemDetail : activationItemDetails) {
-
 
812
 
-
 
813
			List<FofoLineItem> flis = fofoLineItemRepository
-
 
814
					.selectByInventoryItemId(activationItemDetail.getInventoryItemId());
-
 
815
 
-
 
816
			LOGGER.info("flis" + flis);
-
 
817
 
-
 
818
			int maxFofoOrderItemId = flis.stream().mapToInt(x -> x.getFofoOrderItemId()).max()
-
 
819
					.orElseThrow(NoSuchElementException::new);
-
 
820
			LOGGER.info("maxFofoOrderItemId" + maxFofoOrderItemId);
-
 
821
 
-
 
822
			FofoOrderItem foi = fofoOrderItemRepository.selectById(maxFofoOrderItemId);
-
 
823
 
-
 
824
			FofoOrder fo = fofoOrderRepository.selectByOrderId(foi.getOrderId());
-
 
825
 
-
 
826
			activationItemDetail.setInvoiceNumber(fo.getInvoiceNumber());
-
 
827
 
-
 
828
		}
-
 
829
		LOGGER.info("activationItemDetails" + activationItemDetails);
-
 
830
 
-
 
831
		model.addAttribute("activationItemDetails", activationItemDetails);
-
 
832
 
-
 
833
		return "activation-pending-item-details";
-
 
834
	}
-
 
835
 
-
 
836
	@RequestMapping(value = "/getMonthlyActivationBeforeSixMonthsItemDetail", method = RequestMethod.GET)
-
 
837
	public String getMonthlyActivationItemDetail(HttpServletRequest request,
-
 
838
			@RequestParam(name = "fofoId", required = true, defaultValue = "0") int fofoId,
-
 
839
			@RequestParam(name = "brand", required = true, defaultValue = "0") String brand, Model model)
-
 
840
			throws Exception {
-
 
841
		LocalDateTime curDate = LocalDate.now().atStartOfDay();
-
 
842
 
-
 
843
		LocalDateTime startOfMonth = curDate.withDayOfMonth(1).minusMonths(6);
-
 
844
 
-
 
845
		List<ActivationItemDetailModel> activationItemDetails = schemeInOutRepository
-
 
846
				.selectBrandPendingActivationItemDetailByYearMonth(fofoId, brand, startOfMonth);
-
 
847
 
-
 
848
		for (ActivationItemDetailModel activationItemDetail : activationItemDetails) {
-
 
849
 
-
 
850
			List<FofoLineItem> flis = fofoLineItemRepository
-
 
851
					.selectByInventoryItemId(activationItemDetail.getInventoryItemId());
-
 
852
			LOGGER.info("flis" + flis);
-
 
853
 
-
 
854
			int maxFofoOrderItemId = flis.stream().mapToInt(x -> x.getFofoOrderItemId()).max()
-
 
855
					.orElseThrow(NoSuchElementException::new);
-
 
856
			LOGGER.info("maxFofoOrderItemId" + maxFofoOrderItemId);
-
 
857
 
-
 
858
			FofoOrderItem foi = fofoOrderItemRepository.selectById(maxFofoOrderItemId);
-
 
859
 
-
 
860
			FofoOrder fo = fofoOrderRepository.selectByOrderId(foi.getOrderId());
-
 
861
 
-
 
862
			activationItemDetail.setInvoiceNumber(fo.getInvoiceNumber());
-
 
863
 
-
 
864
		}
-
 
865
		LOGGER.info("activationItemDetails" + activationItemDetails);
-
 
866
 
-
 
867
		model.addAttribute("activationItemDetails", activationItemDetails);
-
 
868
 
718
		return "price-drop-tabular";
869
		return "activation-pending-item-details";
719
	}
870
	}
720
 
871
 
721
	@RequestMapping(value = "/getAuthUserPartners", method = RequestMethod.GET)
872
	@RequestMapping(value = "/getAuthUserPartners", method = RequestMethod.GET)
722
	public String AuthUserPartnersDetail(HttpServletRequest request, Model model, @RequestParam int authId)
873
	public String AuthUserPartnersDetail(HttpServletRequest request, Model model, @RequestParam int authId)
723
			throws Exception {
874
			throws Exception {
Line 781... Line 932...
781
		}
932
		}
782
		ChartInvestmentModel cm = adminUser.getAllStatePartnerType(fofoIdAndallValues);
933
		ChartInvestmentModel cm = adminUser.getAllStatePartnerType(fofoIdAndallValues);
783
		model.addAttribute("chartPieMap", gson.toJson(cm));
934
		model.addAttribute("chartPieMap", gson.toJson(cm));
784
 
935
 
785
		LOGGER.info("adminUserChart" + gson.toJson(cm));
936
		LOGGER.info("adminUserChart" + gson.toJson(cm));
786
		      
-
 
787
 
937
 
788
		model.addAttribute("fofoIdAndallValues", fofoIdAndallValues);
938
		model.addAttribute("fofoIdAndallValues", fofoIdAndallValues);
789
		model.addAttribute("fofoIdAndPartnerMap", fofoIdAndPartnerMap);
939
		model.addAttribute("fofoIdAndPartnerMap", fofoIdAndPartnerMap);
790
 
940
 
791
		return "auth_user_partner_detail";
941
		return "auth_user_partner_detail";