Commit 8068fc13a59d966bd318450ad70ddab4f105891b
1 parent
a8776277
Exists in
master
每日资金复核
Showing
9 changed files
with
504 additions
and
315 deletions
Show diff stats
backend/chkpower/src/main/java/com/hotent/chkpower/controller/WDailyFundsController.java
@@ -82,14 +82,85 @@ public class WDailyFundsController extends BaseController<WDailyFundsManager, WD | @@ -82,14 +82,85 @@ public class WDailyFundsController extends BaseController<WDailyFundsManager, WD | ||
82 | } | 82 | } |
83 | 83 | ||
84 | 84 | ||
85 | - private BigDecimal aggregateBalance(HashMap<String, String> data, String key, BigDecimal aggregate) { | ||
86 | - // 直接检查值是否存在并为非空,避免了额外的containsKey调用 | ||
87 | - Object value = data.get(key); | ||
88 | - if (value != null && !value.equals("")) { | ||
89 | - return aggregate.add(new BigDecimal(((Number) value).doubleValue())); | ||
90 | - } else { | ||
91 | - return BigDecimal.ZERO; | 85 | + @PostMapping(value = "/updateInsps") |
86 | + public CommonResult<String> updateInsps(@RequestBody WDailyFundsInspDto wDailyFundsInspDto) throws Exception { | ||
87 | + baseService.updateInsps(wDailyFundsInspDto.getwDailyFundsList()); | ||
88 | + return CommonResult.<String>ok().message("成功"); | ||
89 | + } | ||
90 | + | ||
91 | + | ||
92 | + /** | ||
93 | + * 按日期查询复核列表 | ||
94 | + * | ||
95 | + * @param date | ||
96 | + * @return | ||
97 | + * @throws Exception | ||
98 | + */ | ||
99 | + @GetMapping(value = "/getInspList") | ||
100 | + public CommonResult getInspList(@RequestParam String date) throws Exception { | ||
101 | + HashMap map = new HashMap(); | ||
102 | + map.put("date", date); | ||
103 | + List<String> gslxList = wCurrentManager.getCurrentOrgTypeList(); | ||
104 | + BigDecimal F_yesterday_account_balance_zs = BigDecimal.ZERO; | ||
105 | + BigDecimal F_today_account_balance_zs = BigDecimal.ZERO; | ||
106 | + BigDecimal F_account_balance_difference_zs = BigDecimal.ZERO; | ||
107 | + BigDecimal F_today_net_cash_flow_zs = BigDecimal.ZERO; | ||
108 | + BigDecimal F_today_freeze_amount_zs = BigDecimal.ZERO; | ||
109 | + BigDecimal F_today_freezing_zs = BigDecimal.ZERO; | ||
110 | + List<Map> list = new ArrayList<Map>(); | ||
111 | + for (String orgType : gslxList) { | ||
112 | + List<WDailyFunds> listDataBean = baseService.getDailyFundsByDateList(orgType, date); | ||
113 | + if (listDataBean == null || listDataBean.size() == 0) { | ||
114 | + break; | ||
115 | + } | ||
116 | + List<Map<String, Object>> listData = convertToMapList(listDataBean); | ||
117 | + BigDecimal F_yesterday_account_balance = BigDecimal.ZERO; | ||
118 | + BigDecimal F_today_account_balance = BigDecimal.ZERO; | ||
119 | + BigDecimal F_account_balance_difference = BigDecimal.ZERO; | ||
120 | + BigDecimal F_today_net_cash_flow = BigDecimal.ZERO; | ||
121 | + BigDecimal F_today_freeze_amount = BigDecimal.ZERO; | ||
122 | + BigDecimal F_today_freezing = BigDecimal.ZERO; | ||
123 | + for (Map<String, Object> data : listData) { | ||
124 | + F_yesterday_account_balance = aggregateBalance(data, "fYesterdayAccountBalance", F_yesterday_account_balance); | ||
125 | + F_today_account_balance = aggregateBalance(data, "fTodayAccountBalance", F_today_account_balance); | ||
126 | + F_account_balance_difference = aggregateBalance(data, "fAccountBalanceDifference", F_account_balance_difference); | ||
127 | + F_today_net_cash_flow = aggregateBalance(data, "fTodayNetCashFlow", F_today_net_cash_flow); | ||
128 | + F_today_freeze_amount = aggregateBalance(data, "fTodayFreezeAmount", F_today_freeze_amount); | ||
129 | + F_today_freezing = aggregateBalance(data, "fTodayFreezing", F_today_freezing); | ||
130 | + } | ||
131 | + Map<String, Object> xjMap = new HashMap<>(); | ||
132 | + xjMap.put("fOrgType", "小计(" + orgType + ")"); | ||
133 | + xjMap.put("fDate", "小计(" + orgType + ")"); | ||
134 | + xjMap.put("fOrgName", "小计(" + orgType + ")"); | ||
135 | + xjMap.put("fYesterdayAccountBalance", F_yesterday_account_balance.setScale(2, RoundingMode.HALF_UP).toString()); | ||
136 | + xjMap.put("fTodayAccountBalance", F_today_account_balance.setScale(2, RoundingMode.HALF_UP).toString()); | ||
137 | + xjMap.put("fAccountBalanceDifference", F_account_balance_difference.setScale(2, RoundingMode.HALF_UP).toString()); | ||
138 | + xjMap.put("fTodayNetCashFlow", F_today_net_cash_flow.setScale(2, RoundingMode.HALF_UP).toString()); | ||
139 | + xjMap.put("fTodayFreezeAmount", F_today_freeze_amount.setScale(2, RoundingMode.HALF_UP).toString()); | ||
140 | + xjMap.put("fTodayFreezing", F_today_freezing.setScale(2, RoundingMode.HALF_UP).toString()); | ||
141 | + listData.add(xjMap); | ||
142 | + list.addAll(listData); | ||
143 | + F_yesterday_account_balance_zs = F_yesterday_account_balance_zs.add(F_yesterday_account_balance); | ||
144 | + F_today_account_balance_zs = F_today_account_balance_zs.add(F_today_account_balance); | ||
145 | + F_account_balance_difference_zs = F_account_balance_difference_zs.add(F_account_balance_difference); | ||
146 | + F_today_net_cash_flow_zs = F_today_net_cash_flow_zs.add(F_today_net_cash_flow); | ||
147 | + F_today_freeze_amount_zs = F_today_freeze_amount_zs.add(F_today_freeze_amount); | ||
148 | + F_today_freezing_zs = F_today_freezing_zs.add(F_today_freezing); | ||
92 | } | 149 | } |
150 | + HashMap<String, String> hzMap = new HashMap<>(); | ||
151 | + hzMap.put("fOrgType", "汇总"); | ||
152 | + hzMap.put("fDate", "汇总"); | ||
153 | + hzMap.put("fOrgName", "汇总"); | ||
154 | + hzMap.put("fYesterdayAccountBalance", F_yesterday_account_balance_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
155 | + hzMap.put("fTodayAccountBalance", F_today_account_balance_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
156 | + hzMap.put("fAccountBalanceDifference", F_account_balance_difference_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
157 | + hzMap.put("fTodayNetCashFlow", F_today_net_cash_flow_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
158 | + hzMap.put("fTodayFreezeAmount", F_today_freeze_amount_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
159 | + hzMap.put("fTodayFreezing", F_today_freezing_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
160 | + list.add(hzMap); | ||
161 | + map.put("list", list); | ||
162 | + return CommonResult.ok().value(list); | ||
163 | + | ||
93 | } | 164 | } |
94 | 165 | ||
95 | /** | 166 | /** |
@@ -104,60 +175,58 @@ public class WDailyFundsController extends BaseController<WDailyFundsManager, WD | @@ -104,60 +175,58 @@ public class WDailyFundsController extends BaseController<WDailyFundsManager, WD | ||
104 | HashMap map = new HashMap(); | 175 | HashMap map = new HashMap(); |
105 | map.put("date", date); | 176 | map.put("date", date); |
106 | List<String> gslxList = wCurrentManager.getCurrentOrgTypeList(); | 177 | List<String> gslxList = wCurrentManager.getCurrentOrgTypeList(); |
107 | - | ||
108 | - | ||
109 | BigDecimal F_yesterday_account_balance_zs = BigDecimal.ZERO; | 178 | BigDecimal F_yesterday_account_balance_zs = BigDecimal.ZERO; |
110 | BigDecimal F_today_account_balance_zs = BigDecimal.ZERO; | 179 | BigDecimal F_today_account_balance_zs = BigDecimal.ZERO; |
111 | BigDecimal F_account_balance_difference_zs = BigDecimal.ZERO; | 180 | BigDecimal F_account_balance_difference_zs = BigDecimal.ZERO; |
112 | BigDecimal F_today_net_cash_flow_zs = BigDecimal.ZERO; | 181 | BigDecimal F_today_net_cash_flow_zs = BigDecimal.ZERO; |
113 | BigDecimal F_today_freeze_amount_zs = BigDecimal.ZERO; | 182 | BigDecimal F_today_freeze_amount_zs = BigDecimal.ZERO; |
114 | BigDecimal F_today_freezing_zs = BigDecimal.ZERO; | 183 | BigDecimal F_today_freezing_zs = BigDecimal.ZERO; |
115 | - | ||
116 | - List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>(); | 184 | + List<Map> list = new ArrayList<Map>(); |
117 | for (String orgType : gslxList) { | 185 | for (String orgType : gslxList) { |
118 | - List<HashMap<String, String>> listData = baseService.getDailyFundsByDateList(orgType, date); | ||
119 | - if (listData == null || listData.size() == 0) { | 186 | + List<WDailyFunds> listDataBean = baseService.getDailyFundsByDateList(orgType, date); |
187 | + if (listDataBean == null || listDataBean.size() == 0) { | ||
120 | break; | 188 | break; |
121 | } | 189 | } |
190 | + List<Map<String, Object>> listData = convertToMapList(listDataBean); | ||
122 | BigDecimal F_yesterday_account_balance = BigDecimal.ZERO; | 191 | BigDecimal F_yesterday_account_balance = BigDecimal.ZERO; |
123 | BigDecimal F_today_account_balance = BigDecimal.ZERO; | 192 | BigDecimal F_today_account_balance = BigDecimal.ZERO; |
124 | BigDecimal F_account_balance_difference = BigDecimal.ZERO; | 193 | BigDecimal F_account_balance_difference = BigDecimal.ZERO; |
125 | BigDecimal F_today_net_cash_flow = BigDecimal.ZERO; | 194 | BigDecimal F_today_net_cash_flow = BigDecimal.ZERO; |
126 | BigDecimal F_today_freeze_amount = BigDecimal.ZERO; | 195 | BigDecimal F_today_freeze_amount = BigDecimal.ZERO; |
127 | BigDecimal F_today_freezing = BigDecimal.ZERO; | 196 | BigDecimal F_today_freezing = BigDecimal.ZERO; |
128 | - for (HashMap<String, String> data : listData) { | ||
129 | - F_yesterday_account_balance = aggregateBalance(data, "F_yesterday_account_balance", F_yesterday_account_balance); | ||
130 | - F_today_account_balance = aggregateBalance(data, "F_today_account_balance", F_today_account_balance); | ||
131 | - F_account_balance_difference = aggregateBalance(data, "F_account_balance_difference", F_account_balance_difference); | ||
132 | - F_today_net_cash_flow = aggregateBalance(data, "F_today_net_cash_flow", F_today_net_cash_flow); | ||
133 | - F_today_freeze_amount = aggregateBalance(data, "F_today_freeze_amount", F_today_freeze_amount); | ||
134 | - F_today_freezing = aggregateBalance(data, "F_today_freezing", F_today_freezing); | 197 | + for (Map<String, Object> data : listData) { |
198 | + F_yesterday_account_balance = aggregateBalance(data, "fYesterdayAccountBalance", F_yesterday_account_balance); | ||
199 | + F_today_account_balance = aggregateBalance(data, "fTodayAccountBalance", F_today_account_balance); | ||
200 | + F_account_balance_difference = aggregateBalance(data, "fAccountBalanceDifference", F_account_balance_difference); | ||
201 | + F_today_net_cash_flow = aggregateBalance(data, "fTodayNetCashFlow", F_today_net_cash_flow); | ||
202 | + F_today_freeze_amount = aggregateBalance(data, "fTodayFreezeAmount", F_today_freeze_amount); | ||
203 | + F_today_freezing = aggregateBalance(data, "fTodayFreezing", F_today_freezing); | ||
135 | } | 204 | } |
136 | - HashMap<String, String> xjMap = new HashMap<>(); | ||
137 | - xjMap.put("F_org_type", "小计(" + orgType + ")"); | ||
138 | - xjMap.put("F_yesterday_account_balance", F_yesterday_account_balance.setScale(2, RoundingMode.HALF_UP).toString()); | ||
139 | - xjMap.put("F_today_account_balance", F_today_account_balance.setScale(2, RoundingMode.HALF_UP).toString()); | ||
140 | - xjMap.put("F_account_balance_difference", F_account_balance_difference.setScale(2, RoundingMode.HALF_UP).toString()); | ||
141 | - xjMap.put("F_today_net_cash_flow", F_today_net_cash_flow.setScale(2, RoundingMode.HALF_UP).toString()); | ||
142 | - xjMap.put("F_today_freeze_amount", F_today_freeze_amount.setScale(2, RoundingMode.HALF_UP).toString()); | ||
143 | - xjMap.put("F_today_freezing", F_today_freezing.setScale(2, RoundingMode.HALF_UP).toString()); | 205 | + Map<String, Object> xjMap = new HashMap<>(); |
206 | + xjMap.put("fOrgType", "小计(" + orgType + ")"); | ||
207 | + xjMap.put("fYesterdayAccountBalance", F_yesterday_account_balance.setScale(2, RoundingMode.HALF_UP).toString()); | ||
208 | + xjMap.put("fTodayAccountBalance", F_today_account_balance.setScale(2, RoundingMode.HALF_UP).toString()); | ||
209 | + xjMap.put("fAccountBalanceDifference", F_account_balance_difference.setScale(2, RoundingMode.HALF_UP).toString()); | ||
210 | + xjMap.put("fTodayNetCashFlow", F_today_net_cash_flow.setScale(2, RoundingMode.HALF_UP).toString()); | ||
211 | + xjMap.put("fTodayFreezeAmount", F_today_freeze_amount.setScale(2, RoundingMode.HALF_UP).toString()); | ||
212 | + xjMap.put("fTodayFreezing", F_today_freezing.setScale(2, RoundingMode.HALF_UP).toString()); | ||
144 | listData.add(xjMap); | 213 | listData.add(xjMap); |
145 | list.addAll(listData); | 214 | list.addAll(listData); |
146 | F_yesterday_account_balance_zs = F_yesterday_account_balance_zs.add(F_yesterday_account_balance); | 215 | F_yesterday_account_balance_zs = F_yesterday_account_balance_zs.add(F_yesterday_account_balance); |
147 | - F_today_account_balance_zs= F_today_account_balance_zs.add(F_today_account_balance); | ||
148 | - F_account_balance_difference_zs=F_account_balance_difference_zs.add(F_account_balance_difference); | ||
149 | - F_today_net_cash_flow_zs=F_today_net_cash_flow_zs.add(F_today_net_cash_flow); | ||
150 | - F_today_freeze_amount_zs=F_today_freeze_amount_zs.add(F_today_freeze_amount); | ||
151 | - F_today_freezing_zs=F_today_freezing_zs.add(F_today_freezing); | 216 | + F_today_account_balance_zs = F_today_account_balance_zs.add(F_today_account_balance); |
217 | + F_account_balance_difference_zs = F_account_balance_difference_zs.add(F_account_balance_difference); | ||
218 | + F_today_net_cash_flow_zs = F_today_net_cash_flow_zs.add(F_today_net_cash_flow); | ||
219 | + F_today_freeze_amount_zs = F_today_freeze_amount_zs.add(F_today_freeze_amount); | ||
220 | + F_today_freezing_zs = F_today_freezing_zs.add(F_today_freezing); | ||
152 | } | 221 | } |
153 | HashMap<String, String> hzMap = new HashMap<>(); | 222 | HashMap<String, String> hzMap = new HashMap<>(); |
154 | - hzMap.put("F_org_type", "汇总"); | ||
155 | - hzMap.put("F_yesterday_account_balance", F_yesterday_account_balance_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
156 | - hzMap.put("F_today_account_balance", F_today_account_balance_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
157 | - hzMap.put("F_account_balance_difference", F_account_balance_difference_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
158 | - hzMap.put("F_today_net_cash_flow", F_today_net_cash_flow_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
159 | - hzMap.put("F_today_freeze_amount", F_today_freeze_amount_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
160 | - hzMap.put("F_today_freezing", F_today_freezing_zs.setScale(2, RoundingMode.HALF_UP).toString()); | 223 | + hzMap.put("fOrgType", "汇总"); |
224 | + hzMap.put("fYesterdayAccountBalance", F_yesterday_account_balance_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
225 | + hzMap.put("fTodayAccountBalance", F_today_account_balance_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
226 | + hzMap.put("fAccountBalanceDifference", F_account_balance_difference_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
227 | + hzMap.put("fTodayNetCashFlow", F_today_net_cash_flow_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
228 | + hzMap.put("fTodayFreezeAmount", F_today_freeze_amount_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
229 | + hzMap.put("fTodayFreezing", F_today_freezing_zs.setScale(2, RoundingMode.HALF_UP).toString()); | ||
161 | list.add(hzMap); | 230 | list.add(hzMap); |
162 | map.put("list", list); | 231 | map.put("list", list); |
163 | TemplateExportParams params = new TemplateExportParams("doc/dailyFundsByDateExport.xls"); | 232 | TemplateExportParams params = new TemplateExportParams("doc/dailyFundsByDateExport.xls"); |
@@ -181,5 +250,62 @@ public class WDailyFundsController extends BaseController<WDailyFundsManager, WD | @@ -181,5 +250,62 @@ public class WDailyFundsController extends BaseController<WDailyFundsManager, WD | ||
181 | } | 250 | } |
182 | } | 251 | } |
183 | 252 | ||
253 | + //金额计算 | ||
254 | + private BigDecimal aggregateBalance(Map<String, Object> data, String key, BigDecimal aggregate) { | ||
255 | + Object value = data.get(key); | ||
256 | + if (value != null) { | ||
257 | + if (value instanceof Number) { | ||
258 | + // 如果 value 是 Number 的实例,则安全地转换并添加到累加器中 | ||
259 | + return aggregate.add(new BigDecimal(((Number) value).doubleValue())); | ||
260 | + } else if (value instanceof String) { | ||
261 | + // 如果 value 是 String,则尝试将其解析为 BigDecimal | ||
262 | + try { | ||
263 | + BigDecimal number = new BigDecimal((String) value); | ||
264 | + return aggregate.add(number); | ||
265 | + } catch (NumberFormatException e) { | ||
266 | + // 如果解析失败,返回原来的累加器值 | ||
267 | + return aggregate; | ||
268 | + } | ||
269 | + } | ||
270 | + } | ||
271 | + // 如果 value 为 null 或者既不是 Number 也不是 String,返回原来的累加器值 | ||
272 | + return aggregate; | ||
273 | + } | ||
274 | + | ||
275 | + //类中转换 | ||
276 | + private static List<Map<String, Object>> convertToMapList(List<WDailyFunds> fundsList) { | ||
277 | + List<Map<String, Object>> resultList = new ArrayList<>(); | ||
278 | + for (WDailyFunds dailyFunds : fundsList) { | ||
279 | + Map<String, Object> map = new HashMap<>(); | ||
280 | + map.put("id", dailyFunds.getId()); | ||
281 | + map.put("refId", dailyFunds.getRefId()); | ||
282 | + map.put("fDate", dailyFunds.getFDate() != null ? dailyFunds.getFDate().toLocalDate() : null); | ||
283 | + map.put("fOrgName", dailyFunds.getFOrgName()); | ||
284 | + map.put("fOrgId", dailyFunds.getFOrgId()); | ||
285 | + map.put("fOrgType", dailyFunds.getFOrgType()); | ||
286 | + map.put("fYesterdayAccountBalance", dailyFunds.getFYesterdayAccountBalance()==null?null:dailyFunds.getFYesterdayAccountBalance().setScale(2, RoundingMode.HALF_UP).toString()); | ||
287 | + map.put("fTodayAccountBalance", dailyFunds.getFTodayAccountBalance()==null?null:dailyFunds.getFTodayAccountBalance().setScale(2, RoundingMode.HALF_UP).toString()); | ||
288 | + map.put("fAccountBalanceDifference", dailyFunds.getFAccountBalanceDifference()==null?null:dailyFunds.getFAccountBalanceDifference().setScale(2, RoundingMode.HALF_UP).toString()); | ||
289 | + map.put("fTodayNetCashFlow", dailyFunds.getFTodayNetCashFlow()==null?null:dailyFunds.getFTodayNetCashFlow().setScale(2, RoundingMode.HALF_UP).toString()); | ||
290 | + map.put("fTodayFreezeAmount", dailyFunds.getFTodayFreezeAmount()==null?null:dailyFunds.getFTodayFreezeAmount().setScale(2, RoundingMode.HALF_UP).toString()); | ||
291 | + map.put("fTodayFreezing", dailyFunds.getFTodayFreezing()==null?null:dailyFunds.getFTodayFreezing().setScale(2, RoundingMode.HALF_UP).toString()); | ||
292 | + map.put("fInspStatusName", dailyFunds.getFInspStatusName()); | ||
293 | + map.put("fInspTime", dailyFunds.getFInspTime()); | ||
294 | + map.put("fInspNotes", dailyFunds.getFInspNotes()); | ||
295 | + map.put("fInspBy", dailyFunds.getFInspBy()); | ||
296 | + map.put("fInspId", dailyFunds.getFInspId()); | ||
297 | + map.put("fCreateBy", dailyFunds.getFCreateBy()); | ||
298 | + map.put("fCreateId", dailyFunds.getFCreateId()); | ||
299 | + map.put("fCreateTime", dailyFunds.getFCreateTime()); | ||
300 | + map.put("fUpdateBy", dailyFunds.getFUpdateBy()); | ||
301 | + map.put("fUpdateId", dailyFunds.getFUpdateId()); | ||
302 | + map.put("fUpdateTime", dailyFunds.getFUpdateTime()); | ||
303 | + map.put("fFormDataRev", dailyFunds.getFFormDataRev()); | ||
304 | + map.put("fOrderNo", dailyFunds.getFOrderNo()); | ||
305 | + resultList.add(map); | ||
306 | + } | ||
307 | + return resultList; | ||
308 | + } | ||
309 | + | ||
184 | 310 | ||
185 | } | 311 | } |
backend/chkpower/src/main/java/com/hotent/chkpower/dao/WDailyFundsDao.java
@@ -27,6 +27,6 @@ public interface WDailyFundsDao extends BaseMapper<WDailyFunds> { | @@ -27,6 +27,6 @@ public interface WDailyFundsDao extends BaseMapper<WDailyFunds> { | ||
27 | 27 | ||
28 | List<WDailyFunds> selectWDailyFundsNews(@Param("wCurrentList") List<HashMap<String,String>> wCurrentList, @Param("fDate") LocalDateTime fDate); | 28 | List<WDailyFunds> selectWDailyFundsNews(@Param("wCurrentList") List<HashMap<String,String>> wCurrentList, @Param("fDate") LocalDateTime fDate); |
29 | 29 | ||
30 | - List<HashMap<String, String>> getDailyFundsByDateList(@Param("fOrgType") String fOrgType, @Param("fDate") String fDate); | 30 | +// List<HashMap<String, String>> getDailyFundsByDateList(@Param("fOrgType") String fOrgType, @Param("fDate") String fDate); |
31 | 31 | ||
32 | } | 32 | } |
backend/chkpower/src/main/java/com/hotent/chkpower/manager/WDailyFundsManager.java
@@ -38,8 +38,15 @@ public interface WDailyFundsManager extends BaseManager<WDailyFunds> { | @@ -38,8 +38,15 @@ public interface WDailyFundsManager extends BaseManager<WDailyFunds> { | ||
38 | void updateInsp(WDailyFundsInspDto wDailyFundsInspDto); | 38 | void updateInsp(WDailyFundsInspDto wDailyFundsInspDto); |
39 | 39 | ||
40 | 40 | ||
41 | - List<HashMap<String, String>> getDailyFundsByDateList(String orgType, String date); | 41 | + List<WDailyFunds> getDailyFundsByDateList(String orgType, String date); |
42 | 42 | ||
43 | void verifyInitWDailyFunds(LocalDateTime fDate); | 43 | void verifyInitWDailyFunds(LocalDateTime fDate); |
44 | 44 | ||
45 | + /** | ||
46 | + * 批量复核,每条状态不一致 | ||
47 | + * @param wDailyFunds | ||
48 | + */ | ||
49 | + void updateInsps( List<WDailyFunds> wDailyFunds); | ||
50 | + | ||
51 | + | ||
45 | } | 52 | } |
backend/chkpower/src/main/java/com/hotent/chkpower/manager/impl/WDailyFundsManagerImpl.java
@@ -99,6 +99,7 @@ public class WDailyFundsManagerImpl extends BaseManagerImpl<WDailyFundsDao, WDai | @@ -99,6 +99,7 @@ public class WDailyFundsManagerImpl extends BaseManagerImpl<WDailyFundsDao, WDai | ||
99 | } | 99 | } |
100 | } | 100 | } |
101 | 101 | ||
102 | + @Transactional | ||
102 | @Override | 103 | @Override |
103 | public void updateInsp(WDailyFundsInspDto wDailyFundsInspDto) { | 104 | public void updateInsp(WDailyFundsInspDto wDailyFundsInspDto) { |
104 | List<WDailyFunds> wDailyFunds = wDailyFundsInspDto.getwDailyFundsList(); | 105 | List<WDailyFunds> wDailyFunds = wDailyFundsInspDto.getwDailyFundsList(); |
@@ -128,8 +129,13 @@ public class WDailyFundsManagerImpl extends BaseManagerImpl<WDailyFundsDao, WDai | @@ -128,8 +129,13 @@ public class WDailyFundsManagerImpl extends BaseManagerImpl<WDailyFundsDao, WDai | ||
128 | } | 129 | } |
129 | 130 | ||
130 | @Override | 131 | @Override |
131 | - public List<HashMap<String, String>> getDailyFundsByDateList(String orgType, String date) { | ||
132 | - return baseMapper.getDailyFundsByDateList(orgType,date); | 132 | + public List<WDailyFunds> getDailyFundsByDateList(String orgType, String date) { |
133 | + List<WDailyFunds> wDailyFunds = baseMapper.selectList(Wrappers.<WDailyFunds>lambdaQuery() | ||
134 | + .eq(WDailyFunds::getFOrgType, orgType) | ||
135 | + .eq(WDailyFunds::getFDate, date) | ||
136 | + .orderByAsc(WDailyFunds::getFOrderNo) | ||
137 | + ); | ||
138 | + return wDailyFunds; | ||
133 | } | 139 | } |
134 | 140 | ||
135 | @Override | 141 | @Override |
@@ -140,4 +146,30 @@ public class WDailyFundsManagerImpl extends BaseManagerImpl<WDailyFundsDao, WDai | @@ -140,4 +146,30 @@ public class WDailyFundsManagerImpl extends BaseManagerImpl<WDailyFundsDao, WDai | ||
140 | } | 146 | } |
141 | } | 147 | } |
142 | 148 | ||
149 | + @Transactional | ||
150 | + @Override | ||
151 | + public void updateInsps(List<WDailyFunds> wDailyFunds) { | ||
152 | + for (WDailyFunds wDailyFund : wDailyFunds) { | ||
153 | + baseMapper.update(null,Wrappers.<WDailyFunds>lambdaUpdate() | ||
154 | + .set(WDailyFunds::getFUpdateBy, scriptImpl.getCurrentUserName()) | ||
155 | + .set(WDailyFunds::getFUpdateId, scriptImpl.getCurrentUserId()) | ||
156 | + .set(WDailyFunds::getFInspStatusName, wDailyFund.getFInspStatusName()) | ||
157 | + .set(WDailyFunds::getFInspTime, LocalDateTime.now()) | ||
158 | + .set(WDailyFunds::getFInspNotes, wDailyFund.getFInspNotes()) | ||
159 | + .eq(WDailyFunds::getId, wDailyFund.getId()) | ||
160 | + ); | ||
161 | + | ||
162 | + WFinance wFinance = new WFinance(); | ||
163 | + wFinance.setFUpdateBy(scriptImpl.getCurrentUserName()); | ||
164 | + wFinance.setFUpdateId(scriptImpl.getCurrentUserId()); | ||
165 | + wFinance.setFInspStatusName(wDailyFund.getFInspStatusName()); | ||
166 | + wFinance.setFInspTime(LocalDateTime.now()); | ||
167 | + wFinance.setFInspNotes(wDailyFund.getFInspNotes()); | ||
168 | + wFinance.setFDate(wDailyFund.getFDate()); | ||
169 | + wFinance.setFOrgId(wDailyFund.getFOrgId()); | ||
170 | + wFinanceDao.updateInsp(wFinance); | ||
171 | + wCurrentReportManager.updateInsp(wDailyFund.getFDate(),wDailyFund.getFOrgId(),wDailyFund.getFInspStatusName(),wDailyFund.getFInspNotes()); | ||
172 | + } | ||
173 | + } | ||
174 | + | ||
143 | } | 175 | } |
backend/chkpower/src/main/java/com/hotent/chkpower/model/WDailyFunds.java
@@ -2,6 +2,7 @@ package com.hotent.chkpower.model; | @@ -2,6 +2,7 @@ package com.hotent.chkpower.model; | ||
2 | 2 | ||
3 | import java.math.BigDecimal; | 3 | import java.math.BigDecimal; |
4 | import com.baomidou.mybatisplus.annotation.IdType; | 4 | import com.baomidou.mybatisplus.annotation.IdType; |
5 | +import com.fasterxml.jackson.annotation.JsonFormat; | ||
5 | import com.hotent.base.entity.BaseModel; | 6 | import com.hotent.base.entity.BaseModel; |
6 | import com.baomidou.mybatisplus.extension.activerecord.Model; | 7 | import com.baomidou.mybatisplus.extension.activerecord.Model; |
7 | import com.baomidou.mybatisplus.annotation.TableId; | 8 | import com.baomidou.mybatisplus.annotation.TableId; |
@@ -26,127 +27,127 @@ public class WDailyFunds extends BaseModel<WDailyFunds> { | @@ -26,127 +27,127 @@ public class WDailyFunds extends BaseModel<WDailyFunds> { | ||
26 | @TableId(value = "ID_", type = IdType.ASSIGN_ID) | 27 | @TableId(value = "ID_", type = IdType.ASSIGN_ID) |
27 | @JsonProperty("id") | 28 | @JsonProperty("id") |
28 | private String id; | 29 | private String id; |
29 | - | 30 | + |
30 | @ApiModelProperty(value = "外键") | 31 | @ApiModelProperty(value = "外键") |
31 | @TableField("REF_ID_") | 32 | @TableField("REF_ID_") |
32 | @JsonProperty("refId") | 33 | @JsonProperty("refId") |
33 | private String refId; | 34 | private String refId; |
34 | - | 35 | + |
35 | @ApiModelProperty(value = "日期") | 36 | @ApiModelProperty(value = "日期") |
36 | @TableField("F_date") | 37 | @TableField("F_date") |
37 | @JsonProperty("fDate") | 38 | @JsonProperty("fDate") |
38 | private LocalDateTime fDate; | 39 | private LocalDateTime fDate; |
39 | - | 40 | + |
40 | @ApiModelProperty(value = "公司") | 41 | @ApiModelProperty(value = "公司") |
41 | @TableField("F_org_name") | 42 | @TableField("F_org_name") |
42 | @JsonProperty("fOrgName") | 43 | @JsonProperty("fOrgName") |
43 | private String fOrgName; | 44 | private String fOrgName; |
44 | - | 45 | + |
45 | @ApiModelProperty(value = "公司id") | 46 | @ApiModelProperty(value = "公司id") |
46 | @TableField("F_org_id") | 47 | @TableField("F_org_id") |
47 | @JsonProperty("fOrgId") | 48 | @JsonProperty("fOrgId") |
48 | private String fOrgId; | 49 | private String fOrgId; |
49 | - | 50 | + |
50 | @ApiModelProperty(value = "公司类型") | 51 | @ApiModelProperty(value = "公司类型") |
51 | @TableField("F_org_type") | 52 | @TableField("F_org_type") |
52 | @JsonProperty("fOrgType") | 53 | @JsonProperty("fOrgType") |
53 | private String fOrgType; | 54 | private String fOrgType; |
54 | - | 55 | + |
55 | @ApiModelProperty(value = "昨日余额") | 56 | @ApiModelProperty(value = "昨日余额") |
56 | @TableField("F_yesterday_account_balance") | 57 | @TableField("F_yesterday_account_balance") |
57 | @JsonProperty("fYesterdayAccountBalance") | 58 | @JsonProperty("fYesterdayAccountBalance") |
58 | private BigDecimal fYesterdayAccountBalance; | 59 | private BigDecimal fYesterdayAccountBalance; |
59 | - | 60 | + |
60 | @ApiModelProperty(value = "今日余额") | 61 | @ApiModelProperty(value = "今日余额") |
61 | @TableField("F_today_account_balance") | 62 | @TableField("F_today_account_balance") |
62 | @JsonProperty("fTodayAccountBalance") | 63 | @JsonProperty("fTodayAccountBalance") |
63 | private BigDecimal fTodayAccountBalance; | 64 | private BigDecimal fTodayAccountBalance; |
64 | - | 65 | + |
65 | @ApiModelProperty(value = "余额差额") | 66 | @ApiModelProperty(value = "余额差额") |
66 | @TableField("F_account_balance_difference") | 67 | @TableField("F_account_balance_difference") |
67 | @JsonProperty("fAccountBalanceDifference") | 68 | @JsonProperty("fAccountBalanceDifference") |
68 | private BigDecimal fAccountBalanceDifference; | 69 | private BigDecimal fAccountBalanceDifference; |
69 | - | 70 | + |
70 | @ApiModelProperty(value = "今日净现金流") | 71 | @ApiModelProperty(value = "今日净现金流") |
71 | @TableField("F_today_net_cash_flow") | 72 | @TableField("F_today_net_cash_flow") |
72 | @JsonProperty("fTodayNetCashFlow") | 73 | @JsonProperty("fTodayNetCashFlow") |
73 | private BigDecimal fTodayNetCashFlow; | 74 | private BigDecimal fTodayNetCashFlow; |
74 | - | 75 | + |
75 | @ApiModelProperty(value = "今日被冻结金额") | 76 | @ApiModelProperty(value = "今日被冻结金额") |
76 | @TableField("F_today_freeze_amount") | 77 | @TableField("F_today_freeze_amount") |
77 | @JsonProperty("fTodayFreezeAmount") | 78 | @JsonProperty("fTodayFreezeAmount") |
78 | private BigDecimal fTodayFreezeAmount; | 79 | private BigDecimal fTodayFreezeAmount; |
79 | - | 80 | + |
80 | @ApiModelProperty(value = "今日冻结上限") | 81 | @ApiModelProperty(value = "今日冻结上限") |
81 | @TableField("F_today_freezing") | 82 | @TableField("F_today_freezing") |
82 | @JsonProperty("fTodayFreezing") | 83 | @JsonProperty("fTodayFreezing") |
83 | private BigDecimal fTodayFreezing; | 84 | private BigDecimal fTodayFreezing; |
84 | - | 85 | + |
85 | @ApiModelProperty(value = "复核状态") | 86 | @ApiModelProperty(value = "复核状态") |
86 | @TableField("F_insp_status_name") | 87 | @TableField("F_insp_status_name") |
87 | @JsonProperty("fInspStatusName") | 88 | @JsonProperty("fInspStatusName") |
88 | private String fInspStatusName; | 89 | private String fInspStatusName; |
89 | - | 90 | + |
90 | @ApiModelProperty(value = "复核时间") | 91 | @ApiModelProperty(value = "复核时间") |
91 | @TableField("F_insp_time") | 92 | @TableField("F_insp_time") |
92 | @JsonProperty("fInspTime") | 93 | @JsonProperty("fInspTime") |
93 | private LocalDateTime fInspTime; | 94 | private LocalDateTime fInspTime; |
94 | - | 95 | + |
95 | @ApiModelProperty(value = "复核备注") | 96 | @ApiModelProperty(value = "复核备注") |
96 | @TableField("F_insp_notes") | 97 | @TableField("F_insp_notes") |
97 | @JsonProperty("fInspNotes") | 98 | @JsonProperty("fInspNotes") |
98 | private String fInspNotes; | 99 | private String fInspNotes; |
99 | - | 100 | + |
100 | @ApiModelProperty(value = "复核人") | 101 | @ApiModelProperty(value = "复核人") |
101 | @TableField("F_insp_by") | 102 | @TableField("F_insp_by") |
102 | @JsonProperty("fInspBy") | 103 | @JsonProperty("fInspBy") |
103 | private String fInspBy; | 104 | private String fInspBy; |
104 | - | 105 | + |
105 | @ApiModelProperty(value = "复核人id") | 106 | @ApiModelProperty(value = "复核人id") |
106 | @TableField("F_insp_id") | 107 | @TableField("F_insp_id") |
107 | @JsonProperty("fInspId") | 108 | @JsonProperty("fInspId") |
108 | private String fInspId; | 109 | private String fInspId; |
109 | - | 110 | + |
110 | @ApiModelProperty(value = "创建人") | 111 | @ApiModelProperty(value = "创建人") |
111 | @TableField("F_create_by") | 112 | @TableField("F_create_by") |
112 | @JsonProperty("fCreateBy") | 113 | @JsonProperty("fCreateBy") |
113 | private String fCreateBy; | 114 | private String fCreateBy; |
114 | - | 115 | + |
115 | @ApiModelProperty(value = "创建人id") | 116 | @ApiModelProperty(value = "创建人id") |
116 | @TableField("F_create_id") | 117 | @TableField("F_create_id") |
117 | @JsonProperty("fCreateId") | 118 | @JsonProperty("fCreateId") |
118 | private String fCreateId; | 119 | private String fCreateId; |
119 | - | 120 | + |
120 | @ApiModelProperty(value = "创建时间") | 121 | @ApiModelProperty(value = "创建时间") |
121 | @TableField("F_create_time") | 122 | @TableField("F_create_time") |
122 | @JsonProperty("fCreateTime") | 123 | @JsonProperty("fCreateTime") |
123 | private LocalDateTime fCreateTime; | 124 | private LocalDateTime fCreateTime; |
124 | - | 125 | + |
125 | @ApiModelProperty(value = "修改人") | 126 | @ApiModelProperty(value = "修改人") |
126 | @TableField("F_update_by") | 127 | @TableField("F_update_by") |
127 | @JsonProperty("fUpdateBy") | 128 | @JsonProperty("fUpdateBy") |
128 | private String fUpdateBy; | 129 | private String fUpdateBy; |
129 | - | 130 | + |
130 | @ApiModelProperty(value = "修改人id") | 131 | @ApiModelProperty(value = "修改人id") |
131 | @TableField("F_update_id") | 132 | @TableField("F_update_id") |
132 | @JsonProperty("fUpdateId") | 133 | @JsonProperty("fUpdateId") |
133 | private String fUpdateId; | 134 | private String fUpdateId; |
134 | - | 135 | + |
135 | @ApiModelProperty(value = "修改时间") | 136 | @ApiModelProperty(value = "修改时间") |
136 | @TableField("F_update_time") | 137 | @TableField("F_update_time") |
137 | @JsonProperty("fUpdateTime") | 138 | @JsonProperty("fUpdateTime") |
138 | private LocalDateTime fUpdateTime; | 139 | private LocalDateTime fUpdateTime; |
139 | - | 140 | + |
140 | @ApiModelProperty(value = "表单数据版本") | 141 | @ApiModelProperty(value = "表单数据版本") |
141 | @TableField("F_form_data_rev_") | 142 | @TableField("F_form_data_rev_") |
142 | @JsonProperty("fFormDataRev") | 143 | @JsonProperty("fFormDataRev") |
143 | private Long fFormDataRev; | 144 | private Long fFormDataRev; |
144 | - | 145 | + |
145 | @ApiModelProperty(value = "排序") | 146 | @ApiModelProperty(value = "排序") |
146 | @TableField("F_order_no") | 147 | @TableField("F_order_no") |
147 | @JsonProperty("fOrderNo") | 148 | @JsonProperty("fOrderNo") |
148 | private BigDecimal fOrderNo; | 149 | private BigDecimal fOrderNo; |
149 | - | 150 | + |
150 | 151 | ||
151 | public String getId() { | 152 | public String getId() { |
152 | return id; | 153 | return id; |
backend/chkpower/src/main/resources/doc/dailyFundsByDateExport.xls
No preview for this file type
backend/chkpower/src/main/resources/mapper/WDailyFundsMapper.xml
@@ -103,9 +103,9 @@ | @@ -103,9 +103,9 @@ | ||
103 | </if> | 103 | </if> |
104 | </select> | 104 | </select> |
105 | 105 | ||
106 | - <select id="getDailyFundsByDateList" resultType="java.util.HashMap"> | ||
107 | - SELECT * FROM w_daily_funds | ||
108 | - WHERE F_org_type =#{fOrgType} and DATE(F_date) =DATE(#{fDate}) | ||
109 | - ORDER BY F_order_no asc | ||
110 | - </select> | 106 | +<!-- <select id="getDailyFundsByDateList" resultType="java.util.HashMap">--> |
107 | +<!-- SELECT * FROM w_daily_funds--> | ||
108 | +<!-- WHERE F_org_type =#{fOrgType} and DATE(F_date) =DATE(#{fDate})--> | ||
109 | +<!-- ORDER BY F_order_no asc--> | ||
110 | +<!-- </select>--> | ||
111 | </mapper> | 111 | </mapper> |
frontend/front/src/api/service/dailyFunds.js
@@ -9,6 +9,22 @@ export function updateInsp(data) { | @@ -9,6 +9,22 @@ export function updateInsp(data) { | ||
9 | }) | 9 | }) |
10 | } | 10 | } |
11 | 11 | ||
12 | +export function updateInsps(data) { | ||
13 | + return request({ | ||
14 | + url: `${context.portal}/wDailyFunds/v1/updateInsps`, | ||
15 | + method: 'post', | ||
16 | + data, | ||
17 | + }) | ||
18 | +} | ||
19 | + | ||
20 | +export function getInspList(date) { | ||
21 | + return request({ | ||
22 | + url: `${context.portal}/wDailyFunds/v1/getInspList?date=` + date, | ||
23 | + method: 'get', | ||
24 | + }) | ||
25 | +} | ||
26 | + | ||
27 | + | ||
12 | export function dailyFundsByDateExport(date) { | 28 | export function dailyFundsByDateExport(date) { |
13 | return request({ | 29 | return request({ |
14 | url: `${context.portal}/wDailyFunds/v1/dailyFundsByDateExport?date=${date}`, | 30 | url: `${context.portal}/wDailyFunds/v1/dailyFundsByDateExport?date=${date}`, |
frontend/front/src/views/pages/reviewOfFinancialDailyReport/index.vue
1 | <template> | 1 | <template> |
2 | - <div class='container'> | ||
3 | - <el-container> | ||
4 | - <el-header> | ||
5 | - <div class="title"> | ||
6 | - <span>资金复核日报</span> | ||
7 | - <el-date-picker v-model="days" value-format="yyyy-MM-dd" type="date" placeholder="选择日期" | ||
8 | - @change="handleChangeDate"> | ||
9 | - </el-date-picker> | ||
10 | - <!-- {{ days }} --> | ||
11 | - </div> | ||
12 | - </el-header> | ||
13 | - <el-main> | ||
14 | - <el-table :data="tableData" border show-summary :default-sort="{ prop: 'wdailyfundsfdate', order: '' }" | ||
15 | - :summary-method="getSummaries" :span-method="spanMethod" :cell-style="cellStyleMethod" | ||
16 | - style="width: 100%; margin-top: 20px"> | ||
17 | - <!-- <el-table-column type="selection" width="55"></el-table-column> --> | ||
18 | - <el-table-column prop="wdailyfundsforgtype" align="center" label="公司类型"></el-table-column> | ||
19 | - <el-table-column prop="wdailyfundsfdate" align="center" sortable label="日期"> | ||
20 | - </el-table-column> | ||
21 | - <el-table-column prop="wdailyfundsforgname" align="center" label="公司"> </el-table-column> | ||
22 | - <el-table-column prop="wdailyfundsfyesterdayaccountbalance" align="center" label="昨日余额"> | ||
23 | - </el-table-column> | ||
24 | - <el-table-column prop="wdailyfundsftodayaccountbalance" align="center" label="今日余额"> | ||
25 | - </el-table-column> | ||
26 | - <el-table-column prop="wdailyfundsfaccountbalancedifference" align="center" label="差额(今日-昨日)"> | ||
27 | - </el-table-column> | ||
28 | - <el-table-column prop="wdailyfundsftodaynetcashflow" align="center" label="净现金流"> </el-table-column> | ||
29 | - <el-table-column prop="wdailyfundsftodayfreezing" align="center" label="冻结金额"> </el-table-column> | ||
30 | - <el-table-column prop="wdailyfundsftodayfreezeamount" align="center" label="冻结金额上限"> | ||
31 | - </el-table-column> | ||
32 | - <el-table-column prop="wdailyfundsfinspstatusname" align="center" label="复核"> </el-table-column> | ||
33 | - <el-table-column prop="" align="center" label="复核人"> </el-table-column> | ||
34 | - <el-table-column prop="" align="center" label="填报人"> </el-table-column> | ||
35 | - <el-table-column prop="remake" label="备注"> </el-table-column> | ||
36 | - </el-table> | ||
37 | - </el-main> | ||
38 | - <el-footer> | ||
39 | - <div class="" style="display: flex;justify-content: center;" v-if="tableData.length"> | ||
40 | - <el-button type="primary" style="width: 200px;" @click="handleReview"> | ||
41 | - 复核完成 | ||
42 | - </el-button> | ||
43 | - </div> | ||
44 | - </el-footer> | ||
45 | - </el-container> | ||
46 | - <!-- <div slot="append" style="display:flex;"> | ||
47 | - <div class="sum_footer"> | ||
48 | - <div class="sum_footer_unit center" style="width:160px;"> | ||
49 | - 合计(大写) | ||
50 | - </div> | ||
51 | - <div class="sum_footer_unit" style="width:350px;">11111</div> | ||
52 | - </div> | ||
53 | - <div class="sum_footer"> | ||
54 | - <div class="sum_footer_unit center" style="width:120px;"> | ||
55 | - 合计(小写) | ||
56 | - </div> | ||
57 | - <div class="sum_footer_unit" style="flex-grow:3">2222</div> | ||
58 | - </div> | ||
59 | - </div> --> | ||
60 | - </div> | 2 | + <div class='container' v-loading="loading"> |
3 | + <el-container> | ||
4 | + <el-header> | ||
5 | + <div class="title"> | ||
6 | + <span>资金复核日报</span> | ||
7 | + <el-date-picker v-model="days" value-format="yyyy-MM-dd" type="date" placeholder="选择日期" | ||
8 | + @change="handleChangeDate"> | ||
9 | + </el-date-picker> | ||
10 | + </div> | ||
11 | + </el-header> | ||
12 | + <el-main> | ||
13 | + <el-row> | ||
14 | + <el-col :span="12"> | ||
15 | + <el-button icon="el-icon-download" @click="onSubmitDc">资金日报导出</el-button> | ||
16 | + </el-col> | ||
17 | + <el-col :span="12"> | ||
18 | + <div style="text-align: right;"> | ||
19 | + <el-checkbox v-model="updateInspStatusChecked" style="margin-right: 15px;">包含已复核</el-checkbox> | ||
20 | + <el-button type="warning" @click="onUpdateInspStatusName('不通过')">一键不通过</el-button> | ||
21 | + <el-button type="success" @click="onUpdateInspStatusName('通过')">一键通过</el-button> | ||
22 | + </div> | ||
23 | + </el-col> | ||
24 | + </el-row> | ||
25 | + <el-table :data="tableData" border :default-sort="{ prop: 'wdailyfundsfdate', order: '' }" | ||
26 | + :span-method="spanMethod" :row-class-name="tableRowClassName"> style="width: 100%; margin-top: 20px"> | ||
27 | + <el-table-column prop="fOrgType" align="center" label="公司类型" width="80"></el-table-column> | ||
28 | + <el-table-column prop="fDate" align="center" sortable label="日期" width="120"></el-table-column> | ||
29 | + <el-table-column prop="fOrgName" align="center" label="公司"></el-table-column> | ||
30 | + <el-table-column prop="fYesterdayAccountBalance" align="center" label="昨日余额" | ||
31 | + width="120"></el-table-column> | ||
32 | + <el-table-column prop="fTodayAccountBalance" align="center" label="今日余额" width="120"></el-table-column> | ||
33 | + <el-table-column prop="fAccountBalanceDifference" align="center" label="差额(今日-昨日)" | ||
34 | + width="120"></el-table-column> | ||
35 | + <el-table-column prop="fTodayNetCashFlow" align="center" label="净现金流" width="120"></el-table-column> | ||
36 | + <el-table-column prop="fTodayFreezeAmount" align="center" label="冻结金额" width="120"></el-table-column> | ||
37 | + <el-table-column prop="fTodayFreezing" align="center" label="冻结金额上限" width="120"></el-table-column> | ||
38 | + <el-table-column prop="fInspStatusName" align="center" label="复核" width="120"> | ||
39 | + <template slot-scope="scope"> | ||
40 | + <template v-if="scope.row.id"> | ||
41 | + <el-select v-model="scope.row.fInspStatusName" placeholder="请选择" style="width: 100%"> | ||
42 | + <el-option label="通过" value="通过"></el-option> | ||
43 | + <el-option label="不通过" value="不通过"></el-option> | ||
44 | + </el-select> | ||
45 | + </template> | ||
46 | + </template> | ||
47 | + </el-table-column> | ||
48 | + <el-table-column prop="fInspNotes" align="center" label="备注" width="220"> | ||
49 | + <template slot-scope="scope"> | ||
50 | + <template v-if="scope.row.id"> | ||
51 | + <el-input placeholder="请输入内容" v-model="scope.row.fInspNotes" clearable></el-input> | ||
52 | + </template> | ||
53 | + </template> | ||
54 | + </el-table-column> | ||
55 | + </el-table> | ||
56 | + </el-main> | ||
57 | + <el-footer> | ||
58 | + <div class="footerBtn" v-if="tableData.length"> | ||
59 | + <el-button type="primary" style="width: 200px;" @click="handleReview" v-if="!isOn()"> | ||
60 | + 复核完成 | ||
61 | + </el-button> | ||
62 | + <el-button type="info" style="width: 200px;" plain v-if="isOn()"> | ||
63 | + 复核完成 | ||
64 | + </el-button> | ||
65 | + </div> | ||
66 | + </el-footer> | ||
67 | + </el-container> | ||
68 | + </div> | ||
61 | </template> | 69 | </template> |
62 | - | ||
63 | <script> | 70 | <script> |
71 | +import {dailyFundsByDateExport, getInspList, updateInsps} from "@/api/service/dailyFunds"; | ||
72 | +import TemplateForm from "@/components/dataTemplate/TemplateForm.vue"; | ||
73 | + | ||
64 | export default { | 74 | export default { |
65 | - data() { | ||
66 | - return { | ||
67 | - tableData: [], | ||
68 | - days: new Date(Date.now() - 86400000).toISOString().split('T')[0] | ||
69 | - }; | 75 | + components: {TemplateForm}, |
76 | + data() { | ||
77 | + return { | ||
78 | + loading:false, | ||
79 | + updateInspStatusChecked: false, | ||
80 | + tableData: [], | ||
81 | + days: new Date(Date.now() - 86400000).toISOString().split('T')[0] | ||
82 | + }; | ||
83 | + }, | ||
84 | + mounted() { | ||
85 | + this.initData(); | ||
86 | + }, | ||
87 | + methods: { | ||
88 | + async initData() { | ||
89 | + let data = await getInspList(this.days); | ||
90 | + this.tableData = this.mergeTableRow(data.value, ['fOrgType']); | ||
91 | + }, | ||
92 | + handleChangeDate() { | ||
93 | + this.initData(); | ||
70 | }, | 94 | }, |
71 | - mounted() { | ||
72 | - this.initData(); | 95 | + spanMethod({row, column, rowIndex, columnIndex}) { |
96 | + if (column.property == 'fOrgType' && row.fOrgType != row.fDate) { | ||
97 | + return [row.fOrgTypeSPAN.rowspan, row.fOrgTypeSPAN.colspan] | ||
98 | + } | ||
99 | + if (row.fOrgType == row.fDate) { | ||
100 | + if (columnIndex == 0) { | ||
101 | + return [1, 3]; | ||
102 | + } else if (columnIndex == 1 || columnIndex == 2) { | ||
103 | + return [0, 0]; | ||
104 | + } | ||
105 | + } | ||
73 | }, | 106 | }, |
74 | - methods: { | ||
75 | - async initData() { | ||
76 | - let params = { | ||
77 | - "templateId": "1810231230602571776", | ||
78 | - "queryFilter": { | ||
79 | - "pageBean": { | ||
80 | - "page": 1, | ||
81 | - "pageSize": 999, | ||
82 | - "total": 1 | ||
83 | - }, | ||
84 | - "querys": [ | ||
85 | - { | ||
86 | - "property": "t.F_date", | ||
87 | - "value": this.days | ||
88 | - }, | ||
89 | - ], | ||
90 | - "sorter": [ | ||
91 | - { | ||
92 | - "property": "t.F_date", | ||
93 | - "direction": "DESC" | ||
94 | - }, | ||
95 | - { | ||
96 | - "property": "t.F_org_type", | ||
97 | - "direction": "DESC" | ||
98 | - }, | ||
99 | - { | ||
100 | - "property": "t.F_org_name", | ||
101 | - "direction": "DESC" | ||
102 | - }, | ||
103 | - { | ||
104 | - "property": "t.F_org_id", | ||
105 | - "direction": "DESC" | ||
106 | - }, | ||
107 | - { | ||
108 | - "property": "t.F_insp_status_name", | ||
109 | - "direction": "DESC" | ||
110 | - } | ||
111 | - ] | ||
112 | - } | 107 | + mergeTableRow(data, merge) { |
108 | + if (!merge || merge.length === 0) { | ||
109 | + return data | ||
110 | + } | ||
111 | + merge.forEach((m) => { | ||
112 | + const mList = {} | ||
113 | + data = data.map((v, index) => { | ||
114 | + const rowVal = v[m] | ||
115 | + if (mList[rowVal] && mList[rowVal].newIndex === index) { | ||
116 | + mList[rowVal]['num']++ | ||
117 | + mList[rowVal]['newIndex']++ | ||
118 | + data[mList[rowVal]['index']][m + 'SPAN'].rowspan++ | ||
119 | + v[m + 'SPAN'] = { | ||
120 | + rowspan: 0, | ||
121 | + colspan: 0 | ||
113 | } | 122 | } |
114 | - let data = await this.$requestConfig.getDataTemplateDataList(params); | ||
115 | - this.tableData = data.rows; | ||
116 | - // 添加小计行 | ||
117 | - this.tableData = this.tableData.reduce((acc, cur, index) => { | ||
118 | - acc.push(cur); | ||
119 | - // 判断是否需要添加小计行 | ||
120 | - if (cur.wdailyfundsforderno !== 'subtotal' && (index === this.tableData.length - 1 || this.tableData[index + 1].wdailyfundsforgtype !== cur.wdailyfundsforgtype)) { | ||
121 | - const subtotalRow = { | ||
122 | - wdailyfundsforderno: 'subtotal', | ||
123 | - wdailyfundsforgtype: `小计(${cur.wdailyfundsforgtype || '--'})`, | ||
124 | - wdailyfundsfyesterdayaccountbalance: 0, | ||
125 | - wdailyfundsftodayaccountbalance: 0, | ||
126 | - wdailyfundsfaccountbalancedifference: 0, | ||
127 | - wdailyfundsftodaynetcashflow: 0, | ||
128 | - wdailyfundsftodayfreezing: 0, | ||
129 | - wdailyfundsftodayfreezeamount: 0, | ||
130 | - }; | ||
131 | - // 计算小计值 | ||
132 | - this.tableData.forEach((item) => { | ||
133 | - if (item.wdailyfundsforgtype === cur.wdailyfundsforgtype) { | ||
134 | - subtotalRow.wdailyfundsfyesterdayaccountbalance += isNaN(item.wdailyfundsfyesterdayaccountbalance) ? 0 : item.wdailyfundsfyesterdayaccountbalance; | ||
135 | - subtotalRow.wdailyfundsftodayaccountbalance += isNaN(item.wdailyfundsftodayaccountbalance) ? 0 : item.wdailyfundsftodayaccountbalance; | ||
136 | - subtotalRow.wdailyfundsfaccountbalancedifference += isNaN(item.wdailyfundsfaccountbalancedifference) ? 0 : item.wdailyfundsfaccountbalancedifference; | ||
137 | - subtotalRow.wdailyfundsftodaynetcashflow += isNaN(item.wdailyfundsftodaynetcashflow) ? 0 : item.wdailyfundsftodaynetcashflow; | ||
138 | - subtotalRow.wdailyfundsftodayfreezing += isNaN(item.wdailyfundsftodayfreezing) ? 0 : item.wdailyfundsftodayfreezing; | ||
139 | - subtotalRow.wdailyfundsftodayfreezeamount += isNaN(item.wdailyfundsftodayfreezeamount) ? 0 : item.wdailyfundsftodayfreezeamount; | ||
140 | - } | ||
141 | - }); | ||
142 | - subtotalRow.wdailyfundsfyesterdayaccountbalance = (subtotalRow.wdailyfundsfyesterdayaccountbalance.toFixed(2)); | ||
143 | - subtotalRow.wdailyfundsftodayaccountbalance = (subtotalRow.wdailyfundsftodayaccountbalance.toFixed(2)); | ||
144 | - subtotalRow.wdailyfundsfaccountbalancedifference = (subtotalRow.wdailyfundsfaccountbalancedifference.toFixed(2)); | ||
145 | - subtotalRow.wdailyfundsftodaynetcashflow = (subtotalRow.wdailyfundsftodaynetcashflow.toFixed(2)); | ||
146 | - subtotalRow.wdailyfundsftodayfreezing = (subtotalRow.wdailyfundsftodayfreezing.toFixed(2)); | ||
147 | - subtotalRow.wdailyfundsftodayfreezeamount = (subtotalRow.wdailyfundsftodayfreezeamount.toFixed(2)); | ||
148 | - acc.push(subtotalRow); | ||
149 | - } | ||
150 | - return acc; | ||
151 | - }, []); | ||
152 | - console.log('数据', JSON.parse(JSON.stringify(this.tableData))); | ||
153 | - }, | ||
154 | - handleChangeDate() { | ||
155 | - this.initData(); | ||
156 | - }, | ||
157 | - getSummaries(param) { | ||
158 | - const { columns, data } = param; | ||
159 | - const sums = []; | ||
160 | - columns.forEach((column, index) => { | ||
161 | - if (index === 0) { | ||
162 | - sums[index] = '汇总'; | ||
163 | - return; | ||
164 | - } | ||
165 | - const values = data | ||
166 | - .filter(item => item.wdailyfundsforderno !== 'subtotal') // 过滤掉小计行 | ||
167 | - .map(item => Number(item[column.property])); | ||
168 | - if (!values.every(value => isNaN(value))) { | ||
169 | - sums[index] = values.reduce((prev, curr) => { | ||
170 | - const value = Number(curr); | ||
171 | - if (!isNaN(value)) { | ||
172 | - return prev + curr; | ||
173 | - } else { | ||
174 | - return prev; | ||
175 | - } | ||
176 | - }, 0); | ||
177 | - sums[index] = sums[index].toFixed(2); | ||
178 | - } else { | ||
179 | - sums[index] = 'N/A'; | ||
180 | - } | ||
181 | - }); | ||
182 | - // 可直接调接口获取后修改sums。 | ||
183 | - // console.log("合计列",sums); | ||
184 | - return sums; | ||
185 | - }, | ||
186 | - spanMethod({ row, column, rowIndex, columnIndex }) { | ||
187 | - // console.log('row', JSON.parse(JSON.stringify(row))); | ||
188 | - // console.log('column', JSON.parse(JSON.stringify(column))); | ||
189 | - // console.log(rowIndex, columnIndex); | ||
190 | - if (columnIndex === 0) { | ||
191 | - // 第一列合并单元格 | ||
192 | - if (row.wdailyfundsforderno === 'subtotal') { | ||
193 | - // 小计行 | ||
194 | - return { | ||
195 | - rowspan: 1, | ||
196 | - colspan: 3, | ||
197 | - content: '小计' | ||
198 | - }; | ||
199 | - } else if (rowIndex > 0 && row.wdailyfundsforgtype === this.tableData[rowIndex - 1].wdailyfundsforgtype) { | ||
200 | - return { | ||
201 | - rowspan: 0, | ||
202 | - colspan: 0 | ||
203 | - }; | ||
204 | - } else { | ||
205 | - // 计算合并行数 | ||
206 | - let rowspan = 1; | ||
207 | - for (let i = rowIndex + 1; i < this.tableData.length; i++) { | ||
208 | - if (row.wdailyfundsforgtype === this.tableData[i].wdailyfundsforgtype) { | ||
209 | - rowspan++; | ||
210 | - } else { | ||
211 | - break; | ||
212 | - } | ||
213 | - } | ||
214 | - return { | ||
215 | - rowspan, | ||
216 | - colspan: 1, | ||
217 | - content: row.wdailyfundsforgtype | ||
218 | - }; | ||
219 | - } | ||
220 | - } else if (columnIndex === 1 || columnIndex === 2) { | ||
221 | - if (row.wdailyfundsforderno === 'subtotal' && (!row.wdailyfundsfdate || !wdailyfundsforgname)) { | ||
222 | - return { | ||
223 | - rowspan: 0, | ||
224 | - colspan: 0 | ||
225 | - } | ||
226 | - } | 123 | + } else { |
124 | + mList[rowVal] = {num: 1, index: index, newIndex: index + 1} | ||
125 | + v[m + 'SPAN'] = { | ||
126 | + rowspan: 1, | ||
127 | + colspan: 1 | ||
227 | } | 128 | } |
228 | - | ||
229 | - }, | ||
230 | - cellStyleMethod({ row, column, rowIndex, columnIndex }) { | ||
231 | - | ||
232 | - }, | ||
233 | - // 复核 | ||
234 | - handleReview() { | ||
235 | - console.log('一键复核', JSON.parse(JSON.stringify(this.tableData))); | ||
236 | - }, | 129 | + } |
130 | + return v | ||
131 | + }) | ||
132 | + }) | ||
133 | + return data | ||
134 | + }, | ||
135 | + tableRowClassName({row, rowIndex}) { | ||
136 | + if (!row.id && row.fOrgType != '汇总') { | ||
137 | + return 'hj-row'; | ||
138 | + } | ||
139 | + if (!row.id && row.fOrgType == '汇总') { | ||
140 | + return 'hz-row'; | ||
141 | + } | ||
142 | + return ''; | ||
143 | + }, | ||
144 | + // 复核 | ||
145 | + handleReview() { | ||
146 | + this.$confirm('是否确认批量复核?', '提示', { | ||
147 | + confirmButtonText: '确定', | ||
148 | + cancelButtonText: '取消', | ||
149 | + type: 'warning' | ||
150 | + }).then(() => { | ||
151 | + this.loading=true; | ||
152 | + let wDailyFundsList = []; | ||
153 | + this.tableData.forEach(d => { | ||
154 | + if (d.id && d.fInspStatusName && d.fInspStatusName != '待复核') { | ||
155 | + wDailyFundsList.push({ | ||
156 | + id: d.id, | ||
157 | + fDate: d.fDate + " 00:00:00", | ||
158 | + fOrgName: d.fOrgName, | ||
159 | + fOrgId: d.fOrgId, | ||
160 | + fOrgType: d.fOrgType, | ||
161 | + fInspStatusName: d.fInspStatusName, | ||
162 | + fInspNotes: d.fInspNotes | ||
163 | + }) | ||
164 | + } | ||
165 | + }) | ||
166 | + updateInsps({ | ||
167 | + wDailyFundsList: wDailyFundsList | ||
168 | + }).then((res) => { | ||
169 | + if (res.state) { | ||
170 | + this.loading=false; | ||
171 | + this.$message.success(res.message) | ||
172 | + this.$emit("RefreshTable"); | ||
173 | + this.dialogVisible = false; | ||
174 | + } else { | ||
175 | + this.loading=false; | ||
176 | + this.$emit("RefreshTable"); | ||
177 | + this.$message.warning(res.message) | ||
178 | + this.dialogVisible = false; | ||
179 | + } | ||
180 | + }) | ||
181 | + }); | ||
182 | + }, | ||
183 | + //是否可提交 | ||
184 | + isOn() { | ||
185 | + let data = this.tableData.find(d => { | ||
186 | + return d.fInspStatusName == '待复核' | ||
187 | + }) | ||
188 | + return data ? true : false; | ||
189 | + }, | ||
190 | + // 导出 | ||
191 | + onSubmitDc() { | ||
192 | + if (!this.days) { | ||
193 | + this.$message.error('请选择日期!'); | ||
194 | + return false; | ||
195 | + } | ||
196 | + dailyFundsByDateExport(this.days).then(_ref => { | ||
197 | + let {data, headers} = _ref; | ||
198 | + // 附件下载 | ||
199 | + const blob = new Blob([data]); | ||
200 | + // 附件下载 | ||
201 | + const fileName = decodeURIComponent(headers['content-disposition'].split(';')[1].split('filename=')[1]); | ||
202 | + saveAs(blob, fileName); | ||
203 | + }).catch(err => { | ||
204 | + this.$message.error(`模板下载失败:${err}`); | ||
205 | + }); | ||
206 | + }, | ||
207 | + //修改状态 | ||
208 | + onUpdateInspStatusName(status) { | ||
209 | + this.tableData.forEach(d => { | ||
210 | + if (this.updateInspStatusChecked) { | ||
211 | + d.fInspStatusName = status; | ||
212 | + } else { | ||
213 | + d.fInspStatusName = d.fInspStatusName == '待复核' ? status : d.fInspStatusName; | ||
214 | + } | ||
215 | + }) | ||
237 | } | 216 | } |
217 | + } | ||
218 | + | ||
238 | }; | 219 | }; |
239 | </script> | 220 | </script> |
240 | <style lang='scss' scoped> | 221 | <style lang='scss' scoped> |
241 | .container { | 222 | .container { |
242 | - background: #fff; | 223 | + background: #fff; |
243 | } | 224 | } |
244 | 225 | ||
245 | .title { | 226 | .title { |
246 | - font-size: 28px; | ||
247 | - display: flex; | ||
248 | - justify-content: center; | ||
249 | - align-items: center; | ||
250 | -} | 227 | + font-size: 28px; |
228 | + display: flex; | ||
229 | + justify-content: center; | ||
230 | + align-items: center; | ||
251 | 231 | ||
252 | -.el-input { | 232 | + .el-input { |
253 | line-height: 0; | 233 | line-height: 0; |
254 | -} | 234 | + } |
255 | 235 | ||
256 | -::v-deep .el-input__inner { | 236 | + ::v-deep .el-input__inner { |
257 | border: none; | 237 | border: none; |
258 | font-size: 28px; | 238 | font-size: 28px; |
239 | + } | ||
259 | } | 240 | } |
260 | 241 | ||
242 | + | ||
261 | .el-header { | 243 | .el-header { |
262 | - text-align: center; | ||
263 | - line-height: 60px; | 244 | + text-align: center; |
245 | + line-height: 60px; | ||
264 | } | 246 | } |
265 | 247 | ||
266 | .el-footer { | 248 | .el-footer { |
267 | - width: 100%; | 249 | + width: 100%; |
250 | +} | ||
251 | + | ||
252 | +.footerBtn { | ||
253 | + display: flex; | ||
254 | + justify-content: center; | ||
255 | + position: fixed; | ||
256 | + //left: 208px; | ||
257 | + //right: 208px; | ||
258 | + bottom: 10px; | ||
259 | + width: 100%; | ||
260 | + background-color: #f4f4f4; | ||
261 | + left: 0; | ||
262 | + right: 0; | ||
263 | +} | ||
264 | + | ||
265 | + | ||
266 | +::v-deep { | ||
267 | + .el-table .hj-row { | ||
268 | + background-color: #f4f4f4; | ||
269 | + font-weight: bold; | ||
270 | + } | ||
271 | + | ||
272 | + .el-table .hz-row { | ||
273 | + font-weight: bold; | ||
274 | + } | ||
268 | } | 275 | } |
269 | -</style> | ||
270 | \ No newline at end of file | 276 | \ No newline at end of file |
277 | +</style> |