-2
kimi
2020-03-17 8f4e6484f0b27f471e81c3667142cb1324f4be4e
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.*;
@@ -153,7 +156,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<>();
@@ -175,37 +178,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);
@@ -217,15 +297,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);