Commit c96170dd authored by rani0808's avatar rani0808

Rest API for Current hrs,mins and weekly orders count

parent 9e924f12
package com.nisum.omd; package com.nisum.omd;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
...@@ -74,11 +77,13 @@ public class OrderGenerator { ...@@ -74,11 +77,13 @@ public class OrderGenerator {
private Order getObjectData(Order orders) { private Order getObjectData(Order orders) {
LocalDateTime currentTime = LocalDateTime.now(); LocalDateTime currentTime = LocalDateTime.now();
Date currentDateTime = Date.from(currentTime.atZone( ZoneId.systemDefault()).toInstant());
order.setOrderNum(randomDataGenerator.generateOrderNumber()); order.setOrderNum(randomDataGenerator.generateOrderNumber());
order.setCustomerId(randomDataGenerator.generateCustomerId()); order.setCustomerId(randomDataGenerator.generateCustomerId());
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; // DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
String formattedDateTime = currentTime.format(formatter); // String formattedDateTime = currentTime.format(formatter);
order.setOrderDate(formattedDateTime); order.setOrderDate(currentDateTime);
order.setLineItem(randomDataGenerator.genetateLineItem(order.getLineItem())); order.setLineItem(randomDataGenerator.genetateLineItem(order.getLineItem()));
return order; return order;
} }
......
package com.nisum.omd.domain; package com.nisum.omd.domain;
import java.util.Date;
import java.util.Map; import java.util.Map;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -15,7 +16,7 @@ public class LineItem { ...@@ -15,7 +16,7 @@ public class LineItem {
private String productName; private String productName;
private String itemType; private String itemType;
private boolean shipChrgApplInd; private boolean shipChrgApplInd;
private String estimatedShipDate; private Date estimatedShipDate;
private Map<String,Object> linePriceInfo; private Map<String,Object> linePriceInfo;
private Map<String,Object> lineTax; private Map<String,Object> lineTax;
...@@ -68,10 +69,10 @@ public class LineItem { ...@@ -68,10 +69,10 @@ public class LineItem {
public void setShipChrgApplInd(boolean shipChrgApplInd) { public void setShipChrgApplInd(boolean shipChrgApplInd) {
this.shipChrgApplInd = shipChrgApplInd; this.shipChrgApplInd = shipChrgApplInd;
} }
public String getEstimatedShipDate() { public Date getEstimatedShipDate() {
return estimatedShipDate; return estimatedShipDate;
} }
public void setEstimatedShipDate(String estimatedShipDate) { public void setEstimatedShipDate(Date estimatedShipDate) {
this.estimatedShipDate = estimatedShipDate; this.estimatedShipDate = estimatedShipDate;
} }
public Map<String, Object> getLinePriceInfo() { public Map<String, Object> getLinePriceInfo() {
......
package com.nisum.omd.domain; package com.nisum.omd.domain;
import java.util.Date;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -9,7 +11,7 @@ public class Order { ...@@ -9,7 +11,7 @@ public class Order {
private String orderNum; private String orderNum;
private String orderDate; private Date orderDate;
private String currency; private String currency;
private String shipMethod; private String shipMethod;
private String customerId; private String customerId;
...@@ -45,11 +47,11 @@ public class Order { ...@@ -45,11 +47,11 @@ public class Order {
this.orderNum = orderNum; this.orderNum = orderNum;
} }
public String getOrderDate() { public Date getOrderDate() {
return orderDate; return orderDate;
} }
public void setOrderDate(String orderDate) { public void setOrderDate(Date orderDate) {
this.orderDate = orderDate; this.orderDate = orderDate;
} }
......
package com.nisum.omd.service; package com.nisum.omd.service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
...@@ -10,6 +11,7 @@ import org.springframework.stereotype.Component; ...@@ -10,6 +11,7 @@ import org.springframework.stereotype.Component;
import com.github.javafaker.Faker; import com.github.javafaker.Faker;
import com.nisum.omd.domain.LineItem; import com.nisum.omd.domain.LineItem;
import com.nisum.omd.domain.Order; import com.nisum.omd.domain.Order;
import java.time.temporal.ChronoUnit;
@Component @Component
...@@ -41,7 +43,8 @@ public class RandomDataGeneratorImpl implements RandomDataGenerator { ...@@ -41,7 +43,8 @@ public class RandomDataGeneratorImpl implements RandomDataGenerator {
int randomIndex = random.nextInt(productNames.size()); int randomIndex = random.nextInt(productNames.size());
String randomElement = productNames.get(randomIndex); String randomElement = productNames.get(randomIndex);
lineItem.setProductName(randomElement); lineItem.setProductName(randomElement);
lineItem.setEstimatedShipDate(order.getOrderDate()+5); Date weekBefore = Date.from(order.getOrderDate().toInstant().plus(5, ChronoUnit.DAYS));
lineItem.setEstimatedShipDate(weekBefore);
return lineItem; return lineItem;
} }
......
...@@ -28,7 +28,12 @@ ...@@ -28,7 +28,12 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId> <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId> <artifactId>spring-boot-starter-security</artifactId>
...@@ -39,12 +44,7 @@ ...@@ -39,12 +44,7 @@
<artifactId>jjwt</artifactId> <artifactId>jjwt</artifactId>
<version>0.9.1</version> <version>0.9.1</version>
</dependency> </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.security</groupId> <groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId> <artifactId>spring-security-test</artifactId>
......
package com.nisum.omd.controllers; package com.nisum.omd.controllers;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
...@@ -14,10 +15,13 @@ import com.nisum.omd.models.OrdersSummary; ...@@ -14,10 +15,13 @@ import com.nisum.omd.models.OrdersSummary;
import com.nisum.omd.models.WeeklyOrders; import com.nisum.omd.models.WeeklyOrders;
import com.nisum.omd.security.services.OrderService; import com.nisum.omd.security.services.OrderService;
import com.nisum.omd.security.services.UserDetailsImpl; 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.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
@CrossOrigin(origins = "*", maxAge = 3600) @CrossOrigin(origins = "*", maxAge = 3600)
...@@ -31,6 +35,8 @@ public class OrdersController { ...@@ -31,6 +35,8 @@ public class OrdersController {
@Autowired @Autowired
OrderService service; OrderService service;
@Autowired
OrdersSummaryService ordersSummaryService;
@GetMapping(value= "/getOrdersSummary", produces= "application/vnd.jcg.api.v1+json") @GetMapping(value= "/getOrdersSummary", produces= "application/vnd.jcg.api.v1+json")
public OrdersSummary getOrdersCount() public OrdersSummary getOrdersCount()
...@@ -72,7 +78,18 @@ public class OrdersController { ...@@ -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; package com.nisum.omd.controllers;
import com.nisum.omd.pojo.OrdersSummary; import java.time.LocalDate;
import com.nisum.omd.service.OrdersSummaryService; import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.nisum.omd.pojo.OrdersSummary;
import com.nisum.omd.service.OrdersSummaryService;
@RestController @RestController
@RequestMapping("api") @RequestMapping("api")
...@@ -17,12 +21,14 @@ public class OrdersSummaryController { ...@@ -17,12 +21,14 @@ public class OrdersSummaryController {
@GetMapping("/orderCount") @GetMapping("/orderCount")
public OrdersSummary getOrderSummary(){ public OrdersSummary getOrderSummary(){
OrdersSummary ordersSummary=ordersSummaryService.getOrderSummaryCount(); OrdersSummary ordersSummary=ordersSummaryService.getOrderSummaryCount();
return ordersSummary; return ordersSummary;
}
@GetMapping("/weeklyCount")
public Map<LocalDate, Long> getWeeklyOrderSummary(){
Map<LocalDate, Long> ordersSummary=ordersSummaryService.getOrderSummaryInWeek();
return ordersSummary;
} }
......
...@@ -14,7 +14,7 @@ public class BillingTo { ...@@ -14,7 +14,7 @@ public class BillingTo {
private String country; private String country;
private int mobileNum; private int mobileNum;
private String eMailID; private String eMailID;
private boolean residentialAddr; private boolean residentialAddr;
public String getFirstName() { public String getFirstName() {
return firstName; return firstName;
......
...@@ -2,9 +2,9 @@ package com.nisum.omd.dto; ...@@ -2,9 +2,9 @@ package com.nisum.omd.dto;
import lombok.Data; import lombok.Data;
import org.springframework.stereotype.Component;
import java.util.Map; import java.util.Map;
@Data @Data
public class LineItem { public class LineItem {
private String lineItemNumber; private String lineItemNumber;
......
package com.nisum.omd.dto; package com.nisum.omd.dto;
import lombok.Data; import lombok.Data;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
......
...@@ -9,8 +9,4 @@ public class OrderCharges { ...@@ -9,8 +9,4 @@ public class OrderCharges {
private String chargeCategory; private String chargeCategory;
private String chargeName; private String chargeName;
} }
...@@ -12,7 +12,4 @@ public class OrderTaxes { ...@@ -12,7 +12,4 @@ public class OrderTaxes {
private int taxPercentage; private int taxPercentage;
} }
...@@ -3,7 +3,6 @@ package com.nisum.omd.dto; ...@@ -3,7 +3,6 @@ package com.nisum.omd.dto;
import lombok.Data; import lombok.Data;
import java.util.Map; import java.util.Map;
@Data @Data
public class PaymentMethod { public class PaymentMethod {
private String paymentMethod; private String paymentMethod;
......
...@@ -8,5 +8,4 @@ import java.util.Map; ...@@ -8,5 +8,4 @@ import java.util.Map;
public class Promotions { public class Promotions {
private Map<String,Object> PromotionDetails; private Map<String,Object> PromotionDetails;
} }
...@@ -16,4 +16,4 @@ public class ShipTo { ...@@ -16,4 +16,4 @@ public class ShipTo {
private String eMailID; private String eMailID;
private boolean residentialAddr; private boolean residentialAddr;
} }
...@@ -9,6 +9,4 @@ public class ShippingInfo { ...@@ -9,6 +9,4 @@ public class ShippingInfo {
private int maxDaysToDeliver; private int maxDaysToDeliver;
private int minDaysToDeliver; private int minDaysToDeliver;
} }
...@@ -3,18 +3,59 @@ package com.nisum.omd.pojo; ...@@ -3,18 +3,59 @@ package com.nisum.omd.pojo;
import lombok.Data; import lombok.Data;
import java.util.Date;
import java.util.Map;
@Data @Data
public class OrdersSummary { public class OrdersSummary {
private Long orderCountInMinute; private Long orderCountInMinute;
private Long orderCountInHour; private Long orderCountInHour;
private Long orderCountInDay; private Long orderCountInDay;
private Integer totalCustomers; private Integer totalCustomers;
private String CurrentDate; private String CurrentDate;
private String currentHour; private String currentHour;
private String currentMinute; 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 { ...@@ -7,4 +7,18 @@ public class DynamicQuery {
private Long orderDateFrom; private Long orderDateFrom;
private Long orderDateTo; 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; package com.nisum.omd.repository;
import com.mongodb.client.DistinctIterable; import java.util.ArrayList;
import com.mongodb.client.MongoCollection; import java.util.List;
import com.mongodb.client.MongoCursor;
import com.nisum.omd.dto.Order;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.ArrayList; import com.mongodb.client.DistinctIterable;
import java.util.List; import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.nisum.omd.dto.Order;
@Repository @Repository
public class OrderRepositoryCustomImpl implements OrderRepositoryCustom { public class OrderRepositoryCustomImpl implements OrderRepositoryCustom {
......
package com.nisum.omd.repository; package com.nisum.omd.repository;
import com.nisum.omd.dto.Order;
import org.springframework.data.mongodb.repository.MongoRepository; 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; package com.nisum.omd.service;
import com.nisum.omd.pojo.OrdersSummary; import java.time.LocalDate;
import java.util.Date;
import java.util.Map; import java.util.Map;
import com.nisum.omd.pojo.OrdersSummary;
public interface OrdersSummaryService { public interface OrdersSummaryService {
OrdersSummary getOrderSummaryCount(); OrdersSummary getOrderSummaryCount();
Map<LocalDate,Long> getOrderSummaryInWeek();
} }
......
package com.nisum.omd.service; 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.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.Date;
import java.util.Map; 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 @Service
public class OrdersSummaryServiceImpl implements OrdersSummaryService { public class OrdersSummaryServiceImpl implements OrdersSummaryService {
@Autowired
MongoTemplate mongoTemplate;
@Autowired @Autowired
private OrdersSummaryRepository ordersSummaryRepository; private OrdersSummaryRepository ordersSummaryRepository;
...@@ -91,6 +100,57 @@ public class OrdersSummaryServiceImpl implements OrdersSummaryService { ...@@ -91,6 +100,57 @@ public class OrdersSummaryServiceImpl implements OrdersSummaryService {
return orderCount; 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(){ public OrdersSummary getOrderSummaryCount(){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd-YYYY"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd-YYYY");
LocalDateTime localTime = LocalDateTime.now(); LocalDateTime localTime = LocalDateTime.now();
...@@ -102,7 +162,6 @@ public class OrdersSummaryServiceImpl implements OrdersSummaryService { ...@@ -102,7 +162,6 @@ public class OrdersSummaryServiceImpl implements OrdersSummaryService {
ordersSummary.setCurrentMinute(LocalTime.of(localTime.getHour(), localTime.getMinute(),00).toString()); ordersSummary.setCurrentMinute(LocalTime.of(localTime.getHour(), localTime.getMinute(),00).toString());
ordersSummary.setCurrentHour(LocalTime.of(localTime.getHour(), 00,00).toString()); ordersSummary.setCurrentHour(LocalTime.of(localTime.getHour(), 00,00).toString());
ordersSummary.setCurrentDate(simpleDateFormat.format(new Date())); ordersSummary.setCurrentDate(simpleDateFormat.format(new Date()));
return ordersSummary; return ordersSummary;
} }
...@@ -111,5 +170,9 @@ public class OrdersSummaryServiceImpl implements OrdersSummaryService { ...@@ -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 mongodb-script-1=inserts.jnosql
# App Properties # App Properties
bezkoder.app.jwtSecret= bezKoderSecretKey bezkoder.app.jwtSecret= bezKoderSecretKey
bezkoder.app.jwtExpirationMs= 86400000 bezkoder.app.jwtExpirationMs= 86400000
server.port=9009 server.port=8082
\ No newline at end of file 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