예산배정 목록조회 로직 변경.

master
강석 최 2023-07-25 17:22:08 +09:00
parent e52dbd5498
commit a5827e1a88
7 changed files with 274 additions and 176 deletions

View File

@ -132,7 +132,8 @@ public class BudgetController {
if (requestDto.getYear() != null) { if (requestDto.getYear() != null) {
userOrgCode = requestDto.getCode(); userOrgCode = requestDto.getCode();
List<AssignResult> list = budgetService.selectBudgetAssignInfo(loginUser, requestDto); // List<AssignResult> list = budgetService.selectBudgetAssignInfo(loginUser, requestDto);
List<AssignResult> list = budgetService.selectBudgetAssignInfoList(requestDto);
mav.addObject("list", list); mav.addObject("list", list);
} else { } else {
// 로그인된 해당청 기본선택 // 로그인된 해당청 기본선택

View File

@ -15,6 +15,8 @@ public interface BudgetMapper {
UpdateResult callSpUpdateBudgetPlanCodeItem(BudgetParams param); UpdateResult callSpUpdateBudgetPlanCodeItem(BudgetParams param);
UpdateResult callSpDeleteBudgetPlan(BudgetParams param); UpdateResult callSpDeleteBudgetPlan(BudgetParams param);
List<AssignResult> callSpGetBudgetAssignInfo(BudgetParams param); List<AssignResult> callSpGetBudgetAssignInfo(BudgetParams param);
List<AssignResult> selectBudgetAssignInfoList(BudgetParams params);
List<AssignAmount> selectBudgetAssignAmountList(BudgetParams params);
List<CodeResult> callSpGetDownOrg(BudgetParams param); List<CodeResult> callSpGetDownOrg(BudgetParams param);
List<CodeResult> callSpGetLowerOrgCodeByName(); List<CodeResult> callSpGetLowerOrgCodeByName();
String callSpGetHighOrgCode(BudgetParams params); String callSpGetHighOrgCode(BudgetParams params);
@ -25,4 +27,5 @@ public interface BudgetMapper {
List<ExpenseResult> callSpGetbudgetStatOrg(BudgetParams params); List<ExpenseResult> callSpGetbudgetStatOrg(BudgetParams params);
List<StatsItemResult> callSpGetbudgetStatDetail(BudgetParams params); List<StatsItemResult> callSpGetbudgetStatDetail(BudgetParams params);
List<L3CodeResult> callSpGetBudgetCodeL3(BudgetParams params); List<L3CodeResult> callSpGetBudgetCodeL3(BudgetParams params);
} }

View File

@ -0,0 +1,12 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
@Getter
public class AssignAmount {
Integer orderSeq;
String organCd;
String budgetCode;
Integer periodAssignAmount;
Integer sumAssignAmount;
}

View File

@ -1,33 +1,35 @@
package com.dbnt.faisp.main.budget.model.result; package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter; import lombok.Getter;
import lombok.Setter;
@Getter @Getter
@Setter
public class AssignResult { public class AssignResult {
String orgCount; String orgCount;
String budgetNameL1; String budgetNameL1;
String budgetNameL2; String budgetNameL2;
String budgetNameL3; String budgetNameL3;
String budgetCodeL3; String budgetCodeL3;
String planAmount; String planAmount = "0";
String totalAssignAmount; String totalAssignAmount = "0";
String periodAssignAmount1; String periodAssignAmount1 = "0";
String sumAssignAmount1; String sumAssignAmount1 = "0";
String periodAssignAmount2; String periodAssignAmount2 = "0";
String sumAssignAmount2; String sumAssignAmount2 = "0";
String periodAssignAmount3; String periodAssignAmount3 = "0";
String sumAssignAmount3; String sumAssignAmount3 = "0";
String periodAssignAmount4; String periodAssignAmount4 = "0";
String sumAssignAmount4; String sumAssignAmount4 = "0";
String periodAssignAmount5; String periodAssignAmount5 = "0";
String sumAssignAmount5; String sumAssignAmount5 = "0";
String periodAssignAmount6; String periodAssignAmount6 = "0";
String sumAssignAmount6; String sumAssignAmount6 = "0";
String periodAssignAmount7; String periodAssignAmount7 = "0";
String sumAssignAmount7; String sumAssignAmount7 = "0";
String periodAssignAmount8; String periodAssignAmount8 = "0";
String sumAssignAmount8; String sumAssignAmount8 = "0";
String periodAssignAmount9; String periodAssignAmount9 = "0";
String sumAssignAmount9; String sumAssignAmount9 = "0";
} }

View File

@ -292,12 +292,6 @@ public class BudgetService {
// 예산배정 // 예산배정
public List<AssignResult> selectBudgetAssignInfo(UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto){ 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());
//System.out.println(requestDto.getYear()+" / "+ requestDto.getCode()+" / "+ "admin"+" / "+ java.sql.Date.valueOf(requestDto.getStDate())+" / "+java.sql.Date.valueOf(requestDto.getEdDate()));
// return budgetRepository.callSpGetBudgetAssignInfo(requestDto.getYear(), requestDto.getCode(), "admin", java.sql.Date.valueOf(requestDto.getStDate()),java.sql.Date.valueOf(requestDto.getEdDate()));
BudgetParams params = new BudgetParams(); BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear()); params.setYear(requestDto.getYear());
params.setCode(requestDto.getCode()); params.setCode(requestDto.getCode());
@ -307,6 +301,67 @@ public class BudgetService {
return budgetMapper.callSpGetBudgetAssignInfo(params); return budgetMapper.callSpGetBudgetAssignInfo(params);
} }
public List<AssignResult> selectBudgetAssignInfoList(BudgetDto.AssignSearchReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear());
params.setCode(requestDto.getCode());
params.setUser("admin");
params.setStDate(java.sql.Date.valueOf(requestDto.getStDate()));
params.setEdDate(java.sql.Date.valueOf(requestDto.getEdDate()));
List<AssignResult> assignResultList = budgetMapper.selectBudgetAssignInfoList(params);
List<AssignAmount> assignAmountList = budgetMapper.selectBudgetAssignAmountList(params);
for(AssignResult result: assignResultList){
for(AssignAmount amount: assignAmountList){
if(result.getBudgetCodeL3().equals(amount.getBudgetCode())){
int totalAssignAmount = result.getTotalAssignAmount()==null?0:Integer.parseInt(result.getTotalAssignAmount());
totalAssignAmount += amount.getSumAssignAmount();
result.setTotalAssignAmount(Integer.toString(totalAssignAmount));
switch (amount.getOrderSeq()){
case 1:
result.setPeriodAssignAmount1(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount1(amount.getSumAssignAmount().toString());
break;
case 2:
result.setPeriodAssignAmount2(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount2(amount.getSumAssignAmount().toString());
break;
case 3:
result.setPeriodAssignAmount3(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount3(amount.getSumAssignAmount().toString());
break;
case 4:
result.setPeriodAssignAmount4(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount4(amount.getSumAssignAmount().toString());
break;
case 5:
result.setPeriodAssignAmount5(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount5(amount.getSumAssignAmount().toString());
break;
case 6:
result.setPeriodAssignAmount6(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount6(amount.getSumAssignAmount().toString());
break;
case 7:
result.setPeriodAssignAmount7(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount7(amount.getSumAssignAmount().toString());
break;
case 8:
result.setPeriodAssignAmount8(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount8(amount.getSumAssignAmount().toString());
break;
case 9:
result.setPeriodAssignAmount9(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount9(amount.getSumAssignAmount().toString());
break;
}
}
}
}
return assignResultList;
}
//(공통) 2단계로 하위청 뿌려주기 //(공통) 2단계로 하위청 뿌려주기
public List<CodeResult> selectDownOrg(String userOrgCode){ public List<CodeResult> selectDownOrg(String userOrgCode){
// return budgetRepository.callSpGetDownOrg(userOrgCode); // return budgetRepository.callSpGetDownOrg(userOrgCode);

View File

@ -36,6 +36,49 @@
select * select *
from sp_get_budget_assign_info(#{year}, #{code}, #{user} ,#{stDate}::date, #{edDate}::date) from sp_get_budget_assign_info(#{year}, #{code}, #{user} ,#{stDate}::date, #{edDate}::date)
</select> </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,
tba.budget_code,
tba.period_assign_amount,
coalesce(tbe.sum_assign_amount, 0) as sum_assign_amount
from (
select h_org_code, l_org_code, budget_code, sum(amount) as period_assign_amount
from tbl_budget_assign
where h_org_code = #{code}
group by h_org_code, l_org_code, budget_code
) tba
left outer join (
select org_code, budget_code, sum(amount) as sum_assign_amount
from tbl_budget_expense
where EXTRACT( year FROM expense_date ) = ${year}
group by org_code, budget_code
) tbe on tba.l_org_code = tbe.org_code and tba.budget_code = tbe.budget_code
inner join (
select (ROW_NUMBER() OVER()) AS order_seq, *
from (
select #{code} as organ_cd
union all
select organ_cd
from organ_config
where parent_organ = #{code}
) a
) oc on tba.l_org_code = oc.organ_cd
order by order_seq, organ_cd, budget_code
</select>
<select id="callSpGetDownOrg" resultType="CodeResult" parameterType="BudgetParams"> <select id="callSpGetDownOrg" resultType="CodeResult" parameterType="BudgetParams">
select org_code as orgCode, select org_code as orgCode,
org_name as orgName org_name as orgName

View File

@ -84,58 +84,40 @@
<td th:text="${info.budgetNameL1}"></td> <td th:text="${info.budgetNameL1}"></td>
<td th:text="${info.budgetNameL2}"></td> <td th:text="${info.budgetNameL2}"></td>
<td th:text="${info.budgetNameL3}"></td> <td th:text="${info.budgetNameL3}"></td>
<td th:text="${#numbers.formatInteger(info.planAmount,1,'COMMA')}" <td th:text="${#numbers.formatInteger(info.planAmount,1,'COMMA')}" class="text-end"></td>
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 : ${downOrgList}">
<th:block th:if="${j.index} == '0'"> <th:block th:if="${j.index} == '0'">
<td th:text="${#numbers.formatInteger(info.periodAssignAmount1,1,'COMMA')}" <td th:text="${#numbers.formatInteger(info.periodAssignAmount1,1,'COMMA')}" class="text-end"></td>
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>
</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')}" <td th:text="${#numbers.formatInteger(info.periodAssignAmount2,1,'COMMA')}" class="text-end"></td>
class="text-end"></td> <td th:text="${#numbers.formatInteger(info.sumAssignAmount2,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.sumAssignAmount2,1,'COMMA')}"
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')}" <td th:text="${#numbers.formatInteger(info.periodAssignAmount3,1,'COMMA')}" class="text-end"></td>
class="text-end"></td> <td th:text="${#numbers.formatInteger(info.sumAssignAmount3,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.sumAssignAmount3,1,'COMMA')}"
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')}" <td th:text="${#numbers.formatInteger(info.periodAssignAmount4,1,'COMMA')}" class="text-end"></td>
class="text-end"></td> <td th:text="${#numbers.formatInteger(info.sumAssignAmount4,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.sumAssignAmount4,1,'COMMA')}"
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')}" <td th:text="${#numbers.formatInteger(info.periodAssignAmount5,1,'COMMA')}" class="text-end"></td>
class="text-end"></td> <td th:text="${#numbers.formatInteger(info.sumAssignAmount5,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.sumAssignAmount5,1,'COMMA')}"
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')}" <td th:text="${#numbers.formatInteger(info.periodAssignAmount6,1,'COMMA')}" class="text-end"></td>
class="text-end"></td> <td th:text="${#numbers.formatInteger(info.sumAssignAmount6,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.sumAssignAmount6,1,'COMMA')}"
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')}" <td th:text="${#numbers.formatInteger(info.periodAssignAmount7,1,'COMMA')}" class="text-end"></td>
class="text-end"></td> <td th:text="${#numbers.formatInteger(info.sumAssignAmount7,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.sumAssignAmount7,1,'COMMA')}"
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')}" <td th:text="${#numbers.formatInteger(info.periodAssignAmount8,1,'COMMA')}" class="text-end"></td>
class="text-end"></td> <td th:text="${#numbers.formatInteger(info.sumAssignAmount8,1,'COMMA')}" class="text-end"></td>
<td th:text="${#numbers.formatInteger(info.sumAssignAmount8,1,'COMMA')}"
class="text-end"></td>
</th:block> </th:block>
</th:block> </th:block>
</tr> </tr>