Browse Source

修改逻辑代码

songyh 3 năm trước cách đây
mục cha
commit
9ffce6e835

+ 0 - 1
src/main/java/cn/com/ctop/okr/Application.java

@@ -9,7 +9,6 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 import org.springframework.core.env.Environment;
 
-import java.net.InetAddress;
 import java.net.UnknownHostException;
 @Slf4j
 @SpringBootApplication

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

@@ -81,7 +81,7 @@ public class OkrController {
             okrService.updateTaskInfo(taskInfo);
             return result;
         }catch(Exception e){
-            logger.error(e.getMessage());
+            e.printStackTrace();
             result.setSuccess(false);
             result.setMessage("error");
             return result;

+ 23 - 0
src/main/java/cn/com/ctop/okr/entity/OkrWeekData.java

@@ -0,0 +1,23 @@
+package cn.com.ctop.okr.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName("okr_week_data")
+public class OkrWeekData {
+    @TableId(value = "id",type = IdType.AUTO)
+    private Long id;
+    private int week;
+    private int month;
+    private int quarter;
+    private int year;
+    private String startDate;
+    private String endDate;
+    private Date createTime;
+    private Date updateTime;
+}

+ 9 - 0
src/main/java/cn/com/ctop/okr/mapper/OkrWeekDataMapper.java

@@ -0,0 +1,9 @@
+package cn.com.ctop.okr.mapper;
+
+import cn.com.ctop.okr.entity.OkrTaskInfo;
+import cn.com.ctop.okr.entity.OkrWeekData;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface OkrWeekDataMapper extends BaseMapper<OkrWeekData> {
+
+}

+ 13 - 9
src/main/java/cn/com/ctop/okr/mapper/xml/OkrTaskInfoMapper.xml

@@ -3,20 +3,20 @@
 <mapper namespace="cn.com.ctop.okr.mapper.OkrTaskInfoMapper">
 
     <select id="getTaskInfo" resultType="cn.com.ctop.okr.entity.OkrTaskInfo">
-            select
+        select
             *
         from
-        okr_task_info
+            okr_task_info
         where
-        user_id = #{userId}
+            user_id = #{userId}
         and
-        year = #{year}
+            year = #{year}
         and
-        quarter = #{quarter}
+            quarter = #{quarter}
         and
-        type = #{type}
+            type = #{type}
         and
-        status = 1
+        status != 0
         order by priority
     </select>
 
@@ -32,7 +32,9 @@
             quarter,
             type,
             priority,
-            status
+            status,
+             month,
+             week
             )
         values
             (
@@ -43,7 +45,9 @@
             #{taskInfo.quarter},
             #{taskInfo.type},
             #{taskInfo.priority},
-            1
+            1,
+            #{taskInfo.month},
+            #{taskInfo.week}
             )
     </insert>
 

+ 5 - 0
src/main/java/cn/com/ctop/okr/mapper/xml/OkrWeekDataMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.okr.mapper.OkrWeekDataMapper">
+
+</mapper>

+ 16 - 0
src/main/java/cn/com/ctop/okr/service/IOkrWeekDataService.java

@@ -0,0 +1,16 @@
+package cn.com.ctop.okr.service;
+
+import cn.com.ctop.okr.entity.OkrTaskInfo;
+import cn.com.ctop.okr.entity.OkrWeekData;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IOkrWeekDataService extends IService<OkrWeekData> {
+    OkrWeekData getWeekByDate(String now);
+
+    Map<Integer, List<Integer>> getWeeksByMonths(Integer year,List<Integer> months);
+
+    OkrWeekData getWeekByYearAndWeek(Integer year, int week);
+}

+ 75 - 40
src/main/java/cn/com/ctop/okr/service/impl/OkrServiceImpl.java

@@ -74,15 +74,19 @@ public class OkrServiceImpl implements OkrService {
 
         //状态信息
         List<OkrContentStatus> contentStatusList = okrContentStatusMapper.getContentStatusList(objectInfo.getUserId(), objectInfo.getYear(), objectInfo.getQuarter());
+        String now = DateUtils.formatDate();
+        //当前日期数据
+        OkrWeekData weekData = weekDataService.getWeekByDate(now);
+        List<Integer> months = DateUtils.getMonthsByQuarter(objectInfo.getQuarter());
+        //根据月份数据获取周
+        Map<Integer, List<Integer>> weeks = weekDataService.getWeeksByMonths(objectInfo.getYear(),months);
         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("currentMonth",month);
+        timeMap.put("currentWeek",week);
         timeMap.put("months",months);
         timeMap.put("weeks",weeks);
         result.put("time", timeMap);
@@ -150,11 +154,13 @@ public class OkrServiceImpl implements OkrService {
     public void insertTaskInfo(OkrTaskInfo taskInfo){
         QYWxUserInfo sysUser = (QYWxUserInfo) SecurityUtils.getSubject().getPrincipal();
         String userId = sysUser.getOpenId();
-        Integer year = DateUtils.getYear(new Date());
-        Integer quarter = DateUtils.getQuarter(new Date());
+        String now = DateUtils.formatDate();
+        OkrWeekData weekData = weekDataService.getWeekByDate(now);
         taskInfo.setUserId(userId);
-        taskInfo.setYear(year);
-        taskInfo.setQuarter(quarter);
+        taskInfo.setYear(weekData.getYear());
+        taskInfo.setQuarter(weekData.getQuarter());
+        taskInfo.setWeek(weekData.getWeek());
+        taskInfo.setMonth(weekData.getMonth());
         okrTaskInfoService.insertTaskInfo(taskInfo);
 
         insertTaskPublicIds(taskInfo,taskInfo.getPublicIds());
@@ -166,7 +172,7 @@ public class OkrServiceImpl implements OkrService {
         }else{
             opration = 4;
         }
-        okrLogService.insertOkrLog(1,opration,taskInfo.getId(),year,quarter,JSONObject.toJSONString(taskInfo),userId);
+        okrLogService.insertOkrLog(1,opration,taskInfo.getId(),weekData.getYear(),weekData.getQuarter(),JSONObject.toJSONString(taskInfo),userId);
     }
     private void insertTaskPublicIds(OkrTaskInfo taskInfo,List<String>publicIds){
         if(null!=publicIds&&!publicIds.isEmpty()){
@@ -228,33 +234,59 @@ public class OkrServiceImpl implements OkrService {
     //更新任务
     @Override
     public void updateTaskInfo(OkrTaskInfo taskInfo){
-        List<String>publicIds = taskInfo.getPublicIds();
-        List<String>remindIds = taskInfo.getRemindIds();
-        okrTaskInfoService.updateTaskInfo(taskInfo);
+        //1:查询taskInfo
+        OkrTaskInfo getTask = okrTaskInfoService.getById(taskInfo.getId());
+        if(null!=taskInfo.getTaskTitle()&&!"".equals(taskInfo.getTaskTitle())){
+            getTask.setTaskTitle(taskInfo.getTaskTitle());
+        }
+        if(null!=taskInfo.getTaskInfo()&&!"".equals(taskInfo.getTaskInfo())){
+            getTask.setTaskInfo(taskInfo.getTaskInfo());
+        }
+        if(null!=taskInfo.getPermission()){
+            getTask.setPermission(taskInfo.getPermission());
+        }
+        if(null!=taskInfo.getPriority()&&!"".equals(taskInfo.getPriority())){
+            getTask.setPriority(taskInfo.getPriority());
+        }
+        if(null!=taskInfo.getStatus()){
+            getTask.setStatus(taskInfo.getStatus());
+        }
+        okrTaskInfoService.updateById(getTask);
         if(taskInfo.getStatus() == 2){
-            taskInfo.setStatus(1);
-            taskInfo.setWeek(taskInfo.getWeek()+1);
-            okrTaskInfoService.insertTaskInfo(taskInfo);
+            if(taskInfo.getType() == 2){
+                //月份信息数据
+                getTask.setStatus(1);
+                int month = getTask.getMonth();
+                if(month == 12){
+                    getTask.setMonth(1);
+                    getTask.setYear(getTask.getYear()+1);
+                }else{
+                    getTask.setMonth(getTask.getMonth()+1);
+                }
+                getTask.setId(null);
+                okrTaskInfoService.insertTaskInfo(getTask);
+            }else{
+                OkrWeekData getNextWeek = weekDataService.getWeekByYearAndWeek(getTask.getYear(),getTask.getWeek()+1);
+                getTask.setStatus(1);
+                getTask.setWeek(getNextWeek.getWeek());
+                getTask.setMonth(getNextWeek.getMonth());
+                getTask.setYear(getNextWeek.getYear());
+                getTask.setId(null);
+                okrTaskInfoService.insertTaskInfo(getTask);
+            }
         }
         /**
          * 需要先删除历史数据
          */
-        taskInfo = okrTaskInfoService.selectById(taskInfo.getId());
         okrTaskInfoDisclosureService.deleteByTaskId(taskInfo.getId());
         okrTaskInfoRemindService.deleteByTaskId(taskInfo.getId());
         QYWxUserInfo sysUser = (QYWxUserInfo) SecurityUtils.getSubject().getPrincipal();
-        String userId = sysUser.getOpenId();
-        insertTaskPublicIds(taskInfo,publicIds);
-        insertTaskRemindIds(sysUser.getName(),taskInfo,remindIds);
-
-        //日志留存
-        Integer operation;
-        if(taskInfo.getType() == 1){
-            operation = 3;
-        }else{
-            operation = 4;
-        }
-        okrLogService.insertOkrLog(2,operation,taskInfo.getId(),DateUtils.getYear(new Date()),DateUtils.getQuarter(new Date()),JSONObject.toJSONString(taskInfo),userId);
+        getTask.setStatus(taskInfo.getStatus());
+        getTask.setId(taskInfo.getId());
+        List<String>publicIds = taskInfo.getPublicIds();
+        List<String>remindIds = taskInfo.getRemindIds();
+        insertTaskPublicIds(getTask,publicIds);
+        insertTaskRemindIds(sysUser.getName(),getTask,remindIds);
     }
     //保存任务
 
@@ -567,7 +599,8 @@ public class OkrServiceImpl implements OkrService {
         map.put("quarter",quarter);
         return map;
     }
-
+    @Autowired
+    private IOkrWeekDataService weekDataService;
     @Override
     public Map<String, Object> getOkrDetail(JSONObject data) {
         Map<String, Object> result = new HashMap<>();
@@ -583,18 +616,20 @@ 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);
+        String now = DateUtils.formatDate();
+        //当前日期数据
+        OkrWeekData weekData = weekDataService.getWeekByDate(now);
+        List<Integer> months = DateUtils.getMonthsByQuarter(quarter);
+        //根据月份数据获取周
+        Map<Integer, List<Integer>> weeks = weekDataService.getWeeksByMonths(year,months);
         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("currentYear",weekData.getYear());
+        timeMap.put("currentQuarter",weekData.getQuarter());
+        timeMap.put("currentMonth",weekData.getMonth());
+        timeMap.put("currentWeek",weekData.getWeek());
         timeMap.put("months",months);
-        timeMap.put("week",week);
         timeMap.put("weeks",weeks);
         result.put("time", timeMap);
 
@@ -603,11 +638,11 @@ public class OkrServiceImpl implements OkrService {
             return result;
         }
 
-        //周任务信息
-        List<OkrTaskInfo> taskInfoList = okrTaskInfoService.getTaskInfo(objectInfo.getUserId(), objectInfo.getYear(), objectInfo.getQuarter(), 1);
+        //周任务信息
+        List<OkrTaskInfo> taskInfoList = okrTaskInfoService.getTaskInfo(objectInfo.getUserId(), year, quarter, 1);
         List<OkrTaskInfo> setTaskList =checkTaskInfo(taskInfoList,currentUserId);
 
-        //未来四周任务信息
+        //月度任务信息
         List<OkrTaskInfo> taskFourWeekList = okrTaskInfoService.getTaskInfo(objectInfo.getUserId(), objectInfo.getYear(), objectInfo.getQuarter(), 2);
         List<OkrTaskInfo> settaskFourWeekList =checkTaskInfo(taskFourWeekList,currentUserId);
 

+ 2 - 1
src/main/java/cn/com/ctop/okr/service/impl/OkrTaskInfoServiceImpl.java

@@ -13,11 +13,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 @Service
 public class OkrTaskInfoServiceImpl extends ServiceImpl<OkrTaskInfoMapper, OkrTaskInfo> implements IOkrTaskInfoService {
-    @Autowired
+    @Resource
     private OkrTaskInfoMapper okrTaskInfoMapper;
     @Override
     public List<OkrTaskInfo> getTaskInfo(String userId, Integer year, Integer quarter, int type) {

+ 53 - 0
src/main/java/cn/com/ctop/okr/service/impl/OkrWeekDataServiceImpl.java

@@ -0,0 +1,53 @@
+package cn.com.ctop.okr.service.impl;
+
+import cn.com.ctop.okr.entity.OkrWeekData;
+import cn.com.ctop.okr.mapper.OkrWeekDataMapper;
+import cn.com.ctop.okr.service.IOkrWeekDataService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class OkrWeekDataServiceImpl extends ServiceImpl<OkrWeekDataMapper, OkrWeekData> implements IOkrWeekDataService {
+    @Override
+    public OkrWeekData getWeekByDate(String now) {
+        QueryWrapper<OkrWeekData>queryWrapper = new QueryWrapper<>();
+        queryWrapper.le("start_Date",now).ge("end_date",now).last("limit 1");
+        return this.getOne(queryWrapper);
+    }
+
+    @Override
+    public Map<Integer, List<Integer>> getWeeksByMonths(Integer year,List<Integer> months) {
+        Map<Integer,List<Integer>> result = new HashMap<>();
+        if(null == months||months.isEmpty()){
+            return result;
+        }
+        for(int i=0;i<months.size();i++){
+            List<OkrWeekData>dataList = this.getWeekByYearAndMonth(year,months.get(i));
+            List<Integer>getWeek = new ArrayList<>();
+            for(OkrWeekData data:dataList){
+                getWeek.add(data.getWeek());
+            }
+            result.put(months.get(i),getWeek);
+        }
+        return result;
+    }
+
+    @Override
+    public OkrWeekData getWeekByYearAndWeek(Integer year, int week) {
+        QueryWrapper<OkrWeekData>queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("year",year).ge("week",week).last("limit 1");
+        return this.getOne(queryWrapper);
+    }
+
+    private List<OkrWeekData> getWeekByYearAndMonth(Integer year, Integer month) {
+        QueryWrapper<OkrWeekData>queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("year",year).eq("month",month).orderByAsc("week");
+        return this.list(queryWrapper);
+    }
+}

+ 1 - 12
src/main/java/cn/com/ctop/okr/utils/DateUtils.java

@@ -991,8 +991,7 @@ public class DateUtils extends PropertyEditorSupport {
     }
 
     public static void main(String[] args) {
-
-        Map<Integer, List<Integer>> weeksOfYearByQuarter = getWeeksOfYearByQuarter(4);
+        Map<Integer, List<Integer>> weeksOfYearByQuarter = getWeeksOfYearByQuarter(3);
         Set<Integer> integers = weeksOfYearByQuarter.keySet();
         integers.forEach(integer -> {
             System.out.print(integer);
@@ -1476,16 +1475,6 @@ public class DateUtils extends PropertyEditorSupport {
     public static Date stampToDate(Long timestamp){
         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);
-//
-//    }
 }