fix
This commit is contained in:
parent
dbbde49f59
commit
abc89d32d0
11
pom.xml
11
pom.xml
@ -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>
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
0
src/main/resources/template/drp-approval.jrxml
Normal file
0
src/main/resources/template/drp-approval.jrxml
Normal file
Loading…
x
Reference in New Issue
Block a user