yzc 2 лет назад
Родитель
Сommit
c52f4f2010

+ 1 - 0
hx-common/src/main/java/com/fjhx/common/constant/SourceConstant.java

@@ -16,4 +16,5 @@ public interface SourceConstant {
 
     String CUSTOMER = "customer";
 
+    String BASE = "base";
 }

+ 72 - 0
hx-oa/src/main/java/com/fjhx/oa/controller/internal/InternalAddressBookController.java

@@ -0,0 +1,72 @@
+package com.fjhx.oa.controller.internal;
+
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.web.bind.annotation.*;
+import com.fjhx.oa.entity.internal.dto.InternalAddressBookDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.oa.service.internal.InternalAddressBookService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 内部通讯录 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@RestController
+@RequestMapping("/internalAddressBook")
+public class InternalAddressBookController extends BaseController {
+
+    @Autowired
+    private InternalAddressBookService internalAddressBookService;
+
+    /**
+     * 内部通讯录分页
+     */
+    @GetMapping("/page")
+    public TableDataInfo page(SysUser sysUser) {
+        startPage();
+        return getDataTable(internalAddressBookService.getPage(sysUser));
+    }
+
+    /**
+     * 内部通讯录明细
+     */
+    @PostMapping("/detail")
+    public List<InternalAddressBook> detail(@RequestBody InternalAddressBookDto dto) {
+        return internalAddressBookService.detail(dto.getUserId());
+    }
+
+    /**
+     * 内部通讯录新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody InternalAddressBookDto internalAddressBookDto) {
+        internalAddressBookService.add(internalAddressBookDto);
+    }
+
+    /**
+     * 内部通讯录编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody InternalAddressBookDto internalAddressBookDto) {
+        internalAddressBookService.edit(internalAddressBookDto);
+    }
+
+    /**
+     * 内部通讯录删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        internalAddressBookService.delete(dto.getId());
+    }
+
+}

+ 22 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/internal/dto/InternalAddressBookDto.java

@@ -0,0 +1,22 @@
+package com.fjhx.oa.entity.internal.dto;
+
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 内部通讯录新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@Getter
+@Setter
+public class InternalAddressBookDto extends InternalAddressBook {
+
+    /**内部通讯录列表明细*/
+    private List<InternalAddressBook> internalAddressBookList;
+
+}

+ 17 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/internal/dto/InternalAddressBookSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.oa.entity.internal.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 内部通讯录列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@Getter
+@Setter
+public class InternalAddressBookSelectDto extends BaseSelectDto {
+
+}

+ 37 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/internal/po/InternalAddressBook.java

@@ -0,0 +1,37 @@
+package com.fjhx.oa.entity.internal.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 内部通讯录
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@Getter
+@Setter
+@TableName("internal_address_book")
+public class InternalAddressBook extends BasePo {
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 联系类型(字典contact_information)
+     */
+    private Integer type;
+
+    /**
+     * 联系号码
+     */
+    private String contactNumber;
+
+}

+ 33 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/internal/vo/InternalAddressBookVo.java

@@ -0,0 +1,33 @@
+package com.fjhx.oa.entity.internal.vo;
+
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 内部通讯录列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@Getter
+@Setter
+public class InternalAddressBookVo extends InternalAddressBook {
+
+    /**部门名称*/
+    private String deptName;
+    /**工号*/
+    private String jobNumber;
+    /**用户昵称*/
+    private String nickName;
+    /**手机号*/
+    private String phonenumber;
+    /**电子邮箱*/
+    private String email;
+    /**部门信息*/
+    /**联系方式列表*/
+    List<InternalAddressBook> internalAddressBookList;
+
+}

+ 22 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/internal/vo/SysUserVo.java

@@ -0,0 +1,22 @@
+package com.fjhx.oa.entity.internal.vo;
+
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 内部通讯录列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@Getter
+@Setter
+public class SysUserVo extends SysUser {
+    /**联系方式列表*/
+    List<InternalAddressBook> internalAddressBookList;
+
+}

+ 26 - 0
hx-oa/src/main/java/com/fjhx/oa/mapper/internal/InternalAddressBookMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.oa.mapper.internal;
+
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.oa.entity.internal.vo.InternalAddressBookVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 内部通讯录 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+public interface InternalAddressBookMapper extends BaseMapper<InternalAddressBook> {
+
+    /**
+     * 内部通讯录分页
+     */
+    Page<InternalAddressBookVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<InternalAddressBook> wrapper);
+
+}

+ 47 - 0
hx-oa/src/main/java/com/fjhx/oa/service/internal/InternalAddressBookService.java

@@ -0,0 +1,47 @@
+package com.fjhx.oa.service.internal;
+
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import com.fjhx.oa.entity.internal.vo.SysUserVo;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.service.BaseService;
+import com.fjhx.oa.entity.internal.dto.InternalAddressBookDto;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 内部通讯录 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+public interface InternalAddressBookService extends BaseService<InternalAddressBook> {
+
+    /**
+     * 内部通讯录分页
+     */
+    List<SysUserVo> getPage(SysUser sysUser);
+
+    /**
+     * 内部通讯录明细
+     */
+    List<InternalAddressBook> detail(Long id);
+
+    /**
+     * 内部通讯录新增
+     */
+    void add(InternalAddressBookDto internalAddressBookDto);
+
+    /**
+     * 内部通讯录编辑
+     */
+    void edit(InternalAddressBookDto internalAddressBookDto);
+
+    /**
+     * 内部通讯录删除
+     */
+    void delete(Long id);
+
+}

+ 86 - 0
hx-oa/src/main/java/com/fjhx/oa/service/internal/impl/InternalAddressBookServiceImpl.java

@@ -0,0 +1,86 @@
+package com.fjhx.oa.service.internal.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.oa.entity.internal.po.InternalAddressBook;
+import com.fjhx.oa.entity.internal.vo.SysUserVo;
+import com.fjhx.oa.mapper.internal.InternalAddressBookMapper;
+import com.fjhx.oa.service.internal.InternalAddressBookService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.system.service.impl.SysUserServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.fjhx.oa.entity.internal.dto.InternalAddressBookDto;
+import cn.hutool.core.bean.BeanUtil;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 内部通讯录 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-04
+ */
+@DS(SourceConstant.OA)
+@Service
+public class InternalAddressBookServiceImpl extends ServiceImpl<InternalAddressBookMapper, InternalAddressBook> implements InternalAddressBookService {
+
+    @Autowired
+    SysUserServiceImpl sysUserService;
+
+    @Override
+    public List<SysUserVo> getPage(SysUser user) {
+//        IWrapper<InternalAddressBook> wrapper = getWrapper();
+//        wrapper.orderByDesc("iab", InternalAddressBook::getId);
+//        Page<InternalAddressBookVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        List<SysUser> sysUsers = sysUserService.selectUserList(user);
+        DynamicDataSourceContextHolder.poll();
+
+        List<SysUserVo> sysUserVoList = BeanUtil.copyToList(sysUsers, SysUserVo.class);
+        List<Long> userIds = sysUserVoList.stream().map(SysUser::getUserId).collect(Collectors.toList());
+        List<InternalAddressBook> list = list(q -> q.in(InternalAddressBook::getUserId, userIds));
+        Map<Long, List<InternalAddressBook>> internalAddressBookMap = list.stream().collect(Collectors.groupingBy(InternalAddressBook::getUserId));
+        for (SysUserVo sysUserVo : sysUserVoList){
+            List<InternalAddressBook> internalAddressBook = internalAddressBookMap.get(sysUserVo.getUserId());
+            sysUserVo.setInternalAddressBookList(internalAddressBook);
+        }
+        return sysUserVoList;
+    }
+
+    @Override
+    public List<InternalAddressBook> detail(Long userId) {
+        List<InternalAddressBook> list = list(q -> q.eq(InternalAddressBook::getUserId, userId));
+        return list;
+    }
+
+    @Override
+    public void add(InternalAddressBookDto internalAddressBookDto) {
+        this.save(internalAddressBookDto);
+    }
+
+    @Override
+    public void edit(InternalAddressBookDto internalAddressBookDto) {
+        List<InternalAddressBook> internalAddressBookList = internalAddressBookDto.getInternalAddressBookList();
+        for (InternalAddressBook internalAddressBook :internalAddressBookList){
+            internalAddressBook.setUserId(internalAddressBookDto.getUserId());
+        }
+        List<Long> internalAddressBookIds = internalAddressBookList.stream().map(InternalAddressBook::getId).collect(Collectors.toList());
+        remove(q->q.in(InternalAddressBook::getId,internalAddressBookIds));
+        saveOrUpdateBatch(internalAddressBookList);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 18 - 0
hx-oa/src/main/resources/mapper/internal/InternalAddressBookMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.oa.mapper.internal.InternalAddressBookMapper">
+    <select id="getPage" resultType="com.fjhx.oa.entity.internal.vo.InternalAddressBookVo">
+        select
+            iab.id,
+            iab.user_id,
+            iab.type,
+            iab.contact_number,
+            iab.create_user,
+            iab.create_time,
+            iab.update_user,
+            iab.update_time
+        from internal_address_book iab
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>