From 0bf1c5465f1f3198c53ad02f3209148afabb2038 Mon Sep 17 00:00:00 2001 From: kimi42345 <kimi42345@outlook.com> Date: 星期二, 17 三月 2020 11:24:45 +0800 Subject: [PATCH] Merge branch 'master' of http://highdatas.com:9000/r/~kimi/srs_spring --- src/main/java/com/highdatas/srs/web/SchemeController.java | 130 +++++++++++++++++++++++++++++++++--------- 1 files changed, 101 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/highdatas/srs/web/SchemeController.java b/src/main/java/com/highdatas/srs/web/SchemeController.java index bdb329f..405a2fe 100644 --- a/src/main/java/com/highdatas/srs/web/SchemeController.java +++ b/src/main/java/com/highdatas/srs/web/SchemeController.java @@ -24,6 +24,9 @@ import javax.servlet.http.HttpServletRequest; import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -154,7 +157,7 @@ } @RequestMapping(value = "/getSchemeInfo/{id}", method = RequestMethod.GET) - public Result getSchemeInfo(@PathVariable String id) throws UnsupportedEncodingException { + public Result getSchemeInfo(@PathVariable String id) throws UnsupportedEncodingException, ParseException { Scheme scheme = schemeService.selectById(id); List<SchemeDetail> schemeDetailList = iSchemeDetailService.selectList(new EntityWrapper<SchemeDetail>().eq("parent_id", id)); HashMap<String, SysUser> userSet = new HashMap<>(); @@ -176,37 +179,114 @@ Calendar start = Calendar.getInstance(); start.setTime(startTime); - List<String> time = new ArrayList<>(); - List<Integer> totalList = new ArrayList<>(); - List<Integer> todoList = new ArrayList<>(); - SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd"); - int preTotal = 0; - int preTodo = 0; + JSONObject result = new JSONObject(); + JSONObject option = new JSONObject(); + // 璇︽儏 + JSONArray array = new JSONArray(); + long totalCnt = 0; + long usedCnt = 0; + HashMap<String, Double> detailDayBudgetMap = new HashMap<>(); + for (SchemeDetail detail : schemeDetailList) { + Boolean finish = detail.getFinish(); + int dayDiffer = DbUtils.getDayDiffer(detail.getStartTime(), detail.getEndTime()); + BigDecimal budget = detail.getBudget(); + totalCnt += budget.doubleValue(); + BigDecimal oneDayBudget = budget.divide(new BigDecimal(dayDiffer).abs(), 2, BigDecimal.ROUND_HALF_UP); + detailDayBudgetMap.put(detail.getId(), oneDayBudget.doubleValue()); + int days = 0; + if (finish) { + days = DbUtils.getDayDiffer(detail.getStartTime(), detail.getFinishTime()); + } else if (!detail.getEdit()){ + days = DbUtils.getDayDiffer(detail.getStartTime(), new Date()); + } + double used = 0.0; + if (days > 0) { + used = oneDayBudget.multiply(new BigDecimal(days)).doubleValue(); + usedCnt += used; + } + + JSONObject o = (JSONObject) JSON.toJSON(detail); + SchemeDetailType type = detail.getType(); + o.fluentPut("name", type.covert()); + o.fluentPut("usedCnt", used); + o.fluentPut("totalCnt", budget.doubleValue()); + + array.add(o); + } + result.fluentPut("scheme", array); + result.fluentPut("totalCnt", totalCnt); + result.fluentPut("usedCnt", usedCnt); + + List<String> time = new ArrayList<>(); + List<Double> totalList = new ArrayList<>(); + List<Double> todoList = new ArrayList<>(); + SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd"); + Double preTotal = 0.0; + Double preTodo = 0.0; + DecimalFormat df =new java.text.DecimalFormat("#.00"); while (startTime.before(endTime)) { startTime = start.getTime(); time.add(dateFormat.format(startTime)); EntityWrapper<SchemeDetail> schemeDetailEntityWrapper = new EntityWrapper<>(); schemeDetailEntityWrapper.le("start_time", startTime); + schemeDetailEntityWrapper.eq("parent_id", scheme.getId()); schemeDetailEntityWrapper.gt("end_time", startTime); schemeDetailEntityWrapper.eq("edit", false); - int cnt = iSchemeDetailService.selectCount(schemeDetailEntityWrapper); - int totalCnt = preTotal + cnt; - totalList.add(totalCnt); - preTotal = totalCnt; - schemeDetailEntityWrapper.eq("finish", false); - int todo = iSchemeDetailService.selectCount(schemeDetailEntityWrapper); - int todoCnt = totalCnt - (preTodo + todo); - todoList.add(todoCnt); - preTodo = todoCnt; + List<SchemeDetail> schemeDetailList1 = iSchemeDetailService.selectList(schemeDetailEntityWrapper); + double onedayBudget = 0; + for (SchemeDetail detail : schemeDetailList1) { + String id1 = detail.getId(); + Double oneBudget = detailDayBudgetMap.get(id1); + onedayBudget +=oneBudget; + } + + Double expantCnt = totalCnt - (preTotal + onedayBudget); + expantCnt = new BigDecimal(expantCnt).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + + totalList.add(expantCnt > 0 ? expantCnt : 0); + preTotal = preTotal + onedayBudget; + + int dayDiffer = DbUtils.getDayDiffer(startTime, new Date()); + if (dayDiffer >= 0) { + EntityWrapper<SchemeDetail> entityWrapper1 = new EntityWrapper<>(); + entityWrapper1.le("start_time", startTime); + entityWrapper1.gt("finish_time",startTime); + entityWrapper1.eq("parent_id", scheme.getId()); + entityWrapper1.eq("edit", false); + List<SchemeDetail> schemeDetailList3 = iSchemeDetailService.selectList(entityWrapper1); + + double todo = 0.0; + for (SchemeDetail detail : schemeDetailList3) { + String id1 = detail.getId(); + Double oneBudget = detailDayBudgetMap.get(id1); + todo +=oneBudget; + } + EntityWrapper<SchemeDetail> entityWrapper = new EntityWrapper<>(); + entityWrapper.le("start_time", startTime); + entityWrapper.eq("finish", false); + entityWrapper.isNull("finish_time"); + entityWrapper.eq("parent_id", scheme.getId()); + entityWrapper.eq("edit", false); + List<SchemeDetail> schemeDetailList2 = iSchemeDetailService.selectList(entityWrapper); + + for (SchemeDetail detail : schemeDetailList2) { + String id1 = detail.getId(); + Double oneBudget = detailDayBudgetMap.get(id1); + todo +=oneBudget; + } + double todoCnt = totalCnt - (preTodo + todo); + todoCnt = new BigDecimal(todoCnt).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + + todoList.add(todoCnt); + preTodo = preTodo + todo; + } + start.add(Calendar.DAY_OF_YEAR, 1); } - Collections.reverse(totalList); - Collections.reverse(todoList); - JSONObject result = new JSONObject(); - JSONObject option = new JSONObject(); + option.fluentPut("xAxis", time); option.fluentPut("yAxis1", todoList); option.fluentPut("yAxis2", totalList); @@ -218,15 +298,7 @@ // 浜哄憳 result.fluentPut("users", userSet.values()); - // 璇︽儏 - JSONArray array = new JSONArray(); - for (SchemeDetail detail : schemeDetailList) { - JSONObject o = (JSONObject) JSON.toJSON(detail); - SchemeDetailType type = detail.getType(); - o.fluentPut("name", type.covert()); - array.add(o); - } - result.fluentPut("scheme", array); + //鐩綍 result.fluentPut("paths",childrenFiles ); return Result.success(result); -- Gitblit v1.8.0