src/main/java/com/moral/controller/OrganizationController.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/moral/controller/ScreenController.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/moral/entity/Organization.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/moral/service/OrganizationService.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/moral/service/impl/DeviceServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/moral/service/impl/OrganizationServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/resources/application.yml | ●●●●● patch | view | raw | blame | history | |
src/main/resources/mapper/OrganizationMapper.xml | ●●●●● patch | view | raw | blame | history |
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); } } 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()); } 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; 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); } 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){ 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; } } 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 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