This commit is contained in:
dirgantarasiahaan 2023-06-04 00:06:01 +07:00
parent dbbde49f59
commit abc89d32d0
10 changed files with 125 additions and 26 deletions

11
pom.xml
View File

@ -59,6 +59,17 @@
<version>5.3.9.RELEASE</version> <version>5.3.9.RELEASE</version>
</dependency> </dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.0</version>
</dependency>
<dependency> <dependency>
<groupId>io.jsonwebtoken</groupId> <groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId> <artifactId>jjwt</artifactId>

View File

@ -1,8 +1,11 @@
package com.iconplus.smartproc.controller; 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.PrintDrpRequest;
import com.iconplus.smartproc.model.request.RolesRequest; import com.iconplus.smartproc.model.request.RolesRequest;
import com.iconplus.smartproc.model.response.GetListPrintDrpResponse; 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 com.iconplus.smartproc.service.print.GetListPrintDrpService;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@ -14,9 +17,12 @@ import org.springframework.web.bind.annotation.*;
public class PrintController { public class PrintController {
private final GetListPrintDrpService getListPrintDrpService; private final GetListPrintDrpService getListPrintDrpService;
private final DrpPrintExecutionService drpPrintExecutionService;
public PrintController(GetListPrintDrpService getListPrintDrpService) { public PrintController(GetListPrintDrpService getListPrintDrpService,
DrpPrintExecutionService drpPrintExecutionService) {
this.getListPrintDrpService = getListPrintDrpService; 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);
}
} }

View File

@ -8,5 +8,5 @@ import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
public interface BaseService<T extends BaseRequest, V extends BaseResponse> { public interface BaseService<T extends BaseRequest, V extends BaseResponse> {
V execute(T input) throws IOException; V execute(T input) throws Exception;
} }

View File

@ -47,4 +47,7 @@ public interface DrpApprovalView {
String getLevel(); String getLevel();
void setLevel(String level); void setLevel(String level);
Long getApproverUserId();
void setApproverUserId(Long approverUserId);
} }

View File

@ -13,5 +13,6 @@ import org.springframework.data.domain.Pageable;
@NoArgsConstructor @NoArgsConstructor
public class PrintDrpRequest extends BaseRequest { public class PrintDrpRequest extends BaseRequest {
private Long drpId;
private transient Pageable pageable; private transient Pageable pageable;
} }

View File

@ -27,23 +27,26 @@ public interface DrpApprovalRepository extends JpaRepository<DrpApproval, Long>
List<DrpApproval> findByDrpIdAndIsDeleteFalse(Long drpId); List<DrpApproval> findByDrpIdAndIsDeleteFalse(Long drpId);
@Query(value = "SELECT da.drpId as drpId, " + @Query(value = "SELECT da.drpId as drpId, " +
"da.isApprove as isApprove, " +
"da.catatan as catatan, " +
"da.approverUserId as approverUserId, " + "da.approverUserId as approverUserId, " +
"u.nama as nama, " + "u.nama as nama, " +
"j.jabatan as jabatan, " + "j.jabatan as jabatan " +
"da.level as level " +
"FROM DrpApproval da " + "FROM DrpApproval da " +
"JOIN Users u ON u.id = da.approverUserId " + "JOIN Users u ON u.id = da.approverUserId " +
"JOIN Jabatan j ON j.id = u.jabatanId " + "JOIN Jabatan j ON j.id = u.jabatanId " +
"WHERE da.isDelete = false " + "WHERE da.isDelete = false " +
"AND da.isApprove is not null " +
"AND da.drpId = :drpId " + "AND da.drpId = :drpId " +
"ORDER BY da.lastUpdate") "AND da.isApprove = true " +
"ORDER BY da.level desc")
List<DrpApprovalView> getDrpApproval(Long drpId); List<DrpApprovalView> getDrpApproval(Long drpId);
Optional<DrpApproval> findByDrpIdAndLevelAndIsDeleteFalse(Long drpId, String level); Optional<DrpApproval> 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);
} }

View File

@ -1,5 +1,9 @@
package com.iconplus.smartproc.service; 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.exception.BusinessException;
import com.iconplus.smartproc.model.entity.TokenManagement; import com.iconplus.smartproc.model.entity.TokenManagement;
import com.iconplus.smartproc.model.request.UsersRequest; 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.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.awt.image.BufferedImage;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.time.Instant; 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);
}
} }

View File

@ -52,6 +52,9 @@ public class PostDrpApprovalExecutionService implements BaseService<DrpApprovalR
Date dateNow = Date.valueOf(LocalDate.now()); Date dateNow = Date.valueOf(LocalDate.now());
drpApproval.setIsApprove(input.getIsApprove());
drpApproval.setCatatan(input.getCatatan());
List<DrpApprovalHistory> drpApprovalHistoryList = new ArrayList<>(); List<DrpApprovalHistory> drpApprovalHistoryList = new ArrayList<>();
var listDrpApproval = drpApprovalRepository.findByDrpIdAndIsDeleteFalse(input.getDrpId()); var listDrpApproval = drpApprovalRepository.findByDrpIdAndIsDeleteFalse(input.getDrpId());
@ -64,10 +67,10 @@ public class PostDrpApprovalExecutionService implements BaseService<DrpApprovalR
drpApprovalHistoryList.add(drpApprovalHistoryExecutor); drpApprovalHistoryList.add(drpApprovalHistoryExecutor);
if (StringUtils.equalsIgnoreCase(drpApproval.getLevel(), "VP")) { if (StringUtils.equalsIgnoreCase(drpApproval.getLevel(), "VP")) {
drpApproval.setIsApprove(input.getIsApprove());
drp.setVpApproveDate(dateNow); drp.setVpApproveDate(dateNow);
if (BooleanUtils.isTrue(input.getIsApprove())) {
drp.setApproveStatus(Constants.STATUS_APPROVAL_VP); drp.setApproveStatus(Constants.STATUS_APPROVAL_VP);
drpApproval.setCatatan(input.getCatatan());
for (DrpApproval drpAppr : listDrpApproval) { for (DrpApproval drpAppr : listDrpApproval) {
if (StringUtils.equalsIgnoreCase(drpAppr.getLevel(), "KOMITE")) { if (StringUtils.equalsIgnoreCase(drpAppr.getLevel(), "KOMITE")) {
@ -81,6 +84,11 @@ public class PostDrpApprovalExecutionService implements BaseService<DrpApprovalR
} }
} }
} else {
drp.setApproveStatus(Constants.STATUS_PENYUSUNAN);
drpApproval.setIsDelete(true);
drpApprovalRepository.deleteApprovalByDrpId(input.getDrpId());
}
} else if (StringUtils.equalsIgnoreCase(drpApproval.getLevel(), "DIREKTUR")) { } else if (StringUtils.equalsIgnoreCase(drpApproval.getLevel(), "DIREKTUR")) {
@ -90,10 +98,16 @@ public class PostDrpApprovalExecutionService implements BaseService<DrpApprovalR
String.format(Constants.ERR_MSG_10013, "KOMITE")); String.format(Constants.ERR_MSG_10013, "KOMITE"));
} }
drpApproval.setIsApprove(input.getIsApprove()); if (BooleanUtils.isTrue(input.getIsApprove())) {
drp.setDirekturApproveDate(dateNow);
drp.setApproveStatus(Constants.STATUS_APPROVAL_DIRUT); drp.setApproveStatus(Constants.STATUS_APPROVAL_DIRUT);
drpApproval.setCatatan(input.getCatatan()); } else {
drp.setApproveStatus(Constants.STATUS_PENYUSUNAN);
drpApproval.setIsDelete(true);
drpApprovalRepository.deleteApprovalByDrpId(input.getDrpId());
}
drp.setDirekturApproveDate(dateNow);
} else { } else {
@ -107,8 +121,7 @@ public class PostDrpApprovalExecutionService implements BaseService<DrpApprovalR
if (listKomiteApproval.size() == 1) { if (listKomiteApproval.size() == 1) {
drp.setApproveStatus(Constants.STATUS_REKOMENDASI_KOMITE); drp.setApproveStatus(Constants.STATUS_REKOMENDASI_KOMITE);
} }
drpApproval.setIsApprove(input.getIsApprove());
drpApproval.setCatatan(input.getCatatan());
drp.setKomiteApproveDate(dateNow); drp.setKomiteApproveDate(dateNow);
for (DrpApproval drpAppr : listDrpApproval) { for (DrpApproval drpAppr : listDrpApproval) {

View File

@ -0,0 +1,44 @@
package com.iconplus.smartproc.service.print;
import com.iconplus.smartproc.helper.model.EmptyResponse;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.projection.DrpApprovalView;
import com.iconplus.smartproc.model.request.PrintDrpRequest;
import com.iconplus.smartproc.repository.DrpApprovalRepository;
import com.iconplus.smartproc.service.CommonService;
import org.springframework.stereotype.Service;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
@Service
public class DrpPrintExecutionService implements BaseService<PrintDrpRequest, EmptyResponse> {
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<BufferedImage> 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();
}
}