Commit 22a583016be60e77dd60f8d3039f4a4ba2c1fdb1
1 parent
ff0bd3bf
Exists in
master
导出汇总表
Showing
6 changed files
with
126 additions
and
1 deletions
Show diff stats
backend/chkpower/src/main/java/com/hotent/chkpower/controller/WCurrentController.java
1 | 1 | package com.hotent.chkpower.controller; |
2 | 2 | |
3 | 3 | |
4 | +import cn.afterturn.easypoi.excel.ExcelExportUtil; | |
5 | +import cn.afterturn.easypoi.excel.entity.TemplateExportParams; | |
6 | +import org.apache.poi.ss.usermodel.Workbook; | |
4 | 7 | import org.springframework.web.bind.annotation.GetMapping; |
5 | 8 | import org.springframework.web.bind.annotation.PostMapping; |
6 | 9 | import org.springframework.web.bind.annotation.RequestBody; |
... | ... | @@ -15,7 +18,11 @@ import com.hotent.base.controller.BaseController; |
15 | 18 | import com.hotent.chkpower.model.WCurrent; |
16 | 19 | import com.hotent.chkpower.manager.WCurrentManager; |
17 | 20 | |
18 | -import java.util.List; | |
21 | +import javax.servlet.http.HttpServletResponse; | |
22 | +import java.io.OutputStream; | |
23 | +import java.math.BigDecimal; | |
24 | +import java.net.URLEncoder; | |
25 | +import java.util.*; | |
19 | 26 | |
20 | 27 | /** |
21 | 28 | * 活期账户 前端控制器 |
... | ... | @@ -61,6 +68,72 @@ public class WCurrentController extends BaseController<WCurrentManager, WCurrent |
61 | 68 | return new CommonResult(true, "成功", data); |
62 | 69 | } |
63 | 70 | |
71 | + /** | |
72 | + * 导出 | |
73 | + * @param response | |
74 | + * @throws Exception | |
75 | + */ | |
76 | + @GetMapping("exportYchzb") | |
77 | + public void exportYchzb(HttpServletResponse response) throws Exception { | |
78 | + String date="2024-07-04"; | |
79 | + HashMap map=new HashMap(); | |
80 | + map.put("date",date); | |
81 | + List<String> gslxList = baseService.getCurrentOrgTypeList(); | |
82 | + List<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>(); | |
83 | + BigDecimal hz = new BigDecimal(0.00); | |
84 | + for (String orgType : gslxList) { | |
85 | + List<HashMap<String,String>> listData = baseService.getCurrentAccountBalanceList(orgType,date+" 00:00:00"); | |
86 | + | |
87 | + BigDecimal totalBalance = listData.stream() | |
88 | + .filter(d -> d.containsKey("F_account_balance")) // 确保键存在 | |
89 | + .map(d -> { | |
90 | + Object value = d.get("F_account_balance"); | |
91 | + if (value instanceof Number) { | |
92 | + return new BigDecimal(value.toString()); | |
93 | + } | |
94 | + return new BigDecimal(0.00); | |
95 | + }) | |
96 | + .filter(Objects::nonNull) // 确保值非空 | |
97 | + .reduce(BigDecimal.ZERO, BigDecimal::add); // 计算总和 | |
64 | 98 | |
65 | 99 | |
100 | + if (listData!=null && listData.size()>0){ | |
101 | + | |
102 | + HashMap<String, String> hzMap = new HashMap<>(); | |
103 | + hzMap.put("F_org_type","小计"); | |
104 | + hzMap.put("F_org_name",""); | |
105 | + hzMap.put("F_account_balance",String.valueOf(totalBalance)); | |
106 | + hz=hz.add(totalBalance); | |
107 | + listData.add(hzMap); | |
108 | + } | |
109 | + list.addAll(listData); | |
110 | + } | |
111 | + HashMap<String, String> hzMap = new HashMap<>(); | |
112 | + hzMap.put("F_org_type","汇总"); | |
113 | + hzMap.put("F_org_name",""); | |
114 | + hzMap.put("F_account_balance",String.valueOf(hz)); | |
115 | + list.add(hzMap); | |
116 | + | |
117 | + map.put("list",list); | |
118 | + TemplateExportParams params = new TemplateExportParams("doc/hqzhAll.xls"); | |
119 | + params.setColForEach(true); | |
120 | + Workbook workbook = ExcelExportUtil.exportExcel(params, map); | |
121 | + String filedisplay="正常账户可用余额.xls"; | |
122 | + response.setContentType("APPLICATION/OCTET-STREAM"); | |
123 | + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); | |
124 | + response.addHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(filedisplay, "utf-8") ); | |
125 | + OutputStream os = null; | |
126 | + try { | |
127 | + os = response.getOutputStream(); | |
128 | + workbook.write(os); | |
129 | + os.flush(); | |
130 | + os.close(); | |
131 | + } catch (Exception e) { | |
132 | + e.printStackTrace(); | |
133 | + } finally { | |
134 | + if (os != null) | |
135 | + os.close(); | |
136 | + } | |
137 | + } | |
138 | + | |
66 | 139 | } | ... | ... |
backend/chkpower/src/main/java/com/hotent/chkpower/dao/WCurrentDao.java
... | ... | @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
5 | 5 | import org.apache.ibatis.annotations.Param; |
6 | 6 | |
7 | 7 | import java.util.ArrayList; |
8 | +import java.util.HashMap; | |
8 | 9 | import java.util.List; |
9 | 10 | |
10 | 11 | /** |
... | ... | @@ -19,5 +20,11 @@ public interface WCurrentDao extends BaseMapper<WCurrent> { |
19 | 20 | List<WCurrent> getHistoricalDetail( @Param("orgIdList") ArrayList<String> orgIdList); |
20 | 21 | |
21 | 22 | |
23 | + List<HashMap<String, String>> getCurrentAccountBalanceList( @Param("fOrgType") String fOrgType, @Param("fDate") String fDate); | |
24 | + | |
25 | + | |
26 | + List<String> getCurrentOrgTypeList(); | |
27 | + | |
28 | + | |
22 | 29 | |
23 | 30 | } | ... | ... |
backend/chkpower/src/main/java/com/hotent/chkpower/manager/WCurrentManager.java
... | ... | @@ -3,6 +3,8 @@ package com.hotent.chkpower.manager; |
3 | 3 | import com.hotent.chkpower.model.WCurrent; |
4 | 4 | import com.hotent.base.manager.BaseManager; |
5 | 5 | |
6 | +import java.time.LocalDateTime; | |
7 | +import java.util.HashMap; | |
6 | 8 | import java.util.List; |
7 | 9 | |
8 | 10 | /** |
... | ... | @@ -29,5 +31,14 @@ public interface WCurrentManager extends BaseManager<WCurrent> { |
29 | 31 | List<WCurrent> getHistoricalDetail(); |
30 | 32 | |
31 | 33 | |
34 | + List<HashMap<String, String>> getCurrentAccountBalanceList(String fOrgType, String fDate); | |
35 | + | |
36 | + /** | |
37 | + * 查询全部公司类 | |
38 | + * @return | |
39 | + */ | |
40 | + List<String> getCurrentOrgTypeList(); | |
41 | + | |
42 | + | |
32 | 43 | |
33 | 44 | } | ... | ... |
backend/chkpower/src/main/java/com/hotent/chkpower/manager/impl/WCurrentManagerImpl.java
... | ... | @@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
11 | 11 | |
12 | 12 | import java.util.ArrayList; |
13 | 13 | import java.util.Collections; |
14 | +import java.util.HashMap; | |
14 | 15 | import java.util.List; |
15 | 16 | import javax.annotation.Resource; |
16 | 17 | import com.hotent.base.util.BeanUtils; |
... | ... | @@ -47,4 +48,14 @@ public class WCurrentManagerImpl extends BaseManagerImpl<WCurrentDao, WCurrent> |
47 | 48 | |
48 | 49 | return data; |
49 | 50 | } |
51 | + | |
52 | + @Override | |
53 | + public List<HashMap<String, String>> getCurrentAccountBalanceList(String fOrgType, String fDate) { | |
54 | + return baseMapper.getCurrentAccountBalanceList(fOrgType, fDate); | |
55 | + } | |
56 | + | |
57 | + @Override | |
58 | + public List<String> getCurrentOrgTypeList() { | |
59 | + return baseMapper.getCurrentOrgTypeList(); | |
60 | + } | |
50 | 61 | } | ... | ... |
No preview for this file type
backend/chkpower/src/main/resources/mapper/WCurrentMapper.xml
... | ... | @@ -99,4 +99,27 @@ |
99 | 99 | and 1=2 |
100 | 100 | </if> |
101 | 101 | </select> |
102 | + | |
103 | + <select id="getCurrentAccountBalanceList" resultType="java.util.HashMap"> | |
104 | + SELECT org.ID_ as F_org_id,org.NAME_ as F_org_name,acc.F_org_type,org.ORDER_NO_,YE.F_account_balance | |
105 | + FROM uc_org org | |
106 | + INNER JOIN w_bank_account acc ON acc.F_org_id= org.ID_ | |
107 | + LEFT JOIN ( | |
108 | + SELECT F_org_id, F_org_name,SUM(F_account_balance) AS F_account_balance | |
109 | + FROM w_current | |
110 | + WHERE F_date =#{fDate} | |
111 | + GROUP BY F_org_id, F_org_name | |
112 | + ) YE ON YE.F_org_id = acc.F_org_id | |
113 | + WHERE 1=1 | |
114 | + AND acc.F_org_type= #{fOrgType} | |
115 | + ORDER BY org.ORDER_NO_ ASC | |
116 | + </select> | |
117 | + | |
118 | + <select id="getCurrentOrgTypeList" resultType="java.lang.String"> | |
119 | + SELECT orgParams.VALUE_ AS orgType | |
120 | + FROM uc_org org | |
121 | + JOIN uc_org_params orgParams on orgParams.ORG_ID_= org.ID_ | |
122 | + GROUP BY orgParams.VALUE_ | |
123 | + ORDER BY MAX(org.ORDER_NO_) ASC | |
124 | + </select> | |
102 | 125 | </mapper> | ... | ... |