Pārlūkot izejas kodu

日报自动审核
出差删除控制
项目报表服务权限同步

yurk 2 gadi atpakaļ
vecāks
revīzija
7366949a30
16 mainītis faili ar 314 papildinājumiem un 167 dzēšanām
  1. 3 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  2. 7 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Report.java
  3. 19 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java
  4. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ParticipationMapper.java
  5. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/CompanyDingdingService.java
  6. 71 24
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  7. 58 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java
  8. 11 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ParticipationMapper.xml
  9. 4 3
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  10. 4 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml
  11. 45 3
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/CompanyReportController.java
  12. 19 1
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/PermissionController.java
  13. 16 4
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/SysFunction.java
  14. 2 2
      fhKeeper/formulahousekeeper/user/src/main/java/com/hssx/user/mapper/PermissionMapper.java
  15. 25 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/PermissionService.java
  16. 27 122
      fhKeeper/formulahousekeeper/user/src/main/java/com/hssx/user/service/impl/PermissionServiceImpl.java

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

@@ -609,6 +609,9 @@ public class ProjectController {
         heads.add("参与人");
         heads.add("项目经理");
         heads.add("级别");
+        if(timeType.getProjectWithDept()==1){
+            heads.add("所属部门");
+        }
         if(company.getPackageCustomer()==1){
             heads.add("客户");
         }

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

@@ -24,7 +24,7 @@ import java.util.List;
  * </p>
  *
  * @author Seyason
- * @since 2022-08-04
+ * @since 2022-08-23
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -345,6 +345,12 @@ public class Report extends Model<Report> {
     @TableField("evaluate")
     private String evaluate;
 
+    /**
+     * 是否属于自动审核通过  0-不属于 1-属于
+     */
+    @TableField("report_auto_approve")
+    private Integer reportAutoApprove;
+
 
     @Override
     protected Serializable pkVal() {

+ 19 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java

@@ -17,7 +17,7 @@ import java.util.List;
  * </p>
  *
  * @author Seyason
- * @since 2022-08-17
+ * @since 2022-08-23
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -344,6 +344,24 @@ public class TimeType extends Model<TimeType> {
     @TableField("report_approve_msgpush")
     private Integer reportApproveMsgpush;
 
+    /**
+     * 出差管理删除 0-未开启 1-开启
+     */
+    @TableField("delete_business_state")
+    private Integer deleteBusinessState;
+
+    /**
+     * 日报自动审核 0-未开启 1-开启
+     */
+    @TableField("report_auto_approve")
+    private Integer reportAutoApprove;
+
+    /**
+     * 日报自动审核天数
+     */
+    @TableField("report_auto_approve_days")
+    private Integer reportAutoApproveDays;
+
     @TableField(exist = false)
     private List<User> userList;
 

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ParticipationMapper.java

@@ -17,4 +17,6 @@ import java.util.Map;
  */
 public interface ParticipationMapper extends BaseMapper<Participation> {
     List<Map<String, Object>> getParticipator(@Param("projectId") Integer projectId);
+
+    List<Map<String, Object>> getAllParticipator(@Param("projectIdList") List<Integer> projectIdList);
 }

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

@@ -25,7 +25,7 @@ public interface CompanyDingdingService extends IService<CompanyDingding> {
 
     public void sendReportWaitingApplyMsg(Integer companyId, Long agentId, Long auditNum, String useridList);
 
-    public void sendReportApproveMsg(Integer companyId, Long agentId, String content, String evaluate, LocalDate date, String useridList);
+    public void sendReportApproveMsg(Integer companyId, Long agentId, String auditorName, String evaluate, LocalDate date, String useridList);
 
     public void sendBusinessTripSettingMsg(Integer companyId, Long agentId, String useridList);
 

+ 71 - 24
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -39,6 +39,7 @@ import java.sql.Timestamp;
 import java.text.DecimalFormat;
 import java.text.NumberFormat;
 import java.text.SimpleDateFormat;
+import java.time.Duration;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
@@ -292,6 +293,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
             }
             List<ProjectVO> list = new ArrayList<>();
+            List<Map<String,Object>> particpationList=participationMapper.getAllParticipator(projectIds);
             for (Project project : projectList) {
                 ProjectVO projectVO = new ProjectVO();
                 if(timeType.getProjectLevelState()==1){
@@ -306,7 +308,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     projectVO.setDepartmentName(optional.get().getDepartmentName());
                 }
                 /**/
-                projectVO.setParticipator(participationMapper.getParticipator(projectVO.getId()));
+                List<Map<String, Object>> maps = particpationList.stream().filter(pl ->Integer.valueOf(String.valueOf(pl.get("projectId"))).equals(project.getId())).collect(Collectors.toList());
+                projectVO.setParticipator(maps);
                 Optional<User> first = userList.stream().filter(u -> u.getId().equals(project.getInchargerId())).findFirst();
                 if (first.isPresent()) {
                     User incharger = first.get();
@@ -2898,6 +2901,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 List<ProjectLevel> projectLevelList = projectLevelMapper.selectList(new QueryWrapper<ProjectLevel>().eq("company_id", user.getCompanyId()));
                 //获取项目阶段
                 List<ProjectStage> projectStageList = projectStageMapper.selectList(new QueryWrapper<ProjectStage>().eq("company_id", company.getId()));
+                //获取部门
+                List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
                 TimeType timeType = timeTypeMapper.selectById(company.getId());
                 List<Project> projectList = new ArrayList<Project>();
                 //由于第一行需要指明列对应的标题
@@ -2937,6 +2942,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     HSSFCell participatorCell=null;
                     HSSFCell inchargerCell=null;
                     HSSFCell levelCell=null;
+                    HSSFCell deptCell=null;
                     HSSFCell customerCell=null;
                     HSSFCell startDateCell=null;
                     HSSFCell endDateCell=null;
@@ -2952,6 +2958,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     int i=0;
                     int k=0;
                     int c=0;
+                    int d=0;
                     if(timeType.getMainProjectState()==1){
                         mainNameCell = row.getCell(0);
                         codeCell = row.getCell(1);
@@ -2964,8 +2971,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         participatorCell = row.getCell(4+c);
                         inchargerCell = row.getCell(5+c);
                         levelCell = row.getCell(6+c);
+                        if(timeType.getProjectWithDept()==1){
+                            deptCell=row.getCell(7+c);
+                            d++;
+                        }
                         if(company.getPackageCustomer()==1){
-                            customerCell=row.getCell(7+c);
+                            customerCell=row.getCell(7+c+d);
                             i++;
                         }
                         if(company.getPackageProvider()==1){
@@ -2975,17 +2986,17 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                 }
                             }
                         }
-                        startDateCell = row.getCell(7+i+k+c);
-                        endDateCell = row.getCell(8+i+k+c);
-                        amountCell = row.getCell(9+i+k+c);
+                        startDateCell = row.getCell(7+i+k+c+d);
+                        endDateCell = row.getCell(8+i+k+c+d);
+                        amountCell = row.getCell(9+i+k+c+d);
                         if(company.getId()==936){
-                            warrantyStartDateCell=row.getCell(10+i+k+c);
-                            warrantyEndDateCell=row.getCell(11+i+k+c);
-                            projectCategorySubCell=row.getCell(12+i+k+c);
-                            regionCell=row.getCell(13+i+k+c);
-                            buCell=row.getCell(14+i+k+c);
-                            stateCell=row.getCell(15+i+k+c);
-                            stageCell=row.getCell(16+i+k+c);
+                            warrantyStartDateCell=row.getCell(10+i+k+c+d);
+                            warrantyEndDateCell=row.getCell(11+i+k+c+d);
+                            projectCategorySubCell=row.getCell(12+i+k+c+d);
+                            regionCell=row.getCell(13+i+k+c+d);
+                            buCell=row.getCell(14+i+k+c+d);
+                            stateCell=row.getCell(15+i+k+c+d);
+                            stageCell=row.getCell(16+i+k+c+d);
                         }
                     }else {
                         codeCell = row.getCell(0);
@@ -3000,8 +3011,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         participatorCell = row.getCell(5+c);
                         inchargerCell = row.getCell(6+c);
                         levelCell = row.getCell(7+c);
+                        if(timeType.getProjectWithDept()==1){
+                            deptCell=row.getCell(8+c);
+                            d++;
+                        }
                         if(company.getPackageCustomer()==1){
-                            customerCell=row.getCell(8+c);
+                            customerCell=row.getCell(8+c+d);
                             i++;
                         }
                         if(company.getPackageProvider()==1){
@@ -3011,17 +3026,17 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                 }
                             }
                         }
-                        startDateCell = row.getCell(8+i+k+c);
-                        endDateCell = row.getCell(9+i+k+c);
-                        amountCell = row.getCell(10+i+k+c);
+                        startDateCell = row.getCell(8+i+k+c+d);
+                        endDateCell = row.getCell(9+i+k+c+d);
+                        amountCell = row.getCell(10+i+k+c+d);
                         if(company.getId()==936){
-                            warrantyStartDateCell=row.getCell(11+i+k+c);
-                            warrantyEndDateCell=row.getCell(12+i+k+c);
-                            projectCategorySubCell=row.getCell(13+i+k+c);
-                            regionCell=row.getCell(14+i+k+c);
-                            buCell=row.getCell(15+i+k+c);
-                            stateCell=row.getCell(16+i+k+c);
-                            stageCell=row.getCell(17+i+k+c);
+                            warrantyStartDateCell=row.getCell(11+i+k+c+d);
+                            warrantyEndDateCell=row.getCell(12+i+k+c+d);
+                            projectCategorySubCell=row.getCell(13+i+k+c+d);
+                            regionCell=row.getCell(14+i+k+c+d);
+                            buCell=row.getCell(15+i+k+c+d);
+                            stateCell=row.getCell(16+i+k+c+d);
+                            stageCell=row.getCell(17+i+k+c+d);
                         }
                     }
                     if (codeCell != null)codeCell.setCellType(CellType.STRING);
@@ -3033,6 +3048,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if (participatorCell != null)participatorCell.setCellType(CellType.STRING);
                     if (inchargerCell != null)inchargerCell.setCellType(CellType.STRING);
                     if (levelCell != null)levelCell.setCellType(CellType.STRING);
+                    if (deptCell != null)deptCell.setCellType(CellType.STRING);
                     if (customerCell != null)customerCell.setCellType(CellType.STRING);
                     /*if (startDateCell != null)startDateCell.setCellType(CellType.NUMERIC);
                     if (endDateCell != null)endDateCell.setCellType(CellType.NUMERIC);*/
@@ -3144,6 +3160,21 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
                         }
                     }
+                    if(deptCell!=null){
+                        String stringCellValue = deptCell.getStringCellValue();
+                        if(!StringUtils.isEmpty(stringCellValue)){
+                            Optional<Department> first = departmentList.stream().filter(dl -> dl.getDepartmentName().equals(stringCellValue)).findFirst();
+                            if(!first.isPresent()){
+                                msg.setError("部门["+stringCellValue+"]不存在");
+                                return msg;
+                            }else {
+                                project.setDeptId(first.get().getDepartmentId());
+                                project.setDeptCascade(first.get().getDepartmentId() == null ?
+                                        convertDepartmentIdToCascade(0) :
+                                        convertDepartmentIdToCascade(first.get().getDepartmentId()));
+                            }
+                        }
+                    }
                     if(customerCell!=null){
                         String cellStringCellValue = customerCell.getStringCellValue();
                         if(!StringUtils.isEmpty(cellStringCellValue)){
@@ -3424,8 +3455,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
     @Override
     public HttpRespMsg exportData(HttpServletRequest request) {
+        LocalDateTime time=LocalDateTime.now();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
+        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
         String userId = null;
         List<SysRoleFunction> functionList = sysRoleFunctionMapper.getRoleFunctionNames(user.getRoleId());
         if(!functionList.stream().anyMatch(fun->fun.getFunctionName().equals("查看全部项目"))) {
@@ -3459,6 +3492,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 headList.add(s);
             }
         }
+        if(timeType.getProjectWithDept()==1){
+            headList.add("所属部门");
+        }
         if(company.getPackageCustomer()==1){
             headList.add("客户");
         }
@@ -3530,6 +3566,15 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                 }
             }
+            if(timeType.getProjectWithDept()==1){
+                Optional<Department> first = departmentList.stream().filter(dl -> dl.getDepartmentId().equals(projectVO.getDeptId())).findFirst();
+                if(first.isPresent()){
+                    rowData.add(first.get().getDepartmentName());
+                }else {
+                    rowData.add("");
+                }
+
+            }
             if(company.getPackageCustomer()==1){
                 rowData.add(projectVO.getCustomerName());
             }
@@ -3579,7 +3624,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             }
             allList.add(rowData);
         }
-
+        LocalDateTime time1=LocalDateTime.now();
+        Duration between = Duration.between(time1, time);
+        System.out.println("耗时"+between.toMillis()+"毫秒");
         //生成excel文件导出
         String fileName = "项目导出_"+company.getCompanyName()+System.currentTimeMillis();
         String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName , allList, path);

+ 58 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -28,12 +28,10 @@ import java.security.SecureRandom;
 import java.text.DecimalFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.Period;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
@@ -232,6 +230,62 @@ public class TimingTask {
         }
     }
 
+    //每天2点10分 自动审核超过指定天数的日报
+    @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();
+                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.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);
+                        }
+                    }
+                }
+            }
+        }
+
+    }
+
     //每周日晚上11点 企业微信同步一次本月的考勤打卡记录
     @Scheduled(cron = "0 0 23 ? * 7")
     private void weeklySyncCorpWXCardTime() {

+ 11 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ParticipationMapper.xml

@@ -22,4 +22,15 @@
         WHERE a.project_id = #{projectId}
     </select>
 
+
+    <select id="getAllParticipator" resultType="java.util.Map">
+        SELECT a.user_id AS id, b.name,a.project_id as projectId
+        FROM participation AS a
+        LEFT JOIN user AS b ON a.user_id = b.id
+        WHERE a.project_id in
+        <foreach collection="projectIdList" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
+    </select>
+
 </mapper>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 4 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 4 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml


+ 45 - 3
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/CompanyReportController.java

@@ -2,8 +2,8 @@ package com.management.platform.controller;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.CompanyReport;
-import com.management.platform.entity.ReportForm;
+import com.management.platform.entity.*;
+import com.management.platform.mapper.*;
 import com.management.platform.service.CompanyReportService;
 import com.management.platform.service.ReportFormService;
 import com.management.platform.util.HttpRespMsg;
@@ -15,6 +15,7 @@ import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -31,6 +32,16 @@ public class CompanyReportController {
     private CompanyReportService companyReportService;
     @Resource
     private ReportFormService reportFormService;
+    @Resource
+    private SysFunctionMapper sysFunctionMapper;
+    @Resource
+    private SysModuleMapper sysModuleMapper;
+    @Resource
+    private CompanyReportMapper companyReportMapper;
+    @Resource
+    private SysRoleFunctionMapper sysRoleFunctionMapper;
+    @Resource
+    private SysRoleModuleMapper sysRoleModuleMapper;
 
 
     @RequestMapping("/list")
@@ -49,19 +60,50 @@ public class CompanyReportController {
     }
 
     @RequestMapping("/update")
-    public HttpRespMsg update(Integer companyId,String formIds){
+    public HttpRespMsg update(Integer companyId,String formIds,String roleIds){
         HttpRespMsg httpRespMsg=new HttpRespMsg();
         companyReportService.remove(new QueryWrapper<CompanyReport>().eq("company_id", companyId));
         List<CompanyReport> updateList=new ArrayList<>();
         if(formIds!=null&&!StringUtils.isEmpty(formIds)){
             String[] split = formIds.split(",");
             List<String> list = Arrays.asList(split);
+            List<Integer> formIdList=new ArrayList<>();
             for (String s : list) {
                 CompanyReport companyReport=new CompanyReport();
                 companyReport.setCompanyId(companyId);
                 companyReport.setReportFormId(Integer.parseInt(s));
+                formIdList.add(Integer.parseInt(s));
                 updateList.add(companyReport);
             }
+            //需要添加权限表属于的权限
+            List<SysFunction> sysFunctions = sysFunctionMapper.selectList(new QueryWrapper<SysFunction>().in("report_form_id", formIdList));
+            //报表只属于项目报表模块
+            List<Integer> sysModuleIds = sysFunctions.stream().distinct().map(SysFunction::getModuleId).collect(Collectors.toList());
+            String[] roleIdArray = roleIds.split(",");
+            List<String> roleIdLists = Arrays.asList(roleIdArray);
+            List<Integer> roleIdList=roleIdLists.stream().map(Integer::valueOf).collect(Collectors.toList());
+            List<SysRoleFunction> sysRoleFunctions = sysRoleFunctionMapper.selectList(new QueryWrapper<SysRoleFunction>().in("role_id", roleIdList));
+            List<SysRoleModule> sysRoleModules = sysRoleModuleMapper.selectList(new QueryWrapper<SysRoleModule>().in("role_id", roleIdList));
+            for (Integer integer : roleIdList) {
+                //检查项目报表服务 模块是否开启 没有就开启
+                boolean b = sysRoleModules.stream().anyMatch(sr -> sr.getModuleId().equals(sysModuleIds.get(0)) && sr.getRoleId().equals(integer));
+                if(!b){
+                    SysRoleModule sysRoleModule=new SysRoleModule();
+                    sysRoleModule.setModuleId(sysModuleIds.get(0));
+                    sysRoleModule.setRoleId(integer);
+                    sysRoleModuleMapper.insert(sysRoleModule);
+                }
+                //添加权限
+                for (SysFunction sysFunction : sysFunctions) {
+                    boolean c = sysRoleFunctions.stream().anyMatch(sr -> sr.getFunctionId().equals(sysFunction.getId()) && sr.getRoleId().equals(integer));
+                    if(!c){
+                    SysRoleFunction sysRoleFunction =new SysRoleFunction();
+                    sysRoleFunction.setFunctionId(sysFunction.getId());
+                    sysRoleFunction.setRoleId(integer);
+                    sysRoleFunctionMapper.insert(sysRoleFunction);
+                    }
+                }
+            }
             if(!companyReportService.saveBatch(updateList)){
                 httpRespMsg.setError("更新失败");
             }

+ 19 - 1
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/PermissionController.java

@@ -3,9 +3,9 @@ package com.management.platform.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.SysRole;
+import com.management.platform.service.PermissionService;
 import com.management.platform.service.SysRoleService;
 import com.management.platform.util.HttpRespMsg;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -31,6 +31,8 @@ public class PermissionController {
     private HttpServletRequest httpServletRequest;
     @Resource
     private SysRoleService sysRoleService;
+    @Resource
+    private PermissionService permissionService;
 
     @RequestMapping("/getFrontRoleList")
     public HttpRespMsg getFrontRoleList(Integer companyId) {
@@ -40,5 +42,21 @@ public class PermissionController {
         return msg;
     }
 
+    @RequestMapping("/getRoleList")
+    public HttpRespMsg getRoleList(Integer companyId) {
+        return permissionService.getRoleList(companyId);
+    }
+
+    @RequestMapping("/getAuthority")
+    public HttpRespMsg getAuthority(@RequestParam Integer role, @RequestParam Integer companyId, HttpServletRequest request) {
+        return permissionService.getAuthority(role, companyId,request);
+    }
+
+
+    @RequestMapping(value = "/savePermission", method = RequestMethod.POST)
+    public HttpRespMsg savePermission(@RequestParam Integer role, @RequestParam String moduleList) {
+        return permissionService.savePermission(role, moduleList);
+    }
+
 }
 

+ 16 - 4
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/SysFunction.java

@@ -1,21 +1,22 @@
 package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.io.Serializable;
+
 /**
  * <p>
  * 菜单功能权限关联表
  * </p>
  *
  * @author Seyason
- * @since 2022-04-05
+ * @since 2022-08-04
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -129,6 +130,17 @@ public class SysFunction extends Model<SysFunction> {
     @TableField("finance_audit")
     private Integer financeAudit;
 
+    /**
+     * 备注
+     */
+    @TableField("remarks")
+    private String remarks;
+
+    /**
+     * 权限所属报表
+     */
+    @TableField("report_form_id")
+    private Integer reportFormId;
 
     @TableField(exist = false)
     private boolean checked;

+ 2 - 2
fhKeeper/formulahousekeeper/user/src/main/java/com/hssx/user/mapper/PermissionMapper.java

@@ -1,8 +1,8 @@
-package com.hssx.user.mapper;
+package com.management.platform.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.hssx.user.entity.Permission;
+import com.management.platform.entity.Permission;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;

+ 25 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/PermissionService.java

@@ -0,0 +1,25 @@
+package com.management.platform.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.Permission;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <p>
+ * 服务类
+ * </p>
+ *
+ * @author Reiskuchen
+ * @since 2019-10-28
+ */
+public interface PermissionService extends IService<Permission> {
+
+    HttpRespMsg getRoleList(Integer companyId);
+
+    HttpRespMsg getAuthority(Integer role, Integer companyId,HttpServletRequest request);
+
+    HttpRespMsg savePermission(Integer role, String moduleList);
+
+}

+ 27 - 122
fhKeeper/formulahousekeeper/user/src/main/java/com/hssx/user/service/impl/PermissionServiceImpl.java

@@ -1,25 +1,23 @@
-package com.hssx.user.service.impl;
+package com.management.platform.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.hssx.user.entity.*;
-import com.hssx.user.mapper.*;
-import com.hssx.user.service.PermissionService;
-import com.hssx.user.service.SysRoleFunctionService;
-import com.hssx.user.service.SysRoleModuleService;
-import com.hssx.user.utils.HttpRespMsg;
+import com.management.platform.entity.*;
+import com.management.platform.mapper.*;
+import com.management.platform.service.PermissionService;
+import com.management.platform.service.SysRoleFunctionService;
+import com.management.platform.service.SysRoleModuleService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 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;
 
 /**
@@ -33,6 +31,8 @@ import java.util.stream.Collectors;
 @Service
 @Transactional
 public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permission> implements PermissionService {
+    @Value(value = "${upload.path}")
+    private String path;
     @Resource
     private UserMapper userMapper;
     @Resource
@@ -55,41 +55,15 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
     private SysRoleModuleService sysRoleModuleService;
     @Resource
     private CompanyMapper companyMapper;
+    @Resource
+    private CompanyReportMapper companyReportMapper;
+
+
 
 
-    //根据角色id获取角色列表
-    @Override
-    public HttpRespMsg getCrewByPage(Integer pageIndex, Integer pageSize) {
-        HttpRespMsg httpRespMsg = new HttpRespMsg();
-        Map<String, Object> resultMap = new HashMap<>();
-        resultMap.put("records", permissionMapper.getRoleList(new Page<>(pageIndex, pageSize)));
-        resultMap.put("roles", sysRoleMapper.selectList(new QueryWrapper<SysRole>().ne("id", 0)));
-        resultMap.put("total", userMapper.selectCount(new QueryWrapper<User>().ne("id", 1)));
-        httpRespMsg.data = resultMap;
-        return httpRespMsg;
-    }
 
-    @Override
-    public HttpRespMsg switchRole(Integer[] ids, Integer roleId, HttpServletRequest httpServletRequest) {
-        HttpRespMsg httpRespMsg = new HttpRespMsg();
 
-        return httpRespMsg;
-    }
 
-    @Override
-    public HttpRespMsg getSimpleUserList() {
-        HttpRespMsg httpRespMsg = new HttpRespMsg();
-        List<Map<String, Object>> resultList = new ArrayList<>();
-        List<User> userList = userMapper.selectList(new QueryWrapper<User>().ne("id", 1));
-        for (User user : userList) {
-            Map<String, Object> userMap = new HashMap<>();
-            userMap.put("id", user.getId());
-            userMap.put("name", user.getName());
-            resultList.add(userMap);
-        }
-        httpRespMsg.data = resultList;
-        return httpRespMsg;
-    }
 
     @Override
     public HttpRespMsg getRoleList(Integer companyId) {
@@ -98,60 +72,12 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
         return httpRespMsg;
     }
 
-    @Override
-    public HttpRespMsg editRole(Integer id, String name, String description, Integer companyId) {
-        HttpRespMsg msg = new HttpRespMsg();
-        SysRole sysRole = new SysRole().setId(id).setRolename(name).setRoleDescribe(description).setCompanyId(companyId);
-        if (id == null) {
-            long cnt = sysRoleMapper.selectCount(new QueryWrapper<SysRole>().eq("rolename", name));
-            if (cnt > 0) {
-                msg.setError("角色名称不能重复");
-            } else {
-                sysRoleMapper.insert(sysRole);
-            }
-        } else {
-            long cnt = sysRoleMapper.selectCount(new QueryWrapper<SysRole>().eq("rolename", name).ne("id", id));
-            if (cnt > 0) {
-                msg.setError("角色名称不能重复");
-            } else {
-                sysRoleMapper.updateById(sysRole);
-                //更新相关的用户的角色名称
-                User user = new User();
-                user.setRoleName(sysRole.getRolename());
-                userMapper.update(user, new QueryWrapper<User>().eq("role_id", sysRole.getId()));
-            }
-        }
-        return msg;
-    }
 
     @Override
-    public HttpRespMsg deleteRole(Integer id) {
+    public HttpRespMsg getAuthority(Integer role, Integer companyId,HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
-        //检查有无正在使用的人
-        SysRole role = sysRoleMapper.selectById(id);
-        if (role == null) {
-            httpRespMsg.setError("该角色不存在");
-        } else if (role.getRolename().equals("超级管理员")) {
-            httpRespMsg.setError("不可删除超级管理员");
-        } else if (role.getIsDefault() == 1) {
-            httpRespMsg.setError("该角色为新增员工时的默认角色,请设置其他角色为默认后再尝试删除");
-        } else if (userMapper.selectCount(new QueryWrapper<User>().eq("role_id", id)) > 0) {
-            httpRespMsg.setError("该角色存在相关人员,请将他们修改为其他角色后再尝试删除");
-        } else {
-            sysRoleFunctionMapper.delete(new QueryWrapper<SysRoleFunction>().eq("role_id", id));
-            sysRoleModuleMapper.delete(new QueryWrapper<SysRoleModule>().eq("role_id", id));
-            sysRoleMapper.deleteById(id);
-        }
-        return httpRespMsg;
-    }
-
-    @Override
-    public HttpRespMsg getAuthority(Integer role, Integer companyId) {
-        HttpRespMsg httpRespMsg = new HttpRespMsg();
-
         //角色赋有的module
         List<Integer> modelIds = sysRoleModuleMapper.selectList(new QueryWrapper<SysRoleModule>().eq("role_id", role)).stream().map(sr -> sr.getModuleId()).collect(Collectors.toList());
-
         //全部模块,
         Company company = companyMapper.selectById(companyId);
         TimeType timeType = timeTypeMapper.selectById(companyId);
@@ -184,6 +110,9 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
         if (timeType.getReportWorkflow() == 1) {
             queryWrapper.or().eq("report_workflow", 1);
         }
+        if (timeType.getNeedDeptAudit() == 1) {
+            queryWrapper.or().eq("need_dept_audit", 1);
+        }
         queryWrapper.orderByAsc("orderitem");
 
         List<SysModule> moduleList = sysModuleMapper.selectList(queryWrapper);
@@ -214,8 +143,14 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
         if (company.getPackageFinance() == 1) {
             functionQueryWrapper.or().eq("package_finance", 1);
         }
+        if (timeType.getSyncCorpwxTime() == 1) {
+            functionQueryWrapper.or().eq("sync_corpwx_time", 1);
+        }
+        //开通财务审核功能的
+        if (timeType.getFinanceAudit() == 1) {
+            functionQueryWrapper.or().eq("finance_audit", 1);
+        }
         functionQueryWrapper.orderByAsc("seq");
-
         List<SysFunction> functionList = sysFunctionMapper.selectList(functionQueryWrapper);
         //勾选上角色选中的功能
         List<SysRoleFunction> roleFunctionList = sysRoleFunctionMapper.selectList(new QueryWrapper<SysRoleFunction>().eq("role_id", role));
@@ -225,7 +160,6 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
                 fun.setChecked(true);
             }
         });
-
         for (SysModule module : moduleList) {
             if (module.getParentId() == null) {
                 menuList.add(module);
@@ -245,25 +179,11 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
         return httpRespMsg;
     }
 
-    @Override
-    public HttpRespMsg switchAuthority(Integer role, Integer id) {
-        HttpRespMsg httpRespMsg = new HttpRespMsg();
-        QueryWrapper<SysRoleFunction> queryWrapper = new QueryWrapper<SysRoleFunction>().eq("role_id", role)
-                .eq("function_id", id);
-        if (sysRoleFunctionMapper.selectCount(queryWrapper) > 0) {
-            sysRoleFunctionMapper.delete(queryWrapper);
-            httpRespMsg.data = "权限取消成功";
-        } else {
-            sysRoleFunctionMapper.insert(new SysRoleFunction().setRoleId(role).setFunctionId(id));
-            httpRespMsg.data = "权限加入成功";
-        }
-        return httpRespMsg;
-    }
 
     @Override
     public HttpRespMsg savePermission(Integer role, String moduleList) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
-        JSONArray array = com.alibaba.fastjson.JSONArray.parseArray(moduleList);
+        JSONArray array = JSONArray.parseArray(moduleList);
         List<Integer> selectedModuleIds = new ArrayList<>();
         List<Integer> selectedFunctionIds = new ArrayList<>();
         for (int i = 0; i < array.size(); i++) {
@@ -308,22 +228,7 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
         return httpRespMsg;
     }
 
-    @Override
-    public HttpRespMsg setDefaultRole(Integer id, Integer companyId) {
-        //查找当前默认的角色
-        List<SysRole> oldRoleList = sysRoleMapper.selectList(new QueryWrapper<SysRole>().eq("company_id", companyId).eq("is_default", 1));
-        if (oldRoleList.size() > 0) {
-            SysRole role = oldRoleList.get(0);
-            role.setIsDefault(0);
-            sysRoleMapper.updateById(role);
-        }
-        //设置当前的为默认的
-        SysRole role = new SysRole();
-        role.setId(id);
-        role.setIsDefault(1);
-        sysRoleMapper.updateById(role);
-        return new HttpRespMsg();
-    }
+
 
     private List<Integer> getCheckedFunList(JSONObject menu) {
         List<Integer> funIds = new ArrayList<>();