예산통계 수정중

master
최강석 2023-07-27 18:41:53 +09:00
parent 94b9b3e3de
commit 6c5e968861
13 changed files with 273 additions and 157 deletions

View File

@ -31,7 +31,7 @@ public class BudgetController {
@GetMapping("/budgeting") @GetMapping("/budgeting")
public ModelAndView viewShipList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingSearchReqeust requestDto, Pageable pageable) { public ModelAndView viewShipList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/budgeting"); ModelAndView mav = new ModelAndView("budget/budgeting");
if (requestDto.getYear() == null || requestDto.getYear().equals("")) { if (requestDto.getYear() == null) {
LocalDate date = LocalDate.now(); LocalDate date = LocalDate.now();
requestDto.setYear(date.getYear()); requestDto.setYear(date.getYear());
} }
@ -148,9 +148,10 @@ public class BudgetController {
requestDto.setStDate(LocalDate.parse(CurrentYear)); requestDto.setStDate(LocalDate.parse(CurrentYear));
requestDto.setEdDate(date); requestDto.setEdDate(date);
} }
//하위청 리스트 //하위청 리스트 - 검색용
List<CodeResult> downOrgList = budgetService.selectDownOrg(userOrgCode); mav.addObject("downOrgList", budgetService.selectDownOrg(loginUser.getOgCd()));
mav.addObject("downOrgList", downOrgList); //하위청 리스트 - 목록용
mav.addObject("downList", budgetService.selectDownOrg(requestDto.getCode()));
mav.addObject("loginOrgan", loginUser.getOgCd()); mav.addObject("loginOrgan", loginUser.getOgCd());
mav.addObject("searchParams", requestDto); mav.addObject("searchParams", requestDto);
@ -186,7 +187,7 @@ public class BudgetController {
mav.addObject("list"); mav.addObject("list");
} }
//하위청 리스트 //하위청 리스트
List<CodeResult> downOrgList = budgetService.selectDownOrg(userOrgCode); List<CodeResult> downOrgList = budgetService.selectDownOrg(loginUser.getOgCd());
mav.addObject("downOrgList", downOrgList); mav.addObject("downOrgList", downOrgList);
List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser); List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser);
@ -216,7 +217,13 @@ public class BudgetController {
userOrgCode = requestDto.getCode(); userOrgCode = requestDto.getCode();
// List<ExpenseResult> list = budgetService.selectBudgetExpenseInfo(loginUser, requestDto); // List<ExpenseResult> list = budgetService.selectBudgetExpenseInfo(loginUser, requestDto);
List<ExpenseResult> list = budgetService.selectBudgetExpenseInfoList(loginUser, requestDto); BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setUser(loginUser.getUserId());
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
List<ExpenseResult> list = budgetService.selectBudgetExpenseInfoList(params);
mav.addObject("list", list); mav.addObject("list", list);
} else { } else {
// 로그인된 해당청 기본선택 // 로그인된 해당청 기본선택
@ -231,9 +238,10 @@ public class BudgetController {
requestDto.setStDate(LocalDate.parse(CurrentYear)); requestDto.setStDate(LocalDate.parse(CurrentYear));
requestDto.setEdDate(date); requestDto.setEdDate(date);
} }
//하위청 리스트 //하위청 리스트 - 검색용
List<CodeResult> downOrgList = budgetService.selectDownOrg(userOrgCode); mav.addObject("downOrgList", budgetService.selectDownOrg(loginUser.getOgCd()));
mav.addObject("downOrgList", downOrgList); //하위청 리스트 - 목록용
mav.addObject("downList", budgetService.selectDownOrg(requestDto.getCode()));
mav.addObject("loginOrgan", loginUser.getOgCd()); mav.addObject("loginOrgan", loginUser.getOgCd());
mav.addObject("searchParams", requestDto); mav.addObject("searchParams", requestDto);
@ -271,15 +279,7 @@ public class BudgetController {
mav.addObject("list", list); mav.addObject("list", list);
} else { } else {
// 로그인된 해당청 기본선택 // 로그인된 해당청 기본선택
userOrgCode = userInfoService.selectUserInfo(loginUser.getUserSeq()).getOgCd(); userOrgCode = loginUser.getOgCd();
String HighOrgCode = budgetService.selectGetHighOrgCode(userOrgCode);
if (HighOrgCode == null) { // 1, 2단계시
requestDto.setCode(userOrgCode);
} else { // 3단계 이하 관서시
requestDto.setCode(HighOrgCode);
userOrgCode = HighOrgCode;
}
mav.addObject("list"); mav.addObject("list");
// 첫해 첫날 ~ 오늘날짜 기본세팅 // 첫해 첫날 ~ 오늘날짜 기본세팅
@ -289,7 +289,7 @@ public class BudgetController {
requestDto.setEdDate(date); requestDto.setEdDate(date);
} }
//하위청 리스트 //하위청 리스트
List<CodeResult> downOrgList = budgetService.selectDownOrg(userOrgCode); List<CodeResult> downOrgList = budgetService.selectDownOrg(loginUser.getOgCd());
mav.addObject("downOrgList", downOrgList); mav.addObject("downOrgList", downOrgList);
List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser); List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser);
@ -302,13 +302,22 @@ public class BudgetController {
/* 집행표 - 화면 */ /* 집행표 - 화면 */
@GetMapping("/stats/org") @GetMapping("/stats/org")
public ModelAndView viewExpenseList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.StatsSearchReqeust requestDto, Pageable pageable) { public ModelAndView viewExpenseList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.StatsSearchReqeust requestDto) {
ModelAndView mav = new ModelAndView("budget/statsOrg"); ModelAndView mav = new ModelAndView("budget/statsOrg");
String userOrgCode; String userOrgCode;
if (requestDto.getYear() != null) { if (requestDto.getYear() != null) {
userOrgCode = requestDto.getCode(); userOrgCode = requestDto.getCode();
List<ExpenseResult> list = budgetService.selectSpGetbudgetStatOrg(loginUser, requestDto); // List<ExpenseResult> list = budgetService.selectSpGetbudgetStatOrg(loginUser, requestDto);
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setUser(loginUser.getUserId());
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
params.setWon(requestDto.getWon());
List<ExpenseResult> list = budgetService.selectBudgetExpenseInfoList(params);
mav.addObject("list", list); mav.addObject("list", list);
} else { } else {
// 로그인된 해당청 기본선택 // 로그인된 해당청 기본선택
@ -329,13 +338,11 @@ public class BudgetController {
requestDto.setStDate(LocalDate.parse(CurrentYear)); requestDto.setStDate(LocalDate.parse(CurrentYear));
requestDto.setEdDate(date); requestDto.setEdDate(date);
} }
//하위청 리스트 //하위청 리스트 - 검색용
List<CodeResult> downOrgList = budgetService.selectDownOrg(userOrgCode); mav.addObject("downOrgList", budgetService.selectDownOrg(loginUser.getOgCd()));
mav.addObject("downOrgList", downOrgList); //하위청 리스트 - 목록용
mav.addObject("downList", budgetService.selectDownOrg(requestDto.getCode()));
List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser); mav.addObject("loginOrgan", loginUser.getOgCd());
mav.addObject("codeList", codeList);
mav.addObject("searchParams", requestDto); mav.addObject("searchParams", requestDto);
return mav; return mav;
@ -348,24 +355,29 @@ public class BudgetController {
List<YearResult> yearList = budgetService.selectBudgetingYearList(loginUser); List<YearResult> yearList = budgetService.selectBudgetingYearList(loginUser);
if (requestDto.getStDate() != null) { if (requestDto.getStDate() != null) {
List<StatsItemResult> list = budgetService.selectSpGetbudgetStatDetail(loginUser, requestDto); // List<StatsItemResult> list = budgetService.selectSpGetbudgetStatDetail(loginUser, requestDto);
List<StatsDetailResult> list = budgetService.selectStatDetailList(requestDto);
List<L3CodeResult> codeList = budgetService.selectSpGetL3Code(loginUser, requestDto.getYear()); List<L3CodeResult> codeList = budgetService.selectSpGetL3Code(loginUser, requestDto.getYear());
mav.addObject("list", list); mav.addObject("list", list);
mav.addObject("codeList", codeList); mav.addObject("codeList", codeList);
} else { } else {
LocalDate date = LocalDate.now(); LocalDate date = LocalDate.now();
List<L3CodeResult> codeList = budgetService.selectSpGetL3Code(loginUser, String.valueOf(date.getYear())); List<L3CodeResult> codeList = budgetService.selectSpGetL3Code(loginUser, date.getYear());
requestDto.setYear(String.valueOf(date.getYear())); requestDto.setYear(date.getYear());
mav.addObject("list"); mav.addObject("list");
mav.addObject("codeList", codeList); mav.addObject("codeList", codeList);
requestDto.setCode(loginUser.getOgCd());
// 첫해 첫날 ~ 오늘날짜 기본세팅 // 첫해 첫날 ~ 오늘날짜 기본세팅
String CurrentYear = String.valueOf(date.getYear()) + "-01-01"; String CurrentYear = date.getYear() + "-01-01";
requestDto.setStDate(LocalDate.parse(CurrentYear)); requestDto.setStDate(LocalDate.parse(CurrentYear));
requestDto.setEdDate(date); requestDto.setEdDate(date);
} }
List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser);
//하위청 리스트 - 검색용
mav.addObject("downOrgList", budgetService.selectDownOrg(loginUser.getOgCd()));
//하위청 리스트 - 목록용
mav.addObject("downList", budgetService.selectDownOrg(requestDto.getCode()));
mav.addObject("loginOrgan", loginUser.getOgCd());
mav.addObject("yearList", yearList); mav.addObject("yearList", yearList);
mav.addObject("searchParams", requestDto); mav.addObject("searchParams", requestDto);

View File

@ -31,4 +31,5 @@ public interface BudgetMapper {
List<BudgetName> selectBudgetInfoList(BudgetParams params); List<BudgetName> selectBudgetInfoList(BudgetParams params);
List<AssignAmount> selectBudgetAssignAmountList(BudgetParams params); List<AssignAmount> selectBudgetAssignAmountList(BudgetParams params);
List<ExpenseAmount> selectBudgetExpenseAmountList(BudgetParams params); List<ExpenseAmount> selectBudgetExpenseAmountList(BudgetParams params);
List<StatsDetailResult> selectStatDetailList(BudgetParams params);
} }

View File

@ -14,10 +14,9 @@ public class BudgetDto {
@AllArgsConstructor @AllArgsConstructor
@ToString @ToString
public static class BudgetingListResponse { public static class BudgetingListResponse {
private String budgetNameL1;
private String budget_name_l1; private String budgetNameL2;
private String budget_name_l2; private String budgetNameL3;
private String budget_name_l3;
} }
@Data @Data
@ -123,7 +122,7 @@ public class BudgetDto {
@AllArgsConstructor @AllArgsConstructor
@ToString @ToString
public static class StatsSearchReqeust { public static class StatsSearchReqeust {
private String year; private Integer year;
private String code; private String code;
private String item; private String item;
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@ -151,7 +150,7 @@ public class BudgetDto {
@AllArgsConstructor @AllArgsConstructor
@ToString @ToString
public static class L3CodeRequest { public static class L3CodeRequest {
private String year; private Integer year;
} }
} }

View File

@ -22,7 +22,7 @@ public class BudgetParams {
private String user; private String user;
private String id; private String id;
private String item; private String item;
private Integer won; private Integer won = 1;
private String newCode1; private String newCode1;
private String newCode2; private String newCode2;

View File

@ -6,55 +6,56 @@ import lombok.Setter;
@Getter @Getter
@Setter @Setter
public class ExpenseResult extends BudgetName{ public class ExpenseResult extends BudgetName{
Integer totalAssignAmount = 0; Double totalAssignAmount = 0d;
Integer expenseTAmount = 0; Double expenseTAmount = 0d;
Integer balanceTAmount = 0; Double balanceTAmount = 0d;
Double taRate = 0d;
Integer periodAssignAmount1 = 0; Double periodAssignAmount1 = 0d;
Integer expensePAmount1 = 0; Double expensePAmount1 = 0d;
Integer balanceAmount1 = 0; Double balanceAmount1 = 0d;
Double expenseRate1 = 0d; Double expenseRate1 = 0d;
Integer periodAssignAmount2 = 0; Double periodAssignAmount2 = 0d;
Integer expensePAmount2 = 0; Double expensePAmount2 = 0d;
Integer balanceAmount2 = 0; Double balanceAmount2 = 0d;
Double expenseRate2 = 0d; Double expenseRate2 = 0d;
Integer periodAssignAmount3 = 0; Double periodAssignAmount3 = 0d;
Integer expensePAmount3 = 0; Double expensePAmount3 = 0d;
Integer balanceAmount3 = 0; Double balanceAmount3 = 0d;
Double expenseRate3 = 0d; Double expenseRate3 = 0d;
Integer periodAssignAmount4 = 0; Double periodAssignAmount4 = 0d;
Integer expensePAmount4 = 0; Double expensePAmount4 = 0d;
Integer balanceAmount4 = 0; Double balanceAmount4 = 0d;
Double expenseRate4 = 0d; Double expenseRate4 = 0d;
Integer periodAssignAmount5 = 0; Double periodAssignAmount5 = 0d;
Integer expensePAmount5 = 0; Double expensePAmount5 = 0d;
Integer balanceAmount5 = 0; Double balanceAmount5 = 0d;
Double expenseRate5 = 0d; Double expenseRate5 = 0d;
Integer periodAssignAmount6 = 0; Double periodAssignAmount6 = 0d;
Integer expensePAmount6 = 0; Double expensePAmount6 = 0d;
Integer balanceAmount6 = 0; Double balanceAmount6 = 0d;
Double expenseRate6 = 0d; Double expenseRate6 = 0d;
Integer periodAssignAmount7 = 0; Double periodAssignAmount7 = 0d;
Integer expensePAmount7 = 0; Double expensePAmount7 = 0d;
Integer balanceAmount7 = 0; Double balanceAmount7 = 0d;
Double expenseRate7 = 0d; Double expenseRate7 = 0d;
Integer periodAssignAmount8 = 0; Double periodAssignAmount8 = 0d;
Integer expensePAmount8 = 0; Double expensePAmount8 = 0d;
Integer balanceAmount8 = 0; Double balanceAmount8 = 0d;
Double expenseRate8 = 0d; Double expenseRate8 = 0d;
Integer periodAssignAmount9 = 0; Double periodAssignAmount9 = 0d;
Integer expensePAmount9 = 0; Double expensePAmount9 = 0d;
Integer balanceAmount9 = 0; Double balanceAmount9 = 0d;
Double expenseRate9 = 0d; Double expenseRate9 = 0d;
} }

View File

@ -0,0 +1,15 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class StatsDetailResult {
String organCd;
Double planAmount = 0d;
Double assignAmount = 0d;
Double expenseAmount = 0d;
Double balanceAmount = 0d;
Double rate = 0d;
}

View File

@ -410,16 +410,11 @@ public class BudgetService {
return budgetMapper.callSpGetBudgetExpenseInfo(params); return budgetMapper.callSpGetBudgetExpenseInfo(params);
} }
public List<ExpenseResult> selectBudgetExpenseInfoList(UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto){ public List<ExpenseResult> selectBudgetExpenseInfoList(BudgetParams params){
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<ExpenseResult> expenseList = new ArrayList<>();
List<BudgetName> budgetList = budgetMapper.selectBudgetInfoList(params); List<BudgetName> budgetList = budgetMapper.selectBudgetInfoList(params);
List<ExpenseAmount> amountList = budgetMapper.selectBudgetExpenseAmountList(params); List<ExpenseAmount> amountList = budgetMapper.selectBudgetExpenseAmountList(params);
Integer wonUnit = params.getWon();
for(BudgetName budget : budgetList){ for(BudgetName budget : budgetList){
ExpenseResult result = new ExpenseResult(); ExpenseResult result = new ExpenseResult();
result.setBudgetNameL1(budget.getBudgetNameL1()); result.setBudgetNameL1(budget.getBudgetNameL1());
@ -429,62 +424,62 @@ public class BudgetService {
result.setPlanAmount(budget.getPlanAmount()); result.setPlanAmount(budget.getPlanAmount());
for(ExpenseAmount amount : amountList){ for(ExpenseAmount amount : amountList){
if(result.getBudgetCodeL3().equals(amount.getBudgetCode())){ if(result.getBudgetCodeL3().equals(amount.getBudgetCode())){
result.setTotalAssignAmount(result.getTotalAssignAmount()+amount.getPeriodAssignAmount()); result.setTotalAssignAmount(result.getTotalAssignAmount()+(double)(amount.getPeriodAssignAmount()/wonUnit));
result.setExpenseTAmount(result.getExpenseTAmount()+amount.getExpenseAssignAmount()); result.setExpenseTAmount(result.getExpenseTAmount()+(double)(amount.getExpenseAssignAmount()/wonUnit));
result.setBalanceTAmount(result.getBalanceTAmount()+ amount.getBalanceAmount()); result.setBalanceTAmount(result.getBalanceTAmount()+ (double)(amount.getBalanceAmount()/wonUnit));
switch (amount.getOrderSeq()){ switch (amount.getOrderSeq()){
case 1: case 1:
result.setPeriodAssignAmount1(amount.getPeriodAssignAmount()); result.setPeriodAssignAmount1((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount1(amount.getExpenseAssignAmount()); result.setExpensePAmount1((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount1(amount.getBalanceAmount()); result.setBalanceAmount1((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate1(amount.getExpenseRate()); result.setExpenseRate1(amount.getExpenseRate());
break; break;
case 2: case 2:
result.setPeriodAssignAmount2(amount.getPeriodAssignAmount()); result.setPeriodAssignAmount2((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount2(amount.getExpenseAssignAmount()); result.setExpensePAmount2((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount2(amount.getBalanceAmount()); result.setBalanceAmount2((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate2(amount.getExpenseRate()); result.setExpenseRate2(amount.getExpenseRate());
break; break;
case 3: case 3:
result.setPeriodAssignAmount3(amount.getPeriodAssignAmount()); result.setPeriodAssignAmount3((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount3(amount.getExpenseAssignAmount()); result.setExpensePAmount3((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount3(amount.getBalanceAmount()); result.setBalanceAmount3((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate3(amount.getExpenseRate()); result.setExpenseRate3(amount.getExpenseRate());
break; break;
case 4: case 4:
result.setPeriodAssignAmount4(amount.getPeriodAssignAmount()); result.setPeriodAssignAmount4((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount4(amount.getExpenseAssignAmount()); result.setExpensePAmount4((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount4(amount.getBalanceAmount()); result.setBalanceAmount4((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate4(amount.getExpenseRate()); result.setExpenseRate4(amount.getExpenseRate());
break; break;
case 5: case 5:
result.setPeriodAssignAmount5(amount.getPeriodAssignAmount()); result.setPeriodAssignAmount5((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount5(amount.getExpenseAssignAmount()); result.setExpensePAmount5((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount5(amount.getBalanceAmount()); result.setBalanceAmount5((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate5(amount.getExpenseRate()); result.setExpenseRate5(amount.getExpenseRate());
break; break;
case 6: case 6:
result.setPeriodAssignAmount6(amount.getPeriodAssignAmount()); result.setPeriodAssignAmount6((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount6(amount.getExpenseAssignAmount()); result.setExpensePAmount6((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount6(amount.getBalanceAmount()); result.setBalanceAmount6((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate6(amount.getExpenseRate()); result.setExpenseRate6(amount.getExpenseRate());
break; break;
case 7: case 7:
result.setPeriodAssignAmount7(amount.getPeriodAssignAmount()); result.setPeriodAssignAmount7((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount7(amount.getExpenseAssignAmount()); result.setExpensePAmount7((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount7(amount.getBalanceAmount()); result.setBalanceAmount7((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate7(amount.getExpenseRate()); result.setExpenseRate7(amount.getExpenseRate());
break; break;
case 8: case 8:
result.setPeriodAssignAmount8(amount.getPeriodAssignAmount()); result.setPeriodAssignAmount8((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount8(amount.getExpenseAssignAmount()); result.setExpensePAmount8((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount8(amount.getBalanceAmount()); result.setBalanceAmount8((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate8(amount.getExpenseRate()); result.setExpenseRate8(amount.getExpenseRate());
break; break;
case 9: case 9:
result.setPeriodAssignAmount9(amount.getPeriodAssignAmount()); result.setPeriodAssignAmount9((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount9(amount.getExpenseAssignAmount()); result.setExpensePAmount9((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount9(amount.getBalanceAmount()); result.setBalanceAmount9((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate9(amount.getExpenseRate()); result.setExpenseRate9(amount.getExpenseRate());
break; break;
} }
@ -492,6 +487,9 @@ public class BudgetService {
} }
expenseList.add(result); expenseList.add(result);
} }
for(ExpenseResult result : expenseList){
result.setTaRate(Math.round((result.getExpenseTAmount()/(result.getBalanceTAmount()+result.getExpenseTAmount()))*10000)/100.0);
}
return expenseList; return expenseList;
} }
@ -537,7 +535,7 @@ public class BudgetService {
// return budgetRepository.callSpGetbudgetStatOrg(requestDto.getYear(), requestDto.getCode(), "admin", java.sql.Date.valueOf(requestDto.getStDate()), java.sql.Date.valueOf(requestDto.getEdDate()), requestDto.getWon()); // return budgetRepository.callSpGetbudgetStatOrg(requestDto.getYear(), requestDto.getCode(), "admin", java.sql.Date.valueOf(requestDto.getStDate()), java.sql.Date.valueOf(requestDto.getEdDate()), requestDto.getWon());
BudgetParams params = new BudgetParams(); BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear()); params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode()); params.setCode(requestDto.getCode());
params.setUser("admin"); params.setUser("admin");
params.setStDate(requestDto.getStDate()); params.setStDate(requestDto.getStDate());
@ -555,7 +553,7 @@ public class BudgetService {
// return budgetRepository.callSpGetbudgetStatDetail(requestDto.getYear(), requestDto.getCode(), requestDto.getItem(), "admin", java.sql.Date.valueOf(requestDto.getStDate()), java.sql.Date.valueOf(requestDto.getEdDate()), 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());
BudgetParams params = new BudgetParams(); BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear()); params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode()); params.setCode(requestDto.getCode());
params.setItem(requestDto.getItem()); params.setItem(requestDto.getItem());
params.setUser("admin"); params.setUser("admin");
@ -565,12 +563,33 @@ public class BudgetService {
return budgetMapper.callSpGetbudgetStatDetail(params); return budgetMapper.callSpGetbudgetStatDetail(params);
} }
public List<L3CodeResult> selectSpGetL3Code(UserInfo loginUser, String year){ public List<StatsDetailResult> selectStatDetailList(BudgetDto.StatsSearchReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setItem(requestDto.getItem());
params.setUser("admin");
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
params.setWon(requestDto.getWon());
List<StatsDetailResult> statsList = budgetMapper.selectStatDetailList(params);
Double wonUnit = params.getWon().doubleValue();
for(StatsDetailResult stat : statsList){
stat.setPlanAmount(stat.getPlanAmount()/wonUnit);
stat.setAssignAmount(stat.getAssignAmount()/wonUnit);
stat.setExpenseAmount(stat.getExpenseAmount()/wonUnit);
stat.setBalanceAmount(stat.getAssignAmount()-stat.getExpenseAmount());
stat.setRate((double)Math.round(stat.getExpenseAmount()/stat.getAssignAmount()*10000)/100);
}
return statsList;
}
public List<L3CodeResult> selectSpGetL3Code(UserInfo loginUser, Integer year){
// return budgetRepository.callSpGetBudgetCodeL3(year); // return budgetRepository.callSpGetBudgetCodeL3(year);
BudgetParams params = new BudgetParams(); BudgetParams params = new BudgetParams();
params.setYear(year); params.setYear(year.toString());
return budgetMapper.callSpGetBudgetCodeL3(params); return budgetMapper.callSpGetBudgetCodeL3(params);
} }

View File

@ -77,6 +77,7 @@
<select id="callSpAddBudgetExpense" resultType="UpdateResult" parameterType="BudgetParams"> <select id="callSpAddBudgetExpense" resultType="UpdateResult" parameterType="BudgetParams">
call sp_add_budget_EXPENSE(#{year},#{code1},#{code2},#{code3}, #{org}, #{item} ,cast (#{amount} as bigint), #{dt}::date,'admin',NULL,NULL,NULL) call sp_add_budget_EXPENSE(#{year},#{code1},#{code2},#{code3}, #{org}, #{item} ,cast (#{amount} as bigint), #{dt}::date,'admin',NULL,NULL,NULL)
</select> </select>
<select id="callSpGetbudgetStatOrg" resultType="ExpenseResult" parameterType="BudgetParams"> <select id="callSpGetbudgetStatOrg" resultType="ExpenseResult" parameterType="BudgetParams">
select * select *
from sp_get_budget_statistics_by_org(#{year},#{code},#{user},#{stDate}::date,#{edDate}::date,#{won}) from sp_get_budget_statistics_by_org(#{year},#{code},#{user},#{stDate}::date,#{edDate}::date,#{won})
@ -85,6 +86,7 @@
select * select *
from sp_get_budget_statistics_by_item(#{year},#{code},#{item}, #{user},#{stDate}::date,#{edDate}::date,#{won}) from sp_get_budget_statistics_by_item(#{year},#{code},#{item}, #{user},#{stDate}::date,#{edDate}::date,#{won})
</select> </select>
<select id="callSpGetBudgetCodeL3" resultType="L3CodeResult" parameterType="BudgetParams"> <select id="callSpGetBudgetCodeL3" resultType="L3CodeResult" parameterType="BudgetParams">
select * select *
from sp_get_budget_code_l3(#{year},null,null,null) from sp_get_budget_code_l3(#{year},null,null,null)
@ -138,7 +140,7 @@
) a ) a
inner join code_mgt b on a.organ_cd = b.item_cd inner join code_mgt b on a.organ_cd = b.item_cd
order by b.order_num order by b.order_num
) a ) a
) oc on total.l_org_code = oc.organ_cd ) oc on total.l_org_code = oc.organ_cd
order by order_seq, organ_cd, budget_code order by order_seq, organ_cd, budget_code
</select> </select>
@ -187,4 +189,45 @@
order by order_seq, organ_cd, budget_code order by order_seq, organ_cd, budget_code
) a ) a
</select> </select>
<select id="selectStatDetailList" resultType="StatsDetailResult" parameterType="BudgetParams">
select og.organ_cd, tba.assign_amount, tbe.expense_amount
from(
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
) og
left outer join
(
select l_org_code, sum(amount) as assign_amount
from tbl_budget_assign tba
where h_org_code = #{code}
and assign_date >= #{stDate}::date
and assign_date &lt;= #{edDate}::date+1
and budget_code = #{item}
group by l_org_code
) tba
on og.organ_cd = tba.l_org_code
left outer join
(
select org_code, sum(amount) as expense_amount
from tbl_budget_expense tbe
where expense_date >= #{stDate}::date
and expense_date &lt;= #{edDate}::date+1
and budget_code = #{item}
group by org_code
) tbe
on og.organ_cd = tbe.org_code
order by og.order_seq
</select>
</mapper> </mapper>

View File

@ -45,7 +45,7 @@ function statsSearch () {
contentFade("in"); contentFade("in");
//location.href="/budget/stats/detail?year="+$("#year").val() + "&stDate=" + $("#stDate").val() + "&edDate=" + $("#edDate").val() + "&code=" +$("#code").val() + "&won="+$("#won").val(); //location.href="/budget/stats/detail?year="+$("#year").val() + "&stDate=" + $("#stDate").val() + "&edDate=" + $("#edDate").val() + "&code=" +$("#code").val() + "&won="+$("#won").val();
location.href="/budget/stats/detail?year="+$("#year").val() + "&stDate=" + $("#stDate").val() + "&edDate=" + $("#edDate").val() + "&code=본청&won="+$("#won").val()+"&item="+$("#item").val(); location.href="/budget/stats/detail?year="+$("#year").val() + "&stDate=" + $("#stDate").val() + "&edDate=" + $("#edDate").val() + "&code="+$("#code").val()+"&won="+$("#won").val()+"&item="+$("#item").val();
} }
$(document).on('click', '#deleteBtn', function (){ $(document).on('click', '#deleteBtn', function (){

View File

@ -37,7 +37,6 @@
<div class="col-auto"> <div class="col-auto">
<th:block th:if="${loginOrgan eq 'OG001'}"> <th:block th:if="${loginOrgan eq 'OG001'}">
<select class="form-select form-select-sm" name="code" id="code"> <select class="form-select form-select-sm" name="code" id="code">
<option value="OG001">본청</option>
<option th:each="code : ${downOrgList}" th:value="${code?.orgCode}" <option th:each="code : ${downOrgList}" th:value="${code?.orgCode}"
th:text="${code?.orgName}" th:selected="${searchParams?.code eq code.orgCode}"> th:text="${code?.orgName}" th:selected="${searchParams?.code eq code.orgCode}">
</option> </option>
@ -72,12 +71,12 @@
<th rowspan="2">세부내역</th> <th rowspan="2">세부내역</th>
<th rowspan="2">예산총액</th> <th rowspan="2">예산총액</th>
<th rowspan="2">예산총배정액<br>(누적)</th> <th rowspan="2">예산총배정액<br>(누적)</th>
<th:block th:each="orglist : ${downOrgList}"> <th:block th:each="orglist : ${downList}">
<th colspan="2" th:text="${orglist.orgName}"></th> <th colspan="2" th:text="${orglist.orgName}"></th>
</th:block> </th:block>
</tr> </tr>
<tr class="table-secondary"> <tr class="table-secondary">
<th:block th:each="orglist : ${downOrgList}"> <th:block th:each="orglist : ${downList}">
<th>기간배정액</th> <th>기간배정액</th>
<th>누적액</th> <th>누적액</th>
</th:block> </th:block>
@ -90,7 +89,7 @@
<td th:text="${info.budgetNameL3}"></td> <td th:text="${info.budgetNameL3}"></td>
<td th:text="${#numbers.formatInteger(info.planAmount,1,'COMMA')}" class="text-end"></td> <td th:text="${#numbers.formatInteger(info.planAmount,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.totalAssignAmount,1,'COMMA')}" class="text-end"></td> <td th:text="${#numbers.formatInteger(info.totalAssignAmount,1,'COMMA')}" class="text-end"></td>
<th:block th:each="orglist, j : ${downOrgList}"> <th:block th:each="orglist, j : ${downList}">
<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.periodAssignAmount1,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.sumAssignAmount1,1,'COMMA')}" class="text-end"></td> <td th:text="${#numbers.formatInteger(info.sumAssignAmount1,1,'COMMA')}" class="text-end"></td>

View File

@ -40,7 +40,6 @@
<div class="col-auto"> <div class="col-auto">
<th:block th:if="${loginOrgan eq 'OG001'}"> <th:block th:if="${loginOrgan eq 'OG001'}">
<select class="form-select form-select-sm" name="code" id="code"> <select class="form-select form-select-sm" name="code" id="code">
<option value="OG001">본청</option>
<option th:each="code : ${downOrgList}" th:value="${code?.orgCode}" <option th:each="code : ${downOrgList}" th:value="${code?.orgCode}"
th:text="${code?.orgName}" th:selected="${searchParams?.code eq code.orgCode}"> th:text="${code?.orgName}" th:selected="${searchParams?.code eq code.orgCode}">
</option> </option>
@ -74,14 +73,14 @@
<th rowspan="2">예산총액</th> <th rowspan="2">예산총액</th>
<th rowspan="2">예산총배정액<br>(누적)</th> <th rowspan="2">예산총배정액<br>(누적)</th>
<th colspan="2">집행액(총계)</th> <th colspan="2">집행액(총계)</th>
<th:block th:each="org:${downOrgList}"> <th:block th:each="org:${downList}">
<th colspan="4" class="w-400px" th:text="${org.orgName}"></th> <th colspan="4" class="w-400px" th:text="${org.orgName}"></th>
</th:block> </th:block>
</tr> </tr>
<tr class="table-secondary"> <tr class="table-secondary">
<th>지출총액</th> <th>지출총액</th>
<th>보유잔액</th> <th>보유잔액</th>
<th:block th:each="org : ${downOrgList}"> <th:block th:each="org : ${downList}">
<th class="w-100px">배정액</th> <th class="w-100px">배정액</th>
<th class="w-100px">지출총액</th> <th class="w-100px">지출총액</th>
<th class="w-100px">잔액</th> <th class="w-100px">잔액</th>
@ -101,7 +100,7 @@
<td th:text="${#numbers.formatInteger(info.totalAssignAmount,1,'COMMA')}" class="text-end"></td> <td th:text="${#numbers.formatInteger(info.totalAssignAmount,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseTAmount,1,'COMMA')}" class="text-end"></td> <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> <td th:text="${#numbers.formatInteger(info.balanceTAmount,1,'COMMA')}" class="text-end"></td>
<th:block th:each="orglist, j : ${downOrgList}"> <th:block th:each="orglist, j : ${downList}">
<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.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.expensePAmount1,1,'COMMA')}" class="text-end"></td>

View File

@ -45,18 +45,30 @@
<div class="col-auto"> <div class="col-auto">
<div class="row justify-content-end"> <div class="row justify-content-end">
<div class="col-auto"> <div class="col-auto">
<th:block th:if="${loginOrgan eq 'OG001'}">
<select class="form-select form-select-sm" name="code" id="code">
<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>
<div class="col-auto"> <div class="col-auto">
<select class="form-select form-select-sm" name="won" id="won"> <select class="form-select form-select-sm" name="won" id="won">
<option value="1" th:selected="${searchParams?.won eq '1'}"></option> <option value="1" th:selected="${searchParams?.won eq 1}"></option>
<option value="2" th:selected="${searchParams?.won eq '2'}">백원</option> <option value="100" th:selected="${searchParams?.won eq 100}">백원</option>
<option value="3" th:selected="${searchParams?.won eq '3'}">천원</option> <option value="1000" th:selected="${searchParams?.won eq 1000}">천원</option>
<option value="4" th:selected="${searchParams?.won eq '4'}">만원</option> <option value="10000" th:selected="${searchParams?.won eq 10000}">만원</option>
</select> </select>
</div> </div>
<div class="col-auto"> <div class="col-auto">
<select class="form-select form-select-sm" name="year" id="year" onchange="changeYear()"> <select class="form-select form-select-sm" name="year" id="year" onchange="changeYear()">
<option th:each="info, i : ${yearList}" th:value="${info.year}" th:selected="${searchParams?.year eq info.year}" th:text="${info.year}">2023</option> <th:block th:each="info, i : ${yearList}">
<option th:value="${info.year}" th:selected="${searchParams?.year eq info.year}" th:text="${info.year}">2023</option>
</th:block>
</select> </select>
</div> </div>
<div class="col-auto"> <div class="col-auto">
@ -84,7 +96,7 @@
<tr class="table-secondary"> <tr class="table-secondary">
<th rowspan="2">재무관서</th> <th rowspan="2">재무관서</th>
<th rowspan="2">예산총액</th> <!--<th rowspan="2">예산총액</th>-->
<th rowspan="2">예산배정액<br/>(누적)</th> <th rowspan="2">예산배정액<br/>(누적)</th>
<th rowspan="1" colspan="3">집행액(총계)</th> <th rowspan="1" colspan="3">집행액(총계)</th>
</tr> </tr>
@ -97,12 +109,16 @@
</thead> </thead>
<tbody class="table-group-divider" id="ResultRow"> <tbody class="table-group-divider" id="ResultRow">
<tr class="faRptTr" th:each="info, i : ${list}"> <tr class="faRptTr" th:each="info, i : ${list}">
<td th:text="${info.orgName}"></td> <td>
<td th:text="${#numbers.formatInteger(info.planAmount,1,'COMMA')}"></td> <th:block th:each="code:${session.commonCode.get('OG')}">
<td th:text="${#numbers.formatInteger(info.totalAssignAmount,1,'COMMA')}"></td> <th:block th:if="${code.itemCd eq info.organCd}" th:text="${code.itemValue}"></th:block>
<td th:text="${#numbers.formatInteger(info.expenseTAmount,1,'COMMA')}"></td> </th:block>
<td th:text="${#numbers.formatInteger(info.balanceTAmount,1,'COMMA')}"></td> </td>
<td th:text="${#numbers.formatInteger(info.ExpenseTotalRate,1,'COMMA')}"></td> <!--<td th:text="${#numbers.formatInteger(info.planAmount,1,'COMMA')}"></td>-->
<td th:text="${#numbers.formatInteger(info.assignAmount,1,'COMMA')}"></td>
<td th:text="${#numbers.formatInteger(info.expenseAmount,1,'COMMA')}"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount,1,'COMMA')}"></td>
<td th:text="${#strings.concat(info.rate,'%')}"></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@ -51,17 +51,23 @@
</div> </div>
<div class="col-auto"> <div class="col-auto">
<select class="form-select form-select-sm" name="won" id="won"> <select class="form-select form-select-sm" name="won" id="won">
<option value="1" th:selected="${searchParams?.won eq '1'}"></option> <option value="1" th:selected="${searchParams?.won eq 1}"></option>
<option value="2" th:selected="${searchParams?.won eq '2'}">백원</option> <option value="100" th:selected="${searchParams?.won eq 100}">백원</option>
<option value="3" th:selected="${searchParams?.won eq '3'}">천원</option> <option value="1000" th:selected="${searchParams?.won eq 1000}">천원</option>
<option value="4" th:selected="${searchParams?.won eq '4'}">만원</option> <option value="10000" th:selected="${searchParams?.won eq 10000}">만원</option>
</select> </select>
</div> </div>
<div class="col-auto"> <div class="col-auto">
<select class="form-select form-select-sm" name="code" id="code"> <th:block th:if="${loginOrgan eq 'OG001'}">
<option value="OG001" th:selected="${searchParams?.code eq 'OG001'}">본청</option> <select class="form-select form-select-sm" name="code" id="code">
<option th:each="code, i : ${codeList}" th:value="${code?.orgCode}" th:text="${code?.orgName}" th:selected="${searchParams?.code eq code.orgCode}">2023</option> <option th:each="code : ${downOrgList}" th:value="${code?.orgCode}"
</select> 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>
<div class="col-auto"> <div class="col-auto">
<div class="input-group w-auto input-daterange" id="dateSelectorDiv"> <div class="input-group w-auto input-daterange" id="dateSelectorDiv">
@ -77,23 +83,27 @@
</div> </div>
</form> </form>
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12 overflow-auto">
<table class="table table-sm table-bordered table-hover"> <table class="table table-sm table-bordered table-hover text-nowrap">
<thead> <thead>
<tr class="table-secondary"> <tr class="table-secondary">
<th rowspan="2">사업명</th> <th rowspan="2">사업명</th>
<th rowspan="2">구분</th> <th rowspan="2">구분</th>
<th rowspan="2">세부내역</th> <th rowspan="2">세부내역</th>
<th rowspan="2">예산총액</th> <th rowspan="2">예산총액</th>
<th rowspan="2">예산총배정액<br/>(누적)</th> <th rowspan="2">예산총배정액<br/>(누적)</th>
<th rowspan="1" colspan="3">집행액(총계)</th> <th rowspan="1" colspan="3">집행액(총계)</th>
<th colspan="4" th:each="orglist : ${downOrgList}" th:text="${orglist.orgName}"></th> <th:block th:each="orglist : ${downList}">
<th colspan="4" th:text="${orglist.orgName}"></th>
</th:block>
</tr> </tr>
<tr class="table-secondary"> <tr class="table-secondary">
<th>지출총액</th> <th>지출총액</th>
<th>보유잔액</th> <th>보유잔액</th>
<th>진행률</th> <th>진행률</th>
<th:block th:each="orglist : ${downOrgList}"> <th:block th:each="orglist : ${downList}">
<th>배정액</th> <th>배정액</th>
<th>지출총액</th> <th>지출총액</th>
<th>잔액</th> <th>잔액</th>
@ -109,56 +119,58 @@
<td th:text="${#numbers.formatInteger(info.planAmount,1,'COMMA')}"></td> <td th:text="${#numbers.formatInteger(info.planAmount,1,'COMMA')}"></td>
<td th:text="${#numbers.formatInteger(info.totalAssignAmount,1,'COMMA')}"></td> <td th:text="${#numbers.formatInteger(info.totalAssignAmount,1,'COMMA')}"></td>
<td th:text="${info.expenseTAmount}"></td>
<td th:text="${#numbers.formatInteger(info.expenseTAmount,1,'COMMA')}"></td>
<td th:text="${#numbers.formatInteger(info.balanceTAmount,1,'COMMA')}"></td> <td th:text="${#numbers.formatInteger(info.balanceTAmount,1,'COMMA')}"></td>
<th:block th:each="orglist, j : ${downOrgList}"> <td th:text="${#strings.concat(info.taRate, '%')}"></td>
<th:block th:each="orglist, j : ${downList}">
<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.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.expensePAmount1,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.balanceAmount1,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> <td th:text="${#strings.concat(info.expenseRate1,'%')}" class="text-end"></td>
</th:block> </th:block>
<th:block th:if="${j.index} == '1'"> <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.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.expensePAmount2,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.balanceAmount2,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate2,1,'COMMA')}" class="text-end"></td> <td th:text="${#strings.concat(info.expenseRate2,'%')}" class="text-end"></td>
</th:block> </th:block>
<th:block th:if="${j.index} == '2'"> <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.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.expensePAmount3,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.balanceAmount3,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate3,1,'COMMA')}" class="text-end"></td> <td th:text="${#strings.concat(info.expenseRate3,'%')}" class="text-end"></td>
</th:block> </th:block>
<th:block th:if="${j.index} == '3'"> <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.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.expensePAmount4,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.balanceAmount4,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate4,1,'COMMA')}" class="text-end"></td> <td th:text="${#strings.concat(info.expenseRate4,'%')}" class="text-end"></td>
</th:block> </th:block>
<th:block th:if="${j.index} == '4'"> <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.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.expensePAmount5,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.balanceAmount5,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate5,1,'COMMA')}" class="text-end"></td> <td th:text="${#strings.concat(info.expenseRate5,'%')}" class="text-end"></td>
</th:block> </th:block>
<th:block th:if="${j.index} == '5'"> <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.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.expensePAmount6,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.balanceAmount6,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate6,1,'COMMA')}" class="text-end"></td> <td th:text="${#strings.concat(info.expenseRate6,'%')}" class="text-end"></td>
</th:block> </th:block>
<th:block th:if="${j.index} == '6'"> <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.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.expensePAmount7,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.balanceAmount7,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate7,1,'COMMA')}" class="text-end"></td> <td th:text="${#strings.concat(info.expenseRate7,'%')}" class="text-end"></td>
</th:block> </th:block>
<th:block th:if="${j.index} == '7'"> <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.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.expensePAmount8,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.balanceAmount8,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.expenseRate8,1,'COMMA')}" class="text-end"></td> <td th:text="${#strings.concat(info.expenseRate8,'%')}" class="text-end"></td>
</th:block> </th:block>
</th:block> </th:block>
</tr> </tr>