Parcourir la source

配置文件连的测试库,逻辑已修改

huangxuechao il y a 3 ans
Parent
commit
a462585b01

+ 28 - 0
src/main/java/cn/com/ctop/okr/controller/OkrController.java

@@ -89,6 +89,8 @@ public class OkrController {
 
     }
 
+
+
     @RequestMapping(value = "/getOkrInfo")
     public Result getOkrInfo(@RequestBody UserInfoDto dto){
         Result<Map<String,Object>> result = new Result();
@@ -445,6 +447,32 @@ public class OkrController {
             return result;
         }
     }
+    @RequestMapping(value = "/keepTaskInfoById")
+    public Result keepTaskInfoById(@RequestBody OkrDto dto){
+        Result result = new Result();
+
+        if(dto == null || dto.getTaskInfo()==null ){
+            result.setSuccess(false);
+            result.setMessage("参数不能为空");
+            return result;
+        }
+        OkrTaskInfo taskInfo = dto.getTaskInfo();
+        if(taskInfo.getId() == null){
+            result.setSuccess(false);
+            result.setMessage("主键不能为空");
+            return result;
+        }
+
+        try {
+            okrService.keepTaskInfoById(taskInfo);
+            return result;
+        }catch (Exception e){
+            logger.error(e.getMessage());
+            result.setSuccess(false);
+            result.setMessage("error");
+            return result;
+        }
+    }
 
     @RequestMapping(value = "/deleteTaskInfoById")
     public Result deleteTaskInfoById(@RequestBody OkrDto dto){

+ 3 - 0
src/main/java/cn/com/ctop/okr/entity/OkrTaskInfo.java

@@ -22,9 +22,12 @@ public class OkrTaskInfo {
     private Integer quarter;
     private Integer year;
     private Integer type;
+    private Integer month;
+    private Integer week;
     private String priority;
     private Date createTime;
     private Date updateTime;
+    private Integer status;
     /**
      * 1:公开
      * 2:私密

+ 2 - 0
src/main/java/cn/com/ctop/okr/service/IOkrTaskInfoService.java

@@ -15,6 +15,8 @@ public interface IOkrTaskInfoService extends IService<OkrTaskInfo> {
 
     void deleteTaskInfoById(OkrTaskInfo okrTaskInfo);
 
+    void keepTaskInfoById(OkrTaskInfo okrTaskInfo);
+
     void insertTaskInfo(OkrTaskInfo taskInfo);
 
     OkrTaskInfo checkShow(OkrTaskInfo taskInfo, String openId);

+ 2 - 0
src/main/java/cn/com/ctop/okr/service/OkrService.java

@@ -48,6 +48,8 @@ public interface OkrService{
 
     void deleteTaskInfoById(OkrTaskInfo okrTaskInfo);
 
+    void keepTaskInfoById(OkrTaskInfo okrTaskInfo);
+
     void insertOkrKrInfo(OkrKrInfo krInfo);
 
     List<Integer> getObjectYear();

+ 85 - 13
src/main/java/cn/com/ctop/okr/service/impl/OkrServiceImpl.java

@@ -5,26 +5,24 @@ import cn.com.ctop.okr.dto.UserInfoDto;
 import cn.com.ctop.okr.entity.*;
 import cn.com.ctop.okr.mapper.*;
 import cn.com.ctop.okr.service.*;
-import cn.com.ctop.okr.utils.CorpWexinUtils;
-import cn.com.ctop.okr.utils.DateUtils;
-import cn.com.ctop.okr.utils.ResultMapUtils;
-import cn.com.ctop.okr.utils.StatusCode;
+import cn.com.ctop.okr.utils.*;
 import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.*;
 
 @Service
 @Slf4j
 public class OkrServiceImpl implements OkrService {
-    @Autowired
+    @Resource
     private OkrContentStatusMapper okrContentStatusMapper;
-    @Autowired
+    @Resource
     private OkrKrInfoMapper okrKrInfoMapper;
-    @Autowired
+    @Resource
     private OkrMemberMapper okrMemberMapper;
     @Autowired
     private IOkrObjectInfoService okrObjectInfoService;
@@ -79,9 +77,17 @@ public class OkrServiceImpl implements OkrService {
         Map<String,Object> timeMap = new HashMap<>();
         timeMap.put("year",objectInfo.getYear());
         timeMap.put("quarter",objectInfo.getQuarter());
+        Integer month = DateUtils.getMonth();
+        Integer week = DateUtils.getWeekByDate(new Date());
+        List<Integer> months = DateUtils.getMonthsByQuarter(objectInfo.getQuarter());
+        Map<Integer, List<Integer>> weeks = DateUtils.getWeeksOfYearByQuarter(objectInfo.getQuarter());
+        timeMap.put("month",month);
+        timeMap.put("week",week);
+        timeMap.put("months",months);
+        timeMap.put("weeks",weeks);
         result.put("time", timeMap);
-        result.put("taskInfoList",setTaskList);
-        result.put("taskFourWeekList",setTaskFourWeekList);
+        result.put("taskInfoList",transformTaskInfo(setTaskList, 1));
+        result.put("taskFourWeekList",transformTaskInfo(setTaskFourWeekList, 2));
         result.put("okr",okrList);
         result.put("status", contentStatusList);
         return result;
@@ -225,6 +231,11 @@ public class OkrServiceImpl implements OkrService {
         List<String>publicIds = taskInfo.getPublicIds();
         List<String>remindIds = taskInfo.getRemindIds();
         okrTaskInfoService.updateTaskInfo(taskInfo);
+        if(taskInfo.getStatus() == 2){
+            taskInfo.setStatus(1);
+            taskInfo.setWeek(taskInfo.getWeek()+1);
+            okrTaskInfoService.insertTaskInfo(taskInfo);
+        }
         /**
          * 需要先删除历史数据
          */
@@ -572,11 +583,19 @@ public class OkrServiceImpl implements OkrService {
         if(null == quarter||quarter == 0){
             quarter = currentQuarter;
         }
+        Integer month = DateUtils.getMonth();
+        Integer week = DateUtils.getWeekByDate(new Date());
+        List<Integer> months = DateUtils.getMonthsByQuarter(currentQuarter);
+        Map<Integer, List<Integer>> weeks = DateUtils.getWeeksOfYearByQuarter(quarter);
         Map<String,Object> timeMap = new HashMap<>();
         timeMap.put("year", year);
         timeMap.put("quarter",quarter);
         timeMap.put("currentYear",currentYear);
         timeMap.put("currentQuarter",currentQuarter);
+        timeMap.put("month",month);
+        timeMap.put("months",months);
+        timeMap.put("week",week);
+        timeMap.put("weeks",weeks);
         result.put("time", timeMap);
 
         OkrObjectInfo objectInfo =objectInfoService.getByParams(currentUserId,year,quarter);
@@ -586,11 +605,11 @@ public class OkrServiceImpl implements OkrService {
 
         //本周任务信息
         List<OkrTaskInfo> taskInfoList = okrTaskInfoService.getTaskInfo(objectInfo.getUserId(), objectInfo.getYear(), objectInfo.getQuarter(), 1);
-        List<OkrTaskInfo>setTaskList =checkTaskInfo(taskInfoList,currentUserId);
+        List<OkrTaskInfo> setTaskList =checkTaskInfo(taskInfoList,currentUserId);
 
         //未来四周任务信息
         List<OkrTaskInfo> taskFourWeekList = okrTaskInfoService.getTaskInfo(objectInfo.getUserId(), objectInfo.getYear(), objectInfo.getQuarter(), 2);
-        List<OkrTaskInfo>settaskFourWeekList =checkTaskInfo(taskFourWeekList,currentUserId);
+        List<OkrTaskInfo> settaskFourWeekList =checkTaskInfo(taskFourWeekList,currentUserId);
 
         //OKR信息
         List<OkrObjectInfo> OkrObjectInfoList = okrObjectInfoService.getQuarterObject(objectInfo.getUserId(), objectInfo.getYear(), objectInfo.getQuarter());
@@ -606,14 +625,51 @@ public class OkrServiceImpl implements OkrService {
 
         //状态信息
         List<OkrContentStatus> contentStatusList = okrContentStatusMapper.getContentStatusList(objectInfo.getUserId(), objectInfo.getYear(), objectInfo.getQuarter());
-        result.put("taskInfoList",setTaskList);
-        result.put("taskFourWeekList",settaskFourWeekList);
+
+
+        result.put("taskInfoList",transformTaskInfo(setTaskList, 1));
+        result.put("taskFourWeekList",transformTaskInfo(settaskFourWeekList, 2));
         result.put("okr",okrList);
         result.put("status", contentStatusList);
         return result;
     }
 
 
+    public Map<Integer, List<OkrTaskInfo>> transformTaskInfo(List<OkrTaskInfo> taskInfoList, Integer type){
+
+        Map<Integer, List<OkrTaskInfo>> resultMap = new HashMap<>();
+        // 1周  2月
+        if(type == 1){
+            taskInfoList.forEach(taskInfo -> {
+                Integer key = Check.isNull(taskInfo.getWeek()) ? 0 : taskInfo.getWeek();
+                if(resultMap.containsKey(key)){
+                    resultMap.get(key).add(taskInfo);
+                }else{
+                    List<OkrTaskInfo> list = new ArrayList<>();
+                    list.add(taskInfo);
+                    resultMap.put(key, list);
+                }
+            });
+        }
+
+        if(type == 2){
+            taskInfoList.forEach(taskInfo -> {
+                Integer key = Check.isNull(taskInfo.getMonth()) ? 0 : taskInfo.getMonth();
+                if(resultMap.containsKey(key)){
+                    resultMap.get(key).add(taskInfo);
+                }else{
+                    List<OkrTaskInfo> list = new ArrayList<>();
+                    list.add(taskInfo);
+                    resultMap.put(key, list);
+                }
+            });
+        }
+        //联调测试有问题的话做转换
+        //String json = JSONObject.toJSONString(resultMap);
+
+        return resultMap;
+    }
+
     @Override
     public void deleteObjectInfoById(OkrObjectInfo objectInfo){
         okrObjectInfoService.deleteObjectInfoById(objectInfo);
@@ -656,6 +712,22 @@ public class OkrServiceImpl implements OkrService {
         }
         okrLogService.insertOkrLog(3,opetation,okrTaskInfo.getId(),DateUtils.getYear(new Date()),DateUtils.getQuarter(new Date()),JSONObject.toJSONString(okrTaskInfo),userId);
     }
+    @Override
+    public void keepTaskInfoById(OkrTaskInfo okrTaskInfo){
+        okrTaskInfoService.keepTaskInfoById(okrTaskInfo);
+
+        QYWxUserInfo sysUser = (QYWxUserInfo) SecurityUtils.getSubject().getPrincipal();
+        String userId = sysUser.getOpenId();
+        //日志留存
+        Integer opetation = 1;
+        //日志类型:1.目标2.关键成果3.本周任务4.未来四周任务5.状态指标
+        if(okrTaskInfoService.selectById(okrTaskInfo.getId()).getType()==1){
+            opetation = 3;
+        }else{
+            opetation = 4;
+        }
+        okrLogService.insertOkrLog(4,opetation,okrTaskInfo.getId(),DateUtils.getYear(new Date()),DateUtils.getQuarter(new Date()),JSONObject.toJSONString(okrTaskInfo),userId);
+    }
     @Autowired
     private IOkrObjectInfoDisclosureService okrObjectInfoDisclosureService;
     @Autowired

+ 11 - 0
src/main/java/cn/com/ctop/okr/service/impl/OkrTaskInfoServiceImpl.java

@@ -6,6 +6,7 @@ import cn.com.ctop.okr.mapper.OkrTaskInfoMapper;
 import cn.com.ctop.okr.service.IOkrTaskInfoDisclosureService;
 import cn.com.ctop.okr.service.IOkrTaskInfoRemindService;
 import cn.com.ctop.okr.service.IOkrTaskInfoService;
+import cn.com.ctop.okr.utils.Check;
 import cn.com.ctop.okr.vo.PublicVO;
 import cn.com.ctop.okr.vo.RemindVO;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -39,6 +40,16 @@ public class OkrTaskInfoServiceImpl extends ServiceImpl<OkrTaskInfoMapper, OkrTa
     }
 
     @Override
+    public void keepTaskInfoById(OkrTaskInfo okrTaskInfo) {
+        this.updateById(okrTaskInfo);
+        okrTaskInfoMapper.deleteTaskInfoById(okrTaskInfo);
+        if(!Check.isNull(okrTaskInfo.getWeek())){
+            okrTaskInfo.setWeek(okrTaskInfo.getWeek()+1);
+            okrTaskInfoMapper.insertTaskInfo(okrTaskInfo);
+        }
+    }
+
+    @Override
     public void insertTaskInfo(OkrTaskInfo taskInfo) {
         okrTaskInfoMapper.insertTaskInfo(taskInfo);
     }

+ 122 - 11
src/main/java/cn/com/ctop/okr/utils/DateUtils.java

@@ -966,6 +966,110 @@ public class DateUtils extends PropertyEditorSupport {
         return String.format("%tm", parse);
     }
 
+    public static Integer getMonth() {
+        Calendar cal = Calendar.getInstance();
+        return cal.get(Calendar.MONTH) + 1;
+    }
+
+    public static Integer getWeekByDate(Date date){
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        if(isSunday(date)){
+            return cal.get(Calendar.WEEK_OF_YEAR) - 2 == 0 ? 52 : cal.get(Calendar.WEEK_OF_YEAR) - 2;
+        }
+        return cal.get(Calendar.WEEK_OF_YEAR) - 1 == 0 ? 52 : cal.get(Calendar.WEEK_OF_YEAR) - 1;
+    }
+
+    public static boolean isSunday(Date date){
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        int week = cal.get(Calendar.DAY_OF_WEEK) - 1;
+        if(week == 0){
+            return true;
+        }
+        return false;
+    }
+
+    public static void main(String[] args) {
+
+        Map<Integer, List<Integer>> weeksOfYearByQuarter = getWeeksOfYearByQuarter(4);
+        Set<Integer> integers = weeksOfYearByQuarter.keySet();
+        integers.forEach(integer -> {
+            System.out.print(integer);
+            System.out.print(" --- >");
+            System.out.println(weeksOfYearByQuarter.get(integer));
+        });
+    }
+
+    public static List<Integer> getMonthsByQuarter(Integer quarter){
+        List<Integer> list = new ArrayList<>();
+        if(quarter == 1){
+            list.add(1);list.add(2);list.add(3);
+        }
+        if(quarter == 2){
+            list.add(4);list.add(5);list.add(6);
+        }
+        if(quarter == 3){
+            list.add(7);list.add(8);list.add(9);
+        }
+        if(quarter == 4){
+            list.add(10);list.add(11);list.add(12);
+        }
+        return list;
+    }
+
+    public static Map<Integer,List<Integer>> getWeeksOfYearByQuarter(Integer quarter) {
+        Map<Integer,List<Integer>> result = new HashMap<>();
+        List<Integer>months = getMonthsByQuarter(quarter);
+        int year = DateUtils.getYear(new Date());
+        months.forEach(month -> {
+            List<Integer> weekList = new ArrayList<>();
+            Date firstDateOfMonth = getFirstDateOfMonth(year, month);
+            Date endDateOfMonth = getEndDateOfMonth(year, month);
+            Map<Integer, List<Date>> dateMap = new HashMap<>();
+            while (!firstDateOfMonth.after(endDateOfMonth)){
+                Integer weekOfYear = getWeekByDate(firstDateOfMonth);
+                if(dateMap.containsKey(weekOfYear)){
+                    dateMap.get(weekOfYear).add(firstDateOfMonth);
+                }else{
+                    List<Date> list = new ArrayList<>();
+                    list.add(firstDateOfMonth);
+                    dateMap.put(weekOfYear, list);
+                }
+                firstDateOfMonth = addDay(firstDateOfMonth, 1);
+            }
+            Set<Integer> weeks = dateMap.keySet();
+            weeks.forEach(week -> {
+                int size = dateMap.get(week).size();
+                if(size > 3){
+                    weekList.add(week);
+                }
+            });
+            result.put(month, weekList);
+        });
+
+        return result;
+    }
+
+    public static int getDayOfWeekCount(Date date , int day) {
+        Calendar instance = Calendar.getInstance();
+        instance.setTime(date);
+        int actualMaximum = instance.getActualMaximum(Calendar.DAY_OF_MONTH);
+        int count = 0;
+        //也就是遍历当月每天 计算出符合的数量即可
+        for (int i = 1; i <= actualMaximum; i++) {
+            Calendar tp = Calendar.getInstance();
+            tp.setTime(date);
+            tp.set(Calendar.DAY_OF_MONTH , i);
+            if ( tp.get(Calendar.DAY_OF_WEEK) == day ) {
+                System.out.printf("符合指定的日期数据为:%tc \n" , tp.getTime());
+                count++;
+            }
+        }
+        return count;
+    }
+
+
     /**
      * 日期中获取天
      *
@@ -1265,10 +1369,17 @@ public class DateUtils extends PropertyEditorSupport {
         return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
     }
 
-    public static int getFirstDateOfMonth(int year, int month) {
+    public static Date getFirstDateOfMonth(int year, int month) {
         Calendar calendar = Calendar.getInstance();
         calendar.set(year, month - 1, 1);
-        return calendar.getActualMinimum(Calendar.DAY_OF_MONTH);
+        return calendar.getTime();
+    }
+
+    public static Date getEndDateOfMonth(int year, int month) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(year, month, 1);
+        calendar.add(Calendar.DAY_OF_YEAR, -1);
+        return calendar.getTime();
     }
 
     /**
@@ -1366,15 +1477,15 @@ public class DateUtils extends PropertyEditorSupport {
         return new Date(timestamp);
     }
 
-    public static void main(String[] args) {
-        //System.out.println(stampToDate(1593740000L * 1000));
-        Integer pageSize = 20;
-
-        Integer TotalPage = (20-1)/pageSize + 1;
-
-        System.out.println(TotalPage);
-
-    }
+//    public static void main(String[] args) {
+//        //System.out.println(stampToDate(1593740000L * 1000));
+//        Integer pageSize = 20;
+//
+//        Integer TotalPage = (20-1)/pageSize + 1;
+//
+//        System.out.println(TotalPage);
+//
+//    }
 }
 
 

+ 6 - 6
src/main/resources/application.yml

@@ -76,15 +76,15 @@ spring:
         master:
           #prod
 #          url: jdbc:mysql://172.30.0.4:4000/okr?characterEncoding=UTF-8&useUnicode=true&useSSL=false
-          url: jdbc:mysql://139.186.27.96:3390/okr?characterEncoding=UTF-8&useUnicode=true&useSSL=false
-          username: data
-          password: hcst@2021
+          url: jdbc:mysql://139.186.165.84:3306/okr?characterEncoding=UTF-8&useUnicode=true&useSSL=false
+          username: hcst
+          password: hcst@2020
           driver-class-name: com.mysql.jdbc.Driver
   #redis 配置
   redis:
     database: 0
-#    host: 127.0.0.1
-    host: 172.30.0.17
+    host: 127.0.0.1
+#    host: 172.30.0.17
     lettuce:
       pool:
         max-active: 8   #最大连接数据库连接数,设 0 为没有限制
@@ -92,7 +92,7 @@ spring:
         max-wait: -1ms  #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
         min-idle: 0     #最小等待连接中的数量,设 0 为没有限制
       shutdown-timeout: 100ms
-    password: hcst@2021..
+    password:
     port: 6379