Commit d643ba93 authored by Ramakanth Dhane's avatar Ramakanth Dhane

Merge branch 'master' into 'master'

Master

See merge request !17
parents d35fafa7 c96170dd
package com.nisum.omd;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ThreadLocalRandom;
......@@ -74,11 +77,13 @@ public class OrderGenerator {
private Order getObjectData(Order orders) {
LocalDateTime currentTime = LocalDateTime.now();
Date currentDateTime = Date.from(currentTime.atZone( ZoneId.systemDefault()).toInstant());
order.setOrderNum(randomDataGenerator.generateOrderNumber());
order.setCustomerId(randomDataGenerator.generateCustomerId());
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
String formattedDateTime = currentTime.format(formatter);
order.setOrderDate(formattedDateTime);
// DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
// String formattedDateTime = currentTime.format(formatter);
order.setOrderDate(currentDateTime);
order.setLineItem(randomDataGenerator.genetateLineItem(order.getLineItem()));
return order;
}
......
package com.nisum.omd.domain;
import java.util.Date;
import java.util.Map;
import org.springframework.stereotype.Component;
......@@ -15,7 +16,7 @@ public class LineItem {
private String productName;
private String itemType;
private boolean shipChrgApplInd;
private String estimatedShipDate;
private Date estimatedShipDate;
private Map<String,Object> linePriceInfo;
private Map<String,Object> lineTax;
......@@ -68,10 +69,10 @@ public class LineItem {
public void setShipChrgApplInd(boolean shipChrgApplInd) {
this.shipChrgApplInd = shipChrgApplInd;
}
public String getEstimatedShipDate() {
public Date getEstimatedShipDate() {
return estimatedShipDate;
}
public void setEstimatedShipDate(String estimatedShipDate) {
public void setEstimatedShipDate(Date estimatedShipDate) {
this.estimatedShipDate = estimatedShipDate;
}
public Map<String, Object> getLinePriceInfo() {
......
package com.nisum.omd.domain;
import java.util.Date;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
......@@ -9,7 +11,7 @@ public class Order {
private String orderNum;
private String orderDate;
private Date orderDate;
private String currency;
private String shipMethod;
private String customerId;
......@@ -45,11 +47,11 @@ public class Order {
this.orderNum = orderNum;
}
public String getOrderDate() {
public Date getOrderDate() {
return orderDate;
}
public void setOrderDate(String orderDate) {
public void setOrderDate(Date orderDate) {
this.orderDate = orderDate;
}
......
package com.nisum.omd.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
......@@ -10,6 +11,7 @@ import org.springframework.stereotype.Component;
import com.github.javafaker.Faker;
import com.nisum.omd.domain.LineItem;
import com.nisum.omd.domain.Order;
import java.time.temporal.ChronoUnit;
@Component
......@@ -41,7 +43,8 @@ public class RandomDataGeneratorImpl implements RandomDataGenerator {
int randomIndex = random.nextInt(productNames.size());
String randomElement = productNames.get(randomIndex);
lineItem.setProductName(randomElement);
lineItem.setEstimatedShipDate(order.getOrderDate()+5);
Date weekBefore = Date.from(order.getOrderDate().toInstant().plus(5, ChronoUnit.DAYS));
lineItem.setEstimatedShipDate(weekBefore);
return lineItem;
}
......
No preview for this file type
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
......@@ -16,6 +16,7 @@
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
<dependencies>
......@@ -27,7 +28,12 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
......
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
package com.nisum.omd.controllers;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
......@@ -14,10 +15,13 @@ import com.nisum.omd.models.OrdersSummary;
import com.nisum.omd.models.WeeklyOrders;
import com.nisum.omd.security.services.OrderService;
import com.nisum.omd.security.services.UserDetailsImpl;
import com.nisum.omd.service.OrdersSummaryService;
import com.nisum.omd.pojo.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@CrossOrigin(origins = "*", maxAge = 3600)
......@@ -31,6 +35,8 @@ public class OrdersController {
@Autowired
OrderService service;
@Autowired
OrdersSummaryService ordersSummaryService;
@GetMapping(value= "/getOrdersSummary", produces= "application/vnd.jcg.api.v1+json")
public OrdersSummary getOrdersCount()
......@@ -72,7 +78,18 @@ public class OrdersController {
}
@GetMapping("/orderCount")
public com.nisum.omd.pojo.OrdersSummary getOrderSummary(){
com.nisum.omd.pojo.OrdersSummary ordersSummary=ordersSummaryService.getOrderSummaryCount();
return ordersSummary;
}
@GetMapping("/weeklyCount")
public Map<LocalDate, Long> getWeeklyOrderSummary(){
Map<LocalDate, Long> ordersSummary=ordersSummaryService.getOrderSummaryInWeek();
return ordersSummary;
}
......
package com.nisum.omd.controllers;
import java.time.LocalDate;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.nisum.omd.pojo.OrdersSummary;
import com.nisum.omd.service.OrdersSummaryService;
@RestController
@RequestMapping("api")
public class OrdersSummaryController {
@Autowired
OrdersSummaryService ordersSummaryService;
@GetMapping("/orderCount")
public OrdersSummary getOrderSummary(){
OrdersSummary ordersSummary=ordersSummaryService.getOrderSummaryCount();
return ordersSummary;
}
@GetMapping("/weeklyCount")
public Map<LocalDate, Long> getWeeklyOrderSummary(){
Map<LocalDate, Long> ordersSummary=ordersSummaryService.getOrderSummaryInWeek();
return ordersSummary;
}
}
package com.nisum.omd.dto;
import lombok.Data;
@Data
public class BillingTo {
private String firstName;
private String lastName;
private String addressLine1;
private String city;
private String state;
private String zipCode;
private String country;
private int mobileNum;
private String eMailID;
private boolean residentialAddr;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getAddressLine1() {
return addressLine1;
}
public void setAddressLine1(String addressLine1) {
this.addressLine1 = addressLine1;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getZipCode() {
return zipCode;
}
public void setZipCode(String zipCode) {
this.zipCode = zipCode;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public int getMobileNum() {
return mobileNum;
}
public void setMobileNum(int mobileNum) {
this.mobileNum = mobileNum;
}
public String geteMailID() {
return eMailID;
}
public void seteMailID(String eMailID) {
this.eMailID = eMailID;
}
public boolean isResidentialAddr() {
return residentialAddr;
}
public void setResidentialAddr(boolean residentialAddr) {
this.residentialAddr = residentialAddr;
}
}
package com.nisum.omd.dto;
import lombok.Data;
import org.springframework.stereotype.Component;
import java.util.Map;
@Data
public class LineItem {
private String lineItemNumber;
private String skuNumber;
private String itemColorDesc;
private String size;
private String orderedQty;
private String productName;
private String itemType;
private boolean shipChrgApplInd;
private String estimatedShipDate;
private Map<String,Object> linePriceInfo;
private Map<String,Object> lineTax;
}
package com.nisum.omd.dto;
import lombok.Data;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.Date;
@Data
@Document(collection = "orders")
public class Order {
@Id
private String id;
private String orderNum;
private Date orderDate;
private String currency;
private String shipMethod;
private String customerId;
private String customerType;
private String gift;
private Promotions promotions;
private LineItem lineItem;
private BillingTo billingTo;
private OrderCharges orderCharges;
private OrderTaxes orderTaxes;
private ShippingInfo shippingInfo;
private ShipTo shipTo;
private PaymentMethod paymentMethod;
}
package com.nisum.omd.dto;
import lombok.Data;
@Data
public class OrderCharges {
private float chargeAmount;
private String chargeCategory;
private String chargeName;
}
package com.nisum.omd.dto;
import lombok.Data;
@Data
public class OrderTaxes {
private String chargeCategory;
private String taxName;
private float tax;
private String taxCode;
private int taxPercentage;
}
package com.nisum.omd.dto;
import lombok.Data;
import java.util.Map;
@Data
public class PaymentMethod {
private String paymentMethod;
private String creditCardNo;
private String creditCardType;
private String displayCreditCardNo;
private String paymentStatus;
private Map<String,Object> paymentDetail;
}
package com.nisum.omd.dto;
import lombok.Data;
import java.util.Map;
@Data
public class Promotions {
private Map<String,Object> PromotionDetails;
}
package com.nisum.omd.dto;
import lombok.Data;
@Data
public class ShipTo {
private String firstName;
private String lastName;
private String addressLine1;
private String city;
private String state;
private String zipCode;
private String country;
private int mobileNum;
private String eMailID;
private boolean residentialAddr;
}
package com.nisum.omd.dto;
import lombok.Data;
@Data
public class ShippingInfo {
private Boolean vaildShipTo;
private int maxDaysToDeliver;
private int minDaysToDeliver;
}
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
package com.nisum.omd.pojo;
import lombok.Data;
@Data
public class OrdersSummary {
private Long orderCountInMinute;
private Long orderCountInHour;
private Long orderCountInDay;
private Integer totalCustomers;
private String CurrentDate;
private String currentHour;
private String currentMinute;
public Long getOrderCountInMinute() {
return orderCountInMinute;
}
public void setOrderCountInMinute(Long orderCountInMinute) {
this.orderCountInMinute = orderCountInMinute;
}
public Long getOrderCountInHour() {
return orderCountInHour;
}
public void setOrderCountInHour(Long orderCountInHour) {
this.orderCountInHour = orderCountInHour;
}
public Long getOrderCountInDay() {
return orderCountInDay;
}
public void setOrderCountInDay(Long orderCountInDay) {
this.orderCountInDay = orderCountInDay;
}
public Integer getTotalCustomers() {
return totalCustomers;
}
public void setTotalCustomers(Integer totalCustomers) {
this.totalCustomers = totalCustomers;
}
public String getCurrentDate() {
return CurrentDate;
}
public void setCurrentDate(String currentDate) {
CurrentDate = currentDate;
}
public String getCurrentHour() {
return currentHour;
}
public void setCurrentHour(String currentHour) {
this.currentHour = currentHour;
}
public String getCurrentMinute() {
return currentMinute;
}
public void setCurrentMinute(String currentMinute) {
this.currentMinute = currentMinute;
}
}
package com.nisum.omd.repository;
import lombok.Data;
@Data
public class DynamicQuery {
private Long orderDateFrom;
private Long orderDateTo;
public Long getOrderDateFrom() {
return orderDateFrom;
}
public void setOrderDateFrom(Long orderDateFrom) {
this.orderDateFrom = orderDateFrom;
}
public Long getOrderDateTo() {
return orderDateTo;
}
public void setOrderDateTo(Long orderDateTo) {
this.orderDateTo = orderDateTo;
}
}
package com.nisum.omd.repository;
import java.util.List;
public interface OrderRepositoryCustom {
Long query(DynamicQuery dynamicQuery);
List<String> queryCustomerCount();
}
package com.nisum.omd.repository;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository;
import com.mongodb.client.DistinctIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.nisum.omd.dto.Order;
@Repository
public class OrderRepositoryCustomImpl implements OrderRepositoryCustom {
private final MongoTemplate mongoTemplate;
@Autowired
public OrderRepositoryCustomImpl(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@Override
public Long query(DynamicQuery dynamicQuery) {
final Query query = new Query();
final List<Criteria> criteria = new ArrayList<>();
if(dynamicQuery.getOrderDateFrom() != null) {
criteria.add(Criteria.where("orderDate").gte(dynamicQuery.getOrderDateFrom()));
}
if(dynamicQuery.getOrderDateTo() != null) {
criteria.add(Criteria.where("orderDate").lte(dynamicQuery.getOrderDateTo()));
}
if(!criteria.isEmpty()) {
query.addCriteria(new Criteria().andOperator(criteria.toArray(new Criteria[criteria.size()])));
}
long OrderCount = mongoTemplate.count(query, Order.class);;
List<Order> orderList = mongoTemplate.find(query, Order.class);
return OrderCount;
}
public List<String> queryCustomerCount() {
List<String> categoryList = new ArrayList<>();
MongoCollection mongoCollection = mongoTemplate.getCollection("orders");
DistinctIterable distinctIterable = mongoCollection.distinct("customerId",String.class);
MongoCursor cursor = distinctIterable.iterator();
while (cursor.hasNext()) {
String category = (String)cursor.next();
categoryList.add(category);
}
return categoryList;
}
}
package com.nisum.omd.repository;
import org.springframework.data.mongodb.repository.MongoRepository;
import com.nisum.omd.dto.Order;
public interface OrdersSummaryRepository extends MongoRepository<Order, String>,OrderRepositoryCustom {
}
package com.nisum.omd.service;
import java.time.LocalDate;
import java.util.Map;
import com.nisum.omd.pojo.OrdersSummary;
public interface OrdersSummaryService {
OrdersSummary getOrderSummaryCount();
Map<LocalDate,Long> getOrderSummaryInWeek();
}
package com.nisum.omd.service;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.Map;
import java.util.TreeMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;
import com.nisum.omd.pojo.OrdersSummary;
import com.nisum.omd.repository.DynamicQuery;
import com.nisum.omd.repository.OrdersSummaryRepository;
@Service
public class OrdersSummaryServiceImpl implements OrdersSummaryService {
@Autowired
MongoTemplate mongoTemplate;
@Autowired
private OrdersSummaryRepository ordersSummaryRepository;
private Long orderCountInMinute(){
LocalDateTime localTime = LocalDateTime.now();
LocalTime fromMin = LocalTime.of(localTime.getHour(), localTime.getMinute(),00);
LocalTime toMin = LocalTime.of(localTime.getHour(), localTime.getMinute(),59);
Instant instant = fromMin .atDate(LocalDate.now()).
atZone(ZoneId.systemDefault()).toInstant();
Date time1 = Date.from(instant);
Long fromMinute=time1.getTime();
Instant instant2 = toMin .atDate(LocalDate.now()).
atZone(ZoneId.systemDefault()).toInstant();
Date time2 = Date.from(instant2);
Long toMinute=time2.getTime();
DynamicQuery dynamicQuery = new DynamicQuery();
dynamicQuery.setOrderDateFrom(fromMinute);
dynamicQuery.setOrderDateTo(toMinute);
Long orderCount = ordersSummaryRepository.query(dynamicQuery);
return orderCount;
}
private Long orderCountInHour(){
LocalDateTime localTime = LocalDateTime.now();
LocalTime fromHr = LocalTime.of(localTime.getHour(), 00,00);
LocalTime toHr = LocalTime.of(localTime.getHour(), 59,59);
Instant instant = fromHr.atDate(LocalDate.now()).
atZone(ZoneId.systemDefault()).toInstant();
Date time1 = Date.from(instant);
Long fromHour=time1.getTime();
Instant instant2 = toHr.atDate(LocalDate.now()).
atZone(ZoneId.systemDefault()).toInstant();
Date time2 = Date.from(instant2);
Long toHour=time2.getTime();
DynamicQuery dynamicQuery = new DynamicQuery();
dynamicQuery.setOrderDateFrom(fromHour);
dynamicQuery.setOrderDateTo(toHour);
Long orderCount = ordersSummaryRepository.query(dynamicQuery);
return orderCount;
}
private Long orderCountInDay(){
LocalTime fromdt = LocalTime.of(00, 00,00);
LocalTime todt = LocalTime.of(23, 59,59);
Instant instant = fromdt.atDate(LocalDate.now()).
atZone(ZoneId.systemDefault()).toInstant();
Date time1 = Date.from(instant);
Long fromDate=time1.getTime();
Instant instant2 = todt.atDate(LocalDate.now()).
atZone(ZoneId.systemDefault()).toInstant();
Date time2 = Date.from(instant2);
Long toDate=time2.getTime();
DynamicQuery dynamicQuery = new DynamicQuery();
dynamicQuery.setOrderDateFrom(fromDate);
dynamicQuery.setOrderDateTo(toDate);
Long orderCount = ordersSummaryRepository.query(dynamicQuery);
return orderCount;
}
private Long toDate() {
LocalTime todt = LocalTime.of(23, 59,59);
Instant instant2 = todt.atDate(LocalDate.now()).
atZone(ZoneId.systemDefault()).toInstant();
Date time2 = Date.from(instant2);
Long toDate=time2.getTime();
return toDate;
}
private Long fromDate() {
LocalTime fromdt = LocalTime.of(00, 00,00);
Instant instant = fromdt.atDate(LocalDate.now().minusDays(6)).
atZone(ZoneId.systemDefault()).toInstant();
Date time1 = Date.from(instant);
Long fromDate=time1.getTime();
return fromDate;
}
private Map<LocalDate, Long> orderCountInCustomDate(){
Integer weekCount = 6;
TreeMap<LocalDate, Long> hm = new TreeMap<>();
for(int i=weekCount; i >=0; i--) {
LocalTime fromdt = LocalTime.of(00, 00,00);
LocalTime todt = LocalTime.of(23, 59,59);
Instant instant = fromdt.atDate(LocalDate.now().minusDays(i)).
atZone(ZoneId.systemDefault()).toInstant();
Date time1 = Date.from(instant);
Long fromDate=time1.getTime();
Instant instant2 = todt.atDate(LocalDate.now().minusDays(i)).
atZone(ZoneId.systemDefault()).toInstant();
Date time2 = Date.from(instant2);
Long toDate=time2.getTime();
DynamicQuery dynamicQuery = new DynamicQuery();
dynamicQuery.setOrderDateFrom(fromDate);
dynamicQuery.setOrderDateTo(toDate);
Long orderCount = ordersSummaryRepository.query(dynamicQuery);
LocalDate formattedFromDate =
Instant.ofEpochMilli(fromDate).atZone(ZoneId.systemDefault()).toLocalDate();
hm.put(formattedFromDate, orderCount);
}
return hm;
}
public OrdersSummary getOrderSummaryCount(){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd-YYYY");
LocalDateTime localTime = LocalDateTime.now();
OrdersSummary ordersSummary=new OrdersSummary();
ordersSummary.setOrderCountInMinute(this.orderCountInMinute());
ordersSummary.setOrderCountInHour(this.orderCountInHour());
ordersSummary.setOrderCountInDay(this.orderCountInDay());
ordersSummary.setTotalCustomers(ordersSummaryRepository.queryCustomerCount().size());
ordersSummary.setCurrentMinute(LocalTime.of(localTime.getHour(), localTime.getMinute(),00).toString());
ordersSummary.setCurrentHour(LocalTime.of(localTime.getHour(), 00,00).toString());
ordersSummary.setCurrentDate(simpleDateFormat.format(new Date()));
return ordersSummary;
}
@Override
public Map<LocalDate, Long> getOrderSummaryInWeek() {
return orderCountInCustomDate();
}
}
spring.data.mongodb.database=omd_dashboard_db
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
mongodb-script-1=inserts.jnosql
# App Properties
bezkoder.app.jwtSecret= bezKoderSecretKey
bezkoder.app.jwtExpirationMs= 86400000
server.port=9009
\ No newline at end of file
server.port=8082
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=Orders
\ No newline at end of file
File mode changed from 100644 to 100755
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment