Selaa lähdekoodia

创建用户时关联岗位职责表

wy 5 kuukautta sitten
vanhempi
sitoutus
e54c4f5e9a
18 muutettua tiedostoa jossa 605 lisäystä ja 48 poistoa
  1. 1 0
      ibps-api-root/modules/api-org/src/main/java/com/lc/ibps/api/org/constant/PartyRelType.java
  2. 1 0
      ibps-api-root/modules/api-org/src/main/java/com/lc/ibps/api/org/constant/PartyType.java
  3. 17 0
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/builder/PartyPositionUserBuilder.java
  4. 54 42
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/domain/PartyEmployee.java
  5. 44 0
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/domain/PartyPoUs.java
  6. 8 0
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/persistence/dao/PartyPositionUserDao.java
  7. 9 0
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/persistence/dao/PartyPositionUserQueryDao.java
  8. 16 0
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/persistence/dao/impl/PartyPositionUserDaoImpl.java
  9. 15 0
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/persistence/dao/impl/PartyPositionUserQueryDaoImpl.java
  10. 30 0
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/repository/PartyPositionUserRepository.java
  11. 96 0
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/repository/impl/PartyPositionUserRepositoryImpl.java
  12. 25 0
      ibps-model-root/modules/org-model/src/main/java/com/lc/ibps/org/party/persistence/entity/PartyPositionUserPo.java
  13. 105 0
      ibps-model-root/modules/org-model/src/main/java/com/lc/ibps/org/party/persistence/entity/PartyPositionUserTbl.java
  14. 11 3
      ibps-model-root/modules/org-model/src/main/java/com/lc/ibps/org/party/persistence/vo/PartyEmployeeVo.java
  15. 125 0
      ibps-model-root/modules/org-model/src/main/resources/com/lc/ibps/org/party/persistence/mapping/PartyPositionUser.map.xml
  16. 6 0
      ibps-provider-base-root/modules/provider-platform-api/src/main/java/com/lc/ibps/org/api/IPartyPositionService.java
  17. 17 2
      ibps-provider-root/modules/provider-platform-default/src/main/java/com/lc/ibps/org/provider/PartyEmployeeProvider.java
  18. 25 1
      ibps-provider-root/modules/provider-platform-default/src/main/java/com/lc/ibps/org/provider/PartyPositionProvider.java

+ 1 - 0
ibps-api-root/modules/api-org/src/main/java/com/lc/ibps/api/org/constant/PartyRelType.java

@@ -28,6 +28,7 @@ public enum PartyRelType /*implements BaseEnum*/ {
 	,ORG_MANAGER("orgManager", "组织负责人", PartyType.ORG.getValue(), PartyType.EMPLOYEE.getValue())
 	,PRINCIPAL("principal", "主负责人", PartyType.POSITION.getValue(), PartyType.EMPLOYEE.getValue())
 	,MAIN_POST("mainPost", "主岗位", PartyType.POSITION.getValue(), PartyType.EMPLOYEE.getValue())
+	,MAIN_RESP("mainResp", "主岗位", PartyType.RESPONSIBILITY.getValue(), PartyType.EMPLOYEE.getValue())
 	
 	,ROLE_ASSIGNABLE("roleAssignable", "可分配角色", "party", PartyType.ROLE.getValue())
 	

+ 1 - 0
ibps-api-root/modules/api-org/src/main/java/com/lc/ibps/api/org/constant/PartyType.java

@@ -22,6 +22,7 @@ public enum PartyType /*implements BaseEnum*/ {
 
 	ORG("org","机构")
 	,POSITION("position","岗位")
+	,RESPONSIBILITY(" responsibility","职责")
 	,EMPLOYEE("employee","员工") 
 	,ROLE("role","角色")
 	,GROUP("group","用户组")

+ 17 - 0
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/builder/PartyPositionUserBuilder.java

@@ -0,0 +1,17 @@
+package com.lc.ibps.org.party.builder;
+
+import com.lc.ibps.base.framework.id.UniqueIdUtil;
+import com.lc.ibps.org.party.persistence.entity.PartyPositionUserPo;
+public class PartyPositionUserBuilder {
+
+    public static PartyPositionUserPo build(String userId,PartyPositionUserPo PartyPositionUserPo){
+        PartyPositionUserPo poUser = new PartyPositionUserPo();
+        String relid = UniqueIdUtil.getId();
+        poUser.setId(relid);
+        poUser.setPositionName(PartyPositionUserPo.getPositionName());
+        poUser.setPositionType(PartyPositionUserPo.getPositionType());
+        poUser.setUserId(userId);
+        poUser.setDataType(PartyPositionUserPo.getDataType());
+        return poUser;
+    }
+}

+ 54 - 42
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/domain/PartyEmployee.java

@@ -11,6 +11,10 @@ import java.util.function.Function;
 import javax.annotation.Resource;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.lc.ibps.org.party.builder.PartyPositionUserBuilder;
+import com.lc.ibps.org.party.persistence.entity.*;
+import com.lc.ibps.org.party.persistence.vo.*;
+import com.lc.ibps.org.party.repository.*;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Scope;
 import org.springframework.transaction.annotation.Transactional;
@@ -48,34 +52,6 @@ import com.lc.ibps.org.party.builder.PartyEntityBuilder;
 import com.lc.ibps.org.party.builder.PartyRelBuilder;
 import com.lc.ibps.org.party.persistence.dao.PartyEmployeeDao;
 import com.lc.ibps.org.party.persistence.dao.PartyEmployeeQueryDao;
-import com.lc.ibps.org.party.persistence.entity.PartyAttrValuePo;
-import com.lc.ibps.org.party.persistence.entity.PartyEmployeePo;
-import com.lc.ibps.org.party.persistence.entity.PartyEntityPo;
-import com.lc.ibps.org.party.persistence.entity.PartyOrgPo;
-import com.lc.ibps.org.party.persistence.entity.PartyPositionPo;
-import com.lc.ibps.org.party.persistence.entity.PartyRelPo;
-import com.lc.ibps.org.party.persistence.entity.PartyUniquePo;
-import com.lc.ibps.org.party.persistence.entity.PartyUserGroupPo;
-import com.lc.ibps.org.party.persistence.entity.PartyUserLimitPo;
-import com.lc.ibps.org.party.persistence.entity.PartyUserPo;
-import com.lc.ibps.org.party.persistence.entity.PartyUserRolePo;
-import com.lc.ibps.org.party.persistence.vo.PartyAttrValueVo;
-import com.lc.ibps.org.party.persistence.vo.PartyEmployeeVo;
-import com.lc.ibps.org.party.persistence.vo.PartyPositionVo;
-import com.lc.ibps.org.party.persistence.vo.PartyRoleVo;
-import com.lc.ibps.org.party.persistence.vo.TenantUserRelationVo;
-import com.lc.ibps.org.party.repository.PartyAttrValueRepository;
-import com.lc.ibps.org.party.repository.PartyEmployeeRepository;
-import com.lc.ibps.org.party.repository.PartyEntityRepository;
-import com.lc.ibps.org.party.repository.PartyGroupRepository;
-import com.lc.ibps.org.party.repository.PartyOrgRepository;
-import com.lc.ibps.org.party.repository.PartyPositionRepository;
-import com.lc.ibps.org.party.repository.PartyRelRepository;
-import com.lc.ibps.org.party.repository.PartyUniqueRepository;
-import com.lc.ibps.org.party.repository.PartyUserGroupRepository;
-import com.lc.ibps.org.party.repository.PartyUserLimitRepository;
-import com.lc.ibps.org.party.repository.PartyUserRepository;
-import com.lc.ibps.org.party.repository.PartyUserRoleRepository;
 import com.lc.ibps.org.spi.SpiUserService;
 import com.lc.ibps.org.spi.SpiUserServiceUtil;
 
@@ -109,6 +85,9 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
     @Resource
     @Lazy
     private  PartyPositionRepository partyPositionRepository;
+	@Resource
+	@Lazy
+	private PartyPositionUserRepository partyPositionUserRepository;
     @Resource
     @Lazy
     private PartyUserLimitRepository partyUserLimitRepository;
@@ -514,6 +493,7 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 	public void createByCascade(PartyEmployeeVo vo){
 		getData().setId(UniqueIdUtil.getId());
 		assignPosition(vo.getPositionVoList());
+		assignResponsibility(vo.getPartyPositionUser());
 		create();
 		createUser(vo.getUser());
 		// 用户角色关系需要保证角色、用户id都存在,必须先创建用户
@@ -528,6 +508,7 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 	 */
 	public void updateByCascade(PartyEmployeeVo vo){
 		assignPosition(vo.getPositionVoList());
+		assignResponsibility(vo.getPartyPositionUser());
 		update();
 		updateUser(vo.getUser());
 		// 用户角色关系需要保证角色、用户id都存在,必须先创建用户
@@ -563,8 +544,8 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 	/**
 	 * 添加员工岗位信息、保存员工与岗位关系(主岗位、主负责人)
 	 *
-	 * @param posId
-	 * @param employeeList
+	 * @paramposId
+	 * @paramemployeeList
 	 */
 	private void addPositionInfo(PartyEmployeePo data, String userId, String[] posIds) {
 		// 更新员工岗位信息
@@ -590,7 +571,7 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 	 * 岗位添加员工
 	 *
 	 * @param posId
-	 * @param employeeList
+	 * @paramemployeeList
 	 */
 	public void addUsertoPos(String posId, String[] userIds) {
 		for(String userId : userIds){
@@ -655,7 +636,7 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 	 * 添加员工组织信息
 	 *
 	 * @param orgId
-	 * @param userJsonArr 
+	 * @paramuserJsonArr
 	 */
 	public void addOrgInfo(String orgId, String[] aryIds) {
 		for(String userId : aryIds){
@@ -806,7 +787,7 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 	/**
 	 * 添加用户岗位
 	 *
-	 * @param id
+	 * @paramid
 	 * @param posIds 
 	 */
 	public void addPosition(String userId, String posIds) {
@@ -820,7 +801,7 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 	/**
 	 * 添加用户组织
 	 *
-	 * @param id
+	 * @paramid
 	 * @param orgId 
 	 */
 	public void addOrg(String userId, String orgId) {
@@ -883,7 +864,7 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 	/**
 	 * 删除员工岗位信息
 	 *
-	 * @param id
+	 * @paramid
 	 * @param posIds
 	 */
 	public void removePosInfo(String userId, String posIds) {
@@ -924,7 +905,7 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 	/**
 	 * 删除员工组织信息、保存默认员工-角色
 	 *
-	 * @param id
+	 * @paramid
 	 * @param orgId 
 	 */
 	public void removeOrgInfo(String userId, String orgId) {
@@ -1026,6 +1007,18 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 		// 添加用户岗位信息
 		assignUserPosRel(po.getId(), positionVoList);
 	}
+	/**
+	 * 添加员工职责
+	 *
+	 */
+	private void assignResponsibility(List<PartyPositionUserPo> responsibilityVoList){
+		if(BeanUtils.isEmpty(responsibilityVoList)) {
+			return;
+		}
+		PartyEmployeePo po = getData();
+		// 添加用户岗位信息
+		assignUserRespRel(po.getId(), responsibilityVoList);
+	}
 	
 	/**
 	 * 添加用户角色
@@ -1070,7 +1063,7 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 	 * 添加用户岗位关系
 	 *
 	 * @param userId
-	 * @param posJsonArr 
+	 * @paramposJsonArr
 	 */
 	private void assignUserPosRel(String userId, List<PartyPositionVo> positionVoList) {
 		StringBuilder posIds = new StringBuilder();
@@ -1104,12 +1097,31 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 		}
 		addPosition(userId, posIds.toString());
 	}
+
+	/**
+	 * 添加用户岗位关系
+	 *
+	 * @param userId
+	 * @param
+	 */
+	private void assignUserRespRel(String userId, List<PartyPositionUserPo> responsibilityVoList) {
+		StringBuilder posNames = new StringBuilder();
+		//进入这里标识一定有岗位数据
+		//直接删除原来的岗位,再add新的就可以不需要考虑id,应为是通过名称来决定数据的唯一性
+		partyPositionUserRepository.deleteByUserId(userId);
+		//删除后重新开始add
+		for(PartyPositionUserPo partyPositionUser : responsibilityVoList){
+			//初始参与属性对象空对象
+			partyPositionUser = PartyPositionUserBuilder.build(userId,partyPositionUser);
+			partyPositionUserRepository.newInstance(partyPositionUser).create();
+		}
+	}
 	
 	/**
 	 * 添加用户角色关系
 	 *
-	 * @param userId
-	 * @param roleJsonArr 
+	 * @paramuserId
+	 * @paramroleJsonArr
 	 */
 	private void assignUserRoleRel(List<PartyRoleVo> roleVoList, boolean isReSet) {
 		PartyEmployeePo po = getData();
@@ -1236,8 +1248,8 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 	 * 禁用用户
 	 *
 	 * @param ids
-	 * @param lockMode
-	 * @param time 
+	 * @paramlockMode
+	 * @paramtime
 	 */
 	public void disable(String ids) {
 		String[] idArr = ids.split(StringPool.COMMA);
@@ -1324,7 +1336,7 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 	/**
 	 * 锁定用户
 	 *
-	 * @param ids
+	 * @paramids
 	 * @param lockMode
 	 * @param time 
 	 */

+ 44 - 0
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/domain/PartyPoUs.java

@@ -0,0 +1,44 @@
+package com.lc.ibps.org.party.domain;
+
+import com.lc.ibps.api.base.constants.CacheKeyConstants;
+import com.lc.ibps.base.framework.domain.AbstractDomain;
+import com.lc.ibps.base.framework.persistence.dao.IDao;
+import com.lc.ibps.base.framework.persistence.dao.IQueryDao;
+import com.lc.ibps.org.party.persistence.dao.PartyPositionUserDao;
+import com.lc.ibps.org.party.persistence.dao.PartyPositionUserQueryDao;
+import com.lc.ibps.org.party.persistence.entity.PartyPositionUserPo;
+import org.springframework.context.annotation.Scope;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+
+@Transactional
+@Scope("prototype")
+public class PartyPoUs extends AbstractDomain<String, PartyPositionUserPo> {
+
+
+    @Resource
+    private PartyPositionUserDao partyPositionUserDao;
+    @Resource
+    private PartyPositionUserQueryDao partyPositionUserQueryDao;
+
+    @Override
+    protected void init() {
+    }
+
+
+    @Override
+    protected IDao<String, PartyPositionUserPo> getInternalDao() {
+        return partyPositionUserDao;
+    }
+
+    @Override
+    protected IQueryDao<String, PartyPositionUserPo> getInternalQueryDao() {
+        return partyPositionUserQueryDao;
+    }
+
+    @Override
+    public String getInternalCacheName() {
+        return CacheKeyConstants.Region.REGION_IBPS_PARTY;
+    }
+}

+ 8 - 0
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/persistence/dao/PartyPositionUserDao.java

@@ -0,0 +1,8 @@
+package com.lc.ibps.org.party.persistence.dao;
+
+import com.lc.ibps.base.framework.persistence.dao.IDao;
+import com.lc.ibps.org.party.persistence.entity.PartyPositionUserPo;
+
+public interface PartyPositionUserDao extends IDao<String, PartyPositionUserPo> {
+
+}

+ 9 - 0
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/persistence/dao/PartyPositionUserQueryDao.java

@@ -0,0 +1,9 @@
+package com.lc.ibps.org.party.persistence.dao;
+
+import com.lc.ibps.base.framework.persistence.dao.IQueryDao;
+import com.lc.ibps.org.party.persistence.entity.PartyPositionUserPo;
+
+public interface PartyPositionUserQueryDao extends IQueryDao<String, PartyPositionUserPo> {
+
+
+}

+ 16 - 0
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/persistence/dao/impl/PartyPositionUserDaoImpl.java

@@ -0,0 +1,16 @@
+package com.lc.ibps.org.party.persistence.dao.impl;
+
+import com.lc.ibps.base.db.ddd.dao.MyBatisDaoImpl;
+import com.lc.ibps.org.party.persistence.dao.PartyPositionUserDao;
+import com.lc.ibps.org.party.persistence.entity.PartyPositionUserPo;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class PartyPositionUserDaoImpl extends MyBatisDaoImpl<String, PartyPositionUserPo> implements PartyPositionUserDao {
+
+    @Override
+    public String getNamespace() {
+        return PartyPositionUserPo.class.getName();
+    }
+
+}

+ 15 - 0
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/persistence/dao/impl/PartyPositionUserQueryDaoImpl.java

@@ -0,0 +1,15 @@
+package com.lc.ibps.org.party.persistence.dao.impl;
+
+import com.lc.ibps.base.db.ddd.dao.MyBatisQueryDaoImpl;
+import com.lc.ibps.org.party.persistence.dao.PartyPositionUserQueryDao;
+import com.lc.ibps.org.party.persistence.entity.PartyPositionUserPo;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class PartyPositionUserQueryDaoImpl extends MyBatisQueryDaoImpl<String, PartyPositionUserPo> implements PartyPositionUserQueryDao {
+
+    @Override
+    public String getNamespace() {
+        return PartyPositionUserPo.class.getName();
+    }
+}

+ 30 - 0
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/repository/PartyPositionUserRepository.java

@@ -0,0 +1,30 @@
+package com.lc.ibps.org.party.repository;
+
+import com.lc.ibps.api.base.page.Page;
+import com.lc.ibps.api.org.constant.PartyType;
+import com.lc.ibps.base.framework.repository.AbstractRepository;
+import com.lc.ibps.base.framework.repository.IRepository;
+import com.lc.ibps.org.party.domain.PartyPoUs;
+import com.lc.ibps.org.party.domain.PartyRel;
+import com.lc.ibps.org.party.persistence.entity.PartyPositionUserPo;
+import com.lc.ibps.org.party.persistence.entity.PartyRelPo;
+
+import java.util.List;
+
+public interface PartyPositionUserRepository extends IRepository<String, PartyPositionUserPo, PartyPoUs> {
+
+    List<PartyPositionUserPo> getByUserAndPositionId(String id);
+
+    List<PartyPositionUserPo> queryWithRespById(String subPid , Page page);
+
+    List<PartyPositionUserPo> queryWithRespByIds(String subPid);
+
+    PartyPositionUserPo getByIdPositionTypeUser(String positionName, PartyType positionType, String userId);
+
+    void deleteByUserId(String userId);
+
+    public void remoBySubId(String ids);
+
+
+    List<PartyPositionUserPo> selectAll(String diDian);
+}

+ 96 - 0
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/repository/impl/PartyPositionUserRepositoryImpl.java

@@ -0,0 +1,96 @@
+package com.lc.ibps.org.party.repository.impl;
+
+import com.lc.ibps.api.base.constants.CacheKeyConstants;
+import com.lc.ibps.api.base.page.Page;
+import com.lc.ibps.api.org.constant.PartyType;
+import com.lc.ibps.base.core.util.AppUtil;
+import com.lc.ibps.base.core.util.BeanUtils;
+import com.lc.ibps.base.framework.persistence.dao.IQueryDao;
+import com.lc.ibps.base.framework.repository.AbstractRepository;
+import com.lc.ibps.org.party.domain.PartyPoUs;
+import com.lc.ibps.org.party.persistence.dao.PartyPositionUserQueryDao;
+import com.lc.ibps.org.party.persistence.entity.PartyPositionUserPo;
+import com.lc.ibps.org.party.repository.PartyPositionUserRepository;
+import org.springframework.stereotype.Repository;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Repository
+public class PartyPositionUserRepositoryImpl extends AbstractRepository<String, PartyPositionUserPo, PartyPoUs> implements PartyPositionUserRepository {
+
+    @Resource
+    PartyPositionUserQueryDao partyPositionUserQueryDao;
+
+    @Override
+    public String getInternalCacheName() {
+        return CacheKeyConstants.Region.REGION_IBPS_PARTY;
+    }
+
+    @Override
+    protected IQueryDao<String, PartyPositionUserPo> getQueryDao() {
+        return partyPositionUserQueryDao;
+    }
+
+    @Override
+    public List<PartyPositionUserPo> getByUserAndPositionId(String id) {
+        return findByKey("getByUserAndPositionId","getByUserAndPositionId", b().a("userId", id).p());
+    }
+
+    @Override
+    public List<PartyPositionUserPo> queryWithRespById(String subPid, Page page) {
+        return null;
+    }
+
+    @Override
+    public List<PartyPositionUserPo> queryWithRespByIds(String userId) {
+        return findByKey("queryWithRespByIds","queryWithRespByIds",b().a("userId",userId).p());
+    }
+
+    /**
+     * 依据id 类型  用户查找是否有主职责的数据
+     * @param id
+     * @param positionType
+     * @param userId
+     * @return
+     */
+    @Override
+    public PartyPositionUserPo getByIdPositionTypeUser(String positionName, PartyType positionType, String userId){
+        PartyPositionUserPo partyPositionUserPo = partyPositionUserQueryDao.getByKey("getByIdPositionTypeUser",
+                b().a("positionName", positionName).a("positionType", positionType.getValue()).a("userId", userId).p());
+        return BeanUtils.isNotEmpty(partyPositionUserPo) ? partyPositionUserPo :null;
+    }
+
+    @Override
+    public void deleteByUserId(String userId) {
+        findByKey("deleteByUserId", "deleteByUserId",
+                b().a("userId", userId).p());
+    }
+
+    @Override
+    public void remoBySubId(String ids) {
+        findByKey("remoBySubId", "remoBySubId",
+                b().a("ids", ids).p());
+    }
+
+    @Override
+    public List<PartyPositionUserPo> selectAll(String diDian) {
+        List<PartyPositionUserPo> pos = findByKey("selectAll", "selectAll",b().a("diDian",diDian).p());
+        return pos;
+    }
+
+    @Override
+    public PartyPoUs newInstance() {
+        PartyPositionUserPo partyPositionUserPo = new PartyPositionUserPo();
+        PartyPoUs partyPoUs = AppUtil.getBean(PartyPoUs.class);
+        partyPoUs.setData(partyPositionUserPo);
+        return partyPoUs;
+    }
+
+    @Override
+    public PartyPoUs newInstance(PartyPositionUserPo po) {
+        PartyPoUs partyPoUs = AppUtil.getBean(PartyPoUs.class);
+        partyPoUs.setData(po);
+        return partyPoUs;
+    }
+}

+ 25 - 0
ibps-model-root/modules/org-model/src/main/java/com/lc/ibps/org/party/persistence/entity/PartyPositionUserPo.java

@@ -0,0 +1,25 @@
+package com.lc.ibps.org.party.persistence.entity;
+
+import com.lc.ibps.base.core.util.JacksonUtil;
+
+import java.util.Collections;
+import java.util.List;
+
+public class PartyPositionUserPo  extends PartyPositionUserTbl {
+
+    private static final long serialVersionUID = 8778223522468443608L;
+
+    public static PartyPositionUserPo fromJsonString(String data){
+        if(JacksonUtil.isNotJsonObject(data)){
+            return null;
+        }
+        return JacksonUtil.getDTO(data, PartyPositionUserPo.class);
+    }
+
+    public static List<PartyPositionUserPo> fromJsonArrayString(String listData){
+        if(JacksonUtil.isNotJsonArray(listData)){
+            return Collections.emptyList();
+        }
+        return JacksonUtil.getDTOList(listData, PartyPositionUserPo.class);
+    }
+}

+ 105 - 0
ibps-model-root/modules/org-model/src/main/java/com/lc/ibps/org/party/persistence/entity/PartyPositionUserTbl.java

@@ -0,0 +1,105 @@
+package com.lc.ibps.org.party.persistence.entity;
+
+import com.lc.ibps.base.framework.persistence.entity.AbstractPo;
+import io.swagger.annotations.ApiModelProperty;
+
+public class PartyPositionUserTbl extends AbstractPo<String> {
+
+    /**
+     * serialVersionUID:
+     */
+    private static final long serialVersionUID = -8443371133406553770L;
+    @ApiModelProperty(value = "id")
+    protected String id;/*用户账号对象*/
+    @ApiModelProperty(value = "职责id")
+    protected String positionId;/*用户账号对象*/
+    @ApiModelProperty(value = "职责名称")
+    protected String positionName;/*用户账号对象*/
+    @ApiModelProperty(value = "部门id")
+    protected String buMenId;/*用户账号对象*/
+    @ApiModelProperty(value = "部门名称")
+    protected String buMenName;/*用户账号对象*/
+    @ApiModelProperty(value = "用户id")
+    protected String userId;/*用户账号对象*/
+    @ApiModelProperty(value = "用户名称")
+    protected String userName;/*用户账号对象*/
+    @ApiModelProperty(value = "主岗位")
+    protected String positionType;/*用户账号对象*/
+    @ApiModelProperty(value = "数据类型")
+    protected String dataType;/*用户账号对象*/
+
+    public static void setData(PartyPositionUserPo partyPositionUserPo) {
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getPositionId() {
+        return positionId;
+    }
+
+    public void setPositionId(String positionId) {
+        this.positionId = positionId;
+    }
+
+    public String getPositionName() {
+        return positionName;
+    }
+
+    public void setPositionName(String positionName) {
+        this.positionName = positionName;
+    }
+
+    public String getBuMenId() {
+        return buMenId;
+    }
+
+    public void setBuMenId(String buMenId) {
+        this.buMenId = buMenId;
+    }
+
+    public String getBuMenName() {
+        return buMenName;
+    }
+
+    public void setBuMenName(String buMenName) {
+        this.buMenName = buMenName;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getPositionType() {
+        return positionType;
+    }
+
+    public void setPositionType(String positionType) {
+        this.positionType = positionType;
+    }
+
+    public String getDataType() {
+        return dataType;
+    }
+
+    public void setDataType(String dataType) {
+        this.dataType = dataType;
+    }
+}

+ 11 - 3
ibps-model-root/modules/org-model/src/main/java/com/lc/ibps/org/party/persistence/vo/PartyEmployeeVo.java

@@ -5,12 +5,10 @@ import java.util.List;
 
 import javax.validation.Valid;
 
+import com.lc.ibps.org.party.persistence.entity.*;
 import org.hibernate.validator.constraints.NotEmpty;
 
-import com.lc.ibps.org.party.persistence.entity.PartyEmployeePo;
 import com.lc.ibps.org.party.persistence.entity.PartyEntityTbl.ValidGroup.AddAttr;
-import com.lc.ibps.org.party.persistence.entity.PartyUserGroupPo;
-import com.lc.ibps.org.party.persistence.entity.PartyUserPo;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -46,6 +44,8 @@ public class PartyEmployeeVo implements Serializable {
 	protected List<PartyAttrValueVo> attrValueVoList;/*属性值vo对象列表*/
 	@ApiModelProperty(value = "用户组关系对象列表")
 	protected List<PartyUserGroupPo> userGroupPoList;/*用户组关系对象列表*/
+	@ApiModelProperty(value = "岗位职责关系VO对象列表")
+	protected List<PartyPositionUserPo> partyPositionUser;/*用户组关系对象列表*/
 	
 	public PartyEmployeePo getPartyEmployeePo() {
 		return partyEmployeePo;
@@ -83,4 +83,12 @@ public class PartyEmployeeVo implements Serializable {
 	public void setUserGroupPoList(List<PartyUserGroupPo> userGroupPoList) {
 		this.userGroupPoList = userGroupPoList;
 	}
+
+	public List<PartyPositionUserPo> getPartyPositionUser() {
+		return partyPositionUser;
+	}
+
+	public void setPartyPositionUser(List<PartyPositionUserPo> partyUserPosition) {
+		this.partyPositionUser = partyUserPosition;
+	}
 }

+ 125 - 0
ibps-model-root/modules/org-model/src/main/resources/com/lc/ibps/org/party/persistence/mapping/PartyPositionUser.map.xml

@@ -0,0 +1,125 @@
+<?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.lc.ibps.org.party.persistence.entity.PartyPositionUserPo">
+    <!--<cache type="net.oschina.j2cache.mybatis.J2CacheAdapter"/>-->
+    <resultMap id="PartyPositionUser" type="com.lc.ibps.org.party.persistence.entity.PartyPositionUserPo">
+        <id property="id" column="ID_" jdbcType="VARCHAR"/>
+        <result property="positionId" column="POSITION_ID_" jdbcType="VARCHAR"/>
+        <result property="positionName" column="POSITION_NAME_" jdbcType="VARCHAR"/>
+        <result property="buMenId" column="BU_MEN_ID_" jdbcType="VARCHAR"/>
+        <result property="buMenName" column="BU_MEN_NAME_" jdbcType="VARCHAR"/>
+        <result property="userId" column="USER_ID_" jdbcType="VARCHAR"/>
+        <result property="userName" column="USER_NAME_" jdbcType="VARCHAR"/>
+        <result property="positionType" column="POSITION_TYPE_" jdbcType="VARCHAR"/>
+        <result property="dataType" column="DATA_TYPE_" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="columns">
+        ID_,POSITION_ID_,POSITION_NAME_,BU_MEN_ID_,BU_MEN_NAME_,USER_ID_,USER_NAME_,POSITION_TYPE_,DATA_TYPE_
+    </sql>
+
+    <insert id="create" parameterType="com.lc.ibps.org.party.persistence.entity.PartyPositionUserTbl">
+        INSERT INTO IBPS_PARTY_POSITION_USERS
+        (ID_,POSITION_ID_,POSITION_NAME_,BU_MEN_ID_,BU_MEN_NAME_,USER_ID_,USER_NAME_,POSITION_TYPE_,DATA_TYPE_)
+        VALUES
+        (#{id,jdbcType=VARCHAR}, #{positionId,jdbcType=VARCHAR}, #{positionName,jdbcType=VARCHAR},
+         #{buMenId,jdbcType=VARCHAR}, #{buMenName,jdbcType=VARCHAR}, #{userId,jdbcType=VARCHAR},
+         #{userName,jdbcType=VARCHAR}, #{positionType,jdbcType=VARCHAR},#{dataType,jdbcType=VARCHAR})
+    </insert>
+
+    <select id="get"  parameterType="java.lang.String" resultMap="PartyPositionUser">
+        SELECT <include refid="columns"/> FROM IBPS_PARTY_POSITION_USERS
+        WHERE
+        ID_=#{id,jdbcType=VARCHAR}
+    </select>
+
+    <sql id="querySql">
+        SELECT <include refid="columns"/> FROM IBPS_PARTY_POSITION_USERS
+        <where>
+            <if test="@o.Ognl@isNotEmpty(whereSql)">
+                ${whereSql}
+            </if>
+        </where>
+        <if test="@o.Ognl@isNotEmpty(orderBySql)">
+            ORDER BY ${orderBySql}
+        </if>
+    </sql>
+
+    <select id="query" parameterType="java.util.Map" resultMap="PartyPositionUser">
+        <include refid="querySql"/>
+    </select>
+
+    <select id="queryIds" parameterType="java.util.Map" resultMap="PartyPositionUser">
+        SELECT ID_ FROM (<include refid="querySql"/>) T
+    </select>
+
+    <update id="update" parameterType="com.lc.ibps.org.party.persistence.entity.PartyRelPo">
+        UPDATE IBPS_PARTY_POSITION_USERS SET
+         POSITION_ID_=#{positionId,jdbcType=VARCHAR},
+         POSITION_NAME_=#{positionName,jdbcType=VARCHAR},
+         BU_MEN_ID_=#{buMenId,jdbcType=VARCHAR},
+         BU_MEN_NAME_=#{buMenName,jdbcType=VARCHAR},
+         USER_ID_=#{userId,jdbcType=VARCHAR},
+         USER_NAME_=#{userName,jdbcType=VARCHAR},
+         POSITION_TYPE_=#{positionType,jdbcType=VARCHAR},
+         DATA_TYPE_=#{dataType,jdbcType=VARCHAR}
+        WHERE
+        ID_=#{id,jdbcType=VARCHAR}
+    </update>
+
+    <delete id="remove" parameterType="java.lang.String">
+        DELETE FROM IBPS_PARTY_POSITION_USERS
+        WHERE
+        ID_=#{id,jdbcType=VARCHAR}
+    </delete>
+
+
+    <select id="getByIdPositionTypeUser" parameterType="java.util.Map" resultMap="PartyPositionUser">
+        SELECT <include refid="columns"/> FROM IBPS_PARTY_POSITION_USERS
+        WHERE
+        POSITION_NAME_ = #{positionName,jdbcType=VARCHAR} and POSITION_TYPE_ = #{positionType,jdbcType=VARCHAR} and USER_ID_=#{userId,jdbcType=VARCHAR}
+    </select>
+
+    <select id="getByUserAndRespId" parameterType="java.util.Map" resultMap="PartyPositionUser">
+        SELECT <include refid="columns"/> FROM IBPS_PARTY_POSITION_USERS
+        WHERE
+        SUB_PID_ = #{subPid,jdbcType=VARCHAR}
+        AND MAIN_TYPE_ = 'responsibility'
+        AND BIZ_ = 'mainResp'
+    </select>
+
+    <select id="getByUserAndPositionId" parameterType="java.util.Map" resultMap="PartyPositionUser">
+        SELECT <include refid="columns"/> FROM IBPS_PARTY_POSITION_USERS
+        WHERE
+        USER_ID_ = #{subPid,jdbcType=VARCHAR}
+        AND POSITION_TYPE_ = 'responsibility'
+        AND DATA_TYPE_ = 'mainResp'
+    </select>
+
+    <select id="queryWithRespByIds" parameterType="java.util.Map" resultMap="PartyPositionUser">
+        SELECT <include refid="columns"/> FROM IBPS_PARTY_POSITION_USERS
+        WHERE USER_ID_ = #{userId,jdbcType=VARCHAR}
+    </select>
+
+    <delete id="deleteByUserId" parameterType="java.util.Map">
+        DELETE FROM IBPS_PARTY_POSITION_USERS
+        WHERE USER_ID_ = #{userId,jdbcType=VARCHAR}
+    </delete>
+
+    <delete id="remoBySubId" parameterType="java.util.Map">
+        DELETE FROM IBPS_PARTY_POSITION_USERS
+        WHERE
+        <if test="@o.Ognl@isNotEmpty(ids)">
+            FIND_IN_SET(ID_, #{ids,jdbcType=VARCHAR})
+        </if>
+    </delete>
+
+    <select id="selectAll" parameterType="java.util.Map" resultMap="PartyPositionUser">
+        SELECT id_ as ID_,gang_wei_ming_che as POSITION_NAME_ FROM t_dyzzb where
+       <![CDATA[
+            TRIM(IFNULL(gang_wei_ming_che, '')) <> ''
+        ]]>
+    AND di_dian_ = #{diDian,jdbcType=VARCHAR} group by POSITION_NAME_
+    </select>
+
+</mapper>

+ 6 - 0
ibps-provider-base-root/modules/provider-platform-api/src/main/java/com/lc/ibps/org/api/IPartyPositionService.java

@@ -12,6 +12,7 @@ package com.lc.ibps.org.api;
 import java.util.List;
 import java.util.Map;
 
+import com.lc.ibps.org.party.persistence.entity.PartyPositionUserPo;
 import org.hibernate.validator.constraints.NotBlank;
 import org.hibernate.validator.constraints.NotEmpty;
 import org.springframework.validation.annotation.Validated;
@@ -347,6 +348,11 @@ public interface IPartyPositionService {
 	public APIResult<List<PartyEntityTreePo>> findTreeData(
 			@RequestBody(required = true) APIRequest request);
 
+
+	@RequestMapping(value = "/findDutiesData", method = { RequestMethod.POST })
+	public APIResult<List<PartyPositionUserPo>> findDutiesData(
+			@RequestBody(required = true) APIRequest request);
+
 	/**
 	 * 获取所有岗位
 	 * @return

+ 17 - 2
ibps-provider-root/modules/provider-platform-default/src/main/java/com/lc/ibps/org/provider/PartyEmployeeProvider.java

@@ -87,6 +87,8 @@ public class PartyEmployeeProvider extends GenericProvider implements IPartyEmpl
 	@Resource
 	private PartyRelRepository partyRelRepository;
 	@Resource
+	private PartyPositionUserRepository partyPositionUserRepository;
+	@Resource
 	private PartyOrgRepository partyOrgRepository;
 	@Resource
 	private PartyPositionRepository partyPositionRepository;
@@ -417,6 +419,12 @@ public class PartyEmployeeProvider extends GenericProvider implements IPartyEmpl
 		 		partyPositions = partyPositionRepository.queryWithOrgByIds(ids, employeeId, PartyRelType.MAIN_POST, PartyRelType.PRINCIPAL);
 		 		setMainPostAndPrincipal(employeeId, partyPositions);
 			}
+
+			List<PartyPositionUserPo>  responsibilityVoList = null;
+			if(BeanUtils.isNotEmpty(partyEmployeePo)){
+				responsibilityVoList = partyPositionUserRepository.queryWithRespByIds(employeeId);
+			}
+
 			
 			List<PartyRolePo> partyRoles = partyRoleRepository.findRoleByUID(employeeId);
 			
@@ -440,6 +448,7 @@ public class PartyEmployeeProvider extends GenericProvider implements IPartyEmpl
 			result.addVariable("partyAttrs", partyAttrs);// 扩展属性
 			result.addVariable("partyOrg", partyOrg);// 组织
 			result.addVariable("partyPositions", partyPositions);// 岗位
+			result.addVariable("partyUserPosition", responsibilityVoList);// 岗位
 			result.addVariable("partyRoles", partyRoles);// 角色
 			result.addVariable("partyGroups", ugList);// 用户组
 			result.addVariable("partyLevel", partyLevel);// 等级
@@ -957,6 +966,12 @@ public class PartyEmployeeProvider extends GenericProvider implements IPartyEmpl
 				String ids = relList.stream().map(PartyRelTbl::getId).collect(Collectors.joining(","));
 				partyRelRepository.remoBySubId(ids);
 			}
+			//上面删除了主部门后还需要删除主岗位
+			List<PartyPositionUserPo> resList = partyPositionUserRepository.getByUserAndPositionId(partyEmployee.getId());
+			if(resList.size()>0){
+				String resp = resList.stream().map(PartyPositionUserPo::getId).collect(Collectors.joining(","));
+				partyPositionUserRepository.remoBySubId(resp);
+			}
 			partyEmployee.updateByCascade(partyEmployeeVo);
 			result.setMessage(I18nUtil.getMessage("com.lc.ibps.org.provider.PartyEmployeeProvider.save.update"));
 			result.addVariable("id", partyEmployeePo.getId());
@@ -1153,8 +1168,8 @@ public class PartyEmployeeProvider extends GenericProvider implements IPartyEmpl
 	/**
 	 * 填充岗位字段
 	 *
-	 * @param request
-	 * @param poList
+	 * @paramrequest
+	 * @parampoList
 	 */
 	private void fillPositionInfo(String posId, List<PartyEmployeePo> list) {
 		if (BeanUtils.isEmpty(list))

+ 25 - 1
ibps-provider-root/modules/provider-platform-default/src/main/java/com/lc/ibps/org/provider/PartyPositionProvider.java

@@ -6,6 +6,7 @@ import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
 
+import com.lc.ibps.base.core.util.AppUtil;
 import com.lc.ibps.org.party.domain.PartyRole;
 import com.lc.ibps.org.party.persistence.entity.*;
 import com.lc.ibps.org.party.repository.*;
@@ -78,7 +79,8 @@ public class PartyPositionProvider extends GenericProvider implements IPartyPosi
 	private PartyUserRepository partyUserRepository;
 	@Resource
 	private PartyEmployeeRepository partyEmployeeRepository;
-
+	@Resource
+	private PartyPositionUserRepository partyPositionUserRepository;
 	@Resource
 	private PartyRoleRepository partyRoleRepository;
 
@@ -807,6 +809,28 @@ public class PartyPositionProvider extends GenericProvider implements IPartyPosi
 		return result;
 	}
 
+	@Override
+	public APIResult<List<PartyPositionUserPo>> findDutiesData(APIRequest request) {
+		APIResult<List<PartyPositionUserPo>> result = new APIResult<>();
+		List<PartyPositionUserPo> pos = partyPositionUserRepository.selectAll(getDiDian());
+		result.setData(BeanUtils.isNotEmpty(pos) ? pos : null);
+		result.setState(200);
+		return result;
+	}
+
+	private String getDiDian() {
+		IPartyPositionService partyPositionService = AppUtil.getBean(IPartyPositionService.class);
+		APIResult<List<PartyPositionPo>> result = partyPositionService.findByUserId(ContextUtil.getCurrentUserId());
+		String diDian ="";
+		try {
+			diDian = result.getData().get(0).getPath().split(StringPool.BACK_SLASH + StringPool.DOT)[1];
+		}catch (Exception ex){
+			logger.error("Can't get didian information",ex);
+			return null;
+		}
+		return diDian;
+	}
+
 	@ApiOperation(value = "获取岗位树", notes = "获取岗位树,\n"
 			+ "当type的value为0且posId没有值的时候,则返回系统内所有部门的信息\n"
 			+ "当type的value为0且posId有值的时候,则返回posId本级及其下属所有的部门信息\n"