Browse Source

工作台历

wucl 2 years ago
parent
commit
b14f7da809

+ 100 - 0
biz-base/src/main/java/com/dayou/controller/NoteController.java

@@ -0,0 +1,100 @@
+package com.dayou.controller;
+
+import com.dayou.vo.NoteCountVO;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.web.bind.annotation.RestController;
+import com.dayou.controller.BaseController;
+import com.dayou.service.INoteService;
+import com.dayou.entity.Note;
+import com.dayou.common.RestResponse;
+import org.springframework.web.bind.annotation.*;
+import com.dayou.utils.ConvertUtil;
+import com.dayou.utils.HttpKit;
+import com.dayou.exception.ErrorCode;
+import java.util.Date;
+import java.util.List;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.http.MediaType;
+import org.springframework.web.multipart.MultipartFile;
+/**
+ * 便签
+ *
+ * @author wucl
+ * @since 2023-01-12
+ */
+@RestController
+@RequestMapping("note")
+@Slf4j
+public class NoteController extends BaseController {
+    @Autowired
+    private INoteService noteService;
+
+    /**
+    * 便签列表
+    */
+    @GetMapping("")
+    public RestResponse<Page<Note>> page(Note note, Page page){
+        Page<Note> pages=noteService.selectPage(page,note);
+        return RestResponse.data(pages);
+    }
+
+    /**
+     * 便签详情
+     */
+    @GetMapping("/{id}")
+    public RestResponse<Note> detail(@PathVariable Long id){
+        Note xNote =noteService.detail(id);
+        return RestResponse.data(xNote);
+     }
+
+    /**
+     * 便签新增
+     */
+    @PostMapping("")
+    public RestResponse<Boolean> save(@RequestBody Note note) {
+        Boolean ret = noteService.add(note);
+        return RestResponse.data(ret);
+    }
+
+    /**
+     * 便签更新
+     */
+    @PutMapping("")
+    public RestResponse<Boolean> update(@RequestBody Note note) {
+        Boolean ret = noteService.update(note);
+        return RestResponse.data(ret);
+    }
+
+    /**
+     * 便签删除
+     */
+    @DeleteMapping("/{id}")
+    public RestResponse<Boolean> delete(@PathVariable Long id) {
+        Boolean ret = noteService.delete(id);
+        return RestResponse.data(ret);
+    }
+
+    /**
+     * 单日便签列表
+     */
+    @GetMapping("/list")
+    public RestResponse<List<Note>> list(Note note){
+        List<Note> list = noteService.getList(note);
+        return RestResponse.data(list);
+    }
+
+    /**
+     * 每日便签数量
+     */
+    @GetMapping("/count/{userId}")
+    public RestResponse<List<NoteCountVO>> list(@PathVariable("userId") Long userId){
+        List<NoteCountVO> result = noteService.getCount(userId);
+        return RestResponse.data(result);
+    }
+}
+

+ 3 - 2
biz-base/src/main/java/com/dayou/controller/VisitController.java

@@ -1,5 +1,6 @@
 package com.dayou.controller;
 
+import com.dayou.vo.VisitVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,8 +38,8 @@ public class VisitController extends BaseController {
     * 拜访记录表列表
     */
     @GetMapping("")
-    public RestResponse<Page<Visit>> page(Visit visit, Page page){
-        Page<Visit> pages=visitService.selectPage(page,visit);
+    public RestResponse<Page<VisitVO>> page(VisitVO visit, Page page){
+        Page<VisitVO> pages=visitService.selectPage(page,visit);
         return RestResponse.data(pages);
     }
 

+ 16 - 0
dao/src/main/java/com/dayou/mapper/NoteMapper.java

@@ -0,0 +1,16 @@
+package com.dayou.mapper;
+
+import com.dayou.entity.Note;
+import com.dayou.dao.CustomBaseMapper;
+
+/**
+ * <p>
+ * 便签 Mapper 接口
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-01-12
+ */
+public interface NoteMapper extends CustomBaseMapper<Note> {
+
+}

+ 4 - 0
dao/src/main/java/com/dayou/mapper/VisitMapper.java

@@ -1,7 +1,10 @@
 package com.dayou.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.entity.Visit;
 import com.dayou.dao.CustomBaseMapper;
+import com.dayou.vo.VisitVO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +16,5 @@ import com.dayou.dao.CustomBaseMapper;
  */
 public interface VisitMapper extends CustomBaseMapper<Visit> {
 
+    Page<VisitVO> page(Page page, @Param("visit") VisitVO visit);
 }

+ 25 - 0
dao/src/main/resources/mapper/NoteMapper.xml

@@ -0,0 +1,25 @@
+<?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.dayou.mapper.NoteMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.dayou.entity.Note">
+        <result column="id" property="id" />
+        <result column="deleted" property="deleted" />
+        <result column="created" property="created" />
+        <result column="modified" property="modified" />
+        <result column="user_id" property="userId" />
+        <result column="note_date" property="noteDate" />
+        <result column="content" property="content" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id,
+        deleted,
+        created,
+        modified,
+        user_id, note_date, content
+    </sql>
+
+</mapper>

+ 19 - 5
dao/src/main/resources/mapper/VisitMapper.xml

@@ -17,11 +17,25 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id,
-        deleted,
-        created,
-        modified,
-        customer_id, visit_type, visit_time, spot, content
+        v.id,
+        v.deleted,
+        v.created,
+        v.modified,
+        v.customer_id, v.visit_type, v.visit_time, v.spot, v.content
     </sql>
 
+    <select id="page" parameterType="com.dayou.vo.VisitVO" resultType="com.dayou.vo.VisitVO">
+        select
+            <include refid="Base_Column_List"/>,c.name as customerName
+        from visit v left join customer c on v.customer_id = c.id
+        where v.deleted = 0 and c.deleted = 0
+        <if test="visit!=null and visit.customerName!=null and visit.customerName!='' ">
+            and c.name like concat ('%',#{visit.customerName},'%')
+        </if>
+        <if test="visit!=null and visit.visitType!=null and visit.visitType!='' ">
+            and v.visit_type = #{visit.visitType}
+        </if>
+        order by v.id DESC
+    </select>
+
 </mapper>

+ 44 - 0
domain/src/main/java/com/dayou/entity/Note.java

@@ -0,0 +1,44 @@
+package com.dayou.entity;
+import com.dayou.common.BaseEntity;
+import java.time.LocalDate;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.dayou.annotation.ExcelSheet;
+import com.dayou.annotation.ExportCell;
+import com.dayou.annotation.ImportCell;
+/**
+ * <p>
+ * 便签
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-01-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ExcelSheet(sheetName = "便签")
+public class Note extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 日期
+     */
+    @ImportCell
+    @ExportCell(columnName = "日期")
+    private LocalDate noteDate;
+
+    /**
+     * 便签内容
+     */
+    @ImportCell
+    @ExportCell(columnName = "便签内容")
+    private String content;
+
+
+}

+ 3 - 2
domain/src/main/java/com/dayou/entity/Visit.java

@@ -1,6 +1,7 @@
 package com.dayou.entity;
 import com.dayou.common.BaseEntity;
-import java.time.LocalDateTime;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import com.dayou.annotation.ExcelSheet;
@@ -38,7 +39,7 @@ public class Visit extends BaseEntity {
      */
     @ImportCell
     @ExportCell(columnName = "拜访时间")
-    private LocalDateTime visitTime;
+    private Date visitTime;
 
     /**
      * 拜访地点

+ 20 - 0
domain/src/main/java/com/dayou/vo/NoteCountVO.java

@@ -0,0 +1,20 @@
+package com.dayou.vo;
+
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2023/1/12
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class NoteCountVO {
+
+    private LocalDate noteDate;
+
+    private Long count;
+}

+ 20 - 0
domain/src/main/java/com/dayou/vo/VisitVO.java

@@ -0,0 +1,20 @@
+package com.dayou.vo;
+
+import com.dayou.entity.Visit;
+import lombok.Data;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2023/1/12
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class VisitVO extends Visit {
+
+    /**
+     * 客户名称
+     */
+    private String customerName;
+}

+ 35 - 0
service/src/main/java/com/dayou/service/INoteService.java

@@ -0,0 +1,35 @@
+package com.dayou.service;
+import com.dayou.entity.Note;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dayou.vo.NoteCountVO;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 便签 服务类
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-01-12
+ */
+public interface INoteService extends IService<Note> {
+
+        Page<Note> selectPage(Page page,Note note);
+
+        Note detail(Long id);
+
+        Boolean add(Note note);
+
+        Boolean update(Note note);
+
+        Boolean delete(Long id);
+
+    List<Note> getList(Note note);
+
+        List<NoteCountVO> getCount(Long userId);
+}

+ 2 - 1
service/src/main/java/com/dayou/service/IVisitService.java

@@ -3,6 +3,7 @@ import com.dayou.entity.Visit;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dayou.vo.VisitVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 /**
@@ -15,7 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
  */
 public interface IVisitService extends IService<Visit> {
 
-        Page<Visit> selectPage(Page page,Visit visit);
+        Page<VisitVO> selectPage(Page page, VisitVO visit);
 
         Visit detail(Long id);
 

+ 103 - 0
service/src/main/java/com/dayou/service/impl/NoteServiceImpl.java

@@ -0,0 +1,103 @@
+package com.dayou.service.impl;
+
+import com.dayou.common.BaseEntity;
+import com.dayou.entity.Note;
+import com.dayou.mapper.NoteMapper;
+import com.dayou.service.INoteService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dayou.vo.NoteCountVO;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.dayou.utils.ExcelUtil;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.time.LocalDate;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.springframework.transaction.annotation.Transactional;
+import com.dayou.enums.BatchTaskTypeEnum;
+
+/**
+ * <p>
+ * 便签 服务实现类
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-01-12
+ */
+@Service
+public class NoteServiceImpl extends ServiceImpl<NoteMapper, Note> implements INoteService {
+
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public Page<Note> selectPage(Page page,Note note){
+        return this.page(page, new QueryWrapper<Note>(note));
+    }
+
+
+    @Override
+    public Note detail(Long id){
+        return this.getById(id);
+    }
+
+    @Override
+    public Boolean add(Note note){
+        return  this.save(note);
+    }
+
+    @Override
+    public Boolean update(Note note){
+        return  this.updateById(note);
+    }
+
+    @Override
+    public Boolean delete(Long id){
+        //逻辑删除
+        return this.removeById(id);
+    }
+
+    @Override
+    public List<Note> getList(Note note) {
+        List<Note> list = this.list(new LambdaQueryWrapper<Note>()
+                .eq(Note::getUserId, note.getUserId())
+                .eq(Note::getNoteDate, note.getNoteDate()).eq(BaseEntity::getDeleted, Boolean.FALSE));
+        return list;
+    }
+
+    @Override
+    public List<NoteCountVO> getCount(Long userId) {
+        List<NoteCountVO> result = new ArrayList<>();
+
+        List<Note> notes = this.list(new LambdaQueryWrapper<Note>().eq(Note::getUserId, userId).eq(BaseEntity::getDeleted, Boolean.FALSE));
+
+        if (CollectionUtils.isEmpty(notes)){
+            return result;
+        }
+        Map<LocalDate, Long> collect = notes.stream().collect(Collectors.groupingBy(Note::getNoteDate, Collectors.counting()));
+
+
+        for (Map.Entry<LocalDate,Long> map : collect.entrySet()){
+            NoteCountVO noteCountVO = new NoteCountVO();
+            noteCountVO.setCount(map.getValue());
+            noteCountVO.setNoteDate(map.getKey());
+            result.add(noteCountVO);
+        }
+        return result;
+    }
+}

+ 7 - 2
service/src/main/java/com/dayou/service/impl/VisitServiceImpl.java

@@ -4,6 +4,8 @@ import com.dayou.entity.Visit;
 import com.dayou.mapper.VisitMapper;
 import com.dayou.service.IVisitService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dayou.vo.VisitVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -35,11 +37,14 @@ import com.dayou.enums.BatchTaskTypeEnum;
 @Service
 public class VisitServiceImpl extends ServiceImpl<VisitMapper, Visit> implements IVisitService {
 
+    @Autowired
+    private VisitMapper visitMapper;
 
     @Override
     @SuppressWarnings("unchecked")
-    public Page<Visit> selectPage(Page page,Visit visit){
-        return this.page(page, new QueryWrapper<Visit>(visit));
+    public Page<VisitVO> selectPage(Page page, VisitVO visit){
+        Page<VisitVO> result = visitMapper.page(page,visit);
+        return result;
     }