syh 4 anni fa
parent
commit
78bd6c855c

+ 3 - 1
src/main/java/cn/com/ctop/okr/mapper/OkrObjectInfoMapper.java

@@ -24,7 +24,9 @@ public interface OkrObjectInfoMapper extends BaseMapper<OkrObjectInfo> {
 
    List<Integer> getObjectYear();
 
-   List<OkrObjectInfo> getFollowQuarterObject(@Param("name")String name,
+   List<OkrObjectInfo> getFollowQuarterObject(
+           @Param("userId")String userId,
+           @Param("name")String name,
                                               @Param("year")Integer year,
                                               @Param("quarter")Integer quarter,
                                               @Param("startIndex")Integer startIndex,

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

@@ -15,4 +15,5 @@ public interface QYWxDepartInfoMapper extends BaseMapper<QYWxDepartInfo> {
 
     List<QYWxDepartInfoVO> getDepartInfoVo();
 
+    List<String> getUserIdByDepartId(Long departId);
 }

+ 6 - 4
src/main/java/cn/com/ctop/okr/mapper/xml/OkrObjectInfoMapper.xml

@@ -91,11 +91,13 @@
         left join wx_user_info userInfo on focus.follow_id = userInfo.open_id
         left join okr_object_info objectInfo on focus.follow_id = objectInfo.user_id
         where
-        1=1
+            1=1
+        and
+            focus.user_id = #{userId}
         and
-        objectInfo.year = #{year}
+            objectInfo.year = #{year}
         and
-        objectInfo.quarter = #{quarter}
+            objectInfo.quarter = #{quarter}
         <if test="name != null and name != '' ">
             and userInfo.name like concat('%',#{name},'%')
         </if>
@@ -115,7 +117,7 @@
         and
             objectInfo.quarter = #{quarter}
         <if test="name != null and name != '' ">
-            and userInfo.name like concat('%',#{name},'%')
+            and user.name like concat('%',#{name},'%')
         </if>
         limit #{startIndex},#{pageSize}
     </select>

+ 3 - 0
src/main/java/cn/com/ctop/okr/mapper/xml/QYWxDepartInfoMapper.xml

@@ -23,6 +23,9 @@
     <select id="getDepartInfoVo" resultType="cn.com.ctop.okr.vo.QYWxDepartInfoVO">
         select id,id as 'value',depart_name as 'label',parentid as 'parent_id' from wx_depart_info
     </select>
+    <select id="getUserIdByDepartId" resultType="java.lang.String">
+        select user_id from wx_depart_info where depart_id = #{departId}
+    </select>
 
 
 </mapper>

+ 1 - 1
src/main/java/cn/com/ctop/okr/service/IOkrObjectInfoService.java

@@ -18,7 +18,7 @@ public interface IOkrObjectInfoService extends IService<OkrObjectInfo> {
 
     List<OkrObjectInfo> getAllQuarterObject(String name, Integer year, Integer quarter, int startIndex, Integer pageSize);
 
-    List<OkrObjectInfo> getFollowQuarterObject(String name, Integer year, Integer quarter, int startIndex, Integer pageSize);
+    List<OkrObjectInfo> getFollowQuarterObject(String userId,String name, Integer year, Integer quarter, int startIndex, Integer pageSize);
 
     List<OkrObjectInfo> getDepartmentQuarterObject(String openId, String name, Integer year, Integer quarter, int startIndex, Integer pageSize);
 

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

@@ -6,4 +6,6 @@ import java.util.List;
 
 public interface QYWxDepartInfoService {
     List<TagInfoTreeModel> queryTreeList();
+
+    List<String>getUserIdByDepartId(Long departId);
 }

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

@@ -36,7 +36,7 @@ public class OkrFocusInfoServiceImpl extends ServiceImpl<OkrFocusInfoMapper, Okr
     @Override
     public void removeByParams(String followId, String userId) {
         Map<String,Object>params = new HashMap<>();
-        if(null!=followId&&"".equals(followId.trim())){
+        if(null!=followId&&!"".equals(followId.trim())){
             params.put("follow_id",followId);
         }
         if(null!=userId&&!userId.trim().equals("")){

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

@@ -48,8 +48,8 @@ public class OkrObjectInfoServiceImpl extends ServiceImpl<OkrObjectInfoMapper, O
     }
 
     @Override
-    public List<OkrObjectInfo> getFollowQuarterObject(String name, Integer year, Integer quarter, int startIndex, Integer pageSize) {
-        return objectInfoMapper.getFollowQuarterObject(name,year,quarter,startIndex,pageSize);
+    public List<OkrObjectInfo> getFollowQuarterObject(String userId,String name, Integer year, Integer quarter, int startIndex, Integer pageSize) {
+        return objectInfoMapper.getFollowQuarterObject(userId,name,year,quarter,startIndex,pageSize);
     }
 
     @Override

+ 34 - 15
src/main/java/cn/com/ctop/okr/service/impl/OkrServiceImpl.java

@@ -1,9 +1,11 @@
 package cn.com.ctop.okr.service.impl;
 
+import cn.com.ctop.okr.controller.QyWxController;
 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;
@@ -29,7 +31,7 @@ public class OkrServiceImpl implements OkrService {
     @Autowired
     private IOkrTaskInfoService okrTaskInfoService;
     @Autowired
-    private QYWxUserInfoMapper wxUserInfoMapper;
+    private IQYWxUserInfoService wxUserInfoService;
     @Autowired
     private IOkrTaskInfoDisclosureService okrTaskInfoDisclosureService;
     @Autowired
@@ -150,7 +152,7 @@ public class OkrServiceImpl implements OkrService {
         okrTaskInfoService.insertTaskInfo(taskInfo);
 
         insertTaskPublicIds(taskInfo,taskInfo.getPublicIds());
-        insertTaskRemindIds(taskInfo,taskInfo.getRemindIds());
+        insertTaskRemindIds(sysUser.getName(),taskInfo,taskInfo.getRemindIds());
         //日志留存
         Integer opration;
         if(taskInfo.getType() == 1){
@@ -180,7 +182,7 @@ public class OkrServiceImpl implements OkrService {
             }
         }
     }
-    private void insertTaskRemindIds(OkrTaskInfo taskInfo,List<String>remindIds){
+    private void insertTaskRemindIds(String userName,OkrTaskInfo taskInfo,List<String>remindIds){
         if(null!=remindIds&&!remindIds.isEmpty()){
             for(String remindId:remindIds){
                 OkrTaskInfoRemind remind = new OkrTaskInfoRemind();
@@ -190,18 +192,27 @@ public class OkrServiceImpl implements OkrService {
                 //部门
                 if(ids.length == 1){
                     remind.setRemindType(1);
+                    List<String>wechatIds = qyWxDepartInfoService.getUserIdByDepartId(Long.parseLong(ids[0]));
+                    CorpWexinUtils.sendMessage(wechatIds,userName+"在okr中@了你: "+taskInfo.getTaskTitle());
                 }
                 if(ids.length == 2){
                     remind.setRemindType(2);
+                    QYWxUserInfo userInfo = wxUserInfoService.getByOpenId(ids[0]);
+                    if(null!=userInfo){
+                        CorpWexinUtils.sendMessageByWeChatId(userInfo.getUserid(),userName+"在okr中@了你: "+taskInfo.getTaskTitle());
+                    }
                 }
                 remind.setRemindId(ids[0]);
                 remind.setStatus(1);
                 okrTaskInfoRemindService.save(remind);
+
             }
         }
     }
-    //更新任务
 
+    @Autowired
+    private QYWxDepartInfoService qyWxDepartInfoService;
+    //更新任务
     @Override
     public void updateTaskInfo(OkrTaskInfo taskInfo){
         List<String>publicIds = taskInfo.getRemindIds();
@@ -213,11 +224,11 @@ public class OkrServiceImpl implements OkrService {
         taskInfo = okrTaskInfoService.selectById(taskInfo.getId());
         okrTaskInfoDisclosureService.deleteByTaskId(taskInfo.getId());
         okrTaskInfoRemindService.deleteByTaskId(taskInfo.getId());
-        insertTaskPublicIds(taskInfo,publicIds);
-        insertTaskRemindIds(taskInfo,remindIds);
-
         QYWxUserInfo sysUser = (QYWxUserInfo) SecurityUtils.getSubject().getPrincipal();
         String userId = sysUser.getOpenId();
+        insertTaskPublicIds(taskInfo,publicIds);
+        insertTaskRemindIds(sysUser.getName(),taskInfo,remindIds);
+
         //日志留存
         Integer operation;
         if(taskInfo.getType() == 1){
@@ -270,13 +281,13 @@ public class OkrServiceImpl implements OkrService {
             krInfo.setQuarter(quarter);
             okrKrInfoMapper.insertOkrKrInfo(krInfo);
             insertKrPublicIds(krInfo,krInfo.getPublicIds());
-            insertKrRemindIds(krInfo,krInfo.getRemindIds());
+            insertKrRemindIds(sysUser.getName(),krInfo,krInfo.getRemindIds());
             //日志留存
             okrLogService.insertOkrLog(1,2,krInfo.getId(),year,quarter,JSONObject.toJSONString(krInfo),userId);
         }
     }
 
-    private void insertKrRemindIds(OkrKrInfo krInfo,List<String>remindIds){
+    private void insertKrRemindIds(String username,OkrKrInfo krInfo,List<String>remindIds){
         if(null!=remindIds&&!remindIds.isEmpty()){
             for(String remindId:remindIds){
                 OkrObjectInfoRemind remind = new OkrObjectInfoRemind();
@@ -286,9 +297,17 @@ public class OkrServiceImpl implements OkrService {
                 //部门
                 if(ids.length == 1){
                     remind.setRemindType(1);
+                    List<String>wechatIds = qyWxDepartInfoService.getUserIdByDepartId(Long.parseLong(ids[0]));
+                    if(null!=wechatIds&&!wechatIds.isEmpty()){
+                        CorpWexinUtils.sendMessage(wechatIds,username+"在OKR中@你了: "+krInfo.getKrInfo());
+                    }
                 }
                 if(ids.length == 2){
                     remind.setRemindType(2);
+                    QYWxUserInfo userInfo = wxUserInfoService.getByOpenId(ids[0]);
+                    if(null!=userInfo){
+                        CorpWexinUtils.sendMessageByWeChatId(userInfo.getUserid(),username+"在OKR中@你了: "+krInfo.getKrInfo());
+                    }
                 }
                 remind.setRemindId(ids[0]);
                 remind.setStatus(1);
@@ -334,11 +353,11 @@ public class OkrServiceImpl implements OkrService {
         krInfoservice.updateKrInfo(krInfo);
         okrObjectInfoDisclosureService.deleteByKrId(krInfo.getId());
         okrObjectInfoRemindService.deleteByKrId(krInfo.getId());
-        insertKrPublicIds(krInfo,publicIds);
-        insertKrRemindIds(krInfo,remindIds);
-
         QYWxUserInfo sysUser = (QYWxUserInfo) SecurityUtils.getSubject().getPrincipal();
         String userId = sysUser.getOpenId();
+        insertKrPublicIds(krInfo,publicIds);
+        insertKrRemindIds(sysUser.getName(),krInfo,remindIds);
+
         //日志留存
         okrLogService.insertOkrLog(2,2,krInfo.getId(),DateUtils.getYear(new Date()),DateUtils.getQuarter(new Date()),JSONObject.toJSONString(krInfo),userId);
     }
@@ -442,7 +461,7 @@ public class OkrServiceImpl implements OkrService {
         }
 
         List<Map<String, Object>> mapList = new ArrayList<>();
-        List<OkrObjectInfo> OkrObjectInfoList = okrObjectInfoService.getFollowQuarterObject(name,year, quarter,(pageNumber-1)*pageSize,pageSize);
+        List<OkrObjectInfo> OkrObjectInfoList = okrObjectInfoService.getFollowQuarterObject(openId,name,year, quarter,(pageNumber-1)*pageSize,pageSize);
         for(OkrObjectInfo object:OkrObjectInfoList){
             Map<String, Object> okrmap = getOkrMap(object,openId,year,quarter);
             mapList.add(okrmap);
@@ -459,7 +478,7 @@ public class OkrServiceImpl implements OkrService {
         Map<String,Object>okrmap = new HashMap<>();
         List<OkrKrInfo> krList = okrKrInfoMapper.getKrByObjectId(object.getId(), object.getUserId(), year, quarter);
         List<OkrKrInfo>setList =checkKrList(krList,openId);
-        QYWxUserInfo userInfo = wxUserInfoMapper.getUserInfoByOpenId(object.getUserId());
+        QYWxUserInfo userInfo = wxUserInfoService.getByOpenId(object.getUserId());
         OkrFocusInfo focusInfo = focusInfoService.getByParams(object.getUserId(),openId);
         if(null == focusInfo){
             okrmap.put("follow",false);
@@ -629,7 +648,7 @@ public class OkrServiceImpl implements OkrService {
         okrKrInfoMapper.insertOkrKrInfo(krInfo);
 
         insertKrPublicIds(krInfo,krInfo.getPublicIds());
-        insertKrRemindIds(krInfo,krInfo.getRemindIds());
+        insertKrRemindIds(sysUser.getName(),krInfo,krInfo.getRemindIds());
 
         //日志留存
         okrLogService.insertOkrLog(1,2,krInfo.getId(),year,quarter,JSONObject.toJSONString(krInfo),userId);

+ 5 - 0
src/main/java/cn/com/ctop/okr/service/impl/QYWxDepartInfoServiceImpl.java

@@ -128,4 +128,9 @@ public class QYWxDepartInfoServiceImpl extends ServiceImpl<QYWxDepartInfoMapper,
         }
         // sysDepartTreeList = treeList;
     }
+
+    @Override
+    public List<String>getUserIdByDepartId(Long departId){
+        return qyWxDepartInfoMapper.getUserIdByDepartId(departId);
+    }
 }

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

@@ -8,6 +8,8 @@ import cn.com.ctop.okr.service.IQYWxUserInfoService;
 import cn.com.ctop.okr.service.QYWxDepartInfoService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.j2objc.annotations.AutoreleasePool;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service

+ 76 - 0
src/main/java/cn/com/ctop/okr/utils/CorpWexinUtils.java

@@ -0,0 +1,76 @@
+package cn.com.ctop.okr.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import lombok.val;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.cp.api.WxCpService;
+import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
+import me.chanjar.weixin.cp.bean.WxCpMessage;
+import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl;
+
+import java.util.List;
+
+@Slf4j
+public class CorpWexinUtils {
+    private static WxCpService wxCpService;
+
+    {
+        initService();
+    }
+
+    public static void initService() {
+        val configStorage = new WxCpDefaultConfigImpl();
+        configStorage.setCorpId("ww24b8a47826f5875f");
+        configStorage.setAgentId(1000002);
+        configStorage.setCorpSecret("MJIlySADGPlgvADnkFQPUpfZD4yV-4WN6066OgNnb0s");
+        configStorage.setToken("hcst2019");
+        configStorage.setAesKey("hcst2019");
+        wxCpService = new WxCpServiceImpl();
+        wxCpService.setWxCpConfigStorage(configStorage);
+    }
+
+    public static void sendMessage(List<String> wxUserList, String content) {
+        if (wxCpService == null) {
+            initService();
+        }
+        if (wxUserList != null && wxUserList.size() > 0) {
+            for (String userId : wxUserList) {
+                WxCpMessage message = new WxCpMessage();
+                message.setMsgType("text");
+                message.setContent(content);
+                message.setAgentId(1000002);
+                message.setToUser(userId);
+                try {
+                    wxCpService.messageSend(message);
+                } catch (WxErrorException e) {
+                    log.error("发送信息失败,userId:{}", userId);
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+
+    public static void sendMessageByWeChatId(String weChatId, String content) {
+        if (wxCpService == null) {
+            initService();
+        }
+        if (!Check.isNull(weChatId)) {
+            WxCpMessage message = new WxCpMessage();
+            message.setMsgType("text");
+            message.setContent(content);
+            message.setAgentId(1000002);
+            message.setToUser(weChatId);
+            try {
+                wxCpService.messageSend(message);
+            } catch (WxErrorException e) {
+                log.error("发送信息失败,userId:{}", weChatId);
+                e.printStackTrace();
+            }
+
+        }
+
+
+    }
+
+}

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

@@ -18,7 +18,7 @@ public enum StatusCode {
      * -109 深度搜索服务异常
      * -201 探针数据为空
      */
-    COMMON_SUCCESS("success", 0, true),
+    COMMON_SUCCESS("操作成功", 0, true),
     COMMON_PARAM_ERROR("参数异常", -1, false),
     COMMON_ACCOUNT_ERROR("参数异常", -2, false),
     COMMON_DATA_NOT_EXIST("数据不存在或者已经被删除", -101, false),

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

@@ -133,7 +133,7 @@ xxl:
       logpath: /data/applogs/xxl-job/jobhandler
       logretentiondays: 30
     admin:
-      addresses: http://139.186.29.76:8090/xxl-job-admin
+      addresses: http://139.186.29.76:8090
 
 #jeecg专用配置
 jeecg: