Преглед изворни кода

第三方接口修改
项目管理根据参与人筛选

yurk пре 2 година
родитељ
комит
e851b0090b

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -85,8 +85,8 @@ public class ProjectController {
     public HttpRespMsg getProjectPage(@RequestParam Integer pageIndex, @RequestParam Integer pageSize, String keyword,
                                       @RequestParam(required = false, defaultValue = "1") Integer searchField,
                                       Integer projectId, //可以直接传projectId来进行匹配
-                                      Integer status, Integer category,Integer projectMainId,Integer deptId, String sortProp, Integer sortOrder,String inchagerId) {
-        return projectService.getProjectPage(pageIndex, pageSize, keyword,searchField, status, category, projectId,projectMainId,deptId, sortProp, sortOrder,inchagerId, request);
+                                      Integer status, Integer category,Integer projectMainId,Integer deptId, String sortProp, Integer sortOrder,String inchagerId,String participation) {
+        return projectService.getProjectPage(pageIndex, pageSize, keyword,searchField, status, category, projectId,projectMainId,deptId, sortProp, sortOrder,inchagerId,participation, request);
     }
 
     @RequestMapping("/saveBatchAccoDegrees")

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -21,7 +21,7 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg getProjectList(Integer forReport, HttpServletRequest request);
 
     HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, String keyword, Integer searchField,
-                               Integer status, Integer category, Integer projectId,Integer projectMainId,Integer deptId, String sortProp, Integer sortOrder,String inchagerId, HttpServletRequest request);
+                               Integer status, Integer category, Integer projectId,Integer projectMainId,Integer deptId, String sortProp, Integer sortOrder,String inchagerId,String participation, HttpServletRequest request);
 
     HttpRespMsg editProject(Integer id, String name, String code, String[] userIds, String inchargerId,
                             Integer isPublic,

+ 17 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -203,7 +203,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     //分页获取项目列表
     @Override
     public HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, String keyword, Integer searchField,
-                                      Integer status, Integer category, Integer projectId,Integer projectMainId,Integer deptId,  String sortProp, Integer sortOrder,String inchagerId, HttpServletRequest request) {
+                                      Integer status, Integer category, Integer projectId,Integer projectMainId,Integer deptId,  String sortProp, Integer sortOrder,String inchagerId,String participation, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
             //通过公司id获取该公司所有的项目列表
@@ -254,6 +254,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             if(!StringUtils.isEmpty(inchagerId)){
                 queryWrapper.eq("incharger_id",inchagerId);
             }
+            if(!StringUtils.isEmpty(participation)){
+                List<Participation> participationList = participationMapper.selectList(new QueryWrapper<Participation>().eq("user_id", participation).select("project_id"));
+                if(participationList.size()>0){
+                    List<Integer> collect = participationList.stream().map(Participation::getProjectId).collect(Collectors.toList());
+                    queryWrapper.in("id",collect);
+                }
+            }
             if (status != null && status != 0) {
                 queryWrapper.eq("status", status);
             }
@@ -3892,7 +3899,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             userId = user.getId();
         }
         List<HashMap<String, Object>> list = projectMapper.getExportData(user.getCompanyId(), userId);
-        HttpRespMsg projectPage = getProjectPage(null, null, null, null, null, null, null, null,null, null, null,null, request);
+        HttpRespMsg projectPage = getProjectPage(null, null, null, null, null, null, null, null,null, null, null,null,null, request);
         List<ProjectKeyNodesSetting> projectKeyNodesSettingList = projectKeyNodesSettingMapper.selectList(new QueryWrapper<ProjectKeyNodesSetting>().eq("company_id", user.getCompanyId()));
         Map<String,Object> resultMap= (Map<String, Object>) projectPage.data;
         List<ProjectVO> projectVOList= (List<ProjectVO>) resultMap.get("records");
@@ -5121,6 +5128,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<LeaveSheet> leaveSheetList = leaveSheetMapper.selectList(new QueryWrapper<LeaveSheet>().eq("company_id", targetUser.getCompanyId()));
         List<TimelinessRateVO> resultList=new ArrayList<>();
         for (User user : userList){
+            List<Map<String,Object>> dataList=new ArrayList<>();
             long days =dateTimeList.size();
             List<LeaveSheet> leaveSheets = leaveSheetList.stream().filter(ls -> ls.getOwnerId().equals(user.getId())
                     &&(ls.getStartDate().isAfter(ChronoLocalDate.from(sDate))||ls.getStartDate().isEqual(ChronoLocalDate.from(sDate)))
@@ -5148,6 +5156,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             LocalDate createDate = LocalDate.parse(String.valueOf(date));
                             return createDate.isEqual(localDateTime.toLocalDate());
                         })){
+                            Map<String,Object> map=new HashMap<>();
+                            map.put(localDateTime.toLocalDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")),"请假");
+                            dataList.add(map);
                             days++;
                         }
                     }
@@ -5170,7 +5181,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
 
             }
-            List<Map<String,Object>> dataList=new ArrayList<>();
             if(mapList!=null){
                 int num=0;
                 for (Map<String, Object> map : mapList) {
@@ -5199,9 +5209,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                     if(createTimeDate.isBefore(createDate)||createTimeDate.isEqual(createDate)){
                         num++;
-                        objectMap.put(createTimeDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")),"及时");
-                        dataList.add(objectMap);
+                        objectMap.put((LocalDate.parse(String.valueOf(date)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))),"及时/提交时间"+createTimeDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+                    }else {
+                        objectMap.put((LocalDate.parse(String.valueOf(date)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))),"不及时/提交时间"+createTimeDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                     }
+                    dataList.add(objectMap);
                 }
                 timelinessRateVO.setDataList(dataList);
                 BigDecimal bigDecimal=new BigDecimal(num);

+ 46 - 31
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -47,6 +47,9 @@ import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeParseException;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
 
 /**
@@ -62,7 +65,7 @@ import java.util.stream.Collectors;
 public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> implements ReportService {
 //    @Resource
 //    AsyncTaskExecutor asyncTaskExecutor;//注入线程池对象
-
+    private final static Executor executor = Executors.newFixedThreadPool(3);//启用多线程
     @Value("${wx.template_report_pass}")
     public String TEMPLATE_REPORT_PASS;
     @Value("${wx.template_report_reject}")
@@ -3993,7 +3996,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             return msg;
         }
         ThirdPartyInterface thirdPartyInterface = thirdPartyInterfaceList.get(0);
-        List<ReportLog> reportLogList = reportLogMapper.selectList(new QueryWrapper<ReportLog>().eq("company_id", thirdPartyInterface.getCompanyId()).orderByAsc("operate_date"));
+        List<ReportLog> reportLogList = reportLogMapper.selectList(new QueryWrapper<ReportLog>().eq("company_id", thirdPartyInterface.getCompanyId()).ge("operate_date",openDate.atTime(LocalTime.now())).orderByAsc("operate_date"));
         List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", thirdPartyInterface.getCompanyId()));
         if(LocalDateTime.now().isAfter(thirdPartyInterface.getExpireTime())){
             msg.setError("token过期失效");
@@ -4001,37 +4004,49 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         }
         if(token.equals(thirdPartyInterface.getToken())){
             List<HashMap<String, Object>> allReportByDate = reportMapper.getAllReportByDate(startDate,thirdPartyInterface.getCompanyId(), null, endDate, null, 1, null);
+            final CountDownLatch latch=new CountDownLatch(allReportByDate.size());
             for (HashMap<String, Object> map : allReportByDate) {
-                java.sql.Date sqlCreateDate= (java.sql.Date) map.get("createDate");
-                java.sql.Timestamp sqlProjectAuditTime= (Timestamp) map.get("projectAuditTime");
-                java.sql.Timestamp sqlTime= (Timestamp) map.get("time");
-                if(sqlCreateDate!=null){
-                    LocalDate createDate = sqlCreateDate.toLocalDate();
-                    map.put("createDate",df.format(createDate));
-                }
-                if(sqlProjectAuditTime!=null){
-                    LocalDateTime projectAuditTime = sqlProjectAuditTime.toLocalDateTime();
-                    map.put("projectAuditTime",projectAuditTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-                }
-                if(sqlTime!=null){
-                    LocalDateTime time = sqlTime.toLocalDateTime();
-                    map.put("time",time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-                }
-                List<ReportLog> item=new ArrayList<>();
-                Integer reportId = (Integer) map.get("id");
-                for (ReportLog reportLog : reportLogList) {
-                    List<String> list = Arrays.asList(reportLog.getReportIds().split(","));
-                    reportLog.setCreatorName(!userList.stream().filter(
-                            ul->ul.getId().equals(reportLog.getCreatorId())).findFirst().isPresent()?"":userList.stream().filter(
-                            ul->ul.getId().equals(reportLog.getCreatorId())).findFirst().get().getName());
-                    reportLog.setOperateName(!userList.stream().filter(
-                            ul->ul.getId().equals(reportLog.getOperatorId())).findFirst().isPresent()?"":userList.stream().filter(
-                            ul->ul.getId().equals(reportLog.getOperatorId())).findFirst().get().getName());
-                    if(list.contains(String.valueOf(reportId))&&!reportLog.getMsg().contains("提交")){
-                         item.add(reportLog);
+                executor.execute(new Runnable() {
+                    @Override
+                    public void run() {
+                        java.sql.Date sqlCreateDate= (java.sql.Date) map.get("createDate");
+                        java.sql.Timestamp sqlProjectAuditTime= (Timestamp) map.get("projectAuditTime");
+                        java.sql.Timestamp sqlTime= (Timestamp) map.get("time");
+                        if(sqlCreateDate!=null){
+                            LocalDate createDate = sqlCreateDate.toLocalDate();
+                            map.put("createDate",df.format(createDate));
+                        }
+                        if(sqlProjectAuditTime!=null){
+                            LocalDateTime projectAuditTime = sqlProjectAuditTime.toLocalDateTime();
+                            map.put("projectAuditTime",projectAuditTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                        }
+                        if(sqlTime!=null){
+                            LocalDateTime time = sqlTime.toLocalDateTime();
+                            map.put("time",time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                        }
+                        List<ReportLog> item=new ArrayList<>();
+                        Integer reportId = (Integer) map.get("id");
+                        for (ReportLog reportLog : reportLogList) {
+                            List<String> list = Arrays.asList(reportLog.getReportIds().split(","));
+                            reportLog.setCreatorName(!userList.stream().filter(
+                                    ul->ul.getId().equals(reportLog.getCreatorId())).findFirst().isPresent()?"":userList.stream().filter(
+                                    ul->ul.getId().equals(reportLog.getCreatorId())).findFirst().get().getName());
+                            reportLog.setOperateName(!userList.stream().filter(
+                                    ul->ul.getId().equals(reportLog.getOperatorId())).findFirst().isPresent()?"":userList.stream().filter(
+                                    ul->ul.getId().equals(reportLog.getOperatorId())).findFirst().get().getName());
+                            if(list.contains(String.valueOf(reportId))&&!reportLog.getMsg().contains("提交")){
+                                item.add(reportLog);
+                            }
+                        }
+                        map.put("checkLog",item);
+                        latch.countDown();
                     }
-                }
-                map.put("checkLog",item);
+                });
+            }
+            try {
+                latch.await();
+            } catch (InterruptedException e) {
+                e.printStackTrace();
             }
             msg.data=allReportByDate;
         }

+ 15 - 53
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -237,61 +237,23 @@ public class TimingTask {
     @Scheduled(cron = "0 10 2 ? * *")
     private void autoApprove() {
         if (isDev) return;
-        List<Company> list = companyMapper.selectList(new QueryWrapper<Company>());
-        List<CompanyDingding> companyDingdingList = companyDingdingService.list();
-        List<WxCorpInfo> wxCorpInfoList = wxCorpInfoService.list();
-        for (Company company : list) {
-            TimeType timeType = timeTypeMapper.selectById(company.getId());
-            List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()));
-            if(timeType.getReportAutoApprove()==1){
-                Integer reportAutoApproveDays = timeType.getReportAutoApproveDays();
-                if(reportAutoApproveDays==null){
-                    continue;
-                }
-                LocalDate localDate = LocalDate.now().minusDays(reportAutoApproveDays);
-                List<Report> reports = reportMapper.selectList(new QueryWrapper<Report>().eq("state", 0).le("create_time", localDate.atTime(LocalTime.now())));
-                for (Report report : reports) {
-                    report.setState(1);
-                    //项目审核的状态修改成已审核
-                    report.setProjectAuditState(1);
-                    report.setReportAutoApprove(1);
-                    reportMapper.updateById(report);
-                    /*Optional<User> first = userList.stream().filter(u -> u.getId().equals(report.getCreatorId())).findFirst();
-                    if(first.isPresent()){
-                        Optional<CompanyDingding> optional = companyDingdingList.stream().filter(cm -> cm.getCompanyId().equals(company.getId())).findFirst();
-                        if(optional.isPresent()){
-                            companyDingdingService.sendReportApproveMsg(company.getId(),optional.get().getAgentId(),"自动审核","",LocalDate.now(),first.get().getDingdingUserid());
-                        }
-                        Optional<WxCorpInfo> corpInfo = wxCorpInfoList.stream().filter(wx -> wx.getCompanyId().equals(company.getId())).findFirst();
-                        if(corpInfo.isPresent()){
-                            JSONObject json=new JSONObject();
-                            JSONArray dataJson=new JSONArray();
-                            JSONObject item=new JSONObject();
-                            item.put("key","审核人");
-                            item.put("value","自动审核");
-                            dataJson.add(item);
-                            if(timeType.getNeedEvaluate()==1){
-                                JSONObject item1=new JSONObject();
-                                item1.put("key","评价");
-                                item1.put("value",StringUtils.isEmpty(report.getEvaluate())?"":report.getEvaluate());
-                                dataJson.add(item1);
-                                json.put("template_id","tty9TkCAAAWoUyhGnXRCZuhkgCqw_Uow");
-                            }else {
-                                json.put("template_id","tty9TkCAAANpvEtLrkPUGeOEd1-U7W2w");
-                            }
-                            JSONObject item2=new JSONObject();
-                            item2.put("key","日期");
-                            item2.put("value",report.getCreateDate());
-                            dataJson.add(item2);
-                            json.put("url","https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww4e237fd6abb635af&redirect_uri=http://mobworktime.ttkuaiban.com/api/corpWXAuth&response_type=code&scope=snsapi_base&state=0#wechat_redirect");
-                            json.put("content_item",dataJson);
-                            wxCorpInfoService.sendWXCorpTemplateMsg(corpInfo.get(),first.get().getCorpwxUserid(),json);
-                        }
-                    }*/
-                }
+        List<TimeType> timeTypeList = timeTypeMapper.selectList(new QueryWrapper<TimeType>().eq("report_auto_approve", 1));
+        for (TimeType timeType : timeTypeList) {
+            Integer companyId = timeType.getCompanyId();
+            Integer reportAutoApproveDays = timeType.getReportAutoApproveDays();
+            if(reportAutoApproveDays==null){
+                continue;
+            }
+            LocalDate localDate = LocalDate.now().minusDays(reportAutoApproveDays);
+            List<Report> reports = reportMapper.selectList(new QueryWrapper<Report>().eq("state", 0).eq("company_id",companyId).le("create_time", localDate.atTime(LocalTime.now())));
+            for (Report report : reports) {
+                report.setState(1);
+                //项目审核的状态修改成已审核
+                report.setProjectAuditState(1);
+                report.setReportAutoApprove(1);
+                reportMapper.updateById(report);
             }
         }
-
     }
 
     //每周日晚上11点 企业微信同步一次本月的考勤打卡记录

+ 6 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -637,10 +637,11 @@
     </select>
 
     <select id="getUserReportTimelinessRate" resultType="java.util.Map">
-        select `user`.name as userName,report.create_date as createDate,report.create_time as createTime from report
-        left join `user` on `user`.id=report.creator_id
-        where report.company_id=#{companyId}
-        and report.create_date between #{startDate} and #{endDate}
-        group by user.id,report.create_date
+        select `user`.name as userName,rl.create_date as createDate,MIN(rl.operate_date )as createTime from report_log rl
+        left join `user` on `user`.id=rl.operator_id
+        where rl.company_id=#{companyId}
+        and rl.create_date between  #{startDate} and #{endDate}
+        and rl.msg like '%提交了%'
+        group by user.id,rl.create_date
     </select>
 </mapper>