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