Subversion Repositories SmartDukaan

Rev

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

Rev 24917 Rev 24950
Line 54... Line 54...
54
import com.spice.profitmandi.common.model.NotifyOrderModel;
54
import com.spice.profitmandi.common.model.NotifyOrderModel;
55
import com.spice.profitmandi.common.model.ProfitMandiConstants;
55
import com.spice.profitmandi.common.model.ProfitMandiConstants;
56
import com.spice.profitmandi.common.util.ExcelUtils;
56
import com.spice.profitmandi.common.util.ExcelUtils;
57
import com.spice.profitmandi.common.util.Utils;
57
import com.spice.profitmandi.common.util.Utils;
58
import com.spice.profitmandi.dao.entity.catalog.Item;
58
import com.spice.profitmandi.dao.entity.catalog.Item;
-
 
59
import com.spice.profitmandi.dao.entity.catalog.TagListing;
59
import com.spice.profitmandi.dao.entity.catalog.TagRanking;
60
import com.spice.profitmandi.dao.entity.catalog.TagRanking;
60
import com.spice.profitmandi.dao.entity.dtr.NotificationCampaigns;
61
import com.spice.profitmandi.dao.entity.dtr.NotificationCampaigns;
61
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
62
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
62
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
63
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
63
import com.spice.profitmandi.dao.entity.fofo.LiveDemoSerialNumber;
64
import com.spice.profitmandi.dao.entity.fofo.LiveDemoSerialNumber;
Line 65... Line 66...
65
import com.spice.profitmandi.dao.entity.transaction.NotifyItem;
66
import com.spice.profitmandi.dao.entity.transaction.NotifyItem;
66
import com.spice.profitmandi.dao.entity.transaction.NotifyOrder;
67
import com.spice.profitmandi.dao.entity.transaction.NotifyOrder;
67
import com.spice.profitmandi.dao.entity.transaction.Order;
68
import com.spice.profitmandi.dao.entity.transaction.Order;
68
import com.spice.profitmandi.dao.entity.user.User;
69
import com.spice.profitmandi.dao.entity.user.User;
69
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
70
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
-
 
71
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
70
import com.spice.profitmandi.dao.repository.catalog.TagRankingRepository;
72
import com.spice.profitmandi.dao.repository.catalog.TagRankingRepository;
71
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
73
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
72
import com.spice.profitmandi.dao.repository.dtr.Mongo;
74
import com.spice.profitmandi.dao.repository.dtr.Mongo;
73
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
75
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
74
import com.spice.profitmandi.dao.repository.fofo.CurrentInventorySnapshotRepository;
76
import com.spice.profitmandi.dao.repository.fofo.CurrentInventorySnapshotRepository;
Line 101... Line 103...
101
	@Autowired
103
	@Autowired
102
	@Qualifier("fofoInventoryService")
104
	@Qualifier("fofoInventoryService")
103
	private InventoryService inventoryService;
105
	private InventoryService inventoryService;
104
 
106
 
105
	@Autowired
107
	@Autowired
-
 
108
	TagListingRepository tagListingRepository;
-
 
109
 
-
 
110
	@Autowired
106
	private CurrentInventorySnapshotRepository currentInventorySnapshotRepository;
111
	private CurrentInventorySnapshotRepository currentInventorySnapshotRepository;
107
 
112
 
108
	@Autowired
113
	@Autowired
109
	private TagRankingRepository tagRankingRepository;
114
	private TagRankingRepository tagRankingRepository;
110
 
115
 
Line 530... Line 535...
530
 
535
 
531
			List<NotifyOrder> notify = notifyOrderRespository.selectByorderIds(orderIds);
536
			List<NotifyOrder> notify = notifyOrderRespository.selectByorderIds(orderIds);
532
			for (NotifyOrder notifyOrder : notify) {
537
			for (NotifyOrder notifyOrder : notify) {
533
				List<NotifyItem> notifyItems = notifyItemRepository.selectByNotifyId(notifyOrder.getNotifyId());
538
				List<NotifyItem> notifyItems = notifyItemRepository.selectByNotifyId(notifyOrder.getNotifyId());
534
				Iterator<NotifyItem> notifyItemsIterator = notifyItems.iterator();
539
				Iterator<NotifyItem> notifyItemsIterator = notifyItems.iterator();
535
				
540
 
536
				while(notifyItemsIterator.hasNext()) {
541
				while (notifyItemsIterator.hasNext()) {
537
					NotifyItem notifyItem = notifyItemsIterator.next();
542
					NotifyItem notifyItem = notifyItemsIterator.next();
538
					if (LocalDateTime.now().isAfter(notifyItem.getResponseTime())) {
543
					if (LocalDateTime.now().isAfter(notifyItem.getResponseTime())) {
539
						notifyItemsIterator.remove();
544
						notifyItemsIterator.remove();
540
					}
545
					}
541
				}
546
				}
542
				if(notifyItems.size() == 0) {
547
				if (notifyItems.size() == 0) {
543
					if(NotifyStatus.pending== notifyOrder.getStatus() ) {
548
					if (NotifyStatus.pending == notifyOrder.getStatus()) {
544
					notifyOrder.setStatus(NotifyStatus.rejected);
549
						notifyOrder.setStatus(NotifyStatus.rejected);
545
					}
550
					}
546
				}
551
				}
547
 
552
 
548
			}
553
			}
549
 
554
 
550
			Map<Integer, Optional<NotifyOrder>> notifyOrders = notifyOrderRespository.selectByorderIds(orderIds)
555
			Map<Integer, Optional<NotifyOrder>> notifyOrders = notifyOrderRespository.selectByorderIds(orderIds)
551
					.stream().collect(Collectors.groupingBy(NotifyOrder::getOrderId,
556
					.stream().collect(Collectors.groupingBy(NotifyOrder::getOrderId,
552
							Collectors.maxBy((x1, x2) -> x1.getId() - x2.getId())));
557
							Collectors.maxBy((x1, x2) -> x1.getId() - x2.getId())));
553
            
558
 
554
			Map<Integer, String> storeIdAndFofoIdMap = fofoStoreRepository.selectByRetailerIds(retailerIds).stream()
559
			Map<Integer, String> storeIdAndFofoIdMap = fofoStoreRepository.selectByRetailerIds(retailerIds).stream()
555
					.collect(Collectors.toMap(FofoStore::getId, FofoStore::getCode));
560
					.collect(Collectors.toMap(FofoStore::getId, FofoStore::getCode));
556
			List<com.spice.profitmandi.dao.entity.transaction.Order> pendingPaymentorder = orderRepository
561
			List<com.spice.profitmandi.dao.entity.transaction.Order> pendingPaymentorder = orderRepository
557
					.selectAllOrderDatesBetweenByStatus(LocalDateTime.now().minusDays(30), LocalDateTime.now(),
562
					.selectAllOrderDatesBetweenByStatus(LocalDateTime.now().minusDays(30), LocalDateTime.now(),
558
							OrderStatus.PAYMENT_PENDING);
563
							OrderStatus.PAYMENT_PENDING);
Line 618... Line 623...
618
 
623
 
619
	@RequestMapping(value = "/getNotifyItemColor", method = RequestMethod.GET)
624
	@RequestMapping(value = "/getNotifyItemColor", method = RequestMethod.GET)
620
	public String getNotifyItemColor(HttpServletRequest request, @RequestParam int catalogItemId,
625
	public String getNotifyItemColor(HttpServletRequest request, @RequestParam int catalogItemId,
621
			@RequestParam int itemId, Model model) throws ProfitMandiBusinessException {
626
			@RequestParam int itemId, Model model) throws ProfitMandiBusinessException {
622
 
627
 
623
		List<Item> availableColorItem = itemRepository.selectAllByCatalogItemId(catalogItemId);
628
		List<Item> availableColorItems = itemRepository.selectAllByCatalogItemId(catalogItemId);
-
 
629
		Iterator<Item> itemsIterator = availableColorItems.iterator();
-
 
630
 
-
 
631
		while (itemsIterator.hasNext()) {
-
 
632
			Item item = itemsIterator.next();
-
 
633
			TagListing itemTagListing = tagListingRepository.selectByItemId(item.getId());
-
 
634
 
-
 
635
			if (itemTagListing == null) {
-
 
636
				itemsIterator.remove();
-
 
637
 
-
 
638
			}
-
 
639
 
-
 
640
			else if (!itemTagListing.isActive()) {
-
 
641
				itemsIterator.remove();
-
 
642
 
-
 
643
			}
-
 
644
		}
624
 
645
 
625
		List<Order> inProcessselectedOrder = orderRepository.selectByItemIdOrderStatus(itemId,
646
		List<Order> inProcessselectedOrder = orderRepository.selectByItemIdOrderStatus(itemId,
626
				OrderStatus.SUBMITTED_FOR_PROCESSING);
647
				OrderStatus.SUBMITTED_FOR_PROCESSING);
627
		List<Integer> retailerIds = new ArrayList<>();
648
		List<Integer> retailerIds = new ArrayList<>();
628
 
649
 
Line 631... Line 652...
631
 
652
 
632
		}
653
		}
633
 
654
 
634
		Map<Integer, String> storeIdAndFofoIdMap = fofoStoreRepository.selectByRetailerIds(retailerIds).stream()
655
		Map<Integer, String> storeIdAndFofoIdMap = fofoStoreRepository.selectByRetailerIds(retailerIds).stream()
635
				.collect(Collectors.toMap(FofoStore::getId, FofoStore::getCode));
656
				.collect(Collectors.toMap(FofoStore::getId, FofoStore::getCode));
636
		LOGGER.info("item" + availableColorItem);
657
		LOGGER.info("item" + availableColorItems);
637
		LOGGER.info("inProcessselectedOrder" + inProcessselectedOrder);
-
 
638
		model.addAttribute("item", availableColorItem);
658
		model.addAttribute("item", availableColorItems);
639
		model.addAttribute("inProcessselectedOrder", inProcessselectedOrder);
659
		model.addAttribute("inProcessselectedOrder", inProcessselectedOrder);
640
		model.addAttribute("storeIdAndFofoIdMap", storeIdAndFofoIdMap);
660
		model.addAttribute("storeIdAndFofoIdMap", storeIdAndFofoIdMap);
641
 
661
 
642
		return "notify-order-modal";
662
		return "notify-order-modal";
643
	}
663
	}
Line 662... Line 682...
662
			notifyItemRepository.persist(notifyItem);
682
			notifyItemRepository.persist(notifyItem);
663
			LOGGER.info("notifyItem" + notifyItem);
683
			LOGGER.info("notifyItem" + notifyItem);
664
		}
684
		}
665
		for (NotifyOrderIdModel st : notifyOrderModel.getOrderIds()) {
685
		for (NotifyOrderIdModel st : notifyOrderModel.getOrderIds()) {
666
			List<NotifyOrder> existingOrder = notifyOrderRespository.selectByOrder(st.getOrderId());
686
			List<NotifyOrder> existingOrder = notifyOrderRespository.selectByOrder(st.getOrderId());
667
			if(!existingOrder.isEmpty()) {
687
			if (!existingOrder.isEmpty()) {
668
				LOGGER.info("existingOrder" + existingOrder);
688
				LOGGER.info("existingOrder" + existingOrder);
669
				for(NotifyOrder notifyOrder: existingOrder) {
689
				for (NotifyOrder notifyOrder : existingOrder) {
670
					if(NotifyStatus.pending == notifyOrder.getStatus()) {
690
					if (NotifyStatus.pending == notifyOrder.getStatus()) {
671
					 notifyOrder.setStatus(NotifyStatus.rejected);
691
						notifyOrder.setStatus(NotifyStatus.rejected);
-
 
692
					}
672
				}
693
				}
673
				}	
-
 
674
			}
694
			}
675
			NotifyOrder orderStatus = new NotifyOrder();
695
			NotifyOrder orderStatus = new NotifyOrder();
676
			orderStatus.setOrderId(st.getOrderId());
696
			orderStatus.setOrderId(st.getOrderId());
677
			orderStatus.setNotifyId(notifytimestamp.getId());
697
			orderStatus.setNotifyId(notifytimestamp.getId());
678
			orderStatus.setItemId(st.getOlditemId());
698
			orderStatus.setItemId(st.getOlditemId());
Line 696... Line 716...
696
				color.add(newItem.getColor());
716
				color.add(newItem.getColor());
697
			}
717
			}
698
 
718
 
699
			LOGGER.info("message" + item.getItemDescriptionNoColor() + "/" + item.getColor()
719
			LOGGER.info("message" + item.getItemDescriptionNoColor() + "/" + item.getColor()
700
					+ "is currently not in stock with Brand/ND. The current availability is in" + color);
720
					+ "is currently not in stock with Brand/ND. The current availability is in" + color);
701
			
721
 
702
			  NotificationCampaigns notification = new NotificationCampaigns();
722
			NotificationCampaigns notification = new NotificationCampaigns();
703
			  notification.setName("Notify Partner");
723
			notification.setName("Notify Partner");
704
			  
724
 
705
			  notification.setTitle("Notify Partner");
725
			notification.setTitle("Notify Partner");
706
			  
726
 
707
			  notification.setMessage(item.getItemDescriptionNoColor() +"/"+
727
			notification.setMessage(item.getItemDescriptionNoColor() + "/" + item.getColor()
708
			  item.getColor() +
-
 
709
			  "is currently not in stock with Brand/ND. The current availability is in" +
728
					+ "is currently not in stock with Brand/ND. The current availability is in" + color);
710
			  color); notification.setType("Url");
729
			notification.setType("Url");
711
			  notification.setUrl("http://app.profitmandi.com/pages/home/notifyOrder");
730
			notification.setUrl("http://app.profitmandi.com/pages/home/notifyOrder");
712
			  
731
 
713
			  notification.
-
 
714
			  setSql("SELECT distinct d1.user_id from devices d1 left join devices d2 on" +
732
			notification.setSql("SELECT distinct d1.user_id from devices d1 left join devices d2 on"
715
			  "(d1.imeinumber = d2.imeinumber and d1.created < d2.created) " +
733
					+ "(d1.imeinumber = d2.imeinumber and d1.created < d2.created) "
716
			  " where d2.id is null and d1.user_id = " +
734
					+ " where d2.id is null and d1.user_id = "
717
			  userAccountRepository.selectUserIdByRetailerId(order. getRetailerId()));
735
					+ userAccountRepository.selectUserIdByRetailerId(order.getRetailerId()));
718
			  notification.setExpiresat(LocalDateTime.now().plusDays(2).
736
			notification.setExpiresat(LocalDateTime.now().plusDays(2).toEpochSecond(ZoneOffset.UTC) * 1000);
719
			  toEpochSecond(ZoneOffset.UTC) * 1000); 
737
			notification.setStatus("active");
720
			  notification.setStatus("active");
738
			notification.setSmsprocessed(0);
721
			  notification.setSmsprocessed(0); notification.setNotification_processed(0);
739
			notification.setNotification_processed(0);
722
			  notification.setNotification_type("GENERAL_NOTIFICATION");
740
			notification.setNotification_type("GENERAL_NOTIFICATION");
723
			  mongoClient.persistNotificationCmpInfo(notification);
741
			mongoClient.persistNotificationCmpInfo(notification);
724
			 
742
 
725
		}
743
		}
726
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
744
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
727
		return "response";
745
		return "response";
728
	}
746
	}
729
 
747
 
Line 771... Line 789...
771
	 * sb.append("</tbody></table></body></html>"); return sb.toString(); }
789
	 * sb.append("</tbody></table></body></html>"); return sb.toString(); }
772
	 */
790
	 */
773
 
791
 
774
	@RequestMapping(value = "/getAllNotifyOrder", method = RequestMethod.GET)
792
	@RequestMapping(value = "/getAllNotifyOrder", method = RequestMethod.GET)
775
	public String getAllNotifyOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
793
	public String getAllNotifyOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
776
		List<NotifyOrder> notifyOrders= null;
794
		List<NotifyOrder> notifyOrders = null;
777
		List<com.spice.profitmandi.dao.entity.transaction.Order> inProcessorder = orderRepository
795
		List<com.spice.profitmandi.dao.entity.transaction.Order> inProcessorder = orderRepository
778
				.selectAllOrderBeforeTwoDaysByStatus(OrderStatus.SUBMITTED_FOR_PROCESSING);
796
				.selectAllOrderBeforeTwoDaysByStatus(OrderStatus.SUBMITTED_FOR_PROCESSING);
779
		
797
 
780
		List<Integer> orderIds = new ArrayList<>();
798
		List<Integer> orderIds = new ArrayList<>();
781
		 if(!inProcessorder.isEmpty()) {
799
		if (!inProcessorder.isEmpty()) {
782
			for (com.spice.profitmandi.dao.entity.transaction.Order order : inProcessorder) {
800
			for (com.spice.profitmandi.dao.entity.transaction.Order order : inProcessorder) {
783
				
801
 
784
				orderIds.add(order.getId());
802
				orderIds.add(order.getId());
785
 
803
 
786
			}	
804
			}
787
		 notifyOrders = notifyOrderRespository.selectByorderIds(orderIds);
805
			notifyOrders = notifyOrderRespository.selectByorderIds(orderIds);
788
		Set<Integer> oldItemIds = new HashSet<>();
806
			Set<Integer> oldItemIds = new HashSet<>();
789
		List<Integer> fofoIds = new ArrayList<>();
807
			List<Integer> fofoIds = new ArrayList<>();
790
		List<Integer> notifyIds = new ArrayList<>();
808
			List<Integer> notifyIds = new ArrayList<>();
791
		if (!notifyOrders.isEmpty()) {
809
			if (!notifyOrders.isEmpty()) {
792
			for (NotifyOrder notifyOrder : notifyOrders) {
810
				for (NotifyOrder notifyOrder : notifyOrders) {
793
				List<NotifyItem> notifyItems = notifyItemRepository.selectByNotifyId(notifyOrder.getNotifyId());
811
					List<NotifyItem> notifyItems = notifyItemRepository.selectByNotifyId(notifyOrder.getNotifyId());
794
				Iterator<NotifyItem> notifyItemsIterator = notifyItems.iterator();
812
					Iterator<NotifyItem> notifyItemsIterator = notifyItems.iterator();
795
				
813
 
796
				while(notifyItemsIterator.hasNext()) {
814
					while (notifyItemsIterator.hasNext()) {
797
					NotifyItem notifyItem = notifyItemsIterator.next();
815
						NotifyItem notifyItem = notifyItemsIterator.next();
798
					if (LocalDateTime.now().isAfter(notifyItem.getResponseTime())) {
816
						if (LocalDateTime.now().isAfter(notifyItem.getResponseTime())) {
799
						notifyItemsIterator.remove();
817
							notifyItemsIterator.remove();
-
 
818
						}
800
					}
819
					}
801
				}
-
 
802
				if(notifyItems.size() == 0) {
820
					if (notifyItems.size() == 0) {
803
					if(NotifyStatus.pending == notifyOrder.getStatus()) {
821
						if (NotifyStatus.pending == notifyOrder.getStatus()) {
804
					notifyOrder.setStatus(NotifyStatus.rejected);
822
							notifyOrder.setStatus(NotifyStatus.rejected);
805
					LOGGER.info("existingOrder" + notifyOrder);
823
							LOGGER.info("existingOrder" + notifyOrder);
-
 
824
						}
806
					}
825
					}
-
 
826
					oldItemIds.add(notifyOrder.getItemId());
-
 
827
					fofoIds.add(notifyOrder.getFofoId());
-
 
828
					notifyIds.add(notifyOrder.getNotifyId());
807
				}
829
				}
808
				oldItemIds.add(notifyOrder.getItemId());
-
 
809
				fofoIds.add(notifyOrder.getFofoId());
-
 
810
				notifyIds.add(notifyOrder.getNotifyId());
-
 
811
			}
-
 
812
 
-
 
813
			List<NotifyColorChange> notifyColorChanges = notifyColorChangeRepository.selectByNotifyId(notifyIds);
-
 
814
			Map<Integer, NotifyColorChange> notifyIdNotifyColorMap = this.notifyOrdersToNotifyId(notifyColorChanges);
-
 
815
			Map<Integer, CustomRetailer> fofoIdsAndRetailerName = retailerService.getFofoRetailers(fofoIds);
-
 
816
			Map<Integer, String> itemdescription = inventoryService.getItemIdDescriptionMap(oldItemIds);
-
 
817
 
830
 
-
 
831
				List<NotifyColorChange> notifyColorChanges = notifyColorChangeRepository.selectByNotifyId(notifyIds);
-
 
832
				Map<Integer, NotifyColorChange> notifyIdNotifyColorMap = this
-
 
833
						.notifyOrdersToNotifyId(notifyColorChanges);
-
 
834
				Map<Integer, CustomRetailer> fofoIdsAndRetailerName = retailerService.getFofoRetailers(fofoIds);
-
 
835
				Map<Integer, String> itemdescription = inventoryService.getItemIdDescriptionMap(oldItemIds);
-
 
836
 
818
			model.addAttribute("notifyOrders", notifyOrders);
837
				model.addAttribute("notifyOrders", notifyOrders);
819
			model.addAttribute("notifyIdNotifyColorMap", notifyIdNotifyColorMap);
838
				model.addAttribute("notifyIdNotifyColorMap", notifyIdNotifyColorMap);
820
			model.addAttribute("itemdescription", itemdescription);
839
				model.addAttribute("itemdescription", itemdescription);
821
			model.addAttribute("fofoIdsAndRetailerName", fofoIdsAndRetailerName);
840
				model.addAttribute("fofoIdsAndRetailerName", fofoIdsAndRetailerName);
822
 
841
 
-
 
842
			} else {
-
 
843
				model.addAttribute("notifyOrders", notifyOrders);
-
 
844
			}
823
		} else {
845
		} else {
824
			model.addAttribute("notifyOrders", notifyOrders);
846
			model.addAttribute("notifyOrders", notifyOrders);
825
		}}
847
		}
826
		 else {
-
 
827
			 model.addAttribute("notifyOrders", notifyOrders);
-
 
828
		 }
-
 
829
		return "notify_order";
848
		return "notify_order";
830
	}
849
	}
831
 
850
 
832
	private Map<Integer, NotifyColorChange> notifyOrdersToNotifyId(List<NotifyColorChange> notifyColorChanges) {
851
	private Map<Integer, NotifyColorChange> notifyOrdersToNotifyId(List<NotifyColorChange> notifyColorChanges) {
833
		Map<Integer, NotifyColorChange> notifyIdNotifyColorMap = new HashMap<>();
852
		Map<Integer, NotifyColorChange> notifyIdNotifyColorMap = new HashMap<>();