Commit c96170dd authored by rani0808's avatar rani0808

Rest API for Current hrs,mins and weekly orders count

parent 9e924f12
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;
}
......
......@@ -28,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>
......@@ -39,12 +44,7 @@
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
......
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 com.nisum.omd.pojo.OrdersSummary;
import com.nisum.omd.service.OrdersSummaryService;
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")
......@@ -17,12 +21,14 @@ public class OrdersSummaryController {
@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;
}
......
......@@ -14,7 +14,7 @@ public class BillingTo {
private String country;
private int mobileNum;
private String eMailID;
private boolean residentialAddr;
private boolean residentialAddr;
public String getFirstName() {
return firstName;
......
......@@ -2,9 +2,9 @@ package com.nisum.omd.dto;
import lombok.Data;
import org.springframework.stereotype.Component;
import java.util.Map;
@Data
public class LineItem {
private String lineItemNumber;
......
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;
......
......@@ -9,8 +9,4 @@ public class OrderCharges {
private String chargeCategory;
private String chargeName;
}
......@@ -12,7 +12,4 @@ public class OrderTaxes {
private int taxPercentage;
}
......@@ -3,7 +3,6 @@ package com.nisum.omd.dto;
import lombok.Data;
import java.util.Map;
@Data
public class PaymentMethod {
private String paymentMethod;
......
......@@ -8,5 +8,4 @@ import java.util.Map;
public class Promotions {
private Map<String,Object> PromotionDetails;
}
......@@ -16,4 +16,4 @@ public class ShipTo {
private String eMailID;
private boolean residentialAddr;
}
}
......@@ -9,6 +9,4 @@ public class ShippingInfo {
private int maxDaysToDeliver;
private int minDaysToDeliver;
}
......@@ -3,18 +3,59 @@ package com.nisum.omd.pojo;
import lombok.Data;
import java.util.Date;
import java.util.Map;
@Data
public class OrdersSummary {
private Long orderCountInMinute;
private Long orderCountInHour;
private Long orderCountInDay;
private Integer totalCustomers;
private Integer totalCustomers;
private String CurrentDate;
private String currentHour;
private String currentMinute;
private Map<Date,Integer> weeklyOrders;
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;
}
}
......@@ -7,4 +7,18 @@ 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 com.mongodb.client.DistinctIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.nisum.omd.dto.Order;
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 java.util.ArrayList;
import java.util.List;
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 {
......
package com.nisum.omd.repository;
import com.nisum.omd.dto.Order;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface OrdersSummaryRepository extends MongoRepository<Order, String>, OrderRepositoryCustom {
import com.nisum.omd.dto.Order;
public interface OrdersSummaryRepository extends MongoRepository<Order, String>,OrderRepositoryCustom {
}
package com.nisum.omd.service;
import com.nisum.omd.pojo.OrdersSummary;
import java.util.Date;
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 com.nisum.omd.pojo.OrdersSummary;
import com.nisum.omd.repository.DynamicQuery;
import com.nisum.omd.repository.OrdersSummaryRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.time.*;
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;
......@@ -91,6 +100,57 @@ public class OrdersSummaryServiceImpl implements OrdersSummaryService {
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();
......@@ -102,7 +162,6 @@ public class OrdersSummaryServiceImpl implements OrdersSummaryService {
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;
}
......@@ -111,5 +170,9 @@ public class OrdersSummaryServiceImpl implements OrdersSummaryService {
@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
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