dcs 4 mesiacov pred
rodič
commit
3a88dd46b3

+ 7 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/controller/ProjectController.java

@@ -50,6 +50,13 @@ public class ProjectController {
         return Response.ok(list);
     }
 
+    @ApiOperation("根据id获取单位工程,楼层,房间 层级")
+    @RequestMapping(value = "/level/{id}", method = RequestMethod.GET)
+    public Response getLevel(@PathVariable long id) {
+        Project project = projectService.getLevel(id);
+        return Response.ok(project);
+    }
+
     @ApiOperation("当前登录的用户下项目")
     @RequestMapping(value = "/projectListIdentity", method = RequestMethod.GET)
     public Response getProjectListIdentity() {

+ 2 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/dao/ProjectItemTargetDao.java

@@ -19,4 +19,6 @@ public interface ProjectItemTargetDao {
 	int delete(long id);
 
     List<ProjectItemTarget> getByProjectItemId(long projectItemId);
+
+    List<ProjectItemTarget> getIds(List<Long> ids);
 }

+ 10 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/model/ProjectItemTargetRoom.java

@@ -9,6 +9,8 @@ public class ProjectItemTargetRoom {
 
     private long id;
 
+    private String dataValue;
+
     /**
      * DTO-位置code
      */
@@ -209,6 +211,14 @@ public class ProjectItemTargetRoom {
         this.id = id;
     }
 
+    public String getDataValue() {
+        return dataValue;
+    }
+
+    public void setDataValue(String dataValue) {
+        this.dataValue = dataValue;
+    }
+
     public String getAddressCode() {
         return addressCode;
     }

+ 31 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/service/ProjectService.java

@@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class ProjectService {
@@ -38,6 +39,36 @@ public class ProjectService {
 	@Autowired
 	private BimClient bimClient;
 
+	public Project getLevel(long id) {
+		Project project = projectDao.get(id);
+		List<Long> itemIds = new ArrayList<>();
+		List<ProjectItem> projectItemList = project.getProjectItemList();
+		if (projectItemList != null) {
+			projectItemList.forEach(ls -> itemIds.add(ls.getId()));
+		}
+		List<Long> targetIds = new ArrayList<>();
+		if (itemIds.size() > 0) {
+			List<ProjectItem> items = projectItemDao.getIds(itemIds);
+			for (ProjectItem item : items) {
+				List<ProjectItemTarget> projectItemTargetList = item.getProjectItemTargetList();
+				if (projectItemTargetList.size() > 0) {
+					projectItemTargetList.forEach(l -> targetIds.add(l.getId()));
+				}
+			}
+			if (targetIds.size() > 0) {
+				List<ProjectItemTarget> targetList = projectItemTargetDao.getIds(targetIds);
+				if (targetList.size() > 0) {
+					Map<Long, List<ProjectItemTarget>> map = targetList.stream().collect(Collectors.groupingBy(ProjectItemTarget::getProjectItemId));
+					for (ProjectItem item : items) {
+						item.setProjectItemTargetList(map.get(item.getId()));
+					}
+				}
+			}
+			project.setProjectItemList(items);
+		}
+		return project;
+	}
+
 	public Project get(long id) {
 		Project project = projectDao.get(id);
 		List<Long> itemIds = new ArrayList<>();

+ 51 - 0
virgo.api/src/main/resources/mapper/ProjectItemTargetMapper.xml

@@ -14,6 +14,48 @@
         <result column="roomNumber" property="roomNumber"/>
     </resultMap>
 
+    <resultMap type="com.bosshand.virgo.api.model.ProjectItemTarget" id="result">
+        <id column="id" property="id"/>
+        <result column="name" property="name"/>
+        <result column="projectId" property="projectId"/>
+        <result column="projectItemId" property="projectItemId"/>
+        <result column="sequence" property="sequence"/>
+        <result column="propertyCertificateNumber" property="propertyCertificateNumber"/>
+        <result column="roomNumber" property="roomNumber"/>
+        <collection property="projectItemTargetRoomList" ofType="com.bosshand.virgo.api.model.ProjectItemTargetRoom" resultMap="com.bosshand.virgo.api.dao.ProjectItemTargetRoomDao.projectItemTargetRoomResult" columnPrefix="room_"/>
+    </resultMap>
+
+    <sql id="query">
+        SELECT p.*,
+               pi.id                        as room_id,
+               pi.dataValue                 as room_dataValue,
+               pi.code                      as room_code,
+               pi.projectId                 as room_projectId,
+               pi.projectItemId             as room_projectItemId,
+               pi.projectItemTargetId       as room_projectItemTargetId,
+               pi.name                      as room_name,
+               pi.chargePersonId            as room_chargePersonId,
+               pi.roomTypeId                as room_roomTypeId,
+               pi.roomNumber                as room_roomNumber,
+               pi.area                      as room_area,
+               pi.roomState                 as room_roomState,
+               pi.investmentState           as room_investmentState,
+               pi.invocationDate            as room_invocationDate,
+               pi.decoration                as room_decoration,
+               pi.propertyCertificateNumber as room_propertyCertificateNumber,
+               pi.showPicture               as room_showPicture,
+               pi.picture                   as room_picture,
+               pi.video                     as room_video,
+               pi.tagIds                    as room_tagIds,
+               pi.openState                 as room_openState,
+               pi.data                      as room_data,
+               pi.price                     as room_price,
+               pi.payWay                    as room_payWay,
+               pi.payType                   as room_payType,
+               pi.introduce                 as room_introduce
+        FROM project_item_target p left join project_item_target_room pi on p.id = pi.projectItemTargetId
+    </sql>
+
     <select id="get" resultMap="projectItemTargetResult">
         SELECT * FROM project_item_target WHERE id = #{id}
     </select>
@@ -22,6 +64,15 @@
         SELECT * FROM project_item_target WHERE projectItemId = #{projectItemId}
     </select>
 
+    <select id="getIds" resultMap="result">
+        <include refid="query"/>
+        where p.id in
+        <foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+        order by pi.id asc
+    </select>
+
     <select id="getProjectItemIds" resultMap="projectItemTargetResult">
         SELECT id, name, projectItemId FROM project_item_target
         <choose>

+ 10 - 2
virgo.api/src/main/resources/mapper/ProjectItemTargetRoomMapper.xml

@@ -6,6 +6,7 @@
 
     <resultMap type="com.bosshand.virgo.api.model.ProjectItemTargetRoom" id="projectItemTargetRoomResult">
         <id column="id" property="id"/>
+        <result column="dataValue" property="dataValue"/>
         <result column="code" property="code"/>
         <result column="projectId" property="projectId"/>
         <result column="projectItemId" property="projectItemId"/>
@@ -78,9 +79,9 @@
     </select>
 
     <insert id="insert" useGeneratedKeys="true" keyProperty="id">
-        INSERT INTO project_item_target_room(`code`, `projectId`, `projectItemId`, `projectItemTargetId`,`name`, `chargePersonId`, `roomTypeId`, `roomNumber`, `area`, `roomState`, `investmentState`,
+        INSERT INTO project_item_target_room(`dataValue`, `code`, `projectId`, `projectItemId`, `projectItemTargetId`,`name`, `chargePersonId`, `roomTypeId`, `roomNumber`, `area`, `roomState`, `investmentState`,
                                              `invocationDate`, `decoration`, `propertyCertificateNumber`, `showPicture`, `picture`, `video`, `tagIds`, `openState`, `price`, `payWay`, `payType`, `introduce`, `data`)
-        VALUES (#{code}, #{projectId}, #{projectItemId}, #{projectItemTargetId}, #{name}, #{chargePersonId}, #{roomTypeId}, #{roomNumber}, #{area}, #{roomState}, #{investmentState},
+        VALUES (#{dataValue}, #{code}, #{projectId}, #{projectItemId}, #{projectItemTargetId}, #{name}, #{chargePersonId}, #{roomTypeId}, #{roomNumber}, #{area}, #{roomState}, #{investmentState},
                 #{invocationDate}, #{decoration}, #{propertyCertificateNumber}, #{showPicture}, #{picture}, #{video}, #{tagIds}, #{openState}, #{price}, #{payWay}, #{payType}, #{introduce}, #{data})
     </insert>
 
@@ -95,6 +96,9 @@
     <select id="getTotalCount" parameterType="com.bosshand.virgo.api.model.ProjectItemTargetRoom" resultType="Integer">
         SELECT count(*) FROM project_item_target_room
         <where>
+            <if test="dataValue != null">
+                and dataValue = #{dataValue}
+            </if>
             <if test="code != null">
                 and code = #{code}
             </if>
@@ -166,6 +170,9 @@
     <select id="getLimit" resultMap="projectItemTargetRoomResult">
         <include refid="ProjectItemTargetRoomQuery"/>
         <where>
+            <if test="p.dataValue != null">
+                and a.dataValue = #{p.dataValue}
+            </if>
             <if test="p.code != null">
                 and a.code = #{p.code}
             </if>
@@ -238,6 +245,7 @@
     <update id="update" parameterType="com.bosshand.virgo.api.model.ProjectItemTargetRoom">
         UPDATE project_item_target_room
         <trim prefix="set" suffixOverrides=",">
+            <if test="dataValue!=null">dataValue=#{dataValue},</if>
             <if test="projectId!=0">projectId=#{projectId},</if>
             <if test="projectItemId!=0">projectItemId=#{projectItemId},</if>
             <if test="projectItemTargetId!=0">projectItemTargetId=#{projectItemTargetId},</if>