mirror of
				https://github.com/klmp200/PQT_Gestionnaire_vente_stock.git
				synced 2025-10-31 09:03:08 +00:00 
			
		
		
		
	Module Server : utilisation clss SaleContent dans process d'application d'une sale. Impl de ce process dans le StockService
This commit is contained in:
		| @@ -3,7 +3,8 @@ package com.pqt.server.module.sale; | ||||
| import com.pqt.core.entities.product.Product; | ||||
| import com.pqt.core.entities.sale.Sale; | ||||
| import com.pqt.server.module.stock.StockService; | ||||
| import com.pqt.server.utils.FileUtil; | ||||
| import com.pqt.server.tools.FileUtil; | ||||
| import com.pqt.server.tools.entities.SaleContent; | ||||
| import org.apache.commons.io.input.ReversedLinesFileReader; | ||||
|  | ||||
| import java.io.*; | ||||
| @@ -41,7 +42,7 @@ public class NoRevertFileSaleDao implements ISaleDao { | ||||
|             return -1; | ||||
|  | ||||
|         long saleId = nextSaleId; | ||||
|         stockService.applySale(sale.getProducts()); | ||||
|         stockService.applySale(new SaleContent(sale)); | ||||
|         logSale(sale, saleId); | ||||
|         generateNextSaleId(); | ||||
|         return saleId; | ||||
|   | ||||
| @@ -1,7 +1,8 @@ | ||||
| package com.pqt.server.module.stock; | ||||
|  | ||||
| import com.pqt.core.entities.product.Product; | ||||
| import com.pqt.server.utils.FileUtil; | ||||
| import com.pqt.server.tools.FileUtil; | ||||
| import com.pqt.server.tools.entities.SaleContent; | ||||
|  | ||||
| import java.io.*; | ||||
| import java.util.*; | ||||
| @@ -17,8 +18,7 @@ public class FileStockDao implements IStockDao { | ||||
|  | ||||
|     public FileStockDao() { | ||||
|         random = new Random(); | ||||
|         products = new HashMap<>(); | ||||
|         load(); | ||||
|         loadFromFile(); | ||||
|         generateNextProductId(); | ||||
|     } | ||||
|  | ||||
| @@ -82,8 +82,30 @@ public class FileStockDao implements IStockDao { | ||||
| 	} | ||||
|  | ||||
|     @Override | ||||
|     public void applySale(Map<Product, Integer> productAmounts) { | ||||
|         //TODO faire ça | ||||
|     public void applySale(SaleContent saleContent) throws IllegalArgumentException { | ||||
| 	    try { | ||||
|             saleContent.getProductList().forEach(product -> applyRecursiveStockRemoval(product, saleContent.getProductAmount(product))); | ||||
|         }catch (IllegalStateException e){ | ||||
| 	        loadFromFile(); | ||||
| 	        throw new IllegalArgumentException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void applyRecursiveStockRemoval(Product product, int amount)throws IllegalStateException{ | ||||
|         Product correspondingProduct = getProduct(product.getId()); | ||||
|         if(correspondingProduct!=null) { | ||||
|             correspondingProduct.setAmountSold(correspondingProduct.getAmountSold() + amount); | ||||
|             correspondingProduct.setAmountRemaining(correspondingProduct.getAmountRemaining() - amount); | ||||
|             correspondingProduct.getComponents().forEach(component -> applyRecursiveStockRemoval(component, amount)); | ||||
|         }else{ | ||||
|             StringBuffer sb = new StringBuffer("StockService>StockDao : Un produit vendu ne correspond pas à un produit connu : "); | ||||
|             sb.append(product.getId()).append(" - ").append(product.getName()).append("(").append(product.getCategory()).append(")"); | ||||
|             throw new IllegalStateException(sb.toString()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void loadFromFile() { | ||||
|         products = new HashMap<>(load()); | ||||
|     } | ||||
|  | ||||
|     private Map<Long, Product> load(){ | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| package com.pqt.server.module.stock; | ||||
|  | ||||
| import com.pqt.core.entities.product.Product; | ||||
| import com.pqt.server.tools.entities.SaleContent; | ||||
|  | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| @@ -18,5 +19,5 @@ public interface IStockDao { | ||||
|  | ||||
| 	public void modifyProduct(long id, Product product); | ||||
|  | ||||
| 	void applySale(Map<Product, Integer> productAmounts); | ||||
| 	void applySale(SaleContent productAmounts) throws IllegalArgumentException; | ||||
| } | ||||
|   | ||||
| @@ -3,6 +3,7 @@ package com.pqt.server.module.stock; | ||||
| import com.pqt.core.entities.product.Product; | ||||
| import com.pqt.core.entities.product.ProductUpdate; | ||||
| import com.pqt.server.exception.ServerQueryException; | ||||
| import com.pqt.server.tools.entities.SaleContent; | ||||
|  | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| @@ -25,7 +26,7 @@ public class StockService { | ||||
| 		return dao.getProduct(id); | ||||
| 	} | ||||
|  | ||||
| 	public void applySale(Map<Product, Integer> productAmounts) { | ||||
| 	public void applySale(SaleContent productAmounts) { | ||||
| 		dao.applySale(productAmounts); | ||||
| 	} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user