집행관리 목록조회 로직 수정.

집행관리 항목등록 모달 오류 수정.
master
강석 최 2023-07-26 17:27:31 +09:00
parent 31fcd9dd69
commit 94b9b3e3de
13 changed files with 434 additions and 281 deletions

View File

@ -33,7 +33,7 @@ public class BudgetController {
ModelAndView mav = new ModelAndView("budget/budgeting");
if (requestDto.getYear() == null || requestDto.getYear().equals("")) {
LocalDate date = LocalDate.now();
requestDto.setYear(String.valueOf(date.getYear()));
requestDto.setYear(date.getYear());
}
System.out.println(requestDto.getYear());
List<BudgetingList> list = budgetService.selectBudgetingList(loginUser, requestDto);
@ -215,7 +215,8 @@ public class BudgetController {
if (requestDto.getYear() != null) {
userOrgCode = requestDto.getCode();
List<ExpenseResult> list = budgetService.selectBudgetExpenseInfo(loginUser, requestDto);
// List<ExpenseResult> list = budgetService.selectBudgetExpenseInfo(loginUser, requestDto);
List<ExpenseResult> list = budgetService.selectBudgetExpenseInfoList(loginUser, requestDto);
mav.addObject("list", list);
} else {
// 로그인된 해당청 기본선택
@ -226,13 +227,14 @@ public class BudgetController {
// 첫해 첫날 ~ 오늘날짜 기본세팅
LocalDate date = LocalDate.now();
String CurrentYear = String.valueOf(date.getYear()) + "-01-01";
String CurrentYear = date.getYear() + "-01-01";
requestDto.setStDate(LocalDate.parse(CurrentYear));
requestDto.setEdDate(date);
}
//하위청 리스트
List<CodeResult> downOrgList = budgetService.selectDownOrg(userOrgCode);
mav.addObject("downOrgList", downOrgList);
mav.addObject("loginOrgan", loginUser.getOgCd());
mav.addObject("searchParams", requestDto);
@ -241,11 +243,10 @@ public class BudgetController {
@PostMapping("/expense")
public ResultResponse<?> saveExpense(@AuthenticationPrincipal UserInfo loginUser, @RequestBody BudgetDto.ExpenseSaveReqeust requestDto) {
budgetService.insertExpense(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
return new ResultResponse(budgetService.insertExpense(loginUser, requestDto));
}
/* 예산편성 - 팝업화면 */
/* 집행? - 팝업화면 */
@GetMapping("/expense/modal/view")
public ModelAndView viewExpenseModal(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.ExpenseSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/expenseEditModal");

View File

@ -15,8 +15,6 @@ public interface BudgetMapper {
UpdateResult callSpUpdateBudgetPlanCodeItem(BudgetParams param);
UpdateResult callSpDeleteBudgetPlan(BudgetParams param);
List<AssignResult> callSpGetBudgetAssignInfo(BudgetParams param);
List<AssignResult> selectBudgetAssignInfoList(BudgetParams params);
List<AssignAmount> selectBudgetAssignAmountList(BudgetParams params);
List<CodeResult> callSpGetDownOrg(BudgetParams param);
List<CodeResult> selectDownOrgList(BudgetParams params);
List<CodeResult> callSpGetLowerOrgCodeByName();
@ -29,4 +27,8 @@ public interface BudgetMapper {
List<StatsItemResult> callSpGetbudgetStatDetail(BudgetParams params);
List<L3CodeResult> callSpGetBudgetCodeL3(BudgetParams params);
List<BudgetName> selectBudgetInfoList(BudgetParams params);
List<AssignAmount> selectBudgetAssignAmountList(BudgetParams params);
List<ExpenseAmount> selectBudgetExpenseAmountList(BudgetParams params);
}

View File

@ -24,7 +24,7 @@ public class BudgetDto {
@AllArgsConstructor
@ToString
public static class BudgetingSearchReqeust {
private String year;
private Integer year;
private Long sum;
}
@ -90,7 +90,7 @@ public class BudgetDto {
@AllArgsConstructor
@ToString
public static class AssignSearchReqeust {
private String year;
private Integer year;
private String code;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate stDate;

View File

@ -5,13 +5,7 @@ import lombok.Setter;
@Getter
@Setter
public class AssignResult {
String orgCount;
String budgetNameL1;
String budgetNameL2;
String budgetNameL3;
String budgetCodeL3;
String planAmount = "0";
public class AssignResult extends BudgetName{
String totalAssignAmount = "0";
String periodAssignAmount1 = "0";
String sumAssignAmount1 = "0";

View File

@ -0,0 +1,15 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class BudgetName {
String orgCount;
String budgetNameL1;
String budgetNameL2;
String budgetNameL3;
String budgetCodeL3;
String planAmount = "0";
}

View File

@ -0,0 +1,14 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
@Getter
public class ExpenseAmount {
Integer orderSeq;
String organCd;
String budgetCode;
Integer periodAssignAmount;
Integer expenseAssignAmount;
Integer balanceAmount;
Double expenseRate;
}

View File

@ -1,63 +1,60 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
import lombok.Setter;
@Getter
public class ExpenseResult {
String orgCount;
String budgetNameL1;
String budgetNameL2;
String budgetNameL3;
String budgetCodeL3;
String planAmount;
String totalAssignAmount;
String expenseTAmount;
String balanceTAmount;
Integer periodAssignAmount1;
Integer expensePAmount1;
Integer blanceAmount1;
Integer expenseRate1;
@Setter
public class ExpenseResult extends BudgetName{
Integer totalAssignAmount = 0;
Integer expenseTAmount = 0;
Integer balanceTAmount = 0;
String periodAssignAmount2;
String expensePAmount2;
String blanceAmount2;
String expenseRate2;
Integer periodAssignAmount1 = 0;
Integer expensePAmount1 = 0;
Integer balanceAmount1 = 0;
Double expenseRate1 = 0d;
String periodAssignAmount3;
String expensePAmount3;
String blanceAmount3;
String expenseRate3;
Integer periodAssignAmount2 = 0;
Integer expensePAmount2 = 0;
Integer balanceAmount2 = 0;
Double expenseRate2 = 0d;
Integer periodAssignAmount3 = 0;
Integer expensePAmount3 = 0;
Integer balanceAmount3 = 0;
Double expenseRate3 = 0d;
String periodAssignAmount4;
String expensePAmount4;
String blanceAmount4;
String expenseRate4;
Integer periodAssignAmount4 = 0;
Integer expensePAmount4 = 0;
Integer balanceAmount4 = 0;
Double expenseRate4 = 0d;
String periodAssignAmount5;
String expensePAmount5;
String blanceAmount5;
String expenseRate5;
Integer periodAssignAmount5 = 0;
Integer expensePAmount5 = 0;
Integer balanceAmount5 = 0;
Double expenseRate5 = 0d;
String periodAssignAmount6;
String expensePAmount6;
String blanceAmount6;
String expenseRate6;
Integer periodAssignAmount6 = 0;
Integer expensePAmount6 = 0;
Integer balanceAmount6 = 0;
Double expenseRate6 = 0d;
String periodAssignAmount7;
String expensePAmount7;
String blanceAmount7;
String expenseRate7;
Integer periodAssignAmount7 = 0;
Integer expensePAmount7 = 0;
Integer balanceAmount7 = 0;
Double expenseRate7 = 0d;
String periodAssignAmount8;
String expensePAmount8;
String blanceAmount8;
String expenseRate8;
Integer periodAssignAmount8 = 0;
Integer expensePAmount8 = 0;
Integer balanceAmount8 = 0;
Double expenseRate8 = 0d;
String periodAssignAmount9;
String expensePAmount9;
String blanceAmount9;
String expenseRate9;
Integer periodAssignAmount9 = 0;
Integer expensePAmount9 = 0;
Integer balanceAmount9 = 0;
Double expenseRate9 = 0d;
}

View File

@ -4,5 +4,5 @@ import lombok.Getter;
@Getter
public class YearResult {
String year;
Integer year;
}

View File

@ -37,7 +37,7 @@ public class BudgetService {
/*return budgetRepository.callSpGetBudgetPlanInfo(requestDto.getYear(), "OG001", "admin");*/
BudgetParams param = new BudgetParams();
param.setCode1(requestDto.getYear());
param.setCode1(requestDto.getYear().toString());
param.setCode2("OG001");
param.setCode3("admin");
return budgetMapper.callSpGetBudgetPlanInfo(param);
@ -276,7 +276,7 @@ public class BudgetService {
// 예산배정
public List<AssignResult> selectBudgetAssignInfo(UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear());
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setUser("admin");
params.setStDate(requestDto.getStDate());
@ -286,14 +286,21 @@ public class BudgetService {
public List<AssignResult> selectBudgetAssignInfoList(BudgetDto.AssignSearchReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear());
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setUser("admin");
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
List<AssignResult> assignResultList = budgetMapper.selectBudgetAssignInfoList(params);
List<AssignResult> assignResultList = new ArrayList<>();
List<BudgetName> budgetList = budgetMapper.selectBudgetInfoList(params);
List<AssignAmount> assignAmountList = budgetMapper.selectBudgetAssignAmountList(params);
for(AssignResult result: assignResultList){
for(BudgetName budget: budgetList){
AssignResult result = new AssignResult();
result.setBudgetNameL1(budget.getBudgetNameL1());
result.setBudgetNameL2(budget.getBudgetNameL2());
result.setBudgetNameL3(budget.getBudgetNameL3());
result.setBudgetCodeL3(budget.getBudgetCodeL3());
result.setPlanAmount(budget.getPlanAmount());
for(AssignAmount amount: assignAmountList){
if(result.getBudgetCodeL3().equals(amount.getBudgetCode())){
int totalAssignAmount = result.getTotalAssignAmount()==null?0:Integer.parseInt(result.getTotalAssignAmount());
@ -339,6 +346,7 @@ public class BudgetService {
}
}
}
assignResultList.add(result);
}
return assignResultList;
@ -393,13 +401,8 @@ public class BudgetService {
//집행관리
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()));
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear());
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setUser("admin");
params.setStDate(requestDto.getStDate());
@ -407,49 +410,120 @@ public class BudgetService {
return budgetMapper.callSpGetBudgetExpenseInfo(params);
}
public List<ExpenseResult> selectBudgetExpenseInfoList(UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setUser("admin");
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
List<ExpenseResult> expenseList = new ArrayList<>();
List<BudgetName> budgetList = budgetMapper.selectBudgetInfoList(params);
List<ExpenseAmount> amountList = budgetMapper.selectBudgetExpenseAmountList(params);
for(BudgetName budget : budgetList){
ExpenseResult result = new ExpenseResult();
result.setBudgetNameL1(budget.getBudgetNameL1());
result.setBudgetNameL2(budget.getBudgetNameL2());
result.setBudgetNameL3(budget.getBudgetNameL3());
result.setBudgetCodeL3(budget.getBudgetCodeL3());
result.setPlanAmount(budget.getPlanAmount());
for(ExpenseAmount amount : amountList){
if(result.getBudgetCodeL3().equals(amount.getBudgetCode())){
result.setTotalAssignAmount(result.getTotalAssignAmount()+amount.getPeriodAssignAmount());
result.setExpenseTAmount(result.getExpenseTAmount()+amount.getExpenseAssignAmount());
result.setBalanceTAmount(result.getBalanceTAmount()+ amount.getBalanceAmount());
switch (amount.getOrderSeq()){
case 1:
result.setPeriodAssignAmount1(amount.getPeriodAssignAmount());
result.setExpensePAmount1(amount.getExpenseAssignAmount());
result.setBalanceAmount1(amount.getBalanceAmount());
result.setExpenseRate1(amount.getExpenseRate());
break;
case 2:
result.setPeriodAssignAmount2(amount.getPeriodAssignAmount());
result.setExpensePAmount2(amount.getExpenseAssignAmount());
result.setBalanceAmount2(amount.getBalanceAmount());
result.setExpenseRate2(amount.getExpenseRate());
break;
case 3:
result.setPeriodAssignAmount3(amount.getPeriodAssignAmount());
result.setExpensePAmount3(amount.getExpenseAssignAmount());
result.setBalanceAmount3(amount.getBalanceAmount());
result.setExpenseRate3(amount.getExpenseRate());
break;
case 4:
result.setPeriodAssignAmount4(amount.getPeriodAssignAmount());
result.setExpensePAmount4(amount.getExpenseAssignAmount());
result.setBalanceAmount4(amount.getBalanceAmount());
result.setExpenseRate4(amount.getExpenseRate());
break;
case 5:
result.setPeriodAssignAmount5(amount.getPeriodAssignAmount());
result.setExpensePAmount5(amount.getExpenseAssignAmount());
result.setBalanceAmount5(amount.getBalanceAmount());
result.setExpenseRate5(amount.getExpenseRate());
break;
case 6:
result.setPeriodAssignAmount6(amount.getPeriodAssignAmount());
result.setExpensePAmount6(amount.getExpenseAssignAmount());
result.setBalanceAmount6(amount.getBalanceAmount());
result.setExpenseRate6(amount.getExpenseRate());
break;
case 7:
result.setPeriodAssignAmount7(amount.getPeriodAssignAmount());
result.setExpensePAmount7(amount.getExpenseAssignAmount());
result.setBalanceAmount7(amount.getBalanceAmount());
result.setExpenseRate7(amount.getExpenseRate());
break;
case 8:
result.setPeriodAssignAmount8(amount.getPeriodAssignAmount());
result.setExpensePAmount8(amount.getExpenseAssignAmount());
result.setBalanceAmount8(amount.getBalanceAmount());
result.setExpenseRate8(amount.getExpenseRate());
break;
case 9:
result.setPeriodAssignAmount9(amount.getPeriodAssignAmount());
result.setExpensePAmount9(amount.getExpenseAssignAmount());
result.setBalanceAmount9(amount.getBalanceAmount());
result.setExpenseRate9(amount.getExpenseRate());
break;
}
}
}
expenseList.add(result);
}
return expenseList;
}
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(), "본청");
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear());
params.setCode1(requestDto.getNameL1());
params.setCode2(requestDto.getNameL2());
params.setCode3(requestDto.getNameL3());
params.setOrg("본청");
params.setOrg(loginUser.getOgCd());
return budgetMapper.callSpGetBudgetExpense(params);
}
@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()));
public ResultResponseCode insertExpense(UserInfo loginUser, BudgetDto.ExpenseSaveReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear());
params.setCode1(requestDto.getNameL1());
params.setCode2(requestDto.getNameL2());
params.setCode3(requestDto.getNameL3());
params.setOrg("본청");
params.setOrg(loginUser.getOgCd());
params.setItem(requestDto.getItem());
params.setAmount(requestDto.getAmount());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
params.setDt(formatter.format(requestDto.getExpenseDate()));
UpdateResult result = budgetMapper.callSpAddBudgetExpense(params);
// System.out.println(result.getErrorMessage());
// System.out.println(result.getResultCode());
// System.out.println(result.getResultCount());
if(result.getResultCode().equals("100")) {
return;
return ResultResponseCode.SUCCESS;
}else if(result.getResultCode().equals("71")) {
throw new BaseException(ResultResponseCode.EXPENSE_OVER_VALUE);
return ResultResponseCode.EXPENSE_OVER_VALUE;
} else {
throw new BaseException(ResultResponseCode.ERROR);
return ResultResponseCode.ERROR;
}
}

View File

@ -36,58 +36,7 @@
select *
from sp_get_budget_assign_info(#{year}, #{code}, #{user} ,#{stDate}::date, #{edDate}::date)
</select>
<select id="selectBudgetAssignInfoList" resultType="AssignResult" parameterType="BudgetParams">
SELECT d.budget_code as budgetCodeL3,
a.l1_name as budgetNameL1,
b.l2_name as budgetNameL2,
c.l3_name as budgetNameL3,
d.amount as plan_amount
FROM public.tbl_budget_code_l1 A
inner join public.tbl_budget_code_l2 B on a.l1_code = b.l1_code
inner join public.tbl_budget_code_l3 C on b.l2_code = c.l2_code and c.use_tag = 'Y'
inner join public.tbl_budget_plan D on c.l3_code = d.budget_code and d.org_code = #{code}
WHERE a.L1_YEAR = #{year}
ORDER BY d.budget_code ASC
</select>
<select id="selectBudgetAssignAmountList" resultType="AssignAmount" parameterType="BudgetParams">
select oc.order_seq,
oc.organ_cd,
total.budget_code,
coalesce(tba.period_assign_amount, 0) as period_assign_amount,
coalesce(total.sum_assign_amount, 0) as sum_assign_amount
from (
select l_org_code, budget_code, sum(amount) as sum_assign_amount
from tbl_budget_assign
where h_org_code = #{code}
and EXTRACT( year FROM assign_date ) = ${year}
group by l_org_code, budget_code
) total
left outer join
(
select h_org_code, l_org_code, budget_code, sum(amount) as period_assign_amount
from tbl_budget_assign
where h_org_code = #{code}
and assign_date >= #{stDate}::date
and assign_date &lt;= #{edDate}::date
group by h_org_code, l_org_code, budget_code
) tba on tba.l_org_code = total.l_org_code and tba.budget_code = total.budget_code
inner join (
select (ROW_NUMBER() OVER()) AS order_seq, *
from (
select organ_cd
from (
select #{code} as organ_cd
union all
select organ_cd
from organ_config
where parent_organ = #{code}
) a
inner join code_mgt b on a.organ_cd = b.item_cd
order by b.order_num
) a
) oc on total.l_org_code = oc.organ_cd
order by order_seq, organ_cd, budget_code
</select>
<select id="callSpGetDownOrg" resultType="CodeResult" parameterType="BudgetParams">
select org_code as orgCode,
org_name as orgName
@ -140,4 +89,102 @@
select *
from sp_get_budget_code_l3(#{year},null,null,null)
</select>
<select id="selectBudgetInfoList" resultType="BudgetName" parameterType="BudgetParams">
SELECT d.budget_code as budgetCodeL3,
a.l1_name as budgetNameL1,
b.l2_name as budgetNameL2,
c.l3_name as budgetNameL3,
d.amount as plan_amount
FROM public.tbl_budget_code_l1 A
inner join public.tbl_budget_code_l2 B on a.l1_code = b.l1_code
inner join public.tbl_budget_code_l3 C on b.l2_code = c.l2_code and c.use_tag = 'Y'
inner join public.tbl_budget_plan D on c.l3_code = d.budget_code and d.org_code = #{code}
WHERE a.L1_YEAR = #{year}
ORDER BY d.budget_code ASC
</select>
<select id="selectBudgetAssignAmountList" resultType="AssignAmount" parameterType="BudgetParams">
select oc.order_seq,
oc.organ_cd,
total.budget_code,
coalesce(tba.period_assign_amount, 0) as period_assign_amount,
coalesce(total.sum_assign_amount, 0) as sum_assign_amount
from (
select l_org_code, budget_code, sum(amount) as sum_assign_amount
from tbl_budget_assign
where h_org_code = #{code}
and EXTRACT( year FROM assign_date ) = ${year}
group by l_org_code, budget_code
) total
left outer join
(
select h_org_code, l_org_code, budget_code, sum(amount) as period_assign_amount
from tbl_budget_assign
where h_org_code = #{code}
and assign_date >= #{stDate}::date
and assign_date &lt;= #{edDate}::date
group by h_org_code, l_org_code, budget_code
) tba on tba.l_org_code = total.l_org_code and tba.budget_code = total.budget_code
inner join (
select (ROW_NUMBER() OVER()) AS order_seq, *
from (
select organ_cd
from (
select #{code} as organ_cd
union all
select organ_cd
from organ_config
where parent_organ = #{code}
) a
inner join code_mgt b on a.organ_cd = b.item_cd
order by b.order_num
) a
) oc on total.l_org_code = oc.organ_cd
order by order_seq, organ_cd, budget_code
</select>
<select id="selectBudgetExpenseAmountList" resultType="ExpenseAmount" parameterType="BudgetParams">
select order_seq,
organ_cd,
budget_code,
period_assign_amount,
expense_assign_amount,
period_assign_amount-expense_assign_amount as balance_amount,
round(expense_assign_amount/period_assign_amount*100 ,2) as expense_rate
from (
select oc.order_seq, oc.organ_cd, total.budget_code,
coalesce(total.sum_assign_amount, 0) as period_assign_amount,
coalesce(expn.expense_assign_amount, 0) as expense_assign_amount
from (
select l_org_code, budget_code, sum(amount) as sum_assign_amount
from tbl_budget_assign
where h_org_code = #{code}
and EXTRACT( year FROM assign_date ) = ${year}
and amount > 0
group by l_org_code, budget_code
) total
inner join (
select (ROW_NUMBER() OVER()) AS order_seq, *
from (
select organ_cd
from (
select #{code} as organ_cd
union all
select organ_cd
from organ_config
where parent_organ = #{code}
) a
inner join code_mgt b on a.organ_cd = b.item_cd
order by b.order_num
) a
) oc on total.l_org_code = oc.organ_cd
left outer join (
select org_code, budget_code, sum(amount) as expense_assign_amount
from tbl_budget_expense
where expense_date >= #{stDate}::date
and expense_date &lt;= #{edDate}::date
group by org_code, budget_code
) expn on total.l_org_code = expn.org_code and total.budget_code = expn.budget_code
order by order_seq, organ_cd, budget_code
) a
</select>
</mapper>

View File

@ -30,9 +30,10 @@
<div class="row justify-content-end">
<div class="col-auto">
<select class="form-select" name="year" id="searchYear">
<option th:each="info, i : ${yearList}" th:value="${info.year}"
th:selected="${searchParams?.year eq info.year}"
th:text="${info.year}"></option>
<th:block th:each="year, i : ${yearList}">
<option th:value="${year.year}" th:text="${year.year}"
th:selected="${searchParams.year eq year.year}"></option>
</th:block>
</select>
</div>
<div class="col-auto">
@ -83,6 +84,7 @@
</table>
</div>
</div>
<th:block th:if="${#temporals.year(#temporals.createNow())<= searchParams.year}">
<div class="row justify-content-between">
<div class="col-auto">
<button class="btn btn-success" id="addBtn">항목추가</button>
@ -97,7 +99,7 @@
<button class="btn btn-primary" id="budgetDeleteBtn">예산삭제</button>
</div>
</div>
</th:block>
<div class="modal fade" id="editModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="faRptEditModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xxl modal-dialog-scrollable">
<div class="modal-content" id="editModalContent"></div>

View File

@ -38,12 +38,17 @@
<div class="col-auto">
</div>
<div class="col-auto">
<th:block th:if="${loginOrgan eq 'OG001'}">
<select class="form-select form-select-sm" name="code" id="code">
<option value="OG001" th:selected="${searchParams?.code eq '본청'}">본청</option>
<option th:each="code, i : ${codeList}" th:value="${code?.orgCode}"
<option value="OG001">본청</option>
<option th:each="code : ${downOrgList}" th:value="${code?.orgCode}"
th:text="${code?.orgName}" th:selected="${searchParams?.code eq code.orgCode}">
</option>
</select>
</th:block>
<th:block th:unless="${loginOrgan eq 'OG001'}">
<input type="hidden" name="code" id="code" th:value="${loginOrgan}">
</th:block>
</div>
<div class="col-auto">
<div class="input-group w-auto input-daterange" id="dateSelectorDiv">
@ -69,12 +74,14 @@
<th rowspan="2">예산총액</th>
<th rowspan="2">예산총배정액<br>(누적)</th>
<th colspan="2">집행액(총계)</th>
<th colspan="4" class="w-400px" th:each="orglist : ${downOrgList}" th:text="${orglist.orgName}"></th>
<th:block th:each="org:${downOrgList}">
<th colspan="4" class="w-400px" th:text="${org.orgName}"></th>
</th:block>
</tr>
<tr class="table-secondary">
<th>지출총액</th>
<th>보유잔액</th>
<th:block th:each="orglist : ${downOrgList}">
<th:block th:each="org : ${downOrgList}">
<th class="w-100px">배정액</th>
<th class="w-100px">지출총액</th>
<th class="w-100px">잔액</th>
@ -95,53 +102,53 @@
<td th:text="${#numbers.formatInteger(info.expenseTAmount,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceTAmount,1,'COMMA')}" class="text-end"></td>
<th:block th:each="orglist, j : ${downOrgList}">
<th:block th:if="${j.index} == '0'">
<th:block th:if="${j.index} == '0'"><!--배정, 집행, 잔액, 률-->
<td th:text="${#numbers.formatInteger(info.periodAssignAmount1,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount1,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount1,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(#numbers.formatInteger(info.expenseRate1,1,'COMMA'), '%')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount1,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(info.expenseRate1, '%')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '1'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount2,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount2,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount2,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(#numbers.formatInteger(info.expenseRate2,1,'COMMA'), '%')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount2,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(info.expenseRate2, '%')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '2'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount3,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount3,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount3,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(#numbers.formatInteger(info.expenseRate3,1,'COMMA'), '%')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount3,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(info.expenseRate3, '%')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '3'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount4,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount4,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount4,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(#numbers.formatInteger(info.expenseRate4,1,'COMMA'), '%')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount4,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(info.expenseRate4, '%')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '4'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount5,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount5,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount5,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(#numbers.formatInteger(info.expenseRate5,1,'COMMA'), '%')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount5,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(info.expenseRate5, '%')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '5'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount6,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount6,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount6,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(#numbers.formatInteger(info.expenseRate6,1,'COMMA'), '%')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount6,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(info.expenseRate6, '%')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '6'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount7,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount7,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount7,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(#numbers.formatInteger(info.expenseRate7,1,'COMMA'), '%')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount7,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(info.expenseRate7, '%')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '7'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount8,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount8,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount8,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(#numbers.formatInteger(info.expenseRate8,1,'COMMA'), '%')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount8,1,'COMMA')}" class="text-end"></td>
<td th:text="${#strings.concat(info.expenseRate8, '%')}" class="text-end"></td>
</th:block>
</th:block>
</tr>

View File

@ -115,49 +115,49 @@
<th:block th:if="${j.index} == '0'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount1,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount1,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount1,1,'COMMA')}" class="text-end">11</td>
<td th:text="${#numbers.formatInteger(info.balanceAmount1,1,'COMMA')}" class="text-end">11</td>
<td th:text="${#numbers.formatInteger(info.expenseRate1,1,'COMMA')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '1'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount2,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount2,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount2,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount2,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate2,1,'COMMA')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '2'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount3,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount3,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount3,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount3,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate3,1,'COMMA')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '3'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount4,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount4,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount4,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount4,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate4,1,'COMMA')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '4'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount5,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount5,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount5,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount5,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate5,1,'COMMA')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '5'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount6,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount6,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount6,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount6,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate6,1,'COMMA')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '6'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount7,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount7,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount7,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount7,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate7,1,'COMMA')}" class="text-end"></td>
</th:block>
<th:block th:if="${j.index} == '7'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount8,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expensePAmount8,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.blanceAmount8,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount8,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate8,1,'COMMA')}" class="text-end"></td>
</th:block>
</th:block>