Pārlūkot izejas kodu

新区域管理接口

lv.wenbin 9 mēneši atpakaļ
vecāks
revīzija
431f251911

+ 2 - 2
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/domain/Area.java

@@ -1,9 +1,9 @@
 package com.ruoyi.ems.domain;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.core.annotation.Excel;
 import com.ruoyi.common.core.web.domain.TreeEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
 
 /**
  * 区域对象对象 adm_area

+ 41 - 11
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/domain/AreaAttr.java

@@ -1,6 +1,8 @@
 package com.ruoyi.ems.domain;
 
 import java.util.Date;
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
@@ -19,50 +21,54 @@ public class AreaAttr
     private Long id;
 
     /** 区域代码 */
-    @Excel(name = "区域代码")
     private String areaCode;
 
     /** 所有单位 */
-    @Excel(name = "所有单位")
     private String attrOrg;
 
     /** 管理单位 */
-    @Excel(name = "管理单位")
     private String mgrOrg;
 
     /** 负责人 */
-    @Excel(name = "负责人")
     private String leader;
 
     /** 联系电话 */
-    @Excel(name = "联系电话")
     private String phone;
 
     /** 开通时间 */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "开通时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date openDate;
 
     /** 建筑面积(平方米 m²) */
-    @Excel(name = "建筑面积")
     private Long floorArea;
 
     /** 使用面积(平方米 m²) */
-    @Excel(name = "使用面积")
     private Long usableArea;
 
     /** 楼层 */
-    @Excel(name = "楼层")
     private Long floor;
 
     /** 经度 */
-    @Excel(name = "经度")
     private Long longitude;
 
     /** 纬度 */
-    @Excel(name = "纬度")
     private Long latitude;
 
+    /**
+     * 标签名称
+     */
+    private String tagCodes;
+
+    /**
+     * 标签名称
+     */
+    private String tagNames;
+
+    /**
+     * 标签代码
+     */
+    private List<String> tagCodeList;
+
     public void setId(Long id) 
     {
         this.id = id;
@@ -172,6 +178,30 @@ public class AreaAttr
         return latitude;
     }
 
+    public String getTagCodes() {
+        return tagCodes;
+    }
+
+    public void setTagCodes(String tagCodes) {
+        this.tagCodes = tagCodes;
+    }
+
+    public String getTagNames() {
+        return tagNames;
+    }
+
+    public void setTagNames(String tagNames) {
+        this.tagNames = tagNames;
+    }
+
+    public List<String> getTagCodeList() {
+        return tagCodeList;
+    }
+
+    public void setTagCodeList(List<String> tagCodeList) {
+        this.tagCodeList = tagCodeList;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 8 - 0
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/mapper/AreaMapper.java

@@ -20,6 +20,14 @@ public interface AreaMapper {
     Area selectAreaById(Long id);
 
     /**
+     * 查询区域对象
+     *
+     * @param code 区域对象编码
+     * @return 区域对象
+     */
+    Area selectAreaByCode(String code);
+
+    /**
      * 查询区域对象列表
      *
      * @param admArea 区域对象

+ 1 - 1
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/IAreaService.java

@@ -38,7 +38,7 @@ public interface IAreaService {
     /**
      * 修改区域对象
      *
-     * @param Area 区域对象
+     * @param area 区域对象
      * @return 结果
      */
     int updateArea(Area area);

+ 0 - 1
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/IObjTagRelService.java

@@ -57,7 +57,6 @@ public interface IObjTagRelService {
     /**
      * 删除对象&标签关系
      *
-     * @param tagType 标签类型
      * @param tagCode 标签代码
      * @return 结果
      */

+ 86 - 8
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/impl/AreaAttrServiceImpl.java

@@ -1,12 +1,18 @@
 package com.ruoyi.ems.service.impl;
 
 import com.ruoyi.ems.domain.AreaAttr;
+import com.ruoyi.ems.domain.ObjTagRel;
 import com.ruoyi.ems.mapper.AreaAttrMapper;
 import com.ruoyi.ems.service.IAreaAttrService;
+import com.ruoyi.ems.service.IObjTagRelService;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 区域对象属性Service业务层处理
@@ -19,40 +25,112 @@ public class AreaAttrServiceImpl implements IAreaAttrService {
     @Autowired
     private AreaAttrMapper areaAttrMapper;
 
+    @Autowired
+    private IObjTagRelService tagRelService;
+
     @Override
     public AreaAttr selectAreaAttrByCode(String areaCode) {
+        AreaAttr areaAttr = areaAttrMapper.selectAreaAttrByCode(areaCode);
+
+        if (null != areaAttr) {
+            fillExt(areaAttr);
+        }
+
         return areaAttrMapper.selectAreaAttrByCode(areaCode);
     }
 
     @Override
     public List<AreaAttr> selectAreaAttrList(List<String> areaCodes) {
-        return areaAttrMapper.selectAreaAttrList(areaCodes);
+        List<AreaAttr> list = areaAttrMapper.selectAreaAttrList(areaCodes);
+        fillExtBatch(areaCodes, list);
+        return list;
     }
 
     /**
      * 新增区域对象属性
      *
-     * @param admAreaAttr 区域对象属性
+     * @param areaAttr 区域对象属性
      * @return 结果
      */
     @Override
-    public int insertAreaAttr(AreaAttr admAreaAttr) {
-        return areaAttrMapper.insertAreaAttr(admAreaAttr);
+    public int insertAreaAttr(AreaAttr areaAttr) {
+        int cnt = areaAttrMapper.insertAreaAttr(areaAttr);
+        insertTagRel(areaAttr);
+        return cnt;
     }
 
     /**
      * 修改区域对象属性
      *
-     * @param admAreaAttr 区域对象属性
+     * @param areaAttr 区域对象属性
      * @return 结果
      */
     @Override
-    public int updateAreaAttr(AreaAttr admAreaAttr) {
-        return areaAttrMapper.updateAreaAttr(admAreaAttr);
+    public int updateAreaAttr(AreaAttr areaAttr) {
+        int cnt = areaAttrMapper.updateAreaAttr(areaAttr);
+        updateTagRel(areaAttr);
+        return cnt;
     }
 
     @Override
     public int deleteAreaAttrByCode(String areaCode) {
-        return areaAttrMapper.deleteAreaAttrByCode(areaCode);
+        int cnt = areaAttrMapper.deleteAreaAttrByCode(areaCode);
+        tagRelService.deleteByObjCode(1, areaCode);
+        return cnt;
+    }
+
+    private void fillExt(AreaAttr areaAttr) {
+        List<ObjTagRel> tagRel = tagRelService.selectListByObjCode(1, areaAttr.getAreaCode());
+
+        if (CollectionUtils.isNotEmpty(tagRel)) {
+            List<String> tagCodes = tagRel.stream().map(ObjTagRel::getTagCode).collect(Collectors.toList());
+            areaAttr.setTagCodeList(tagCodes);
+        }
+    }
+
+    private void fillExtBatch(List<String> areaCodes, List<AreaAttr> list) {
+        List<ObjTagRel> tagRel = tagRelService.selectListByType(1);
+        Map<String, List<ObjTagRel>> tagRelMap = tagRel.stream()
+            .collect(Collectors.groupingBy(ObjTagRel::getObjCode));
+
+        for (AreaAttr areaAttr : list) {
+            if (tagRelMap.containsKey(areaAttr.getAreaCode())) {
+                List<ObjTagRel> relLists = tagRelMap.get(areaAttr.getAreaCode());
+                List<String> tagCodes = relLists.stream().map(ObjTagRel::getTagCode).collect(Collectors.toList());
+                areaAttr.setTagCodeList(tagCodes);
+            }
+        }
+    }
+
+    public void insertTagRel(AreaAttr areaAttr) {
+        if (CollectionUtils.isNotEmpty(areaAttr.getTagCodeList())) {
+            List<String> tagArray = areaAttr.getTagCodeList();
+            List<ObjTagRel> tagRelList = new ArrayList<>();
+
+            for (String tagCode : tagArray) {
+                ObjTagRel tagRel = new ObjTagRel(1, tagCode, areaAttr.getAreaCode());
+                tagRelList.add(tagRel);
+            }
+
+            tagRelService.insertBatch(tagRelList);
+        }
+    }
+
+    public void updateTagRel(AreaAttr areaAttr) {
+        if (CollectionUtils.isNotEmpty(areaAttr.getTagCodeList())) {
+            List<String> tagArray = areaAttr.getTagCodeList();
+            List<ObjTagRel> tagRelList = new ArrayList<>();
+
+            for (String tagCode : tagArray) {
+                ObjTagRel tagRel = new ObjTagRel(1, tagCode, areaAttr.getAreaCode());
+                tagRelList.add(tagRel);
+            }
+
+            tagRelService.deleteByObjCode(1, areaAttr.getAreaCode());
+            tagRelService.insertBatch(tagRelList);
+        }
+        else {
+            tagRelService.deleteByObjCode(1, areaAttr.getAreaCode());
+        }
     }
 }

+ 58 - 17
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/impl/AreaServiceImpl.java

@@ -1,17 +1,18 @@
 package com.ruoyi.ems.service.impl;
 
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
+import com.ruoyi.ems.domain.Area;
 import com.ruoyi.ems.domain.AreaAttr;
+import com.ruoyi.ems.mapper.AreaMapper;
 import com.ruoyi.ems.service.IAreaAttrService;
+import com.ruoyi.ems.service.IAreaService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.ruoyi.ems.mapper.AreaMapper;
-import com.ruoyi.ems.domain.Area;
-import com.ruoyi.ems.service.IAreaService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * 区域对象Service业务层处理
@@ -47,12 +48,12 @@ public class AreaServiceImpl implements IAreaService {
     /**
      * 查询区域对象列表
      *
-     * @param Area 区域对象
+     * @param area 区域对象
      * @return 区域对象
      */
     @Override
-    public List<Area> selectAreaList(Area Area) {
-        List<Area> list = areaMapper.selectAreaList(Area);
+    public List<Area> selectAreaList(Area area) {
+        List<Area> list = areaMapper.selectAreaList(area);
         fillAreaAttr(list);
         return list;
     }
@@ -60,23 +61,37 @@ public class AreaServiceImpl implements IAreaService {
     /**
      * 新增区域对象
      *
-     * @param Area 区域对象
+     * @param area 区域对象
      * @return 结果
      */
     @Override
-    public int insertArea(Area Area) {
-        return areaMapper.insertArea(Area);
+    public int insertArea(Area area) {
+        fillAncestors(area);
+        int cnt = areaMapper.insertArea(area);
+
+        if (null != area.getAreaAttr()) {
+            attrService.insertAreaAttr(area.getAreaAttr());
+        }
+
+        return cnt;
     }
 
     /**
      * 修改区域对象
      *
-     * @param Area 区域对象
+     * @param area 区域对象
      * @return 结果
      */
     @Override
-    public int updateArea(Area Area) {
-        return areaMapper.updateArea(Area);
+    public int updateArea(Area area) {
+        fillAncestors(area);
+        int cnt = areaMapper.updateArea(area);
+
+        if (null != area.getAreaAttr()) {
+            attrService.updateAreaAttr(area.getAreaAttr());
+        }
+
+        return cnt;
     }
 
     /**
@@ -87,6 +102,14 @@ public class AreaServiceImpl implements IAreaService {
      */
     @Override
     public int deleteAreaByIds(Long[] ids) {
+        for (Long id : ids) {
+            Area area = areaMapper.selectAreaById(id);
+
+            if (null != area) {
+                attrService.deleteAreaAttrByCode(area.getAreaCode());
+            }
+        }
+
         return areaMapper.deleteAreaByIds(ids);
     }
 
@@ -98,9 +121,27 @@ public class AreaServiceImpl implements IAreaService {
      */
     @Override
     public int deleteAreaById(Long id) {
+        Area area = areaMapper.selectAreaById(id);
+
+        if (null != area) {
+            areaMapper.deleteAreaById(id);
+            attrService.deleteAreaAttrByCode(area.getAreaCode());
+        }
+
         return areaMapper.deleteAreaById(id);
     }
 
+    private void fillAncestors(Area area) {
+        Area parent = areaMapper.selectAreaByCode(area.getParentCode());
+
+        if (null != parent) {
+            area.setAncestors(parent.getAncestors() + "," + parent.getAreaCode());
+        }
+        else if (StringUtils.equals("0", area.getParentCode())) {
+            area.setAncestors(area.getParentCode());
+        }
+    }
+
     private void fillAreaAttr(List<Area> list) {
         List<String> codes = list.stream().map(Area::getAreaCode).distinct().collect(Collectors.toList());
         List<AreaAttr> areaAttrs = attrService.selectAreaAttrList(codes);

+ 14 - 1
ems-cloud/ems-modules/ems-server/src/main/resources/mapper/ems/AreaAttrMapper.xml

@@ -20,7 +20,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectAreaAttrVo">
-        select id, area_code, attr_org, mgr_org, leader, phone, open_date, floor_area, usable_area, floor, longitude, latitude from adm_area_attr
+        select
+            id,
+            area_code,
+            attr_org,
+            mgr_org,
+            leader,
+            phone,
+            open_date,
+            floor_area,
+            usable_area,
+            floor,
+            longitude,
+            latitude
+        from adm_area_attr
     </sql>
 
     <select id="selectAreaAttrList" resultMap="areaAttrResult">

+ 9 - 4
ems-cloud/ems-modules/ems-server/src/main/resources/mapper/ems/AreaMapper.xml

@@ -28,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="ancestors != null  and ancestors != ''"> and ancestors = #{ancestors}</if>
             <if test="areaName != null  and areaName != ''"> and area_name like concat('%', #{areaName}, '%')</if>
             <if test="shortName != null  and shortName != ''"> and short_name like concat('%', #{shortName}, '%')</if>
-            <if test="desc != null  and desc != ''"> and desc = #{desc}</if>
+            <if test="desc != null  and desc != ''"> and `desc` = #{desc}</if>
             <if test="orderNum != null "> and order_num = #{orderNum}</if>
             <if test="status != null "> and status = #{status}</if>
         </where>
@@ -38,7 +38,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectAreaVo"/>
         where id = #{id}
     </select>
-        
+
+    <select id="selectAreaByCode" parameterType="String" resultMap="areaResult">
+        <include refid="selectAreaVo"/>
+        where area_code = #{areaCode}
+    </select>
+
     <insert id="insertArea" parameterType="com.ruoyi.ems.domain.Area" useGeneratedKeys="true" keyProperty="id">
         insert into adm_area
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -47,7 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="ancestors != null">ancestors,</if>
             <if test="areaName != null and areaName != ''">area_name,</if>
             <if test="shortName != null">short_name,</if>
-            <if test="desc != null">desc,</if>
+            <if test="desc != null">`desc`,</if>
             <if test="orderNum != null">order_num,</if>
             <if test="status != null">status,</if>
          </trim>
@@ -71,7 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="ancestors != null">ancestors = #{ancestors},</if>
             <if test="areaName != null and areaName != ''">area_name = #{areaName},</if>
             <if test="shortName != null">short_name = #{shortName},</if>
-            <if test="desc != null">desc = #{desc},</if>
+            <if test="desc != null">`desc` = #{desc},</if>
             <if test="orderNum != null">order_num = #{orderNum},</if>
             <if test="status != null">status = #{status},</if>
         </trim>