dcs 1 year ago
parent
commit
304030011d

+ 15 - 12
virgo.api/src/main/java/com/bosshand/virgo/api/controller/WorkOrderController.java

@@ -5,6 +5,7 @@ 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 com.bosshand.virgo.core.utils.StringUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,17 +26,12 @@ public class WorkOrderController {
     @Autowired
     ProjectItemTargetRoomService projectItemTargetRoomService;
 
-    @ApiOperation("获取")
+    @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());
-        }
+        rooms(dataList);
         Map<String, Object> result = new HashMap<>();
         result.put("dataList", dataList);
         result.put("totalCount", totalCount);
@@ -67,13 +63,20 @@ public class WorkOrderController {
     @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());
+        Map<Long, String> rooms = new HashMap();
+        if (StringUtil.notBlank(wo.getProjectItemTargetRoomIds())) {
+            wo.setRoomMap(projectItemTargetRoomService.getRoomLevel(rooms, wo.getProjectItemTargetRoomIds()));
         }
         return Response.ok(wo);
     }
 
+    private void rooms(List<WorkOrder> list) {
+        for (WorkOrder data : list) {
+            Map<Long, String> rooms = new HashMap();
+            if (StringUtil.notBlank(data.getProjectItemTargetRoomIds())) {
+                data.setRoomMap(projectItemTargetRoomService.getRoomLevel(rooms, data.getProjectItemTargetRoomIds()));
+            }
+        }
+    }
+
 }

+ 164 - 95
virgo.api/src/main/java/com/bosshand/virgo/api/model/WorkOrder.java

@@ -3,6 +3,8 @@ package com.bosshand.virgo.api.model;
 import com.fasterxml.jackson.annotation.JsonFormat;
 
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 工单管理
@@ -16,36 +18,37 @@ public class WorkOrder {
      */
     private long projectId;
 
-    private String projectName;
-
     /**
-     * 单位工程id
+     * 房源ids
      */
-    private long projectItemId;
+    private String projectItemTargetRoomIds;
 
-    private String projectItemName;
+    private Map<Long, String> roomMap;
 
     /**
-     * 楼层id
+     * 租客类型
      */
-    private long projectItemTargetId;
+    private Integer tenantType;
 
-    private String projectItemTargetName;
+    /**
+     * 企业id
+     */
+    private long merchantId;
 
     /**
-     * 房间id
+     * 企业名称
      */
-    private long projectItemTargetRoomId;
+    private String merchantName;
 
     /**
-     * 房号
+     * 客户id
      */
-    private String projectItemTargetRoomNumber;
+    private long clientId;
 
     /**
-     * 创建者id
+     * 客户名称
      */
-    private long userId;
+    private String clientName;
 
     /**
      * 创建时间
@@ -54,51 +57,77 @@ public class WorkOrder {
     private Date date;
 
     /**
-     * 工单名称
+     * 创建人
      */
-    private String name;
+    private long userId;
 
     /**
-     * 类型
+     * 合同id
      */
-    private int type;
+    private long contractId;
 
     /**
-     * 状态
+     * 合同编码
      */
-    private int state = -1;
+    private String contractCode;
 
     /**
-     * 生成流程Id
+     * 设备名称
      */
-    private long projectFlowId;
+    private String deviceName;
 
     /**
-     * 审核列表
+     * 跟进人
      */
-    private String flowUserList;
+    private String followUpPerson;
 
     /**
-     * 附件
+     * 联系电话
      */
-    private String attachment;
+    private String followUpPersonPhone;
 
     /**
-     * 文档
+     * 服务方式
      */
-    private String document;
+    private Integer workWay;
 
     /**
-     * 收件人
+     * 摘要
      */
-    private String receiver;
+    private String compendious;
+
+    /**
+     * 图片
+     */
+    private String picture;
+
+    /**
+     * 工单名称
+     */
+    private String name;
+
+    /**
+     * 类型
+     */
+    private Integer type;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    private List<Integer> statusList;
+
+    /**
+     * 附件
+     */
+    private String attachment;
 
     /**
      * 自定义字段
      */
     private String data;
 
-
     public long getId() {
         return id;
     }
@@ -115,60 +144,68 @@ public class WorkOrder {
         this.projectId = projectId;
     }
 
-    public String getProjectName() {
-        return projectName;
+    public String getProjectItemTargetRoomIds() {
+        return projectItemTargetRoomIds;
+    }
+
+    public void setProjectItemTargetRoomIds(String projectItemTargetRoomIds) {
+        this.projectItemTargetRoomIds = projectItemTargetRoomIds;
     }
 
-    public void setProjectName(String projectName) {
-        this.projectName = projectName;
+    public Map<Long, String> getRoomMap() {
+        return roomMap;
     }
 
-    public long getProjectItemId() {
-        return projectItemId;
+    public void setRoomMap(Map<Long, String> roomMap) {
+        this.roomMap = roomMap;
     }
 
-    public void setProjectItemId(long projectItemId) {
-        this.projectItemId = projectItemId;
+    public Integer getTenantType() {
+        return tenantType;
     }
 
-    public String getProjectItemName() {
-        return projectItemName;
+    public void setTenantType(Integer tenantType) {
+        this.tenantType = tenantType;
     }
 
-    public void setProjectItemName(String projectItemName) {
-        this.projectItemName = projectItemName;
+    public long getMerchantId() {
+        return merchantId;
     }
 
-    public long getProjectItemTargetId() {
-        return projectItemTargetId;
+    public void setMerchantId(long merchantId) {
+        this.merchantId = merchantId;
     }
 
-    public void setProjectItemTargetId(long projectItemTargetId) {
-        this.projectItemTargetId = projectItemTargetId;
+    public String getMerchantName() {
+        return merchantName;
     }
 
-    public String getProjectItemTargetName() {
-        return projectItemTargetName;
+    public void setMerchantName(String merchantName) {
+        this.merchantName = merchantName;
     }
 
-    public void setProjectItemTargetName(String projectItemTargetName) {
-        this.projectItemTargetName = projectItemTargetName;
+    public long getClientId() {
+        return clientId;
     }
 
-    public long getProjectItemTargetRoomId() {
-        return projectItemTargetRoomId;
+    public void setClientId(long clientId) {
+        this.clientId = clientId;
     }
 
-    public void setProjectItemTargetRoomId(long projectItemTargetRoomId) {
-        this.projectItemTargetRoomId = projectItemTargetRoomId;
+    public String getClientName() {
+        return clientName;
     }
 
-    public String getProjectItemTargetRoomNumber() {
-        return projectItemTargetRoomNumber;
+    public void setClientName(String clientName) {
+        this.clientName = clientName;
     }
 
-    public void setProjectItemTargetRoomNumber(String projectItemTargetRoomNumber) {
-        this.projectItemTargetRoomNumber = projectItemTargetRoomNumber;
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
     }
 
     public long getUserId() {
@@ -179,76 +216,108 @@ public class WorkOrder {
         this.userId = userId;
     }
 
-    public Date getDate() {
-        return date;
+    public long getContractId() {
+        return contractId;
     }
 
-    public void setDate(Date date) {
-        this.date = date;
+    public void setContractId(long contractId) {
+        this.contractId = contractId;
     }
 
-    public String getName() {
-        return name;
+    public String getContractCode() {
+        return contractCode;
     }
 
-    public void setName(String name) {
-        this.name = name;
+    public void setContractCode(String contractCode) {
+        this.contractCode = contractCode;
     }
 
-    public int getType() {
-        return type;
+    public String getDeviceName() {
+        return deviceName;
     }
 
-    public void setType(int type) {
-        this.type = type;
+    public void setDeviceName(String deviceName) {
+        this.deviceName = deviceName;
     }
 
-    public int getState() {
-        return state;
+    public String getFollowUpPerson() {
+        return followUpPerson;
     }
 
-    public void setState(int state) {
-        this.state = state;
+    public void setFollowUpPerson(String followUpPerson) {
+        this.followUpPerson = followUpPerson;
     }
 
-    public long getProjectFlowId() {
-        return projectFlowId;
+    public String getFollowUpPersonPhone() {
+        return followUpPersonPhone;
     }
 
-    public void setProjectFlowId(long projectFlowId) {
-        this.projectFlowId = projectFlowId;
+    public void setFollowUpPersonPhone(String followUpPersonPhone) {
+        this.followUpPersonPhone = followUpPersonPhone;
     }
 
-    public String getFlowUserList() {
-        return flowUserList;
+    public Integer getWorkWay() {
+        return workWay;
     }
 
-    public void setFlowUserList(String flowUserList) {
-        this.flowUserList = flowUserList;
+    public void setWorkWay(Integer workWay) {
+        this.workWay = workWay;
     }
 
-    public String getAttachment() {
-        return attachment;
+    public String getCompendious() {
+        return compendious;
     }
 
-    public void setAttachment(String attachment) {
-        this.attachment = attachment;
+    public void setCompendious(String compendious) {
+        this.compendious = compendious;
+    }
+
+    public String getPicture() {
+        return picture;
     }
 
-    public String getDocument() {
-        return document;
+    public void setPicture(String picture) {
+        this.picture = picture;
     }
 
-    public void setDocument(String document) {
-        this.document = document;
+    public String getName() {
+        return name;
     }
 
-    public String getReceiver() {
-        return receiver;
+    public void setName(String name) {
+        this.name = name;
     }
 
-    public void setReceiver(String receiver) {
-        this.receiver = receiver;
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public List<Integer> getStatusList() {
+        return statusList;
+    }
+
+    public void setStatusList(List<Integer> statusList) {
+        this.statusList = statusList;
+    }
+
+    public String getAttachment() {
+        return attachment;
+    }
+
+    public void setAttachment(String attachment) {
+        this.attachment = attachment;
     }
 
     public String getData() {

+ 92 - 79
virgo.api/src/main/resources/mapper/WorkOrderMapper.xml

@@ -7,27 +7,34 @@
     <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="projectItemTargetRoomIds" property="projectItemTargetRoomIds"/>
+        <result column="tenantType" property="tenantType"/>
+        <result column="merchantId" property="merchantId"/>
+        <result column="merchantName" property="merchantName"/>
+        <result column="clientId" property="clientId"/>
+        <result column="clientName" property="clientName"/>
         <result column="userId" property="userId"/>
+        <result column="contractId" property="contractId"/>
+        <result column="contractCode" property="contractCode"/>
+        <result column="deviceName" property="deviceName"/>
+        <result column="followUpPerson" property="followUpPerson"/>
+        <result column="followUpPersonPhone" property="followUpPersonPhone"/>
+        <result column="workWay" property="workWay"/>
+        <result column="compendious" property="compendious"/>
+        <result column="picture" property="picture"/>
         <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="status" property="status"/>
         <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`, `projectItemId`, `projectItemTargetId`, `projectItemTargetRoomId`, `userId`, `date`,
-                               `name`, `type`, `state`, `projectFlowId`, `flowUserList`, `attachment`, `document`, `receiver`, `data`)
-        VALUES (#{projectId}, #{projectItemId}, #{projectItemTargetId}, #{projectItemTargetRoomId}, #{userId}, now(),
-                #{name}, #{type}, #{state}, #{projectFlowId}, #{flowUserList}, #{attachment}, #{document}, #{receiver}, #{data})
+        INSERT INTO work_order(`projectId`, `projectItemTargetRoomIds`, `tenantType`, `merchantId`, `clientId`, `userId`, `contractId`, `contractCode`, `deviceName`, `followUpPerson`,
+                               `followUpPersonPhone`, `workWay`, `compendious`, `picture`, `date`, `name`, `type`, `status`, `attachment`, `data`)
+        VALUES (#{projectId}, #{projectItemTargetRoomIds}, #{tenantType}, #{merchantId}, #{clientId}, #{userId}, #{contractId}, #{contractCode}, #{deviceName}, #{followUpPerson},
+                #{followUpPersonPhone}, #{workWay}, #{compendious}, #{picture}, now(), #{name}, #{type}, #{status}, #{attachment}, #{data})
     </insert>
 
     <delete id="delete">
@@ -38,92 +45,98 @@
         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="projectItemTargetRoomIds!=null">projectItemTargetRoomIds=#{projectItemTargetRoomIds},</if>
+            <if test="tenantType!=null">tenantType=#{tenantType},</if>
+            <if test="merchantId!=0">merchantId=#{merchantId},</if>
+            <if test="clientId!=0">clientId=#{clientId},</if>
+            <if test="userId!=0">userId=#{userId},</if>
+            <if test="contractId!=0">contractId=#{contractId},</if>
+            <if test="contractCode!=null">contractCode=#{contractCode},</if>
+            <if test="deviceName!=null">deviceName=#{deviceName},</if>
+            <if test="followUpPerson!=null">followUpPerson=#{followUpPerson},</if>
+            <if test="followUpPersonPhone!=null">followUpPersonPhone=#{followUpPersonPhone},</if>
+            <if test="workWay!=null">workWay=#{workWay},</if>
+            <if test="compendious!=null">compendious=#{compendious},</if>
+            <if test="picture!=null">picture=#{picture},</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="type!=null">type=#{type},</if>
+            <if test="status!=null">status=#{status},</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>
 
+    <sql id="query">
+        SELECT a.*, c.name as merchantName, d.name as clientName FROM work_order a
+        LEFT JOIN merchant c ON a.merchantId = c.id
+        LEFT JOIN mgr_client d ON a.clientId = d.id
+    </sql>
+
     <select id="get" resultMap="workOrderResult">
-        SELECT * FROM work_order where id = #{id}
+        <include refid="query"/>
+        where a.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="userId!=0">
-                and userId=#{userId}
-            </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>
+            <if test="projectId!=0">and projectId=#{projectId}</if>
+            <if test="projectItemTargetRoomIds!=null">and projectItemTargetRoomIds=#{projectItemTargetRoomIds}</if>
+            <if test="tenantType!=null">and tenantType=#{tenantType}</if>
+            <if test="merchantId!=0">and merchantId=#{merchantId}</if>
+            <if test="clientId!=0">and clientId=#{clientId}</if>
+            <if test="userId!=0">and userId=#{userId}</if>
+            <if test="contractId!=0">and contractId=#{contractId}</if>
+            <if test="contractCode!=null">and contractCode=#{contractCode}</if>
+            <if test="deviceName!=null">and deviceName=#{deviceName}</if>
+            <if test="followUpPerson!=null">and followUpPerson=#{followUpPerson}</if>
+            <if test="followUpPersonPhone!=null">and followUpPersonPhone=#{followUpPersonPhone}</if>
+            <if test="workWay!=null">and workWay=#{workWay}</if>
+            <if test="compendious!=null">and compendious=#{compendious}</if>
+            <if test="picture!=null">and picture=#{picture}</if>
+            <if test="name!=null">and name=#{name}</if>
+            <if test="type!=null">and type=#{type}</if>
+            <if test="status!=null">and status=#{status}</if>
+            <if test="statusList!=null"> and status in
+                <foreach item="item" index="index" collection="statusList" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="attachment!=null">and attachment=#{attachment}</if>
+            <if test="data!=null">and data=#{data}</if>
         </where>
     </select>
 
     <select id="getLimit" resultMap="workOrderResult">
-        SELECT * FROM work_order
+        <include refid="query"/>
         <where>
-            <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.userId!=0">
-                and userId=#{p.userId}
-            </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="p.projectFlowId!=0">
-                and projectFlowId=#{p.projectFlowId}
-            </if>
+            <if test="p.projectId!=0">and a.projectId=#{p.projectId}</if>
+            <if test="p.projectItemTargetRoomIds!=null">and a.projectItemTargetRoomIds=#{p.projectItemTargetRoomIds}</if>
+            <if test="p.tenantType!=null">and a.tenantType=#{p.tenantType}</if>
+            <if test="p.merchantId!=0">and a.merchantId=#{p.merchantId}</if>
+            <if test="p.clientId!=0">and a.clientId=#{p.clientId}</if>
+            <if test="p.userId!=0">and a.userId=#{p.userId}</if>
+            <if test="p.contractId!=0">and a.contractId=#{p.contractId}</if>
+            <if test="p.contractCode!=null">and a.contractCode=#{p.contractCode}</if>
+            <if test="p.deviceName!=null">and a.deviceName=#{p.deviceName}</if>
+            <if test="p.followUpPerson!=null">and a.followUpPerson=#{p.followUpPerson}</if>
+            <if test="p.followUpPersonPhone!=null">and a.followUpPersonPhone=#{p.followUpPersonPhone}</if>
+            <if test="p.workWay!=null">and a.workWay=#{p.workWay}</if>
+            <if test="p.compendious!=null">and a.compendious=#{p.compendious}</if>
+            <if test="p.picture!=null">and a.picture=#{p.picture}</if>
+            <if test="p.name!=null">and a.name=#{p.name}</if>
+            <if test="p.type!=null">and a.type=#{p.type}</if>
+            <if test="p.status!=null">and a.status=#{p.status}</if>
+            <if test="p.statusList!=null"> and a.status in
+                <foreach item="item" index="index" collection="p.statusList" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="p.attachment!=null">and a.attachment=#{p.attachment}</if>
+            <if test="p.data!=null">and a.data=#{p.data}</if>
         </where>
-        order by date desc
+        order by a.date desc
         limit #{currIndex} , #{pageSize}
     </select>