Ver Fonte

移动端-通知公告接口,工单新增创建人

zengy há 1 semana atrás
pai
commit
8fb5cb527a
17 ficheiros alterados com 231 adições e 64 exclusões
  1. 4 4
      pipe-network-service/sql/water_supply_alarm_test_data.sql
  2. 32 13
      pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/system/SysNoticeController.java
  3. 9 0
      pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/system/SysUserController.java
  4. 4 3
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/MaintenanceDataStatServiceImpl.java
  5. 3 7
      pipe-network-service/zksy-system/src/main/java/com/zksy/ops/domain/WorkOrder.java
  6. 2 9
      pipe-network-service/zksy-system/src/main/java/com/zksy/ops/domain/vo/WorkOrderVO.java
  7. 5 8
      pipe-network-service/zksy-system/src/main/java/com/zksy/ops/service/impl/WorkOrderServiceImpl.java
  8. 1 1
      pipe-network-service/zksy-system/src/main/java/com/zksy/system/domain/SysNotice.java
  9. 91 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/system/domain/vo/ContactUserVo.java
  10. 11 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/system/mapper/SysUserMapper.java
  11. 10 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/system/service/ISysUserService.java
  12. 0 2
      pipe-network-service/zksy-system/src/main/java/com/zksy/system/service/impl/SysNoticeServiceImpl.java
  13. 12 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/system/service/impl/SysUserServiceImpl.java
  14. 3 5
      pipe-network-service/zksy-system/src/main/resources/mapper/ops/WorkOrderMapper.xml
  15. 6 5
      pipe-network-service/zksy-system/src/main/resources/mapper/system/SysNoticeMapper.xml
  16. 35 0
      pipe-network-service/zksy-system/src/main/resources/mapper/system/SysUserMapper.xml
  17. 3 7
      zk-api-service/src/main/java/com/zksy/api/domain/WorkOrder.java

+ 4 - 4
pipe-network-service/sql/water_supply_alarm_test_data.sql

@@ -127,14 +127,14 @@ VALUES
 -- ------------------------------------------------------------
 INSERT INTO app_user.work_order
     (order_no, device_id,
-     order_level, order_desc, dept_id, dispatch_user, dispatch_time,
-     receive_user, order_status, delayed_reason, delayed_deadline, plan_finish_time,
+     order_level, order_desc, dept_id, receive_user, order_status,
+     delayed_reason, delayed_deadline, plan_finish_time,
      real_finish_time, repair_result, verify_user, verify_time, create_time, update_time,
      maintenance_before_img)
 VALUES
     ('TEST-WO-001', 'TEST-EQ-WL-002',
-     2, '供水监测报警测试工单-水位超限', NULL, NULL, NULL,
-     NULL, 5, NULL, NULL, NULL,
+     2, '供水监测报警测试工单-水位超限', NULL, NULL, 5,
+     NULL, NULL, NULL,
      NULL, '现场已处理', NULL, NULL, now(), now(),
      NULL);
 

+ 32 - 13
pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/system/SysNoticeController.java

@@ -1,6 +1,7 @@
 package com.zksy.web.controller.system;
 
 import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -22,13 +23,12 @@ import com.zksy.system.service.ISysNoticeService;
 
 /**
  * 公告 信息操作处理
- * 
+ *
  * @author zksy
  */
 @RestController
 @RequestMapping("/system/notice")
-public class SysNoticeController extends BaseController
-{
+public class SysNoticeController extends BaseController {
     @Autowired
     private ISysNoticeService noticeService;
 
@@ -37,8 +37,7 @@ public class SysNoticeController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:notice:list')")
     @GetMapping("/list")
-    public TableDataInfo list(SysNotice notice)
-    {
+    public TableDataInfo list(SysNotice notice) {
         startPage();
         List<SysNotice> list = noticeService.selectNoticeList(notice);
         return getDataTable(list);
@@ -49,8 +48,7 @@ public class SysNoticeController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:notice:query')")
     @GetMapping(value = "/{noticeId}")
-    public AjaxResult getInfo(@PathVariable Long noticeId)
-    {
+    public AjaxResult getInfo(@PathVariable Long noticeId) {
         return success(noticeService.selectNoticeById(noticeId));
     }
 
@@ -60,8 +58,7 @@ public class SysNoticeController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:notice:add')")
     @Log(title = "通知公告", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysNotice notice)
-    {
+    public AjaxResult add(@Validated @RequestBody SysNotice notice) {
         notice.setCreateBy(getUsername());
         return toAjax(noticeService.insertNotice(notice));
     }
@@ -72,8 +69,7 @@ public class SysNoticeController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:notice:edit')")
     @Log(title = "通知公告", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysNotice notice)
-    {
+    public AjaxResult edit(@Validated @RequestBody SysNotice notice) {
         notice.setUpdateBy(getUsername());
         return toAjax(noticeService.updateNotice(notice));
     }
@@ -84,8 +80,31 @@ public class SysNoticeController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:notice:remove')")
     @Log(title = "通知公告", businessType = BusinessType.DELETE)
     @DeleteMapping("/{noticeIds}")
-    public AjaxResult remove(@PathVariable Long[] noticeIds)
-    {
+    public AjaxResult remove(@PathVariable Long[] noticeIds) {
         return toAjax(noticeService.deleteNoticeByIds(noticeIds));
     }
+
+
+    /**
+     * 获取移动端通知公告列表(登录后即可访问)。
+     */
+    @GetMapping("/mobile/list")
+    public TableDataInfo mobileList(SysNotice notice) {
+        notice.setStatus("0");
+        startPage();
+        List<SysNotice> list = noticeService.selectNoticeList(notice);
+        return getDataTable(list);
+    }
+
+    /**
+     * 获取移动端通知公告详情(登录后即可访问)。
+     */
+    @GetMapping("/mobile/{noticeId}")
+    public AjaxResult mobileGetInfo(@PathVariable Long noticeId) {
+        SysNotice notice = noticeService.selectNoticeById(noticeId);
+        if (notice == null || !"0".equals(notice.getStatus())) {
+            return error("通知公告不存在或已关闭");
+        }
+        return success(notice);
+    }
 }

+ 9 - 0
pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/system/SysUserController.java

@@ -262,4 +262,13 @@ public class SysUserController extends BaseController
     public AjaxResult enabledAll() {
         return success(userService.selectAllEnabledUser());
     }
+
+    /**
+     * 获取当前用户所在部门及全部下级部门的通讯录。
+     */
+    @GetMapping("/contacts")
+    public AjaxResult contacts() {
+        Long deptId = getLoginUser().getUser().getDeptId();
+        return success(userService.selectContactsByDeptId(deptId, getUserId()));
+    }
 }

+ 4 - 3
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/MaintenanceDataStatServiceImpl.java

@@ -419,7 +419,8 @@ public class MaintenanceDataStatServiceImpl extends ServiceImpl<MaintenanceDataS
     }
 
     /**
-     * 平均处置时长:已结案工单 (realFinishTime - dispatchTime) 平均小时
+     * 平均处置时长:已结案工单 (realFinishTime - createTime) 平均小时
+     * 注:派单时间(dispatch_time)已废弃,处置时长起点改用工单创建时间(createTime)。
      */
     private double calcAvgDisposalTime(List<WorkOrder> orders) {
         if (CollUtil.isEmpty(orders)) {
@@ -427,14 +428,14 @@ public class MaintenanceDataStatServiceImpl extends ServiceImpl<MaintenanceDataS
         }
         List<WorkOrder> finishedOrders = orders.stream()
                 .filter(o -> Integer.valueOf(6).equals(o.getOrderStatus()))
-                .filter(o -> o.getRealFinishTime() != null && o.getDispatchTime() != null)
+                .filter(o -> o.getRealFinishTime() != null && o.getCreateTime() != null)
                 .collect(Collectors.toList());
         if (CollUtil.isEmpty(finishedOrders)) {
             return 0;
         }
         double totalHours = 0;
         for (WorkOrder order : finishedOrders) {
-            long diffMillis = order.getRealFinishTime().getTime() - order.getDispatchTime().getTime();
+            long diffMillis = order.getRealFinishTime().getTime() - order.getCreateTime().getTime();
             totalHours += diffMillis / (1000.0 * 60 * 60);
         }
         return round1(totalHours / finishedOrders.size());

+ 3 - 7
pipe-network-service/zksy-system/src/main/java/com/zksy/ops/domain/WorkOrder.java

@@ -46,13 +46,6 @@ public class WorkOrder implements Serializable {
     @ApiModelProperty(value = "归属部门ID,取派单时指定责任人所属部门;待派单阶段为创建人部门。数据权限按此字段做「本部门及子部门」过滤")
     private Long deptId;
 
-    @ApiModelProperty(value = "派单人ID")
-    private Long dispatchUser;
-
-    @ApiModelProperty(value = "派单时间")
-    @JsonFormat(locale = "zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date dispatchTime;
-
     @ApiModelProperty(value = "责任人用户ID")
     private Long receiveUser;
 
@@ -93,6 +86,9 @@ public class WorkOrder implements Serializable {
     @JsonFormat(locale = "zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date verifyTime;
 
+    @ApiModelProperty(value = "创建人ID")
+    private Long createBy;
+
     @ApiModelProperty(value = "创建时间")
     @JsonFormat(locale = "zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;

+ 2 - 9
pipe-network-service/zksy-system/src/main/java/com/zksy/ops/domain/vo/WorkOrderVO.java

@@ -52,13 +52,6 @@ public class WorkOrderVO implements Serializable {
     @ApiModelProperty("归属部门ID")
     private Long deptId;
 
-    @ApiModelProperty("派单人ID")
-    private Long dispatchUser;
-
-    @ApiModelProperty("派单时间")
-    @JsonFormat(locale = "zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date dispatchTime;
-
     @ApiModelProperty("责任人用户ID")
     private Long receiveUser;
 
@@ -110,8 +103,8 @@ public class WorkOrderVO implements Serializable {
     @ApiModelProperty("责任人姓名(列表/详情均回填)")
     private String receiveUserName;
 
-    @ApiModelProperty("派单人姓名(列表/详情均回填)")
-    private String dispatchUserName;
+    @ApiModelProperty("创建人ID(创建工单时写入当前用户)")
+    private Long createBy;
 
     @ApiModelProperty("设备名称(仅详情回填,取自 equipment_base.equipment_name)")
     private String deviceName;

+ 5 - 8
pipe-network-service/zksy-system/src/main/java/com/zksy/ops/service/impl/WorkOrderServiceImpl.java

@@ -300,6 +300,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
             workOrder.setDeptId(assignScopeSupport.currentDeptId());
         }
         workOrder.setCreateTime(now);
+        workOrder.setCreateBy(currentUserId());
         workOrder.setUpdateTime(now);
         this.save(workOrder);
 
@@ -363,6 +364,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
         workOrder.setOrderStatus(WorkOrderStatusEnum.PENDING_DISPATCH.getCode());
         workOrder.setDelayApplyStatus(WorkOrderDelayApplyStatusEnum.NONE.getCode());
         workOrder.setCreateTime(now);
+        workOrder.setCreateBy(currentUserId());
         workOrder.setUpdateTime(now);
         this.save(workOrder);
 
@@ -416,6 +418,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
         }
         workOrder.setFaultTime(now);
         workOrder.setCreateTime(now);
+        workOrder.setCreateBy(currentUserId());
         workOrder.setUpdateTime(now);
         this.save(workOrder);
         hazard.setWorkOrderId(workOrder.getOrderId());
@@ -457,7 +460,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
         }
 
         Date now = new Date();
-        this.update(updateWrapper(id).set(WorkOrder::getOrderStatus, WorkOrderStatusEnum.PENDING_ACCEPT.getCode()).set(WorkOrder::getReceiveUser, handlerId).set(WorkOrder::getVerifyUser, verifyUserId).set(WorkOrder::getDispatchUser, currentUserId()).set(WorkOrder::getDispatchTime, now)
+        this.update(updateWrapper(id).set(WorkOrder::getOrderStatus, WorkOrderStatusEnum.PENDING_ACCEPT.getCode()).set(WorkOrder::getReceiveUser, handlerId).set(WorkOrder::getVerifyUser, verifyUserId)
                 // 数据归属部门跟随派单指定的责任人
                 .set(handler.getDeptId() != null, WorkOrder::getDeptId, handler.getDeptId())
                 // 计划完成时间:派单时可设定/修改,为空则保留原值
@@ -1079,9 +1082,6 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
             if (record.getReceiveUser() != null) {
                 record.setReceiveUserName(userMap.getOrDefault(record.getReceiveUser(), String.valueOf(record.getReceiveUser())));
             }
-            if (record.getDispatchUser() != null) {
-                record.setDispatchUserName(userMap.getOrDefault(record.getDispatchUser(), String.valueOf(record.getDispatchUser())));
-            }
         }
     }
 
@@ -1191,7 +1191,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
      * 按本页实际涉及的用户ID批量查询并构建「用户ID → 姓名」映射。
      *
      * <p>此前是全量拉取用户表(selectAllEnabledUser)再建 Map,用户量大时每次分页查询都要扫描全表。
-     * 实际只用到当页记录的 receiveUser / dispatchUser,故改为按 ID 精确查询。</p>
+     * 实际只用到当页记录的 receiveUser,故改为按 ID 精确查询。</p>
      *
      * @param records 当前页工单记录
      * @return 用户ID → 姓名的映射;查询失败时返回空 Map(降级为展示ID,不影响主流程)
@@ -1202,9 +1202,6 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
             if (record.getReceiveUser() != null) {
                 userIds.add(record.getReceiveUser());
             }
-            if (record.getDispatchUser() != null) {
-                userIds.add(record.getDispatchUser());
-            }
         }
         if (userIds.isEmpty()) {
             return new HashMap<>(0);

+ 1 - 1
pipe-network-service/zksy-system/src/main/java/com/zksy/system/domain/SysNotice.java

@@ -22,7 +22,7 @@ public class SysNotice extends BaseEntity
     private static final long serialVersionUID = 1L;
 
     /** 公告ID */
-    @TableId(type = IdType.ASSIGN_ID)
+    @TableId(type = IdType.AUTO)
     private Long noticeId;
 
     /** 公告标题 */

+ 91 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/system/domain/vo/ContactUserVo.java

@@ -0,0 +1,91 @@
+package com.zksy.system.domain.vo;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 移动端通讯录用户信息。
+ */
+public class ContactUserVo implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    private Long userId;
+    private String nickName;
+    private String phonenumber;
+    private Long deptId;
+    private String deptName;
+    private List<Long> postIds = new ArrayList<>();
+    private List<String> postNames = new ArrayList<>();
+
+    public Long getUserId()
+    {
+        return userId;
+    }
+
+    public void setUserId(Long userId)
+    {
+        this.userId = userId;
+    }
+
+    public String getNickName()
+    {
+        return nickName;
+    }
+
+    public void setNickName(String nickName)
+    {
+        this.nickName = nickName;
+    }
+
+    public String getPhonenumber()
+    {
+        return phonenumber;
+    }
+
+    public void setPhonenumber(String phonenumber)
+    {
+        this.phonenumber = phonenumber;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public String getDeptName()
+    {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName)
+    {
+        this.deptName = deptName;
+    }
+
+    public List<Long> getPostIds()
+    {
+        return postIds;
+    }
+
+    public void setPostIds(List<Long> postIds)
+    {
+        this.postIds = postIds;
+    }
+
+    public List<String> getPostNames()
+    {
+        return postNames;
+    }
+
+    public void setPostNames(List<String> postNames)
+    {
+        this.postNames = postNames;
+    }
+}

+ 11 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/system/mapper/SysUserMapper.java

@@ -3,6 +3,7 @@ package com.zksy.system.mapper;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 import com.zksy.common.core.domain.entity.SysUser;
+import com.zksy.system.domain.vo.ContactUserVo;
 
 /**
  * 用户表 数据层
@@ -26,6 +27,16 @@ public interface SysUserMapper
      */
     public List<SysUser> selectAllEnabledUser();
 
+    /**
+     * 查询指定部门及其全部下级部门的有效联系人。
+     *
+     * @param deptId 当前用户部门ID
+     * @param excludeUserId 需要排除的当前用户ID
+     * @return 通讯录联系人
+     */
+    public List<ContactUserVo> selectContactsByDeptId(@Param("deptId") Long deptId,
+            @Param("excludeUserId") Long excludeUserId);
+
     /**
      * 按用户ID批量查询有效用户(未删除且状态正常),用于按需回填姓名,避免全量拉取用户表
      *

+ 10 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/system/service/ISysUserService.java

@@ -2,6 +2,7 @@ package com.zksy.system.service;
 
 import java.util.List;
 import com.zksy.common.core.domain.entity.SysUser;
+import com.zksy.system.domain.vo.ContactUserVo;
 
 /**
  * 用户 业务层
@@ -25,6 +26,15 @@ public interface ISysUserService
      */
     public List<SysUser> selectAllEnabledUser();
 
+    /**
+     * 查询当前部门及其全部下级部门的有效联系人。
+     *
+     * @param deptId 当前用户部门ID
+     * @param excludeUserId 需要排除的当前用户ID
+     * @return 通讯录联系人
+     */
+    public List<ContactUserVo> selectContactsByDeptId(Long deptId, Long excludeUserId);
+
     /**
      * 按用户ID批量查询有效用户(未删除且状态正常)
      *

+ 0 - 2
pipe-network-service/zksy-system/src/main/java/com/zksy/system/service/impl/SysNoticeServiceImpl.java

@@ -3,7 +3,6 @@ package com.zksy.system.service.impl;
 import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.zksy.system.domain.SysNotice;
 import com.zksy.system.mapper.SysNoticeMapper;
 import com.zksy.system.service.ISysNoticeService;
@@ -52,7 +51,6 @@ public class SysNoticeServiceImpl implements ISysNoticeService
     @Override
     public int insertNotice(SysNotice notice)
     {
-        notice.setNoticeId(IdWorker.getId());
         return noticeMapper.insertNotice(notice);
     }
 

+ 12 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/system/service/impl/SysUserServiceImpl.java

@@ -22,6 +22,7 @@ import com.zksy.common.utils.spring.SpringUtils;
 import com.zksy.system.domain.SysPost;
 import com.zksy.system.domain.SysUserPost;
 import com.zksy.system.domain.SysUserRole;
+import com.zksy.system.domain.vo.ContactUserVo;
 import com.zksy.system.mapper.SysPostMapper;
 import com.zksy.system.mapper.SysRoleMapper;
 import com.zksy.system.mapper.SysUserMapper;
@@ -89,6 +90,17 @@ public class SysUserServiceImpl implements ISysUserService
         return userMapper.selectAllEnabledUser();
     }
 
+    /**
+     * 查询当前部门及其全部下级部门的有效联系人。
+     */
+    @Override
+    public List<ContactUserVo> selectContactsByDeptId(Long deptId, Long excludeUserId) {
+        if (deptId == null) {
+            return new ArrayList<>();
+        }
+        return userMapper.selectContactsByDeptId(deptId, excludeUserId);
+    }
+
     /**
      * 按用户ID批量查询有效用户(未删除且状态正常,不做数据权限过滤)
      *

+ 3 - 5
pipe-network-service/zksy-system/src/main/resources/mapper/ops/WorkOrderMapper.xml

@@ -11,8 +11,6 @@
             <result property="orderLevel" column="order_level" jdbcType="TINYINT"/>
             <result property="orderDesc" column="order_desc" jdbcType="VARCHAR"/>
             <result property="deptId" column="dept_id" jdbcType="BIGINT"/>
-            <result property="dispatchUser" column="dispatch_user" jdbcType="BIGINT"/>
-            <result property="dispatchTime" column="dispatch_time" jdbcType="TIMESTAMP"/>
             <result property="receiveUser" column="receive_user" jdbcType="BIGINT"/>
             <result property="orderStatus" column="order_status" jdbcType="TINYINT"/>
             <result property="delayApplyStatus" column="delay_apply_status" jdbcType="TINYINT"/>
@@ -27,17 +25,17 @@
             <result property="verifyUser" column="verify_user" jdbcType="BIGINT"/>
             <result property="verifyTime" column="verify_time" jdbcType="TIMESTAMP"/>
             <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="createBy" column="create_by" jdbcType="BIGINT"/>
             <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
     </resultMap>
 
     <sql id="Base_Column_List">
         order_id,order_no,device_id,
         order_level,fault_time,
-        order_desc,dept_id,dispatch_user,
-        dispatch_time,receive_user,order_status,
+        order_desc,dept_id,receive_user,order_status,
         delay_apply_status,delayed_reason,delayed_deadline,plan_finish_time,
         real_finish_time,repair_result,maintenance_before_img,maintenance_after_img,verify_user,
-        verify_time,create_time,update_time
+        verify_time,create_time,create_by,update_time
     </sql>
 
     <!-- 待派单(0)/待接单(1) 始终提醒;其余未办结状态仅在超时后提醒 -->

+ 6 - 5
pipe-network-service/zksy-system/src/main/resources/mapper/system/SysNoticeMapper.xml

@@ -18,7 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
     
     <sql id="selectNoticeVo">
-        select notice_id, notice_title, notice_type, cast(notice_content as char) as notice_content, status, create_by, create_time, update_by, update_time, remark 
+        select notice_id, notice_title, notice_type, notice_content, status, create_by, create_time, update_by, update_time, remark 
 		from app_user.sys_notice
     </sql>
     
@@ -39,12 +39,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="createBy != null and createBy != ''">
 				AND create_by like concat('%', #{createBy}, '%')
 			</if>
+			<if test="status != null and status != ''">
+				AND status = #{status}
+			</if>
 		</where>
     </select>
     
-    <insert id="insertNotice" parameterType="SysNotice">
+    <insert id="insertNotice" parameterType="SysNotice" useGeneratedKeys="true" keyProperty="noticeId" keyColumn="notice_id">
         insert into app_user.sys_notice (
-			notice_id,
 				<if test="noticeTitle != null and noticeTitle != '' ">notice_title, </if>
 				<if test="noticeType != null and noticeType != '' ">notice_type, </if>
 				<if test="noticeContent != null and noticeContent != '' ">notice_content, </if>
@@ -53,7 +55,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	 			<if test="createBy != null and createBy != ''">create_by,</if>
 	 			create_time
 	 		)values(
-	 			#{noticeId},
 				<if test="noticeTitle != null and noticeTitle != ''">#{noticeTitle}, </if>
 				<if test="noticeType != null and noticeType != ''">#{noticeType}, </if>
 				<if test="noticeContent != null and noticeContent != ''">#{noticeContent}, </if>
@@ -88,4 +89,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </delete>
     
-</mapper>
+</mapper>

+ 35 - 0
pipe-network-service/zksy-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -46,6 +46,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="dataScope"    column="data_scope"     />
         <result property="status"       column="role_status"    />
     </resultMap>
+
+    <resultMap id="ContactUserResult" type="com.zksy.system.domain.vo.ContactUserVo">
+        <id property="userId" column="user_id" />
+        <result property="nickName" column="nick_name" />
+        <result property="phonenumber" column="phonenumber" />
+        <result property="deptId" column="dept_id" />
+        <result property="deptName" column="dept_name" />
+        <collection property="postIds" ofType="java.lang.Long">
+            <result column="post_id" />
+        </collection>
+        <collection property="postNames" ofType="java.lang.String">
+            <result column="post_name" />
+        </collection>
+    </resultMap>
 	
 	<sql id="selectUserVo">
         select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_by, u.create_time, u.remark, 
@@ -97,6 +111,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         order by u.nick_name
     </select>
 
+    <select id="selectContactsByDeptId" resultMap="ContactUserResult">
+        select u.user_id,
+               u.nick_name,
+               u.phonenumber,
+               u.dept_id,
+               d.dept_name,
+               up.post_id,
+               p.post_name
+        from app_user.sys_user u
+        inner join app_user.sys_dept d on d.dept_id = u.dept_id
+        left join app_user.sys_user_post up on up.user_id = u.user_id
+        left join app_user.sys_post p on p.post_id = up.post_id and p.status = '0'
+        where u.del_flag = '0'
+          and u.status = '0'
+          and u.user_id &lt;&gt; #{excludeUserId}
+          and d.del_flag = '0'
+          and (u.dept_id = #{deptId}
+               or POSITION(CONCAT(',', #{deptId}, ',') IN CONCAT(',', d.ancestors, ',')) &gt; 0)
+        order by d.order_num, u.nick_name, p.post_sort
+    </select>
+
     <select id="selectEnabledUsersByIds" resultMap="SysUserResult">
         select u.user_id, u.dept_id, u.nick_name, u.user_name
         from app_user.sys_user u

+ 3 - 7
zk-api-service/src/main/java/com/zksy/api/domain/WorkOrder.java

@@ -45,13 +45,6 @@ public class WorkOrder implements Serializable {
     @ApiModelProperty(value = "归属部门ID,取派单时指定责任人所属部门;待派单阶段为创建人部门。数据权限按此字段做「本部门及子部门」过滤")
     private Long deptId;
 
-    @ApiModelProperty(value = "派单人ID")
-    private Long dispatchUser;
-
-    @ApiModelProperty(value = "派单时间")
-    @JsonFormat(locale = "zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date dispatchTime;
-
     @ApiModelProperty(value = "责任人用户ID")
     private Long receiveUser;
 
@@ -92,6 +85,9 @@ public class WorkOrder implements Serializable {
     @JsonFormat(locale = "zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date verifyTime;
 
+    @ApiModelProperty(value = "创建人ID")
+    private Long createBy;
+
     @ApiModelProperty(value = "创建时间")
     @JsonFormat(locale = "zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;