Browse Source

部门修改

anderx 2 years ago
parent
commit
b718a6191e

+ 7 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ProjectTaskController.java

@@ -21,12 +21,10 @@ import com.ruoyi.project.service.ProjectStaffRecordService;
 import com.ruoyi.project.service.ProjectStaffService;
 import com.ruoyi.project.service.ProjectTaskService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import java.awt.print.Pageable;
 import java.util.Date;
 import java.util.List;
 
@@ -254,6 +252,13 @@ public class ProjectTaskController extends BaseController {
         return success(message);
     }
 
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response)
+    {
+        ExcelUtil<ProjectTaskListOut> util = new ExcelUtil<ProjectTaskListOut>(ProjectTaskListOut.class);
+        util.importTemplateExcel(response, "项目列表");
+    }
+
 
     /**
      * 上传项目文件

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/project/bo/ProjectListInput.java

@@ -16,7 +16,7 @@ public class ProjectListInput extends BaseEntity {
     private Integer projectStatus;
 
     /**
-     * 0=我的项目 1=项目负责人审核 2=技术总监审核
+     * 0=我的项目 1=项目负责人审核 2=技术总监审核 3=公司管理,4=总管理
      */
     private Integer roleType;
 

+ 13 - 1
ruoyi-system/src/main/java/com/ruoyi/project/bo/ProjectTaskListOut.java

@@ -13,8 +13,10 @@ public class ProjectTaskListOut extends ProjectTask {
     /**
      * 项目编号
      */
-    @Excel(name = "项目编号")
+    @Excel(name = "编号")
     private Long id;
+    @Excel(name = "项目编号")
+    private String projectNumber;
 
     /**
      * 项目年份
@@ -78,6 +80,16 @@ public class ProjectTaskListOut extends ProjectTask {
 
 
     @Override
+    public String getProjectNumber() {
+        return projectNumber;
+    }
+
+    @Override
+    public void setProjectNumber(String projectNumber) {
+        this.projectNumber = projectNumber;
+    }
+
+    @Override
     public Double getDuration() {
         return duration;
     }

+ 2 - 1
ruoyi-system/src/main/java/com/ruoyi/project/mapper/ProjectStaffMapper.java

@@ -1,6 +1,7 @@
 package com.ruoyi.project.mapper;
 
 import com.ruoyi.project.domain.ProjectStaff;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -19,5 +20,5 @@ public interface ProjectStaffMapper {
 
     void deleteBypid(Long id);
 
-    List<ProjectStaff> selectBypid(Long id);
+    List<ProjectStaff> selectByPid(Long id);
 }

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/project/service/impl/ProjectStaffServiceImpl.java

@@ -31,7 +31,7 @@ public class ProjectStaffServiceImpl implements ProjectStaffService {
 
     @Override
     public AjaxResult addStaff(ProjectStaff in) {
-        List<ProjectStaff> projectStaffs = projectStaffMapper.selectBypid(in.getPid());
+        List<ProjectStaff> projectStaffs = projectStaffMapper.selectByPid(in.getPid());
         for (ProjectStaff projectStaff : projectStaffs) {
             if (projectStaff.getAid().equals(in.getAid())){
                 String name = projectStaff.getName();

+ 85 - 5
ruoyi-system/src/main/java/com/ruoyi/project/service/impl/ProjectTaskServiceImpl.java

@@ -4,6 +4,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.enums.UserRolesType;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
@@ -14,6 +15,7 @@ import com.ruoyi.project.bo.ProjectTaskOut;
 import com.ruoyi.project.domain.ProjectStaff;
 import com.ruoyi.project.domain.ProjectTask;
 import com.ruoyi.project.mapper.ProjectStaffMapper;
+import com.ruoyi.project.mapper.ProjectStaffRecordMapper;
 import com.ruoyi.project.mapper.ProjectTaskMapper;
 import com.ruoyi.project.service.ProjectTaskService;
 import com.ruoyi.system.mapper.SysUserMapper;
@@ -42,6 +44,8 @@ public class ProjectTaskServiceImpl   implements ProjectTaskService {
     private Validator validator;
     @Autowired
     private SysUserMapper userMapper;
+    @Autowired
+    private ProjectStaffRecordMapper projectStaffRecordMapper;
 
     @Override
     public AjaxResult addProjectTask(ProjectTask projectTask) {
@@ -67,7 +71,7 @@ public class ProjectTaskServiceImpl   implements ProjectTaskService {
 
         if (projectTask!=null){
             BeanUtils.copyBeanProp(out, projectTask);
-            List<ProjectStaff> projectStaffs = projectStaffMapper.selectBypid(id);
+            List<ProjectStaff> projectStaffs = projectStaffMapper.selectByPid(id);
             if (!projectStaffs.isEmpty())out.setList(projectStaffs);
             return AjaxResult.success(out);
         }
@@ -77,18 +81,24 @@ public class ProjectTaskServiceImpl   implements ProjectTaskService {
     @Override
     public List<ProjectTaskListOut> list(ProjectListInput in) {
         pushRoleType(in);
-        in.setUid(SecurityUtils.getUserId());
-        Long companyId = deptService.selectCompanyByDeptId();
-        if (companyId!=null)in.setCompanyId(companyId);
+        if (!SecurityUtils.isSuperAdmin()){
+            in.setUid(SecurityUtils.getUserId());
+            Long companyId = deptService.selectCompanyByDeptId();
+            if (companyId!=null)in.setCompanyId(companyId);
+        }
         if (in.getEndTime()!=null)in.setEndTime(in.getEndTime()+" 23:59:59");
         return projectTaskMapper.selectList(in);
     }
 
     private void pushRoleType(ProjectListInput in) {
-        if (in.getRoleType()==null)in.setRoleType(0);
         if (SecurityUtils.hashRoles(UserRolesType.CEO.getCode())){
             in.setRoleType(1);
+        }else if (SecurityUtils.hashRoles(UserRolesType.ADMIN.getCode())){
+            in.setRoleType(3);
+        }else if (SecurityUtils.hashRoles(UserRolesType.MANAGE.getCode())){
+            in.setRoleType(2);
         }
+        if (in.getRoleType()==null)in.setRoleType(0);
     }
 
 
@@ -111,11 +121,29 @@ public class ProjectTaskServiceImpl   implements ProjectTaskService {
                 ProjectTask projectTask = projectTaskMapper.selectByPrimaryKey(p.getId());
                 if (StringUtils.isNull(projectTask)){
                     BeanValidators.validateWithException(validator, projectTask);
+                    if(p.getStaffName()!=null) {
+                        String[] split = p.getStaffName().split(",");
+                        for (String s : split) {
+                            ProjectStaff newPs = new ProjectStaff();
+                            SysUser sysUser = userMapper.selectByNikeName(s);
+                            if (sysUser == null) {
+                                successMsg.append("<br/>" + successNum + "、项目: " + p.getName() + " 更新失败,[" + s + "]不存在");
+                                throw new RuntimeException();
+                            }
+                            newPs.setAid(sysUser.getUserId());
+                            newPs.setName(sysUser.getNickName());
+                            newPs.setPid(p.getId());
+                            projectStaffMapper.insertSelective(newPs);
+                        }
+                    }
                     projectTaskMapper.insertSelective(projectTask);
                     successNum++;
                     successMsg.append("<br/>" + successNum + "、项目: " + projectTask.getName() + " 导入成功");
                 }else if (isUpdateSupport){
                     BeanValidators.validateWithException(validator, p);
+                    if(p.getStaffName()!=null) {
+                        addStaffAndDelete(successNum, successMsg, p);
+                    }
                     projectTaskMapper.updateByPrimaryKeySelective(p);
                     successNum++;
                     successMsg.append("<br/>" + successNum + "、项目: " + projectTask.getName() + " 更新成功");
@@ -146,5 +174,57 @@ public class ProjectTaskServiceImpl   implements ProjectTaskService {
         return successMsg.toString();
     }
 
+    private void addStaffAndDelete(int successNum, StringBuilder successMsg, ProjectTaskListOut p) {
+        String[] split = p.getStaffName().split(",");
+        List<ProjectStaff> projectStaffs = projectStaffMapper.selectByPid(p.getId());
+        addStaff(successNum, successMsg, p, split, projectStaffs);
+        deleteStaff(successNum, successMsg, p, split, projectStaffs);
+    }
+
+    private void deleteStaff(int successNum, StringBuilder successMsg, ProjectTaskListOut p, String[] split, List<ProjectStaff> projectStaffs) {
+        //预设需要删除,如果找到相同名字的就无需删除
+        for (ProjectStaff ps : projectStaffs) {
+            boolean flag = true;
+            for (String s : split) {
+                if (ps.getName().equals(s)) {
+                    flag = false;
+                }
+            }
+            if (flag) {
+                int sum = projectStaffRecordMapper.selectById(ps.getId());
+                if (sum > 0) {
+                    successMsg.append("<br/>" + successNum + "、项目: " + p.getName() + " 更新失败,[" + ps.getName() + "]存在打卡不能删除");
+                    throw new RuntimeException();
+                }
+                projectStaffMapper.deleteByPrimaryKey(ps.getId());
+            }
+
+        }
+    }
+
+    private void addStaff(int successNum, StringBuilder successMsg, ProjectTaskListOut p, String[] split, List<ProjectStaff> projectStaffs) {
+        for (String s : split) {
+            boolean flag = true;
+            for (ProjectStaff ps : projectStaffs) {
+                if (ps.getName().equals(s)) {
+                    flag = false;
+                }
+            }
+            if (flag) {
+                ProjectStaff newPs = new ProjectStaff();
+                SysUser sysUser = userMapper.selectByNikeName(s);
+                if (sysUser == null) {
+                    successMsg.append("<br/>" + successNum + "、项目: " + p.getName() + " 更新失败,[" + s + "]不存在");
+                    throw new RuntimeException();
+                }
+                newPs.setAid(sysUser.getUserId());
+                newPs.setName(sysUser.getNickName());
+                newPs.setPid(p.getId());
+                projectStaffMapper.insertSelective(newPs);
+            }
+
+        }
+    }
+
 
 }

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java

@@ -136,4 +136,6 @@ public interface SysUserMapper
     void updateUserProjectSum(@Param("aid") Long aid, @Param("type") Integer type);
 
     SysUser checkJobNumber(String jobNumber);
+
+    SysUser selectByNikeName(String nikeName);
 }

+ 2 - 1
ruoyi-system/src/main/resources/mapper/project/ProjectStaffMapper.xml

@@ -103,10 +103,11 @@
     where pid = #{pid}
   </delete>
 
-  <select id="selectBypid" parameterType="java.lang.Long" resultMap="BaseResultMap">
+  <select id="selectByPid" parameterType="java.lang.Long" resultMap="BaseResultMap">
   select
   <include refid="Base_Column_List" />
   from project_staff
   where pid = #{pid}
   </select>
+
 </mapper>

+ 6 - 1
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -316,9 +316,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		from sys_user a left join sys_user b on a.superior_id=b.user_id
 		where a.user_id=#{aid}
 	</select>
+    <select id="selectByNikeName" resultType="com.ruoyi.common.core.domain.entity.SysUser">
+		select b.user_id userId, b.user_name userName,b.nick_name nickName,b.open_id openId
+		from sys_user a left join sys_user b on a.superior_id=b.user_id
+		where a.nick_name = #{nickName}
+	</select>
 
 
-	<update id="userAddDuration">
+    <update id="userAddDuration">
 		update sys_user set duration = duration+#{duration}
 		where user_id = #{userId}
 	</update>