From 79cec12400c23ec72f41e57d53c0d72f140f0aa8 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Mar 2022 09:37:45 +0800 Subject: [PATCH 01/53] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/MemoAttachmentDTO.java | 105 ++++++++++++++++++ .../main/java/com/epmet/dto/MemoAttrDTO.java | 80 +++++++++++++ .../java/com/epmet/dto/MemoConcernDTO.java | 105 ++++++++++++++++++ .../java/com/epmet/dto/MemoDifficultyDTO.java | 85 ++++++++++++++ .../java/com/epmet/dto/MemoWorkDiaryDTO.java | 75 +++++++++++++ .../controller/MemoAttachmentController.java | 72 ++++++++++++ .../epmet/controller/MemoAttrController.java | 72 ++++++++++++ .../controller/MemoConcernController.java | 72 ++++++++++++ .../controller/MemoDifficultyController.java | 72 ++++++++++++ .../controller/MemoWorkDiaryController.java | 72 ++++++++++++ .../java/com/epmet/dao/MemoAttachmentDao.java | 16 +++ .../main/java/com/epmet/dao/MemoAttrDao.java | 16 +++ .../java/com/epmet/dao/MemoConcernDao.java | 16 +++ .../java/com/epmet/dao/MemoDifficultyDao.java | 16 +++ .../java/com/epmet/dao/MemoWorkDiaryDao.java | 16 +++ .../epmet/entity/MemoAttachmentEntity.java | 71 ++++++++++++ .../java/com/epmet/entity/MemoAttrEntity.java | 48 ++++++++ .../com/epmet/entity/MemoConcernEntity.java | 73 ++++++++++++ .../epmet/entity/MemoDifficultyEntity.java | 53 +++++++++ .../com/epmet/entity/MemoWorkDiaryEntity.java | 43 +++++++ .../epmet/service/MemoAttachmentService.java | 78 +++++++++++++ .../com/epmet/service/MemoAttrService.java | 78 +++++++++++++ .../com/epmet/service/MemoConcernService.java | 78 +++++++++++++ .../epmet/service/MemoDifficultyService.java | 78 +++++++++++++ .../epmet/service/MemoWorkDiaryService.java | 78 +++++++++++++ .../impl/MemoAttachmentServiceImpl.java | 83 ++++++++++++++ .../service/impl/MemoAttrServiceImpl.java | 83 ++++++++++++++ .../service/impl/MemoConcernServiceImpl.java | 83 ++++++++++++++ .../impl/MemoDifficultyServiceImpl.java | 83 ++++++++++++++ .../impl/MemoWorkDiaryServiceImpl.java | 83 ++++++++++++++ .../resources/mapper/MemoAttachmentDao.xml | 8 ++ .../src/main/resources/mapper/MemoAttrDao.xml | 8 ++ .../main/resources/mapper/MemoConcernDao.xml | 8 ++ .../resources/mapper/MemoDifficultyDao.xml | 8 ++ .../resources/mapper/MemoWorkDiaryDao.xml | 8 ++ 35 files changed, 2023 insertions(+) create mode 100644 epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttachmentDTO.java create mode 100644 epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttrDTO.java create mode 100644 epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java create mode 100644 epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java create mode 100644 epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoWorkDiaryDTO.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttachmentController.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttrController.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoAttachmentDao.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoAttrDao.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoConcernDao.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoDifficultyDao.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoWorkDiaryDao.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttachmentEntity.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttrEntity.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoWorkDiaryEntity.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttachmentService.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttrService.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoConcernService.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoWorkDiaryService.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttachmentServiceImpl.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttrServiceImpl.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttachmentDao.xml create mode 100644 epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttrDao.xml create mode 100644 epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoConcernDao.xml create mode 100644 epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoDifficultyDao.xml create mode 100644 epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoWorkDiaryDao.xml diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttachmentDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttachmentDTO.java new file mode 100644 index 0000000000..d1dec98f34 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttachmentDTO.java @@ -0,0 +1,105 @@ +package com.epmet.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 备忘录-附件表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Data +public class MemoAttachmentDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * REMIND_MSG.ID + */ + private String remindMsgId; + + /** + * 文件名 + */ + private String fileName; + + /** + * 附件名(uuid随机生成) + */ + private String attachmentName; + + /** + * 文件大小,单位b + */ + private Integer attachmentSize; + + /** + * 文件格式(JPG、PNG、PDF、JPEG、BMP、MP4、WMA、M4A、MP3、DOC、DOCX、XLS) + */ + private String attachmentFormat; + + /** + * 附件类型((图片 - image、 视频 - video、 语音 - voice、 文档 - doc)) + */ + private String attachmentType; + + /** + * 附件地址 + */ + private String attachmentUrl; + + /** + * 语音或视频时长,秒 + */ + private Integer duration; + + /** + * 排序字段 + */ + private Integer sort; + + /** + * 删除标记 0:未删除,1:已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttrDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttrDTO.java new file mode 100644 index 0000000000..6f219e43ad --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttrDTO.java @@ -0,0 +1,80 @@ +package com.epmet.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 备忘录-属性表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Data +public class MemoAttrDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 唯一标识 + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 提醒时间 + */ + private Date remindTime; + + /** + * 业务类型 人员关怀:concern;难点堵点:difficulty;工作日志:work_diary + */ + private String type; + + /** + * 阅读标记1 已读;0未读 + */ + private Integer readFlag; + + /** + * 接收人ID + */ + private String receiver; + + /** + * 删除标识:0.未删除 1.已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java new file mode 100644 index 0000000000..500e28d53e --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java @@ -0,0 +1,105 @@ +package com.epmet.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 备忘录-人文关怀 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Data +public class MemoConcernDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 唯一标识(同memo_attr表Id) + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 关怀类型 + */ + private String concernType; + + /** + * 关怀对象 + */ + private String resiName; + + /** + * 关怀对象电话 + */ + private String phnoe; + + /** + * 关怀对象地址 + */ + private String address; + + /** + * 关怀事项 + */ + private String content; + + /** + * 计划执行时间 + */ + private Date scheduledTime; + + /** + * 实际执行时间 + */ + private Date actualTime; + + /** + * 状态 0未完成 1已完成 + */ + private Integer status; + + /** + * 提醒时间 + */ + private Date remindTime; + + /** + * 删除标识:0.未删除 1.已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 操作人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java new file mode 100644 index 0000000000..6b3008fa42 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java @@ -0,0 +1,85 @@ +package com.epmet.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 备忘录-难点读点 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Data +public class MemoDifficultyDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 唯一标识(同memo_attr表Id) + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 内容 + */ + private String content; + + /** + * 解决方式 + */ + private String resolveWay; + + /** + * 备注 + */ + private String remark; + + /** + * 计划执行时间 + */ + private Date scheduledTime; + + /** + * 提醒时间 + */ + private Date remindTime; + + /** + * 删除标识:0.未删除 1.已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoWorkDiaryDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoWorkDiaryDTO.java new file mode 100644 index 0000000000..f72cb66a95 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoWorkDiaryDTO.java @@ -0,0 +1,75 @@ +package com.epmet.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 备忘录-工作日志 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Data +public class MemoWorkDiaryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 唯一标识(同memo_attr表Id) + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 工作事项 + */ + private String workType; + + /** + * 内容 + */ + private String content; + + /** + * 提醒时间 + */ + private Date remindTime; + + /** + * 删除标识:0.未删除 1.已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttachmentController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttachmentController.java new file mode 100644 index 0000000000..3090cd1ec7 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttachmentController.java @@ -0,0 +1,72 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.AssertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.commons.tools.validator.group.AddGroup; +import com.epmet.commons.tools.validator.group.DefaultGroup; +import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.dto.MemoAttachmentDTO; +import com.epmet.service.MemoAttachmentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + + +/** + * 备忘录-附件表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@RestController +@RequestMapping("memoAttachment") +public class MemoAttachmentController { + + @Autowired + private MemoAttachmentService memoAttachmentService; + + @RequestMapping("page") + public Result> page(@RequestParam Map params){ + PageData page = memoAttachmentService.page(params); + return new Result>().ok(page); + } + + @RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET}) + public Result get(@PathVariable("id") String id){ + MemoAttachmentDTO data = memoAttachmentService.get(id); + return new Result().ok(data); + } + + @NoRepeatSubmit + @PostMapping("save") + public Result save(@RequestBody MemoAttachmentDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + memoAttachmentService.save(dto); + return new Result(); + } + + @NoRepeatSubmit + @PostMapping("update") + public Result update(@RequestBody MemoAttachmentDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + memoAttachmentService.update(dto); + return new Result(); + } + + @PostMapping("delete") + public Result delete(@RequestBody String[] ids){ + //效验数据 + AssertUtils.isArrayEmpty(ids, "id"); + memoAttachmentService.delete(ids); + return new Result(); + } + + + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttrController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttrController.java new file mode 100644 index 0000000000..c88ccdc7c1 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttrController.java @@ -0,0 +1,72 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.AssertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.commons.tools.validator.group.AddGroup; +import com.epmet.commons.tools.validator.group.DefaultGroup; +import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.dto.MemoAttrDTO; +import com.epmet.service.MemoAttrService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + + +/** + * 备忘录-属性表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@RestController +@RequestMapping("memoAttr") +public class MemoAttrController { + + @Autowired + private MemoAttrService memoAttrService; + + @RequestMapping("page") + public Result> page(@RequestParam Map params){ + PageData page = memoAttrService.page(params); + return new Result>().ok(page); + } + + @RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET}) + public Result get(@PathVariable("id") String id){ + MemoAttrDTO data = memoAttrService.get(id); + return new Result().ok(data); + } + + @NoRepeatSubmit + @PostMapping("save") + public Result save(@RequestBody MemoAttrDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + memoAttrService.save(dto); + return new Result(); + } + + @NoRepeatSubmit + @PostMapping("update") + public Result update(@RequestBody MemoAttrDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + memoAttrService.update(dto); + return new Result(); + } + + @PostMapping("delete") + public Result delete(@RequestBody String[] ids){ + //效验数据 + AssertUtils.isArrayEmpty(ids, "id"); + memoAttrService.delete(ids); + return new Result(); + } + + + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java new file mode 100644 index 0000000000..39d1beb1d4 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java @@ -0,0 +1,72 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.AssertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.commons.tools.validator.group.AddGroup; +import com.epmet.commons.tools.validator.group.DefaultGroup; +import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.dto.MemoConcernDTO; +import com.epmet.service.MemoConcernService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + + +/** + * 备忘录-人文关怀 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@RestController +@RequestMapping("memoConcern") +public class MemoConcernController { + + @Autowired + private MemoConcernService memoConcernService; + + @RequestMapping("page") + public Result> page(@RequestParam Map params){ + PageData page = memoConcernService.page(params); + return new Result>().ok(page); + } + + @RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET}) + public Result get(@PathVariable("id") String id){ + MemoConcernDTO data = memoConcernService.get(id); + return new Result().ok(data); + } + + @NoRepeatSubmit + @PostMapping("save") + public Result save(@RequestBody MemoConcernDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + memoConcernService.save(dto); + return new Result(); + } + + @NoRepeatSubmit + @PostMapping("update") + public Result update(@RequestBody MemoConcernDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + memoConcernService.update(dto); + return new Result(); + } + + @PostMapping("delete") + public Result delete(@RequestBody String[] ids){ + //效验数据 + AssertUtils.isArrayEmpty(ids, "id"); + memoConcernService.delete(ids); + return new Result(); + } + + + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java new file mode 100644 index 0000000000..c932841cf8 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java @@ -0,0 +1,72 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.AssertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.commons.tools.validator.group.AddGroup; +import com.epmet.commons.tools.validator.group.DefaultGroup; +import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.dto.MemoDifficultyDTO; +import com.epmet.service.MemoDifficultyService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + + +/** + * 备忘录-难点读点 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@RestController +@RequestMapping("memoDifficulty") +public class MemoDifficultyController { + + @Autowired + private MemoDifficultyService memoDifficultyService; + + @RequestMapping("page") + public Result> page(@RequestParam Map params){ + PageData page = memoDifficultyService.page(params); + return new Result>().ok(page); + } + + @RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET}) + public Result get(@PathVariable("id") String id){ + MemoDifficultyDTO data = memoDifficultyService.get(id); + return new Result().ok(data); + } + + @NoRepeatSubmit + @PostMapping("save") + public Result save(@RequestBody MemoDifficultyDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + memoDifficultyService.save(dto); + return new Result(); + } + + @NoRepeatSubmit + @PostMapping("update") + public Result update(@RequestBody MemoDifficultyDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + memoDifficultyService.update(dto); + return new Result(); + } + + @PostMapping("delete") + public Result delete(@RequestBody String[] ids){ + //效验数据 + AssertUtils.isArrayEmpty(ids, "id"); + memoDifficultyService.delete(ids); + return new Result(); + } + + + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java new file mode 100644 index 0000000000..43faecbcab --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java @@ -0,0 +1,72 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.AssertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.commons.tools.validator.group.AddGroup; +import com.epmet.commons.tools.validator.group.DefaultGroup; +import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.dto.MemoWorkDiaryDTO; +import com.epmet.service.MemoWorkDiaryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + + +/** + * 备忘录-工作日志 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@RestController +@RequestMapping("memoWorkDiary") +public class MemoWorkDiaryController { + + @Autowired + private MemoWorkDiaryService memoWorkDiaryService; + + @RequestMapping("page") + public Result> page(@RequestParam Map params){ + PageData page = memoWorkDiaryService.page(params); + return new Result>().ok(page); + } + + @RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET}) + public Result get(@PathVariable("id") String id){ + MemoWorkDiaryDTO data = memoWorkDiaryService.get(id); + return new Result().ok(data); + } + + @NoRepeatSubmit + @PostMapping("save") + public Result save(@RequestBody MemoWorkDiaryDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + memoWorkDiaryService.save(dto); + return new Result(); + } + + @NoRepeatSubmit + @PostMapping("update") + public Result update(@RequestBody MemoWorkDiaryDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + memoWorkDiaryService.update(dto); + return new Result(); + } + + @PostMapping("delete") + public Result delete(@RequestBody String[] ids){ + //效验数据 + AssertUtils.isArrayEmpty(ids, "id"); + memoWorkDiaryService.delete(ids); + return new Result(); + } + + + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoAttachmentDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoAttachmentDao.java new file mode 100644 index 0000000000..941b5d7ca1 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoAttachmentDao.java @@ -0,0 +1,16 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.MemoAttachmentEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 备忘录-附件表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Mapper +public interface MemoAttachmentDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoAttrDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoAttrDao.java new file mode 100644 index 0000000000..ad1b4216cc --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoAttrDao.java @@ -0,0 +1,16 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.MemoAttrEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 备忘录-属性表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Mapper +public interface MemoAttrDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoConcernDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoConcernDao.java new file mode 100644 index 0000000000..723dbe4444 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoConcernDao.java @@ -0,0 +1,16 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.MemoConcernEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 备忘录-人文关怀 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Mapper +public interface MemoConcernDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoDifficultyDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoDifficultyDao.java new file mode 100644 index 0000000000..8449129bbd --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoDifficultyDao.java @@ -0,0 +1,16 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.MemoDifficultyEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 备忘录-难点读点 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Mapper +public interface MemoDifficultyDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoWorkDiaryDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoWorkDiaryDao.java new file mode 100644 index 0000000000..dd27cdd763 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoWorkDiaryDao.java @@ -0,0 +1,16 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.MemoWorkDiaryEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 备忘录-工作日志 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Mapper +public interface MemoWorkDiaryDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttachmentEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttachmentEntity.java new file mode 100644 index 0000000000..fcc0c1622d --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttachmentEntity.java @@ -0,0 +1,71 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 备忘录-附件表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("memo_attachment") +public class MemoAttachmentEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * REMIND_MSG.ID + */ + private String remindMsgId; + + /** + * 文件名 + */ + private String fileName; + + /** + * 附件名(uuid随机生成) + */ + private String attachmentName; + + /** + * 文件大小,单位b + */ + private Integer attachmentSize; + + /** + * 文件格式(JPG、PNG、PDF、JPEG、BMP、MP4、WMA、M4A、MP3、DOC、DOCX、XLS) + */ + private String attachmentFormat; + + /** + * 附件类型((图片 - image、 视频 - video、 语音 - voice、 文档 - doc)) + */ + private String attachmentType; + + /** + * 附件地址 + */ + private String attachmentUrl; + + /** + * 语音或视频时长,秒 + */ + private Integer duration; + + /** + * 排序字段 + */ + private Integer sort; + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttrEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttrEntity.java new file mode 100644 index 0000000000..69a68497ce --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttrEntity.java @@ -0,0 +1,48 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 备忘录-属性表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("memo_attr") +public class MemoAttrEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 提醒时间 + */ + private Date remindTime; + + /** + * 业务类型 人员关怀:concern;难点堵点:difficulty;工作日志:work_diary + */ + private String type; + + /** + * 阅读标记1 已读;0未读 + */ + private Integer readFlag; + + /** + * 接收人ID + */ + private String receiver; + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java new file mode 100644 index 0000000000..7d62073752 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java @@ -0,0 +1,73 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 备忘录-人文关怀 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("memo_concern") +public class MemoConcernEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 关怀类型 + */ + private String concernType; + + /** + * 关怀对象 + */ + private String resiName; + + /** + * 关怀对象电话 + */ + private String phnoe; + + /** + * 关怀对象地址 + */ + private String address; + + /** + * 关怀事项 + */ + private String content; + + /** + * 计划执行时间 + */ + private Date scheduledTime; + + /** + * 实际执行时间 + */ + private Date actualTime; + + /** + * 状态 0未完成 1已完成 + */ + private Integer status; + + /** + * 提醒时间 + */ + private Date remindTime; + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java new file mode 100644 index 0000000000..453f2eed09 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java @@ -0,0 +1,53 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 备忘录-难点读点 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("memo_difficulty") +public class MemoDifficultyEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 内容 + */ + private String content; + + /** + * 解决方式 + */ + private String resolveWay; + + /** + * 备注 + */ + private String remark; + + /** + * 计划执行时间 + */ + private Date scheduledTime; + + /** + * 提醒时间 + */ + private Date remindTime; + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoWorkDiaryEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoWorkDiaryEntity.java new file mode 100644 index 0000000000..2407b046e9 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoWorkDiaryEntity.java @@ -0,0 +1,43 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 备忘录-工作日志 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("memo_work_diary") +public class MemoWorkDiaryEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 工作事项 + */ + private String workType; + + /** + * 内容 + */ + private String content; + + /** + * 提醒时间 + */ + private Date remindTime; + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttachmentService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttachmentService.java new file mode 100644 index 0000000000..dde25470fe --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttachmentService.java @@ -0,0 +1,78 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.MemoAttachmentDTO; +import com.epmet.entity.MemoAttachmentEntity; + +import java.util.List; +import java.util.Map; + +/** + * 备忘录-附件表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +public interface MemoAttachmentService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2022-03-15 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2022-03-15 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return MemoAttachmentDTO + * @author generator + * @date 2022-03-15 + */ + MemoAttachmentDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2022-03-15 + */ + void save(MemoAttachmentDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2022-03-15 + */ + void update(MemoAttachmentDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2022-03-15 + */ + void delete(String[] ids); +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttrService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttrService.java new file mode 100644 index 0000000000..e7d717187d --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttrService.java @@ -0,0 +1,78 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.MemoAttrDTO; +import com.epmet.entity.MemoAttrEntity; + +import java.util.List; +import java.util.Map; + +/** + * 备忘录-属性表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +public interface MemoAttrService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2022-03-15 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2022-03-15 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return MemoAttrDTO + * @author generator + * @date 2022-03-15 + */ + MemoAttrDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2022-03-15 + */ + void save(MemoAttrDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2022-03-15 + */ + void update(MemoAttrDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2022-03-15 + */ + void delete(String[] ids); +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoConcernService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoConcernService.java new file mode 100644 index 0000000000..f18784a348 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoConcernService.java @@ -0,0 +1,78 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.MemoConcernDTO; +import com.epmet.entity.MemoConcernEntity; + +import java.util.List; +import java.util.Map; + +/** + * 备忘录-人文关怀 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +public interface MemoConcernService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2022-03-15 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2022-03-15 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return MemoConcernDTO + * @author generator + * @date 2022-03-15 + */ + MemoConcernDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2022-03-15 + */ + void save(MemoConcernDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2022-03-15 + */ + void update(MemoConcernDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2022-03-15 + */ + void delete(String[] ids); +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java new file mode 100644 index 0000000000..00a825fb23 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java @@ -0,0 +1,78 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.MemoDifficultyDTO; +import com.epmet.entity.MemoDifficultyEntity; + +import java.util.List; +import java.util.Map; + +/** + * 备忘录-难点读点 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +public interface MemoDifficultyService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2022-03-15 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2022-03-15 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return MemoDifficultyDTO + * @author generator + * @date 2022-03-15 + */ + MemoDifficultyDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2022-03-15 + */ + void save(MemoDifficultyDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2022-03-15 + */ + void update(MemoDifficultyDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2022-03-15 + */ + void delete(String[] ids); +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoWorkDiaryService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoWorkDiaryService.java new file mode 100644 index 0000000000..29d7614886 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoWorkDiaryService.java @@ -0,0 +1,78 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.MemoWorkDiaryDTO; +import com.epmet.entity.MemoWorkDiaryEntity; + +import java.util.List; +import java.util.Map; + +/** + * 备忘录-工作日志 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +public interface MemoWorkDiaryService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2022-03-15 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2022-03-15 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return MemoWorkDiaryDTO + * @author generator + * @date 2022-03-15 + */ + MemoWorkDiaryDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2022-03-15 + */ + void save(MemoWorkDiaryDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2022-03-15 + */ + void update(MemoWorkDiaryDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2022-03-15 + */ + void delete(String[] ids); +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttachmentServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttachmentServiceImpl.java new file mode 100644 index 0000000000..b670d73537 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttachmentServiceImpl.java @@ -0,0 +1,83 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.MemoAttachmentDao; +import com.epmet.dto.MemoAttachmentDTO; +import com.epmet.entity.MemoAttachmentEntity; +import com.epmet.service.MemoAttachmentService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 备忘录-附件表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Service +public class MemoAttachmentServiceImpl extends BaseServiceImpl implements MemoAttachmentService { + + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, MemoAttachmentDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, MemoAttachmentDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public MemoAttachmentDTO get(String id) { + MemoAttachmentEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, MemoAttachmentDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(MemoAttachmentDTO dto) { + MemoAttachmentEntity entity = ConvertUtils.sourceToTarget(dto, MemoAttachmentEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(MemoAttachmentDTO dto) { + MemoAttachmentEntity entity = ConvertUtils.sourceToTarget(dto, MemoAttachmentEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttrServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttrServiceImpl.java new file mode 100644 index 0000000000..5af16cb67b --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttrServiceImpl.java @@ -0,0 +1,83 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.MemoAttrDao; +import com.epmet.dto.MemoAttrDTO; +import com.epmet.entity.MemoAttrEntity; +import com.epmet.service.MemoAttrService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 备忘录-属性表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Service +public class MemoAttrServiceImpl extends BaseServiceImpl implements MemoAttrService { + + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, MemoAttrDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, MemoAttrDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public MemoAttrDTO get(String id) { + MemoAttrEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, MemoAttrDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(MemoAttrDTO dto) { + MemoAttrEntity entity = ConvertUtils.sourceToTarget(dto, MemoAttrEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(MemoAttrDTO dto) { + MemoAttrEntity entity = ConvertUtils.sourceToTarget(dto, MemoAttrEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java new file mode 100644 index 0000000000..060ede4916 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java @@ -0,0 +1,83 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.MemoConcernDao; +import com.epmet.dto.MemoConcernDTO; +import com.epmet.entity.MemoConcernEntity; +import com.epmet.service.MemoConcernService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 备忘录-人文关怀 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Service +public class MemoConcernServiceImpl extends BaseServiceImpl implements MemoConcernService { + + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, MemoConcernDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, MemoConcernDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public MemoConcernDTO get(String id) { + MemoConcernEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, MemoConcernDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(MemoConcernDTO dto) { + MemoConcernEntity entity = ConvertUtils.sourceToTarget(dto, MemoConcernEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(MemoConcernDTO dto) { + MemoConcernEntity entity = ConvertUtils.sourceToTarget(dto, MemoConcernEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java new file mode 100644 index 0000000000..4c40dfc3b1 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java @@ -0,0 +1,83 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.MemoDifficultyDao; +import com.epmet.dto.MemoDifficultyDTO; +import com.epmet.entity.MemoDifficultyEntity; +import com.epmet.service.MemoDifficultyService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 备忘录-难点读点 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Service +public class MemoDifficultyServiceImpl extends BaseServiceImpl implements MemoDifficultyService { + + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, MemoDifficultyDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, MemoDifficultyDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public MemoDifficultyDTO get(String id) { + MemoDifficultyEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, MemoDifficultyDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(MemoDifficultyDTO dto) { + MemoDifficultyEntity entity = ConvertUtils.sourceToTarget(dto, MemoDifficultyEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(MemoDifficultyDTO dto) { + MemoDifficultyEntity entity = ConvertUtils.sourceToTarget(dto, MemoDifficultyEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java new file mode 100644 index 0000000000..f4be3dfd27 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java @@ -0,0 +1,83 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.MemoWorkDiaryDao; +import com.epmet.dto.MemoWorkDiaryDTO; +import com.epmet.entity.MemoWorkDiaryEntity; +import com.epmet.service.MemoWorkDiaryService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 备忘录-工作日志 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Service +public class MemoWorkDiaryServiceImpl extends BaseServiceImpl implements MemoWorkDiaryService { + + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, MemoWorkDiaryDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, MemoWorkDiaryDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public MemoWorkDiaryDTO get(String id) { + MemoWorkDiaryEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, MemoWorkDiaryDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(MemoWorkDiaryDTO dto) { + MemoWorkDiaryEntity entity = ConvertUtils.sourceToTarget(dto, MemoWorkDiaryEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(MemoWorkDiaryDTO dto) { + MemoWorkDiaryEntity entity = ConvertUtils.sourceToTarget(dto, MemoWorkDiaryEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttachmentDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttachmentDao.xml new file mode 100644 index 0000000000..f892f237a5 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttachmentDao.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttrDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttrDao.xml new file mode 100644 index 0000000000..5c98e2eb58 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttrDao.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoConcernDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoConcernDao.xml new file mode 100644 index 0000000000..fa6d92a22a --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoConcernDao.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoDifficultyDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoDifficultyDao.xml new file mode 100644 index 0000000000..42e16012e4 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoDifficultyDao.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoWorkDiaryDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoWorkDiaryDao.xml new file mode 100644 index 0000000000..b563021ce0 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoWorkDiaryDao.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file From bed41c106ba6800e5eb94154a7b8e2a83b5f48ff Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 15 Mar 2022 13:50:53 +0800 Subject: [PATCH 02/53] =?UTF-8?q?=E5=85=9A=E7=BE=A4=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DelPartyServiceCenterResultDTO.java | 23 +++++++++ .../IcPartyServiceCenterController.java | 2 +- .../epmet/dao/IcPartyServiceCenterDao.java | 27 ++++++++++ .../impl/IcPartyServiceCenterServiceImpl.java | 51 +++++++++++++++++-- .../mapper/IcPartyServiceCenterDao.xml | 49 ++++++++++++++++++ 5 files changed, 148 insertions(+), 4 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DelPartyServiceCenterResultDTO.java diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DelPartyServiceCenterResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DelPartyServiceCenterResultDTO.java new file mode 100644 index 0000000000..30f5f9ceb9 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DelPartyServiceCenterResultDTO.java @@ -0,0 +1,23 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2022/3/15 10:43 上午 + * @DESC + */ +@Data +public class DelPartyServiceCenterResultDTO implements Serializable { + + private static final long serialVersionUID = -2238226229442700788L; + + private String date; + private String matterId; + private String timeId; + private String startTime; + private String endTime; + private String centerName; +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPartyServiceCenterController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPartyServiceCenterController.java index a2f71aa778..df9fa9100d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPartyServiceCenterController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPartyServiceCenterController.java @@ -84,7 +84,7 @@ public class IcPartyServiceCenterController { return new Result(); } - @DeleteMapping + @PostMapping("del") public Result delete(@RequestBody String[] ids){ //效验数据 AssertUtils.isArrayEmpty(ids, "id"); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPartyServiceCenterDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPartyServiceCenterDao.java index 065dc62906..75f75e87fc 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPartyServiceCenterDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPartyServiceCenterDao.java @@ -19,12 +19,14 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.result.AllMattersResultDTO; +import com.epmet.dto.result.DelPartyServiceCenterResultDTO; import com.epmet.dto.result.PartyServiceCenterListResultDTO; import com.epmet.entity.IcPartyServiceCenterEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** * 党群服务中心 @@ -61,4 +63,29 @@ public interface IcPartyServiceCenterDao extends BaseDao getAllMattersByOrgId(@Param("matterIds")List matterIds); + /** + * Desc: 根据党群服务中心查询可预约事项ID + * @param centerIds + * @author zxc + * @date 2022/3/15 9:33 上午 + */ + + List selectMatterByIds(@Param("centerIds")List centerIds); + + /** + * Desc: 根据事项ID查询预约记录 + * @param matterIds + * @author zxc + * @date 2022/3/15 9:46 上午 + */ + List selectAppointmentList(@Param("matterIds")List matterIds); + + /** + * Desc: 删除可预约事项 + * @param centerIds + * @author zxc + * @date 2022/3/15 1:37 下午 + */ + void delMatters(@Param("centerIds")List centerIds); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPartyServiceCenterServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPartyServiceCenterServiceImpl.java index 8c313c780f..208dde8fc2 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPartyServiceCenterServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPartyServiceCenterServiceImpl.java @@ -41,7 +41,6 @@ import com.epmet.constant.PartyServiceCenterConstant; import com.epmet.dao.IcMatterAppointmentRecordDao; import com.epmet.dao.IcPartyServiceCenterDao; import com.epmet.dto.IcPartyServiceCenterDTO; -import com.epmet.dto.RegisterRelationDTO; import com.epmet.dto.TimeDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; @@ -63,6 +62,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -130,8 +130,53 @@ public class IcPartyServiceCenterServiceImpl extends BaseServiceImpl centerIds = Arrays.asList(ids); + List matterIds = baseDao.selectMatterByIds(centerIds); + if (CollectionUtils.isEmpty(matterIds)){ + baseDao.deleteBatchIds(centerIds); + }else { + List appointmentList = baseDao.selectAppointmentList(matterIds); + if (CollectionUtils.isEmpty(appointmentList)){ + baseDao.deleteBatchIds(centerIds); + baseDao.delMatters(centerIds); + }else { + List names = new ArrayList<>(); + Map> groupByMatterId = appointmentList.stream().collect(Collectors.groupingBy(DelPartyServiceCenterResultDTO::getMatterId)); + groupByMatterId.forEach((k,v) -> { + if (getMatterAppointmentList(v)){ + names.add(v.get(0).getCenterName()); + } + }); + if (CollectionUtils.isNotEmpty(names)){ + throw new EpmetException(names.stream().collect(Collectors.joining("、")) + "存在未来时间的预约事项,不允许删除"); + } + baseDao.deleteBatchIds(centerIds); + baseDao.delMatters(centerIds); + } + } + + } + + public boolean getMatterAppointmentList(List list){ + AtomicBoolean result = new AtomicBoolean(false); + if (CollectionUtils.isNotEmpty(list)){ + list.forEach(l -> { + int[] timeIds = Arrays.asList(l.getTimeId().split(",")).stream().mapToInt(m -> Integer.parseInt(m)).toArray(); + List intervalTimeList = getIntervalTimeList(l.getStartTime(), l.getEndTime(), 30); + for (int timeId : timeIds) { + for (int i1 = 0; i1 < intervalTimeList.size(); i1++) { + if (timeId == i1 + 1){ + String date = l.getDate() + " " + intervalTimeList.get(i1) + ":00"; + if (DateUtils.parse(date,DateUtils.DATE_TIME_PATTERN).after(new Date())){ + result.set(true); + return; + } + } + } + } + }); + } + return result.get(); } /** diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPartyServiceCenterDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPartyServiceCenterDao.xml index f159698f7f..51fa3a720c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPartyServiceCenterDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPartyServiceCenterDao.xml @@ -118,4 +118,53 @@ ) + + + + + + + + + + UPDATE ic_party_service_center_matter + SET del_flag = 1, + UPDATED_TIME = NOW() + WHERE DEL_FLAG = 0 + AND PARTY_SERVICE_CENTER_ID IN ( + + #{centerId} + + ) + + \ No newline at end of file From 0663b09b349ea8bdbd9cef24ca371eddad28bf8e Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Mar 2022 15:10:39 +0800 Subject: [PATCH 03/53] =?UTF-8?q?=E4=B9=A6=E8=AE=B0=E6=97=A5=E5=BF=97-?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8F=90=E9=86=92=E5=BC=B9=E6=A1=86=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8E=A5=E5=8F=A3=E5=88=9D=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/form/MemosToRemindFormDTO.java | 34 +++++++ .../dto/result/MemosToRemindResultDTO.java | 42 +++++++++ .../epmet/controller/MemoAttrController.java | 53 +++++++++-- .../main/java/com/epmet/dao/MemoAttrDao.java | 18 +++- .../com/epmet/service/MemoAttrService.java | 20 +++++ .../service/impl/MemoAttrServiceImpl.java | 44 +++++++++- .../src/main/resources/mapper/MemoAttrDao.xml | 88 +++++++++++++++++++ 7 files changed, 290 insertions(+), 9 deletions(-) create mode 100644 epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/MemosToRemindFormDTO.java create mode 100644 epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/MemosToRemindResultDTO.java diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/MemosToRemindFormDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/MemosToRemindFormDTO.java new file mode 100644 index 0000000000..4b5ac76740 --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/MemosToRemindFormDTO.java @@ -0,0 +1,34 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Date; + +/** + * @Author sun + * @Description 书记日志-待提醒弹框-提醒内容列表-接口入参 + **/ +@Data +public class MemosToRemindFormDTO implements Serializable { + private static final long serialVersionUID = 4859779755214502427L; + public interface MemoAttr extends CustomerClientShowGroup {} + /** + * 待提醒业务Id + */ + @NotBlank(message = "待提醒业务Id不能为空", groups = { MemoAttr.class }) + private String memoId; + /** + * 到期提醒时间,不传值默认查询当前时间之前的数据(yyyy-MM-dd) + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private String remindTime; + + //token中用户Id + private String userId; + +} + diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/MemosToRemindResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/MemosToRemindResultDTO.java new file mode 100644 index 0000000000..43998e8395 --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/MemosToRemindResultDTO.java @@ -0,0 +1,42 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Author sun + * @Description 书记日志-待提醒弹框-提醒内容列表-接口返参 + **/ +@Data +@AllArgsConstructor +public class MemosToRemindResultDTO implements Serializable { + + private static final long serialVersionUID = 4769136806332933579L; + + /** + * 对应业务数据Id + */ + private String memoId; + /** + * 业务类型 人员关怀:concern;难点堵点:difficulty;工作日志:work_diary + */ + private String type; + /** + * 业务类型 人员关怀:concern;难点堵点:difficulty;工作日志:work_diary + */ + private String typeName; + /** + * 提醒内容 + */ + private String content; + /** + * 提醒时间(日期类型) + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") + private String remindTime; + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttrController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttrController.java index c88ccdc7c1..8a8c3f557e 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttrController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttrController.java @@ -1,7 +1,9 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; @@ -9,10 +11,16 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.MemoAttrDTO; +import com.epmet.dto.form.MemosToRemindFormDTO; +import com.epmet.dto.form.ProjectByCreateTopicUserFormDTO; +import com.epmet.dto.form.ShiftProjectFormDTO; +import com.epmet.dto.result.IssueProjectResultDTO; +import com.epmet.dto.result.MemosToRemindResultDTO; import com.epmet.service.MemoAttrService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Map; @@ -30,20 +38,20 @@ public class MemoAttrController { private MemoAttrService memoAttrService; @RequestMapping("page") - public Result> page(@RequestParam Map params){ + public Result> page(@RequestParam Map params) { PageData page = memoAttrService.page(params); return new Result>().ok(page); } - @RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET}) - public Result get(@PathVariable("id") String id){ + @RequestMapping(value = "{id}", method = {RequestMethod.POST, RequestMethod.GET}) + public Result get(@PathVariable("id") String id) { MemoAttrDTO data = memoAttrService.get(id); return new Result().ok(data); } @NoRepeatSubmit @PostMapping("save") - public Result save(@RequestBody MemoAttrDTO dto){ + public Result save(@RequestBody MemoAttrDTO dto) { //效验数据 ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); memoAttrService.save(dto); @@ -52,7 +60,7 @@ public class MemoAttrController { @NoRepeatSubmit @PostMapping("update") - public Result update(@RequestBody MemoAttrDTO dto){ + public Result update(@RequestBody MemoAttrDTO dto) { //效验数据 ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); memoAttrService.update(dto); @@ -60,13 +68,46 @@ public class MemoAttrController { } @PostMapping("delete") - public Result delete(@RequestBody String[] ids){ + public Result delete(@RequestBody String[] ids) { //效验数据 AssertUtils.isArrayEmpty(ids, "id"); memoAttrService.delete(ids); return new Result(); } + /** + * @Author sun + * @Description 书记日志-待提醒弹框-提醒内容列表 + **/ + @PostMapping("memosToRemind") + public Result> memosToRemind(@RequestBody MemosToRemindFormDTO formDTO) { + //public Result> memosToRemind(@LoginUser TokenDto tokenDTO, @RequestBody MemosToRemindFormDTO formDTO) { + //formDTO.setUserId(tokenDTO.getUserId()); + formDTO.setUserId("111"); + return new Result>().ok(memoAttrService.memosToRemind(formDTO)); + } + + /** + * @Author sun + * @Description 书记日志-待提醒时间列表 + **/ + @PostMapping("memoTime") + public Result> memoTime() { + return new Result>().ok(memoAttrService.memoTime("111")); + /*public Result> memoTime(@LoginUser TokenDto tokenDTO) { + return new Result>().ok(memoAttrService.memoTime(tokenDTO.getUserId()));*/ + } + + /** + * @Author sun + * @Description 书记日志-提醒列表-我知道了 + **/ + @PostMapping("setReaded") + public Result setReaded(@RequestBody MemosToRemindFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, MemosToRemindFormDTO.MemoAttr.class); + memoAttrService.setReaded(formDTO.getMemoId()); + return new Result(); + } } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoAttrDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoAttrDao.java index ad1b4216cc..4ba3580b45 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoAttrDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoAttrDao.java @@ -1,8 +1,13 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.MemosToRemindResultDTO; import com.epmet.entity.MemoAttrEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; /** * 备忘录-属性表 @@ -12,5 +17,16 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface MemoAttrDao extends BaseDao { - + + /** + * @Author sun + * @Description 查询提醒内容列表,有时间的按时间查询,没有的查询当前日期之前的数据 + **/ + List memosToRemind(@Param("remindTime") String remindTime, @Param("userId") String userId); + + /** + * @Author sun + * @Description 查询某个人当前日期之后,当日0点之前待提醒时间节点列表 + **/ + List memoTime(@Param("userId") String userId); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttrService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttrService.java index e7d717187d..388698df6a 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttrService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttrService.java @@ -3,6 +3,8 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.MemoAttrDTO; +import com.epmet.dto.form.MemosToRemindFormDTO; +import com.epmet.dto.result.MemosToRemindResultDTO; import com.epmet.entity.MemoAttrEntity; import java.util.List; @@ -75,4 +77,22 @@ public interface MemoAttrService extends BaseService { * @date 2022-03-15 */ void delete(String[] ids); + + /** + * @Author sun + * @Description 书记日志-待提醒弹框-提醒内容列表 + **/ + List memosToRemind(MemosToRemindFormDTO formDTO); + + /** + * @Author sun + * @Description 书记日志-待提醒时间列表 + **/ + List memoTime(String userId); + + /** + * @Author sun + * @Description 书记日志-提醒列表-我知道了 + **/ + void setReaded(String memoId); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttrServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttrServiceImpl.java index 5af16cb67b..c979928ceb 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttrServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttrServiceImpl.java @@ -4,12 +4,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.MemoAttrDao; import com.epmet.dto.MemoAttrDTO; +import com.epmet.dto.form.MemosToRemindFormDTO; +import com.epmet.dto.result.MemosToRemindResultDTO; import com.epmet.entity.MemoAttrEntity; import com.epmet.service.MemoAttrService; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -25,6 +29,7 @@ import java.util.Map; * @since v1.0.0 2022-03-15 */ @Service +@Slf4j public class MemoAttrServiceImpl extends BaseServiceImpl implements MemoAttrService { @@ -44,8 +49,8 @@ public class MemoAttrServiceImpl extends BaseServiceImpl getWrapper(Map params){ - String id = (String)params.get(FieldConstant.ID_HUMP); + private QueryWrapper getWrapper(Map params) { + String id = (String) params.get(FieldConstant.ID_HUMP); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); @@ -80,4 +85,39 @@ public class MemoAttrServiceImpl extends BaseServiceImpl memosToRemind(MemosToRemindFormDTO formDTO) { + //1.查询提醒内容列表,有时间的按时间查询,没有的查询当前日期之前的数据 + List resultList = baseDao.memosToRemind(formDTO.getRemindTime(), formDTO.getUserId()); + return resultList; + } + + /** + * @Author sun + * @Description 书记日志-待提醒时间列表 + **/ + @Override + public List memoTime(String userId) { + List resultList = baseDao.memoTime(userId); + return resultList; + } + + /** + * @Author sun + * @Description 书记日志-提醒列表-我知道了 + **/ + @Override + public void setReaded(String memoId) { + MemoAttrEntity entity = new MemoAttrEntity(); + entity.setId(memoId); + entity.setReadFlag(NumConstant.ONE); + if (baseDao.updateById(entity) < NumConstant.ONE) { + log.warn(String.format("书记日志-提醒列表-修改阅读状态失败,提醒记录Id", memoId)); + } + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttrDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttrDao.xml index 5c98e2eb58..72fd81c7d3 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttrDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttrDao.xml @@ -3,6 +3,94 @@ + + + \ No newline at end of file From 8a1bfb496c1b272a0c73128572bcda47954efb28 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Mar 2022 15:13:19 +0800 Subject: [PATCH 04/53] =?UTF-8?q?=E9=94=99=E6=8F=90=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/controller/MemoAttrController.java | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttrController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttrController.java index 8a8c3f557e..07b1ed3eb6 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttrController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoAttrController.java @@ -12,9 +12,6 @@ import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.MemoAttrDTO; import com.epmet.dto.form.MemosToRemindFormDTO; -import com.epmet.dto.form.ProjectByCreateTopicUserFormDTO; -import com.epmet.dto.form.ShiftProjectFormDTO; -import com.epmet.dto.result.IssueProjectResultDTO; import com.epmet.dto.result.MemosToRemindResultDTO; import com.epmet.service.MemoAttrService; import org.springframework.beans.factory.annotation.Autowired; @@ -80,10 +77,8 @@ public class MemoAttrController { * @Description 书记日志-待提醒弹框-提醒内容列表 **/ @PostMapping("memosToRemind") - public Result> memosToRemind(@RequestBody MemosToRemindFormDTO formDTO) { - //public Result> memosToRemind(@LoginUser TokenDto tokenDTO, @RequestBody MemosToRemindFormDTO formDTO) { - //formDTO.setUserId(tokenDTO.getUserId()); - formDTO.setUserId("111"); + public Result> memosToRemind(@LoginUser TokenDto tokenDTO, @RequestBody MemosToRemindFormDTO formDTO) { + formDTO.setUserId(tokenDTO.getUserId()); return new Result>().ok(memoAttrService.memosToRemind(formDTO)); } @@ -92,10 +87,8 @@ public class MemoAttrController { * @Description 书记日志-待提醒时间列表 **/ @PostMapping("memoTime") - public Result> memoTime() { - return new Result>().ok(memoAttrService.memoTime("111")); - /*public Result> memoTime(@LoginUser TokenDto tokenDTO) { - return new Result>().ok(memoAttrService.memoTime(tokenDTO.getUserId()));*/ + public Result> memoTime(@LoginUser TokenDto tokenDTO) { + return new Result>().ok(memoAttrService.memoTime(tokenDTO.getUserId())); } /** From 7bef86dded3f477841ec1e0fdb41e7f6b053ddcf Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Mar 2022 15:17:44 +0800 Subject: [PATCH 05/53] . --- .../src/main/java/com/epmet/entity/MemoConcernEntity.java | 5 ----- .../src/main/java/com/epmet/entity/MemoDifficultyEntity.java | 5 ----- .../src/main/java/com/epmet/entity/MemoWorkDiaryEntity.java | 5 ----- 3 files changed, 15 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java index 7d62073752..f897debb03 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java @@ -65,9 +65,4 @@ public class MemoConcernEntity extends BaseEpmetEntity { */ private Integer status; - /** - * 提醒时间 - */ - private Date remindTime; - } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java index 453f2eed09..32d6263849 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java @@ -45,9 +45,4 @@ public class MemoDifficultyEntity extends BaseEpmetEntity { */ private Date scheduledTime; - /** - * 提醒时间 - */ - private Date remindTime; - } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoWorkDiaryEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoWorkDiaryEntity.java index 2407b046e9..c5d81f90fa 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoWorkDiaryEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoWorkDiaryEntity.java @@ -35,9 +35,4 @@ public class MemoWorkDiaryEntity extends BaseEpmetEntity { */ private String content; - /** - * 提醒时间 - */ - private Date remindTime; - } From 8dba635743eaa7cc167c57982e999e7fc9a7c498 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 15 Mar 2022 16:06:02 +0800 Subject: [PATCH 06/53] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/MemoAttachmentDTO.java | 10 +++ .../java/com/epmet/dto/MemoWorkDiaryDTO.java | 9 +++ .../epmet/dto/form/MemoWorkDiaryFormDTO.java | 25 ++++++++ .../controller/MemoWorkDiaryController.java | 16 ++--- .../java/com/epmet/dao/MemoWorkDiaryDao.java | 14 +++++ .../epmet/entity/MemoAttachmentEntity.java | 7 +++ .../epmet/service/MemoAttachmentService.java | 20 ++++++ .../epmet/service/MemoWorkDiaryService.java | 14 ++--- .../impl/MemoAttachmentServiceImpl.java | 40 ++++++++++++ .../impl/MemoWorkDiaryServiceImpl.java | 63 +++++++++++-------- .../resources/mapper/MemoWorkDiaryDao.xml | 29 +++++++++ 11 files changed, 207 insertions(+), 40 deletions(-) create mode 100644 epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoWorkDiaryFormDTO.java diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttachmentDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttachmentDTO.java index d1dec98f34..5a008c81c2 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttachmentDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttachmentDTO.java @@ -1,5 +1,6 @@ package com.epmet.dto; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; @@ -20,16 +21,19 @@ public class MemoAttachmentDTO implements Serializable { /** * 主键 */ + @JsonIgnore private String id; /** * 客户ID */ + @JsonIgnore private String customerId; /** * REMIND_MSG.ID */ + @JsonIgnore private String remindMsgId; /** @@ -70,21 +74,25 @@ public class MemoAttachmentDTO implements Serializable { /** * 排序字段 */ + @JsonIgnore private Integer sort; /** * 删除标记 0:未删除,1:已删除 */ + @JsonIgnore private String delFlag; /** * 乐观锁 */ + @JsonIgnore private Integer revision; /** * 创建人 */ + @JsonIgnore private String createdBy; /** @@ -95,11 +103,13 @@ public class MemoAttachmentDTO implements Serializable { /** * 更新人 */ + @JsonIgnore private String updatedBy; /** * 更新时间 */ + @JsonIgnore private Date updatedTime; } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoWorkDiaryDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoWorkDiaryDTO.java index f72cb66a95..2bde9822fa 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoWorkDiaryDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoWorkDiaryDTO.java @@ -1,9 +1,11 @@ package com.epmet.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.io.Serializable; import java.util.Date; +import java.util.List; /** @@ -40,6 +42,7 @@ public class MemoWorkDiaryDTO implements Serializable { /** * 提醒时间 */ + @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date remindTime; /** @@ -60,6 +63,7 @@ public class MemoWorkDiaryDTO implements Serializable { /** * 创建时间 */ + @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date createdTime; /** @@ -72,4 +76,9 @@ public class MemoWorkDiaryDTO implements Serializable { */ private Date updatedTime; + /** + * 附件 + */ + private List attachmentList; + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoWorkDiaryFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoWorkDiaryFormDTO.java new file mode 100644 index 0000000000..88e3aaef4b --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoWorkDiaryFormDTO.java @@ -0,0 +1,25 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/3/15 15:09 + */ +@NoArgsConstructor +@Data +public class MemoWorkDiaryFormDTO extends PageFormDTO implements Serializable { + private static final long serialVersionUID = 3101320969471756516L; + private String userId; + private String id; + private String readFlag = "0"; + private String content; + private String workType; + private String startTime; + private String endTime; +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java index 43faecbcab..54e6dd3c0f 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java @@ -1,7 +1,9 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; @@ -9,12 +11,11 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.MemoWorkDiaryDTO; +import com.epmet.dto.form.MemoWorkDiaryFormDTO; import com.epmet.service.MemoWorkDiaryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.Map; - /** * 备忘录-工作日志 @@ -30,14 +31,15 @@ public class MemoWorkDiaryController { private MemoWorkDiaryService memoWorkDiaryService; @RequestMapping("page") - public Result> page(@RequestParam Map params){ - PageData page = memoWorkDiaryService.page(params); + public Result> page(@LoginUser TokenDto tokenDto, @RequestBody MemoWorkDiaryFormDTO formDTO){ + formDTO.setUserId(tokenDto.getUserId()); + PageData page = memoWorkDiaryService.page(formDTO); return new Result>().ok(page); } - @RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET}) - public Result get(@PathVariable("id") String id){ - MemoWorkDiaryDTO data = memoWorkDiaryService.get(id); + @RequestMapping(method = {RequestMethod.POST,RequestMethod.GET}) + public Result get(@RequestBody MemoWorkDiaryFormDTO formDTO){ + MemoWorkDiaryDTO data = memoWorkDiaryService.get(formDTO); return new Result().ok(data); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoWorkDiaryDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoWorkDiaryDao.java index dd27cdd763..9431661632 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoWorkDiaryDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoWorkDiaryDao.java @@ -1,9 +1,13 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.MemoWorkDiaryDTO; +import com.epmet.dto.form.MemoWorkDiaryFormDTO; import com.epmet.entity.MemoWorkDiaryEntity; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 备忘录-工作日志 * @@ -12,5 +16,15 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface MemoWorkDiaryDao extends BaseDao { + + /** + * 查询列表 + * + * @Param formDTO + * @Return {@link List< MemoWorkDiaryDTO>} + * @Author zhaoqifeng + * @Date 2022/3/15 15:31 + */ + List getPage(MemoWorkDiaryFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttachmentEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttachmentEntity.java index fcc0c1622d..20a7c39dfd 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttachmentEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttachmentEntity.java @@ -1,5 +1,7 @@ package com.epmet.entity; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; @@ -68,4 +70,9 @@ public class MemoAttachmentEntity extends BaseEpmetEntity { */ private Integer sort; + /** + * 物理删除 + */ + @TableField(fill = FieldFill.INSERT) + private String delFlag; } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttachmentService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttachmentService.java index dde25470fe..fa5d0450ea 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttachmentService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoAttachmentService.java @@ -75,4 +75,24 @@ public interface MemoAttachmentService extends BaseService * @date 2022-03-15 */ void delete(String[] ids); + + /** + * 根据备忘录ID查询附件 + * + * @Param memoId + * @Return {@link List< MemoAttachmentDTO>} + * @Author zhaoqifeng + * @Date 2022/3/15 15:56 + */ + List getListByMemoId(String memoId); + + /** + * 根据备忘录ID删除附件 + * + * @Param memoId + * @Return + * @Author zhaoqifeng + * @Date 2022/3/15 15:57 + */ + void deleteByMemoId(String memoId); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoWorkDiaryService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoWorkDiaryService.java index 29d7614886..c3754d3357 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoWorkDiaryService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoWorkDiaryService.java @@ -3,10 +3,10 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.MemoWorkDiaryDTO; +import com.epmet.dto.form.MemoWorkDiaryFormDTO; import com.epmet.entity.MemoWorkDiaryEntity; import java.util.List; -import java.util.Map; /** * 备忘录-工作日志 @@ -19,32 +19,32 @@ public interface MemoWorkDiaryService extends BaseService { /** * 默认分页 * - * @param params + * @param formDTO * @return PageData * @author generator * @date 2022-03-15 */ - PageData page(Map params); + PageData page(MemoWorkDiaryFormDTO formDTO); /** * 默认查询 * - * @param params + * @param formDTO * @return java.util.List * @author generator * @date 2022-03-15 */ - List list(Map params); + List list(MemoWorkDiaryFormDTO formDTO); /** * 单条查询 * - * @param id + * @param formDTO * @return MemoWorkDiaryDTO * @author generator * @date 2022-03-15 */ - MemoWorkDiaryDTO get(String id); + MemoWorkDiaryDTO get(MemoWorkDiaryFormDTO formDTO); /** * 默认保存 diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttachmentServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttachmentServiceImpl.java index b670d73537..5710369dee 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttachmentServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttachmentServiceImpl.java @@ -1,5 +1,6 @@ package com.epmet.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; @@ -10,11 +11,13 @@ import com.epmet.dao.MemoAttachmentDao; import com.epmet.dto.MemoAttachmentDTO; import com.epmet.entity.MemoAttachmentEntity; import com.epmet.service.MemoAttachmentService; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -80,4 +83,41 @@ public class MemoAttachmentServiceImpl extends BaseServiceImpl} + * @Author zhaoqifeng + * @Date 2022/3/15 15:56 + */ + @Override + public List getListByMemoId(String memoId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MemoAttachmentEntity::getRemindMsgId, memoId); + wrapper.orderByAsc(MemoAttachmentEntity::getSort); + List list = baseDao.selectList(wrapper); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + return ConvertUtils.sourceToTarget(list, MemoAttachmentDTO.class); + } + + /** + * 根据备忘录ID删除附件 + * + * @param memoId + * @Param memoId + * @Return + * @Author zhaoqifeng + * @Date 2022/3/15 15:57 + */ + @Override + public void deleteByMemoId(String memoId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MemoAttachmentEntity::getRemindMsgId, memoId); + baseDao.delete(wrapper); + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java index f4be3dfd27..3ea93d5724 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java @@ -1,22 +1,25 @@ package com.epmet.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; -import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.MemoWorkDiaryDao; +import com.epmet.dto.MemoAttrDTO; import com.epmet.dto.MemoWorkDiaryDTO; +import com.epmet.dto.form.MemoWorkDiaryFormDTO; import com.epmet.entity.MemoWorkDiaryEntity; +import com.epmet.service.MemoAttachmentService; +import com.epmet.service.MemoAttrService; import com.epmet.service.MemoWorkDiaryService; -import org.apache.commons.lang3.StringUtils; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.Arrays; import java.util.List; -import java.util.Map; /** * 备忘录-工作日志 @@ -27,36 +30,44 @@ import java.util.Map; @Service public class MemoWorkDiaryServiceImpl extends BaseServiceImpl implements MemoWorkDiaryService { + @Resource + private MemoAttrService memoAttrService; + @Resource + private MemoAttachmentService memoAttachmentService; @Override - public PageData page(Map params) { - IPage page = baseDao.selectPage( - getPage(params, FieldConstant.CREATED_TIME, false), - getWrapper(params) - ); - return getPageData(page, MemoWorkDiaryDTO.class); + public PageData page(MemoWorkDiaryFormDTO formDTO) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = baseDao.getPage(formDTO); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); } @Override - public List list(Map params) { - List entityList = baseDao.selectList(getWrapper(params)); + public List list(MemoWorkDiaryFormDTO formDTO) { + List list = baseDao.getPage(formDTO); - return ConvertUtils.sourceToTarget(entityList, MemoWorkDiaryDTO.class); - } - - private QueryWrapper getWrapper(Map params){ - String id = (String)params.get(FieldConstant.ID_HUMP); - - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); - - return wrapper; + return list; } @Override - public MemoWorkDiaryDTO get(String id) { - MemoWorkDiaryEntity entity = baseDao.selectById(id); - return ConvertUtils.sourceToTarget(entity, MemoWorkDiaryDTO.class); + public MemoWorkDiaryDTO get(MemoWorkDiaryFormDTO formDTO) { + MemoWorkDiaryEntity entity = baseDao.selectById(formDTO.getId()); + MemoWorkDiaryDTO dto = ConvertUtils.sourceToTarget(entity, MemoWorkDiaryDTO.class); + //获取提醒时间 + MemoAttrDTO memoAttr = memoAttrService.get(formDTO.getId()); + if (null != memoAttr && null != dto) { + dto.setRemindTime(memoAttr.getRemindTime()); + } + //获取附件列表 + //更新阅读状态 + if (NumConstant.ONE_STR.equals(formDTO.getReadFlag())) { + MemoAttrDTO memoAttrDTO = new MemoAttrDTO(); + memoAttrDTO.setId(formDTO.getId()); + memoAttrDTO.setReadFlag(NumConstant.ONE); + memoAttrService.update(memoAttrDTO); + } + return dto; } @Override diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoWorkDiaryDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoWorkDiaryDao.xml index b563021ce0..08b7db4af6 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoWorkDiaryDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoWorkDiaryDao.xml @@ -5,4 +5,33 @@ + + + \ No newline at end of file From c40df4938eeb0200dd960d51001f45abe5f43a6a Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Mar 2022 16:11:59 +0800 Subject: [PATCH 07/53] =?UTF-8?q?=E9=9A=BE=E7=82=B9=E5=A0=B5=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/MemoAttachmentDTO.java | 2 +- .../dto/form/AddMemoDifficultyFromDTO.java | 68 +++++++++++++++++++ .../controller/MemoDifficultyController.java | 14 ++-- .../epmet/entity/MemoAttachmentEntity.java | 2 +- .../epmet/service/MemoDifficultyService.java | 5 +- .../impl/MemoDifficultyServiceImpl.java | 47 ++++++++++++- 6 files changed, 126 insertions(+), 12 deletions(-) create mode 100644 epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttachmentDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttachmentDTO.java index 5a008c81c2..623da6c057 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttachmentDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoAttachmentDTO.java @@ -31,7 +31,7 @@ public class MemoAttachmentDTO implements Serializable { private String customerId; /** - * REMIND_MSG.ID + * REMIND_MSG.ID 业务(工作日志、难点堵点、人员关怀)表Id */ @JsonIgnore private String remindMsgId; diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java new file mode 100644 index 0000000000..e74bc8f461 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java @@ -0,0 +1,68 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import com.epmet.dto.MemoAttachmentDTO; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * 备忘录-难点读点 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Data +public class AddMemoDifficultyFromDTO implements Serializable { + + private static final long serialVersionUID = 1L; + public interface AddMemoDifficulty extends CustomerClientShowGroup {} + + /** + * id + */ + private String id; + + /** + * 内容 + */ + @NotBlank(message = "难点堵点内容不能为空", groups = { AddMemoDifficulty.class }) + @Length(max = 500, message = "难点堵点内容最长为50个字", groups = { AddMemoDifficulty.class }) + private String content; + + /** + * 解决方式 + */ + private String resolveWay; + + /** + * 备注 + */ + private String remark; + + /** + * 计划执行时间 + */ + private Date scheduledTime; + + /** + * 提醒时间 + */ + private Date remindTime; + + /** + * 附件集合 + */ + private List attachmentList; + + //token中客户ID + private String customerId; + //token中用户Id + private String userId; + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java index c932841cf8..342c50d8f2 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java @@ -1,7 +1,9 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; @@ -9,6 +11,7 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.MemoDifficultyDTO; +import com.epmet.dto.form.AddMemoDifficultyFromDTO; import com.epmet.service.MemoDifficultyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -43,18 +46,17 @@ public class MemoDifficultyController { @NoRepeatSubmit @PostMapping("save") - public Result save(@RequestBody MemoDifficultyDTO dto){ - //效验数据 - ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + public Result save(@LoginUser TokenDto tokenDTO, @RequestBody AddMemoDifficultyFromDTO dto){ + ValidatorUtils.validateEntity(dto, AddMemoDifficultyFromDTO.AddMemoDifficulty.class); + dto.setCustomerId(tokenDTO.getCustomerId()); + dto.setUserId(tokenDTO.getUserId()); memoDifficultyService.save(dto); return new Result(); } @NoRepeatSubmit @PostMapping("update") - public Result update(@RequestBody MemoDifficultyDTO dto){ - //效验数据 - ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + public Result update(@RequestBody AddMemoDifficultyFromDTO dto){ memoDifficultyService.update(dto); return new Result(); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttachmentEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttachmentEntity.java index 20a7c39dfd..10dc7ba536 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttachmentEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttachmentEntity.java @@ -26,7 +26,7 @@ public class MemoAttachmentEntity extends BaseEpmetEntity { private String customerId; /** - * REMIND_MSG.ID + * REMIND_MSG.ID 业务(工作日志、难点堵点、人员关怀)表Id */ private String remindMsgId; diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java index 00a825fb23..77cf4282e8 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java @@ -3,6 +3,7 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.MemoDifficultyDTO; +import com.epmet.dto.form.AddMemoDifficultyFromDTO; import com.epmet.entity.MemoDifficultyEntity; import java.util.List; @@ -54,7 +55,7 @@ public interface MemoDifficultyService extends BaseService * @author generator * @date 2022-03-15 */ - void save(MemoDifficultyDTO dto); + void save(AddMemoDifficultyFromDTO dto); /** * 默认更新 @@ -64,7 +65,7 @@ public interface MemoDifficultyService extends BaseService * @author generator * @date 2022-03-15 */ - void update(MemoDifficultyDTO dto); + void update(AddMemoDifficultyFromDTO dto); /** * 批量删除 diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java index 4c40dfc3b1..8586c096c7 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java @@ -7,10 +7,19 @@ import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.MemoDifficultyDao; +import com.epmet.dto.MemoAttachmentDTO; +import com.epmet.dto.MemoAttrDTO; import com.epmet.dto.MemoDifficultyDTO; +import com.epmet.dto.form.AddMemoDifficultyFromDTO; +import com.epmet.entity.MemoAttachmentEntity; +import com.epmet.entity.MemoAttrEntity; import com.epmet.entity.MemoDifficultyEntity; +import com.epmet.service.MemoAttachmentService; +import com.epmet.service.MemoAttrService; import com.epmet.service.MemoDifficultyService; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,6 +35,10 @@ import java.util.Map; */ @Service public class MemoDifficultyServiceImpl extends BaseServiceImpl implements MemoDifficultyService { + @Autowired + private MemoAttrService memoAttrService; + @Autowired + private MemoAttachmentService memoAttachmentService; @Override @@ -61,16 +74,46 @@ public class MemoDifficultyServiceImpl extends BaseServiceImpl list = ConvertUtils.sourceToTarget(dto.getAttachmentList(), MemoAttachmentEntity.class); + list.forEach(l->l.setRemindMsgId(entity.getId())); + memoAttachmentService.insertBatch(list); + } } @Override @Transactional(rollbackFor = Exception.class) - public void update(MemoDifficultyDTO dto) { + public void update(AddMemoDifficultyFromDTO dto) { + //1.更新难点堵点主表数据 MemoDifficultyEntity entity = ConvertUtils.sourceToTarget(dto, MemoDifficultyEntity.class); updateById(entity); + //2.附件表数据全删全增 + memoAttachmentService.deleteByMemoId(dto.getId()); + if(CollectionUtils.isNotEmpty(dto.getAttachmentList())){ + List list = ConvertUtils.sourceToTarget(dto.getAttachmentList(), MemoAttachmentEntity.class); + list.forEach(l->l.setRemindMsgId(entity.getId())); + memoAttachmentService.insertBatch(list); + } + //3.判断更新提醒记录表提醒时间 + if(null != dto.getRemindTime()){ + MemoAttrDTO memoAttr = new MemoAttrDTO(); + memoAttr.setId(dto.getId()); + memoAttr.setRemindTime(dto.getRemindTime()); + memoAttrService.update(memoAttr); + } } @Override From 1f9dd227e5306ac9d8bd8851a6b382cc5e101175 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Mar 2022 16:18:09 +0800 Subject: [PATCH 08/53] .. --- .../src/main/java/com/epmet/dto/MemoConcernDTO.java | 2 +- .../src/main/java/com/epmet/entity/MemoConcernEntity.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java index 500e28d53e..2068008383 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java @@ -40,7 +40,7 @@ public class MemoConcernDTO implements Serializable { /** * 关怀对象电话 */ - private String phnoe; + private String phone; /** * 关怀对象地址 diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java index f897debb03..59a2770876 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java @@ -38,7 +38,7 @@ public class MemoConcernEntity extends BaseEpmetEntity { /** * 关怀对象电话 */ - private String phnoe; + private String phone; /** * 关怀对象地址 From 7a3c88a495d9ee89d31d7b4e8d0f6908d5ff58c4 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Mar 2022 16:40:50 +0800 Subject: [PATCH 09/53] .. --- .../java/com/epmet/dto/MemoDifficultyDTO.java | 2 ++ .../dto/form/MemoDifficultyDetailFromDTO.java | 34 +++++++++++++++++++ .../controller/MemoDifficultyController.java | 6 ++++ .../epmet/service/MemoDifficultyService.java | 8 +++++ .../impl/MemoDifficultyServiceImpl.java | 12 +++++++ 5 files changed, 62 insertions(+) create mode 100644 epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoDifficultyDetailFromDTO.java diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java index 6b3008fa42..59500dd922 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java @@ -4,6 +4,7 @@ import lombok.Data; import java.io.Serializable; import java.util.Date; +import java.util.List; /** @@ -82,4 +83,5 @@ public class MemoDifficultyDTO implements Serializable { */ private Date updatedTime; + private List attachmentList; } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoDifficultyDetailFromDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoDifficultyDetailFromDTO.java new file mode 100644 index 0000000000..6866de9bf7 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoDifficultyDetailFromDTO.java @@ -0,0 +1,34 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + + +/** + * 备忘录-难点读点 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-15 + */ +@Data +public class MemoDifficultyDetailFromDTO implements Serializable { + + private static final long serialVersionUID = 1L; + public interface Detail extends CustomerClientShowGroup {} + + /** + * id + */ + @NotBlank(message = "难点堵点Id不能为空", groups = { Detail.class }) + private String id; + /** + * 阅读标记1 已读;0未读 + */ + @NotNull(message = "阅读标记不能为空", groups = { Detail.class }) + private Integer readFlag; + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java index 342c50d8f2..7329f514e5 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java @@ -12,6 +12,7 @@ import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.MemoDifficultyDTO; import com.epmet.dto.form.AddMemoDifficultyFromDTO; +import com.epmet.dto.form.MemoDifficultyDetailFromDTO; import com.epmet.service.MemoDifficultyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -69,6 +70,11 @@ public class MemoDifficultyController { return new Result(); } + @PostMapping("detail") + public Result detail(@RequestBody MemoDifficultyDetailFromDTO fromDTO){ + return new Result().ok(memoDifficultyService.detail(fromDTO)); + } + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java index 77cf4282e8..d91ecf1b4a 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java @@ -4,6 +4,7 @@ import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.MemoDifficultyDTO; import com.epmet.dto.form.AddMemoDifficultyFromDTO; +import com.epmet.dto.form.MemoDifficultyDetailFromDTO; import com.epmet.entity.MemoDifficultyEntity; import java.util.List; @@ -76,4 +77,11 @@ public interface MemoDifficultyService extends BaseService * @date 2022-03-15 */ void delete(String[] ids); + + /** + * 详情接口 + * @author generator + * @date 2022-03-15 + */ + MemoDifficultyDTO detail(MemoDifficultyDetailFromDTO fromDTO); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java index 8586c096c7..78db39353f 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java @@ -11,6 +11,7 @@ import com.epmet.dto.MemoAttachmentDTO; import com.epmet.dto.MemoAttrDTO; import com.epmet.dto.MemoDifficultyDTO; import com.epmet.dto.form.AddMemoDifficultyFromDTO; +import com.epmet.dto.form.MemoDifficultyDetailFromDTO; import com.epmet.entity.MemoAttachmentEntity; import com.epmet.entity.MemoAttrEntity; import com.epmet.entity.MemoDifficultyEntity; @@ -123,4 +124,15 @@ public class MemoDifficultyServiceImpl extends BaseServiceImpl attachmentList = memoAttachmentService.getListByMemoId(fromDTO.getId()); + resultDTO.setAttachmentList(attachmentList); + return resultDTO; + } + } \ No newline at end of file From f52ab1b8d5506cf61fd6fc5fc780bc7493917640 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 15 Mar 2022 16:51:55 +0800 Subject: [PATCH 10/53] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=201.=E5=A4=87?= =?UTF-8?q?=E5=BF=98=E5=BD=95-=E4=BA=BA=E5=91=98=E5=85=B3=E6=80=80?= =?UTF-8?q?=E3=80=81=E9=9A=BE=E7=82=B9=E5=A0=B5=E7=82=B9=E3=80=81=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=97=A5=E5=BF=97=E7=9A=84word=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/MemoConcernDTO.java | 2 +- .../gov-project/gov-project-server/pom.xml | 12 ++++ .../controller/MemoConcernController.java | 61 ++++++++++++++++++ .../controller/MemoDifficultyController.java | 48 ++++++++++++++ .../controller/MemoWorkDiaryController.java | 39 +++++++++++ .../com/epmet/entity/MemoConcernEntity.java | 2 +- .../memo_concern_export_template.docx | Bin 0 -> 11862 bytes .../memo_difficulty_export_template.docx | Bin 0 -> 12172 bytes .../memo_work_diary_export_template.docx | Bin 0 -> 11587 bytes 9 files changed, 162 insertions(+), 2 deletions(-) create mode 100644 epmet-module/gov-project/gov-project-server/src/main/resources/templates/memo_concern_export_template.docx create mode 100644 epmet-module/gov-project/gov-project-server/src/main/resources/templates/memo_difficulty_export_template.docx create mode 100644 epmet-module/gov-project/gov-project-server/src/main/resources/templates/memo_work_diary_export_template.docx diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java index 500e28d53e..2068008383 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java @@ -40,7 +40,7 @@ public class MemoConcernDTO implements Serializable { /** * 关怀对象电话 */ - private String phnoe; + private String phone; /** * 关怀对象地址 diff --git a/epmet-module/gov-project/gov-project-server/pom.xml b/epmet-module/gov-project/gov-project-server/pom.xml index 88e598b596..8604647c05 100644 --- a/epmet-module/gov-project/gov-project-server/pom.xml +++ b/epmet-module/gov-project/gov-project-server/pom.xml @@ -148,6 +148,18 @@ true + + org.apache.maven.plugins + maven-resources-plugin + + + xls + xlsx + doc + docx + + + ${project.basedir}/src/main/java diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java index 39d1beb1d4..bf3df91094 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java @@ -1,7 +1,12 @@ package com.epmet.controller; +import cn.afterturn.easypoi.word.WordExportUtil; +import cn.hutool.core.bean.BeanUtil; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; @@ -9,10 +14,16 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.MemoConcernDTO; +import com.epmet.dto.MemoWorkDiaryDTO; import com.epmet.service.MemoConcernService; +import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.net.URL; import java.util.Map; @@ -67,6 +78,56 @@ public class MemoConcernController { return new Result(); } + @PostMapping("/{id}/exportWord") + public void exportWord(@PathVariable("id") String id, HttpServletResponse response) throws Exception { + URL resource = this.getClass().getClassLoader().getResource("templates/memo_concern_export_template.docx"); + + MemoConcernDTO data = memoConcernService.get(id); + + if (data == null) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "未找到id为" + id + "的关怀项目", "未找到该关怀项目"); + } + + Map map = BeanUtil.beanToMap(data); + + // 创建时间 + if (data.getCreatedTime() != null) { + String createTimeStr = DateUtils.format(data.getCreatedTime(), "yyyy年MM月dd日 HH:mm"); + map.put("createTime", createTimeStr); + } else { + map.put("createTime", ""); + } + + // 预计关怀时间 + if (data.getScheduledTime() != null) { + String scheduledTimeStr = DateUtils.format(data.getScheduledTime(), "yyyy年MM月dd日 HH:mm"); + map.put("scheduledTime", scheduledTimeStr); + } else { + map.put("scheduledTime", ""); + } + + //状态 + map.put("statusName", "0".equals(data.getStatus()) ? "未完成" : "已完成"); + + XWPFDocument doc = WordExportUtil.exportWord07(resource.getFile(), map); + + String filePath = resource.getFile(); + String suffix = filePath.substring(filePath.lastIndexOf(".")); + + response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); + response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=人员关怀导入模板" + suffix); + + ServletOutputStream fos = null; + try { + fos = response.getOutputStream(); + doc.write(fos); + } finally { + if (fos != null) { + fos.close(); + } + } + } } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java index c932841cf8..012059e342 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java @@ -1,7 +1,12 @@ package com.epmet.controller; +import cn.afterturn.easypoi.word.WordExportUtil; +import cn.hutool.core.bean.BeanUtil; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; @@ -9,10 +14,16 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.MemoDifficultyDTO; +import com.epmet.dto.MemoWorkDiaryDTO; import com.epmet.service.MemoDifficultyService; +import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.net.URL; import java.util.Map; @@ -67,6 +78,43 @@ public class MemoDifficultyController { return new Result(); } + @PostMapping("/{id}/exportWord") + public void exportWord(@PathVariable("id") String id, HttpServletResponse response) throws Exception { + URL resource = this.getClass().getClassLoader().getResource("templates/memo_difficulty_export_template.docx"); + + MemoDifficultyDTO data = memoDifficultyService.get(id); + + if (data == null) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "未找到id为" + id + "的难点堵点项", "未找到该难点堵点项"); + } + + Map map = BeanUtil.beanToMap(data); + + String createTimeStr = DateUtils.format(data.getCreatedTime(), "yyyy年MM月dd日 HH:mm"); + map.put("createTime", createTimeStr); + + String scheduledTimeStr = DateUtils.format(data.getScheduledTime(), "yyyy年MM月dd日 HH:mm"); + map.put("scheduledTime", scheduledTimeStr); + + XWPFDocument doc = WordExportUtil.exportWord07(resource.getFile(), map); + + String filePath = resource.getFile(); + String suffix = filePath.substring(filePath.lastIndexOf(".")); + + response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); + response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=工作日志导入模板" + suffix); + + ServletOutputStream fos = null; + try { + fos = response.getOutputStream(); + doc.write(fos); + } finally { + if (fos != null) { + fos.close(); + } + } + } } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java index 43faecbcab..2692fdf195 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java @@ -1,7 +1,10 @@ package com.epmet.controller; +import cn.afterturn.easypoi.word.WordExportUtil; +import cn.hutool.core.bean.BeanUtil; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; @@ -10,10 +13,19 @@ import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.MemoWorkDiaryDTO; import com.epmet.service.MemoWorkDiaryService; +import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.net.URL; +import java.util.HashMap; import java.util.Map; +import java.util.Optional; /** @@ -67,6 +79,33 @@ public class MemoWorkDiaryController { return new Result(); } + @PostMapping("/{id}/exportWord") + public void exportWord(@PathVariable("id") String id, HttpServletResponse response) throws Exception { + URL resource = this.getClass().getClassLoader().getResource("templates/memo_work_diary_export_template.docx"); + MemoWorkDiaryDTO data = memoWorkDiaryService.get(id); + + Map map = BeanUtil.beanToMap(data); + String createTimeStr = DateUtils.format(data.getCreatedTime(), "yyyy年MM月dd日 HH:mm"); + map.put("createTime", createTimeStr); + + XWPFDocument doc = WordExportUtil.exportWord07(resource.getFile(), map); + String filePath = resource.getFile(); + String suffix = filePath.substring(filePath.lastIndexOf(".")); + + response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); + response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=工作日志导入模板" + suffix); + + ServletOutputStream fos = null; + try { + fos = response.getOutputStream(); + doc.write(fos); + } finally { + if (fos != null) { + fos.close(); + } + } + } } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java index f897debb03..59a2770876 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java @@ -38,7 +38,7 @@ public class MemoConcernEntity extends BaseEpmetEntity { /** * 关怀对象电话 */ - private String phnoe; + private String phone; /** * 关怀对象地址 diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/templates/memo_concern_export_template.docx b/epmet-module/gov-project/gov-project-server/src/main/resources/templates/memo_concern_export_template.docx new file mode 100644 index 0000000000000000000000000000000000000000..07d3c0e1f9a016758be051c68b97ef7f0e334b78 GIT binary patch literal 11862 zcma)i1yt2b_cq<#jg+KxcXv0^E!}WvB!mOfNF!Y;-6`E5NP~2DNlJVNz4!IXd;jnH zW~~$JclI;0_cL?$%$~iKQd!is3f8|pRE!Or4| zRo5z*^OeYfb!B37(q%0NKJ?L+9{s0ZYew)B?4gvtwe^-lrUP?UG*%DKBDq|M?P!=@ z(Q{KCVpliGXJ+u@4X1!nLr z!-U`|q3a*o;&byq-*7jI(K1tm^+fUVbB`|>` zSsvF@-YF4oq^ETcxKXS`1Zqc==AFIK>=cTcsSB-3S!3UUQ)P4$vYZ_aA83%7axAFXF@KyraQh^ zA^B2Tw|BF!j`_{iR(suIx{Lp1b<6B-)~*q1&w%6>O%xo0@R_8v{>FB(Ug$JUd6ZTA zuB2F0l+oCS`sO}>oTuq>JNpYf>UNm-c`r8XqTEMnuuKO%vXUd4#k`&7@w(HQ6hd@+ zmb9U{$;^P*+|QFu>tWvKIG9>dSJrg?$EMP0JvD}~XG7sF(GSjdX#vRVw z@I^Xp*|saKt_y1O;5U^T*az^Sy@nkfudg~y zUtD}=qfSXFBO3SSq>?f?E&<~-b*0K?|L8TfrfGQ8&hE36`D1YrI_zMG4ygWb>dA0zTef56f6`_O{Ruc{qHdF61nxTvYz9@P1^3a{km0x{P7 z>&$qMNDNz(n3lY4FSB8o5%==Opx;tJydM4Ls+x&-<<6h=0&1kL(FQhG0vvZ`xwQGS zDbv*34li0FID`WPz=_`wi~B9P`d&_e+q0I659h|!mbNzr&SQ9jwAlg$!M4nq>0Ahr zT*S>cr?U@Qv-qu34dYJuV)p%h>xkR$lJvoa(yHxK6Y|0is|dO&OO+GNP{VBDv$0E1 zXV>l#1D*5>(6%*0#xo5vgKE?2%bxSNQX2<(U0gG_@;S)Ks)onWM8v&{&%^KZ4_jFZ zj9cM2xT!xSd}Qn2Jqk34Ee{80vnSrfIUScZ7vyaW&B4G>{}yp^^|Up2c_gz&U%`2v z8)s2z^4shD$)S$egZhIgI$14~-gxzSMy0_+12Ia4gF=(o zH)xBi1N7LNEK00{+*5ji$aFGVCK;NqSa6W-oitwaH`uSzCQf>$iS=>HO4*c%zAr$F z*T(7Tm8aww>YpW1KB(7Pu6J_!VG0SIlu0!IK;WKE)WpEJU|(8Fqt?(ngKze$yu1RTyn!y)tC`cBcZIpTZKjnN=nr z^6+}v&eNH-E$#^ct;yXLhx%U8aPNfWfTc9nk%H}NJ_$cr)p(7 zIrW~Pw?de0RZwkq4xwRf?4RokP7tB(Pp+5WiH=PYj&}a#uwO5sFB+{0e^El-Am;qT1wk;i==<6k42m@lQ#j-@+1>Rm_xw zP#Y4`5pJW3qCRav*=a?{jRI=wEjy_*x~X2ZzWhecM$-tV0HAY7no{Fw2`)VKRpB;k zWm+lrG3-#gZVh(0yi+u-_!71k)JG}8x2Z~Zc5ejWNCujBWcg0pv-Pla2iWs$l6+$u zPE0M)dX0ZWx_FOD=LJt9?WNDbu2VN=Jx6sVLFwrY=2Zt4i11z>*BXM(ya>LiI{W!6 ztxyA&`jFNXt2Y1LLu1qMPiwwk7&0x{A=ph>nch5mQ?^16z~$uMt@SAjc_T?bIitjf zD$%fzg8n>Sno=q7z!!}@u5KBMt^%6LM1JLm0803em}C3oZR3j_^I?v+YCia_qowZ> ztUD>Vx?|{)tR}~B2x2x&n++<|^E&zVKcx3ze5*V^-oC_mZiQw()=QBLP7djjTQPlB zNmTSO@8ENPx#D}avvTnqfNILqFDDsW>7%Agu%+GD4vi)NFXS^Who0e_S~n!_V0*En~8KBHYUL8+lRo2ZuPo z_wlPQfHy?I-L&OLB&d7E$~7{ye8St#QDzwp5$WewR8^(cfsiHDfpErEvG~ve890`j zgLR)RA&zStp@?Gudg+2*+7XI`8iCguk?CZ~7L&r%$#xo9^Tyj3{qrpZ+Q_bzK6SP6 z8%+|_gB}rziAOjY3`;L~by{^nKluA%A9q8{{RsYY0t2ga$i>}9*Vat9azcRfV>@YT zaRChBMCFt!7r>(pH`=0!SamB)MJ#6wQxAQ%8d4pqwH%+1fmAnE13=;~-hi5Yc-@}G z$NNjd*}R5e0}EM zwaua06nwV)40_;@6zHD!YKJr;I-v$}I((E~yMuUnaIZt7=^RXn$+O;3!%<;u4M$Hx zZ|xEdKIzBjSS0`^c84=owR*jY3fe5|UjHhBRJ%!h4Rr)PP1C^Kw1XhVeA1p#$$^|} z`St}BueR?G3}S{(Um(iV+I#U(co##AB)W-HO*&UY#w5-OJ;<=p5IGX-95UBF-R6o& zFsRucA+g65Bu!9J$3xof!K8?Bv z2RFXHd8w8L8rHdAOko1cfim_pfMRLT3p7GEc9!o+Pi1}1IMt#y<6D4f!(SR{lRKRB zV0cD=l+Xn!;0HpthjAqi<|Ee>a6T#>7n)i`3sT(wL{icF1j~UTf?oK?YNWZ7M4=qW zN<5Gmf1xYH|6wu(@V1LkE)d;;AxVzVTEXt0R^G2hrfY1|E^6aw1^nbLTrmlx5%X%~ z##6!`)sw`y2681rQGgT&@t-;e(joS70tx`SM_u&tiWAIHbv$`Bm&JLnW%u*f)N^ngPI+W$XNZF6%XZ0WedpU)7)M4*X}~x5ne*&R9P03j(ERO@Yw$J@JVif*V`u2peRo9^V$G}1Mt ztW&YD=f6$0a~M5}4up}63X%mDz20_Cr7hn0s+}awn8Y5mIqp?t2;39cV*SVsw?=+} z#XKZ}pg*cw_v+ST%rQa&vC`84lW^o^6Yu_K%URpHM7kxjP)e zZj|RlB;W_KzJd9N*E0f$A&16GB^N0+?&}Ydb-uW`>>A?NoD|@;IQ$Xznxb@ZtdttW zC_!>&6CV?r)ugD3kkW!(`Hx@)K7zd$eQ#R>P9kSqjaiUPfZ@S-lqW-%Z$@=$^NdF9 zEpj^);ZYruDeZ8q@#5&3K{jjEgfJyq-x3mooqHG$gG~1jg$yReAm=y7QK%v8;)>%; z?BNG+^H-AEs&PmXB~}2=Q@+7sM*LX=ISE52%i!V5RxJQy9bfd(zV1w>Hln8?a7aCB z(@+H1iN$ZEi6+7NNg{p)sY*Gn#`r))qc0aSz2{4Y(L7P4Zjkne!Vm{UV{x+>BN~|T zlGhEN$_L%gg=OZZ zNPp4)P*Sa<3_dNa71Dq{gXO+_@k#m`j%hO`wZqPY^g*T*d(0w-7F`Y6>`s~G_}d5e zE-l2$ckix8?j_gzf`F|bV`35NW|Z5uN{l;(wCJk!v^eu0Uf*OVT~z>~ae^tXTdMIx z>R3a;G~VS%ZS93_jq`H1uCX`+n~9~#Gh$+w5fYMLbQZwJk7^}{-6Cqnt~$EOUk4#A z%7F#j4RbYPk9(G1*=&suCd&a2+ZIo$vNdPo0t+4e8ZIz@}5% z5w3E#5}-)3WxnUI;m8Ge;k;Lb=}kp-;zuqlbht|YV!4&uUSxGZ_L9gyxwmun7Vm%= za;Tv{LFyu^Q7Z}8&wPGqrFob=3SPXAoalE%(n&Q;sCgKFB zFUv2N=xJGf^@48(qNoEbedcKpXXcX%qmTrRzMW{t+>OGF`N}frXQvRXE!S+19Dd@$ z2rBMs^^}v6inBaMo(DP#4uo82Ex6nM+WRdPW_uK@ zU5qaF2y1x8V0E)0N43=19|KJZpLT!XcbPlbN=+#XA+8gcc8`Vlusan>swa}h+QD+s zCWxL^v?HZjkY;0J0@o?6XF{vEJR5d`Cv!E>Srd>;aZET~bFNxki$f82We{lM=xxeQ zF1FutdvH0uBy>?{vB-y2Af2ZSDK_9ez*Q^H&WV?VEh;Y&;e3QPR)C5LytgBrwEHxzG}%tE#d=#@CIwC+R+4W zO-Ck7)(V3ib!;*s0>D9Y z`VO4oG%PBN5bpM`YF}pXOnY|^F-*G81CV$yZ7Exty5>c?@Z$vWwI|uR=BQZK&3DP+ zu4_$P9DC=DCu(*%1*>Dr>CxO`j!dmXP6$$^v6}QQROE*PjwtXOq%R75Uaj(qiWZ2; zr%c0_qcNrt5>44q`l3R0Wn4h=M%qy(neCr8MB}l=+Hu-T&?xH9kjRi@{;0qc1Ck#- zk7v9Bukr}HLGcvsA8=hFn~}Zjw{|3~9?xTELOVC>AZ}=WlcMptg_fA?Q$9@Ig6e)U zCG~&@XXiCMm-NO*hfHpOp?d$~W>E;nn!hzJX`Z>x->D;f~M5z&|HX=oo9+r>D;D(+};CO9`OQC2_ye1n>e;wPW;o2F=}C zhPuR_@sKiUL^#zm_95wi{8FY8;yuhcF};8fZvKOj@@>B@1|bT@`D_+KT&tegC=uoN zfsqi2&i2(xXCb*s48$x=GiVek5~AW%zZ!_=Mo=El#htQF6Y{+h^)rUfhQ5C=dWo$Z zh)d`RJ;b)4tf$4ORKiGKqh>ZoZk&*&ASxw!$&8*2wl!HSsU)_h@3N3wIFVB*8r$2E zrSkdKkYOa%rd)RdCN)`B1oNn9XPWbaGOJhu=N-D${l;x6=MLC^HGosnbSMM$E=*;C_3O9E(y zs|hLSzRqeXU&+&_E7e@jwhzQ9JX>g?;XZ|N?QkHYsjzPO1c8SJe&jKr!wv~iMu|w4 zHoYWjI$%ESLtSJ;Lny@_sl2En&+=vY8v9S3He}v;=`7c7iDq3M>YR#`&|?MGJfui2SeTtWtxsZ)#HJL+Y^wI(UeY-WQ(* zEtpJpjJ|R&ors+hGDsF;DsLA+i{@s`=%98%$I15UQ zxY?Q8yZ+iHbZrQwu>6?53x)Y6Y1;Jn7*wKEq~nR%$ghv~vd$4(70zYgTUgXMiMEB{ z$eyXgQC2IE-GR4^aw-=JQCF@N-iN$TS(u#UXiad1_8POcUuqcQv9uUzaQk6QqyeKX z-BD!8Q`4x?K4A%-E%3$5(Xp)2UL#MGT^K!grV6E^+TOwMs=Z_aIXSZ{`2&Km@=n3G z%TLO*hjX>x#fT_$B7jWEX8IauI<{5zNmnz9DRBGm8r8TS>Wu^wF}7>ah@V+)IG*qm ztR+K~Fk-T(R`!U0iHhB(ZbsN9qWwySt`ZucZ%A*HY)KW^$Rjq1F6ISHV@dE2$2L(6 zciFa}uX91h3$JZMKW-~Rf+vk|(q~6wVbCVfqwIPX74Avvk?QhYlHAY&wH8{|n7${# z#c_*lNy0R`*4ZJ=zQtlknEB!q_pR%%Gz{%?G)KPsRDSGKsRn{=zMy$7{%Jnkyr#P z1y(QR8a`dKqf%lnZn4|q5inKKRU92&&|nr}zP2qM|CBdkEx{L717Gp6Gf?bqW7E=b zTZz=PHI(#&>@JG(x{li*W1|o`)?kWXlovqGXkw`YE%tcml`KSJEuKc81e=(zDAgV{ zj2__(HH6c+5n5;yy4)q^F8z2e-gKTqFA{<*mW|8$+Ch`WZhed895F`BELFQ@*3^$Y z+zPNxMXdi z-V?X7vV@<4Q3DyLK%ig9VPntZ0R3YttPEbrZ=Y?~R0I`;$M4iEoUnvsc;xG55+^G9 zaS!Li#TDRcID&Pixh-x#8(?+3yzmNtUEpI_+=E7pkncrrQ>I~J`-CSq_V`MI_ZMoU zTs9u*i$c*E?}M?Vrx@ab@v)%9-T z)K3Z5ELWl8vkKXkTpa57${<)7G2wS1lTtgyiq z7~%-rYsnrwK(`d~J2@=W(s{YEe!W+<^*O1X$rVB%07=PFIPr+Vcf%mSW9s{Br^)rH zhd2ekyPNa=v8{Y&K!`edl1|9}N-fxwpc@WDa0Tk;8~dxxdVZG0Q0q4xxX^$z&7>JE zoz#rWx#(qrR8f_-*-;KH>9x*>n)4nn3(n?C7K~9uH>7O`P6Y$uZ3rm#=_*mtP+FSv zx1ki@GVqXD5M0Sjd?&|_^?T&?O-xNCxV(X^!_DezRnmpS`HT?&O&4>GFWEqtFITVQ zYD(RN%K~rfEqBOa60EDNdjwSk%acj-OJ;5v-SxNnDdrH%_}0v+xl|L<(f zugVr(po0ZY$8ae>4<3Dhi>{-hKRc&xYg?A9-TwsqDq@x>VaeF z02cyc+JlTugLZm4a_<=GEpb-j6JHb(&dK8`}>1a%M6bRl~B5*y9^7+sarr!ma3y zr!Ah(p;gM3-D0pz`a!3H-e`H=4w-y}g;?epgU#SNB1C41Ko2W7AD2CR#p>Je`M$SB zEwgDdPFowU7Mf6{HTUYLjui3Y;A2gt1#*xQ61&?)M=_r4(Df&=0TuR;K2 z^rC=u_>hZ%n0z~5*@=g@g>xpSF1iGr{H`+}oNC<-n3wQkg;m>a3R=SDgB+DyX^tj` zq+kzayV=dcJYjzX#;1Bp=QULMp7l)C&tdZ?zzl6w4m79EqIQZ*R_0ApBMoY>JR?GJ zmuPc@6AF6Y?Rf0Nt$hMTxExbktkfwsDDtZF?Ko6~8Tta_xwITWOcGGEsSAEWmb+Z3 z1k2jbX+Sxz4V5ACjGvrJkL}D&@C|KdUWFVR5bqpSQHPI+; zbeF{ zF*xu{>8Qr%{i5~$aBb$1K49S3mvi+p9`~cTzW$*a8nsNd%iAz2d&^ejvb+(U$_}!Vw1X>uUQFJ z7T7)2^$GdCXN_pYCtY2D*~W+}gO7c-f_=!8{G6v-UKs6c8Z>b;&=(==lzZX%eOT~B z=jiDhr@j80x*)yD&74{-x*^%9;)II%7xQhH3&UK;9iJ?`UrwM^Nw-lN!3KbZW;DBe z+;7zDFWnz$#Q0=MrbVZ1PTSirwvq*7lveT(Hq4~M0l@agPPG|G#%!>jdghDUs7vYV1G?f0hi%hjwz)gD|z zswNcQDPOU{zLCJ)+lQ@3ZMx?nOo!2yS^qe;CSGhrO~-&o_+3>Au>c;o>h+W*)S9iq zRJq8^vd@kb{5HymbE!+m#oR7^3{D6@LVS-vyM%#|Y)Yh`=zwiZ;d+k$txyiIqW{3~ z|Mu-Lpue=Cv$^fl!X0pOa?;1zg%wcY$m9LUFB!&1$&$DQSx6SNkR#|NvLRotc{=j1 zwhrRk8PdK1WGM^C3%4=yHNM_K{`KXhEyvERmLonceO@lEL4fQ8yJLhz4dlRPl%5;K z_OnA{Cq!~KuOPAGyk&8G&f$&j8z9U&Yl1gn6%C^x{dUS)MuN`eImf`+2_Vl1W$6@9nW$Ky2qvG$YBpCeUSM z_*R0j9|Mt`Q!U&ChmVqErQX8e=c52|Sl*>$%*X9>DI0q-e7V+Vfvx5zedTkj&hKh= z`euk9qla6{^*mGjCWfcp^F8V?ZXA*C(B@C)`0uw!kL69jcfWt*)K!Sbs~IFk1KMRs z{zdvfJLXTCL%y_!L$DyhEH^FlC49>m0ieb10CaGgf%VHZuB>d`R%)pA4wGlq*hkelXx>J7kxD@dZ5>VGU`0f>WYFfkre@u5+Q<=DvCU^VS;zdC zBhJYT%*&YCe~y$$FN-&5mPPa_fi;>}$D@W~*G=ES_1;eS()fdz!!yzwn2GBY+0zG3 zOKnch0Xo3n)joV#?1>q$Uq9F$tx-@ zx!b*bqQd7#if|QbP zu+a#Tlru?nTuog29EC~~v#-TfPx7)%NorN&c1EoRIsyb0QqeLt)q6Bi=6rT=HlBaU zG~=HRI2BbRvW7lU778rtA>(-{BTnrh@PXgl9zDZGoQ3-G?tY&IxI05mpRB7x4(&<2 zYODa~LWy!n(J+jr^L(qc`faIpPJ?0moAKh2DVBH6Uby(2Hmqo@g>7R?qKX;$99SR8 zk7o*BeZkEx7MvZ7s80I)=MFtl`!Ht%T2jfNTgt~WBV94j?hJ}J4b?pz&0X|=R>mao zIdp)|Etj%)sIk-Gc)aQw5=Psmw)jO8lQj-)9}Fv*ucA*^C*6~ym-JnY$Vrp z+~yf4S5Cem7?At!s}y~V!CD|J+2<~Zs{=Yz1qwfW!7#RPZ{3 z_qT(OIS9{1nO`DMDjSrXRyD#suYsFZBpyS)Fyo=MIjf!^TiC~3EJ`iHHe*9S(a>I9 zc78WHk7`pdSzfg*MzC?vY-!@FV+}tr_%5IBw5R$sD2(7GzO)vsi*>#Sr+N*&a?t1t z-5a=tPE=p5-4USM`2yRQ#Jj;`2U2W@%?Xc@cZ8D+WK_H+Q|pmc*mE^^?i^Aw)FzCA z!=zq9yUS2{6|HcwV6n?;M?C4wMCnWv%TsOsU=yvlYq5ts%jZ=OV`X+IvCXYo)I!Q~ z;1F0~zbhc0&JJjTz`((tf!-si|8=f@b@1;#=FwaKYLDKgnc{E1{B+Q#-un^rYtZHY zV1E9K{?}l?RCt6w4z^7EPxtn}aF5cz+T%AEs(<4C{@4G>(No9xi2kK6`@f+7bdyg_ ze;Sbd?h6j&bALPN|Mc>-gQu~;?+!-(tApQ>!T%!Uu|D=!`c#(MG{_nK)gFyj z1zn5%RnYfn@V~F_$GzcKdxS7N|6>Dqs_fIf;t}|ZDUCmY|Fv^G?dj>Y-S3{TKsleE zTK}_;r|_o%(r@?<=pOLD!=?YiKS_fB#!I05h5u(t{3-ltP2_L5+uxl3u8{l%{{LaW t4HWDB)cx=|V_a0ob%rxC8WCj9jI_kaa{F?BFec5-lZW>N-{p#vYl{3J8T z)Iie#1p#pY0|7z)Cz+9>Bcq3%ZBC+rLl851?{eA!AM#TE9ZG45A^u3I85_!Wq17N{ zrpSCfV5iX_QDSy~>4>LM;N~MV6O-P4wulv_$6lD<3U5a_HBPmvyMb+M#=fPPhm3Y7 ziEDMPkof*Nzua zL55K)#sO){UT1_mh>_8CHx8CGmZPQZQ5E$aIE;D83@i!0-?^&{;3kY*+)q;{^XiZb zjXI$7Wpg00Ux1I`6~J&@zV&i0I^kQtEa3?6q@+=yBhAXI=)| zw%>u$x~bnnh{NmeXPMsPF1g;x+%#>k(#7=?HolOjLyDwSGvjU>>g*!!$gnsc5^<$o z${qKb3;k&bd|xarb)X@9frdc&ry)!noXnmq5u4Ph*v*U(b}Zd0_QpG_1OOE^Cl6MS zmYhHh_BtB1I@)rA7Iwdn%yEOp6XDx?Ix)u;%%OIn$G98@H&+bXPEEiLej>FbsO7kH z@esZM`p^j~K>TqRp0;Uzr`SWK-D**&ND(<@CIaqEQG4QME_(lnH&Kdj$@5<`Z;S&xkvqoUkZ zxf)vku;@(Sc{w$Bs3SCCd6mM@OTts`uCCDae!qZ`z}DjtLa56AIQ*qp@sD=Y08Pr? zu{b#Jg+K)U0Kz!}w)ou(g<5g?$Yk=EiG+lpA{R+Zd?AbLGTeRdl|TUY<;}x5d`Xjm zWN($uO2;$at7g2!<7;lZf$S0*1x7`DLeR=aBg2YY9b;2V z-cYgc=Y}&_e;NUAqYst>XaoeH5zziHf~&KOgWZ!EiW5bYf|=3#k1742zwy3{Z0G;u`lL)69~jzfkCv3BJu z^99Xq$Z`Y)+s6fP6si}1P#JZ;YyCV(6q6hBI=CiKidrWi*m(j~be=H8)^@{WGg%*R zmfIjxVA5BpzF_K*KGX@BETzk>L2=0Owkr^6>1^jA>cGXjp|0i7>g{z4KYBFmPxU8=Ls4n{T=$W)+4~$fjpe8XZpdv_XyFH4g-o)RD zJW$@m>jof=qefyfdTKOKpJfmI;D!(exxF5e!}lE3H4~*&ecV~hKRzW-$d^u4ecV00 zU9ngma!L)MPlA1WTg`v&fAhUx$Vd0B#f?o58xly;0Y75N1MTR<`4@6{b$;_%zKk=7 z&$`kWb@+nsHp$KRbP@?6SQWJxw@6WM_BXCiPA01jHzt|Xob*NTdq|a8lcRMFoEWj- zQBL-hd_(8L8(Ys*pd`K~FEA^j$9F(wn9?Phb7;p%1ncMmh({Z;JmLy(TQ3AnZOXgU zz64m{^pMBNuA5LML2d1rLYKW>;B#CkYQ2vP3mS??9QJ46i$k=-)Ucn{m`>5E@18+9 zWQ}SxexFX;jR2c>7#DnAJtR)c8Bbh1B}Mf>HBhPymFCkKMLqgm>LTx5Jb>zaTbt5z zt7=pW6Ncr2NCJVzV|03H+4L)jm+$A>Y}3VM$JEWYY@H#AjB+-Xb?UUuL7_okt9litAGIMC(toAHMv zRVZekYA!@DZ+t?iFi|ofN=bl=GTrmPRwihD)5%3R;zT@EHb?goQ@;&@AFzv1|5(QJ zLa|oD5`m@%Y8HP$`}>w~mvKk?^pupKM@W)cZw4m*u_aM~-H@D^O~m>t@^QFWHbVHd z6?f0BV?^C5vJg`E^%yJ*b*%*ISz2xg9%vKa3n`Ez#SxT%7F9Qhl_PON;G?#uN4LO7 zaz+q_L116ZgkKWkrsi?8(~DSHY6f+U)j*i#8^K12cB7_*gi%n#ypU5yG!q;60T&-j zPW1S?K7m!qbfhi29l4_pqC>$UJVKbOy{X_79@75ix*9h&$J~LVphYJKl+Er)F+k)) z?*98kDy$_@dU#0RqxYEC#8A2X=Pgz#d-d8W$z;fnXyjbrGsYw+(4XM*BK$KT*FrL zAFJwHXoD`9QK@y=+|7SHJ$xkX);LZqng$3byW+)`=mi*vtGGZLI>L8UtbTFHC&^O@ z3k#6N!ws@`#YPY2+sWF6x>N8+!c#RBIQBO0!at8O|`c+ZKFebDXQjWQ#}TQ*7qh+`hd6|WZxi8IRtQ%Ao?G=!4g zn8k|?&P@Xd-@o-+KNpHW&dTa<(K%*|*(9%K!QcgWRMy^$D)ZCIS>mAbhrVEUff5H3 zb51fupGCeKG}un+geV>FpM7x$ju4;eDa=z^kY3AOyu*$AgGl6Vnwe9Uh2IY5VI*a& znxFSRethHdJH>G=mRG`L{n885-aB_fWEZ8_-Mlp3CiLU==g&=SF_ zI!u5ZGnG<&f<+Lp8S2++>rI4C_6khiPTLC9MFcT-r6t12 z4(t5n&6e66`sEkATAzU+AFdtK8~d>@XN!5sn?HWY#WP`!Em8TzHF6I)wfBmsgWfK} z#H(r^6zcPNyOUA(yy{7dS=%(E5k`__{C-B4@tr;tXBG2%G}bpl{Ya%$S>^@F>9z5d zqEs}~M=Yq|xf=ZFEx_4Ux#BC;_?n11Z|<$|S$#&oea~(Wy3~q=tSYG15MGY`xyozp z$Je<$0#o}3l`EezA|d=8K-<^zsn_N>W~_MyX5WHosg?@er+4uOBr0^NY9cP+1r5qU z5!pP>#-A!^fY}IDW;`U`10S?&!ObNXyzxg6RGAvFr4wZ`f^7_Es%FzUO4&FKpU73qqtIgG4u3J`##JROi(RpGRAnAG-vnX$!*XtX_8u;_M!4bbEOVw zwI+(&uf#W6Yey|ej24FhSCn^x)7BqN}MP3p$mA&;IAe_o2!xq!B1)ali zIB5Gn&Dj~jl{!@NBDSOfxU6Y%cvu<3k~FFNspRK0S9AyZXa?bywOF%SiBhH3T3zhZ zKBvDpsudpra^&>HL>-WUg&sV)AQT7sGzC0d1-mDvDUn{h)B!Snv=*CvxkkODiK!Fd z){8e}9If~kC?zvcjK9z(k^c}`616#!D;0tasEjO5_RP6|O1aRB$5S!(vbC1J0pyqN zas+`K8TH@|Z9Y@jPxi>2&>ZMtC4r0s_0Rs10jSd_1K6E%ir0wvdP{k=*|pqcK&8j0 zbmNYcznz-j-Jy}K5o%kqZ=Z8q%Dx8J%2ZcR&{3~uTR?f=H#P=VtD9toe#o-h*k?l; zihR8r{0-X%W$ew z95{Q>exBu3_jsA60YC!Tp$n#;X2YlJU?N2?-dt|_=Dm|O|6ZTWbU6zg5L0vTBlH0! z=&b0|P`4rUk3DQ9#9Z^t;s)bAe**&Dg?%ySyv$p9g0F%a?soQAM@tZfT&A6H#+W-F z8y#Jh2I7W~LF&cK=Y_1;T)&FHj*qz1Nz3~9@jkU}xwcX}-=U-?RnWZ=`kN==8!fO$ z-4p6hCX^OV89@vuL%3T4J{jk$@N}M}p9h8<;t^w~?0u0k(ubNJz09`W<6bj@II7I2 zpA~XCt+(B_A51)g{uyB7SX-k=Lx6yI0;9vHEazt^=xpZVVr6gfGtw(o*HNA4MfMY7 z+ZHmtBXpv$69_>hZyJLdTygYBJyfVf)8kLVNAtVal5xwJNtVuVuYHxT4ibHI_sVv0`DAhA_^s>d@#Yz%K6Q*f6l9XD3dXHcVy9> zgwhFOt`Zn;ft;<5NWnx%7`69BYdtH~+E?5!vp(#UBw_W8g|J$?wHdVw!CGVUypW~n z!YvrGdRLT6XQC(CtUZptr?j5Ggf{IxVy5kc+$V8BW0)R{&RZI4KX!dwu!?yOW%^@^ zvLTzp4UqSkYSy+W`_A_GH1~U@SiUKown;Ge`TS-`l)zU*ABcLU3)s|8+a_1^=%0{o z?E&WRXA>Xk7BBU5$HY-K=VKshv`*MtwcyL8yAsp@hWOcJh5AJsIkfb`#WUnZ>!p5U zb#N=Nrl*Q{D~afmd`3a#B(Jy66f>LDWK&67pn_O?W>Dp8F8zj?lfL2Om~#jmVbH3| zy$}Zryi@4>W*(p38I|&tUIrCUi+#1Po7b>JIyCgL!15A_T1>TTEvSgvS{}L-t-UU0 zFDP;GquO^!cgdO7i?%N3=6UZs!{v^LF71IIDn%tO?2k~g_$4c#6WP>B#teH17U`i$ zm9REQ??ed+Rwn(9Am+C$7jVT@1Q>mEV8}>AvBg-L7I4ysP+M#@l-Svt*#>PVFohc& zWxmCli*IAOb#R+~NsUt0U}bWg(inw|%jYhoI|qTX2&to(Z7=48r(MC_;pO52%j!a0 z$VI0~J+aL#`?5$mcO8%WK7tb~6ZLg@fGwdcRIW~O*p9V`+Xr@`ndJxsPsjXYS<|8} zhAH$DPn#ygEj$cud)cgSkHYt3(f2bwVDMduclz4#T{;;e0q<1C3(qem&aDXWmrt>q z#r2WM6BP%f9U-HJz?>}lelHu0`XJH1}**w}c+yPKC}^@5Kim%O+i_u$O%|8%yiRp)M5Kz+-7 z$IO435mR8vPoz(1Q=rAZuXKAc#uI}!EEH3aDAk?4FYjr2T;}cSx24f=PjFPuM#ld# z#l`-RA&h*@sDLv~jr|tF5w0trk}+9w_RuSIE2I{tU#8Hp{B#VlnWqw;zJExt#PUU$0Y~Q1U9T=A8Og&>L1W zC}H6GbTqBk5+9C1jr+zh=;i0)POMNIj~rEUp$3=FeD+>RMGt*j_r;6(MLK~T_`dlG zQ}@!9j!sVvqbiJQO^i`&qa~hraVi zkpG^6!vF1dTrAD(%%0_;)N@eM0hpGzHrXZ8 zs>J^JVn@~zvTBFeg4hxV(LKIwKG`^*Ni;OxFU6O;M>G@DTitHTQ7m_VNq{7W&3ZWW zyDA*|OhqmWCax8f^?(llxHlC}q$`re+Qo9&A&8PywkxGll4WCK4AU*GYfPiKG8=J< zEpt8C{V|}B>;!M(b+ey%3;+EtNX== zZpHRMsseHxrhGZToTN>|92l#y%QUQm8r|Zp*O5${-uE#-hl#y4VV5dh|TYxVox4UgE!v z2MZ~iklDN1PDTdr>l;PwwBlAn(8-4{-UHdn*=&JwB;i9E*}blhuG0bDw}ZGoLVZx) z9K(D?C9{*8tt7v|5Q3=Z+^B54*~lg%A`m%bM%RTooP|z-8p_@IO?7kz+oXT*2-Udv zA^?F0&6d2arDtBG2Pa7oM-#x#HAlg+VYWvKbJJk#?ASkVH2HClQ?Nd^;n>7F z^b|K!8ofpL@}>N6z%dz4v-D+&kL4P#sA!3pe8x0v4KiaE9{!XKxi1n#PtGMcZ>$}8 zn(4t=b38U%q8+Eb1ht~x4517u+K*anu}IQm%4EiC&^q^sTSQOcFM}@2Br~#CU#uPR z>L-fWnUF6`y9k^ zNZ?u)aELq8RR;j z741QI-di0M@O7Qf<}hU_Nv$Y|q5#9;JnhB$9bBC7H+om5WEebR?ArnpDi{EcMOyP= zW*cz$T7I2mF3n+4gu`zKCmAkGvi2q=uJGF-1#-e2(bqhmj%aX$MC=4JBotWmQ;mve zZ^{<=%;EV1=d3bA@^3$8%meR61iE+#5OT}UgBOhfU1OGR?{TR9s_yCg_lATmt@Fj{ zO*CnNEvgsqE)}HXB2|d1LuWu}sKTSM#+!%{OkJB}64fynz3pR6g;30dv7{#uW6KD^ z++3>zRu!lczmCGb=@0peDnynd6oug=5`8r=tWLOzS%a!4L%PzD0au=0R?CQ6hK-p5 zr9s0IQE04B+j<++T01y&(3vPsW7`Yi2zn&Y2lGMVb;@k#!Lg~vHcA?3wgk1KiTG^# zj8~Lm#$biM+2jHnLSp2=BIJ?AoLm3xRf;sI)E+PNhUS@g%r1e~gzC&xlQa#LI6i3YNI-OW1*fFLy*uHcav z!Uc5_$8Zwglj?x)yXuSm5m{TGpE#=!Omi$=-)|c?V8@G-nlZj9P?N}FC!Jx>3qj*6 z^)f|7e88!;MMU#PWFCgGggvLI#jMW}Wj;#Exm7HO&v*SB880!Q;Ie zg=y7~p69{&`E0D}x8XDpMbSyp7P4-_rB?p?^;-fA7OtUdk|)Vj*z&M9*Sixqlzr4; zgHwQMC)a%}o13$*jMaNuM7?j8A8v8#J+AJq6i)6kU=TA7x|@pz;OHomi=E%eFl=3-3wt4@ zmU5uo+0*vsFflzoGQ-DyISY9}3%2cEQwZzDlf97h{_)M?q|gT;M&HNxX0K5JCJfbD z=7Z4o{uW~Y5A(dLMD{dJ+;l#?R%Y~Wg^g$vzX(U6_~@I37JBT_ki#WEJclg~$2P;} z)$QFZA}Rm-W}dg$*w$E?*d9RwaMV)3a)sP#^3>zJJr*6$ZtyIA%-Q@k9HkjKsJAI6#t}JNFowQgT>({ z0KUArpdJsDUA`{Oa{ep4b-GkZSHAq|yWL55w_*HL?2{OzyIMn9m9dI&u#$8YH1x^3 z%n2L-_Rcgve5@F`9R@wqbl_#^+DYcCo0a10inSGk{~q){6=O_(*040~Y@fxv3;u$m zZ-Bpp0SjMGMX%pphx6O`$j-?3b{bN2j(OajMckPH`Pz& zDclmiBmHL%;E@YkT zsSrO`%QG7blBhev8x5eC#K_=t*M@wy(%z?aC|!ElVV8O6_>_JNrfd zIMN+KUg|Ylhmz|(*q=8GCSu+an?UZRfKmWG@-r!ZmcD23WrfU55UF#N(JqO6w7J;Zb9$Sh4S2A(RRVpi+aWo@%rGOxEcT}Vrgi#z%v zwDR4^BiE@&&55d)03a80+gG=c-rjW6*5~ApDye3XspFEO%c@qgt*+OgTn|FTt`ZNm z8ouY=_b>ibO_e=Hd?WCrO2YyHK?SPj=cS9egT0HIk+JR1+VZBRp2NC0y06rlkfxsl zo7)6;B&XhHp?UrsMnR~rIGRNgf`>V2{KOcS{`e8R=o%97X+S;QsifAagKVIGXATbE zKKD9m8amseq3+dUlCS)QtedT?eJl2q2FshXV-JVdx0|y+kK`?4--yQN@~O%>YuC? zyt*;8xkij?8>q@#!lF=(D=5mqC6|1VBq3kQPD+NtfU{bjyDTk@fCHK4{3*e+0l+w` zPMSfFih@G3nyF=b#v*^i8#}!q+hdsmLsPO#qATBBS(dNT>4LQDK<`F?=_-`{I&tMS z!c0|biFXp{cI790HW+<%^-i&9f08yzOY>w5#?#7aN z<%|LzMRJ*G@I+W8mcr9lgbFVD0)8SBmbv{*uSEe}U-4xuPP$d%UXF(91O@r=IV$w* zH`_&&kwstEP&1`=JOPxc(g{ z4`PA?xlzd9`FyK1Yo7>^U|^6dz$M4j{pM}ai556xtGq;NW5iU5{3)wqW9Q)L8D^!* z27@M#55TZ<(#tS*0PDK0*g3Abp5$^ndVl`78tK8~{v*M=a3ggJ^+%>!kjQxrA?#b9 zht8EsQJb4X9e?dF6ZRP=B~yDzrPYdSNcEz^-gyaym%v^GBcZ}%5+yucNcl6xVh)mI zjd*^jg!UyLcrP7rm2V3|Y?iUA54}-X$T~V>?cH>Ip`R6lu?8!xz?lSWp>_5d z`Op1CRj2Ieb+ww?vEZxG=Wf-pN6>So#rM*arptF%#PC%?2E!)MPz{n&B(Y_eSm^}J z9xq>(4P~>In%h-wM9Eq;HM~5!416`xVhvs$3vg3Vg{(z@O^0v+fmt~@OM7L8v?;6q z!)5-Bp#WdAiozQV{C=p=cqowWzS9-ubj&_%#WA9=Rcic{7yU!?#k5Wf-Fb4>wcUaB zwb;UHfmIWDQ&k$J{f=PmFyU|zIpdu8NMi^5;fQ*N^70j`QxV!SyEUlbH0fHiS0Bw+$bd7471$H_giBw-r7sMf? z@xjz3mrvPVgc)ZjCzZvTL)w86#}-5*xqS;fcD3y82_atyXw(^B+=?~s@bAq!r{lzw z6e@PRlAnb?*w1n19bzi0#}k4I;1BpB2C6L8iJ@s_a+UFJ@mg>$Ia^0PbaB*D5Q<;) ztA)~6`|=R=e6_4?c#1OiRj$XG{JHHdVyRWc(5hFK60`<2Dtkw%K7rdOdBvi-eaQ+x zs#}{yb-e>uCxcPjjJ}996=3o%y&LzVVk4tN7?TsO)AI2G-^$Y}Ix>1gkrp#O^`TX6 z_@LzN%-GDV;-zRDX`_M=yzO|udfSMrDTNegxjDvdL{TsVVU_H5`AV01>?elggP*PH&d*E-Yzy^<}i=baLj8BwRNsF@JEXbk9kjo@reYxgo zNx#`Ti0|Y``v#C?EWTL0OOXHQ>mBUhRP(;=#EI2n#K(ES%h@H^BR|FN1TOW}i=bA- zzFWo4^CP3z@T6>B!D1&xE8;ku!<)Ugkx(0~Dc*Q>)Qp03I~nUaDOy(>%o-#~OgWt7 z;ktv9Un0EX3BJ72TORm60iKyyI)e*oW%FL-K(W^LVVu)|<&i)G={hL{i{F+s6P*^yt{O9GZeaD%OLR%>sc{+hY3D z4YY~^aZcvQqMWG%N`zE8S?nRxJp9TO)_7hm_m532YCT}ui z&mK8n1iN2L9APpK5~0j3YEtWV`Fu@j8sLnlhH5qRXv}=K0RPG6qThcJ{=e_H|6D5m zn}T@Y-hICVDuxpr1Oy-W`Sbk!MflHr@vmK|WCQH->OBtjg)aQDR`jEr+SLmuSYHaN z#Val;z1OW~vexHEhHxFGtlO7fV%YX8F|U^U`2Aik$q$`$)F1F6ywI%obs&!c`-^Na z#)meG(D87R^T>*j$naDX?YJKX6b3VJ6 zo0Ow(P5Gw-&O}x5tszg9g@VfZNO&Hr2{QX|ePFkC#?CR|XCX%4JRGn@?#+t@#q!3<3k!$Sh83B$v}1f(R57QR z1HFRuWTw<|6f3`6aCRuVKCS)FsAaO@an1&~rP6`du}@*CjuQV#x`46VmFzuI;&c=?ui7gK!yOY_oU%#4M~9Ag1|OKvAAB9aOhM2yCG|)tE_t>m znrr(fVmW4UjlV5n*rp(9K`D9_FBTXcpQm*S457l6hMXe8HH7w*B=1+8`rr|p6}gog z%JrOdcqYl!kZuYF6u$W;MVFwz9t2I&-UD`h=;+a3><)tnt?60w;R*V*7#PrF{dRBv3-?6*Ydn49r~D`G@3;O>9X)r9Pv~FlTK^0B zPdE8o^yf+1@40CIkl;VFJfGlse)M~SlmBmm-`UdtQpi(R@vrf>YW~q<{HG?KcNssy zerbXV`0YQizj}_Jv;Mp__BXl)=pX)r{<~53IsAE3=WjR%&>{bZ|EI{PRlxZ+t4^U-*C4{h!01H-!F%zyDk3 zzuQB9f&VYse*rv6ev1Bg@$b)l`n>%2dsWUqfxnA^%5soD-4_P1UWfzS9eT7+p#KNQ C_znR8 literal 0 HcmV?d00001 diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/templates/memo_work_diary_export_template.docx b/epmet-module/gov-project/gov-project-server/src/main/resources/templates/memo_work_diary_export_template.docx new file mode 100644 index 0000000000000000000000000000000000000000..2e58a313b6d0892062df3bd710f47026337cc965 GIT binary patch literal 11587 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 literal 0 HcmV?d00001 From 3baa8b9e5cc5cfa63d25976ab41e86aeb96c2788 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 15 Mar 2022 16:58:42 +0800 Subject: [PATCH 11/53] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/controller/MemoWorkDiaryController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java index 709c5098ff..5d3415ca29 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java @@ -87,7 +87,9 @@ public class MemoWorkDiaryController { public void exportWord(@PathVariable("id") String id, HttpServletResponse response) throws Exception { URL resource = this.getClass().getClassLoader().getResource("templates/memo_work_diary_export_template.docx"); - MemoWorkDiaryDTO data = memoWorkDiaryService.get(id); + MemoWorkDiaryFormDTO form = new MemoWorkDiaryFormDTO(); + form.setId(id); + MemoWorkDiaryDTO data = memoWorkDiaryService.get(form); Map map = BeanUtil.beanToMap(data); String createTimeStr = DateUtils.format(data.getCreatedTime(), "yyyy年MM月dd日 HH:mm"); From dbe98fab02eccf041b5ffdddadd7dc67275a4f90 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 15 Mar 2022 17:09:52 +0800 Subject: [PATCH 12/53] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/constant/MemoConstant.java | 12 +++ .../controller/MemoWorkDiaryController.java | 7 +- .../impl/MemoWorkDiaryServiceImpl.java | 75 +++++++++++++++++-- 3 files changed, 85 insertions(+), 9 deletions(-) create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/MemoConstant.java diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/MemoConstant.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/MemoConstant.java new file mode 100644 index 0000000000..b8d5c841dd --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/MemoConstant.java @@ -0,0 +1,12 @@ +package com.epmet.constant; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/3/15 16:56 + */ +public interface MemoConstant { + String WORK_DIARY = "work_diary"; + String CONCERN = "concern"; + String DIFFICULTY = "difficulty"; +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java index 5d3415ca29..73ce22ac03 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java @@ -59,18 +59,21 @@ public class MemoWorkDiaryController { @NoRepeatSubmit @PostMapping("save") - public Result save(@RequestBody MemoWorkDiaryDTO dto){ + public Result save(@LoginUser TokenDto tokenDto, @RequestBody MemoWorkDiaryDTO dto){ //效验数据 ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + dto.setCustomerId(tokenDto.getCustomerId()); + dto.setCreatedBy(tokenDto.getUserId()); memoWorkDiaryService.save(dto); return new Result(); } @NoRepeatSubmit @PostMapping("update") - public Result update(@RequestBody MemoWorkDiaryDTO dto){ + public Result update(@LoginUser TokenDto tokenDto, @RequestBody MemoWorkDiaryDTO dto){ //效验数据 ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + dto.setCustomerId(tokenDto.getCustomerId()); memoWorkDiaryService.update(dto); return new Result(); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java index 3ea93d5724..0fed05ec70 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java @@ -4,22 +4,28 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.constant.MemoConstant; import com.epmet.dao.MemoWorkDiaryDao; +import com.epmet.dto.MemoAttachmentDTO; import com.epmet.dto.MemoAttrDTO; import com.epmet.dto.MemoWorkDiaryDTO; import com.epmet.dto.form.MemoWorkDiaryFormDTO; +import com.epmet.entity.MemoAttachmentEntity; import com.epmet.entity.MemoWorkDiaryEntity; import com.epmet.service.MemoAttachmentService; import com.epmet.service.MemoAttrService; import com.epmet.service.MemoWorkDiaryService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Arrays; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; /** * 备忘录-工作日志 @@ -46,7 +52,6 @@ public class MemoWorkDiaryServiceImpl extends BaseServiceImpl list(MemoWorkDiaryFormDTO formDTO) { List list = baseDao.getPage(formDTO); - return list; } @@ -54,12 +59,16 @@ public class MemoWorkDiaryServiceImpl extends BaseServiceImpl attachmentList = memoAttachmentService.getListByMemoId(formDTO.getId()); + dto.setAttachmentList(attachmentList); } - //获取附件列表 //更新阅读状态 if (NumConstant.ONE_STR.equals(formDTO.getReadFlag())) { MemoAttrDTO memoAttrDTO = new MemoAttrDTO(); @@ -75,6 +84,28 @@ public class MemoWorkDiaryServiceImpl extends BaseServiceImpl list = dto.getAttachmentList().stream().map(item -> { + MemoAttachmentEntity e = ConvertUtils.sourceToTarget(item, MemoAttachmentEntity.class); + e.setCustomerId(dto.getCustomerId()); + e.setRemindMsgId(entity.getId()); + e.setSort(i.getAndIncrement()); + return e; + }).collect(Collectors.toList()); + memoAttachmentService.insertBatch(list); + } } @Override @@ -82,13 +113,43 @@ public class MemoWorkDiaryServiceImpl extends BaseServiceImpl list = dto.getAttachmentList().stream().map(item -> { + MemoAttachmentEntity e = ConvertUtils.sourceToTarget(item, MemoAttachmentEntity.class); + e.setCustomerId(dto.getCustomerId()); + e.setRemindMsgId(dto.getId()); + e.setSort(i.getAndIncrement()); + return e; + }).collect(Collectors.toList()); + memoAttachmentService.insertBatch(list); + } } @Override @Transactional(rollbackFor = Exception.class) public void delete(String[] ids) { // 逻辑删除(@TableLogic 注解) - baseDao.deleteBatchIds(Arrays.asList(ids)); + List list = Arrays.asList(ids); + baseDao.deleteBatchIds(list); + memoAttrService.delete(ids); + list.forEach(id -> { + //删除附件 + memoAttachmentService.deleteByMemoId(id); + }); } } \ No newline at end of file From d51f66be47975fb3cb53ff680afc3bcbe558926d Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Mar 2022 17:15:42 +0800 Subject: [PATCH 13/53] =?UTF-8?q?=E9=9A=BE=E7=82=B9=E5=A0=B5=E7=82=B9?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/form/MemoDifficultyFormDTO.java | 47 +++++++++++++++++++ .../controller/MemoDifficultyController.java | 6 ++- .../java/com/epmet/dao/MemoDifficultyDao.java | 12 ++++- .../epmet/service/MemoDifficultyService.java | 3 +- .../impl/MemoDifficultyServiceImpl.java | 15 +++--- .../resources/mapper/MemoDifficultyDao.xml | 34 +++++++++++++- 6 files changed, 105 insertions(+), 12 deletions(-) create mode 100644 epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoDifficultyFormDTO.java diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoDifficultyFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoDifficultyFormDTO.java new file mode 100644 index 0000000000..c46be3103f --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoDifficultyFormDTO.java @@ -0,0 +1,47 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description 难点堵点列表 + * @Author sun + */ +@NoArgsConstructor +@Data +public class MemoDifficultyFormDTO extends PageFormDTO implements Serializable { + private static final long serialVersionUID = 3101320969471756516L; + + /** + * 内容摘要 + */ + private String content; + /** + * 起始预计处理时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private String scheduledStartTime; + /** + * 终止预计处理时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private String scheduledEndTime; + /** + * 起始创建时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private String startTime; + /** + * 终止创建时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private String endTime; + + //token中用户Id + private String userId; + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java index cb8e6441ed..e3f855b8e5 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java @@ -19,6 +19,7 @@ import com.epmet.dto.MemoDifficultyDTO; import com.epmet.dto.MemoWorkDiaryDTO; import com.epmet.dto.form.AddMemoDifficultyFromDTO; import com.epmet.dto.form.MemoDifficultyDetailFromDTO; +import com.epmet.dto.form.MemoDifficultyFormDTO; import com.epmet.service.MemoDifficultyService; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.beans.factory.annotation.Autowired; @@ -45,8 +46,9 @@ public class MemoDifficultyController { private MemoDifficultyService memoDifficultyService; @RequestMapping("page") - public Result> page(@RequestParam Map params){ - PageData page = memoDifficultyService.page(params); + public Result> page(@LoginUser TokenDto tokenDto, @RequestBody MemoDifficultyFormDTO formDTO){ + formDTO.setUserId(tokenDto.getUserId()); + PageData page = memoDifficultyService.page(formDTO); return new Result>().ok(page); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoDifficultyDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoDifficultyDao.java index 8449129bbd..a2955f6297 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoDifficultyDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoDifficultyDao.java @@ -1,9 +1,14 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.MemoDifficultyDTO; +import com.epmet.dto.MemoWorkDiaryDTO; +import com.epmet.dto.form.MemoDifficultyFormDTO; import com.epmet.entity.MemoDifficultyEntity; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 备忘录-难点读点 * @@ -12,5 +17,10 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface MemoDifficultyDao extends BaseDao { - + + /** + * 难点堵点查询列表 + * @Author sun + */ + List getPage(MemoDifficultyFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java index d91ecf1b4a..dcce6fd28c 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java @@ -4,6 +4,7 @@ import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.MemoDifficultyDTO; import com.epmet.dto.form.AddMemoDifficultyFromDTO; +import com.epmet.dto.form.MemoDifficultyFormDTO; import com.epmet.dto.form.MemoDifficultyDetailFromDTO; import com.epmet.entity.MemoDifficultyEntity; @@ -26,7 +27,7 @@ public interface MemoDifficultyService extends BaseService * @author generator * @date 2022-03-15 */ - PageData page(Map params); + PageData page(MemoDifficultyFormDTO formDTO); /** * 默认查询 diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java index 78db39353f..7b1ed9f24d 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java @@ -1,7 +1,6 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.page.PageData; @@ -11,6 +10,7 @@ import com.epmet.dto.MemoAttachmentDTO; import com.epmet.dto.MemoAttrDTO; import com.epmet.dto.MemoDifficultyDTO; import com.epmet.dto.form.AddMemoDifficultyFromDTO; +import com.epmet.dto.form.MemoDifficultyFormDTO; import com.epmet.dto.form.MemoDifficultyDetailFromDTO; import com.epmet.entity.MemoAttachmentEntity; import com.epmet.entity.MemoAttrEntity; @@ -18,6 +18,8 @@ import com.epmet.entity.MemoDifficultyEntity; import com.epmet.service.MemoAttachmentService; import com.epmet.service.MemoAttrService; import com.epmet.service.MemoDifficultyService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -43,12 +45,11 @@ public class MemoDifficultyServiceImpl extends BaseServiceImpl page(Map params) { - IPage page = baseDao.selectPage( - getPage(params, FieldConstant.CREATED_TIME, false), - getWrapper(params) - ); - return getPageData(page, MemoDifficultyDTO.class); + public PageData page(MemoDifficultyFormDTO formDTO) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = baseDao.getPage(formDTO); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); } @Override diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoDifficultyDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoDifficultyDao.xml index 42e16012e4..fcdae4b4ac 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoDifficultyDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoDifficultyDao.xml @@ -3,6 +3,38 @@ - + \ No newline at end of file From f97f4e15e0b259ac92e6bc09f88324c04d70888d Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Mar 2022 17:19:41 +0800 Subject: [PATCH 14/53] =?UTF-8?q?=E9=9A=BE=E7=82=B9=E5=A0=B5=E7=82=B9?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=B7=B2=E8=AF=BB=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/MemoDifficultyServiceImpl.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java index 7b1ed9f24d..3d2f510fe9 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java @@ -3,6 +3,7 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.MemoDifficultyDao; @@ -20,6 +21,7 @@ import com.epmet.service.MemoAttrService; import com.epmet.service.MemoDifficultyService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import oracle.sql.NUMBER; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -47,7 +49,7 @@ public class MemoDifficultyServiceImpl extends BaseServiceImpl page(MemoDifficultyFormDTO formDTO) { PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); - List list = baseDao.getPage(formDTO); + List list = baseDao.getPage(formDTO); PageInfo pageInfo = new PageInfo<>(list); return new PageData<>(list, pageInfo.getTotal()); } @@ -59,8 +61,8 @@ public class MemoDifficultyServiceImpl extends BaseServiceImpl getWrapper(Map params){ - String id = (String)params.get(FieldConstant.ID_HUMP); + private QueryWrapper getWrapper(Map params) { + String id = (String) params.get(FieldConstant.ID_HUMP); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); @@ -89,9 +91,9 @@ public class MemoDifficultyServiceImpl extends BaseServiceImpl list = ConvertUtils.sourceToTarget(dto.getAttachmentList(), MemoAttachmentEntity.class); - list.forEach(l->l.setRemindMsgId(entity.getId())); + list.forEach(l -> l.setRemindMsgId(entity.getId())); memoAttachmentService.insertBatch(list); } } @@ -104,13 +106,13 @@ public class MemoDifficultyServiceImpl extends BaseServiceImpl list = ConvertUtils.sourceToTarget(dto.getAttachmentList(), MemoAttachmentEntity.class); - list.forEach(l->l.setRemindMsgId(entity.getId())); + list.forEach(l -> l.setRemindMsgId(entity.getId())); memoAttachmentService.insertBatch(list); } //3.判断更新提醒记录表提醒时间 - if(null != dto.getRemindTime()){ + if (null != dto.getRemindTime()) { MemoAttrDTO memoAttr = new MemoAttrDTO(); memoAttr.setId(dto.getId()); memoAttr.setRemindTime(dto.getRemindTime()); @@ -127,6 +129,10 @@ public class MemoDifficultyServiceImpl extends BaseServiceImpl Date: Tue, 15 Mar 2022 17:33:37 +0800 Subject: [PATCH 15/53] =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=85=B3=E6=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/MemoConcernDTO.java | 11 +- .../epmet/dto/form/MemoConcernFormDTO.java | 29 ++++ .../controller/MemoConcernController.java | 23 ++-- .../java/com/epmet/dao/MemoConcernDao.java | 14 +- .../com/epmet/service/MemoConcernService.java | 8 +- .../service/impl/MemoConcernServiceImpl.java | 127 ++++++++++++++---- .../main/resources/mapper/MemoConcernDao.xml | 45 +++++++ 7 files changed, 216 insertions(+), 41 deletions(-) create mode 100644 epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoConcernFormDTO.java diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java index 2068008383..230887b58a 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java @@ -1,9 +1,11 @@ package com.epmet.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.io.Serializable; import java.util.Date; +import java.util.List; /** @@ -55,11 +57,13 @@ public class MemoConcernDTO implements Serializable { /** * 计划执行时间 */ + @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date scheduledTime; /** * 实际执行时间 */ + @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date actualTime; /** @@ -70,6 +74,7 @@ public class MemoConcernDTO implements Serializable { /** * 提醒时间 */ + @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date remindTime; /** @@ -90,6 +95,7 @@ public class MemoConcernDTO implements Serializable { /** * 创建时间 */ + @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date createdTime; /** @@ -101,5 +107,8 @@ public class MemoConcernDTO implements Serializable { * 更新时间 */ private Date updatedTime; - + /** + * 附件 + */ + private List attachmentList; } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoConcernFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoConcernFormDTO.java new file mode 100644 index 0000000000..eb0e50978e --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoConcernFormDTO.java @@ -0,0 +1,29 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/3/15 17:11 + */ +@NoArgsConstructor +@Data +public class MemoConcernFormDTO extends PageFormDTO implements Serializable { + private static final long serialVersionUID = -2355555089163762829L; + private String userId; + private String id; + private String readFlag = "0"; + private String content; + private String concernType; + private String resiName; + private String status; + private String startTime; + private String endTime; + private String scheduledStartTime; + private String scheduledEndTime; +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java index bf3df91094..043aa9712c 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java @@ -2,10 +2,12 @@ package com.epmet.controller; import cn.afterturn.easypoi.word.WordExportUtil; import cn.hutool.core.bean.BeanUtil; +import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; @@ -14,7 +16,7 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.MemoConcernDTO; -import com.epmet.dto.MemoWorkDiaryDTO; +import com.epmet.dto.form.MemoConcernFormDTO; import com.epmet.service.MemoConcernService; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.beans.factory.annotation.Autowired; @@ -41,31 +43,36 @@ public class MemoConcernController { private MemoConcernService memoConcernService; @RequestMapping("page") - public Result> page(@RequestParam Map params){ - PageData page = memoConcernService.page(params); + public Result> page(@LoginUser TokenDto tokenDto, @RequestBody MemoConcernFormDTO formDTO){ + formDTO.setUserId(tokenDto.getUserId()); + PageData page = memoConcernService.page(formDTO); return new Result>().ok(page); } - @RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET}) - public Result get(@PathVariable("id") String id){ - MemoConcernDTO data = memoConcernService.get(id); + @RequestMapping(method = {RequestMethod.POST,RequestMethod.GET}) + public Result get(@RequestBody MemoConcernFormDTO formDTO){ + MemoConcernDTO data = memoConcernService.get(formDTO); return new Result().ok(data); } @NoRepeatSubmit @PostMapping("save") - public Result save(@RequestBody MemoConcernDTO dto){ + public Result save(@LoginUser TokenDto tokenDto, @RequestBody MemoConcernDTO dto){ //效验数据 ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + + dto.setCustomerId(tokenDto.getCustomerId()); + dto.setCreatedBy(tokenDto.getUserId()); memoConcernService.save(dto); return new Result(); } @NoRepeatSubmit @PostMapping("update") - public Result update(@RequestBody MemoConcernDTO dto){ + public Result update(@LoginUser TokenDto tokenDto, @RequestBody MemoConcernDTO dto){ //效验数据 ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + dto.setCustomerId(tokenDto.getCustomerId()); memoConcernService.update(dto); return new Result(); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoConcernDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoConcernDao.java index 723dbe4444..99ad577c44 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoConcernDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoConcernDao.java @@ -1,9 +1,13 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.MemoConcernDTO; +import com.epmet.dto.form.MemoConcernFormDTO; import com.epmet.entity.MemoConcernEntity; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 备忘录-人文关怀 * @@ -12,5 +16,13 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface MemoConcernDao extends BaseDao { - + /** + * 查询列表 + * + * @Param formDTO + * @Return {@link List < MemoConcernDTO>} + * @Author zhaoqifeng + * @Date 2022/3/15 15:31 + */ + List getPage(MemoConcernFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoConcernService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoConcernService.java index f18784a348..a7397794a2 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoConcernService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoConcernService.java @@ -3,10 +3,10 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.MemoConcernDTO; +import com.epmet.dto.form.MemoConcernFormDTO; import com.epmet.entity.MemoConcernEntity; import java.util.List; -import java.util.Map; /** * 备忘录-人文关怀 @@ -24,7 +24,7 @@ public interface MemoConcernService extends BaseService { * @author generator * @date 2022-03-15 */ - PageData page(Map params); + PageData page(MemoConcernFormDTO formDTO); /** * 默认查询 @@ -34,7 +34,7 @@ public interface MemoConcernService extends BaseService { * @author generator * @date 2022-03-15 */ - List list(Map params); + List list(MemoConcernFormDTO formDTO); /** * 单条查询 @@ -44,7 +44,7 @@ public interface MemoConcernService extends BaseService { * @author generator * @date 2022-03-15 */ - MemoConcernDTO get(String id); + MemoConcernDTO get(MemoConcernFormDTO formDTO); /** * 默认保存 diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java index 060ede4916..c017703d7a 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java @@ -1,22 +1,31 @@ package com.epmet.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; -import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.constant.MemoConstant; import com.epmet.dao.MemoConcernDao; +import com.epmet.dto.MemoAttachmentDTO; +import com.epmet.dto.MemoAttrDTO; import com.epmet.dto.MemoConcernDTO; +import com.epmet.dto.form.MemoConcernFormDTO; +import com.epmet.entity.MemoAttachmentEntity; import com.epmet.entity.MemoConcernEntity; +import com.epmet.service.MemoAttachmentService; +import com.epmet.service.MemoAttrService; import com.epmet.service.MemoConcernService; -import org.apache.commons.lang3.StringUtils; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.Arrays; import java.util.List; -import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; /** * 备忘录-人文关怀 @@ -27,36 +36,47 @@ import java.util.Map; @Service public class MemoConcernServiceImpl extends BaseServiceImpl implements MemoConcernService { + @Resource + private MemoAttrService memoAttrService; + @Resource + private MemoAttachmentService memoAttachmentService; @Override - public PageData page(Map params) { - IPage page = baseDao.selectPage( - getPage(params, FieldConstant.CREATED_TIME, false), - getWrapper(params) - ); - return getPageData(page, MemoConcernDTO.class); + public PageData page(MemoConcernFormDTO formDTO) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = baseDao.getPage(formDTO); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); } @Override - public List list(Map params) { - List entityList = baseDao.selectList(getWrapper(params)); - - return ConvertUtils.sourceToTarget(entityList, MemoConcernDTO.class); - } - - private QueryWrapper getWrapper(Map params){ - String id = (String)params.get(FieldConstant.ID_HUMP); - - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); - - return wrapper; + public List list(MemoConcernFormDTO formDTO) { + List list = baseDao.getPage(formDTO); + return list; } @Override - public MemoConcernDTO get(String id) { - MemoConcernEntity entity = baseDao.selectById(id); - return ConvertUtils.sourceToTarget(entity, MemoConcernDTO.class); + public MemoConcernDTO get(MemoConcernFormDTO formDTO) { + MemoConcernEntity entity = baseDao.selectById(formDTO.getId()); + MemoConcernDTO dto = ConvertUtils.sourceToTarget(entity, MemoConcernDTO.class); + if (null != dto) { + //获取提醒时间 + MemoAttrDTO memoAttr = memoAttrService.get(formDTO.getId()); + if (null != memoAttr) { + dto.setRemindTime(memoAttr.getRemindTime()); + } + //获取附件列表 + List attachmentList = memoAttachmentService.getListByMemoId(formDTO.getId()); + dto.setAttachmentList(attachmentList); + } + //更新阅读状态 + if (NumConstant.ONE_STR.equals(formDTO.getReadFlag())) { + MemoAttrDTO memoAttrDTO = new MemoAttrDTO(); + memoAttrDTO.setId(formDTO.getId()); + memoAttrDTO.setReadFlag(NumConstant.ONE); + memoAttrService.update(memoAttrDTO); + } + return dto; } @Override @@ -64,6 +84,28 @@ public class MemoConcernServiceImpl extends BaseServiceImpl list = dto.getAttachmentList().stream().map(item -> { + MemoAttachmentEntity e = ConvertUtils.sourceToTarget(item, MemoAttachmentEntity.class); + e.setCustomerId(dto.getCustomerId()); + e.setRemindMsgId(entity.getId()); + e.setSort(i.getAndIncrement()); + return e; + }).collect(Collectors.toList()); + memoAttachmentService.insertBatch(list); + } } @Override @@ -71,6 +113,30 @@ public class MemoConcernServiceImpl extends BaseServiceImpl list = dto.getAttachmentList().stream().map(item -> { + MemoAttachmentEntity e = ConvertUtils.sourceToTarget(item, MemoAttachmentEntity.class); + e.setCustomerId(dto.getCustomerId()); + e.setRemindMsgId(dto.getId()); + e.setSort(i.getAndIncrement()); + return e; + }).collect(Collectors.toList()); + memoAttachmentService.insertBatch(list); + } } @Override @@ -78,6 +144,13 @@ public class MemoConcernServiceImpl extends BaseServiceImpl list = Arrays.asList(ids); + baseDao.deleteBatchIds(list); + memoAttrService.delete(ids); + list.forEach(id -> { + //删除附件 + memoAttachmentService.deleteByMemoId(id); + }); } } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoConcernDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoConcernDao.xml index fa6d92a22a..3018238747 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoConcernDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoConcernDao.xml @@ -3,6 +3,51 @@ + + \ No newline at end of file From 0328a84ad8b8eaa91d83596bb61fbcc501dca211 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 15 Mar 2022 17:35:32 +0800 Subject: [PATCH 16/53] =?UTF-8?q?=E6=8F=90=E7=A4=BA=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/service/impl/IcPartyServiceCenterServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPartyServiceCenterServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPartyServiceCenterServiceImpl.java index 208dde8fc2..41b5b7dca6 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPartyServiceCenterServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPartyServiceCenterServiceImpl.java @@ -148,7 +148,8 @@ public class IcPartyServiceCenterServiceImpl extends BaseServiceImpl Date: Tue, 15 Mar 2022 17:46:20 +0800 Subject: [PATCH 17/53] =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=85=B3=E6=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/controller/MemoConcernController.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java index 043aa9712c..c9eef29e73 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java @@ -88,8 +88,9 @@ public class MemoConcernController { @PostMapping("/{id}/exportWord") public void exportWord(@PathVariable("id") String id, HttpServletResponse response) throws Exception { URL resource = this.getClass().getClassLoader().getResource("templates/memo_concern_export_template.docx"); - - MemoConcernDTO data = memoConcernService.get(id); + MemoConcernFormDTO formDTO = new MemoConcernFormDTO(); + formDTO.setId(id); + MemoConcernDTO data = memoConcernService.get(formDTO); if (data == null) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "未找到id为" + id + "的关怀项目", "未找到该关怀项目"); From 041ad7979f71247ad0ca46814317a3fdc33d8376 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 15 Mar 2022 21:19:39 +0800 Subject: [PATCH 18/53] =?UTF-8?q?=E4=BF=AE=E6=94=B9:=E8=A7=A3=E5=86=B3jar?= =?UTF-8?q?=E5=8C=85=E5=86=85=E6=96=87=E4=BB=B6=E6=97=A0=E6=B3=95=E8=AF=BB?= =?UTF-8?q?=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MemoConcernController.java | 64 ++++++++++++++++-- .../controller/MemoDifficultyController.java | 65 +++++++++++++++++-- .../controller/MemoWorkDiaryController.java | 64 ++++++++++++++++-- 3 files changed, 179 insertions(+), 14 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java index c9eef29e73..aee3d541bf 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java @@ -6,6 +6,7 @@ import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.DateUtils; @@ -18,6 +19,8 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.MemoConcernDTO; import com.epmet.dto.form.MemoConcernFormDTO; import com.epmet.service.MemoConcernService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; @@ -25,7 +28,14 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Map; @@ -35,6 +45,7 @@ import java.util.Map; * @author generator generator@elink-cn.com * @since v1.0.0 2022-03-15 */ +@Slf4j @RestController @RequestMapping("memoConcern") public class MemoConcernController { @@ -87,7 +98,7 @@ public class MemoConcernController { @PostMapping("/{id}/exportWord") public void exportWord(@PathVariable("id") String id, HttpServletResponse response) throws Exception { - URL resource = this.getClass().getClassLoader().getResource("templates/memo_concern_export_template.docx"); + String templateFilePath = loadTemplate("memo_concern_export_template.docx"); MemoConcernFormDTO formDTO = new MemoConcernFormDTO(); formDTO.setId(id); MemoConcernDTO data = memoConcernService.get(formDTO); @@ -117,10 +128,9 @@ public class MemoConcernController { //状态 map.put("statusName", "0".equals(data.getStatus()) ? "未完成" : "已完成"); - XWPFDocument doc = WordExportUtil.exportWord07(resource.getFile(), map); + XWPFDocument doc = WordExportUtil.exportWord07(templateFilePath, map); - String filePath = resource.getFile(); - String suffix = filePath.substring(filePath.lastIndexOf(".")); + String suffix = templateFilePath.substring(templateFilePath.lastIndexOf(".")); response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); @@ -137,5 +147,51 @@ public class MemoConcernController { } } + /** + * 加载模板 + * @param templateFileName + * @return + * @throws IOException + */ + private String loadTemplate(String templateFileName) throws IOException { + String homeDir = System.getProperty("user.home"); + Path templates = Paths.get(homeDir, "epmet_files", "templates"); + if (Files.notExists(templates)) { + Files.createDirectory(templates); + } + + Path templateFilePath = templates.resolve(templateFileName); + String templateFilePathStr = templateFilePath.toString(); + if (Files.exists(templateFilePath)) { + return templateFilePathStr; + } + + // 将项目中的模板拷贝至用户家目录中 + OutputStream os = null; + InputStream is = null; + try { + is = this.getClass().getClassLoader().getResourceAsStream("templates/" + templateFileName); + os = new FileOutputStream(templateFilePathStr); + IOUtils.copy(is, os); + } finally { + try { + if (is != null) { + is.close(); + } + } catch (IOException e) { + String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); + log.error("【导出工作日志doc】关闭输入流出错:{}", errorMsg); + } + try { + if (os != null) { + os.close(); + } + } catch (IOException e) { + String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); + log.error("【导出工作日志doc】关闭输出流出错:{}", errorMsg); + } + } + return templateFilePathStr; + } } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java index e3f855b8e5..149d043b8d 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java @@ -6,6 +6,7 @@ import cn.hutool.core.bean.BeanUtil; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.security.dto.TokenDto; @@ -21,6 +22,8 @@ import com.epmet.dto.form.AddMemoDifficultyFromDTO; import com.epmet.dto.form.MemoDifficultyDetailFromDTO; import com.epmet.dto.form.MemoDifficultyFormDTO; import com.epmet.service.MemoDifficultyService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; @@ -28,7 +31,14 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Map; @@ -38,6 +48,7 @@ import java.util.Map; * @author generator generator@elink-cn.com * @since v1.0.0 2022-03-15 */ +@Slf4j @RestController @RequestMapping("memoDifficulty") public class MemoDifficultyController { @@ -90,8 +101,7 @@ public class MemoDifficultyController { @PostMapping("/{id}/exportWord") public void exportWord(@PathVariable("id") String id, HttpServletResponse response) throws Exception { - URL resource = this.getClass().getClassLoader().getResource("templates/memo_difficulty_export_template.docx"); - + String templateFilePath = loadTemplate("memo_difficulty_export_template.docx"); MemoDifficultyDTO data = memoDifficultyService.get(id); if (data == null) { @@ -106,10 +116,9 @@ public class MemoDifficultyController { String scheduledTimeStr = DateUtils.format(data.getScheduledTime(), "yyyy年MM月dd日 HH:mm"); map.put("scheduledTime", scheduledTimeStr); - XWPFDocument doc = WordExportUtil.exportWord07(resource.getFile(), map); + XWPFDocument doc = WordExportUtil.exportWord07(templateFilePath, map); - String filePath = resource.getFile(); - String suffix = filePath.substring(filePath.lastIndexOf(".")); + String suffix = templateFilePath.substring(templateFilePath.lastIndexOf(".")); response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); @@ -126,5 +135,51 @@ public class MemoDifficultyController { } } + /** + * 加载模板 + * @param templateFileName + * @return + * @throws IOException + */ + private String loadTemplate(String templateFileName) throws IOException { + String homeDir = System.getProperty("user.home"); + Path templates = Paths.get(homeDir, "epmet_files", "templates"); + if (Files.notExists(templates)) { + Files.createDirectory(templates); + } + + Path templateFilePath = templates.resolve(templateFileName); + String templateFilePathStr = templateFilePath.toString(); + if (Files.exists(templateFilePath)) { + return templateFilePathStr; + } + + // 将项目中的模板拷贝至用户家目录中 + OutputStream os = null; + InputStream is = null; + try { + is = this.getClass().getClassLoader().getResourceAsStream("templates/" + templateFileName); + os = new FileOutputStream(templateFilePathStr); + IOUtils.copy(is, os); + } finally { + try { + if (is != null) { + is.close(); + } + } catch (IOException e) { + String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); + log.error("【导出工作日志doc】关闭输入流出错:{}", errorMsg); + } + try { + if (os != null) { + os.close(); + } + } catch (IOException e) { + String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); + log.error("【导出工作日志doc】关闭输出流出错:{}", errorMsg); + } + } + return templateFilePathStr; + } } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java index 73ce22ac03..547983cf39 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java @@ -4,6 +4,7 @@ import cn.afterturn.easypoi.word.WordExportUtil; import cn.hutool.core.bean.BeanUtil; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.security.dto.TokenDto; @@ -16,6 +17,8 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.MemoWorkDiaryDTO; import com.epmet.dto.form.MemoWorkDiaryFormDTO; import com.epmet.service.MemoWorkDiaryService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; @@ -24,8 +27,13 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.FileOutputStream; +import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; import java.util.Optional; @@ -37,6 +45,7 @@ import java.util.Optional; * @author generator generator@elink-cn.com * @since v1.0.0 2022-03-15 */ +@Slf4j @RestController @RequestMapping("memoWorkDiary") public class MemoWorkDiaryController { @@ -88,8 +97,7 @@ public class MemoWorkDiaryController { @PostMapping("/{id}/exportWord") public void exportWord(@PathVariable("id") String id, HttpServletResponse response) throws Exception { - URL resource = this.getClass().getClassLoader().getResource("templates/memo_work_diary_export_template.docx"); - + String templateFilePath = loadTemplate("memo_work_diary_export_template.docx"); MemoWorkDiaryFormDTO form = new MemoWorkDiaryFormDTO(); form.setId(id); MemoWorkDiaryDTO data = memoWorkDiaryService.get(form); @@ -98,10 +106,9 @@ public class MemoWorkDiaryController { String createTimeStr = DateUtils.format(data.getCreatedTime(), "yyyy年MM月dd日 HH:mm"); map.put("createTime", createTimeStr); - XWPFDocument doc = WordExportUtil.exportWord07(resource.getFile(), map); + XWPFDocument doc = WordExportUtil.exportWord07(templateFilePath, map); - String filePath = resource.getFile(); - String suffix = filePath.substring(filePath.lastIndexOf(".")); + String suffix = templateFilePath.substring(templateFilePath.lastIndexOf(".")); response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); @@ -117,4 +124,51 @@ public class MemoWorkDiaryController { } } } + + /** + * 加载模板 + * @param templateFileName + * @return + * @throws IOException + */ + private String loadTemplate(String templateFileName) throws IOException { + String homeDir = System.getProperty("user.home"); + Path templates = Paths.get(homeDir, "epmet_files", "templates"); + if (Files.notExists(templates)) { + Files.createDirectory(templates); + } + + Path templateFilePath = templates.resolve(templateFileName); + String templateFilePathStr = templateFilePath.toString(); + if (Files.exists(templateFilePath)) { + return templateFilePathStr; + } + + // 将项目中的模板拷贝至用户家目录中 + OutputStream os = null; + InputStream is = null; + try { + is = this.getClass().getClassLoader().getResourceAsStream("templates/" + templateFileName); + os = new FileOutputStream(templateFilePathStr); + IOUtils.copy(is, os); + } finally { + try { + if (is != null) { + is.close(); + } + } catch (IOException e) { + String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); + log.error("【导出工作日志doc】关闭输入流出错:{}", errorMsg); + } + try { + if (os != null) { + os.close(); + } + } catch (IOException e) { + String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); + log.error("【导出工作日志doc】关闭输出流出错:{}", errorMsg); + } + } + return templateFilePathStr; + } } From 9df11f7bd6731dc6b74d37771e94c84f6800c3d3 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 15 Mar 2022 21:30:52 +0800 Subject: [PATCH 19/53] =?UTF-8?q?=E4=BF=AE=E6=94=B9:=E8=A7=A3=E5=86=B3jar?= =?UTF-8?q?=E5=8C=85=E5=86=85=E6=96=87=E4=BB=B6=E6=97=A0=E6=B3=95=E8=AF=BB?= =?UTF-8?q?=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/controller/MemoConcernController.java | 2 +- .../java/com/epmet/controller/MemoDifficultyController.java | 2 +- .../main/java/com/epmet/controller/MemoWorkDiaryController.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java index aee3d541bf..ad0826a348 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java @@ -157,7 +157,7 @@ public class MemoConcernController { String homeDir = System.getProperty("user.home"); Path templates = Paths.get(homeDir, "epmet_files", "templates"); if (Files.notExists(templates)) { - Files.createDirectory(templates); + Files.createDirectories(templates); } Path templateFilePath = templates.resolve(templateFileName); diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java index 149d043b8d..656f319ae3 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java @@ -145,7 +145,7 @@ public class MemoDifficultyController { String homeDir = System.getProperty("user.home"); Path templates = Paths.get(homeDir, "epmet_files", "templates"); if (Files.notExists(templates)) { - Files.createDirectory(templates); + Files.createDirectories(templates); } Path templateFilePath = templates.resolve(templateFileName); diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java index 547983cf39..47eb4395c3 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java @@ -135,7 +135,7 @@ public class MemoWorkDiaryController { String homeDir = System.getProperty("user.home"); Path templates = Paths.get(homeDir, "epmet_files", "templates"); if (Files.notExists(templates)) { - Files.createDirectory(templates); + Files.createDirectories(templates); } Path templateFilePath = templates.resolve(templateFileName); From 95ed4d218e015de58cc23170d5ed062467f1a4ef Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Wed, 16 Mar 2022 09:59:44 +0800 Subject: [PATCH 20/53] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/form/MemoDifficultyFormDTO.java | 2 +- .../controller/MemoDifficultyController.java | 3 ++- .../impl/MemoDifficultyServiceImpl.java | 24 +++++++++++++++---- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoDifficultyFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoDifficultyFormDTO.java index c46be3103f..e75f90dd8c 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoDifficultyFormDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/MemoDifficultyFormDTO.java @@ -31,7 +31,7 @@ public class MemoDifficultyFormDTO extends PageFormDTO implements Serializable { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private String scheduledEndTime; /** - * 起始创建时间 + * 起始创建时间Y-%m-%d */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private String startTime; diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java index 656f319ae3..9f57fe50dc 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java @@ -81,7 +81,8 @@ public class MemoDifficultyController { @NoRepeatSubmit @PostMapping("update") - public Result update(@RequestBody AddMemoDifficultyFromDTO dto){ + public Result update(@LoginUser TokenDto tokenDTO, @RequestBody AddMemoDifficultyFromDTO dto){ + dto.setCustomerId(tokenDTO.getCustomerId()); memoDifficultyService.update(dto); return new Result(); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java index 3d2f510fe9..7777b65d72 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java @@ -31,6 +31,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; /** * 备忘录-难点读点 @@ -84,7 +86,7 @@ public class MemoDifficultyServiceImpl extends BaseServiceImpl list = ConvertUtils.sourceToTarget(dto.getAttachmentList(), MemoAttachmentEntity.class); - list.forEach(l -> l.setRemindMsgId(entity.getId())); + AtomicInteger i = new AtomicInteger(NumConstant.ZERO); + List list = dto.getAttachmentList().stream().map(item -> { + MemoAttachmentEntity e = ConvertUtils.sourceToTarget(item, MemoAttachmentEntity.class); + e.setCustomerId(dto.getCustomerId()); + e.setRemindMsgId(entity.getId()); + e.setSort(i.getAndIncrement()); + return e; + }).collect(Collectors.toList()); memoAttachmentService.insertBatch(list); } } @@ -107,8 +115,14 @@ public class MemoDifficultyServiceImpl extends BaseServiceImpl list = ConvertUtils.sourceToTarget(dto.getAttachmentList(), MemoAttachmentEntity.class); - list.forEach(l -> l.setRemindMsgId(entity.getId())); + AtomicInteger i = new AtomicInteger(NumConstant.ZERO); + List list = dto.getAttachmentList().stream().map(item -> { + MemoAttachmentEntity e = ConvertUtils.sourceToTarget(item, MemoAttachmentEntity.class); + e.setCustomerId(dto.getCustomerId()); + e.setRemindMsgId(dto.getId()); + e.setSort(i.getAndIncrement()); + return e; + }).collect(Collectors.toList()); memoAttachmentService.insertBatch(list); } //3.判断更新提醒记录表提醒时间 From 010069dbedf971f0c40f4ba6309492ce9366b990 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Wed, 16 Mar 2022 14:11:12 +0800 Subject: [PATCH 21/53] =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=85=B3=E6=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/MemoConcernServiceImpl.java | 3 ++- .../java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java index c017703d7a..94c2de470a 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java @@ -86,7 +86,8 @@ public class MemoConcernServiceImpl extends BaseServiceImpl Date: Wed, 16 Mar 2022 15:39:07 +0800 Subject: [PATCH 22/53] =?UTF-8?q?=E7=9B=B8=E5=90=8C=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=8F=AA=E5=8F=96=E4=B8=80=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/MemoAttrDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttrDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttrDao.xml index 72fd81c7d3..c99a280b7e 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttrDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoAttrDao.xml @@ -81,7 +81,7 @@ SELECT DISTINCT - DATE_FORMAT(remind_time, '%Y-%m-%d %H:%i:%s') remindTime + DATE_FORMAT(remind_time, '%Y-%m-%d %H:%i') remindTime FROM memo_attr WHERE From b03260216099cfec3a59722ca0eb8642dd306e39 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Wed, 16 Mar 2022 16:39:23 +0800 Subject: [PATCH 25/53] . --- .../src/main/java/com/epmet/dto/MemoDifficultyDTO.java | 3 +++ .../java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java index 59500dd922..5d6030e006 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java @@ -1,5 +1,6 @@ package com.epmet.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.io.Serializable; @@ -46,11 +47,13 @@ public class MemoDifficultyDTO implements Serializable { /** * 计划执行时间 */ + @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date scheduledTime; /** * 提醒时间 */ + @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date remindTime; /** diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java index 9a98647a3c..6c15f59fbb 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java @@ -2,6 +2,7 @@ package com.epmet.dto.form; import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import com.epmet.dto.MemoAttachmentDTO; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.hibernate.validator.constraints.Length; import org.springframework.format.annotation.DateTimeFormat; @@ -49,13 +50,13 @@ public class AddMemoDifficultyFromDTO implements Serializable { /** * 计划执行时间 */ - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm") + @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date scheduledTime; /** * 提醒时间 */ - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm") + @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date remindTime; /** From 5087e746e97049bd708f751792c2ce4add735ad8 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Wed, 16 Mar 2022 17:17:44 +0800 Subject: [PATCH 26/53] =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=8A=A0=E8=BF=94?= =?UTF-8?q?=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/MemoDifficultyDTO.java | 1 + .../dto/form/AddMemoDifficultyFromDTO.java | 6 ++++++ .../controller/MemoDifficultyController.java | 13 ++++--------- .../java/com/epmet/dao/MemoDifficultyDao.java | 4 ++++ .../epmet/service/MemoDifficultyService.java | 2 +- .../impl/MemoDifficultyServiceImpl.java | 5 ++--- .../resources/mapper/MemoDifficultyDao.xml | 18 ++++++++++++++++++ 7 files changed, 36 insertions(+), 13 deletions(-) diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java index 5d6030e006..90b9505e75 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java @@ -74,6 +74,7 @@ public class MemoDifficultyDTO implements Serializable { /** * 创建时间 */ + @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date createdTime; /** diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java index 6c15f59fbb..dda956c0b6 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java @@ -59,6 +59,12 @@ public class AddMemoDifficultyFromDTO implements Serializable { @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date remindTime; + /** + * 创建时间 + */ + @JsonFormat(pattern="yyyy-MM-dd HH:mm") + private Date createdTime; + /** * 附件集合 */ diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java index 9f57fe50dc..07fca9ad3c 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java @@ -1,23 +1,19 @@ package com.epmet.controller; -import com.epmet.commons.tools.annotation.LoginUser; import cn.afterturn.easypoi.word.WordExportUtil; import cn.hutool.core.bean.BeanUtil; +import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.page.PageData; -import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.commons.tools.validator.group.AddGroup; -import com.epmet.commons.tools.validator.group.DefaultGroup; -import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.MemoDifficultyDTO; -import com.epmet.dto.MemoWorkDiaryDTO; import com.epmet.dto.form.AddMemoDifficultyFromDTO; import com.epmet.dto.form.MemoDifficultyDetailFromDTO; import com.epmet.dto.form.MemoDifficultyFormDTO; @@ -35,7 +31,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -96,8 +91,8 @@ public class MemoDifficultyController { } @PostMapping("detail") - public Result detail(@RequestBody MemoDifficultyDetailFromDTO fromDTO){ - return new Result().ok(memoDifficultyService.detail(fromDTO)); + public Result detail(@RequestBody MemoDifficultyDetailFromDTO fromDTO){ + return new Result().ok(memoDifficultyService.detail(fromDTO)); } @PostMapping("/{id}/exportWord") diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoDifficultyDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoDifficultyDao.java index a2955f6297..032be5b4fe 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoDifficultyDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/MemoDifficultyDao.java @@ -3,9 +3,11 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.MemoDifficultyDTO; import com.epmet.dto.MemoWorkDiaryDTO; +import com.epmet.dto.form.AddMemoDifficultyFromDTO; import com.epmet.dto.form.MemoDifficultyFormDTO; import com.epmet.entity.MemoDifficultyEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -23,4 +25,6 @@ public interface MemoDifficultyDao extends BaseDao { * @Author sun */ List getPage(MemoDifficultyFormDTO formDTO); + + AddMemoDifficultyFromDTO selectByDifficutyId(@Param("id") String id); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java index dcce6fd28c..a016573e03 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/MemoDifficultyService.java @@ -84,5 +84,5 @@ public interface MemoDifficultyService extends BaseService * @author generator * @date 2022-03-15 */ - MemoDifficultyDTO detail(MemoDifficultyDetailFromDTO fromDTO); + AddMemoDifficultyFromDTO detail(MemoDifficultyDetailFromDTO fromDTO); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java index 7777b65d72..6760d8b357 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java @@ -142,14 +142,13 @@ public class MemoDifficultyServiceImpl extends BaseServiceImpl attachmentList = memoAttachmentService.getListByMemoId(fromDTO.getId()); resultDTO.setAttachmentList(attachmentList); diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoDifficultyDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoDifficultyDao.xml index fcdae4b4ac..27b8655c87 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoDifficultyDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/MemoDifficultyDao.xml @@ -37,4 +37,22 @@ ORDER BY md.created_time DESC + + \ No newline at end of file From 630ff1508f45d0912497b22f9ce31410d84b47b3 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Wed, 16 Mar 2022 17:33:07 +0800 Subject: [PATCH 27/53] . --- .../main/java/com/epmet/controller/MemoDifficultyController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java index 07fca9ad3c..def6d05162 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java @@ -92,6 +92,7 @@ public class MemoDifficultyController { @PostMapping("detail") public Result detail(@RequestBody MemoDifficultyDetailFromDTO fromDTO){ + ValidatorUtils.validateEntity(fromDTO, MemoDifficultyDetailFromDTO.Detail.class); return new Result().ok(memoDifficultyService.detail(fromDTO)); } From 485f360692dda85b61337291d60d0780839382cd Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 17 Mar 2022 09:42:53 +0800 Subject: [PATCH 28/53] =?UTF-8?q?=E4=B9=A6=E8=AE=B0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/MemoConcernDTO.java | 4 +- .../java/com/epmet/dto/MemoDifficultyDTO.java | 2 +- .../dto/form/AddMemoDifficultyFromDTO.java | 7 +- .../com/epmet/entity/MemoConcernEntity.java | 4 +- .../epmet/entity/MemoDifficultyEntity.java | 2 +- .../migration/V0.0.21__create_memo_table.sql | 86 +++++++++++++++++++ 6 files changed, 96 insertions(+), 9 deletions(-) create mode 100644 epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.21__create_memo_table.sql diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java index 7ccc04ee24..eb1a825736 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoConcernDTO.java @@ -61,13 +61,13 @@ public class MemoConcernDTO implements Serializable { private String content; /** - * 计划执行时间 + * 预计关怀时间 */ @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date scheduledTime; /** - * 实际执行时间 + * 实际执行时间(预留字段) */ @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date actualTime; diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java index 90b9505e75..0f1e94e071 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/MemoDifficultyDTO.java @@ -45,7 +45,7 @@ public class MemoDifficultyDTO implements Serializable { private String remark; /** - * 计划执行时间 + * 预计处理时间 */ @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date scheduledTime; diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java index dda956c0b6..3fe64af31d 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/AddMemoDifficultyFromDTO.java @@ -5,7 +5,6 @@ import com.epmet.dto.MemoAttachmentDTO; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.hibernate.validator.constraints.Length; -import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import java.io.Serializable; @@ -34,21 +33,23 @@ public class AddMemoDifficultyFromDTO implements Serializable { * 内容 */ @NotBlank(message = "难点堵点内容不能为空", groups = { AddMemoDifficulty.class }) - @Length(max = 500, message = "难点堵点内容最长为50个字", groups = { AddMemoDifficulty.class }) + @Length(max = 500, message = "难点堵点内容最多为50个字", groups = { AddMemoDifficulty.class }) private String content; /** * 解决方式 */ + @Length(max = 500, message = "解决方式最多为500个字", groups = { AddMemoDifficulty.class }) private String resolveWay; /** * 备注 */ + @Length(max = 200, message = "备注最多为200个字", groups = { AddMemoDifficulty.class }) private String remark; /** - * 计划执行时间 + * 预计处理时间 */ @JsonFormat(pattern="yyyy-MM-dd HH:mm") private Date scheduledTime; diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java index 59a2770876..dce8dc6672 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java @@ -51,12 +51,12 @@ public class MemoConcernEntity extends BaseEpmetEntity { private String content; /** - * 计划执行时间 + * 预计关怀时间 */ private Date scheduledTime; /** - * 实际执行时间 + * 实际执行时间(预留字段) */ private Date actualTime; diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java index 32d6263849..e73a444598 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java @@ -41,7 +41,7 @@ public class MemoDifficultyEntity extends BaseEpmetEntity { private String remark; /** - * 计划执行时间 + * 预计处理时间 */ private Date scheduledTime; diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.21__create_memo_table.sql b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.21__create_memo_table.sql new file mode 100644 index 0000000000..e719505e40 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.21__create_memo_table.sql @@ -0,0 +1,86 @@ +CREATE TABLE `memo_attachment` ( + `ID` varchar(64) NOT NULL COMMENT '主键', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', + `REMIND_MSG_ID` varchar(64) NOT NULL COMMENT 'REMIND_MSG.ID 业务(工作日志、难点堵点、人员关怀)表Id', + `FILE_NAME` varchar(255) DEFAULT NULL COMMENT '文件名', + `ATTACHMENT_NAME` varchar(64) DEFAULT NULL COMMENT '附件名(uuid随机生成)', + `ATTACHMENT_SIZE` int(11) DEFAULT NULL COMMENT '文件大小,单位b', + `ATTACHMENT_FORMAT` varchar(64) NOT NULL COMMENT '文件格式(JPG、PNG、PDF、JPEG、BMP、MP4、WMA、M4A、MP3、DOC、DOCX、XLS)', + `ATTACHMENT_TYPE` varchar(64) NOT NULL COMMENT '附件类型((图片 - image、 视频 - video、 语音 - voice、 文档 - doc))', + `ATTACHMENT_URL` varchar(255) NOT NULL COMMENT '附件地址', + `DURATION` int(11) DEFAULT '0' COMMENT '语音或视频时长,秒', + `SORT` int(1) NOT NULL COMMENT '排序字段', + `DEL_FLAG` varchar(1) NOT NULL COMMENT '删除标记 0:未删除,1:已删除', + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='备忘录-附件表'; + +CREATE TABLE `memo_attr` ( + `ID` varchar(32) NOT NULL COMMENT '唯一标识', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', + `REMIND_TIME` datetime DEFAULT NULL COMMENT '提醒时间', + `TYPE` varchar(32) NOT NULL COMMENT '业务类型 人员关怀:concern;难点堵点:difficulty;工作日志:work_diary', + `READ_FLAG` tinyint(1) NOT NULL DEFAULT '0' COMMENT '阅读标记1 已读;0未读', + `RECEIVER` varchar(32) NOT NULL COMMENT '接收人ID', + `DEL_FLAG` char(1) NOT NULL COMMENT '删除标识:0.未删除 1.已删除', + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='备忘录-属性(通知)表'; + +CREATE TABLE `memo_concern` ( + `ID` varchar(32) NOT NULL COMMENT '唯一标识(同memo_attr表Id)', + `CUSTOMER_ID` varchar(32) NOT NULL COMMENT '客户ID', + `CONCERN_TYPE` varchar(64) DEFAULT NULL COMMENT '关怀类型', + `RESI_NAME` varchar(64) NOT NULL COMMENT '关怀人员', + `PHONE` varchar(64) DEFAULT NULL COMMENT '关怀对象电话', + `ADDRESS` varchar(64) DEFAULT NULL COMMENT '关怀对象地址', + `CONTENT` varchar(1024) NOT NULL COMMENT '关怀事项', + `SCHEDULED_TIME` datetime DEFAULT NULL COMMENT '预计关怀时间', + `ACTUAL_TIME` datetime DEFAULT NULL COMMENT '实际执行时间(预留字段)', + `STATUS` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态 0未完成 1已完成', + `DEL_FLAG` char(1) NOT NULL COMMENT '删除标识:0.未删除 1.已删除', + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '操作人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='备忘录-人文关怀'; + +CREATE TABLE `memo_difficulty` ( + `ID` varchar(32) NOT NULL COMMENT '唯一标识(同memo_attr表Id)', + `CUSTOMER_ID` varchar(32) NOT NULL COMMENT '客户ID', + `CONTENT` varchar(1024) NOT NULL COMMENT '内容', + `RESOLVE_WAY` varchar(512) DEFAULT NULL COMMENT '解决方式', + `REMARK` varchar(255) DEFAULT NULL COMMENT '备注', + `SCHEDULED_TIME` datetime DEFAULT NULL COMMENT '预计处理时间', + `DEL_FLAG` char(1) NOT NULL COMMENT '删除标识:0.未删除 1.已删除', + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='备忘录-难点读点'; + +CREATE TABLE `memo_work_diary` ( + `ID` varchar(32) NOT NULL COMMENT '唯一标识(同memo_attr表Id)', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', + `CONTENT` varchar(1024) NOT NULL COMMENT '内容', + `WORK_TYPE` varchar(64) DEFAULT NULL COMMENT '工作事项', + `DEL_FLAG` char(1) NOT NULL COMMENT '删除标识:0.未删除 1.已删除', + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='备忘录-工作日志'; \ No newline at end of file From 0fcb013795ae086f57188945fdca1f7b20988fb0 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Fri, 18 Mar 2022 14:51:15 +0800 Subject: [PATCH 29/53] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/entity/MemoAttrEntity.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttrEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttrEntity.java index 69a68497ce..8a9642b2cc 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttrEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttrEntity.java @@ -1,9 +1,12 @@ package com.epmet.entity; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; import lombok.EqualsAndHashCode; +import org.apache.ibatis.type.JdbcType; import java.util.Date; @@ -28,6 +31,7 @@ public class MemoAttrEntity extends BaseEpmetEntity { /** * 提醒时间 */ + @TableField(value="REMIND_TIME",updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.DATE) private Date remindTime; /** From f258c7c449fffe911d8d5e1846312fc9e605256b Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Fri, 18 Mar 2022 15:30:30 +0800 Subject: [PATCH 30/53] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=B6=EF=BC=8C=20?= =?UTF-8?q?=E6=8F=90=E9=86=92=E6=97=B6=E9=97=B4=E5=8F=AF=E4=BB=A5=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/entity/MemoAttrEntity.java | 2 +- .../src/main/java/com/epmet/entity/MemoConcernEntity.java | 5 +++++ .../src/main/java/com/epmet/entity/MemoDifficultyEntity.java | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttrEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttrEntity.java index 8a9642b2cc..1345a64b99 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttrEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoAttrEntity.java @@ -31,7 +31,7 @@ public class MemoAttrEntity extends BaseEpmetEntity { /** * 提醒时间 */ - @TableField(value="REMIND_TIME",updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.DATE) + @TableField(value="REMIND_TIME",updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.TIMESTAMP) private Date remindTime; /** diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java index dce8dc6672..884231a5c1 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java @@ -1,9 +1,12 @@ package com.epmet.entity; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; import lombok.EqualsAndHashCode; +import org.apache.ibatis.type.JdbcType; import java.util.Date; @@ -53,11 +56,13 @@ public class MemoConcernEntity extends BaseEpmetEntity { /** * 预计关怀时间 */ + @TableField(value="REMIND_TIME",updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.TIMESTAMP) private Date scheduledTime; /** * 实际执行时间(预留字段) */ + @TableField(value="REMIND_TIME",updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.TIMESTAMP) private Date actualTime; /** diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java index e73a444598..339ce5569e 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java @@ -1,9 +1,12 @@ package com.epmet.entity; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; import lombok.EqualsAndHashCode; +import org.apache.ibatis.type.JdbcType; import java.util.Date; @@ -43,6 +46,7 @@ public class MemoDifficultyEntity extends BaseEpmetEntity { /** * 预计处理时间 */ + @TableField(value="REMIND_TIME",updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.TIMESTAMP) private Date scheduledTime; } From bd768e2535d2b4ed0f15fc188c7b838b4ceb2299 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Fri, 18 Mar 2022 15:33:25 +0800 Subject: [PATCH 31/53] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/MemoDifficultyServiceImpl.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java index 6760d8b357..0a35d69ebf 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java @@ -126,19 +126,21 @@ public class MemoDifficultyServiceImpl extends BaseServiceImpl Date: Fri, 18 Mar 2022 16:24:04 +0800 Subject: [PATCH 32/53] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=B6=EF=BC=8C=20?= =?UTF-8?q?=E6=8F=90=E9=86=92=E6=97=B6=E9=97=B4=E5=8F=AF=E4=BB=A5=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/entity/MemoConcernEntity.java | 4 ++-- .../src/main/java/com/epmet/entity/MemoDifficultyEntity.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java index 884231a5c1..2961cfad8a 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoConcernEntity.java @@ -56,13 +56,13 @@ public class MemoConcernEntity extends BaseEpmetEntity { /** * 预计关怀时间 */ - @TableField(value="REMIND_TIME",updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.TIMESTAMP) + @TableField(value="SCHEDULED_TIME",updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.TIMESTAMP) private Date scheduledTime; /** * 实际执行时间(预留字段) */ - @TableField(value="REMIND_TIME",updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.TIMESTAMP) + @TableField(value="ACTUAL_TIME",updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.TIMESTAMP) private Date actualTime; /** diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java index 339ce5569e..7ac9750a3e 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/MemoDifficultyEntity.java @@ -46,7 +46,7 @@ public class MemoDifficultyEntity extends BaseEpmetEntity { /** * 预计处理时间 */ - @TableField(value="REMIND_TIME",updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.TIMESTAMP) + @TableField(value="SCHEDULED_TIME",updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.TIMESTAMP) private Date scheduledTime; } From 666971bdc99630ffab0f9118d1e3efe60bc3bdf2 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 21 Mar 2022 09:04:47 +0800 Subject: [PATCH 33/53] =?UTF-8?q?=E6=88=90=E5=91=98=E5=8F=AA=E9=99=90?= =?UTF-8?q?=E5=88=B6=E5=A7=93=E5=90=8D=E8=BA=AB=E4=BB=BD=E8=AF=81=E5=8F=B7?= =?UTF-8?q?=E5=BF=85=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/form/IcResiCollectMemFormDTO.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java index 4490b9357c..72096f2b36 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java @@ -3,7 +3,6 @@ package com.epmet.dto.form; import lombok.Data; import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; import java.io.Serializable; @Data @@ -27,18 +26,18 @@ public class IcResiCollectMemFormDTO implements Serializable { /** * 居住成员1手机号 */ - @NotBlank(message = "手机号不能为空", groups = {IcResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) + // @NotBlank(message = "手机号不能为空", groups = {IcResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) private String mobile; /** * 居住成员1是否参加几轮全员核算检测,数字1-10 */ - @NotBlank(message = "核算检测情况不能为空", groups = {IcResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) + // @NotBlank(message = "核算检测情况不能为空", groups = {IcResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) private String heSuanCount; /** * 居住成员1新冠疫苗接种情况;1:已全程接种;2:未全程接种;0未接种; */ - @NotNull(message = "疫苗接种情况不能为空", groups = {IcResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) + // @NotNull(message = "疫苗接种情况不能为空", groups = {IcResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) private Integer ymjz; } From 671b754a8ce14ae66083035b8b0a02b64752c9a8 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 21 Mar 2022 09:15:29 +0800 Subject: [PATCH 34/53] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E5=81=9A=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/form/IcResiCollectMemFormDTO.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java index 72096f2b36..823e76b4c9 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java @@ -5,6 +5,10 @@ import lombok.Data; import javax.validation.constraints.NotBlank; import java.io.Serializable; +/** + * 家庭成员信息 + * 前端做校验 + */ @Data public class IcResiCollectMemFormDTO implements Serializable { /** @@ -14,13 +18,13 @@ public class IcResiCollectMemFormDTO implements Serializable { /** * 居住成员1姓名 */ - @NotBlank(message = "姓名不能为空", groups = {IcResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) + // @NotBlank(message = "姓名不能为空", groups = {IcResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) private String name; /** * 居住成员1身份证号 */ - @NotBlank(message = "身份证号不能为空", groups = {IcResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) + // @NotBlank(message = "身份证号不能为空", groups = {IcResiCollectFormDTO.InternalShowGroup.class, IcResiCollectFormDTO.ExternalShowGroup.class}) private String idNum; /** From 8930f00674de03e1109a05603a88d187092fa136 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 21 Mar 2022 09:18:01 +0800 Subject: [PATCH 35/53] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E5=81=9A=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java | 1 - 1 file changed, 1 deletion(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java index 823e76b4c9..2dccf23b59 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java @@ -2,7 +2,6 @@ package com.epmet.dto.form; import lombok.Data; -import javax.validation.constraints.NotBlank; import java.io.Serializable; /** From e905be87552b9a3c7a0e9f51c23899783279a19b Mon Sep 17 00:00:00 2001 From: jianjun Date: Mon, 21 Mar 2022 09:59:56 +0800 Subject: [PATCH 36/53] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/指标可视化文案1201.docx | Bin 0 -> 38481 bytes .../resources/治理能力计算公式.docx | Bin 0 -> 53993 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 epmet-module/data-statistical/data-statistical-server/src/test/java/resources/指标可视化文案1201.docx create mode 100644 epmet-module/data-statistical/data-statistical-server/src/test/java/resources/治理能力计算公式.docx diff --git a/epmet-module/data-statistical/data-statistical-server/src/test/java/resources/指标可视化文案1201.docx b/epmet-module/data-statistical/data-statistical-server/src/test/java/resources/指标可视化文案1201.docx new file mode 100644 index 0000000000000000000000000000000000000000..86fae3c767c1858fd7649c5f3b6c67399c3fb966 GIT binary patch literal 38481 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 X;TyLbO#P}2)B^!f7l5v`P-p)GDJ+Q> literal 0 HcmV?d00001 From bec8cb2afe4ada2ab2101baae8833cc637a5043e Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Mon, 21 Mar 2022 10:01:22 +0800 Subject: [PATCH 37/53] =?UTF-8?q?=E9=87=87=E9=9B=86=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/dto/form/CollectListFormDTO.java | 4 +--- .../com/epmet/service/impl/IcResiCollectServiceImpl.java | 3 --- .../src/main/resources/mapper/IcResiCollectDao.xml | 9 --------- 3 files changed, 1 insertion(+), 15 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java index ae5ec4bacb..8c089ae331 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java @@ -24,9 +24,7 @@ public class CollectListFormDTO implements Serializable { private Integer pageSize; private String orgId; - private String neighborHoodId; - private String buildingId; - private String houseId; + private String address; /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java index 4037180bf0..fc714f2912 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java @@ -86,9 +86,6 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl getCollectList(CollectListFormDTO formDTO) { PageData result = new PageData<>(new ArrayList<>(), 0); if (StringUtils.isBlank(formDTO.getOrgId()) && - StringUtils.isBlank(formDTO.getNeighborHoodId()) && - StringUtils.isBlank(formDTO.getBuildingId()) && - StringUtils.isBlank(formDTO.getHouseId()) && StringUtils.isBlank(formDTO.getAddress()) && StringUtils.isBlank(formDTO.getStartDate()) && StringUtils.isBlank(formDTO.getEndDate()) ){ diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml index 7f2c5a9a4d..0be0e43c13 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml @@ -30,15 +30,6 @@ AND CONCAT(c.PIDS,':',c.AGENCY_ID) LIKE CONCAT('%',#{orgId},'%') - - AND c.VILLAGE_ID = #{neighborHoodId} - - - AND c.BUILD_ID = #{buildingId} - - - AND c.HOME_ID = #{houseId} - AND c.ADDRESS LIKE CONCAT('%',#{address},'%') From 9b3b5b23cfe3ea00f382370ecd4e812784efb0dd Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 21 Mar 2022 10:56:29 +0800 Subject: [PATCH 38/53] =?UTF-8?q?=E4=B9=A6=E8=AE=B0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=AF=BC=E5=87=BAword=EF=BC=8C=E6=96=87=E4=BB=B6=E5=90=8D?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/controller/MemoConcernController.java | 2 +- .../java/com/epmet/controller/MemoDifficultyController.java | 2 +- .../main/java/com/epmet/controller/MemoWorkDiaryController.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java index ad0826a348..945656b229 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java @@ -134,7 +134,7 @@ public class MemoConcernController { response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=人员关怀导入模板" + suffix); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=人员关怀详情" + suffix); ServletOutputStream fos = null; try { diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java index def6d05162..26c003a0c6 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java @@ -119,7 +119,7 @@ public class MemoDifficultyController { response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=工作日志导入模板" + suffix); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=难点堵点详情" + suffix); ServletOutputStream fos = null; try { diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java index 47eb4395c3..1e1ffe12dc 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java @@ -112,7 +112,7 @@ public class MemoWorkDiaryController { response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=工作日志导入模板" + suffix); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=工作日志详情" + suffix); ServletOutputStream fos = null; try { From 70bc04672240efce5055dd98783804becad0c694 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 21 Mar 2022 11:04:45 +0800 Subject: [PATCH 39/53] =?UTF-8?q?=E4=B9=A6=E8=AE=B0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=AF=BC=E5=87=BAword=EF=BC=8C=E6=96=87=E4=BB=B6=E5=90=8D?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/controller/MemoConcernController.java | 3 ++- .../java/com/epmet/controller/MemoDifficultyController.java | 3 ++- .../java/com/epmet/controller/MemoWorkDiaryController.java | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java index 945656b229..dd8cde22bd 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java @@ -33,6 +33,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; +import java.net.URLEncoder; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -134,7 +135,7 @@ public class MemoConcernController { response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=人员关怀详情" + suffix); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=" + URLEncoder.encode("人员关怀详情", "UTF-8") + suffix); ServletOutputStream fos = null; try { diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java index 26c003a0c6..e2e201ec48 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoDifficultyController.java @@ -31,6 +31,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.net.URLEncoder; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -119,7 +120,7 @@ public class MemoDifficultyController { response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=难点堵点详情" + suffix); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=" + URLEncoder.encode("难点堵点详情", "UTF-8") + suffix); ServletOutputStream fos = null; try { diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java index 1e1ffe12dc..7e0dd63b18 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoWorkDiaryController.java @@ -31,6 +31,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; +import java.net.URLEncoder; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -112,7 +113,7 @@ public class MemoWorkDiaryController { response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=工作日志详情" + suffix); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;fileName=" + URLEncoder.encode("工作日志详情", "UTF-8") + suffix); ServletOutputStream fos = null; try { From f06c7b607f3f97a76798bb7e1d8aa17f3a558723 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Mon, 21 Mar 2022 15:26:51 +0800 Subject: [PATCH 40/53] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=A4=BE=E5=8C=BAlist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/result/CommunityListResultDTO.java | 20 +++++++++++++++ .../epmet/controller/AgencyController.java | 12 +++++++-- .../java/com/epmet/dao/CustomerAgencyDao.java | 10 ++++++++ .../java/com/epmet/service/AgencyService.java | 25 ++++++------------- .../epmet/service/impl/AgencyServiceImpl.java | 16 ++++++++++++ .../resources/mapper/CustomerAgencyDao.xml | 12 +++++++++ 6 files changed, 76 insertions(+), 19 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityListResultDTO.java diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityListResultDTO.java new file mode 100644 index 0000000000..2e080d97db --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityListResultDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2022/3/21 15:11 + * @DESC + */ +@Data +public class CommunityListResultDTO implements Serializable { + + private static final long serialVersionUID = 4336149113821131764L; + + private String orgId; + + private String orgName; +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java index 2279f38fc1..f796f63a75 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java @@ -442,6 +442,14 @@ public class AgencyController { } } - - + /** + * Desc: 查询工作人员所属组织下的所有社区 + * @param tokenDto + * @author zxc + * @date 2022/3/21 15:13 + */ + @PostMapping("community-list") + public Result> getCommunityList(@LoginUser TokenDto tokenDto){ + return new Result>().ok(agencyService.getCommunityList(tokenDto)); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java index fafb2d474d..5e7cd8713a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java @@ -306,5 +306,15 @@ public interface CustomerAgencyDao extends BaseDao { OrgMobileResultDTO getAgencyMobile(@Param("gridId") String gridId); int updateSubAgencyAreaCodeById(@Param("customerId")String customerId, @Param("agencyId")String agencyId, @Param("operateUserId") String operateUserId); + + /** + * Desc: 查询组织下的社区 + * @param customerId + * @param agencyId + * @author zxc + * @date 2022/3/21 15:23 + */ + List getCommunityList(@Param("customerId")String customerId, @Param("agencyId")String agencyId); + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java index bacb45d855..629adcc17a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java @@ -1,20 +1,3 @@ -/** - * Copyright 2018 人人开源 https://www.renren.io - *

- * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - *

- * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - *

- * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - package com.epmet.service; import com.epmet.commons.tools.security.dto.TokenDto; @@ -156,4 +139,12 @@ public interface AgencyService { */ List getSonAgencyId(String orgId,String type); + /** + * Desc: 查询工作人员所属组织下的所有社区 + * @param tokenDto + * @author zxc + * @date 2022/3/21 15:13 + */ + List getCommunityList(TokenDto tokenDto); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index c20fd83965..00dc182535 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -798,6 +798,22 @@ public class AgencyServiceImpl implements AgencyService { return new ArrayList<>(); } + /** + * Desc: 查询工作人员所属组织下的所有社区 + * @param tokenDto + * @author zxc + * @date 2022/3/21 15:13 + */ + @Override + public List getCommunityList(TokenDto tokenDto) { + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + if (null == staffInfo){ + throw new EpmetException("未查询到工作人员信息"+staffInfo.getStaffId()); + } + String agencyId = staffInfo.getAgencyId(); + return customerAgencyDao.getCommunityList(tokenDto.getCustomerId(), agencyId); + } + private CustomerAgencyEntity constructInsertEntity(AddAgencyV2FormDTO formDTO, CustomerAgencyDTO parent) { CustomerAgencyEntity insertEntity = ConvertUtils.sourceToTarget(formDTO, CustomerAgencyEntity.class); insertEntity.setOrganizationName(formDTO.getAgencyName()); diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml index 2cd7210dc5..1e8792cab6 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml @@ -733,6 +733,18 @@ AND cg.id = #{gridId} + + + UPDATE customer_agency SET AREA_CODE = '', From ecaecdf67de6c998122f96cb3c04a3e8d0539288 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Mon, 21 Mar 2022 17:34:29 +0800 Subject: [PATCH 41/53] =?UTF-8?q?=E6=B2=BB=E7=90=86=E6=8C=87=E6=95=B0?= =?UTF-8?q?=E5=8A=9E=E7=BB=93=E6=95=88=E7=8E=87=E5=92=8C=E5=93=8D=E5=BA=94?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extract/FactOriginProjectLogDailyDao.java | 2 +- .../impl/IndexCollCommunityServiceImpl.java | 2 +- .../impl/IndexCollDistrictServiceImpl.java | 2 +- .../impl/IndexCollStreetServiceImpl.java | 2 +- .../FactOriginProjectLogDailyService.java | 2 +- .../FactOriginProjectLogDailyServiceImpl.java | 44 +++------------ .../extract/FactOriginProjectLogDailyDao.xml | 53 +++++++++++++------ .../FactOriginProjectOrgPeriodDailyDao.xml | 17 ++++-- 8 files changed, 61 insertions(+), 63 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java index 15aee4e27c..c4f2055050 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java @@ -171,7 +171,7 @@ public interface FactOriginProjectLogDailyDao extends BaseDao selectProjectIdHandledByAgency(@Param("customerId") String customerId, @Param("dimId") String dimId); + List selectProjectIdHandledByAgency(@Param("customerId") String customerId, @Param("level") String level, @Param("dimId") String dimId); /** * @param projectIds diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollCommunityServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollCommunityServiceImpl.java index 13a3103e83..54f9d45421 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollCommunityServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollCommunityServiceImpl.java @@ -141,7 +141,7 @@ public class IndexCollCommunityServiceImpl implements IndexCollCommunityService //办结率 Map handlingRatioMap = factOriginProjectLogDailyService.getHandlingRatio(agencies, customerId, dimId.getMonthId()); //处理效率 - Map efficiencyMap = factOriginProjectLogDailyService.getAgencyWorkPieceRatio(customerId, dimId.getMonthId()); + Map efficiencyMap = factOriginProjectLogDailyService.getAgencyWorkPieceRatio(customerId, OrgTypeConstant.COMMUNITY, dimId.getMonthId()); list.forEach(entity -> { //办结数 entity.setClosedProjectCount(Optional.ofNullable(agencyHandleCount.get(entity.getAgencyId())).orElse(NumConstant.ZERO)); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollDistrictServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollDistrictServiceImpl.java index 494f8f51c1..1b5a724ded 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollDistrictServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollDistrictServiceImpl.java @@ -134,7 +134,7 @@ public class IndexCollDistrictServiceImpl implements IndexCollDistrictService { //办结率 Map handlingRatioMap = factOriginProjectLogDailyService.getHandlingRatio(agencies, customerId, dimId.getMonthId()); //处理效率 - Map efficiencyMap = factOriginProjectLogDailyService.getAgencyWorkPieceRatio(customerId, dimId.getMonthId()); + Map efficiencyMap = factOriginProjectLogDailyService.getAgencyWorkPieceRatio(customerId, OrgTypeConstant.DISTRICT, dimId.getMonthId()); list.forEach(entity -> { //办结数 entity.setClosedProjectCount(agencyHandleCount.get(entity.getAgencyId()) == null ? NumConstant.ZERO : agencyHandleCount.get(entity.getAgencyId())); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollStreetServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollStreetServiceImpl.java index 4d21057556..90ce11c239 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollStreetServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollStreetServiceImpl.java @@ -132,7 +132,7 @@ public class IndexCollStreetServiceImpl implements IndexCollStreetService { //办结率 Map handlingRatioMap = factOriginProjectLogDailyService.getHandlingRatio(agencies, customerId, dimId.getMonthId()); //处理效率 - Map efficiencyMap = factOriginProjectLogDailyService.getAgencyWorkPieceRatio(customerId, dimId.getMonthId()); + Map efficiencyMap = factOriginProjectLogDailyService.getAgencyWorkPieceRatio(customerId, OrgTypeConstant.STREET, dimId.getMonthId()); list.forEach(entity -> { //办结数 entity.setClosedProjectCount(agencyHandleCount.get(entity.getAgencyId()) == null ? NumConstant.ZERO : agencyHandleCount.get(entity.getAgencyId())); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectLogDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectLogDailyService.java index 0dca827c0a..b1ac2c8557 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectLogDailyService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectLogDailyService.java @@ -195,7 +195,7 @@ public interface FactOriginProjectLogDailyService extends BaseService getAgencyWorkPieceRatio(String customerId, String dimId); + Map getAgencyWorkPieceRatio(String customerId, String level, String dimId); /** * 网格项目响应度 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java index 5efb3cd2fc..7dc8bac0be 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java @@ -230,50 +230,18 @@ public class FactOriginProjectLogDailyServiceImpl extends BaseServiceImpl getAgencyWorkPieceRatio(String customerId, String dimId) { + public Map getAgencyWorkPieceRatio(String customerId, String level, String dimId) { //计算方法 : 评价周期内办结项目的平均处理时长的倒数 - - //1.评价周期内结案了的项目 - List projectsHandledByAgency = baseDao.selectProjectIdHandledByAgency(customerId, dimId); + //评价周期内每个机关结案了的项目耗时和项目数 + List projectsHandledByAgency = baseDao.selectProjectIdHandledByAgency(customerId, level, dimId); Map efficiencyMap = new HashMap<>(); - List projects = new LinkedList<>(); if (!CollectionUtils.isEmpty(projectsHandledByAgency)) { - Map> agencyProjectsMap = new HashMap<>(); - projectsHandledByAgency.forEach(o -> { String agencyId = o.getAgencyId(); - String projectId = o.getProjectId(); - if(CollectionUtils.isEmpty(agencyProjectsMap.get(agencyId))){ - List projectUnit = new LinkedList<>(); - projectUnit.add(projectId); - agencyProjectsMap.put(agencyId,projectUnit); - }else{ - agencyProjectsMap.get(agencyId).add(projectId); - } - projects.add(projectId); - }); - - //2.结案项目的总耗时 - List costTimes = baseDao.selectProjectCostTime(projects); - - Map projectCostTime = costTimes.stream().collect(Collectors.toMap(ProjectParticipatedAgencyResultDTO::getProjectId,ProjectParticipatedAgencyResultDTO::getCount)); - agencyProjectsMap.forEach((k,v) -> { - //k -> agencyId v -> projects - int total = NumConstant.ZERO; - if(!CollectionUtils.isEmpty(v)){ - for(String p : v){ - Integer cost = projectCostTime.get(p); - total = total + (null == cost ? NumConstant.ZERO : cost); - } - //每个机关的项目平均耗时 - BigDecimal avgCost = new BigDecimal(total).divide(new BigDecimal(v.size()),4, BigDecimal.ROUND_HALF_UP); - - //efficiencyMap.put(k,BigDecimal.ONE.divide(avgCost,4, BigDecimal.ROUND_HALF_UP)); - efficiencyMap.put(k, null == avgCost ? BigDecimal.ZERO : avgCost.setScale(6, BigDecimal.ROUND_HALF_UP)); - }else{ - efficiencyMap.put(k,BigDecimal.ZERO); - } + //每个机关的项目平均耗时 + BigDecimal avgCost = new BigDecimal(o.getSum()).divide(new BigDecimal(o.getCount()),6, RoundingMode.HALF_UP); + efficiencyMap.put(agencyId, avgCost); }); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml index 36c72e368b..83158a9711 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml @@ -291,24 +291,45 @@ ORG_ID - SELECT - ID AS projectId, - SUBSTRING_INDEX(FINISH_ORG_IDS,':',1) AS agencyId - FROM - fact_origin_project_main_daily - WHERE - DEL_FLAG = '0' - AND ID IN ( - - SELECT DISTINCT PROJECT_ID FROM fact_origin_project_log_daily - WHERE DEL_FLAG = '0' AND CUSTOMER_ID = #{customerId} - AND ACTION_CODE = 'close' - + agencyId, + COUNT(projectId) AS count, + SUM(total) AS sum + FROM + ( + SELECT + a.ID AS projectId, + b.ID AS agencyId, + IF( + TIMESTAMPDIFF( DAY, DATE_FORMAT( a.DATE_ID, '%Y-%m-%d' ), DATE_FORMAT( c.DATE_ID, '%Y-%m-%d' ) ) = 0, + 1, + TIMESTAMPDIFF( DAY, DATE_FORMAT( a.DATE_ID, '%Y-%m-%d' ), DATE_FORMAT( c.DATE_ID, '%Y-%m-%d' ) ) + ) * 8 * 60 AS total + FROM + fact_origin_project_main_daily a + INNER JOIN dim_agency b ON a.PIDS LIKE CONCAT( '%', b.ID, '%' ) + AND b.AGENCY_DIM_TYPE = 'all' + AND b.DEL_FLAG = '0' + AND b.`LEVEL` = #{level} + INNER JOIN ( + SELECT DISTINCT + DATE_ID, + PROJECT_ID + FROM fact_origin_project_log_daily + WHERE DEL_FLAG = '0' + AND ACTION_CODE = 'close' + AND IS_ACTIVE = '1' + AND CUSTOMER_ID = #{customerId} AND MONTH_ID = #{dimId} - - ) - ORDER BY agencyId + ) c ON a.ID = c.PROJECT_ID + WHERE + a.DEL_FLAG = '0' + AND a.CUSTOMER_ID = #{customerId} + AND a.PROJECT_STATUS = 'closed' + ) t + GROUP BY + agencyId SELECT f.CUSTOMER_ID, - f.ORG_ID AS "agencyId", + + da.ID AS "agencyId", + f.ORG_ID AS "agencyId", + SUM( TIMESTAMPDIFF( MINUTE, ( DATE_FORMAT( f.INFORMED_DATE, '%Y-%m-%d %H:%i' )), ( DATE_FORMAT( f.PERIOD_TILL_REPLY_FIRSTLY, '%Y-%m-%d %H:%i' )) ) ) AS "sum", COUNT(DISTINCT f.PROJECT_ID) AS "count" FROM fact_origin_project_org_period_daily f - INNER JOIN dim_agency da ON f.ORG_ID = da.ID + INNER JOIN dim_agency da ON (f.PIDS LIKE CONCAT( '%', da.ID, '%' ) OR f.ORG_ID = da.ID) AND da.`LEVEL` = #{level} WHERE - f.ORG_TYPE = #{orgType} + f.DEL_FLAG = '0' + + AND f.ORG_TYPE = #{orgType} + AND DATE_FORMAT(INFORMED_DATE, '%Y%m') = #{monthId} AND PERIOD_TILL_REPLY_FIRSTLY IS NOT NULL AND f.CUSTOMER_ID = #{customerId} GROUP BY f.CUSTOMER_ID, - f.ORG_ID + + da.ID + f.ORG_ID + From 6e2620420bbdee32ec192cfc90dc2171dcd09450 Mon Sep 17 00:00:00 2001 From: jianjun Date: Mon, 21 Mar 2022 18:48:11 +0800 Subject: [PATCH 42/53] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=B1=85=E6=B0=91?= =?UTF-8?q?=E6=94=B6=E9=9B=86=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/form/CollectListFormDTO.java | 12 +---- .../dto/result/CollectListExcelResultDTO.java | 48 +++++++++++++++++++ .../CollectListMemberExcelResultDTO.java | 48 +++++++++++++++++++ .../dto/result/CollectListResultDTO.java | 16 +------ .../controller/IcResiCollectController.java | 40 ++++++++++++++++ .../impl/IcResiCollectServiceImpl.java | 13 +++-- 6 files changed, 148 insertions(+), 29 deletions(-) create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListExcelResultDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListMemberExcelResultDTO.java diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java index 8c089ae331..368db969c4 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java @@ -1,28 +1,20 @@ package com.epmet.dto.form; +import com.epmet.commons.tools.dto.form.PageFormDTO; import lombok.Data; -import javax.validation.constraints.NotNull; -import java.io.Serializable; - /** * @Author zxc * @DateTime 2022/3/18 19:00 * @DESC */ @Data -public class CollectListFormDTO implements Serializable { +public class CollectListFormDTO extends PageFormDTO { private static final long serialVersionUID = 2106773724057183577L; public interface CollectListForm{} - @NotNull(message = "pageNo不能为空", groups = CollectListForm.class) - private Integer pageNo; - - @NotNull(message = "pageSize不能为空", groups = CollectListForm.class) - private Integer pageSize; - private String orgId; private String address; diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListExcelResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListExcelResultDTO.java new file mode 100644 index 0000000000..f74e042b77 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListExcelResultDTO.java @@ -0,0 +1,48 @@ +package com.epmet.dto.result; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import cn.afterturn.easypoi.excel.annotation.ExcelCollection; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2022/3/18 19:00 + * @DESC + */ +@Data +public class CollectListExcelResultDTO implements Serializable { + + private static final long serialVersionUID = -5659769436514116680L; + /** + * 户主姓名 + */ + @Excel(name = "户主姓名",width = 30, needMerge = true) + private String houseHolderName; + + /** + * 居住地址 + */ + @Excel(name = "居住地址",width = 40, needMerge = true) + private String address; + + /** + * 房屋类型,1:自有, 0:租住 + */ + @Excel(name = "房屋类型",replace = { "自有_1", "租住_2"}, width = 30, needMerge = true) + private String houseType; + + /** + * 居住人数 + */ + @Excel(name = "居住成员人数",width = 30, needMerge = true) + private Integer totalResi; + + @ExcelCollection(name="家庭成员") + private List listP = new ArrayList<>(); + + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListMemberExcelResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListMemberExcelResultDTO.java new file mode 100644 index 0000000000..319d11b8f0 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListMemberExcelResultDTO.java @@ -0,0 +1,48 @@ +package com.epmet.dto.result; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.io.Serializable; + +/** + * desc: + * + * @author: LiuJanJun + * @date: 2022/3/21 5:09 下午 + * @version: 1.0 + */ +@Data +public class CollectListMemberExcelResultDTO implements Serializable { + private static final long serialVersionUID = -4290962585956172531L; + /** + * 成员名字 + */ + @Excel(name = "成员姓名", width = 30) + private String memberName; + + /** + * 成员身份证 + */ + @Excel(name = "成员身份证号", width = 30) + private String memberIdNum; + + /** + * 成员电话 + */ + @Excel(name = "成员手机号", width = 30) + private String memberMobile; + + /** + * 核酸检测次数 + */ + @Excel(name = "参加几轮核酸检测", width = 30) + private String heSuanCount = "0"; + + /** + * 疫苗是否全程接种,1:全程接种,2:未全程接种,3:为接种 + */ + @Excel(name = "疫苗接种情况",replace = { "全程接种_1", "未全程接种_2", "未接种_3" }, width = 30) + private String ymjz; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListResultDTO.java index 9edcfa4d8d..1d61469165 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListResultDTO.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; -import java.util.ArrayList; import java.util.List; /** @@ -42,13 +41,6 @@ public class CollectListResultDTO implements Serializable { private List list; - public CollectListResultDTO() { - this.houseHolderName = ""; - this.address = ""; - this.houseType = "0"; - this.totalResi = 0; - this.list = new ArrayList<>(); - } @Data public static class CollectListMemberResultDTO{ @@ -77,12 +69,6 @@ public class CollectListResultDTO implements Serializable { */ private Integer ymjz; - public CollectListMemberResultDTO() { - this.memberName = ""; - this.memberIdNum = ""; - this.memberMobile = ""; - this.heSuanCount = "0"; - this.ymjz = 0; - } + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java index ed1227c01e..fbe82fc561 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java @@ -2,12 +2,17 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.CollectListFormDTO; import com.epmet.dto.form.IcResiCollectFormDTO; +import com.epmet.dto.result.CollectListExcelResultDTO; +import com.epmet.dto.result.CollectListMemberExcelResultDTO; import com.epmet.dto.result.CollectListResultDTO; import com.epmet.service.IcResiCollectService; import org.springframework.beans.factory.annotation.Autowired; @@ -16,6 +21,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; import java.util.List; @@ -68,4 +75,37 @@ public class IcResiCollectController { return new Result>().ok(icResiCollectService.getCollectList(formDTO)); } + /** + * Desc: 查询采集居民信息 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2022/3/18 19:23 + */ + @PostMapping("export") + public void export(@RequestBody CollectListFormDTO formDTO, @LoginUser TokenDto tokenDto, HttpServletResponse response) throws Exception { + //ValidatorUtils.validateEntity(formDTO,CollectListFormDTO.CollectListForm.class); + //tokenDto.setUserId("73ae6280e46a6653a5605d51d5462725"); + //tokenDto.setCustomerId("45687aa479955f9d06204d415238f7cc"); + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setPage(false); + PageData collectList = icResiCollectService.getCollectList(formDTO); + List list = ConvertUtils.sourceToTarget(collectList.getList(),CollectListExcelResultDTO.class); + + collectList.getList().forEach(o->{ + List children = new ArrayList<>(); + o.getList().forEach(item->{ + CollectListMemberExcelResultDTO resultDTO = ConvertUtils.sourceToTarget(item, CollectListMemberExcelResultDTO.class); + resultDTO.setYmjz(item.getYmjz() == null? StrConstant.EPMETY_STR:String.valueOf(item.getYmjz())); + children.add(resultDTO); + }); + CollectListExcelResultDTO resultDTO = ConvertUtils.sourceToTarget(o, CollectListExcelResultDTO.class); + resultDTO.setListP(children); + list.add(resultDTO); + }); + + ExcelUtils.exportExcelToTarget(response, null, list, CollectListExcelResultDTO.class); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java index fc714f2912..e59318dbd6 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java @@ -95,9 +95,14 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl pageList = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.getCollectList(formDTO)); - result.setList(pageList.getList()); - result.setTotal(Integer.valueOf(String.valueOf(pageList.getTotal()))); + if (formDTO.isPage()){ + PageInfo pageList = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.getCollectList(formDTO)); + result.setList(pageList.getList()); + result.setTotal(Integer.parseInt(String.valueOf(pageList.getTotal()))); + }else { + List collectList = baseDao.getCollectList(formDTO); + result.setList(collectList); + } return result; } @@ -132,4 +137,4 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl Date: Tue, 22 Mar 2022 09:27:22 +0800 Subject: [PATCH 43/53] =?UTF-8?q?=E4=B9=A6=E8=AE=B0=E6=97=A5=E5=BF=97-?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=85=B3=E6=80=80-=E5=AF=BC=E5=87=BAword?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=88=A4=E6=96=AD=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/controller/MemoConcernController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java index dd8cde22bd..474fb56a9e 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/MemoConcernController.java @@ -127,7 +127,7 @@ public class MemoConcernController { } //状态 - map.put("statusName", "0".equals(data.getStatus()) ? "未完成" : "已完成"); + map.put("statusName", new Integer(0).equals(data.getStatus()) ? "未完成" : "已完成"); XWPFDocument doc = WordExportUtil.exportWord07(templateFilePath, map); From 243ffaa73f58de7cce3aaee063c22a83663f96d8 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 22 Mar 2022 09:54:31 +0800 Subject: [PATCH 44/53] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/MemoDifficultyServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java index 0a35d69ebf..2ac7232763 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoDifficultyServiceImpl.java @@ -129,6 +129,7 @@ public class MemoDifficultyServiceImpl extends BaseServiceImpl Date: Tue, 22 Mar 2022 10:25:09 +0800 Subject: [PATCH 45/53] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/MemoAttrServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttrServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttrServiceImpl.java index c979928ceb..3c43ed0c25 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttrServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoAttrServiceImpl.java @@ -112,8 +112,10 @@ public class MemoAttrServiceImpl extends BaseServiceImpl Date: Tue, 22 Mar 2022 10:27:53 +0800 Subject: [PATCH 46/53] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/MemoConcernServiceImpl.java | 4 ++-- .../java/com/epmet/service/impl/MemoWorkDiaryServiceImpl.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java index bca27c6f81..533141d83d 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/MemoConcernServiceImpl.java @@ -71,9 +71,9 @@ public class MemoConcernServiceImpl extends BaseServiceImpl Date: Tue, 22 Mar 2022 11:05:13 +0800 Subject: [PATCH 47/53] =?UTF-8?q?=E9=87=87=E9=9B=86=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=EF=BC=9A=E8=BA=AB=E4=BB=BD=E8=AF=81=E5=8F=B7=E6=88=96=E8=80=85?= =?UTF-8?q?=E5=A7=93=E5=90=8D=E4=B8=8D=E4=B8=BA=E7=A9=BA=E6=97=B6=E6=8F=92?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/IcResiCollectServiceImpl.java | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java index e59318dbd6..b1895b608a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java @@ -63,8 +63,11 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl memberList = ConvertUtils.sourceToTarget(formDTO.getMemberList(), IcResiMemberEntity.class); memberList.forEach(mem -> { - mem.setIcResiCollectId(insert.getId()); - icResiMemberDao.insert(mem); + if (StringUtils.isNotBlank(mem.getName()) || StringUtils.isNotBlank(mem.getIdNum())) { + //姓名或份身份证号不为空时插入 + mem.setIcResiCollectId(insert.getId()); + icResiMemberDao.insert(mem); + } }); } else { //更新主表 @@ -125,16 +128,21 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl newMemberList, Map memMap, String originIcResiCollectId) { for (IcResiMemberEntity entity : newMemberList) { - if (MapUtils.isNotEmpty(memMap) && memMap.containsKey(entity.getIdNum())) { + if(StringUtils.isNotBlank(entity.getIdNum())){ + if (MapUtils.isNotEmpty(memMap) && memMap.containsKey(entity.getIdNum())) { + entity.setIcResiCollectId(originIcResiCollectId); + entity.setCustomerId(memMap.get(entity.getIdNum()).getCustomerId()); + entity.setId(memMap.get(entity.getIdNum()).getId()); + icResiMemberDao.updateById(entity); + continue; + } + } + //与之前历史成员没有匹配到 + if (StringUtils.isNotBlank(entity.getName()) || StringUtils.isNotBlank(entity.getIdNum())) { + //姓名或份身份证号不为空时插入 entity.setIcResiCollectId(originIcResiCollectId); - entity.setCustomerId(memMap.get(entity.getIdNum()).getCustomerId()); - entity.setId(memMap.get(entity.getIdNum()).getId()); - icResiMemberDao.updateById(entity); - continue; + icResiMemberDao.insert(entity); } - //没有插入 - entity.setIcResiCollectId(originIcResiCollectId); - icResiMemberDao.insert(entity); } } } From a13d88ca4e66a4893c04020550a64f9da40ebbfe Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 22 Mar 2022 13:51:05 +0800 Subject: [PATCH 48/53] =?UTF-8?q?=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/AgencyServiceImpl.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index 00dc182535..52534374aa 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -26,7 +26,9 @@ import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.ConvertUtils; @@ -811,6 +813,13 @@ public class AgencyServiceImpl implements AgencyService { throw new EpmetException("未查询到工作人员信息"+staffInfo.getStaffId()); } String agencyId = staffInfo.getAgencyId(); + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(agencyId); + if (null == agencyInfo){ + throw new EpmetException("查询组织信息失败"+agencyInfo); + } + if (agencyInfo.getLevel().equals(CustomerAgencyConstant.COMMUNITY_LEVEL)){ + return new ArrayList<>(); + } return customerAgencyDao.getCommunityList(tokenDto.getCustomerId(), agencyId); } From 4030e4aa5270afc70d89a0d3e5cbd2e579a1f452 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 22 Mar 2022 14:49:09 +0800 Subject: [PATCH 49/53] =?UTF-8?q?=E5=B1=85=E6=B0=91=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E9=87=87=E9=9B=86=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/result/CollectListExcelResultDTO.java | 2 +- .../com/epmet/dto/result/CollectListMemberExcelResultDTO.java | 2 +- .../main/java/com/epmet/controller/IcResiCollectController.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListExcelResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListExcelResultDTO.java index f74e042b77..b98e4489bd 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListExcelResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListExcelResultDTO.java @@ -32,7 +32,7 @@ public class CollectListExcelResultDTO implements Serializable { /** * 房屋类型,1:自有, 0:租住 */ - @Excel(name = "房屋类型",replace = { "自有_1", "租住_2"}, width = 30, needMerge = true) + @Excel(name = "房屋类型",replace = { "自有_1", "租住_0"}, width = 30, needMerge = true) private String houseType; /** diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListMemberExcelResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListMemberExcelResultDTO.java index 319d11b8f0..854d1b3c93 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListMemberExcelResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListMemberExcelResultDTO.java @@ -42,7 +42,7 @@ public class CollectListMemberExcelResultDTO implements Serializable { /** * 疫苗是否全程接种,1:全程接种,2:未全程接种,3:为接种 */ - @Excel(name = "疫苗接种情况",replace = { "全程接种_1", "未全程接种_2", "未接种_3" }, width = 30) + @Excel(name = "疫苗接种情况",replace = { "全程接种_1", "未全程接种_2", "未接种_0" }, width = 30) private String ymjz; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java index fbe82fc561..7b8df6ad1d 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java @@ -91,7 +91,7 @@ public class IcResiCollectController { formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setPage(false); PageData collectList = icResiCollectService.getCollectList(formDTO); - List list = ConvertUtils.sourceToTarget(collectList.getList(),CollectListExcelResultDTO.class); + List list =new ArrayList<>(); collectList.getList().forEach(o->{ List children = new ArrayList<>(); From 656e49e0c988327978d2be60e8949c09e48c07e6 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 22 Mar 2022 17:40:39 +0800 Subject: [PATCH 50/53] =?UTF-8?q?=E5=8E=BB=E6=8E=89/wechatthird/componenta?= =?UTF-8?q?ccesstoken=E4=B8=AD=E5=B0=86accesstoken=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E5=88=B0=E7=A7=81=E6=9C=89=E5=8C=96=E5=B9=B3=E5=8F=B0=E7=9A=84?= =?UTF-8?q?=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ComponentVerifyTicketServiceImpl.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java index 0598e6e43d..f8c75e5a64 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java @@ -245,12 +245,12 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe //存缓存 redisThird.setComponentAccessToken(componentAccessToken); //推送到私有化平台们 - try { - pushComponentAccessToken2PrivateEpmetPlatforms(formDTO); - } catch (Exception e) { - String detail = ExceptionUtils.getErrorStackTrace(e); - log.error(detail); - } + //try { + // pushComponentAccessToken2PrivateEpmetPlatforms(formDTO); + //} catch (Exception e) { + // String detail = ExceptionUtils.getErrorStackTrace(e); + // log.error(detail); + //} } else { throw new RenException(ThirdRunTimeInfoConstant.FAILURE_ACCESS_TOKEN); } From 16cab43752365102085c822e816b71df1b9e2d08 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 23 Mar 2022 14:59:02 +0800 Subject: [PATCH 51/53] =?UTF-8?q?/gov/org/agency/editagency=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=BB=84=E7=BB=87=E4=BF=A1=E6=81=AFbugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java | 4 +++- .../src/main/java/com/epmet/controller/AgencyController.java | 1 + .../main/java/com/epmet/service/impl/AgencyServiceImpl.java | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java index 7473027fde..57e535ad25 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java @@ -75,7 +75,7 @@ public class EditAgencyFormDTO implements Serializable { /** * open: 选择地区编码必填;closed: 无需选择地区编码;0409新增返参 */ - @NotBlank(message = "areaCodeSwitch不能为空", groups = AddUserInternalGroup.class) + // @NotBlank(message = "areaCodeSwitch不能为空", groups = AddUserInternalGroup.class) private String areaCodeSwitch; /** @@ -108,4 +108,6 @@ public class EditAgencyFormDTO implements Serializable { * 中心点位位置 */ private String centerAddress; + + private String customerId; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java index 363f7b7297..6ede7c8216 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java @@ -150,6 +150,7 @@ public class AgencyController { @RequirePermission(requirePermission = RequirePermissionEnum.ORG_AGENCY_UPDATE) public Result editAgency(@LoginUser TokenDto tokenDTO, @RequestBody EditAgencyFormDTO formDTO) { formDTO.setUserId(tokenDTO.getUserId()); + formDTO.setCustomerId(tokenDTO.getCustomerId()); ValidatorUtils.validateEntity(formDTO, EditAgencyFormDTO.DefaultUserShowGroup.class, EditAgencyFormDTO.AddUserInternalGroup.class); Result result = agencyService.editAgency(formDTO); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index c20fd83965..5ca472eff8 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -165,6 +165,8 @@ public class AgencyServiceImpl implements AgencyService { originalEntity.setLongitude(formDTO.getLongitude()); } originalEntity.setCenterAddress(formDTO.getCenterAddress()); + //平阴的工作端小程序与产品入参有差距,接口兼容,这个参数不让前端传了... + formDTO.setAreaCodeSwitch(customerOrgParameterService.getAreaCodeSwitch(formDTO.getCustomerId())); //当前客户开启了area_code_switch参数:open: 选择地区编码必填;closed: 无需选择地区编码 if (CustomerAgencyConstant.AREA_CODE_SWITCH_OPEN.equals(formDTO.getAreaCodeSwitch())) { CustomerAgencyEntity parent = customerAgencyDao.selectById(originalEntity.getPid()); From 3a0cf66e6339e20a1419316aaa9f8ebc7ee026e6 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 23 Mar 2022 15:21:27 +0800 Subject: [PATCH 52/53] =?UTF-8?q?/gov/org/agency/editagency=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=BB=84=E7=BB=87=E4=BF=A1=E6=81=AFbugfix2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/AgencyServiceImpl.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index 5ca472eff8..ee711fae0c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -165,7 +165,7 @@ public class AgencyServiceImpl implements AgencyService { originalEntity.setLongitude(formDTO.getLongitude()); } originalEntity.setCenterAddress(formDTO.getCenterAddress()); - //平阴的工作端小程序与产品入参有差距,接口兼容,这个参数不让前端传了... + //平阴的工作端小程序与产品入参有差距,为了接口兼容,这个参数不让前端传了... formDTO.setAreaCodeSwitch(customerOrgParameterService.getAreaCodeSwitch(formDTO.getCustomerId())); //当前客户开启了area_code_switch参数:open: 选择地区编码必填;closed: 无需选择地区编码 if (CustomerAgencyConstant.AREA_CODE_SWITCH_OPEN.equals(formDTO.getAreaCodeSwitch())) { @@ -184,7 +184,7 @@ public class AgencyServiceImpl implements AgencyService { } //什么时候要全部置为空呢?原来没有现在有 || 原来与现在不一致 if ((StringUtils.isBlank(originalAreaCode) && StringUtils.isNotBlank(formDTO.getAreaCode())) - || (!formDTO.getAreaCode().equals(originalAreaCode))) { + || (StringUtils.isNotBlank(formDTO.getAreaCode()) && !formDTO.getAreaCode().equals(originalAreaCode))) { updateSubOrg(originalEntity.getCustomerId(), formDTO, originalAreaCode); } } @@ -319,12 +319,13 @@ public class AgencyServiceImpl implements AgencyService { private void checkEditAgencyFormDTO(EditAgencyFormDTO formDTO,CustomerAgencyEntity originalEntity) { //根组织不允许修改 if (StringUtils.isNotBlank(originalEntity.getPid()) && !NumConstant.ZERO_STR.equals(originalEntity.getPid())) { - if (StringUtils.isBlank(formDTO.getAreaCode())) { + //03.23:平阴线上版本与产品主线版本差距太大,平阴的修改组织只能修改组织名称。 + /*if (StringUtils.isBlank(formDTO.getAreaCode())) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "area_code_switch is open areaCode不能为空", "组织区划不能为空"); } if (StringUtils.isBlank(formDTO.getParentAreaCode())) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "area_code_switch is open parentAreaCode不能为空", "请先设置上级组织的组织区划"); - } + }*/ //如果当前组织已经使用了自定义编码,不允许在选择其他。 if (StringUtils.isNotBlank(originalEntity.getAreaCode()) && originalEntity.getAreaCode().contains("UD") From 2bffec01ec5e2ad72e119c14fbc06f6f5a5a05a0 Mon Sep 17 00:00:00 2001 From: jianjun Date: Wed, 23 Mar 2022 17:59:42 +0800 Subject: [PATCH 53/53] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=88=BF=E9=97=B4?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/controller/HouseController.java | 21 +++++-------------- .../epmet/service/impl/HouseServiceImpl.java | 20 +++--------------- 2 files changed, 8 insertions(+), 33 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index acdd00b556..ab86eb425b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -19,9 +19,6 @@ package com.epmet.controller; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; -import com.alibaba.excel.EasyExcel; -import com.alibaba.excel.ExcelReader; -import com.alibaba.excel.read.metadata.ReadSheet; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; @@ -32,40 +29,32 @@ import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.constant.ImportErrorMsgConstants; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcBuildingDao; import com.epmet.dto.form.*; -import com.epmet.dto.result.*; +import com.epmet.dto.result.HouseInfoDTO; +import com.epmet.dto.result.IcNeighborHoodResultDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; +import com.epmet.dto.result.LoginUserDetailsResultDTO; import com.epmet.excel.IcHouseExcel; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; -import com.epmet.feign.GovOrgOpenFeignClient; -import com.epmet.model.HouseInfoModel; -import com.epmet.model.ImportHouseInfoListener; import com.epmet.redis.IcHouseRedis; import com.epmet.service.HouseService; import com.epmet.service.IcHouseService; -import com.epmet.service.IcNeighborHoodService; import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.apache.tomcat.util.http.MimeHeaders; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Async; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.lang.reflect.Field; import java.util.*; -import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @@ -283,7 +272,7 @@ public class HouseController implements ResultDataResolver { input.setTaskId(importTask.getData().getTaskId()); input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); epmetCommonServiceOpenFeignClient.finishImportTask(input); - log.error("读取文件失败"); + log.error("读取文件失败",e); } houseService.dispose(inputStream,formDTO,importTask); return new Result<>(); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index 0ec7984b85..36ace6672d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -1,14 +1,12 @@ package com.epmet.service.impl; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; -import cn.hutool.core.bean.BeanUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; import com.alibaba.excel.read.metadata.ReadSheet; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; @@ -18,9 +16,8 @@ import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; -import com.epmet.constants.ImportTaskConstants; -import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerGridConstant; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcBuildingDao; import com.epmet.dao.IcBuildingUnitDao; import com.epmet.dao.IcHouseDao; @@ -29,11 +26,7 @@ import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.IcBuildingDTO; import com.epmet.dto.IcBuildingUnitDTO; import com.epmet.dto.IcHouseDTO; -import com.epmet.dto.form.IcHouseFormDTO; -import com.epmet.dto.form.ImportInfoFormDTO; -import com.epmet.dto.form.ImportTaskCommonFormDTO; -import com.epmet.dto.form.ListIcNeighborHoodFormDTO; -import com.epmet.dto.form.NeighborHoodManageDelFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.HouseInfoDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; @@ -49,25 +42,17 @@ import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.model.HouseInfoModel; import com.epmet.model.ImportHouseInfoListener; import com.epmet.redis.IcHouseRedis; -import com.epmet.service.HouseService; -import com.epmet.service.IcBuildingService; -import com.epmet.service.IcBuildingUnitService; -import com.epmet.service.IcHouseService; import com.epmet.service.*; import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.io.IOException; import java.io.InputStream; import java.util.*; import java.util.concurrent.ExecutorService; @@ -376,6 +361,7 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { .build(); excelReader.read(readSheet); } catch (Exception e){ + log.error("dispose exception",e); ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); input.setOperatorId(formDTO.getUserId()); input.setTaskId(importTask.getData().getTaskId());