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 | 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 | 175 | HashMap map = new HashMap(); |
105 | 176 | map.put("date", date); |
106 | 177 | List<String> gslxList = wCurrentManager.getCurrentOrgTypeList(); |
107 | - | |
108 | - | |
109 | 178 | BigDecimal F_yesterday_account_balance_zs = BigDecimal.ZERO; |
110 | 179 | BigDecimal F_today_account_balance_zs = BigDecimal.ZERO; |
111 | 180 | BigDecimal F_account_balance_difference_zs = BigDecimal.ZERO; |
112 | 181 | BigDecimal F_today_net_cash_flow_zs = BigDecimal.ZERO; |
113 | 182 | BigDecimal F_today_freeze_amount_zs = BigDecimal.ZERO; |
114 | 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 | 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 | 188 | break; |
121 | 189 | } |
190 | + List<Map<String, Object>> listData = convertToMapList(listDataBean); | |
122 | 191 | BigDecimal F_yesterday_account_balance = BigDecimal.ZERO; |
123 | 192 | BigDecimal F_today_account_balance = BigDecimal.ZERO; |
124 | 193 | BigDecimal F_account_balance_difference = BigDecimal.ZERO; |
125 | 194 | BigDecimal F_today_net_cash_flow = BigDecimal.ZERO; |
126 | 195 | BigDecimal F_today_freeze_amount = BigDecimal.ZERO; |
127 | 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 | 213 | listData.add(xjMap); |
145 | 214 | list.addAll(listData); |
146 | 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 | 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 | 230 | list.add(hzMap); |
162 | 231 | map.put("list", list); |
163 | 232 | TemplateExportParams params = new TemplateExportParams("doc/dailyFundsByDateExport.xls"); |
... | ... | @@ -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 | 27 | |
28 | 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 | 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 | 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 | 99 | } |
100 | 100 | } |
101 | 101 | |
102 | + @Transactional | |
102 | 103 | @Override |
103 | 104 | public void updateInsp(WDailyFundsInspDto wDailyFundsInspDto) { |
104 | 105 | List<WDailyFunds> wDailyFunds = wDailyFundsInspDto.getwDailyFundsList(); |
... | ... | @@ -128,8 +129,13 @@ public class WDailyFundsManagerImpl extends BaseManagerImpl<WDailyFundsDao, WDai |
128 | 129 | } |
129 | 130 | |
130 | 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 | 141 | @Override |
... | ... | @@ -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 | 2 | |
3 | 3 | import java.math.BigDecimal; |
4 | 4 | import com.baomidou.mybatisplus.annotation.IdType; |
5 | +import com.fasterxml.jackson.annotation.JsonFormat; | |
5 | 6 | import com.hotent.base.entity.BaseModel; |
6 | 7 | import com.baomidou.mybatisplus.extension.activerecord.Model; |
7 | 8 | import com.baomidou.mybatisplus.annotation.TableId; |
... | ... | @@ -26,127 +27,127 @@ public class WDailyFunds extends BaseModel<WDailyFunds> { |
26 | 27 | @TableId(value = "ID_", type = IdType.ASSIGN_ID) |
27 | 28 | @JsonProperty("id") |
28 | 29 | private String id; |
29 | - | |
30 | + | |
30 | 31 | @ApiModelProperty(value = "外键") |
31 | 32 | @TableField("REF_ID_") |
32 | 33 | @JsonProperty("refId") |
33 | 34 | private String refId; |
34 | - | |
35 | + | |
35 | 36 | @ApiModelProperty(value = "日期") |
36 | 37 | @TableField("F_date") |
37 | 38 | @JsonProperty("fDate") |
38 | 39 | private LocalDateTime fDate; |
39 | - | |
40 | + | |
40 | 41 | @ApiModelProperty(value = "公司") |
41 | 42 | @TableField("F_org_name") |
42 | 43 | @JsonProperty("fOrgName") |
43 | 44 | private String fOrgName; |
44 | - | |
45 | + | |
45 | 46 | @ApiModelProperty(value = "公司id") |
46 | 47 | @TableField("F_org_id") |
47 | 48 | @JsonProperty("fOrgId") |
48 | 49 | private String fOrgId; |
49 | - | |
50 | + | |
50 | 51 | @ApiModelProperty(value = "公司类型") |
51 | 52 | @TableField("F_org_type") |
52 | 53 | @JsonProperty("fOrgType") |
53 | 54 | private String fOrgType; |
54 | - | |
55 | + | |
55 | 56 | @ApiModelProperty(value = "昨日余额") |
56 | 57 | @TableField("F_yesterday_account_balance") |
57 | 58 | @JsonProperty("fYesterdayAccountBalance") |
58 | 59 | private BigDecimal fYesterdayAccountBalance; |
59 | - | |
60 | + | |
60 | 61 | @ApiModelProperty(value = "今日余额") |
61 | 62 | @TableField("F_today_account_balance") |
62 | 63 | @JsonProperty("fTodayAccountBalance") |
63 | 64 | private BigDecimal fTodayAccountBalance; |
64 | - | |
65 | + | |
65 | 66 | @ApiModelProperty(value = "余额差额") |
66 | 67 | @TableField("F_account_balance_difference") |
67 | 68 | @JsonProperty("fAccountBalanceDifference") |
68 | 69 | private BigDecimal fAccountBalanceDifference; |
69 | - | |
70 | + | |
70 | 71 | @ApiModelProperty(value = "今日净现金流") |
71 | 72 | @TableField("F_today_net_cash_flow") |
72 | 73 | @JsonProperty("fTodayNetCashFlow") |
73 | 74 | private BigDecimal fTodayNetCashFlow; |
74 | - | |
75 | + | |
75 | 76 | @ApiModelProperty(value = "今日被冻结金额") |
76 | 77 | @TableField("F_today_freeze_amount") |
77 | 78 | @JsonProperty("fTodayFreezeAmount") |
78 | 79 | private BigDecimal fTodayFreezeAmount; |
79 | - | |
80 | + | |
80 | 81 | @ApiModelProperty(value = "今日冻结上限") |
81 | 82 | @TableField("F_today_freezing") |
82 | 83 | @JsonProperty("fTodayFreezing") |
83 | 84 | private BigDecimal fTodayFreezing; |
84 | - | |
85 | + | |
85 | 86 | @ApiModelProperty(value = "复核状态") |
86 | 87 | @TableField("F_insp_status_name") |
87 | 88 | @JsonProperty("fInspStatusName") |
88 | 89 | private String fInspStatusName; |
89 | - | |
90 | + | |
90 | 91 | @ApiModelProperty(value = "复核时间") |
91 | 92 | @TableField("F_insp_time") |
92 | 93 | @JsonProperty("fInspTime") |
93 | 94 | private LocalDateTime fInspTime; |
94 | - | |
95 | + | |
95 | 96 | @ApiModelProperty(value = "复核备注") |
96 | 97 | @TableField("F_insp_notes") |
97 | 98 | @JsonProperty("fInspNotes") |
98 | 99 | private String fInspNotes; |
99 | - | |
100 | + | |
100 | 101 | @ApiModelProperty(value = "复核人") |
101 | 102 | @TableField("F_insp_by") |
102 | 103 | @JsonProperty("fInspBy") |
103 | 104 | private String fInspBy; |
104 | - | |
105 | + | |
105 | 106 | @ApiModelProperty(value = "复核人id") |
106 | 107 | @TableField("F_insp_id") |
107 | 108 | @JsonProperty("fInspId") |
108 | 109 | private String fInspId; |
109 | - | |
110 | + | |
110 | 111 | @ApiModelProperty(value = "创建人") |
111 | 112 | @TableField("F_create_by") |
112 | 113 | @JsonProperty("fCreateBy") |
113 | 114 | private String fCreateBy; |
114 | - | |
115 | + | |
115 | 116 | @ApiModelProperty(value = "创建人id") |
116 | 117 | @TableField("F_create_id") |
117 | 118 | @JsonProperty("fCreateId") |
118 | 119 | private String fCreateId; |
119 | - | |
120 | + | |
120 | 121 | @ApiModelProperty(value = "创建时间") |
121 | 122 | @TableField("F_create_time") |
122 | 123 | @JsonProperty("fCreateTime") |
123 | 124 | private LocalDateTime fCreateTime; |
124 | - | |
125 | + | |
125 | 126 | @ApiModelProperty(value = "修改人") |
126 | 127 | @TableField("F_update_by") |
127 | 128 | @JsonProperty("fUpdateBy") |
128 | 129 | private String fUpdateBy; |
129 | - | |
130 | + | |
130 | 131 | @ApiModelProperty(value = "修改人id") |
131 | 132 | @TableField("F_update_id") |
132 | 133 | @JsonProperty("fUpdateId") |
133 | 134 | private String fUpdateId; |
134 | - | |
135 | + | |
135 | 136 | @ApiModelProperty(value = "修改时间") |
136 | 137 | @TableField("F_update_time") |
137 | 138 | @JsonProperty("fUpdateTime") |
138 | 139 | private LocalDateTime fUpdateTime; |
139 | - | |
140 | + | |
140 | 141 | @ApiModelProperty(value = "表单数据版本") |
141 | 142 | @TableField("F_form_data_rev_") |
142 | 143 | @JsonProperty("fFormDataRev") |
143 | 144 | private Long fFormDataRev; |
144 | - | |
145 | + | |
145 | 146 | @ApiModelProperty(value = "排序") |
146 | 147 | @TableField("F_order_no") |
147 | 148 | @JsonProperty("fOrderNo") |
148 | 149 | private BigDecimal fOrderNo; |
149 | - | |
150 | + | |
150 | 151 | |
151 | 152 | public String getId() { |
152 | 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 | 103 | </if> |
104 | 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 | 111 | </mapper> | ... | ... |
frontend/front/src/api/service/dailyFunds.js
... | ... | @@ -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 | 28 | export function dailyFundsByDateExport(date) { |
13 | 29 | return request({ |
14 | 30 | url: `${context.portal}/wDailyFunds/v1/dailyFundsByDateExport?date=${date}`, | ... | ... |
frontend/front/src/views/pages/reviewOfFinancialDailyReport/index.vue
1 | 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 | 69 | </template> |
62 | - | |
63 | 70 | <script> |
71 | +import {dailyFundsByDateExport, getInspList, updateInsps} from "@/api/service/dailyFunds"; | |
72 | +import TemplateForm from "@/components/dataTemplate/TemplateForm.vue"; | |
73 | + | |
64 | 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 | 220 | </script> |
240 | 221 | <style lang='scss' scoped> |
241 | 222 | .container { |
242 | - background: #fff; | |
223 | + background: #fff; | |
243 | 224 | } |
244 | 225 | |
245 | 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 | 233 | line-height: 0; |
254 | -} | |
234 | + } | |
255 | 235 | |
256 | -::v-deep .el-input__inner { | |
236 | + ::v-deep .el-input__inner { | |
257 | 237 | border: none; |
258 | 238 | font-size: 28px; |
239 | + } | |
259 | 240 | } |
260 | 241 | |
242 | + | |
261 | 243 | .el-header { |
262 | - text-align: center; | |
263 | - line-height: 60px; | |
244 | + text-align: center; | |
245 | + line-height: 60px; | |
264 | 246 | } |
265 | 247 | |
266 | 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 | 276 | \ No newline at end of file |
277 | +</style> | ... | ... |