WIP feature/listedArticles #15
|
@ -0,0 +1,32 @@
|
||||||
|
package org.hso.ecommerce.components;
|
||||||
|
|
||||||
|
import org.hso.ecommerce.entities.warehouse.Slot;
|
||||||
|
import org.hso.ecommerce.repos.warehouse.SlotRepository;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class SlotInitializer {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private final SlotRepository slotRepository = null;
|
||||||
|
|
||||||
|
// TODO: use values form cfg.
|
||||||
|
private final int NUM_SLOTS = 50;
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
|
public void init() {
|
||||||
|
for (int i = 1; i <= NUM_SLOTS; i++) {
|
||||||
|
if (!slotRepository.findBySlotNum(i).isPresent()) {
|
||||||
|
Slot slotAdded = new Slot();
|
||||||
|
slotAdded.slotNum = i;
|
||||||
|
slotRepository.save(slotAdded);
|
||||||
|
|
||||||
|
System.out.println("Added Slot " + i + " to DB");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -122,14 +122,14 @@ public class ShopCheckoutController {
|
||||||
expectedPrice,
|
expectedPrice,
|
||||||
Address.fromString(address),
|
Address.fromString(address),
|
||||||
PaymentMethod.fromCreditCarNumber(cardnumber),
|
PaymentMethod.fromCreditCarNumber(cardnumber),
|
||||||
bookingEntryRepository.getByUser(user).orElse(BookingAccountEntry.newUser(user)),
|
bookingEntryRepository.getByUser(user.id).orElse(BookingAccountEntry.newUser(user)),
|
||||||
bookingEntryRepository.getByVat().orElse(BookingAccountEntry.newVat()),
|
bookingEntryRepository.getByVat().orElse(BookingAccountEntry.newVat()),
|
||||||
bookingEntryRepository.getByMain().orElse(BookingAccountEntry.newMain())
|
bookingEntryRepository.getByMain().orElse(BookingAccountEntry.newMain())
|
||||||
);
|
);
|
||||||
|
|
||||||
for (ShoppingCart.ShoppingCartItem item : shoppingCart.getItems()) {
|
for (ShoppingCart.ShoppingCartItem item : shoppingCart.getItems()) {
|
||||||
Article article = articleRepository.findById(item.getArticleId()).get();
|
Article article = articleRepository.findById(item.getArticleId()).get();
|
||||||
action.addArticle(article, item.getAmount(), wbeseRepo.getByArticle(article));
|
action.addArticle(article, item.getAmount(), wbeseRepo.getByArticle(article.id));
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateOrderAction.Result result = action.finish();
|
CreateOrderAction.Result result = action.finish();
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
package org.hso.ecommerce.entities.warehouse;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name = "warehouse_slots")
|
||||||
|
public class Slot {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@Basic
|
||||||
|
public long id;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Column(unique = true)
|
||||||
|
public int slotNum;
|
||||||
|
}
|
|
@ -3,6 +3,7 @@ package org.hso.ecommerce.entities.warehouse;
|
||||||
import org.hso.ecommerce.entities.shop.Article;
|
import org.hso.ecommerce.entities.shop.Article;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "warehouse_booking_position_entries")
|
@Table(name = "warehouse_booking_position_entries")
|
||||||
|
@ -13,6 +14,7 @@ public class WarehouseBookingPositionSlotEntry {
|
||||||
@Basic
|
@Basic
|
||||||
public long id;
|
public long id;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
public Article article;
|
public Article article;
|
||||||
|
|
||||||
|
@ -20,7 +22,9 @@ public class WarehouseBookingPositionSlotEntry {
|
||||||
//public int newSumArticles;
|
//public int newSumArticles;
|
||||||
public int newSumSlot;
|
public int newSumSlot;
|
||||||
|
|
||||||
public int slot;
|
@NotNull
|
||||||
|
@ManyToOne
|
||||||
|
public Slot slot;
|
||||||
|
|
||||||
public WarehouseBookingPositionSlotEntry copyAddAmount(int amount) {
|
public WarehouseBookingPositionSlotEntry copyAddAmount(int amount) {
|
||||||
WarehouseBookingPositionSlotEntry e = new WarehouseBookingPositionSlotEntry();
|
WarehouseBookingPositionSlotEntry e = new WarehouseBookingPositionSlotEntry();
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package org.hso.ecommerce.repos.booking;
|
package org.hso.ecommerce.repos.booking;
|
||||||
|
|
||||||
import org.hso.ecommerce.entities.booking.BookingAccountEntry;
|
import org.hso.ecommerce.entities.booking.BookingAccountEntry;
|
||||||
import org.hso.ecommerce.entities.user.User;
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
@ -11,13 +10,13 @@ import java.util.Optional;
|
||||||
@Repository
|
@Repository
|
||||||
public interface BookingAccountEntryRepository extends JpaRepository<BookingAccountEntry, Long> {
|
public interface BookingAccountEntryRepository extends JpaRepository<BookingAccountEntry, Long> {
|
||||||
|
|
||||||
@Query("SELECT e FROM BookingAccountEntry e WHERE e.userAccount = :user ORDER BY e.id DESC")
|
@Query(value = "SELECT * FROM booking_account_entries as e WHERE e.user_account_id = :user ORDER BY e.id DESC LIMIT 1", nativeQuery = true)
|
||||||
Optional<BookingAccountEntry> getByUser(User user);
|
Optional<BookingAccountEntry> getByUser(Long user);
|
||||||
|
|
||||||
@Query("SELECT e FROM BookingAccountEntry e WHERE e.isMainAccount = 1 ORDER BY e.id DESC")
|
@Query(value = "SELECT * FROM booking_account_entries as e WHERE e.is_main_account = 1 ORDER BY e.id DESC LIMIT 1", nativeQuery = true)
|
||||||
Optional<BookingAccountEntry> getByMain();
|
Optional<BookingAccountEntry> getByMain();
|
||||||
|
|
||||||
@Query("SELECT e FROM BookingAccountEntry e WHERE e.isVATAccount = 1 ORDER BY e.id DESC")
|
@Query(value = "SELECT * FROM booking_account_entries as e WHERE e.isvataccount = 1 ORDER BY e.id DESC LIMIT 1", nativeQuery = true)
|
||||||
Optional<BookingAccountEntry> getByVat();
|
Optional<BookingAccountEntry> getByVat();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
package org.hso.ecommerce.repos.warehouse;
|
||||||
|
|
||||||
|
import org.hso.ecommerce.entities.warehouse.Slot;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface SlotRepository extends JpaRepository<Slot, Long> {
|
||||||
|
|
||||||
|
@Query("SELECT s FROM Slot s WHERE s.slotNum = :slotNum")
|
||||||
|
Optional<Slot> findBySlotNum(int slotNum);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
package org.hso.ecommerce.repos.warehouse;
|
package org.hso.ecommerce.repos.warehouse;
|
||||||
|
|
||||||
import org.hso.ecommerce.entities.shop.Article;
|
|
||||||
import org.hso.ecommerce.entities.warehouse.WarehouseBookingPositionSlotEntry;
|
import org.hso.ecommerce.entities.warehouse.WarehouseBookingPositionSlotEntry;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
@ -12,7 +11,8 @@ import java.util.List;
|
||||||
public interface WarehouseBookingPositionSlotEntryRepository extends JpaRepository<WarehouseBookingPositionSlotEntry, Long> {
|
public interface WarehouseBookingPositionSlotEntryRepository extends JpaRepository<WarehouseBookingPositionSlotEntry, Long> {
|
||||||
|
|
||||||
// TODO this is wrong. revisit.
|
// TODO this is wrong. revisit.
|
||||||
@Query("SELECT e FROM WarehouseBookingPositionSlotEntry e WHERE e.article = :article ORDER BY e.id DESC")
|
// @Query("SELECT e FROM WarehouseBookingPositionSlotEntry e, Slot s WHERE e.slot = s AND e.article = :article GROUP BY e.slot.slotNum HAVING max(e.id)")
|
||||||
List<WarehouseBookingPositionSlotEntry> getByArticle(Article article);
|
@Query(value = "Select e.id, e.article_id, e.new_sum_slot, e.slot_id from warehouse_booking_position_entries as e, warehouse_slots as s where e.slot_id = s.id AND e.article_id = :article GROUP BY s.slot_num HAVING max(e.id)", nativeQuery = true)
|
||||||
|
List<WarehouseBookingPositionSlotEntry> getByArticle(long article);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in New Issue