dcs 1 jaar geleden
bovenliggende
commit
e3edbfa001

+ 38 - 6
virgo.api/src/main/java/com/bosshand/virgo/api/controller/WorkOrderController.java

@@ -2,6 +2,7 @@ package com.bosshand.virgo.api.controller;
 
 
 import com.bosshand.virgo.api.model.WorkOrder;
+import com.bosshand.virgo.api.service.ProjectItemTargetRoomService;
 import com.bosshand.virgo.api.service.WorkOrderService;
 import com.bosshand.virgo.core.response.Response;
 import io.swagger.annotations.Api;
@@ -9,6 +10,10 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 @RestController
 @RequestMapping({"workOrder"})
 @Api(tags = {"工单管理"})
@@ -17,6 +22,26 @@ public class WorkOrderController {
     @Autowired
     WorkOrderService workOrderService;
 
+    @Autowired
+    ProjectItemTargetRoomService projectItemTargetRoomService;
+
+    @ApiOperation("获取")
+    @RequestMapping(value = "/{currPage}/{pageSize}", method = RequestMethod.POST)
+    public Response list(@RequestBody WorkOrder workOrder, @PathVariable int currPage, @PathVariable int pageSize) {
+        int totalCount = workOrderService.getTotalCount(workOrder);
+        List<WorkOrder> dataList = workOrderService.getLimit(workOrder, currPage, pageSize);
+        for (WorkOrder wo : dataList) {
+            wo.setProjectName(projectItemTargetRoomService.getProject(wo.getProjectId()).getName());
+            wo.setProjectItemName(projectItemTargetRoomService.getProjectItem(wo.getProjectItemId()).getName());
+            wo.setProjectItemTargetName(projectItemTargetRoomService.getProjectItemTarget(wo.getProjectItemTargetId()).getName());
+            wo.setProjectItemTargetRoomNumber(projectItemTargetRoomService.getProjectItemTargetRoom(wo.getProjectItemTargetRoomId()).getRoomNumber());
+        }
+        Map<String, Object> result = new HashMap<>();
+        result.put("dataList", dataList);
+        result.put("totalCount", totalCount);
+        return Response.ok(result);
+    }
+
     @ApiOperation("保存")
     @RequestMapping(value = "", method = RequestMethod.POST)
     public Response insert(@RequestBody WorkOrder workOrder) {
@@ -24,12 +49,6 @@ public class WorkOrderController {
         return Response.ok();
     }
 
-    @ApiOperation("获取")
-    @RequestMapping(value = "/list", method = RequestMethod.POST)
-    public Response getList(@RequestBody WorkOrder workOrder) {
-        return Response.ok(workOrderService.getList(workOrder));
-    }
-
     @ApiOperation("更新")
     @RequestMapping(value = "/update", method = RequestMethod.PUT)
     public Response update(@RequestBody WorkOrder workOrder) {
@@ -44,4 +63,17 @@ public class WorkOrderController {
         return Response.ok();
     }
 
+    @ApiOperation("详情")
+    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
+    public Response get(@PathVariable long id) {
+        WorkOrder wo = workOrderService.get(id);
+        if (wo != null) {
+            wo.setProjectName(projectItemTargetRoomService.getProject(wo.getProjectId()).getName());
+            wo.setProjectItemName(projectItemTargetRoomService.getProjectItem(wo.getProjectItemId()).getName());
+            wo.setProjectItemTargetName(projectItemTargetRoomService.getProjectItemTarget(wo.getProjectItemTargetId()).getName());
+            wo.setProjectItemTargetRoomNumber(projectItemTargetRoomService.getProjectItemTargetRoom(wo.getProjectItemTargetRoomId()).getRoomNumber());
+        }
+        return Response.ok(wo);
+    }
+
 }

+ 5 - 1
virgo.api/src/main/java/com/bosshand/virgo/api/dao/WorkOrderDao.java

@@ -2,6 +2,7 @@ package com.bosshand.virgo.api.dao;
 
 import com.bosshand.virgo.api.model.WorkOrder;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -14,6 +15,9 @@ public interface WorkOrderDao {
 
     int delete(long id);
 
-    List<WorkOrder> getList(WorkOrder workOrder);
+    int getTotalCount(WorkOrder workOrder);
 
+    List<WorkOrder> getLimit(@Param("p") WorkOrder p, @Param("currIndex") int currIndex, @Param("pageSize") int pageSize);
+
+    WorkOrder get(long id);
 }

+ 220 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/model/WorkOrder.java

@@ -1,5 +1,9 @@
 package com.bosshand.virgo.api.model;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.util.Date;
+
 /**
  * 工单管理
  */
@@ -7,8 +11,89 @@ public class WorkOrder {
 
     private long id;
 
+    /**
+     * 项目id
+     */
     private long projectId;
 
+    private String projectName;
+
+    /**
+     * 单位工程id
+     */
+    private long projectItemId;
+
+    private String projectItemName;
+
+    /**
+     * 楼层id
+     */
+    private long projectItemTargetId;
+
+    private String projectItemTargetName;
+
+    /**
+     * 房间id
+     */
+    private long projectItemTargetRoomId;
+
+    /**
+     * 房号
+     */
+    private String projectItemTargetRoomNumber;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date date;
+
+    /**
+     * 工单名称
+     */
+    private String name;
+
+    /**
+     * 类型
+     */
+    private int type;
+
+    /**
+     * 状态
+     */
+    private int state = -1;
+
+    /**
+     * 生成流程Id
+     */
+    private long projectFlowId;
+
+    /**
+     * 审核列表
+     */
+    private String flowUserList;
+
+    /**
+     * 附件
+     */
+    private String attachment;
+
+    /**
+     * 文档
+     */
+    private String document;
+
+    /**
+     * 收件人
+     */
+    private String receiver;
+
+    /**
+     * 自定义字段
+     */
+    private String data;
+
+
     public long getId() {
         return id;
     }
@@ -25,4 +110,139 @@ public class WorkOrder {
         this.projectId = projectId;
     }
 
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public long getProjectItemId() {
+        return projectItemId;
+    }
+
+    public void setProjectItemId(long projectItemId) {
+        this.projectItemId = projectItemId;
+    }
+
+    public String getProjectItemName() {
+        return projectItemName;
+    }
+
+    public void setProjectItemName(String projectItemName) {
+        this.projectItemName = projectItemName;
+    }
+
+    public long getProjectItemTargetId() {
+        return projectItemTargetId;
+    }
+
+    public void setProjectItemTargetId(long projectItemTargetId) {
+        this.projectItemTargetId = projectItemTargetId;
+    }
+
+    public String getProjectItemTargetName() {
+        return projectItemTargetName;
+    }
+
+    public void setProjectItemTargetName(String projectItemTargetName) {
+        this.projectItemTargetName = projectItemTargetName;
+    }
+
+    public long getProjectItemTargetRoomId() {
+        return projectItemTargetRoomId;
+    }
+
+    public void setProjectItemTargetRoomId(long projectItemTargetRoomId) {
+        this.projectItemTargetRoomId = projectItemTargetRoomId;
+    }
+
+    public String getProjectItemTargetRoomNumber() {
+        return projectItemTargetRoomNumber;
+    }
+
+    public void setProjectItemTargetRoomNumber(String projectItemTargetRoomNumber) {
+        this.projectItemTargetRoomNumber = projectItemTargetRoomNumber;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public int getState() {
+        return state;
+    }
+
+    public void setState(int state) {
+        this.state = state;
+    }
+
+    public long getProjectFlowId() {
+        return projectFlowId;
+    }
+
+    public void setProjectFlowId(long projectFlowId) {
+        this.projectFlowId = projectFlowId;
+    }
+
+    public String getFlowUserList() {
+        return flowUserList;
+    }
+
+    public void setFlowUserList(String flowUserList) {
+        this.flowUserList = flowUserList;
+    }
+
+    public String getAttachment() {
+        return attachment;
+    }
+
+    public void setAttachment(String attachment) {
+        this.attachment = attachment;
+    }
+
+    public String getDocument() {
+        return document;
+    }
+
+    public void setDocument(String document) {
+        this.document = document;
+    }
+
+    public String getReceiver() {
+        return receiver;
+    }
+
+    public void setReceiver(String receiver) {
+        this.receiver = receiver;
+    }
+
+    public String getData() {
+        return data;
+    }
+
+    public void setData(String data) {
+        this.data = data;
+    }
 }

+ 11 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/service/ProjectItemTargetRoomService.java

@@ -36,6 +36,8 @@ public class ProjectItemTargetRoomService {
 
     public Map<Long, ProjectItemTarget> projectItemTargetCache = new HashMap<Long, ProjectItemTarget>();
 
+    public Map<Long, ProjectItemTargetRoom> projectItemTargetRoomCache = new HashMap<Long, ProjectItemTargetRoom>();
+
     public Project getProject(Long pk) {
         Project project = projectCache.get(pk);
         if (project == null) {
@@ -63,6 +65,15 @@ public class ProjectItemTargetRoomService {
         return projectItemTarget;
     }
 
+    public ProjectItemTargetRoom getProjectItemTargetRoom(Long pk) {
+        ProjectItemTargetRoom projectItemTargetRoom = projectItemTargetRoomCache.get(pk);
+        if (projectItemTargetRoom == null) {
+            projectItemTargetRoom = projectItemTargetRoomDao.get(pk);
+            projectItemTargetRoomCache.put((Long) pk, projectItemTargetRoom);
+        }
+        return projectItemTargetRoom;
+    }
+
     public ProjectItemTargetRoom get(long id) {
         ProjectItemTargetRoom room = projectItemTargetRoomDao.get(id);
         if(room != null){

+ 14 - 6
virgo.api/src/main/java/com/bosshand/virgo/api/service/WorkOrderService.java

@@ -13,20 +13,28 @@ public class WorkOrderService {
     @Autowired
     private WorkOrderDao workOrderDao;
 
-    public int insert (WorkOrder workOrder){
+    public int getTotalCount(WorkOrder workOrder) {
+        return workOrderDao.getTotalCount(workOrder);
+    }
+
+    public List<WorkOrder> getLimit(WorkOrder workOrder, int currPage, int pageSize) {
+        int currIndex = (currPage - 1) * pageSize;
+        return workOrderDao.getLimit(workOrder, currIndex, pageSize);
+    }
+
+    public int insert(WorkOrder workOrder) {
         return workOrderDao.insert(workOrder);
     }
 
-    public int update(WorkOrder workOrder){
+    public int update(WorkOrder workOrder) {
         return workOrderDao.update(workOrder);
     }
 
-    public int delete(long id){
+    public int delete(long id) {
         return workOrderDao.delete(id);
     }
 
-    public List<WorkOrder> getList(WorkOrder workOrder){
-        return workOrderDao.getList(workOrder);
+    public WorkOrder get(long id) {
+        return workOrderDao.get(id);
     }
-
 }

+ 89 - 6
virgo.api/src/main/resources/mapper/WorkOrderMapper.xml

@@ -7,10 +7,26 @@
     <resultMap type="com.bosshand.virgo.api.model.WorkOrder" id="workOrderResult">
         <id column="id" property="id"/>
         <result column="projectId" property="projectId"/>
+        <result column="projectItemId" property="projectItemId"/>
+        <result column="projectItemTargetId" property="projectItemTargetId"/>
+        <result column="projectItemTargetRoomId" property="projectItemTargetRoomId"/>
+        <result column="date" property="date"/>
+        <result column="name" property="name"/>
+        <result column="type" property="type"/>
+        <result column="state" property="state"/>
+        <result column="projectFlowId" property="projectFlowId"/>
+        <result column="flowUserList" property="flowUserList"/>
+        <result column="attachment" property="attachment"/>
+        <result column="document" property="document"/>
+        <result column="receiver" property="receiver"/>
+        <result column="data" property="data"/>
     </resultMap>
 
     <insert id="insert" parameterType="com.bosshand.virgo.api.model.WorkOrder" useGeneratedKeys="true" keyProperty="id">
-        INSERT INTO work_order(projectId) VALUES (#{projectId})
+        INSERT INTO work_order(`projectId`, `projectItemId`, `projectItemTargetId`, `projectItemTargetRoomId`, `date`,
+                               `name`, `type`, `state`, `projectFlowId`, `flowUserList`, `attachment`, `document`, `receiver`, `data`)
+        VALUES (#{projectId}, #{projectItemId}, #{projectItemTargetId}, #{projectItemTargetRoomId}, now(),
+                #{name}, #{type}, #{state}, #{projectFlowId}, #{flowUserList}, #{attachment}, #{document}, #{receiver}, #{data})
     </insert>
 
     <delete id="delete">
@@ -21,20 +37,87 @@
         UPDATE work_order
         <trim prefix="set" suffixOverrides=",">
             <if test="projectId!=0">projectId=#{projectId},</if>
+            <if test="projectItemId!=0">projectItemId=#{projectItemId},</if>
+            <if test="projectItemTargetId!=0">projectItemTargetId=#{projectItemTargetId},</if>
+            <if test="projectItemTargetRoomId!=0">projectItemTargetRoomId=#{projectItemTargetRoomId},</if>
+            <if test="date==null">date=now(),</if>
+            <if test="name!=null">name=#{name},</if>
+            <if test="type!=0">type=#{type},</if>
+            <if test="state!=-1">state=#{state},</if>
+            <if test="projectFlowId!=0">projectFlowId=#{projectFlowId},</if>
+            <if test="flowUserList!=null">flowUserList=#{flowUserList},</if>
+            <if test="attachment!=null">attachment=#{attachment},</if>
+            <if test="document!=null">document=#{document},</if>
+            <if test="receiver!=null">receiver=#{receiver},</if>
+            <if test="data!=null">data=#{data},</if>
         </trim>
         WHERE id=#{id}
     </update>
 
-    <select id="getList" resultMap="workOrderResult">
+    <select id="get" resultMap="workOrderResult">
+        SELECT * FROM work_order where id = #{id}
+    </select>
+
+    <select id="getTotalCount" parameterType="com.bosshand.virgo.api.model.WorkOrder" resultType="Integer">
+        SELECT count(*) FROM work_order
+        <where>
+            <if test="projectId!=0">
+                and projectId=#{projectId}
+            </if>
+            <if test="projectItemId!=0">
+                and projectItemId=#{projectItemId}
+            </if>
+            <if test="projectItemTargetId!=0">
+                and projectItemTargetId=#{projectItemTargetId}
+            </if>
+            <if test="projectItemTargetRoomId!=0">
+                and projectItemTargetRoomId=#{projectItemTargetRoomId}
+            </if>
+            <if test="name!=null">
+                and name=#{name}
+            </if>
+            <if test="type!=0">
+                and type=#{type}
+            </if>
+            <if test="state!=-1">
+                and state=#{state}
+            </if>
+            <if test="projectFlowId!=0">
+                and projectFlowId=#{projectFlowId}
+            </if>
+        </where>
+    </select>
+
+    <select id="getLimit" resultMap="workOrderResult">
         SELECT * FROM work_order
         <where>
-            <if test="id != 0">
-                and id = #{id}
+            <if test="p.projectId!=0">
+                and projectId=#{p.projectId}
+            </if>
+            <if test="p.projectItemId!=0">
+                and projectItemId=#{p.projectItemId}
+            </if>
+            <if test="p.projectItemTargetId!=0">
+                and projectItemTargetId=#{p.projectItemTargetId}
+            </if>
+            <if test="p.projectItemTargetRoomId!=0">
+                and projectItemTargetRoomId=#{p.projectItemTargetRoomId}
+            </if>
+            <if test="p.name!=null">
+                and name=#{p.name}
+            </if>
+            <if test="p.type!=0">
+                and type=#{p.type}
+            </if>
+            <if test="p.state!=-1">
+                and state=#{p.state}
             </if>
-            <if test="projectId != 0">
-                and projectId = #{projectId}
+            <if test="p.projectFlowId!=0">
+                and projectFlowId=#{p.projectFlowId}
             </if>
         </where>
+        order by date desc
+        limit #{currIndex} , #{pageSize}
     </select>
 
 </mapper>