Browse Source

日报获取bug修复,钉钉消息推送接口,h5端提交日报的degreeId不需要时不传

seyason 3 years ago
parent
commit
6c3f1e2cd8

+ 15 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CompanyDingdingController.java

@@ -1,10 +1,15 @@
 package com.management.platform.controller;
 
 
+import com.management.platform.mapper.CompanyDingdingMapper;
+import com.management.platform.service.CompanyDingdingService;
+import com.management.platform.util.HttpRespMsg;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+
 /**
  * <p>
  *  前端控制器
@@ -16,6 +21,16 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping("/company-dingding")
 public class CompanyDingdingController {
+    @Resource
+    private CompanyDingdingService companyDingdingService;
+    @Resource
+    private CompanyDingdingMapper companyDingdingMapper;
+    
+
+    @RequestMapping("/pushAlertMsg")
+    public HttpRespMsg pushAlertMsg(String userDingId) {
 
+        return new HttpRespMsg();
+    }
 }
 

+ 51 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportExtraDegreeController.java

@@ -12,9 +12,11 @@ import com.management.platform.mapper.CustomerInfoMapper;
 import com.management.platform.mapper.ProjectMapper;
 import com.management.platform.mapper.ReportExtraDegreeMapper;
 import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.ProjectService;
 import com.management.platform.service.ReportExtraDegreeService;
 import com.management.platform.service.ReportService;
 import com.management.platform.util.HttpRespMsg;
+import org.apache.poi.util.StringUtil;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 
@@ -23,9 +25,11 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -45,6 +49,10 @@ public class ReportExtraDegreeController {
     UserMapper userMapper;
     @Resource
     ReportExtraDegreeMapper reportExtraDegreeMapper;
+    @Resource
+    ProjectMapper projectMapper;
+    @Resource
+    ProjectService projectService;
 
     /**
      * addOrMod添加或者修改
@@ -61,8 +69,39 @@ public class ReportExtraDegreeController {
             reportExtraDegreeMapper.insert(info);
         } else {
             info.setCompanyId(user.getCompanyId());
-            reportExtraDegreeMapper.updateById(info);
+            //检查名字是否发生变化
+            ReportExtraDegree reportExtraDegree = reportExtraDegreeMapper.selectById(info.getId());
+            if (!reportExtraDegree.getName().equals(info.getName())) {
+                //检查是否已经被使用
+                int id = info.getId();
+                List<Project> existsProjects = projectMapper.selectList(new QueryWrapper<Project>()
+                        .eq("company_id", user.getCompanyId())
+                        .and(wrapper->wrapper.eq("associate_degrees", id)
+                                .or().like("associate_degrees", id+",%")
+                                .or().like("associate_degrees", "%,"+id+",%")
+                                .or().like("associate_degrees", "%,"+id)));
+                if (existsProjects.size() > 0) {
+                    List<Project> updateList = new ArrayList<>();
+                    for (Project p : existsProjects) {
+                        String associateDegrees = p.getAssociateDegrees();
+                        String[] split = associateDegrees.split("\\,");
+                        String[] names = p.getAssociateDegreeNames().split("\\,");
 
+                        for (int i=0;i<split.length; i++) {
+                            if (split[i].equals(id+"")) {
+                                names[i] = info.getName();//更换新名字
+                            }
+                        }
+                        String replaceNames = StringUtil.join(names, ",");
+                        Project newP = new Project();
+                        newP.setId(p.getId());
+                        newP.setAssociateDegreeNames(replaceNames);
+                        updateList.add(newP);
+                    }
+                    projectService.updateBatchById(updateList);
+                }
+                reportExtraDegreeMapper.updateById(info);
+            }
         }
         return msg;
     }
@@ -77,6 +116,17 @@ public class ReportExtraDegreeController {
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
+        //检查是否已经被使用
+        List<Project> existsProjects = projectMapper.selectList(new QueryWrapper<Project>()
+                        .eq("associate_degrees", id)
+                        .or().like("associate_degrees", id+",%")
+                        .or().like("associate_degrees", "%,"+id+",%")
+                        .or().like("associate_degrees", "%,"+id));
+        if (existsProjects.size() > 0) {
+            String names = existsProjects.stream().map(Project::getProjectName).collect(Collectors.joining(","));
+            msg.setError("该数据已经被以下项目关联,无法删除:"+names);
+            return msg;
+        }
         int r = reportExtraDegreeMapper.delete(new QueryWrapper<ReportExtraDegree>().eq("id", id).eq("company_id", user.getCompanyId()));
         if (r <= 0) {
             msg.setError("无权删除");

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/StagesController.java

@@ -173,7 +173,7 @@ public class StagesController {
         }
         List<Task> tasks = taskService.simpleList(queryWrapper);
         //普通员工,并且非项目经理,只能看到自己创建的,负责的和待分配的任务
-        if (user.getRole() == 0 && !project.getInchargerId().equals(userId)) {
+        if (user.getRole() == 0 && !userId.equals(project.getInchargerId())) {
             tasks = tasks.stream().filter(t->t.getExecutorId() == null || t.getExecutorId().equals(userId) || t.getCreaterId().equals(userId)).collect(Collectors.toList());
         }
         List<Task> subTasks = new ArrayList<>();

+ 7 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/CompanyDingding.java

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2021-06-27
+ * @since 2021-12-23
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -54,6 +54,12 @@ public class CompanyDingding extends Model<CompanyDingding> {
     @TableField("expire_time")
     private LocalDateTime expireTime;
 
+    /**
+     * 企业应用id
+     */
+    @TableField("agent_id")
+    private Long agentId;
+
 
     @Override
     protected Serializable pkVal() {

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/CompanyDingdingService.java

@@ -2,6 +2,7 @@ package com.management.platform.service;
 
 import com.management.platform.entity.CompanyDingding;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.WxCorpInfo;
 
 /**
  * <p>
@@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface CompanyDingdingService extends IService<CompanyDingding> {
 
+    public void sendDDMsg(CompanyDingding corpInfo, String corpUserid, String msg);
 }

+ 24 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/CompanyDingdingServiceImpl.java

@@ -1,5 +1,10 @@
 package com.management.platform.service.impl;
 
+import com.dingtalk.api.DefaultDingTalkClient;
+import com.dingtalk.api.DingTalkClient;
+import com.dingtalk.api.request.OapiGettokenRequest;
+import com.dingtalk.api.request.OapiMessageCorpconversationSendbytemplateRequest;
+import com.dingtalk.api.response.OapiMessageCorpconversationSendbytemplateResponse;
 import com.management.platform.entity.CompanyDingding;
 import com.management.platform.mapper.CompanyDingdingMapper;
 import com.management.platform.service.CompanyDingdingService;
@@ -16,5 +21,23 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class CompanyDingdingServiceImpl extends ServiceImpl<CompanyDingdingMapper, CompanyDingding> implements CompanyDingdingService {
-
+    public static final String TEMPLATE_FILL_REPORT_ALERT = "c7c073b9be2a4ae8a988473715a27ad3";
+    @Override
+    public void sendDDMsg(CompanyDingding corpInfo, String corpUserid, String msg) {
+        try {
+            System.out.println("===========推送钉钉消息===========");
+            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/sendbytemplate");
+            OapiMessageCorpconversationSendbytemplateRequest req = new OapiMessageCorpconversationSendbytemplateRequest();
+            req.setAgentId(corpInfo.getAgentId());
+            req.setUseridList(corpUserid);
+//            req.setDeptIdList("421897262");
+            req.setTemplateId(TEMPLATE_FILL_REPORT_ALERT);
+            req.setData("{\"msg\":\""+msg+"\"}");
+            OapiMessageCorpconversationSendbytemplateResponse rsp = client.execute(req, corpInfo.getAccessToken());
+            System.out.println(rsp.getBody());
+        } catch (Exception e) {
+            e.printStackTrace();
+            System.err.println(e.getMessage());
+        }
+    }
 }

+ 25 - 32
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -429,20 +429,22 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
 
                 //处理维度列表数据
-                Project project = allProjectList.stream().filter(p -> p.getId().equals(r.getProjectId())).findFirst().get();
-                String associateDegrees = project.getAssociateDegrees();
-                List<HashMap> degreeMapList = new ArrayList<>();
-                if (associateDegrees != null) {
-                    String[] split = associateDegrees.split("\\,");
-                    for (int i=0;i<split.length; i++) {
-                        HashMap map = new HashMap();
-                        Integer id = Integer.parseInt(split[i]);
-                        map.put("id", id);
-                        map.put("name", degreeList.stream().filter(d->d.getId().equals(id)).findFirst().get().getName());
-                        degreeMapList.add(map);
+                if (timeTypeMapper.selectById(companyId).getCustomDegreeActive() == 1) {
+                    Project project = allProjectList.stream().filter(p -> p.getId().equals(r.getProjectId())).findFirst().get();
+                    String associateDegrees = project.getAssociateDegrees();
+                    List<HashMap> degreeMapList = new ArrayList<>();
+                    if (associateDegrees != null) {
+                        String[] split = associateDegrees.split("\\,");
+                        for (int i=0;i<split.length; i++) {
+                            HashMap map = new HashMap();
+                            Integer id = Integer.parseInt(split[i]);
+                            map.put("id", id);
+                            map.put("name", degreeList.stream().filter(d->d.getId().equals(id)).findFirst().get().getName());
+                            degreeMapList.add(map);
+                        }
                     }
+                    r.setDegreeList(degreeMapList);
                 }
-                r.setDegreeList(degreeMapList);
             });
             resultMap.put("report", reports);
             //顺便再获取一下可分配时间
@@ -1588,6 +1590,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             titles.addAll(Arrays.asList(new String[]{
                     "序号","上传者","项目名称","子项目名称"
             }));
+
             //项目管理专业版以上,包括任务
             if (company.getPackageProject() == 1) {
                 titles.add("关联任务");
@@ -1600,6 +1603,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             if (timeType.getMultiWorktime() == 0) {
                 titles.add("是否加班");
             }
+            //是否启用自定义的维度了
+            if (timeType.getCustomDegreeActive() == 1) {
+                titles.add(timeType.getCustomDegreeName());
+            }
+
             titles.add("工作事项");
 
             //创建表头
@@ -1642,26 +1650,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 headCell.setCellStyle(headStyle);
             }
 
-//            headCell = headRow.createCell(1);
-//            headCell.setCellValue("上传者");
-//            headCell.setCellStyle(headStyle);
-//            headCell = headRow.createCell(2);
-//            headCell.setCellValue("项目名称");
-//            headCell.setCellStyle(headStyle);
-//            headCell = headRow.createCell(3);
-//            headCell.setCellValue("子项目名称");
-//            headCell.setCellStyle(headStyle);
-//            headCell = headRow.createCell(4);
-//            headCell.setCellValue("关联任务");
-//            headCell.setCellStyle(headStyle);
-//            headCell = headRow.createCell(5);
-//            headCell.setCellValue("工作日期");
-//            headCell.setCellStyle(headStyle);
-//            headCell = headRow.createCell(6);
-//            headCell.setCellValue("工作时长(小时)");
-//            headCell.setCellStyle(headStyle);
-//
-
             //设置日期格式
             HSSFCellStyle style = workbook.createCellStyle();
             style.setDataFormat(HSSFDataFormat.getBuiltinFormat("yy/mm/dd hh:mm"));
@@ -1732,6 +1720,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     row.createCell(index).setCellValue(isOverTime==1?"加班":"-");
                     index++;
                 }
+                //是否启用自定义的维度了
+                if (timeType.getCustomDegreeActive() == 1) {
+                    row.createCell(index).setCellValue(map.get("degreeName") != null?map.get("degreeName").toString():"");
+                    index++;
+                }
                 row.createCell(index).setCellValue((String) map.get("content"));
                 index++;
                 rowNum++;

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/CompanyDingdingMapper.xml

@@ -11,11 +11,12 @@
         <result column="company_id" property="companyId" />
         <result column="access_token" property="accessToken" />
         <result column="expire_time" property="expireTime" />
+        <result column="agent_id" property="agentId" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        corpid, corp_name, auth_user_id, indate, company_id, access_token, expire_time
+        corpid, corp_name, auth_user_id, indate, company_id, access_token, expire_time, agent_id
     </sql>
 
 </mapper>

+ 8 - 5
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -804,7 +804,7 @@
                     isOvertime:false,
                     multiWorktime: this.reportTimeType.multiWorktime,
                     worktimeList:[{}],
-                    degreeId: ''
+                    degreeId: null
                 })
             },
 
@@ -919,11 +919,14 @@
                 
                 //填字段
                 for(var i in this.form.domains) {
-                    if(this.form.domains[i].degreeId) {
-                        formData.append("degreeId", this.form.domains[i].degreeId);
-                    } else {
-                        formData.append("degreeId", '');
+                    if (this.user.timeType.customDegreeActive == 1) {
+                        if(this.form.domains[i].degreeId) {
+                            formData.append("degreeId", this.form.domains[i].degreeId);
+                        } else {
+                            formData.append("degreeId", -1);
+                        }
                     }
+                    
                     if (this.form.domains[i].id != null) {
                         formData.append("id", this.form.domains[i].id);
                     } else {