Commit 8068fc13a59d966bd318450ad70ddab4f105891b

Authored by 陈威
1 parent a8776277
Exists in master

每日资金复核

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&lt;WDailyFundsManager, WD @@ -104,60 +175,58 @@ public class WDailyFundsController extends BaseController&lt;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&lt;WDailyFundsManager, WD @@ -181,5 +250,62 @@ public class WDailyFundsController extends BaseController&lt;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&lt;WDailyFunds&gt; { @@ -27,6 +27,6 @@ public interface WDailyFundsDao extends BaseMapper&lt;WDailyFunds&gt; {
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&lt;WDailyFunds&gt; { @@ -38,8 +38,15 @@ public interface WDailyFundsManager extends BaseManager&lt;WDailyFunds&gt; {
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&lt;WDailyFundsDao, WDai @@ -99,6 +99,7 @@ public class WDailyFundsManagerImpl extends BaseManagerImpl&lt;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&lt;WDailyFundsDao, WDai @@ -128,8 +129,13 @@ public class WDailyFundsManagerImpl extends BaseManagerImpl&lt;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&lt;WDailyFundsDao, WDai @@ -140,4 +146,30 @@ public class WDailyFundsManagerImpl extends BaseManagerImpl&lt;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&lt;WDailyFunds&gt; { @@ -26,127 +27,127 @@ public class WDailyFunds extends BaseModel&lt;WDailyFunds&gt; {
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>