diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt index 9bcde5d..2fa8153 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt @@ -4,6 +4,7 @@ import com.ffii.core.response.RecordsRes import com.ffii.core.support.JdbcDao import com.ffii.core.utils.CriteriaArgsBuilder import com.ffii.core.utils.PagingUtils +import com.ffii.core.utils.ZebraPrinterUtil import com.ffii.fpsms.modules.master.entity.Items import com.ffii.fpsms.modules.master.service.ItemsService import com.ffii.fpsms.modules.master.web.models.MessageResponse @@ -12,16 +13,22 @@ import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderData import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderInfo import com.ffii.fpsms.modules.purchaseOrder.service.PurchaseOrderService import com.ffii.fpsms.modules.purchaseOrder.web.model.PagingRequest +import com.ffii.fpsms.modules.stock.service.StockInLineService +import com.ffii.fpsms.modules.stock.web.model.ExportQrCodeRequest import com.ffii.fpsms.modules.stock.web.model.SaveStockInLineRequest import jakarta.servlet.http.HttpServletRequest +import net.sf.jasperreports.engine.JasperExportManager +import net.sf.jasperreports.engine.JasperPrint import org.springframework.data.domain.Page import org.springframework.data.domain.PageRequest import org.springframework.web.bind.annotation.* +import java.io.File @RestController @RequestMapping("/po") class PurchaseOrderController( - private val purchaseOrderService: PurchaseOrderService + private val purchaseOrderService: PurchaseOrderService, + private val stockInLineService: StockInLineService ) { @GetMapping("/list") fun getPoList( @@ -46,9 +53,11 @@ class PurchaseOrderController( val fullList = purchaseOrderService.getPoList(criteriaArgs) val paginatedList = PagingUtils.getPaginatedList(fullList,pageSize, pageNum) + return RecordsRes(paginatedList, fullList.size) } + @GetMapping("/testing") fun testing(request: HttpServletRequest) { val criteriaArgs = CriteriaArgsBuilder.withRequest(request) @@ -62,6 +71,32 @@ class PurchaseOrderController( @GetMapping("/detail/{id}") // purchaseOrderId fun getDetailedPo(@PathVariable id: Long): Map { + + /* tested the sample printing function by a pdf file + // just get a pdf file for demo , it can be any files? didn't try pdf with pages or multi pdf files + val request = ExportQrCodeRequest( + stockInLineIds = listOf(1L) + ) + val pdf = stockInLineService.exportStockInLineQrcode(request) + val jasperPrint = pdf["report"] as JasperPrint + + // 1. Create a temporary file to save the PDF. + val tempPdfFile = File.createTempFile("print_job_", ".pdf") + + try { + + // 2. Export the JasperPrint to the temporary PDF file. + JasperExportManager.exportReportToPdfFile(jasperPrint, tempPdfFile.absolutePath) + + // 3. Call the utility function with the temporary file. + ZebraPrinterUtil.printPdfToZebra(tempPdfFile, "192.168.245.16", 9100) + + } finally { + // 4. Ensure the temporary file is deleted after the print job is sent. + tempPdfFile.delete() + } + */ + return purchaseOrderService.getDetailedPo(id) }