Rev 32907 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package com.smartdukaan.cron.scheduled.purchaseorder;import com.spice.profitmandi.dao.entity.inventory.Vendor;import com.spice.profitmandi.dao.entity.warehouse.Supplier;import com.spice.profitmandi.dao.entity.warehouse.WarehousePurchaseOrder;import com.spice.profitmandi.dao.repository.warehouse.SupplierRepository;import com.spice.profitmandi.dao.repository.warehouse.WarehousePurchaseOrderRepository;import in.shop2020.purchase.POStatus;import in.shop2020.purchase.PurchaseOrder;import org.apache.logging.log4j.core.config.Scheduled;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.transaction.annotation.Transactional;import java.time.LocalDate;import java.util.List;import java.util.Set;import java.util.stream.Collectors;@Component@Transactional(rollbackFor = Throwable.class)public class POScheduler {//Auto close non-internal vendor POs greater than seven days@AutowiredWarehousePurchaseOrderRepository warehousePurchaseOrderRepository;@AutowiredSupplierRepository supplierRepository;public void autoClosePurchaseOrders() {System.out.println("At autoclose pos");List<WarehousePurchaseOrder> warehousePurchaseOrderList = warehousePurchaseOrderRepository.selectAllByStatus(POStatus.READY);warehousePurchaseOrderList.addAll(warehousePurchaseOrderRepository.selectAllByStatus(POStatus.PARTIALLY_FULFILLED));//Also ignore internal posSet<Integer> internalSupplierIds = supplierRepository.selectAll().stream().filter(x->x.isInternal()).map(x->x.getId()).collect(Collectors.toSet());List<WarehousePurchaseOrder> posToClose = warehousePurchaseOrderList.stream().filter(x->!internalSupplierIds.contains(x.getSupplierId())).filter(x -> x.getCreatedAt().isBefore(LocalDate.now().minusDays(6).atStartOfDay())).collect(Collectors.toList());//Close internal POS in four daysposToClose.addAll(warehousePurchaseOrderList.stream().filter(x->internalSupplierIds.contains(x.getSupplierId())).filter(x->x.getCreatedAt().isBefore(LocalDate.now().minusDays(4).atStartOfDay())).collect(Collectors.toList()));for (WarehousePurchaseOrder warehousePurchaseOrder : posToClose) {//System.out.println(warehousePurchaseOrder);warehousePurchaseOrder.setStatus(POStatus.CLOSED);}}}