diff --git a/pom.xml b/pom.xml
index 0536c6e..ce75179 100644
--- a/pom.xml
+++ b/pom.xml
@@ -59,6 +59,17 @@
5.3.9.RELEASE
+
+ com.google.zxing
+ core
+ 3.3.0
+
+
+ com.google.zxing
+ javase
+ 3.3.0
+
+
io.jsonwebtoken
jjwt
diff --git a/src/main/java/com/iconplus/smartproc/controller/PrintController.java b/src/main/java/com/iconplus/smartproc/controller/PrintController.java
index a02741a..b99d658 100644
--- a/src/main/java/com/iconplus/smartproc/controller/PrintController.java
+++ b/src/main/java/com/iconplus/smartproc/controller/PrintController.java
@@ -1,8 +1,11 @@
package com.iconplus.smartproc.controller;
+import com.iconplus.smartproc.helper.model.EmptyResponse;
import com.iconplus.smartproc.model.request.PrintDrpRequest;
import com.iconplus.smartproc.model.request.RolesRequest;
import com.iconplus.smartproc.model.response.GetListPrintDrpResponse;
+import com.iconplus.smartproc.model.response.PrintDrpResponse;
+import com.iconplus.smartproc.service.print.DrpPrintExecutionService;
import com.iconplus.smartproc.service.print.GetListPrintDrpService;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
@@ -14,9 +17,12 @@ import org.springframework.web.bind.annotation.*;
public class PrintController {
private final GetListPrintDrpService getListPrintDrpService;
+ private final DrpPrintExecutionService drpPrintExecutionService;
- public PrintController(GetListPrintDrpService getListPrintDrpService) {
+ public PrintController(GetListPrintDrpService getListPrintDrpService,
+ DrpPrintExecutionService drpPrintExecutionService) {
this.getListPrintDrpService = getListPrintDrpService;
+ this.drpPrintExecutionService = drpPrintExecutionService;
}
@@ -33,5 +39,10 @@ public class PrintController {
}
+ @PostMapping("execution")
+ public EmptyResponse drpPrintExecution(@RequestBody PrintDrpRequest printDrpRequest) throws Exception {
+ return drpPrintExecutionService.execute(printDrpRequest);
+ }
+
}
diff --git a/src/main/java/com/iconplus/smartproc/helper/service/BaseService.java b/src/main/java/com/iconplus/smartproc/helper/service/BaseService.java
index 58f5b62..3dc774b 100644
--- a/src/main/java/com/iconplus/smartproc/helper/service/BaseService.java
+++ b/src/main/java/com/iconplus/smartproc/helper/service/BaseService.java
@@ -8,5 +8,5 @@ import java.io.FileNotFoundException;
import java.io.IOException;
public interface BaseService {
- V execute(T input) throws IOException;
+ V execute(T input) throws Exception;
}
diff --git a/src/main/java/com/iconplus/smartproc/model/projection/DrpApprovalView.java b/src/main/java/com/iconplus/smartproc/model/projection/DrpApprovalView.java
index caf7f22..53a9c23 100644
--- a/src/main/java/com/iconplus/smartproc/model/projection/DrpApprovalView.java
+++ b/src/main/java/com/iconplus/smartproc/model/projection/DrpApprovalView.java
@@ -47,4 +47,7 @@ public interface DrpApprovalView {
String getLevel();
void setLevel(String level);
+ Long getApproverUserId();
+ void setApproverUserId(Long approverUserId);
+
}
diff --git a/src/main/java/com/iconplus/smartproc/model/request/PrintDrpRequest.java b/src/main/java/com/iconplus/smartproc/model/request/PrintDrpRequest.java
index ff07db5..da471e8 100644
--- a/src/main/java/com/iconplus/smartproc/model/request/PrintDrpRequest.java
+++ b/src/main/java/com/iconplus/smartproc/model/request/PrintDrpRequest.java
@@ -13,5 +13,6 @@ import org.springframework.data.domain.Pageable;
@NoArgsConstructor
public class PrintDrpRequest extends BaseRequest {
+ private Long drpId;
private transient Pageable pageable;
}
diff --git a/src/main/java/com/iconplus/smartproc/repository/DrpApprovalRepository.java b/src/main/java/com/iconplus/smartproc/repository/DrpApprovalRepository.java
index 0fbb868..7e28e22 100644
--- a/src/main/java/com/iconplus/smartproc/repository/DrpApprovalRepository.java
+++ b/src/main/java/com/iconplus/smartproc/repository/DrpApprovalRepository.java
@@ -27,23 +27,26 @@ public interface DrpApprovalRepository extends JpaRepository
List findByDrpIdAndIsDeleteFalse(Long drpId);
@Query(value = "SELECT da.drpId as drpId, " +
- "da.isApprove as isApprove, " +
- "da.catatan as catatan, " +
"da.approverUserId as approverUserId, " +
"u.nama as nama, " +
- "j.jabatan as jabatan, " +
- "da.level as level " +
+ "j.jabatan as jabatan " +
"FROM DrpApproval da " +
"JOIN Users u ON u.id = da.approverUserId " +
"JOIN Jabatan j ON j.id = u.jabatanId " +
"WHERE da.isDelete = false " +
- "AND da.isApprove is not null " +
"AND da.drpId = :drpId " +
- "ORDER BY da.lastUpdate")
+ "AND da.isApprove = true " +
+ "ORDER BY da.level desc")
List getDrpApproval(Long drpId);
Optional findByDrpIdAndLevelAndIsDeleteFalse(Long drpId, String level);
+ @Query(value = "UPDATE drp_approval " +
+ "SET is_delete = 1 " +
+ "WHERE drp_id = :drpId " +
+ "AND is_delete = 0", nativeQuery = true)
+ void deleteApprovalByDrpId(Long drpId);
+
}
diff --git a/src/main/java/com/iconplus/smartproc/service/CommonService.java b/src/main/java/com/iconplus/smartproc/service/CommonService.java
index bf2d274..9e2b363 100644
--- a/src/main/java/com/iconplus/smartproc/service/CommonService.java
+++ b/src/main/java/com/iconplus/smartproc/service/CommonService.java
@@ -1,5 +1,9 @@
package com.iconplus.smartproc.service;
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.client.j2se.MatrixToImageWriter;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.QRCodeWriter;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.model.entity.TokenManagement;
import com.iconplus.smartproc.model.request.UsersRequest;
@@ -11,6 +15,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
+import java.awt.image.BufferedImage;
import java.sql.Timestamp;
import java.time.Instant;
@@ -105,4 +110,12 @@ public class CommonService {
}
}
+
+ public BufferedImage generateQRCodeImage(String barcodeText) throws Exception {
+ QRCodeWriter barcodeWriter = new QRCodeWriter();
+ BitMatrix bitMatrix =
+ barcodeWriter.encode(barcodeText, BarcodeFormat.QR_CODE, 200, 200);
+
+ return MatrixToImageWriter.toBufferedImage(bitMatrix);
+ }
}
diff --git a/src/main/java/com/iconplus/smartproc/service/approval/PostDrpApprovalExecutionService.java b/src/main/java/com/iconplus/smartproc/service/approval/PostDrpApprovalExecutionService.java
index 64094f0..6a25e05 100644
--- a/src/main/java/com/iconplus/smartproc/service/approval/PostDrpApprovalExecutionService.java
+++ b/src/main/java/com/iconplus/smartproc/service/approval/PostDrpApprovalExecutionService.java
@@ -52,6 +52,9 @@ public class PostDrpApprovalExecutionService implements BaseService drpApprovalHistoryList = new ArrayList<>();
var listDrpApproval = drpApprovalRepository.findByDrpIdAndIsDeleteFalse(input.getDrpId());
@@ -64,23 +67,28 @@ public class PostDrpApprovalExecutionService implements BaseService {
+
+ private final CommonService commonService;
+ private final DrpApprovalRepository drpApprovalRepository;
+ public DrpPrintExecutionService(CommonService commonService,
+ DrpApprovalRepository drpApprovalRepository) {
+ this.commonService = commonService;
+ this.drpApprovalRepository = drpApprovalRepository;
+ }
+
+ @Override
+ public EmptyResponse execute(PrintDrpRequest input) throws Exception {
+
+ var drpApprovalViews = drpApprovalRepository.getDrpApproval(input.getDrpId());
+
+ int size = drpApprovalViews.size();
+
+ List bufferedImageList = new ArrayList<>();
+
+ for (DrpApprovalView drpApprovalView : drpApprovalViews) {
+ String barcodeText = drpApprovalView.getApproverUserId().toString() + " - " + drpApprovalView.getNama() + " - " + drpApprovalView.getJabatan();
+ var bufferedImage = commonService.generateQRCodeImage(barcodeText);
+ bufferedImageList.add(bufferedImage);
+ }
+
+ return new EmptyResponse();
+ }
+}
diff --git a/src/main/resources/template/drp-approval.jrxml b/src/main/resources/template/drp-approval.jrxml
new file mode 100644
index 0000000..e69de29