From 75c32d6d697a550400d0b4eec95b8570d83b726f Mon Sep 17 00:00:00 2001
From: kimi <kimi42345@gmail.com>
Date: 星期五, 27 十一月 2020 19:20:32 +0800
Subject: [PATCH] 提交

---
 src/main/java/com/highdatas/srs/web/SchemeController.java |  441 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 413 insertions(+), 28 deletions(-)

diff --git a/src/main/java/com/highdatas/srs/web/SchemeController.java b/src/main/java/com/highdatas/srs/web/SchemeController.java
index 0de5da8..00e1a35 100644
--- a/src/main/java/com/highdatas/srs/web/SchemeController.java
+++ b/src/main/java/com/highdatas/srs/web/SchemeController.java
@@ -11,10 +11,7 @@
 import com.highdatas.srs.entity.*;
 import com.highdatas.srs.pojo.CodeMsg;
 import com.highdatas.srs.pojo.Result;
-import com.highdatas.srs.service.IProjectDealService;
-import com.highdatas.srs.service.ISchemeDetailService;
-import com.highdatas.srs.service.ISchemeService;
-import com.highdatas.srs.service.ISysUserService;
+import com.highdatas.srs.service.*;
 import com.highdatas.srs.util.DbUtils;
 import com.highdatas.srs.util.FileUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -26,9 +23,11 @@
 import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
+import java.text.MessageFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.function.IntFunction;
 
 /**
  * <p>
@@ -49,9 +48,310 @@
     ISchemeDetailService iSchemeDetailService;
     @Autowired
     IProjectDealService projectDealService;
-
+    @Autowired
+    ISysRoleMappingService roleMappingService;
+    @Autowired
+    ISysRoleService roleService;
+    @Autowired
+    ISchemeDetailParttimeService detailParttimeService;
+    @Autowired
+    ISysTargetService targetService;
     @Value("${base.file.path}")
     String basePath;
+
+    @RequestMapping(value = "/achieve", method = RequestMethod.GET)
+    public Result getAcheve(@RequestParam String type,  HttpServletRequest request) throws ParseException {
+        EntityWrapper<Scheme> schemeEntityWrapper = new EntityWrapper<>();
+        //缂栬緫  鍙栨秷 涓嶈鍏�
+        schemeEntityWrapper.notIn("status", "edit");
+        List<Scheme> schemes = schemeService.selectList(schemeEntityWrapper);
+
+        List<SchemeDetail> detailList = new ArrayList<>();
+        for (Scheme scheme : schemes) {
+            String id = scheme.getId();
+            EntityWrapper<SchemeDetail> schemeDetailEntityWrapper = new EntityWrapper<>();
+            schemeDetailEntityWrapper.eq("parent_id", id);
+            List<SchemeDetail> schemeDetails = iSchemeDetailService.selectList(schemeDetailEntityWrapper);
+            detailList.addAll(schemeDetails);
+        }
+
+        if (type.equalsIgnoreCase("total")) {
+                Result result = getTotalOptions(detailList);
+        }else if (type.equalsIgnoreCase("per")) {
+                Result result = getPerOptions(detailList);
+        }else if (type.equalsIgnoreCase("after")) {
+                Result result = getAfterOptions(detailList);
+        }else if(type.equalsIgnoreCase("month")) {
+                Result result = getMonthOptions(detailList);
+        }else if(type.equalsIgnoreCase("team")) {
+                Result result = getTeamOptions(detailList);
+        }else if(type.equalsIgnoreCase("member")) {
+                Result result = getTeamOptions(detailList);
+        }
+        return  Result.success(null);
+    }
+
+    private Result getTeamOptions(List<SchemeDetail> detailList) {
+        return  null;
+    }
+
+    private Result getMonthOptions(List<SchemeDetail> detailList) throws ParseException {
+        Date now = new Date();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(now);
+        JSONObject resultData = new JSONObject();
+        List<String> months = new ArrayList<>();
+        List<String> types = new ArrayList<>();
+        types.add("鎸囨爣");
+        types.add("瀹屾垚");
+        types.add("杈炬垚鐜�");
+        List<JSONObject> datas = new ArrayList<>();
+        JSONObject targetDataObject = new JSONObject();
+        targetDataObject.put("name", "鎸囨爣");
+        targetDataObject.put("type", "bar");
+        datas.add(targetDataObject);
+        JSONObject amountDataObject = new JSONObject();
+        amountDataObject.put("name", "瀹屾垚");
+        amountDataObject.put("type", "bar");
+        datas.add(amountDataObject);
+        JSONObject achieveDataObject = new JSONObject();
+        achieveDataObject.put("name", "杈炬垚鐜�");
+        achieveDataObject.put("type", "line");
+        datas.add(achieveDataObject);
+
+        List<JSONObject> entityset = new ArrayList<>();
+
+        JSONObject targetEntityObject = new JSONObject();
+        targetEntityObject.put("type", "鎸囨爣");
+        entityset.add(targetEntityObject);
+        JSONObject amountEntityObject = new JSONObject();
+        amountEntityObject.put("type", "瀹屾垚");
+        entityset.add(amountEntityObject);
+        JSONObject achieveEntityObject = new JSONObject();
+        achieveEntityObject.put("type", "杈炬垚鐜�");
+        entityset.add(achieveEntityObject);
+
+        for (int i = 0; i < 12; i++) {
+
+            calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),1,0,0,0);
+            Date yearStart = calendar.getTime();
+            calendar.add(Calendar.MONTH, 1);
+            calendar.add(Calendar.DAY_OF_MONTH, -1);
+            Date yearEnd = calendar.getTime();
+            int year = calendar.get(Calendar.YEAR);
+            int month = calendar.get(Calendar.MONTH) + 1;
+            String oneMonth = MessageFormat.format("{0}{1}", year, month);
+
+            BigDecimal totalBudget = BigDecimal.ZERO;
+
+            for (SchemeDetail schemeDetail : detailList) {
+                BigDecimal rangeBudget = getRangeBudget(schemeDetail, yearStart, yearEnd);
+                totalBudget = totalBudget.add(rangeBudget);
+            }
+            //2 target
+
+            EntityWrapper<SysTarget> sysTargetEntityWrapper = new EntityWrapper<>();
+            sysTargetEntityWrapper.eq("amt_type", "pro")
+                    .eq("year", year);
+            List<SysTarget> sysTargets = targetService.selectList(sysTargetEntityWrapper);
+            BigDecimal totalTarget = BigDecimal.ZERO;
+
+            for (SysTarget sysTarget : sysTargets) {
+                BigDecimal one = sysTarget.getTarget();
+                totalTarget = totalTarget.add(one);
+            }
+            BigDecimal achieve;
+            if(totalTarget.compareTo(BigDecimal.ZERO) == 0) {
+                achieve = BigDecimal.ZERO;
+            }else {
+                achieve = totalBudget.multiply(BigDecimal.valueOf(100)).divide(totalTarget, 1, BigDecimal.ROUND_HALF_UP);
+            }
+            ArrayList<BigDecimal> targetData = (ArrayList<BigDecimal>) targetDataObject.get("data");
+            if (targetData == null) {
+                targetData = new ArrayList<BigDecimal>();
+            }
+            targetData.add(i, totalTarget);
+
+            ArrayList<BigDecimal> amountData = (ArrayList<BigDecimal>) amountDataObject.get("data");
+            if (amountData == null) {
+                amountData = new ArrayList<BigDecimal>();
+            }
+            amountData.add(i, totalBudget);
+
+            ArrayList<BigDecimal> achieveData = (ArrayList<BigDecimal>) achieveDataObject.get("data");
+            if (achieveData == null) {
+                achieveData = new ArrayList<BigDecimal>();
+            }
+            achieveData.add(i, achieve);
+
+            targetEntityObject.put(oneMonth, totalTarget);
+            amountEntityObject.put(oneMonth, totalBudget);
+            achieveEntityObject.put(oneMonth, achieve);
+
+            months.add(oneMonth);
+            calendar.add(Calendar.MONTH , -1);
+        }
+        resultData.put("months",months);
+        resultData.put("types",types);
+        resultData.put("datas",datas);
+        resultData.put("entityset",entityset);
+
+        return Result.success(resultData);
+    }
+
+    private Result getAfterOptions(List<SchemeDetail> detailList) throws ParseException {
+        //0
+        Date now = new Date();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(now);
+        calendar.set(calendar.get(Calendar.YEAR),5,1,0,0,0);
+        Date yearStart = calendar.getTime();
+        calendar.add(Calendar.MONTH, 7);
+        calendar.add(Calendar.DAY_OF_MONTH, -1);
+
+        Date yearEnd = calendar.getTime();
+
+        //1 amount
+        BigDecimal totalBudget = BigDecimal.ZERO;
+        for (SchemeDetail schemeDetail : detailList) {
+            BigDecimal rangeBudget = getRangeBudget(schemeDetail, yearStart, yearEnd);
+            totalBudget = totalBudget.add(rangeBudget);
+        }
+        //2 target
+        int year = calendar.get(Calendar.YEAR);
+        EntityWrapper<SysTarget> sysTargetEntityWrapper = new EntityWrapper<>();
+        sysTargetEntityWrapper.eq("amt_type", "pro")
+                .eq("year", year).eq("tgt_type","per");
+        List<SysTarget> sysTargets = targetService.selectList(sysTargetEntityWrapper);
+        BigDecimal totalTarget = BigDecimal.ZERO;
+
+        for (SysTarget sysTarget : sysTargets) {
+            BigDecimal one = sysTarget.getTarget();
+            totalTarget = totalTarget.add(one);
+        }
+        if(totalTarget.compareTo(BigDecimal.ZERO) == 0) {
+            return Result.success(0);
+        }else {
+            BigDecimal achieve = totalBudget.multiply(BigDecimal.valueOf(100)).divide(totalTarget, 1, BigDecimal.ROUND_HALF_UP);
+            return Result.success(achieve);
+        }
+    }
+
+    private Result getPerOptions(List<SchemeDetail> detailList) throws ParseException {
+        //0
+        Date now = new Date();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(now);
+        calendar.set(calendar.get(Calendar.YEAR),0,1,0,0,0);
+        Date yearStart = calendar.getTime();
+        calendar.add(Calendar.MONTH, 7);
+        calendar.add(Calendar.DAY_OF_MONTH, -1);
+
+        Date yearEnd = calendar.getTime();
+
+        //1 amount
+        BigDecimal totalBudget = BigDecimal.ZERO;
+        for (SchemeDetail schemeDetail : detailList) {
+            BigDecimal rangeBudget = getRangeBudget(schemeDetail, yearStart, yearEnd);
+            totalBudget = totalBudget.add(rangeBudget);
+        }
+        //2 target
+        int year = calendar.get(Calendar.YEAR);
+        EntityWrapper<SysTarget> sysTargetEntityWrapper = new EntityWrapper<>();
+        sysTargetEntityWrapper.eq("amt_type", "pro")
+                .eq("year", year).eq("tgt_type","per");
+        List<SysTarget> sysTargets = targetService.selectList(sysTargetEntityWrapper);
+        BigDecimal totalTarget = BigDecimal.ZERO;
+
+        for (SysTarget sysTarget : sysTargets) {
+            BigDecimal one = sysTarget.getTarget();
+            totalTarget = totalTarget.add(one);
+        }
+        if(totalTarget.compareTo(BigDecimal.ZERO) == 0) {
+            return Result.success(0);
+        }else {
+            BigDecimal achieve = totalBudget.multiply(BigDecimal.valueOf(100)).divide(totalTarget, 1, BigDecimal.ROUND_HALF_UP);
+            return Result.success(achieve);
+        }
+    }
+
+    private Result getTotalOptions(List<SchemeDetail> detailList) throws ParseException {
+        //0
+        Date now = new Date();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(now);
+        calendar.set(calendar.get(Calendar.YEAR),0,1,0,0,0);
+        Date yearStart = calendar.getTime();
+        calendar.add(Calendar.YEAR, 1);
+        calendar.add(Calendar.DAY_OF_MONTH, -1);
+        Date yearEnd = calendar.getTime();
+
+        //1 amount
+        BigDecimal totalBudget = BigDecimal.ZERO;
+        for (SchemeDetail schemeDetail : detailList) {
+            BigDecimal rangeBudget = getRangeBudget(schemeDetail, yearStart, yearEnd);
+            totalBudget = totalBudget.add(rangeBudget);
+        }
+        //2 target
+        int year = calendar.get(Calendar.YEAR);
+        EntityWrapper<SysTarget> sysTargetEntityWrapper = new EntityWrapper<>();
+        sysTargetEntityWrapper.eq("amt_type", "pro").eq("year", year);
+        List<SysTarget> sysTargets = targetService.selectList(sysTargetEntityWrapper);
+        BigDecimal totalTarget = BigDecimal.ZERO;
+
+        for (SysTarget sysTarget : sysTargets) {
+            BigDecimal one = sysTarget.getTarget();
+            totalTarget = totalTarget.add(one);
+        }
+        if(totalTarget.compareTo(BigDecimal.ZERO) == 0) {
+           return Result.success(0);
+        }else {
+            BigDecimal achieve = totalBudget.multiply(BigDecimal.valueOf(100)).divide(totalTarget, 1, BigDecimal.ROUND_HALF_UP);
+            return Result.success(achieve);
+        }
+    }
+
+
+
+    private BigDecimal getRangeBudget(SchemeDetail schemeDetail, Date yearStart, Date yearEnd) throws ParseException {
+        BigDecimal average = BigDecimal.ZERO;
+        BigDecimal rangeBudget = BigDecimal.ZERO;
+        Integer rangeDays;
+        BigDecimal budget = schemeDetail.getBudget();
+        Boolean finish = schemeDetail.getFinish();
+        Boolean edit = schemeDetail.getEdit();
+        Boolean delay = schemeDetail.getDelay();
+        if (edit) {
+            return BigDecimal.ZERO;
+        }
+        if (finish) {
+            int dayDiffer = DbUtils.getDayDiffer(schemeDetail.getStartTime(), schemeDetail.getFinishTime());
+            dayDiffer = Math.abs(dayDiffer);
+            average = budget.divide(BigDecimal.valueOf(dayDiffer), 10, BigDecimal.ROUND_HALF_UP);
+            rangeDays = DbUtils.getRangeDays(schemeDetail.getStartTime(), schemeDetail.getFinishTime(), yearStart, yearEnd);
+            rangeDays = Math.abs(rangeDays);
+        }
+        if (delay) {
+            Date endTime = schemeDetail.getEndTime();
+            Integer dayDiffer = null;
+            Date now = new Date();
+            if (endTime.before(now)) {
+                dayDiffer = DbUtils.getDayDiffer(schemeDetail.getStartTime(), now);
+                dayDiffer = Math.abs(dayDiffer);
+                rangeDays = DbUtils.getRangeDays(schemeDetail.getStartTime(), now, yearStart, yearEnd);
+                rangeDays = Math.abs(rangeDays);
+            }else {
+                dayDiffer = DbUtils.getDayDiffer(schemeDetail.getStartTime(), schemeDetail.getEndTime());
+                dayDiffer = Math.abs(dayDiffer);
+                rangeDays = DbUtils.getRangeDays(schemeDetail.getStartTime(), schemeDetail.getEndTime(), yearStart, yearEnd);
+
+            }
+            average = budget.divide(BigDecimal.valueOf(dayDiffer), 10, BigDecimal.ROUND_HALF_UP);
+            rangeBudget = average.multiply(BigDecimal.valueOf(rangeDays));
+        }
+
+        return rangeBudget;
+    }
 
     @RequestMapping(value = "/daywork/{id}", method = RequestMethod.GET)
     public Result dayByUser(@PathVariable String id, HttpServletRequest request)  {
@@ -120,6 +420,27 @@
     @RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
     public Result get(@PathVariable String id)  {
         Scheme scheme = schemeService.selectById(id);
+        String leadUserId = scheme.getLeadUserId();
+        if (!StringUtils.isEmpty(leadUserId)) {
+            String[] split = leadUserId.split(";");
+            ArrayList<List<String>> lists = new ArrayList<>();
+            for (String one : split) {
+                if (StringUtils.isEmpty(one)) {
+                    continue;
+                }
+                SysRoleMapping mapping = roleMappingService.selectOne(new EntityWrapper<SysRoleMapping>().eq("user_id", one));
+                if (mapping == null) {
+                    continue;
+                }
+                SysRole sysRole = roleService.selectById(mapping.getRoleId());
+                ArrayList<String> sysRoleMappings = new ArrayList<>();
+                sysRoleMappings.add(sysRole.getName());
+                sysRoleMappings.add(mapping.getUserId());
+                lists.add(sysRoleMappings);
+            }
+            scheme.setLeadUserList(lists);
+        }
+
         return Result.success(scheme);
     }
 
@@ -312,7 +633,10 @@
             detail.setEdit(false);
             detail.updateById();
         }
-        scheme.setStatus("working");
+        if (scheme.getStatus().equalsIgnoreCase("edit")) {
+            scheme.setStatus("working");
+        }
+
         boolean b = scheme.updateById();
         if (b) {
             return Result.success(CodeMsg.UPDATE_SUCCESS);
@@ -327,6 +651,16 @@
         return Result.success(schemes);
     }
 
+    @RequestMapping(value = "/save/{id}", method = RequestMethod.GET)
+    public Result save(@PathVariable String id, @RequestParam BigDecimal budget)  {
+        Scheme scheme = schemeService.selectById(id);
+        if (scheme == null) {
+            return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
+        }
+        scheme.setBudget(budget).updateById();
+        return Result.success(scheme);
+    }
+
     @RequestMapping(value = "/page/{pageNo}", method = RequestMethod.GET)
     public Result get(@PathVariable Integer pageNo, HttpServletRequest request)  {
         String pageSize = request.getParameter("pageSize");
@@ -334,19 +668,28 @@
         String status = request.getParameter("status");
         String type = request.getParameter("type");
         String userId = request.getParameter("userId");
+        String isRun = request.getParameter("isRun");
+        String orderBy = request.getParameter("orderBy");
 
         EntityWrapper<Scheme> schemeEntityWrapper = new EntityWrapper<>();
+
         if (!StringUtils.isEmpty(name)) {
             schemeEntityWrapper.like("name", name);
+        }
+        if (!StringUtils.isEmpty(orderBy)) {
+            schemeEntityWrapper.orderBy(orderBy);
         }
         if (!StringUtils.isEmpty(userId)) {
             schemeEntityWrapper.eq("user_id", userId);
         }
         if (!StringUtils.isEmpty(type)) {
-            schemeEntityWrapper.eq("reseach_type", type);
+            schemeEntityWrapper.like("type", type);
         }
         if (!StringUtils.isEmpty(status)) {
             schemeEntityWrapper.eq("status", status);
+        }
+        if (!StringUtils.isEmpty(isRun) && Boolean.valueOf(isRun)) {
+            schemeEntityWrapper.ne("status", "edit");
         }
 
         Page<Scheme> schemePage;
@@ -359,23 +702,45 @@
         }
 
         Page<Scheme> page = schemeService.selectPage(schemePage, schemeEntityWrapper);
+        List<Scheme> schemes = schemeService.selectList(schemeEntityWrapper);
+        JSONObject resultObj = new JSONObject();
+        BigDecimal decimal  = new BigDecimal(0);
+        BigDecimal moneydecimal  = new BigDecimal(0);
+        for (Scheme scheme : schemes) {
+            if (scheme.getBudget() != null) {
+                decimal = decimal.add(scheme.getBudget());
+            }
+            if (scheme.getPayMoney() != null) {
+                moneydecimal = moneydecimal.add(scheme.getPayMoney());
+            }
+        }
+        resultObj.fluentPut("budget", decimal);
+        resultObj.fluentPut("payMoney", moneydecimal);
         List<Scheme> records = page.getRecords();
         Page<JSONObject> jsonObjectPage = new Page<>();
         jsonObjectPage.setTotal(page.getTotal());
         jsonObjectPage.setCurrent(page.getCurrent());
         jsonObjectPage.setSize(page.getSize());
         List<JSONObject> result = new ArrayList<>();
+
         for (Scheme scheme : records) {
             JSONObject json = (JSONObject) JSON.toJSON(scheme);
             Wrapper<SchemeDetail> delayWrapper = new EntityWrapper<SchemeDetail>().eq("parent_id", scheme.getId());
             Wrapper<SchemeDetail> finishWrapper = new EntityWrapper<SchemeDetail>().eq("parent_id", scheme.getId());
-            int total = iSchemeDetailService.selectCount(delayWrapper);
+            List<SchemeDetail> detailList = iSchemeDetailService.selectList(delayWrapper);
+            BigDecimal totalBudget = new BigDecimal(0);
+            for (SchemeDetail detail : detailList) {
+                BigDecimal budget = detail.getBudget();
+                totalBudget = totalBudget.add(budget);
+            }
+            int total =detailList.size();
             int delayInt = iSchemeDetailService.selectCount(delayWrapper.eq("delay", true));
 
             int finishInt = iSchemeDetailService.selectCount(finishWrapper.eq("finish", true));
             json.fluentPut("totalCnt", total);
             json.fluentPut("delayCnt", delayInt);
             json.fluentPut("finishCnt", finishInt);
+            json.fluentPut("totalBudget", totalBudget);
 
             //
             List<SchemeDetail> schemeDetailList = iSchemeDetailService.selectList(new EntityWrapper<SchemeDetail>().eq("parent_id", scheme.getId()).eq("finish", true));
@@ -395,10 +760,14 @@
                 if (endDate == null) {
                     endDate = detail.getFinishTime();
                 }else {
-                    int i = DbUtils.compareDate(endDate, detail.getFinishTime());
-                    if(i == 1) {
-                        endDate = detail.getFinishTime();
+                    if (detail.getFinish() && detail.getFinishTime() != null) {
+
+                        int i = DbUtils.compareDate(endDate, detail.getFinishTime());
+                        if(i == 1) {
+                            endDate = detail.getFinishTime();
+                        }
                     }
+
                 }
             }
             json.fluentPut("beginDate", beginDate);
@@ -406,29 +775,37 @@
             result.add(json);
         }
         jsonObjectPage.setRecords(result);
-        return Result.success(jsonObjectPage);
+        resultObj.fluentPut("datas", jsonObjectPage);
+        return Result.success(resultObj);
+    }
+    @RequestMapping(value = "/checkCode/{code}", method = RequestMethod.GET)
+    public Result add(@RequestParam String code) {
+        int cnt = schemeService.selectCount(new EntityWrapper<Scheme>().eq("code", code));
+        if (cnt == 0) {
+            return Result.success(true);
+        }
+        return Result.success(false);
     }
 
-    @RequestMapping(value = "/addOrUpdate", method = RequestMethod.GET)
-    public Result add(@RequestParam String reseachType, @RequestParam String name, @RequestParam Date startTime, @RequestParam Date endTime, HttpServletRequest request)  {
-        String id = request.getParameter("id");
-        String desp = request.getParameter("desp");
-        String userId = request.getParameter("userId");
-        Scheme scheme;
-        if (StringUtils.isEmpty(id)) {
-            scheme = new Scheme();
-        }else{
-            scheme = schemeService.selectById(id);
+    @RequestMapping(value = "/addOrUpdate", method = RequestMethod.POST)
+    public Result add( @RequestBody Scheme scheme)  {
+
+        String code = scheme.getCode();
+        Wrapper<Scheme> codeWrapper = new EntityWrapper<Scheme>().eq("code", code);
+        if (!StringUtils.isEmpty(scheme.getId())) {
+            codeWrapper.ne("id", scheme.getId());
         }
-        if (scheme == null) {
-            return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND);
+        int i = schemeService.selectCount(codeWrapper);
+        if (i > 0) {
+            return Result.error(CodeMsg.EXISTSCODE_ERROR);
         }
-        // reseachType to enum
+
         if (StringUtils.isEmpty(scheme.getId())) {
-            scheme.setId(DbUtils.getUUID());
+            scheme.setId(DbUtils.getUUID()).setCreateTime(new Date());
         }
-        scheme.setUserId(userId).setCreateTime(new Date()).setName(name).setStartTime(startTime).setEndTime(endTime)
-                .setDesp(desp).setReseachType(reseachType);
+
+        Date startTime = scheme.getStartTime();
+        Date endTime = scheme.getEndTime();
 
         List<SchemeDetail> schemeDetailList = iSchemeDetailService.selectList(new EntityWrapper<SchemeDetail>().eq("parent_id", scheme.getId()));
         for (SchemeDetail detail : schemeDetailList) {
@@ -446,6 +823,8 @@
                     detail.setEndTime(endTime);
                 }
             }
+
+
             boolean updated = detail.updateById();
 
         }
@@ -495,6 +874,12 @@
     @RequestMapping(value = "/del/{id}", method = RequestMethod.GET)
     public Result del(@PathVariable String id, HttpServletRequest request) throws JsonProcessingException {
         Scheme scheme = schemeService.selectById(id);
+        List<SchemeDetail> schemeDetailList = iSchemeDetailService.selectList(new EntityWrapper<SchemeDetail>().eq("parent_id", scheme.getId()));
+        for (SchemeDetail detail : schemeDetailList) {
+            detailParttimeService.delete(new EntityWrapper<SchemeDetailParttime>().eq("parent_id", detail.getId()));
+            detail.deleteById();
+        }
+
         boolean delete = scheme.deleteById();
 
         if (delete) {

--
Gitblit v1.8.0