From 7c46bd2e4c3921fe6f77682f1c80ff5c7e927539 Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Thu, 27 Sep 2018 08:54:07 +0800 Subject: [PATCH] 组织指定父组织 --- src/main/java/com/moral/entity/Organization.java | 24 ++++++++ src/main/java/com/moral/service/OrganizationService.java | 2 src/main/java/com/moral/controller/OrganizationController.java | 6 ++ src/main/java/com/moral/service/impl/OrganizationServiceImpl.java | 55 ++++++++++++++++++ src/main/java/com/moral/controller/ScreenController.java | 39 ++++++++----- src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 2 src/main/resources/application.yml | 15 ++-- src/main/resources/mapper/OrganizationMapper.xml | 8 ++ 8 files changed, 126 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/moral/controller/OrganizationController.java b/src/main/java/com/moral/controller/OrganizationController.java index 039953d..b515654 100644 --- a/src/main/java/com/moral/controller/OrganizationController.java +++ b/src/main/java/com/moral/controller/OrganizationController.java @@ -39,10 +39,16 @@ List<Organization> organizations = organizationService.getOrganizationsByName(name); return new ResultBean<List<Organization>>(organizations); } + @GetMapping("get-my-org") public ResultBean<Organization> getMyOrganization(JwtAuthenticationToken token){ UserContext userContext = token.getPrincipal(); Organization organization = organizationService.getOrganizationById(userContext.getOrganizationId()); return new ResultBean<>(organization); } + @GetMapping("getforg") + public ResultBean<Organization> getFatherOrg(Integer cid){ + Organization organization = organizationService.getFatherOrg(cid); + return new ResultBean<>(organization); + } } diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index 2478a83..4541cd3 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/src/main/java/com/moral/controller/ScreenController.java @@ -10,6 +10,7 @@ import javax.servlet.http.HttpServletRequest; import com.alibaba.fastjson.*; +import com.moral.common.util.BeanUtils; import com.moral.common.util.ParameterUtils; import com.moral.common.util.StringUtils; import com.moral.entity.*; @@ -135,21 +136,29 @@ StringBuilder areaNamesBuilder = new StringBuilder("������"); if(!((Integer) orgId).equals(dictionaryDataService.querySupperOrgId())) { Organization organization = organizationService.getOrganizationById((Integer) orgId); - if(organization.getAreaNames()!=null){ - AreaNames areaNames = organization.getAreaNames(); - if(!StringUtils.isNullOrEmpty(areaNames.getProvinceName())){ - areaNamesBuilder.append("/"); - areaNamesBuilder.append(areaNames.getProvinceName()); - if(!StringUtils.isNullOrEmpty(areaNames.getCityName())){ - areaNamesBuilder.append("/"); - areaNamesBuilder.append(areaNames.getCityName()); - if(!StringUtils.isNullOrEmpty(areaNames.getAreaName())){ - areaNamesBuilder.append("/"); - areaNamesBuilder.append(areaNames.getAreaName()); - } - } - } - } + if(organization.getAreaNames()!=null){ + Map<String,String> areaNameMap = BeanUtils.beanToMap(organization.getAreaNames()); + List<String> names = areaNameMap.entrySet().stream().filter(item -> { + return item.getValue()!=null; + }).map(item -> { + return item.getValue(); + }).collect(Collectors.toList()); + AreaNames areaNames = organization.getAreaNames(); + areaNamesBuilder.append("/"); + areaNamesBuilder.append(String.join("/",names)); + } + // ������������ + if( 0 == organization.getRank()) { + resultMap.put("type","enterprise"); + }else{ + resultMap.put("type","government"); + } + resultMap.put("areaCode", + organization.getVillageCode()| + organization.getTownCode()| + organization.getAreaCode()| + organization.getCityCode()| + organization.getProvinceCode()); } resultMap.put("mapPath",areaNamesBuilder.toString()); } diff --git a/src/main/java/com/moral/entity/Organization.java b/src/main/java/com/moral/entity/Organization.java index 50295d7..e727199 100644 --- a/src/main/java/com/moral/entity/Organization.java +++ b/src/main/java/com/moral/entity/Organization.java @@ -88,7 +88,31 @@ * @mbggenerated Thu Dec 07 15:18:16 CST 2017 */ private String description; + private Long townCode; + private Long villageCode; + public Integer getProvinceCode() { + return provinceCode==null?0:provinceCode; + } + + public Integer getCityCode() { + return cityCode==null?0:cityCode; + } + + public Integer getAreaCode() { + return areaCode==null?0:areaCode; + } + + public Long getTownCode() { + return townCode==null?0:townCode; + } + + public Long getVillageCode() { + return villageCode==null?0:villageCode; + } + + @Transient + private Integer parentId; @Transient private AreaNames areaNames; diff --git a/src/main/java/com/moral/service/OrganizationService.java b/src/main/java/com/moral/service/OrganizationService.java index 4c3cb5e..fe1dcc3 100644 --- a/src/main/java/com/moral/service/OrganizationService.java +++ b/src/main/java/com/moral/service/OrganizationService.java @@ -21,4 +21,6 @@ List<Organization> getOrganizationsByName(String name); public Organization getOrganizationById(int id); + + public Organization getFatherOrg(int childId); } diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java index 345dceb..ba6b76a 100644 --- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java @@ -346,7 +346,7 @@ } } @Override - public PageBean queryByPageBean(PageBean pageBean) { + public PageBean queryByPageBean(PageBean pageBean) { Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean); // addDeletesToExample(example); if(pageBean.getPageSize()>0){ diff --git a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java index 7b8d709..2dca7d1 100644 --- a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java +++ b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java @@ -10,12 +10,15 @@ import com.moral.mapper.OrganizationMapper; import com.moral.mapper.OrganizationRelationMapper; import com.moral.service.OrganizationService; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.data.annotation.Transient; 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 java.util.stream.Collectors; import static com.moral.common.bean.Constants.IS_DELETE_FALSE; @@ -55,6 +58,7 @@ return organizations; } + @Override public PageBean queryByPageBean(PageBean pageBean){ Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean); List<Example.Criteria> criteriaList = example.getOredCriteria(); @@ -84,12 +88,47 @@ }else{ organizationMapper.updateByPrimaryKey(organization); } + //��������������������� + addOrModifyOrgRelation(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)){ + 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(); @@ -127,4 +166,18 @@ 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; + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index b5a49fb..ccef0eb 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -13,14 +13,16 @@ cache: false datasource: url: jdbc:mysql://47.96.26.152:3306/monitor_db?characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC + #url: jdbc:mysql://192.168.99.100:3306/monitor_db?characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC username: root password: xOlx8z9L7Pt6y9YI + #password: root123 #driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource # ��������������������������������������������������������������������� # ��������������������������������� - initialSize: 1 - minIdle: 3 + initialSize: 10 + minIdle: 10 maxActive: 20 # ��������������������������������������� maxWait: 60000 @@ -32,6 +34,7 @@ testWhileIdle: true testOnBorrow: false testOnReturn: false + keepAlive: true # ������PSCache������������������������������PSCache��������� poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 @@ -49,14 +52,12 @@ username: guest password: guest channelCacheSize: 10 - - redis: host: 47.100.8.247 port: 6379 - password: + password: moral_2018 database: 1 - timeout: 0 + timeout: 5000 pool: max-active: 8 max-wait: -1 @@ -75,7 +76,7 @@ spring.profiles: default moral.security.jwt: - tokenExpirationTime: 5 # Number of minutes + tokenExpirationTime: 129600 # Number of minutes refreshTokenExpTime: 60 # Minutes tokenIssuer: http://monitor.7drlb.com tokenSigningKey: xm9EV6Hy5RAFL8EEACIDAwQus diff --git a/src/main/resources/mapper/OrganizationMapper.xml b/src/main/resources/mapper/OrganizationMapper.xml index 982b7a2..7865ab7 100644 --- a/src/main/resources/mapper/OrganizationMapper.xml +++ b/src/main/resources/mapper/OrganizationMapper.xml @@ -8,6 +8,8 @@ <result column="province_code" jdbcType="INTEGER" property="provinceCode" /> <result column="city_code" jdbcType="INTEGER" property="cityCode" /> <result column="area_code" jdbcType="INTEGER" property="areaCode" /> + <result column="town_code" jdbcType="BIGINT" property="townCode" /> + <result column="village_code" jdbcType="BIGINT" property="villageCode" /> <result column="address" jdbcType="VARCHAR" property="address" /> <result column="telephone" jdbcType="VARCHAR" property="telephone" /> <result column="email" jdbcType="VARCHAR" property="email" /> @@ -20,6 +22,8 @@ <result column="province_name" property="provinceName" jdbcType="VARCHAR" /> <result column="city_name" property="cityName" jdbcType="VARCHAR" /> <result column="area_name" property="areaName" jdbcType="VARCHAR" /> + <result column="town_name" property="townName" jdbcType="VARCHAR" /> + <result column="village_name" property="villageName" jdbcType="VARCHAR" /> </association> </resultMap> <sql id="Example_Where_Clause"> @@ -56,7 +60,7 @@ create_time, expire_time, description </sql> <sql id="Relation_Province_City_Area_List"> - are.area_name, cti.city_name, pro.province_name + are.area_name, cti.city_name, pro.province_name,tow.town_name,vil.village_name </sql> <select id="selectWithAreaNameByExample" parameterType="tk.mybatis.mapper.entity.Example" resultMap="BaseResultMap"> select @@ -67,6 +71,8 @@ , <include refid="Relation_Province_City_Area_List" /> from organization + left join village vil on organization.village_code = vil.village_code + left join town tow on organization.town_code = tow.town_code left join area are on organization.area_code = are.area_code left join city cti on organization.city_code = cti.city_code left join province pro on organization.province_code = pro.province_code -- Gitblit v1.8.0