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/task/DelayTimeTask.java | 38 ++++++ .gitignore | 63 +++++----- src/main/java/com/highdatas/srs/util/DbUtils.java | 24 ++++ src/main/java/com/highdatas/srs/web/FileController.java | 12 + src/main/java/com/highdatas/srs/entity/SchemeDetail.java | 11 + src/main/java/com/highdatas/srs/entity/Topic.java | 10 + src/main/java/com/highdatas/srs/util/FileUtils.java | 5 src/main/java/com/highdatas/srs/web/SchemeDetailController.java | 10 + src/main/java/com/highdatas/srs/web/SchemeController.java | 130 ++++++++++++++++---- src/main/java/com/highdatas/srs/web/TopicController.java | 40 +++++- 10 files changed, 272 insertions(+), 71 deletions(-) diff --git a/.gitignore b/.gitignore index a2a3040..b61d49f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,31 +1,32 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ +srs.zip diff --git a/src/main/java/com/highdatas/srs/entity/SchemeDetail.java b/src/main/java/com/highdatas/srs/entity/SchemeDetail.java index 95f104c..91545d1 100644 --- a/src/main/java/com/highdatas/srs/entity/SchemeDetail.java +++ b/src/main/java/com/highdatas/srs/entity/SchemeDetail.java @@ -64,6 +64,17 @@ @TableField("update_time") private Date updateTime; + @TableField("finish_time") + private Date finishTime; + + public Date getFinishTime() { + return finishTime; + } + + public SchemeDetail setFinishTime(Date finishTime) { + this.finishTime = finishTime; + return this; + } public Boolean getEdit() { return edit; diff --git a/src/main/java/com/highdatas/srs/entity/Topic.java b/src/main/java/com/highdatas/srs/entity/Topic.java index f25aed9..10d1773 100644 --- a/src/main/java/com/highdatas/srs/entity/Topic.java +++ b/src/main/java/com/highdatas/srs/entity/Topic.java @@ -33,6 +33,7 @@ private String linkId; private String attachment; + private Boolean examine; @TableField("create_time") private Date createTime; @@ -55,6 +56,15 @@ return this; } + public Boolean getExamine() { + return examine; + } + + public Topic setExamine(Boolean examine) { + this.examine = examine; + return this; + } + public String getTitle() { return title; } diff --git a/src/main/java/com/highdatas/srs/task/DelayTimeTask.java b/src/main/java/com/highdatas/srs/task/DelayTimeTask.java index 61b3623..9872473 100644 --- a/src/main/java/com/highdatas/srs/task/DelayTimeTask.java +++ b/src/main/java/com/highdatas/srs/task/DelayTimeTask.java @@ -1,11 +1,45 @@ package com.highdatas.srs.task; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.highdatas.srs.entity.Scheme; +import com.highdatas.srs.entity.SchemeDetail; +import com.highdatas.srs.service.ISchemeDetailService; +import com.highdatas.srs.service.ISchemeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; + +import java.util.Date; +import java.util.HashSet; +import java.util.List; + /** * @author kimi * @description * @date 2020-02-12 10:40 */ - +@EnableScheduling public class DelayTimeTask { -} + @Autowired + ISchemeService schemeService; + @Autowired + ISchemeDetailService schemeDetailService; + + @Scheduled(cron = "0 0 0 1/1 * ?") + private void delayTask(){ + Date date = new Date(); + List<SchemeDetail> schemeDetailList = schemeDetailService.selectList(new EntityWrapper<SchemeDetail>().lt("end_time", date).eq("edit", false)); + HashSet<String> parentIdSet = new HashSet<>(); + for (SchemeDetail detail : schemeDetailList) { + parentIdSet.add(detail.getParentId()); + detail.setDelay(true); + detail.updateById(); + } + //椤圭洰涓煇涓妭鐐瑰彂鐢熷欢鏈熷垯椤圭洰寤舵湡 鍚庢湡鏍规嵁涓氬姟淇敼 + List<Scheme> schemes = schemeService.selectBatchIds(parentIdSet); + for (Scheme scheme : schemes) { + scheme.setStatus("delay").updateById(); + } + } + } diff --git a/src/main/java/com/highdatas/srs/util/DbUtils.java b/src/main/java/com/highdatas/srs/util/DbUtils.java index bab7ecd..bd4b04e 100644 --- a/src/main/java/com/highdatas/srs/util/DbUtils.java +++ b/src/main/java/com/highdatas/srs/util/DbUtils.java @@ -11,8 +11,10 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.Date; import java.util.Random; import java.util.UUID; @@ -182,6 +184,28 @@ return sbf.toString(); } + public static int getDayDiffer(Date startDate, Date endDate) throws ParseException { + //鍒ゆ柇鏄惁璺ㄥ勾 + SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy"); + String startYear = yearFormat.format(startDate); + String endYear = yearFormat.format(endDate); + if (startYear.equals(endYear)) { + /* 浣跨敤Calendar璺ㄥ勾鐨勬儏鍐典細鍑虹幇闂 */ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(startDate); + int startDay = calendar.get(Calendar.DAY_OF_YEAR); + calendar.setTime(endDate); + int endDay = calendar.get(Calendar.DAY_OF_YEAR); + return endDay - startDay; + } else { + /* 璺ㄥ勾涓嶄細鍑虹幇闂锛岄渶瑕佹敞鎰忎笉婊�24灏忔椂鎯呭喌锛�2016-03-18 11:59:59 鍜� 2016-03-19 00:00:01鐨勮瘽宸�间负 0锛� */ + // 鍙牸寮忓寲鏃ユ湡锛屾秷闄や笉婊�24灏忔椂褰卞搷 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + long startDateTime = dateFormat.parse(dateFormat.format(startDate)).getTime(); + long endDateTime = dateFormat.parse(dateFormat.format(endDate)).getTime(); + return (int) ((endDateTime - startDateTime) / (1000 * 3600 * 24)); + } + } public static String convert_before(long time) { if (time < 0) return String.valueOf(time); diff --git a/src/main/java/com/highdatas/srs/util/FileUtils.java b/src/main/java/com/highdatas/srs/util/FileUtils.java index cfe5ec0..b77c348 100644 --- a/src/main/java/com/highdatas/srs/util/FileUtils.java +++ b/src/main/java/com/highdatas/srs/util/FileUtils.java @@ -20,6 +20,11 @@ File parentFile = rootFile.getParentFile(); File[] files = rootFile.listFiles(); ArrayList<JSONObject> fileArray = new ArrayList<>(); + if (files == null) { + + return fileArray; + } + for (File one : files) { JSONObject object = new JSONObject(); if (one.isDirectory()) { diff --git a/src/main/java/com/highdatas/srs/web/FileController.java b/src/main/java/com/highdatas/srs/web/FileController.java index 8b51497..72f86f1 100644 --- a/src/main/java/com/highdatas/srs/web/FileController.java +++ b/src/main/java/com/highdatas/srs/web/FileController.java @@ -13,6 +13,7 @@ import com.highdatas.srs.util.DbUtils; import com.highdatas.srs.util.FileUtils; import lombok.extern.java.Log; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; @@ -299,11 +300,16 @@ @RequestMapping("topicUpload") @ResponseBody public Result topicUpload(@RequestParam("file") MultipartFile file, HttpServletRequest request){ + String id = request.getParameter("id"); String title = request.getParameter("title"); String desp = request.getParameter("desp"); String userId = request.getParameter("userId"); - - Topic topic = new Topic().setId(DbUtils.getUUID()).setTitle(title).setDesp(desp).setUserId(userId).setCreateTime(new Date()); + Topic topic; + if (StringUtils.isEmpty(id)) { + topic = new Topic().setId(DbUtils.getUUID()).setTitle(title).setDesp(desp).setUserId(userId).setCreateTime(new Date()); + } else { + topic = topicService.selectById(id).setTitle(title).setDesp(desp); + } String fileName = file.getOriginalFilename(); int size = (int) file.getSize(); @@ -319,7 +325,7 @@ dest.createNewFile(); file.transferTo(dest); //淇濆瓨鏂囦欢 topic.setAttachment(path); - topic.insert(); + topic.insertOrUpdate(); return Result.success(CodeMsg.SUCCESS); } catch (IllegalStateException e) { // TODO Auto-generated catch block 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); diff --git a/src/main/java/com/highdatas/srs/web/SchemeDetailController.java b/src/main/java/com/highdatas/srs/web/SchemeDetailController.java index ee7df9a..9e5ca44 100644 --- a/src/main/java/com/highdatas/srs/web/SchemeDetailController.java +++ b/src/main/java/com/highdatas/srs/web/SchemeDetailController.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; import com.highdatas.srs.entity.*; import com.highdatas.srs.pojo.CodeMsg; import com.highdatas.srs.pojo.Result; @@ -97,8 +98,16 @@ String desp = request.getParameter("desp"); SchemeDetail schemeDetail = schemeDetailService.selectById(id); schemeDetail.setFinish(true); + schemeDetail.setFinishTime(new Date()); new ProjectDeal().setId(DbUtils.getUUID()).setDesp(desp).setSchemeDetailId(id).setCreateTime(new Date()).insert(); schemeDetail.updateById(); + Wrapper<SchemeDetail> eq = new EntityWrapper<SchemeDetail>().eq("parent_id", schemeDetail.getParentId()).eq("finish", false); + int i = schemeDetailService.selectCount(eq); + if (i == 0) { + Scheme scheme = schemeService.selectById(schemeDetail.getParentId()); + scheme.setStatus("finish"); + scheme.updateById(); + } return Result.success(schemeDetail); } @RequestMapping(value = "/get/{id}", method = RequestMethod.GET) @@ -188,6 +197,7 @@ pre = schemeDetailService.selectOne(schemeDetailEntityWrapper); if (pre == null) { detail.setId(DbUtils.getUUID()); + detail.setCreateTime(new Date()); detail.insert(); continue; } diff --git a/src/main/java/com/highdatas/srs/web/TopicController.java b/src/main/java/com/highdatas/srs/web/TopicController.java index 49cdb0d..bd1f0b6 100644 --- a/src/main/java/com/highdatas/srs/web/TopicController.java +++ b/src/main/java/com/highdatas/srs/web/TopicController.java @@ -73,22 +73,50 @@ return Result.success(object); } + + @RequestMapping(value = "/exam/{id}", method = RequestMethod.GET) + public Result exam(@PathVariable String id) { + Topic topic = topicService.selectById(id); + topic.setExamine(true); + + boolean insert = topic.updateById(); + + if (insert) { + return Result.success(null); + } else { + return Result.error(CodeMsg.INSERT_ERROR); + } + + } + @RequestMapping(value = "/add", method = RequestMethod.GET) public Result add(HttpServletRequest request) { + String id = request.getParameter("id"); String title = request.getParameter("title"); String userId = request.getParameter("userId"); if(StringUtils.isEmpty(title)) { return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); } String desp = request.getParameter("desp"); - Topic topic = new Topic().setUserId(userId).setTitle(title).setDesp(desp).setCreateTime(new Date()); - topic.setId(DbUtils.getUUID()); - boolean insert = topic.insert(); - if (insert) { - return Result.success(null); + if (StringUtils.isEmpty(id)) { + Topic topic = new Topic().setUserId(userId).setTitle(title).setDesp(desp).setCreateTime(new Date()); + topic.setId(DbUtils.getUUID()); + boolean insert = topic.insert(); + if (insert) { + return Result.success(null); + } else { + return Result.error(CodeMsg.INSERT_ERROR); + } } else { - return Result.error(CodeMsg.INSERT_ERROR); + Topic topic = topicService.selectById(id); + boolean b = topic.setDesp(desp).setTitle(title).updateById(); + if (b) { + return Result.success(null); + } else { + return Result.error(CodeMsg.INSERT_ERROR); + } } + } } -- Gitblit v1.8.0