From ed2a9d376c3846bb8d6cf838bfff9bd3ae07bc3b Mon Sep 17 00:00:00 2001
From: ZhuDongming <773644075@qq.com>
Date: Mon, 12 Aug 2019 15:52:05 +0800
Subject: [PATCH] 修改多点重合下拉时第一个时间位置不变问题
---
src/main/java/com/moral/service/impl/OrganizationServiceImpl.java | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 103 insertions(+), 10 deletions(-)
diff --git a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
index 828c235..da6e198 100644
--- a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
@@ -1,8 +1,26 @@
package com.moral.service.impl;
+import static com.moral.common.bean.Constants.IS_DELETE_FALSE;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.data.annotation.Transient;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageHelper;
import com.moral.common.bean.Constants;
import com.moral.common.bean.PageBean;
+import com.moral.common.exception.BusinessException;
import com.moral.common.util.ExampleUtil;
import com.moral.common.util.ValidateUtil;
import com.moral.entity.Organization;
@@ -10,14 +28,9 @@
import com.moral.mapper.OrganizationMapper;
import com.moral.mapper.OrganizationRelationMapper;
import com.moral.service.OrganizationService;
-import org.springframework.stereotype.Service;
+
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.entity.Example.Criteria;
-
-import javax.annotation.Resource;
-import java.util.*;
-
-import static com.moral.common.bean.Constants.IS_DELETE_FALSE;
@Service
public class OrganizationServiceImpl implements OrganizationService {
@@ -40,7 +53,7 @@
if (IS_DELETE_FALSE.equals(organization.getIsDelete())) {
List<OrganizationRelation> organizationRelations = organizationRelationMapper.select(relation);
for (OrganizationRelation organizationRelation : organizationRelations) {
- Set<Integer> organizationIds = getChildOrganizationIds(organizationRelation.getParentId());
+ Set<Integer> organizationIds = getChildOrganizationIds(organizationRelation.getChildId());
orgIds.addAll(organizationIds);
}
}
@@ -55,6 +68,7 @@
return organizations;
}
+ @Override
public PageBean queryByPageBean(PageBean pageBean){
Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean);
List<Example.Criteria> criteriaList = example.getOredCriteria();
@@ -65,10 +79,16 @@
}else {
example.or().andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE);
}
- PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
+ if(pageBean.getPageSize()>0){
+ PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
+ }
+ if(example.getOrderByClause() == null || example.getOrderByClause().isEmpty()) {
+ example.setOrderByClause("create_time desc");
+ }
List<Organization> organizationList = organizationMapper.selectWithAreaNameByExample(example);
return new PageBean(organizationList);
}
+ @Override
public void addOrModify(Organization organization){
try{
if(organization.getId()==null){
@@ -76,14 +96,66 @@
organization.setIsDelete(Constants.IS_DELETE_FALSE);
organizationMapper.insertSelective(organization);
}else{
- organizationMapper.updateByPrimaryKeySelective(organization);
+ organizationMapper.updateByPrimaryKey(organization);
+ }
+ if(organization.getId()!=null && !organization.getId().equals(organization.getParentId())){
+ List<Integer> orgIds = organizationMapper.selectLowerOrgIds(organization.getId());
+ boolean isChild = orgIds.stream().anyMatch(
+ item -> {
+ return item!=null && item.equals(organization.getParentId());
+ }
+ );
+ // ������������������������������������������������������������
+ if(!isChild){
+ //���������������������
+ addOrModifyOrgRelation(organization);
+ }else{
+ throw new BusinessException("cannot set the children as father,organization:"+ JSON.toJSONString(organization));
+ }
+ }else {
+ throw new BusinessException("id of organization can't equal to it's parentId,organization:"+ JSON.toJSONString(organization));
}
}
catch (Exception ex){
throw ex;
}
}
-
+ @Transient
+ private void addOrModifyOrgRelation(Organization organization){
+ OrganizationRelation relation = new OrganizationRelation();
+ relation.setChildId(organization.getId());
+ List<OrganizationRelation> relations = organizationRelationMapper.select(relation);
+ if(CollectionUtils.isEmpty(relations)){
+ if (!ObjectUtils.isEmpty(organization.getParentId())) {
+ relation.setParentId(organization.getParentId());
+ organizationRelationMapper.insert(relation);
+ }
+ }else{
+ OrganizationRelation relationOfSelect = relations.get(0);
+ //���������������������������������������
+ if(organization.getParentId() !=null &&
+ !organization.getParentId().equals(relationOfSelect.getParentId())
+ ) {
+ relationOfSelect.setParentId(organization.getParentId());
+ organizationRelationMapper.updateByPrimaryKey(relationOfSelect);
+ }else if(organization.getParentId() ==null){
+ //ParentI���null���������������������
+ organizationRelationMapper.deleteByPrimaryKey(relationOfSelect.getId());
+ }
+ //������������������
+ if(relations.size()>1){
+ relations.remove(0);
+ List<Integer> relationIds = relations.stream().map(
+ element->{
+ return element.getId();
+ }
+ ).collect(Collectors.toList());
+ Example example = new Example(OrganizationRelation.class);
+ example.or().andIn("id",relationIds);
+ organizationRelationMapper.deleteByExample(example);
+ }
+ }
+ }
@Override
public void deleteByIds(Integer... ids) {
Organization organization = new Organization();
@@ -114,4 +186,25 @@
return organizations;
}
+ @Override
+ public Organization getOrganizationById(int id) {
+ Example example = new Example(ENTITY_CLASS);
+ example.or().andEqualTo("id",id);
+ List<Organization> organizationList = organizationMapper.selectWithAreaNameByExample(example);
+ return organizationList.size()>0?organizationList.get(0):null;
+ }
+
+ @Override
+ public Organization getFatherOrg(int childId) {
+ OrganizationRelation relation = new OrganizationRelation();
+ relation.setChildId(childId);
+ List<OrganizationRelation> relations = organizationRelationMapper.select(relation);
+ if (!CollectionUtils.isEmpty(relations)){
+ OrganizationRelation relationOfSelect = relations.get(0);
+ if(relationOfSelect.getParentId()!=null){
+ return organizationMapper.selectByPrimaryKey(relationOfSelect.getParentId());
+ }
+ }
+ return null;
+ }
}
--
Gitblit v1.8.0