예산 업뎃

master
Lim\jun 2023-05-09 16:33:21 +09:00
parent e5310450d9
commit 9d03dcf482
7 changed files with 1278 additions and 5 deletions

View File

@ -1,38 +1,400 @@
package com.dbnt.faisp.main.budget;
import com.dbnt.faisp.main.budget.common.ResultResponseCode;
import com.dbnt.faisp.main.budget.model.ResultResponse;
import com.dbnt.faisp.main.budget.model.BudgetDto;
import com.dbnt.faisp.main.budget.repository.BudgetRepository.*;
import com.dbnt.faisp.main.budget.service.BudgetService;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.main.userInfo.service.UserInfoService;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
@RestController
import java.time.LocalDate;
import java.util.List;
@SuppressWarnings("unchecked")
@RequiredArgsConstructor
@RestController
@RequestMapping("/budget")
public class BudgetController {
private final UserInfoService userInfoService;
private final BudgetService budgetService;
/* 예산편성 - 화면 */
@GetMapping("/budgeting")
public ModelAndView budgetingPage(@AuthenticationPrincipal UserInfo loginUser){
public ModelAndView viewShipList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/budgeting");
if (requestDto.getYear() == null || requestDto.getYear().equals("")) {
LocalDate date = LocalDate.now();
requestDto.setYear(String.valueOf(date.getYear()));
}
System.out.println(requestDto.getYear());
List<BudgetingList> list = budgetService.selectBudgetingList(loginUser, requestDto);
List<YearResult> yearList = budgetService.selectBudgetingYearList(loginUser);
long sum = 0;
for (int i = 0; i < list.size(); i++) {
sum += list.get(i).getAmount();
}
requestDto.setSum(sum);
// System.out.println(yearList.get(1).getYear());
// System.out.println(yearList.size());
mav.addObject("list", list);
mav.addObject("yearList", yearList);
mav.addObject("searchParams", requestDto);
return mav;
}
// 예산편성 - 연도 추가
@PostMapping("/budgeting/year")
public ResultResponse<?> copyBudgeting(@AuthenticationPrincipal UserInfo loginUser, @RequestBody BudgetDto.BudgetingCopyReqeust requestDto) {
budgetService.copyYearBudgeting(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
}
// 예산편성 - 연도 삭제
@DeleteMapping("/budgeting/year")
public ResultResponse<?> deleteYearBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingCopyReqeust requestDto) {
budgetService.deleteBudgetingYear(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
}
//예산편성 - 항목추가/변경 모달(버튼)
@GetMapping("/budgeting/modal/edit")
public ModelAndView editModal(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingInsertReqeust requestDto) {
ModelAndView mav = new ModelAndView("budget/budgetingEditModal");
// System.out.println(requestDto.getNameL1());
if (requestDto.getNameL1() != null) {
mav.addObject("info", requestDto);
mav.addObject("cmd", "update");
} else {
mav.addObject("info");
mav.addObject("cmd", "insert");
}
return mav;
}
//예산편성 - 항목추가
@PostMapping("/budgeting/code")
public ResultResponse<?> insertBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingInsertReqeust requestDto) {
budgetService.insertBudgetingList(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
}
//예산편성 - 항목변경
@PutMapping("/budgeting/code")
public ResultResponse<?> updateBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingUpdateReqeust requestDto) {
budgetService.updateBudgetingList(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
}
//예산편성 - 항목삭제
@DeleteMapping("/budgeting/code")
public ResultResponse<?> deleteBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingInsertReqeust requestDto) {
budgetService.deleteBudgetingList(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
}
// 예산편성 - 예산편성 버튼(modal)
@GetMapping("/budgeting/modal/org")
public ModelAndView orgModal(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingSearchReqeust requestDto) {
ModelAndView mav = new ModelAndView("budget/budgetingOrgModal");
List<BudgetingList> list = budgetService.selectBudgetingList(loginUser, requestDto);
mav.addObject("list", list);
mav.addObject("searchParams", requestDto);
return mav;
}
// 예산편성 - 예산편성(저장)
@PostMapping("/budgeting/save")
public ResultResponse<?> saveBudgeting(@AuthenticationPrincipal UserInfo loginUser, @RequestBody BudgetDto.BudgetingSaveReqeust requestDto) {
budgetService.saveBudgetingList(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
}
// 예산편성 - 예산삭제 (0원 세팅)
@DeleteMapping("/budgeting") //@AuthenticationPrincipal
public ResultResponse<?> deleteBudgeting(UserInfo loginUser, BudgetDto.BudgetingSaveReqeust requestDto) {
budgetService.deleteBudgeting(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
}
// 예산배정
@GetMapping("/assign")
public ModelAndView assignPage(@AuthenticationPrincipal UserInfo loginUser){
public ModelAndView viewAssignList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/assign");
String userOrgCode;
if (requestDto.getYear() != null) {
userOrgCode = requestDto.getCode();
List<AssignResult> list = budgetService.selectBudgetAssignInfo(loginUser, requestDto);
mav.addObject("list", list);
} else {
// 로그인된 해당청 기본선택
userOrgCode = userInfoService.selectUserInfo(loginUser.getUserSeq()).getOgCd();
String HighOrgCode = budgetService.selectGetHighOrgCode(userOrgCode);
if (HighOrgCode == null) { // 1, 2단계시
requestDto.setCode(userOrgCode);
} else { // 3단계 이하 관서시
requestDto.setCode(HighOrgCode);
userOrgCode = HighOrgCode;
}
mav.addObject("list");
// 첫해 첫날 ~ 오늘날짜 기본세팅
LocalDate date = LocalDate.now();
String CurrentYear = String.valueOf(date.getYear()) + "-01-01";
requestDto.setStDate(LocalDate.parse(CurrentYear));
requestDto.setEdDate(date);
}
//하위청 리스트
List<CodeResult> downOrgList = budgetService.selectDownOrg(userOrgCode);
mav.addObject("downOrgList", downOrgList);
//Select box 관서 리스트
List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser);
mav.addObject("codeList", codeList);
mav.addObject("searchParams", requestDto);
return mav;
}
// 예산배정 - 리스트 수정
@GetMapping("/assign/modal/edit")
public ModelAndView viewAssignModal(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/assignEditModal");
String userOrgCode;
LocalDate date = LocalDate.now();
requestDto.setModalDate(date);
if (requestDto.getYear() != null) {
userOrgCode = requestDto.getCode();
List<AssignResult> list = budgetService.selectBudgetAssignInfo(loginUser, requestDto);
mav.addObject("list", list);
} else {
// 로그인된 해당청 기본선택
userOrgCode = userInfoService.selectUserInfo(loginUser.getUserSeq()).getOgCd();
String HighOrgCode = budgetService.selectGetHighOrgCode(userOrgCode);
if (HighOrgCode == null) { // 1, 2단계시
requestDto.setCode(userOrgCode);
} else { // 3단계 이하 관서시
requestDto.setCode(HighOrgCode);
userOrgCode = HighOrgCode;
}
mav.addObject("list");
}
//하위청 리스트
List<CodeResult> downOrgList = budgetService.selectDownOrg(userOrgCode);
mav.addObject("downOrgList", downOrgList);
List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser);
mav.addObject("codeList", codeList);
mav.addObject("searchParams", requestDto);
return mav;
}
// 예산배정 - 등록(저장버튼)
@PostMapping("/assign/save")
public ResultResponse<?> saveAssign(@AuthenticationPrincipal UserInfo loginUser, @RequestBody BudgetDto.AssignSaveReqeust requestDto) {
budgetService.updateAssignList(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
}
// 집행관리
@GetMapping("/expense")
public ModelAndView expensePage(@AuthenticationPrincipal UserInfo loginUser){
public ModelAndView viewExpenseList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/expense");
String userOrgCode;
if (requestDto.getYear() != null) {
userOrgCode = requestDto.getCode();
List<ExpenseResult> list = budgetService.selectBudgetExpenseInfo(loginUser, requestDto);
mav.addObject("list", list);
} else {
// 로그인된 해당청 기본선택
userOrgCode = userInfoService.selectUserInfo(loginUser.getUserSeq()).getOgCd();
String HighOrgCode = budgetService.selectGetHighOrgCode(userOrgCode);
if (HighOrgCode == null) { // 1, 2단계시
requestDto.setCode(userOrgCode);
} else { // 3단계 이하 관서시
requestDto.setCode(HighOrgCode);
userOrgCode = HighOrgCode;
}
mav.addObject("list");
// 첫해 첫날 ~ 오늘날짜 기본세팅
LocalDate date = LocalDate.now();
String CurrentYear = String.valueOf(date.getYear()) + "-01-01";
requestDto.setStDate(LocalDate.parse(CurrentYear));
requestDto.setEdDate(date);
}
//하위청 리스트
List<CodeResult> downOrgList = budgetService.selectDownOrg(userOrgCode);
mav.addObject("downOrgList", downOrgList);
List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser);
mav.addObject("codeList", codeList);
mav.addObject("searchParams", requestDto);
return mav;
}
@PostMapping("/expense")
public ResultResponse<?> saveExpense(@AuthenticationPrincipal UserInfo loginUser, @RequestBody BudgetDto.ExpenseSaveReqeust requestDto) {
budgetService.insertExpense(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
}
/* 예산편성 - 팝업화면 */
@GetMapping("/expense/modal/view")
public ModelAndView viewExpenseModal(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.ExpenseSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/expenseEditModal");
List<ExpenseInfoResult> list = budgetService.selectBudgetExpense(loginUser, requestDto);
mav.addObject("list", list);
mav.addObject("searchParams", requestDto);
return mav;
}
/* 집행표 - 화면 */
@GetMapping("/stats")
public ModelAndView statsPage(@AuthenticationPrincipal UserInfo loginUser){
public ModelAndView viewStatsAllList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.StatsSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/stats");
String userOrgCode;
if (requestDto.getYear() != null) {
userOrgCode = requestDto.getCode();
List<ExpenseResult> list = budgetService.selectSpGetbudgetStatOrg(loginUser, requestDto);
mav.addObject("list", list);
} else {
// 로그인된 해당청 기본선택
userOrgCode = userInfoService.selectUserInfo(loginUser.getUserSeq()).getOgCd();
String HighOrgCode = budgetService.selectGetHighOrgCode(userOrgCode);
if (HighOrgCode == null) { // 1, 2단계시
requestDto.setCode(userOrgCode);
} else { // 3단계 이하 관서시
requestDto.setCode(HighOrgCode);
userOrgCode = HighOrgCode;
}
mav.addObject("list");
// 첫해 첫날 ~ 오늘날짜 기본세팅
LocalDate date = LocalDate.now();
String CurrentYear = String.valueOf(date.getYear()) + "-01-01";
requestDto.setStDate(LocalDate.parse(CurrentYear));
requestDto.setEdDate(date);
}
//하위청 리스트
List<CodeResult> downOrgList = budgetService.selectDownOrg(userOrgCode);
mav.addObject("downOrgList", downOrgList);
List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser);
mav.addObject("codeList", codeList);
mav.addObject("searchParams", requestDto);
return mav;
}
/* 집행표 - 화면 */
@GetMapping("/stats/org")
public ModelAndView viewExpenseList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.StatsSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/statsOrg");
String userOrgCode;
if (requestDto.getYear() != null) {
userOrgCode = requestDto.getCode();
List<ExpenseResult> list = budgetService.selectSpGetbudgetStatOrg(loginUser, requestDto);
mav.addObject("list", list);
} else {
// 로그인된 해당청 기본선택
userOrgCode = userInfoService.selectUserInfo(loginUser.getUserSeq()).getOgCd();
String HighOrgCode = budgetService.selectGetHighOrgCode(userOrgCode);
if (HighOrgCode == null) { // 1, 2단계시
requestDto.setCode(userOrgCode);
} else { // 3단계 이하 관서시
requestDto.setCode(HighOrgCode);
userOrgCode = HighOrgCode;
}
mav.addObject("list");
// 첫해 첫날 ~ 오늘날짜 기본세팅
LocalDate date = LocalDate.now();
String CurrentYear = String.valueOf(date.getYear()) + "-01-01";
requestDto.setStDate(LocalDate.parse(CurrentYear));
requestDto.setEdDate(date);
}
//하위청 리스트
List<CodeResult> downOrgList = budgetService.selectDownOrg(userOrgCode);
mav.addObject("downOrgList", downOrgList);
List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser);
mav.addObject("codeList", codeList);
mav.addObject("searchParams", requestDto);
return mav;
}
/* 세부내역별현황 - 화면 */
@GetMapping("/stats/detail")
public ModelAndView viewStatsDetailList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.StatsSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/statsDetail");
List<YearResult> yearList = budgetService.selectBudgetingYearList(loginUser);
if (requestDto.getStDate() != null) {
List<StatsItemResult> list = budgetService.selectSpGetbudgetStatDetail(loginUser, requestDto);
List<L3CodeResult> codeList = budgetService.selectSpGetL3Code(loginUser, requestDto.getYear());
mav.addObject("list", list);
mav.addObject("codeList", codeList);
} else {
LocalDate date = LocalDate.now();
List<L3CodeResult> codeList = budgetService.selectSpGetL3Code(loginUser, String.valueOf(date.getYear()));
requestDto.setYear(String.valueOf(date.getYear()));
mav.addObject("list");
mav.addObject("codeList", codeList);
// 첫해 첫날 ~ 오늘날짜 기본세팅
String CurrentYear = String.valueOf(date.getYear()) + "-01-01";
requestDto.setStDate(LocalDate.parse(CurrentYear));
requestDto.setEdDate(date);
}
List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser);
mav.addObject("yearList", yearList);
mav.addObject("searchParams", requestDto);
return mav;
}
@GetMapping("/stats/code")
@ResponseBody
public List<L3CodeResult> selectCodeL3(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.L3CodeRequest requestDto) {
List<L3CodeResult> list = budgetService.selectSpGetL3Code(loginUser, requestDto.getYear());
return list;
}
}

View File

@ -0,0 +1,18 @@
package com.dbnt.faisp.main.budget.common;
import com.dbnt.faisp.main.budget.common.ResultResponseCode;
public class BaseException extends RuntimeException {
private static final long serialVersionUID = 163922632784183581L;
private ResultResponseCode code;
public BaseException(ResultResponseCode code) {
this.code = code;
}
public ResultResponseCode getCode(){
return code;
}
}

View File

@ -0,0 +1,53 @@
package com.dbnt.faisp.main.budget.common;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Collections;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@AllArgsConstructor
@Getter
public enum ResultResponseCode {
SUCCESS(200, "정상처리되었습니다.","Success"),
DATA_NOT_FOUND(604, "존재하지 않는 데이터입니다.","InternalNotFound"),
FORBIDDEN(403,"해당요청에 대한 권한이 없습니다.","Forbidden"),
PARAM_NOT_NULL(900, " - 필수 입력 사항입니다.", "NotNull"),
PARAM_NOT_EMPTY(900, " - 필수 입력 사항입니다.", "NotEmpty"),
INTERNAL_PARAM_EMPTY(900, "필수 항목이 누락되었습니다.", "InternalParamEmpty"),
FILE_EMPTY(900, "필수 파일이 존재하지 않습니다.", "FileEmpty"),
PARAM_PERMIT_TYPE(901, "잘못된 형식의 데이터입니다.", "ParamType"),
NOT_FOUND_SENDER(903, "발송대상이 없습니다.","NotFoundSender"),
TYPE_MISMATCH(905, "잘못된 형식의 데이터입니다..", "typeMismatch"),
DUPLICATE_CODE(906, "이미 등록된 코드명칭입니다.", "DuplicateCode"),
DELETE_FOUND_VALUE(907, "예산표에 값이 있습니다. 예산삭제 후 해당 코드를 삭제하십시요.", "DELETE_FOUND_VALUE"),
NOT_FOUND_CODE(908, "없는 코드 또는 명칭입니다." ,"NotFoundCodE"),
NOT_FOUND_YEAR(909 , " 없는 연도의 코드입니다.", "NotFoundYear"),
FOUND_YEAR(910, "이미 등록되어 있는 연도의 코드입니다.", "FoundYear"),
EXPENSE_OVER_VALUE(911, "총 지출금액이 배정된 예산보다 큽니다.", "ExepenseOverValue"),
ERROR(999, "오류가 발생하였습니다.","ERROR");
private static final Map<String, String> CODE_MAP = Collections.unmodifiableMap(Stream.of(values()).collect(Collectors.toMap(ResultResponseCode::getType, ResultResponseCode::name)));
private int code;
private String message;
private String type;
public static ResultResponseCode of(final String code) {
try {
return ResultResponseCode.valueOf(CODE_MAP.get(code));
}catch(NullPointerException NPE) {
return ResultResponseCode.valueOf("ERROR");
}
}
}

View File

@ -0,0 +1,158 @@
package com.dbnt.faisp.main.budget.model;
import com.dbnt.faisp.config.BaseModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
public class BudgetDto {
@Data
@AllArgsConstructor
@ToString
public static class BudgetingListResponse {
private String budget_name_l1;
private String budget_name_l2;
private String budget_name_l3;
}
@Data
@AllArgsConstructor
@ToString
public static class BudgetingSearchReqeust {
private String year;
private Long sum;
}
@Data
@AllArgsConstructor
@ToString
public static class BudgetingInsertReqeust {
private String year;
private String nameL1;
private String nameL2;
private String nameL3;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public static class BudgetingSaveReqeust {
private String year;
private String nameL1;
private String nameL2;
private String nameL3;
private Integer amount;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public static class AssignSaveReqeust {
private String year;
private String code;
private Integer amount;
private String org;
private String org1;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public static class BudgetingCopyReqeust {
private String year;
private String copyYear;
}
@Data
@AllArgsConstructor
@ToString
public static class BudgetingUpdateReqeust {
private String year;
private String nameL1;
private String nameL2;
private String nameL3;
private String prevNameL1;
private String prevNameL2;
private String prevNameL3;
}
@Data
@AllArgsConstructor
@ToString
public static class AssignSearchReqeust {
private String year;
private String code;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate stDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate edDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate modalDate;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public static class ExpenseSaveReqeust {
private String year;
private String nameL1;
private String nameL2;
private String nameL3;
private String item;
private Integer amount;
private String org;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate expenseDate;
}
@Data
@AllArgsConstructor
@ToString
public static class StatsSearchReqeust {
private String year;
private String code;
private String item;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate stDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate edDate;
private Integer won;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public static class ExpenseSearchReqeust {
private String year;
private String nameL1;
private String nameL2;
private String nameL3;
private Integer amount;
}
@Data
@AllArgsConstructor
@ToString
public static class L3CodeRequest {
private String year;
}
}

View File

@ -0,0 +1,37 @@
package com.dbnt.faisp.main.budget.model;
import com.dbnt.faisp.main.budget.common.ResultResponseCode;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class ResultResponse<T> {
private int code;
private String message;
private T data;
public ResultResponse(int code, String message) {
this.code = code;
this.message = message;
}
public ResultResponse(ResultResponseCode responseCode) {
this.code = responseCode.getCode();
this.message = responseCode.getMessage();
}
public ResultResponse<?> successResponse(T data) {
this.code = ResultResponseCode.SUCCESS.getCode();
this.message = ResultResponseCode.SUCCESS.getMessage();
this.data = data;
return new ResultResponse<>(this.code, this.message, this.data);
}
}

View File

@ -0,0 +1,346 @@
package com.dbnt.faisp.main.budget.repository;
import com.dbnt.faisp.main.codeMgt.model.CodeCatg;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.sql.Date;
import java.util.List;
@Repository
public interface BudgetRepository extends JpaRepository<CodeCatg, String> {
@Query(value = " select "
+ "budget_name_l1 as budgetNameL1,"
+ "budget_name_l2 as budgetNameL2,"
+ "budget_name_l3 as budgetNameL3,"
+ "budget_code_l3 as budgetCodeL3,"
+ "amount,"
+ "remark,"
+ "modi_id as modiId,"
+ "modi_date as modiDate "
+ " from public.sp_get_budget_plan_info(:code1, :code2, :code3) ", nativeQuery = true)
List<BudgetingList> callSpGetBudgetPlanInfo(
@Param("code1") String code1,
@Param("code2") String code2,
@Param("code3") String code3);
//(공통) - 생선된 년도 (셀렉트박스)
@Query(value ="select l1_year as year from public.sp_get_budget_code_year_list( );", nativeQuery = true)
List<YearResult> callSpGetBudgetCodeYearList();
//예산편성 - 연도추가
@Query(value ="call public.sp_copy_budget_item (:year,:copyYear,:id,NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callSpCopyBudgetItem(
@Param("year") String year,
@Param("copyYear") String org,
@Param("id") String id);
//예산편성 - 연도삭제
@Query(value ="call public.sp_brute_force_delete_budget_item(:year, :id,NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callBruteForceDeleteBudgetItem(
@Param("year") String year,
@Param("id") String id);
//예산편성 - 항목추가
@Query(value ="call public.sp_add_budget_plan_codename (:year, :code1, :code2, :code3, :org, :id ,NULL, NULL, NULL);", nativeQuery = true)
UpdateResult callSpAddBudgetPlanCodeName(
@Param("year") String year,
@Param("code1") String nameL1,
@Param("code2") String nameL2,
@Param("code3") String nameL3,
@Param("org") String org,
@Param("id") String id);
//예산편성 - 항목변경
@Query(value ="call public.sp_update_budget_plan_codename(:year, :code1, :code2, :code3, :newCode1, :newCode2, :newCode3, :org,:id,NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callSpUpdateBudgetPlanCodeName(
@Param("year") String year,
@Param("code1") String prevNameL1,
@Param("code2") String prevNameL2,
@Param("code3") String prevNameL3,
@Param("newCode1") String nameL1,
@Param("newCode2") String nameL2,
@Param("newCode3") String nameL3,
@Param("org") String org,
@Param("id") String id);
//예산편성 - 항목삭제
@Query(value ="call public.sp_delete_budget_plan_codename(:year, :code1, :code2, :code3, :org,:id,NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callSpDeleteBudgetPlanCodeName(
@Param("year") String year,
@Param("code1") String nameL1,
@Param("code2") String nameL2,
@Param("code3") String nameL3,
@Param("org") String org,
@Param("id") String id);
//예산편성 - 예산저장
@Query(value ="call public.sp_update_budget_plan_item (:year, :code1, :code2, :code3, :amount, :org, :id,NULL, NULL, NULL);", nativeQuery = true)
UpdateResult callSpUpdateBudgetPlanCodeItem(
@Param("year") String year,
@Param("code1") String nameL1,
@Param("code2") String nameL2,
@Param("code3") String nameL3,
@Param("amount") Integer amount,
@Param("org") String org,
@Param("id") String id);
//예산편성 - 예산삭제
@Query(value ="call public.sp_clear_budget_plan(:year, :org, :id,NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callSpDeleteBudgetPlan(
@Param("year") String year,
@Param("org") String org,
@Param("id") String id);
// 예산배정
@Query(value ="select * from public.sp_get_budget_assign_info(:year, :code, :user ,:stDate, :edDate)", nativeQuery = true)
List<AssignResult> callSpGetBudgetAssignInfo(
@Param("year") String year,
@Param("code") String code,
@Param("user") String user,
@Param("stDate") Date stDate,
@Param("edDate") Date edDate
);
//(공통) 2단계로 하위청 뿌려주기
@Query(value ="select org_code as orgCode, org_name as orgName from public.sp_get_down_org(:org);", nativeQuery = true)
List<CodeResult> callSpGetDownOrg(
@Param("org") String org
);
//
@Query(value ="select org_code as orgCode, org_name as orgName from public.sp_get_lower_org_code_by_name('본청');", nativeQuery = true)
List<CodeResult> callSpGetLowerOrgCodeByName(
);
//상위 기관 코드 가져오기 (3단계인경우만)
@Query(value ="select * from public.sp_get_high_org_code(:org);", nativeQuery = true)
String callSpGetHighOrgCode(
@Param("org") String org
);
// 예산배정 - 등록(저장버튼)
@Query(value ="call public.sp_add_budget_assign(:code, :org, :org1, cast (:amount as bigint), to_date(:dt,'YYYY-MM-DD'), 'admin', NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callSpAddBudgetAssign(
@Param("code") String year,
@Param("org") String org,
@Param("org1") String org1,
@Param("amount") Integer amount,
@Param("dt") String dt);
// 집행관리
@Query(value ="select * from public.sp_get_budget_expense_info(:year,:code,:user,:stDate,:edDate);", nativeQuery = true)
List<ExpenseResult> callSpGetBudgetExpenseInfo(
@Param("year") String year,
@Param("code") String code,
@Param("user") String user,
@Param("stDate") Date stDate,
@Param("edDate") Date edDate
);
@Query(value ="select * from public.sp_get_budget_expense(:year,:code1,:code2,:code3,:org,1,2,20,1);", nativeQuery = true)
List<ExpenseInfoResult> callSpGetBudgetExpense(
@Param("year") String year,
@Param("code1") String code1,
@Param("code2") String code2,
@Param("code3") String code3,
@Param("org") String org
);
@Query(value ="call public.sp_add_budget_EXPENSE(:year,:code1,:code2,:code3, :org, :item ,cast (:amount as bigint), to_date(:dt,'YYYY-MM-DD'),'admin',NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callSpAddBudgetExpense(
@Param("year") String year,
@Param("code1") String code1,
@Param("code2") String code2,
@Param("code3") String code3,
@Param("org") String org,
@Param("item") String item,
@Param("amount") Integer amount,
@Param("dt") Date dt
);
@Query(value ="call public.sp_update_budget_expense(:seq,:item ,cast (:amount as bigint),NULL,NULL,NULL,NULL,NULL);;", nativeQuery = true)
List<ExpenseResult> callSpUpdateBudgetExpense(
@Param("seq") Integer seq,
@Param("item") String item,
@Param("amount") Integer amount
);
@Query(value ="select * from public.sp_get_budget_statistics_by_org(:year,:code,:user,:stDate,:edDate,:won);", nativeQuery = true)
List<ExpenseResult> callSpGetbudgetStatOrg(
@Param("year") String year,
@Param("code") String code,
@Param("user") String user,
@Param("stDate") Date stDate,
@Param("edDate") Date edDate,
@Param("won") int won
);
@Query(value ="select * from public.sp_get_budget_statistics_by_item(:year,:code,:item, :user,:stDate,:edDate,:won);", nativeQuery = true)
List<StatsItemResult> callSpGetbudgetStatDetail(
@Param("year") String year,
@Param("code") String code,
@Param("item") String item,
@Param("user") String user,
@Param("stDate") Date stDate,
@Param("edDate") Date edDate,
@Param("won") int won
);
@Query(value ="select * from public.sp_get_budget_code_l3(:year,null,null,null);", nativeQuery = true)
List<L3CodeResult> callSpGetBudgetCodeL3(
@Param("year") String year
);
public static interface BudgetingList {
String getBudgetNameL1();
String getBudgetNameL2();
String getBudgetNameL3();
String getBudgetCodeL3();
Integer getAmount();
String getRemark();
String getModiId();
String getModiDate();
}
public static interface UpdateResult {
Integer get_result_count();
String get_result_code();
String get_error_message();
}
public static interface YearResult {
String getYear();
}
public static interface AssignResult {
String getorg_count();
String getbudget_name_l1();
String getbudget_name_l2();
String getbudget_name_l3();
String getbudget_code_l3();
String getplan_amount();
String gettotal_assign_amount();
String getperiod_assign_amount1();
String getsum_assign_amount1();
String getperiod_assign_amount2();
String getsum_assign_amount2();
String getperiod_assign_amount3();
String getsum_assign_amount3();
String getperiod_assign_amount4();
String getsum_assign_amount4();
String getperiod_assign_amount5();
String getsum_assign_amount5();
String getperiod_assign_amount6();
String getsum_assign_amount6();
String getperiod_assign_amount7();
String getsum_assign_amount7();
String getperiod_assign_amount8();
String getsum_assign_amount8();
String getperiod_assign_amount9();
String getsum_assign_amount9();
}
public static interface L3CodeResult {
String getl3_name();
String getl3_code();
}
public static interface StatsItemResult {
String getorg_name();
String getplan_amount();
String gettotal_assign_amount();
String getexpense_t_amount();
String getbalance_t_amount();
String getexpense_total_rate();
}
public static interface ExpenseResult {
String getorg_count();
String getbudget_name_l1();
String getbudget_name_l2();
String getbudget_name_l3();
String getbudget_code_l3();
String getplan_amount();
String gettotal_assign_amount();
String getexpense_t_amount();
String getbalance_t_amount();
Integer getperiod_assign_amount1();
Integer getexpense_p_amount1();
Integer getblance_amount1();
Integer getexpense_rate1();
String getperiod_assign_amount2();
String getexpense_p_amount2();
String getblance_amount2();
String getexpense_rate2();
String getperiod_assign_amount3();
String getexpense_p_amount3();
String getblance_amount3();
String getexpense_rate3();
String getperiod_assign_amount4();
String getexpense_p_amount4();
String getblance_amount4();
String getexpense_rate4();
String getperiod_assign_amount5();
String getexpense_p_amount5();
String getblance_amount5();
String getexpense_rate5();
String getperiod_assign_amount6();
String getexpense_p_amount6();
String getblance_amount6();
String getexpense_rate6();
String getperiod_assign_amount7();
String getexpense_p_amount7();
String getblance_amount7();
String getexpense_rate7();
String getperiod_assign_amount8();
String getexpense_p_amount8();
String getblance_amount8();
String getexpense_rate8();
String getperiod_assign_amount9();
String getexpense_p_amount9();
String getblance_amount9();
String getexpense_rate9();
}
public static interface ExpenseInfoResult {
String getseq();
String getexpense_date();
String getexpense_item();
String getamount();
String getmodi_id();
String getmodi_date();
}
public static interface CodeResult {
String getOrgName();
String getOrgCode();
}
}

View File

@ -0,0 +1,299 @@
package com.dbnt.faisp.main.budget.service;
import com.dbnt.faisp.main.budget.common.BaseException;
import com.dbnt.faisp.main.budget.common.ResultResponseCode;
import com.dbnt.faisp.main.budget.model.BudgetDto;
import com.dbnt.faisp.main.budget.repository.BudgetRepository;
import com.dbnt.faisp.main.budget.repository.BudgetRepository.*;
import com.dbnt.faisp.main.equip.model.Equip;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
@Service
@Transactional
@RequiredArgsConstructor
public class BudgetService {
private final BudgetRepository budgetRepository;
public List<BudgetingList> selectBudgetingList(UserInfo loginUser, BudgetDto.BudgetingSearchReqeust requestDto){
return budgetRepository.callSpGetBudgetPlanInfo(requestDto.getYear(), "OG001", "admin");
}
public List<YearResult> selectBudgetingYearList(UserInfo loginUser){
return budgetRepository.callSpGetBudgetCodeYearList();
}
// 예산편성 - 연도추가(버튼)
@Transactional
public void copyYearBudgeting(UserInfo loginUser, BudgetDto.BudgetingCopyReqeust requestDto){
// System.out.println(requestDto.getYear());
// System.out.println(requestDto.getCopyYear());
UpdateResult result = budgetRepository.callSpCopyBudgetItem(requestDto.getYear(), requestDto.getCopyYear(), loginUser.getUserId());
if(result.get_result_code().equals("100")) {
return;
} else {
System.out.println(result.get_error_message());
System.out.println(result.get_result_code());
System.out.println(result.get_result_count());
throw new BaseException(ResultResponseCode.FOUND_YEAR);
}
}
//예산편성 - 연도삭제(버튼)
@Transactional
public void deleteBudgetingYear(UserInfo loginUser, BudgetDto.BudgetingCopyReqeust requestDto){
// System.out.println(requestDto.getYear());
// System.out.println(requestDto.getCopyYear());
UpdateResult result = budgetRepository.callBruteForceDeleteBudgetItem(requestDto.getYear(), "admin");
if(result.get_result_code().equals("100")) {
return;
}else if( result.get_result_code().equals("93")){
System.out.println(result.get_error_message());
System.out.println(result.get_result_code());
System.out.println(result.get_result_count());
throw new BaseException(ResultResponseCode.NOT_FOUND_YEAR);
} else {
System.out.println(result.get_error_message());
System.out.println(result.get_result_code());
System.out.println(result.get_result_count());
throw new BaseException(ResultResponseCode.DELETE_FOUND_VALUE);
}
}
//예산편성 - 항목추가
@Transactional
public void insertBudgetingList(UserInfo loginUser, BudgetDto.BudgetingInsertReqeust requestDto){
System.out.println(requestDto.getYear());
System.out.println(requestDto.getNameL1());
System.out.println(requestDto.getNameL2());
System.out.println(requestDto.getNameL3());
UpdateResult result = budgetRepository.callSpAddBudgetPlanCodeName(requestDto.getYear(),requestDto.getNameL1(),requestDto.getNameL2(),requestDto.getNameL3(), "OG001", "admin");
System.out.println(result.get_error_message());
System.out.println(result.get_result_code());
System.out.println(result.get_result_count());
if(result.get_result_code().equals("100")) {
return;
} else {
throw new BaseException(ResultResponseCode.DUPLICATE_CODE);
}
}
//예산편성 - 항목변경
public void updateBudgetingList(UserInfo loginUser, BudgetDto.BudgetingUpdateReqeust requestDto){
System.out.println(requestDto.getYear()+","+ requestDto.getPrevNameL1()+","+requestDto.getPrevNameL2()+","+requestDto.getPrevNameL3()+","+requestDto.getNameL1()+","+requestDto.getNameL2()+","+requestDto.getNameL3());
UpdateResult result = budgetRepository.callSpUpdateBudgetPlanCodeName( requestDto.getYear(), requestDto.getPrevNameL1(), requestDto.getPrevNameL2(), requestDto.getPrevNameL3(),requestDto.getNameL1(),requestDto.getNameL2(),requestDto.getNameL3(), "OG001", "admin");
System.out.println(result.get_error_message());
System.out.println(result.get_result_code());
System.out.println(result.get_result_count());
System.out.println(result);
if(result.get_result_code().equals("100")) {
return;
} else if (result.get_result_code().equals("91")) {
throw new BaseException(ResultResponseCode.DUPLICATE_CODE);
}
}
//예산편성 - 항목삭제
public void deleteBudgetingList(UserInfo loginUser, BudgetDto.BudgetingInsertReqeust requestDto){
System.out.println(requestDto.getYear());
System.out.println(requestDto.getNameL1());
System.out.println(requestDto.getNameL2());
System.out.println(requestDto.getNameL3());
UpdateResult result = budgetRepository.callSpDeleteBudgetPlanCodeName(requestDto.getYear(),requestDto.getNameL1(),requestDto.getNameL2(),requestDto.getNameL3(), "OG001", "admin");
System.out.println(result.get_error_message());
System.out.println(result.get_result_code());
System.out.println(result.get_result_count());
if(result.get_result_code().equals("100")) {
return;
} else {
throw new BaseException(ResultResponseCode.DELETE_FOUND_VALUE);
}
}
// 예산편성 - 예산편성 저장(modal)
@Transactional
public void saveBudgetingList(UserInfo loginUser, BudgetDto.BudgetingSaveReqeust requestDto){
// System.out.println(requestDto.getAmount());
// System.out.println(requestDto.getNameL1());
// System.out.println(requestDto.getNameL2());
// System.out.println(requestDto.getNameL3());
UpdateResult result = budgetRepository.callSpUpdateBudgetPlanCodeItem(requestDto.getYear(), requestDto.getNameL1(),requestDto.getNameL2(),requestDto.getNameL3(), requestDto.getAmount(),"OG001", "admin");
// System.out.println(result.get_error_message());
// System.out.println(result.get_result_code());
// System.out.println(result.get_result_count());
if(result.get_result_code().equals("100")) {
return;
} else {
System.out.println(result.get_error_message());
System.out.println(result.get_result_code());
System.out.println(result.get_result_count());
throw new BaseException(ResultResponseCode.DUPLICATE_CODE);
}
}
//예산편성 - 예산삭제(버튼)
@Transactional
public void deleteBudgeting(UserInfo loginUser, BudgetDto.BudgetingSaveReqeust requestDto){
// System.out.println(requestDto.getYear());
// System.out.println(requestDto.getNameL1());
// System.out.println(requestDto.getNameL2());
// System.out.println(requestDto.getNameL3());
UpdateResult result = budgetRepository.callSpDeleteBudgetPlan(requestDto.getYear(), "OG001", "admin");
if(result.get_result_code().equals("100")) {
return;
} else {
System.out.println(result.get_error_message());
System.out.println(result.get_result_code());
System.out.println(result.get_result_count());
throw new BaseException(ResultResponseCode.NOT_FOUND_CODE);
}
}
// 예산배정
public List<AssignResult> selectBudgetAssignInfo(UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto){
// System.out.println(requestDto.getCode());
// System.out.println(requestDto.getYear());
// System.out.println(requestDto.getStDate());
// System.out.println(requestDto.getEdDate());
return budgetRepository.callSpGetBudgetAssignInfo(requestDto.getYear(), requestDto.getCode(), "admin", java.sql.Date.valueOf(requestDto.getStDate()),java.sql.Date.valueOf(requestDto.getEdDate()));
}
//(공통) 2단계로 하위청 뿌려주기
public List<CodeResult> selectDownOrg(String userOrgCode){
return budgetRepository.callSpGetDownOrg(userOrgCode);
}
//
public List<CodeResult> selectGetLowerOrgCodeByName(UserInfo loginUser){
return budgetRepository.callSpGetLowerOrgCodeByName();
}
//상위 기관 코드 가져오기 (3단계인경우만)
public String selectGetHighOrgCode(String userOrgCode){
return budgetRepository.callSpGetHighOrgCode(userOrgCode);
}
// 예산배정 - 등록(저장버튼)
@Transactional
public void updateAssignList(UserInfo loginUser, BudgetDto.AssignSaveReqeust requestDto){
System.out.println(requestDto.getCode());
System.out.println(requestDto.getOrg());
System.out.println(requestDto.getYear());
// System.out.println(requestDto.getAmount());
UpdateResult result = budgetRepository.callSpAddBudgetAssign(requestDto.getCode(),requestDto.getOrg(),requestDto.getOrg1(), requestDto.getAmount(), "2023-03-15");
System.out.println(result.get_error_message());
System.out.println(result.get_result_code());
System.out.println(result.get_result_count());
if(result.get_result_code().equals("100")) {
return;
}else if(result.get_result_code().equals("72")) {
System.out.println(result.get_error_message());
System.out.println(result.get_result_code());
System.out.println(result.get_result_count());
throw new BaseException(ResultResponseCode.EXPENSE_OVER_VALUE);
} else {
System.out.println(result.get_error_message());
System.out.println(result.get_result_code());
System.out.println(result.get_result_count());
throw new BaseException(ResultResponseCode.DUPLICATE_CODE);
}
}
//집행관리
public List<ExpenseResult> selectBudgetExpenseInfo(UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto){
System.out.println(requestDto.getYear());
System.out.println(requestDto.getCode());
System.out.println(java.sql.Date.valueOf(requestDto.getStDate()));
System.out.println(requestDto.getEdDate());
return budgetRepository.callSpGetBudgetExpenseInfo(requestDto.getYear(), requestDto.getCode(), "admin", java.sql.Date.valueOf(requestDto.getStDate()),java.sql.Date.valueOf(requestDto.getEdDate()));
}
public List<ExpenseInfoResult> selectBudgetExpense(UserInfo loginUser, BudgetDto.ExpenseSearchReqeust requestDto){
System.out.println(requestDto.getYear());
System.out.println(requestDto.getNameL1());
System.out.println(requestDto.getNameL2());
System.out.println(requestDto.getNameL3());
return budgetRepository.callSpGetBudgetExpense(requestDto.getYear(), requestDto.getNameL1(), requestDto.getNameL2(), requestDto.getNameL3(), "본청");
}
@Transactional
public void insertExpense(UserInfo loginUser, BudgetDto.ExpenseSaveReqeust requestDto){
// System.out.println(requestDto.getYear());
// System.out.println(requestDto.getNameL1());
// System.out.println(requestDto.getNameL2());
// System.out.println(requestDto.getNameL3());
UpdateResult result = budgetRepository.callSpAddBudgetExpense(requestDto.getYear(),requestDto.getNameL1(),requestDto.getNameL2(),requestDto.getNameL3(), "본청", requestDto.getItem(), requestDto.getAmount(), java.sql.Date.valueOf(requestDto.getExpenseDate()));
System.out.println(result.get_error_message());
System.out.println(result.get_result_code());
System.out.println(result.get_result_count());
if(result.get_result_code().equals("100")) {
return;
}else if(result.get_result_code().equals("71")) {
throw new BaseException(ResultResponseCode.EXPENSE_OVER_VALUE);
} else {
throw new BaseException(ResultResponseCode.ERROR);
}
}
public List<ExpenseResult> selectSpGetbudgetStatOrg(UserInfo loginUser,BudgetDto.StatsSearchReqeust requestDto){
System.out.println(requestDto.getYear());
System.out.println(requestDto.getCode());
System.out.println(java.sql.Date.valueOf(requestDto.getStDate()));
System.out.println(requestDto.getEdDate());
System.out.println(requestDto.getWon());
return budgetRepository.callSpGetbudgetStatOrg(requestDto.getYear(), requestDto.getCode(), "admin", java.sql.Date.valueOf(requestDto.getStDate()), java.sql.Date.valueOf(requestDto.getEdDate()), requestDto.getWon());
}
public List<StatsItemResult> selectSpGetbudgetStatDetail(UserInfo loginUser,BudgetDto.StatsSearchReqeust requestDto){
System.out.println(requestDto.getYear());
System.out.println(requestDto.getCode());
System.out.println(java.sql.Date.valueOf(requestDto.getStDate()));
System.out.println(requestDto.getEdDate());
System.out.println(requestDto.getWon());
return budgetRepository.callSpGetbudgetStatDetail(requestDto.getYear(), requestDto.getCode(), requestDto.getItem(), "admin", java.sql.Date.valueOf(requestDto.getStDate()), java.sql.Date.valueOf(requestDto.getEdDate()), requestDto.getWon());
}
public List<L3CodeResult> selectSpGetL3Code(UserInfo loginUser,String year){
return budgetRepository.callSpGetBudgetCodeL3(year);
}
// public void insertBudgetingYear(UserInfo loginUser, BudgetDto.BudgetingUpdateReqeust requestDto){
// UpdateResult result = budgetRepository.callSpUpdateBudgetPlanCodeName( requestDto.getPrevNameL1(), requestDto.getPrevNameL2(), requestDto.getPrevNameL3(),requestDto.getYear(),requestDto.getNameL1(),requestDto.getNameL2(),requestDto.getNameL3(), "OG001", "admin");
// System.out.println(result);
// }
//
// public void deleteBudgetingYear(UserInfo loginUser, BudgetDto.BudgetingUpdateReqeust requestDto){
// UpdateResult result = budgetRepository.callSpUpdateBudgetPlanCodeName( requestDto.getPrevNameL1(), requestDto.getPrevNameL2(), requestDto.getPrevNameL3(),requestDto.getYear(),requestDto.getNameL1(),requestDto.getNameL2(),requestDto.getNameL3(), "OG001", "admin");
// System.out.println(result);
// }
}