ソースを参照

项目关联部门功能

zhouyy 3 ヶ月 前
コミット
5c6028281a

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

@@ -202,11 +202,13 @@ public class ProjectController {
                                    String plate7,
                                    String plate8,
                                    String plate9,
-                                   String plate10) {
+                                   String plate10,
+                                   @RequestParam(required = false,value = "deptIds") String deptIds) {
         return projectService.editProject(id, name, code, userId, inchargerId, isPublic, planStartDate, planEndDate, level, contractAmount,changeContractReason,
                 projectBaseCostData,projectKeyNodesData,
                  budget,customerId,chosenLeaders, associateDegrees, associateDegreeNames,
-                taskGpIncharge,auditUserIds, ccUserIds, category, projectDesc,projectMainId, providerIds, providerNames, request,projectSeparate,outputValue,deptId,onlyChangeParticipate,buId,manDay,manDayStartDate,reviwerId, plate1,plate2,plate3,plate4,plate5,plate6,plate7,plate8,plate9,plate10);
+                taskGpIncharge,auditUserIds, ccUserIds, category, projectDesc,projectMainId, providerIds, providerNames, request,projectSeparate,outputValue,deptId,onlyChangeParticipate,buId,manDay,manDayStartDate,reviwerId, plate1,plate2,plate3,plate4,plate5,plate6,plate7,plate8,plate9,plate10
+        ,deptIds);
     }
 
     @RequestMapping("/adjustBase")

+ 28 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectDeptRelate.java

@@ -0,0 +1,28 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ProjectDeptRelate extends Model<ProjectDeptRelate> {
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 项目表主键
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    @TableField(value = "department_id")
+    private Integer departmentId;
+}

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

@@ -22,4 +22,6 @@ public interface ParticipationMapper extends BaseMapper<Participation> {
     List<ParticipationUser> getAllParticipator(@Param("projectIdList") List<Integer> projectIdList, Integer companyId);
 
     void deleteBatchByUserId(@Param("userIds") List<String> userIds);
+
+    void insertBatch(@Param("toAddList") List<Participation> toAddList);
 }

+ 11 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectDeptRelateMapper.java

@@ -0,0 +1,11 @@
+package com.management.platform.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.management.platform.entity.ProjectDeptRelate;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ProjectDeptRelateMapper  extends BaseMapper<ProjectDeptRelate> {
+    void insertBatch(@Param("projectId") Integer projectId,@Param("deptList") List<String> deptList);
+}

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

@@ -1,7 +1,6 @@
 package com.management.platform.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.management.platform.entity.ProFunWorkContext;
 import com.management.platform.entity.Project;
 import com.management.platform.entity.ProjectSeparate;
 import com.management.platform.entity.vo.OvertimeListVO;
@@ -61,7 +60,8 @@ public interface ProjectService extends IService<Project> {
                             String plate7,
                             String plate8,
                             String plate9,
-                            String plate10);
+                            String plate10,
+                            String deptIds);
 
     HttpRespMsg deleteProject(Integer id, Integer force);
 

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

@@ -255,6 +255,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     @Resource
     private TaskExecutorService taskExecutorService;
 
+    @Resource
+    private ProjectDeptRelateMapper projectDeptRelateMapper;
+
     @Value(value = "${upload.path}")
     private String path;
     @Value("${configEnv.isDev}")
@@ -1662,7 +1665,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                    String plate7,
                                    String plate8,
                                    String plate9,
-                                   String plate10) {
+                                   String plate10,
+                                   String deptIds) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
@@ -2292,6 +2296,23 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 projectMapper.cleanPublicProjectData(id);
             }
         }
+        //250214新需求:添加项目部门关联关系
+        if(org.apache.commons.lang3.StringUtils.isNotBlank(deptIds)){
+            List<String> deptList = null;
+            try {
+                deptList = Arrays.asList(deptIds.split(","));
+            } catch (Exception e) {
+                httpRespMsg.setError("部门解析失败");
+                return httpRespMsg;
+            }
+            projectDeptRelateMapper.delete(new LambdaQueryWrapper<ProjectDeptRelate>()
+                    .eq(ProjectDeptRelate::getProjectId,id)
+            );
+            if(CollectionUtils.isNotEmpty(deptList)){
+                projectDeptRelateMapper.insertBatch(id,deptList);
+            }
+
+        }
         return httpRespMsg;
     }
 

+ 43 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -21,6 +21,7 @@ import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.usermodel.XSSFCell;
@@ -218,6 +219,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     @Resource
     private UserReportDeptService userReportDeptService;
 
+    @Resource
+    private ProjectDeptRelateMapper projectDeptRelateMapper;
+
     @Resource
     private LdapTemplate ldapTemplate;
     @Resource
@@ -1434,6 +1438,22 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                             });
                             userReportDeptService.saveBatch(userReportDeptList);
                         }
+                        //新增用户,查看项目部门关联表,若存在有直属部门,直接加入
+                        if(null != departmentId && 0 != departmentId){
+                            List<ProjectDeptRelate> projectDeptRelates = projectDeptRelateMapper.selectList(new LambdaQueryWrapper<ProjectDeptRelate>()
+                                    .eq(ProjectDeptRelate::getDepartmentId, departmentId)
+                            );
+                            if(CollectionUtils.isNotEmpty(projectDeptRelates)){
+                                List<Participation> toAddList = new ArrayList<>(projectDeptRelates.size());
+                                for (ProjectDeptRelate relate : projectDeptRelates) {
+                                    Participation participation = new Participation();
+                                    participation.setProjectId(relate.getProjectId());
+                                    participation.setUserId(String.valueOf(id));
+                                    toAddList.add(participation);
+                                }
+                                participationMapper.insertBatch(toAddList);
+                            }
+                        }
                     }
                 }
             } else {
@@ -1473,6 +1493,29 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     superiorChange = true;
                 }
 
+                //更新操作,判断前后部门是否变化,有变化则删除原部门关联项目下的该用户,新增到新部门关联的项目下
+                if(oldUser.getDepartmentId() != (departmentId == null ? 0 : departmentId)){
+                    List<ProjectDeptRelate> oldProjectDeptRelates = projectDeptRelateMapper.selectList(new LambdaQueryWrapper<ProjectDeptRelate>()
+                            .eq(ProjectDeptRelate::getDepartmentId, oldUser.getDepartmentId())
+                    );
+                    List<ProjectDeptRelate> newProjectDeptRelates = projectDeptRelateMapper.selectList(new LambdaQueryWrapper<ProjectDeptRelate>()
+                            .eq(ProjectDeptRelate::getDepartmentId, departmentId)
+                    );
+                    List<Integer> originalProjectIds = oldProjectDeptRelates.stream().map(ProjectDeptRelate::getProjectId).collect(Collectors.toList());
+                    participationMapper.delete(new LambdaQueryWrapper<Participation>()
+                            .eq(Participation::getUserId,targetId)
+                            .in(Participation::getProjectId,originalProjectIds)
+                    );
+                    List<Participation> toAddList = new ArrayList<>(newProjectDeptRelates.size());
+                    for (ProjectDeptRelate relate : newProjectDeptRelates) {
+                        Participation participation = new Participation();
+                        participation.setProjectId(relate.getProjectId());
+                        participation.setUserId(targetId);
+                        toAddList.add(participation);
+                    }
+                    participationMapper.insertBatch(toAddList);
+                }
+
                 userMapper.updateById(oldUser
                         .setName(name)
                         .setPhone(phone)

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

@@ -13,6 +13,12 @@
     <sql id="Base_Column_List">
         id, user_id, project_id
     </sql>
+    <insert id="insertBatch">
+        insert into participation(user_id, project_id) VALUES
+        <foreach collection="toAddList" item="participation" separator=",">
+           (#{participation.userId},#{participation.projectId})
+        </foreach>
+    </insert>
     <delete id="deleteBatchByUserId">
         delete from participation where user_id in
         <foreach collection="userIds" item="userId" separator="," open="(" close=")">

+ 12 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectDeptRelateMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.management.platform.mapper.ProjectDeptRelateMapper">
+
+    <insert id="insertBatch">
+        insert into project_dept_relate(project_id, department_id) VALUES
+        <foreach collection="deptList" item="deptId" separator=",">
+            (#{projectId},#{deptId})
+        </foreach>
+    </insert>
+</mapper>