浏览代码

解决费用报销详情查看bug. 工程专业版的项目审核通过增加审核记录

seyason 2 年之前
父节点
当前提交
0e71aef6f1

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -81,7 +81,7 @@ public interface ReportMapper extends BaseMapper<Report> {
 
     List<Map<String, Object>> getReportFillStatus(String startDate, String endDate, String userId);
 
-    List<Map<String, Object>> getDepartmentDetailByState(@Param("departmentId") Integer departmentId,
+    List<Map<String, Object>> getDepartmentDetailByState(@Param("departmentIds") List<Integer> departmentIds,
                                                @Param("companyId") Integer companyId);
 
     List<Map<String, Object>> getUserDailyWorkTime(Integer companyId, String startDate, String endDate, List<Integer> deptIds, String leaderId);

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

@@ -182,7 +182,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         List<Project> Project = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", expenseSheet.getCompanyId()));
         for (ExpenseItem expenseItem : list) {
             for (Project project : Project) {
-                if (expenseItem.getProjectId().equals(project.getId())){
+                if ((project.getId().equals(expenseItem.getProjectId()))){
                     expenseItem.setProjectName(project.getProjectName());
                     break;
                 }

+ 89 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -1264,6 +1264,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         final List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(reportIds);
         if (company.getPackageEngineering() == 1) {
             //检查是否有专业进度待审核
+            Report oneReport = null;
             List<ReportProfessionProgress> list = reportProfessionProgressService.list(new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).eq("audit_state", 0));
             if (isDepartment != null) {
                 //进行的是部门审核, 需要专业审核都通过才能进行部门审核
@@ -1273,6 +1274,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     return httpRespMsg;
                 } else {
                     Report report = reportMapper.selectById(ids.get(0));
+                    oneReport = report;
                     //部门待审核,部门审核通过
                     if (report.getDepartmentAuditState() == 0){
                         report = new Report();
@@ -1296,7 +1298,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         httpRespMsg.setError(MessageUtils.message("finance.masterProfessional"));
                     } else {
                         List<Integer> collect = myProfessionList.stream().map(ProjectProfession::getProfessionId).collect(Collectors.toList());
-
+                        oneReport = reportList.get(0);
                         ReportProfessionProgress item = new ReportProfessionProgress();
                         item.setAuditState(1);
                         reportProfessionProgressService.update(item, new QueryWrapper<ReportProfessionProgress>().in("report_id", ids).in("profession_id", collect));
@@ -1314,6 +1316,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     }
                 } else {
                     Report report = reportMapper.selectById(ids.get(0));
+                    oneReport = report;
                     if(timeType.getNeedEvaluate()==1){
                         report.setEvaluate(evaluate);
                     }
@@ -1343,6 +1346,82 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     }
                 }
             }
+
+            //保存审核记录
+            List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
+            List<Integer> collect = reportList.stream().map(rl -> rl.getProjectId()).distinct().collect(Collectors.toList());
+            List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", collect));
+            List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", user.getCompanyId()));
+            List<WxCorpInfo> wxCorpInfoList = wxCorpInfoMapper.selectList(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+            List<CompanyDingding> companyDingdingList = companyDingdingService.list(new QueryWrapper<CompanyDingding>().eq("company_id", company.getId()));
+            String pNames = projectList.stream().map(Project::getProjectName).collect(Collectors.joining(", ", "[", "]"));
+            //审核通过操作 向被审核人推送消息
+            if(timeType.getReportApproveMsgpush()==1){
+                for (Report report : reportList) {
+                    if(report.getState()==1){
+                        String uId = report.getCreatorId();
+                        Optional<User> first = userList.stream().filter(ul -> ul.getId().equals(uId)).findFirst();
+                        if(first.isPresent()){
+                            User u = first.get();
+                            if(u.getCorpwxUserid()!=null){
+                                if(wxCorpInfoList.size()>0){
+                                    JSONObject json=new JSONObject();
+                                    JSONArray dataJson=new JSONArray();
+                                    JSONObject item=new JSONObject();
+                                    item.put("key","审核人");
+                                    item.put("value",user.getName());
+                                    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://worktime.ttkuaiban.com/api/corpWXAuth&response_type=code&scope=snsapi_base&state=0#wechat_redirect");
+                                    json.put("content_item",dataJson);
+                                    wxCorpInfoService.sendWXCorpTemplateMsg(wxCorpInfoList.get(0),u.getCorpwxUserid(),json);
+                                }
+                            }
+                            if(u.getDingdingUserid()!=null){
+                                if(companyDingdingList.size()>0){
+                                    CompanyDingding companyDingding = companyDingdingList.get(0);
+                                    companyDingdingService.sendReportApproveMsg(company.getId(),companyDingding.getAgentId(),user.getName(),report.getEvaluate(),report.getCreateDate(),u.getDingdingUserid());
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            //对导入审核,添加记录
+            int channel = 1; //0-导入审核, 项目报告审核
+            ReportAuditLog log = new ReportAuditLog();
+            log.setAuditChannel(channel);
+            log.setCompanyId(company.getId());
+            //log.setResult("通过");
+            log.setResult(MessageUtils.message("profession.approved"));
+            log.setUserId(user.getId());
+            log.setUserName(user.getName());
+            log.setProjectName(pNames);
+            reportAuditLogMapper.insert(log);
+            //员工的日期
+            ReportAlogMembdate membdate = new ReportAlogMembdate();
+            membdate.setRlogId(log.getId());
+            membdate.setState(1);//通过
+            membdate.setCreateDate(oneReport.getCreateDate());
+            membdate.setUserId(oneReport.getCreatorId());
+            membdate.setUserName(userMapper.selectById(oneReport.getCreatorId()).getName());
+            reportAlogMembdateMapper.insert(membdate);
+
+            //日报的审核过程记录
+            saveApproveReportLog(reportList, user.getId(), user.getName());
         } else {
             //先按照大的审核模式进行分类
             Report oneReport = reportMapper.selectById(ids.get(0));
@@ -2956,11 +3035,13 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         try {
             SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
             User curUser = userMapper.selectById(request.getHeader("Token"));
-            Integer departmentId = curUser.getManageDeptId();
+            List<Department> manangedDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", curUser.getId()));
             Integer companyId = curUser.getCompanyId();
-
-            //根据权限,管理员查看全部人员的,各个项目负责人只看自己负责的项目参与人员的日报
-            List<Map<String, Object>> nameList = reportMapper.getDepartmentDetailByState(departmentId, companyId);
+            List<Integer> collect = manangedDeptList.stream().map(Department::getDepartmentId).collect(Collectors.toList());
+            List<Map<String, Object>> nameList = new ArrayList<>();
+            if (collect.size() > 0) {
+                nameList = reportMapper.getDepartmentDetailByState(collect, companyId);
+            }
 
             //按日期过滤
             if (!StringUtils.isEmpty(date)) {
@@ -3286,6 +3367,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 dataItem.add(userMonthWork.name+(worktimeList.size()==0?"("+MessageUtils.message("entry.noFill")+")":""));
                 dataItem.add(userMonthWork.departmentName);
             }
+            DecimalFormat decimalFormat = new DecimalFormat("0.0");
             //找到那一天的工作时间
             days.forEach(d->{
 //                String dateStr = startDate;
@@ -3296,7 +3378,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 Optional<Map<String, Object>> op = worktimeList.stream().filter(m -> ((String) m.get("createDate")).equals(fDateStr)).findFirst();
                 if (op.isPresent()) {
                     Map<String, Object> createDateHour = op.get();
-                    dataItem.add(""+createDateHour.get("workingTime"));
+                    double workingTime = (double)createDateHour.get("workingTime");
+                    dataItem.add(""+decimalFormat.format(workingTime));
                 } else {
                     dataItem.add("0");
                 }

+ 7 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -470,8 +470,12 @@
         SELECT DISTINCT b.id, b.name, cast(b.department_id as SIGNED) as departmentId,a.create_date AS date
         FROM report AS a
         JOIN user AS b ON a.creator_id=b.id
-        WHERE a.department_audit_state = 0 AND b.company_id=#{companyId}
-        AND a.creator_id in (select id from user where department_id = #{departmentId})
+        WHERE a.department_audit_state = 0 and a.state = 0 AND b.company_id=#{companyId}
+        AND a.creator_id in (select id from user where department_id in
+        <foreach collection="departmentIds" item="deptId" open="(" close=")" index="index" separator=",">
+            #{deptId}
+        </foreach>
+        )
         ORDER BY a.create_date DESC
     </select>
 
@@ -569,7 +573,7 @@
         group by p.id,u.id,tg.id
     </select>
     <select id="getReportFillStatus" resultType="java.util.Map">
-        SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as createDate, MAX(state) AS state FROM report
+        SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as createDate, IF (MAX(state) = 1, MIN(state), MAX(state)) AS state FROM report
         WHERE create_date BETWEEN #{startDate} AND #{endDate} AND creator_id = #{userId} GROUP BY create_date
     </select>
     <select id="getUserDailyWorkTime" resultType="java.util.Map">